From 2efd1a2499284a0e7defb077d5a7de46e1b28de0 Mon Sep 17 00:00:00 2001 From: Toon Verwerft Date: Fri, 24 Nov 2023 08:18:40 +0100 Subject: [PATCH] Allow PHP83 --- .github/workflows/analyzers.yaml | 2 +- .github/workflows/code-style.yaml | 2 +- .github/workflows/tests.yaml | 2 +- .phive/phars.xml | 4 +- composer.json | 12 +- src/Formatter/MetaTableFormatter.php | 3 +- tools/php-cs-fixer.phar | Bin 2693901 -> 2762141 bytes tools/phpunit.phar | 4307 ++++++++++++++++---------- 8 files changed, 2659 insertions(+), 1673 deletions(-) diff --git a/.github/workflows/analyzers.yaml b/.github/workflows/analyzers.yaml index 3269e31..b67d45e 100644 --- a/.github/workflows/analyzers.yaml +++ b/.github/workflows/analyzers.yaml @@ -7,7 +7,7 @@ jobs: strategy: matrix: operating-system: [ubuntu-latest] - php-versions: ['8.1', '8.2'] + php-versions: ['8.1', '8.2', '8.3'] fail-fast: false name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }} steps: diff --git a/.github/workflows/code-style.yaml b/.github/workflows/code-style.yaml index 67f9f6f..089eaa5 100644 --- a/.github/workflows/code-style.yaml +++ b/.github/workflows/code-style.yaml @@ -7,7 +7,7 @@ jobs: strategy: matrix: operating-system: [ubuntu-latest] - php-versions: ['8.1', '8.2'] + php-versions: ['8.1', '8.2', '8.3'] fail-fast: false name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }} steps: diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 37f4910..7970d91 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -7,7 +7,7 @@ jobs: strategy: matrix: operating-system: [ubuntu-latest] - php-versions: ['8.1', '8.2'] + php-versions: ['8.1', '8.2', '8.3'] fail-fast: false name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }} steps: diff --git a/.phive/phars.xml b/.phive/phars.xml index 2df4e64..6e76ddf 100644 --- a/.phive/phars.xml +++ b/.phive/phars.xml @@ -1,5 +1,5 @@ - - + + diff --git a/composer.json b/composer.json index 727289e..3ffe3d8 100644 --- a/composer.json +++ b/composer.json @@ -13,17 +13,16 @@ } }, "require": { - "php": "^8.1", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "ext-dom": "*", "goetas-webservices/xsd-reader": "^0.4.1", "php-soap/engine": "^2.4", "php-soap/wsdl": "^1.4", "veewee/xml": "^2.6", "azjezz/psl": "^2.4", - "symfony/console": "^6.2" + "symfony/console": "^6.2 || ^7.0" }, "require-dev": { - "veewee/composer-run-parallel": "^1.2", "symfony/var-dumper": "^6.1", "php-soap/engine-integration-tests": "^1.5.0", "psalm/plugin-symfony": "^5.0", @@ -36,10 +35,5 @@ "name": "Toon Verwerft", "email": "toonverwerft@gmail.com" } - ], - "config": { - "allow-plugins": { - "veewee/composer-run-parallel": true - } - } + ] } diff --git a/src/Formatter/MetaTableFormatter.php b/src/Formatter/MetaTableFormatter.php index 70fad74..d43500a 100644 --- a/src/Formatter/MetaTableFormatter.php +++ b/src/Formatter/MetaTableFormatter.php @@ -7,6 +7,7 @@ use ReflectionProperty; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Output\OutputInterface; +use Throwable; use function Psl\Vec\filter_nulls; use function Psl\Vec\map; @@ -59,7 +60,7 @@ private function tryStringifyValue(mixed $value): ?string is_scalar($value) => (string)$value, default => null, }; - } catch (\Throwable) { + } catch (Throwable) { return null; } } diff --git a/tools/php-cs-fixer.phar b/tools/php-cs-fixer.phar index 7f455dcb1fac9a13371bf1ce28fed58af342c928..9a03f3e971a3159dd8ba2e3f14d2d931b018b509 100755 GIT binary patch delta 152329 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 delta 146234 zcmdSC2Y6IP_dm|IlueuTgtSdaNCGLl=?R1oLazZrQ4+#tcLRYmvY~^)f?z>}tBgn& z1r=!)q99F05$TG6AfV{00#fWC%I}<+xx1SHO7Z!BpFi*O`nkC?bLPyMbIzPOckbQA zpS-M?z41lG`b8?bZ-c8deMze@s|-nP=4%z+I!ljw#3UDb z9x;vfXwl+{o-13wsA$3dIm3T@_bBMncVL(H>J}}q3gWc39V(db?wt593?3=oP;*Tr&3Yl{S01(#=mQe5Ki5 zUcA~euT&Bq%IPEe?R)fh=_H8>sDb6T4zkEsXNN>rsSfU zF_vmng_fYGs8WbNT_$go@=JUhZqgvX%vxV(G}ZS;64)>V6doHQ&KU5@aJkBhy8ESVYB`kxV7HII2<}GGS-c>)MIZCJMqawJlyc- zKDoEMwvh&5st&yku#6p7QD-q@fA@*eA-;YoYP#HCpW7SVEeF@5+6>OcJiroUG;`}O z5F2;62u%*b}PmUY!2XSuwkbZJEBSbe1jtknIs6daZ+R6%3MSbNY?g7nq^+uP> zywX*7-Z^5=xu3O?J1?}4(Y`p|N$2*y?9)~*LNvtscdqBioei*eW?P8ueKq|166)C5 z$O>3rCZR^g3ynnlqUB?s%iVSV$L?K0h8`Q)W6^wJ`0z}lb?mAKKbw^*ioQ0y1l0)KnwP7K>_{FOsV#9DQL`1}f&9e9m4@nV=)x7AF4=Y1m zX3NZHhl|0^4IjvR{64&dU-XC&Mav^Z!2W%N;GwOq3nM-Xi1*qy>21M-tF%lP$Qy6g ziK>6=hO??mp~rpOw_X!fJ)R{hFY=4f0K{3J9w?SBMZ{6EMD0e}i4w$sE33^?et3wq zE!vxg?E>~)MZ6;|i5kTF`#owfzv$me2z6PjBG&O6&~fBwQ!klpo+PqL*Wr-2y% zOGX)NFny&5T1W8a%UcV1UTHmm-{}`y$XHweEPgp?Pf4m z47Hof6zCUCNtzQc=KPX;(Z7ul?5k}`IkO&Zhw_Vxw!`_wCvAm<+9ZfOPbP@U7ZU`* z!o+@Th(7>}x!=~k$ynT;94wtm^kD_R1+-{!w&F_*cs0<^uovEJ+yYmFOIe7kK@%L zE{kMu;hNr$Q!Y;LPu>wr9OBE*j!%)cr1v4+M5Ky%Z9s!)t)!pm(`h# zK*k(aJdH*lmr48VPYdgD0>pS`K8XtAaWi@_+w8}iI_jNXW zs6k)(RvAc^fZd?f5kJV@Z($tQb`F-FDiDdS)dj+KuNDZ)=+l|AKN0Nx`n=T>xQnmW+sGY}3_ z$?4s=(d~ntKR?`QA=plG;wE|abm9EB>?uMd zOV3R5zAzrdk?&1ADxJ;^kuE`Q@<7jUHj5bg&T|WaMY&%q`t%63vlQJcgq3^&a@)D# zM|V&rUP5a(DLv?t91mBzELW{2K0*qJkDdMfO~x*gpntui^dXg^7;#e0+eC^OF6cyz zQ2V<4C{K&NcSqLWN1&$53KG`CI%eCDG} zU!Sh5!73P;Vdzf}gO9}_yGc*?b)nO9VT7mqa66sXmj_T?fy2*Is{6nIT0>?eeAUzNQz7*1HNt zFdN#x59uy)sEBiaO(~Q1mxo9|K`I=mrM0gpy=cc@JUrcTMO`ceD(&yj^<4`d`?HT? zMuAzhvelp8PwnBdLazGYfbQf$KdwB8?;PzU;e@j4KlW4ylG$RRLX2$fF^;YCoPks> z(3t~80Ql8FVJl%pVgzH0ge`9`5{@op5Rah;!SsfFQhE(}qq+>Wr?hU6@Q(Wj34MOyd%!kC^t&mGaRb?-4TrOci9Vu3=u)+ z$RYeu$2kHT5cB;Urolin(xtx;h2%DrPuwwJv$M-aXSQnLsH^XDrl&`$yAGnQTNBsNHi7hsZV#L=CQ2P;+;26hMS94xFX%5+@d#J|UKU#I#diSzx{3N`-v{7a7Yc+3q{DCntp1`~1tF*wm90sYA(j zNSGm`h;wsKe(uPqEB&jV+Q$WBNTx#17>n7M%ONMw>N8z5qeM(TG+`!Gn*3lv;{og?C-=GqS^y#kZ zP?s;{XZ&P?7Yz92(yXpVergrk=j+dR_-HJjua#x9Lc@y8Hgf(n^gMjjaA!>5>@j?B@=xXTul*O$ApsoX3UM#R4N59j-c?a7{W=|dV9x^|F88<3?(=XswnImDM0 zk;~Y0$rb1Sru1<6B1p{E*b3RHRfxRB-xVS}>@eC$j3VqnT-UD4ZkPc-DWNi$9+;!l z(0+52elAamD$-x0xi@?b<|CzBaa))VR#%!mMr<@Uj1fCMQYmJ5Oyy8M2Om|6(B7%4 zJ)5#z@DL3puk~e{-{Td&q&Ga6!@(VvC-;#m;i^wo2_iYw!kA}Po5*gVkcjUUoSQ6N ztq$jXh1PTcUXqtpL&->$FKGcuEL3R3PcO7wByE2;Knfe{ zNq3!4#FEc^c_|_t__?1nVqJiwuWd`L3A_L?W4`woY3-Ci=|HWAG^e&DnJ!#1VqE7Z zqC{aVSufHCh=)cV{#|;oKAMtIsu1#*Fg?Uat`&VPH7pF2!pC|@lgGx8FT_M6hIzhl zOp08Dg+BDl&lH~ILm>gglFuryO8RlpwBd6_YZ5KOF~lL??0Q}*tm{NlVFkefBldC6 zs+Y!2;yrm;qsYN@UWhpP*?`qjzBPwL2q7Y>H||(1UB2iqEwe@k*9uaIomPI}BX37K zNo1^!t{!${(ieO{gD7^*|=mfNic@^XXn&q(%3fxq%SA=(#ii*v?L!0ks_M@?oh+nZa=|C zx^KJ>nUl$BB04Wy)e=M#D0P@X=(KNvH&?NHLp<}p7q0^wymVWGsul4NVns}NJg2J^ zJE4d;Lqv@OMQoMbVxWzeWm8lwNpCR(#GU>lwoJ2oq z>Xazbt_N?0crFbRLTjgVAf_mO6Y;5<`2kGS!yoXbr=M1Zl8<0ZjvXPEtocBXz4({HmpCT5zsb=ANav>xA$^6{Lo9mGPb-~mh^5=Fz>GXR z&5vvlf=5(3O@5Jimy!p3=*4Rae-b9N6LCe=f$!LS0h?0G2f~|VO-{T%S|JLP$qHf3 zh`+83O17~-`Bz|ndt1&vVpR0?8W2`*a!HsW;&%fM>m}XJ014%Bc(y8-ED+8E(HQjO zF%Th^`p}a`6GqvY41$Fn<%k$NdGvIcFiv&JZ;B|gQdloy z?xHT=fzI(#5RMByeia0IM9etiYi}>|1#JnCu1`-P6=H!!Y|QIb1apu>{uXQ^eqN}^ zk)C+){^0(C1fqGz)}^w8=_2)iAe>(KUD1Z91)GRrbG5sfhsMDJBQ41`K>+c{$445Z z2WK%hrF{?ik<-GU5El-LZeeR$`xi8I6`?3%V&0m*V6uFKwbv9uWTTi|#35hq93-YG zm=2$%@*|E1YXVQa_BB(CEi+-S7ORXPbA;L;UYVsHEg2rkBN{Od#HyYbBS0a#1V1m_ zA>x@CSL5XIcan^ch121CRk7r8F+#*uNzX@1f6oY$3TFh63qmUpA6e!03>MI3dZn}U z{0uL$NtiOCWLe%`GCmU^?Vk}rOu`%y7q~w*1Dd6hOX4Qtp}*I4kn$f*BLl@v#ME6m z2c-?m1Ej4pJ?Qz5AzA;S*aRYenD;d|!>u!&Q3M`T8>S!E@X?Brohom#R)_&{mom>ujK@PNo#jLB6Z(yK z`0C;3K?~ZE0MP<5Zc_gf;OQ9q(#2W6q?OP{#4AZ9t65?7W1jSreJUTK6ryD~^_xm* z=wo`K5S<{V4@i3oCa{&X`LWh4%oz;U{C)eE!o^5DB=UF|xh6~<(Y^1_SC|vt|D={) zk5z_~He!YlznRf$x72?#ta^`!ki&vE#0@JRaAxb;>BpmquMj!n$FJ(DZ6nHj!k0WG z+#=%S58eM{}BTolCo&wvMF2e8-yH5FVv>13C8IZ-BA+GAz zcZf};$OoWOr-XzN-#pfKEpkfdd;mUwt0+NKZ+98Y%zW+a7_vu<0de4&L%!0P*$Hey z+QC*KYeDjE=GDHO<3l~wN*|i1Qo2bao>G%U(GD>ra_l5qwe3#INKz`M1~EDbjIf#?q znRnS%TIj3{At%K&B6cc^`xqhm7Z3g({wWE@&W5T;1IbWEw10KNn7hi2}s4GY&_C!wHn; zEO3{$J?BeW3O9v#C1PebW|L1X00&`K1(6&v9K;T@vrTfTRJb6BgbTWeZ%sHqjfwcF z1#QV0p~i^hhnk+u^_^T0P1Xr=h~I`7wll}kccHVC{JcNuCR!m@xUU$=wqyMkI#K-| z2wUG5>W#S9|IA~e)QcvM06tB^vmnm@`o0q|pIPJ?Au7b_E#7||1QI4~d)`$VzR;WO z7lnv3W4jyyW9mU>i77=~*8S~qjPV~AMw6X_am4#yZZ!f(Ws-cMrifbSaTj412Aj)8 ztw^n?jreZWr9YTk9llsgyPk%C^O$hSh)HLk4w1Sq?o7^zMFw$YH;;8p<%TbIkv1(3 zAl>4)zd-c#|KcT>zzp)eurI{J?^{|i?_9Fjm7cFxfr}ic;%N%UUExdCp%rXPQ@Yq0 zt3{GsVhRx>_DuSo$G6b!=_Rpbo)`w=l0z+2EF?`_8b{g*W)Uwtr@SHxoaxpLK+|!O zuWvGTfuRIT`lV{=z|ugHA=C|#YTd3g4e(eNN?Hh-i1S9DJq!U2YejQkR|PcL=>SO(-Bb5pi~;WB9#1)$hk!PyHB41(&80uNndfs3UP74 z;mIHjq!&hpilh_b$;xX(nfS1yZN(s^tAY(g=j8(@*f>ufrivzIVy+RNS*(p_Y$R>a zN_$@vUhT&h2as}MNr(wG9a^wN%ik-#X}@DYqpc`Ky#DLUv)CfD?WNe@??u;$4{Xh< zmP6ny>GI0Z`A1X{q(TS|@s%^Dw=sP!T^UC%i`hV=?({lyBTH5V(CRN#{$!Nct|ID2 zSqqs-{N>4n-Btb7eYrob+zIbux#_P_1TTYG{N&XR|OJ#OkpdUbl&CZ3H|cUM+MDaoA_~2^#RrWLHs!PYyperl2-fDysfHm5|hG3iP%4B zP$$std=erCiP(N(-g^+U=aBhgY=~FKyY^vAz@YU}+$&94--CQ2)CMuN-5%JHLtK)y z!Hts6N?-D;P;tbW1KvBsbbrL_ZuI$X$}lokv_<@ALac^KE^&i9U0R?FB5TC}5o`LL z|C%{4q&&GJ>;Ml7%RtQb8R9M|$C2NKH%DAEcK94-x@%u=OD+gGBW5&sr?9B9?;8n3 zFTzd4(8*uJP9HRS=^L@+J+YV~=Fb@1ovoS3!Ga!2KT;z~5no9!UC*NRzHfjj<|_kO zI{uJYx)C=Nw%Y;$Zb6f!=98MMMerQg4kwV z>eGCm^16p~`mG@HmDn>OPKpZp*e2#>-9gOXW$@`nd?e%SCT8}P8+9Z}m@?wm>Q6Q? z@B8}3C{is%k63h|a20ED6L5~I$%Z-sq85}7KvK&+@cW?*@lu+7fWsCS~sEU~RXJlSv1 z{cN(=zY{@f#QKIyK9JPyLt8Dg8xdyg`u58E6~RH6l9{qy4oz^2(imI&4m z4?T3c4b$Av%`Vcq%@O2Xp?!$Ydi=1K&2Ia5J!y~k6n;b!l0__59gJX2+r1l0!iD`H z7ROddc!&tAT8QTXlRitk-Q?T95E?+i3PS0eVQa^Kd$#1%^WXw zpZp<&EJ=bOV(sgl{h0S!w6zV%7juL-_sv%0nChM1sw2M$h7l8c?%c!Tk0l?#F|=)d zWVskC;{G-T53-mM3h7BdC6T_|7C?RwyDP+>mGIafjePM3a4dmm53h?tL>jaFcWyd6qRHoCWk8Ia^UNGJzesoL zd%@&@5F=vN(4EVfHbWs@{R#wSfx_w#gI{>k0|Tmg@28U~UvVpA{)e%mWf3l z@g?iyU@L5LV#ym~))3o#_uWd{tiim7kyiynh;RA!N&zM6NL&OTi0f7+MuFaSCvAkR z5FgDjy&>(|**AC#1k-41i06h4KO@J7-K2v%!=?2fI@5`*U|;^8sD^lS*YmGPk9{bf z1|R$IKE4oUeAI!|iRA?`V%gO9q(?r=OR)%JLOl4)jG=NDZGjfPJO~H=*~@F}=zel< zc*8)_@A49XKK-Z-iGjQmvWxiV2cMfIk6l?LF^bMR$mye|7o^hb|@U6~{9B>=j+l*(;d&VsAG$l=oXuzw6>v z(u2FBq`v#aaj43DX=ITgi0Jn5(@U8w_YQ}VZ4@Qa&-?hHx6z=#kMA0IS(>&#m24DB zjTja>av^Ya0Y zU}sV)sv%yVTRWc-C@lfrTX(^YYe$p$ol{3M$tJ-vV#zbg ziPF+zfl}@(;7^n^V$Usu4oV}w5X>+6La5)-FXD;gyG`2ht+OQW<88=U(I?^& zZPwFLuj6rKh)`q1>MsXmOAjB9BoB&S5G$u!d}sTG_oN*sT9M;o z7mOHq`Ba|t%L$&jKMPD{%&s*`#;;q`17T`4eJxZSMCwI%h==t<|6;|1CqVe=Ciq3n zTeWnjbl}T&aNLRaiTKP9F_WYn-?x;uopz@WM5tSmICTPMtr%$ zTdUw^Yw6Ud4Dw-iqe(0H(za8PY0@lf`^F`#PTcc;$`|B8C&|( z8cF|kB*C|aP%9C4wEuPj$i5TlESe%Zb-51t-}79;?hit+P$s4evCAJbzPHcj$*B-b zbrsWt_{#%-7D;{1^dOEJmDk~^JZbg05V}pHcA+^=Y9De+_yokR{y&U^y$xdhZ==shIcIbEK&PDTNWK#BJ>ua{Yka`0qNR&x#lbM&a~*lrA?F0cE6(MT zw}n&@m)52YkS?7QYg)?rJdz~(L;U%&NeOI;gKIm^$B|g!^AW9`o;e_0IiE^$h4mtK zmi7fm?SC}ze#ibOyydzdg-V}MxqM91CI_djN{DHsQmzVc;e9t7!dsQ5xl-nRNe z4^kz%L)88pvJrMD{?dsHX{^}+n7QY^9`OOBpWx)qWk}P!rEsDn-c+c`RiTB5B}G0? zu(hyN@g)m|&LQT$JmxI)D@2-dsWpaup-M4#h&eBi5}6Eazgy7DXCd|Vt{5C*K(CeXIP|9&GFoU9 z;>1~NUz1k;luZ5&d@2ibonlXNj;#6$0%d`Fu2 zX9`&^hKiW@^FyynoBj+XsX{pr568skO8@&amN~LZ_wj zYy3q1N?`27j7Kh0ofEI)Mwg_k+?mxL6|;s|@W%7orN6Fak&{A45uf|@V6D{UuLKe* zcw^Z1+KaTKS`j2o|63bwvRJMC#?{x3t4BlGArdKwU(YN_pxzo*56+@r_aYyOQbeaw zxqnc1;2Wu^kqVugtM(0EBBm7ap}f!CWC2G?WB(2a?>nxt(%#!UqAud$7dyToO}lO& zKlS8lfY>j6;8)Vt>wJSb5JclV&1W`Uu2MwM5h?H(Z%vwt5LYo7h>6Fx7uw1rh*lIK z?!Ug{Aui~33WYOoAC{(ap}Ln8Zsd6p##W9iQ5fo>C~{Y2Rcx zj^rw~H;D1;c6SA_2T>rZYx4F|Z_B)6*oZH8G*YQ3AQ6He#Dc84Q!us&x?QEv((Q@h z^ZN@X5R(^7{0!wAPtPmigyloR7b7~mTGwDvHrXubAttQ){Ryd>bK*^PFTf$a=L9{( zneWa21tr7Zub|(l6#RAB-5^!}Y?CjYu2v)yBGeU8^~codbemeiUlF0M8bt;PNamA+ z=%jzB2koa(qy<}q$|1gW=wugp&g1D<8bu&ov=E+O9~B7`#63rs3}HgMqyeGj3FnNM zzA+&hH66|`3r-OG2km+e@9Jo646Hi)V>uIu?Wz|&LRUH|xN*|GP71zLZqzs{7Tn^a zW+PoSi7EP&l*V~}im@71dBsHP(o)gd*<3d%v2I*-W80RB`U3Z8{^gR+6?N^jG<>Kg zj2*|b?;&pVX1;*9d zr08qERc}(vqPs^yRkc~s&r7ZvU2Ci#Wlf;l%M+|%D?7$)msq(zZs zFN7W{ZGSbol`9GqNZp$jR=}6WibpE)Y^8MJNX0|8zZ!w;Xy?Y&HHz~t^V`N~QnmbF z`M7Eme#c5zQEjRmXSQ^$sIrjFfcM`sPx3~SsvNio>T)mm3vT!3G) zpkFm8BGv3lJ6)0P4{1L3t)AlI&h~F^(CO0@VLfc$B{ADentdt6p^Y^*K0zC6C&xdY zQ(O#R4WW@!6yd2ha<&hY-J*s4%O;GEG+RUa_feX$apQ-28gr&Ao>Vl(JfzsFjk%F2 zdl%N?V*Urse^e1P=5G3O__7%;C9yXZ!;L-C{4bSJId|V7HAJZb5^rm4s4@6S8hUw+ zGT^`aw$1I1l%j@lT~u@5M_0|Be?HD&8S8U8D7)y2ist!H#Fjaho{8vBo*1iTGlY3<5Sr(ITt-?MlezxH+;{oA`QF2>K& zDJ=BhOvSzHt^E^sx4{H>JN6Z-SY2)h9ScqFpcelGlTe)qJv*ggsfMER*(6(y|`A*m|^uk+!rRYjSIu35wV|J-ATmpLY{djI|p{ zIL5iQNV(Z6b$d~AvID7q>qmSPueexz70)3Ix2YQqS*&#HX&cFHGSTdFdk%yfk3XsC zq{IYiGF>wV-g?7SDP6ZhOFIMPyYNY)lMO&xBx*Eun(2k20$^7nyO-ldyufQftw@~3SKS5>BqXg29y_N2C z{R)Nms@kOr59--orENU-A==xk$LgVDMifc~vdKXm`t?sAv zrt3E-d>fNDDptce-)#z~#$H<#OPm`kb}AGKTDS{RATjr;2u(f%JM@m9z~*)PM~X!H z*L|um>IH`$*}cZOyA)@X^uQh%=cP{+d1~rqQbo)sP~6X?DyHqfgiT+eN#!n`Ul2eq znpBaar$^(t?-dz3+D8jR zFIlDv#HxX?@mKmt7w5R+TQEtDhv8KiMdQQn%6JV;@=?|_`ui&TyVBEd!GW};Z>iwB z)hD6Nh!`b1W=Su;rOKo2+bCPo>6=s_P;mmbh)zR3v05YCGZVTqSs6t4KBWktmkdf@ zTJ^E2Kb?96NKJoF#ol`BPPgwCe@gJq6TF%E` zs!By=_)}W_MhLArscPQ{T@F{%pU;4VIVr3R=l?oW_it6+Osd$v5za0igtrMVL%$sc zDkJIJmsJ^!E`yXGXz2PsuyL_6hF<$aH5jj2OP?GBo=cRi8=1P+ zzX}Ug-_Nh)N3tdMKO5nh-e*p3xRsXo)(0L{MtYg>j{Sp?G&v4F9L4tDq8ffel8)V_ zgaJLG)c7>5&I=z=2KqV>mOnaaZxwK3EBq=Y9SbcrtR)@0NE1xg?@{`(Zd~LB_ytKg zeG;eE(AT2XZE3?U_;d|0;?wxo!^+7GKDJCjaWQi;20bOy6@Co{LxPs=@Y!80%c1Dv z9C!QPZEKoJK_BB@b0w zx7$o?c=u3;-Cbm0XZyybO3v@t>&U4TYJ67VOD{!&Z#ZyG>2$9tjs*Lp-nvhbVldMF zDeBO>3jpl{xubx{v6-CVCQ?tGoqJ4l(EOiO{>+;1)rltGL9T-?X$KJx`jC;fb;fuHJ4tYw|FRvjTLn07 zs7|-1s3Y!9*wEVkZTH)l;ag`P)R=y_2RCtR%6FRAa29zDwxZnKKKCxu8uu^}|3wm` zw6t@N0j0DwMePYcEF*qY=1x@au9Fx{)OV-uceG@)O+J(I-C6YAamZj$$Y4Y@KAEWU^K67X#twT5BY;-rs^V>V zj7G>~9CB`i6vkXTm>VHwVN$Ui1%(_1 zY+jA3xJLbORX=qjWGnvX+6W1T(VmSV(^Stz*>VeyG|pJAYNMc#NC-kfMAA8Ku=iWE zLe+`o6#}upHux@1R-@%rl^1*%1u_hckYRB3<+*~y5S5O0+@tbsgj~TRzKxIs_)LSl z``L}Ko&Vdl5jOB!of=`s9#0x!Q$E;>!UjBSex%wU&HOr)>Vnnr^mwp(spF2^J5Zh9 zY)9S*J94XQll}GBMA)N0?WWRr%DY+q%LcdDWAErFs^8Hb+t%uK_t>?Ms)HF()Tj|TKG!;er^lvh~l68O=8cr9K0qIyB&#+TGRdThL? z?y6Ac#naG>>duV|E~(>O-AwEktBe)Z^;Wv~ih6L98_8GIM%r*iP3ZEg>fv-^sK%3O zCb&a3?@u*+#eBC~>lUvwT6J(}0)F9(_Wo0y*f{l1wYx%LqI0gPvjO&BQ)ekmjh=t0 z_Yc=ts%q;e(YeDkG1R3P&TJTqHOpyLl*X+wphPp6j;Qt6sXje#1!Qu|R|1)L3O zU#0n+4#M*y5!IS#`ecPBp02CbMAAdmnhkMfX@)F)YDQUhdRba_YKAd2wcL`e&qzs2 zH>c{;(o(b2vs2S8nW^-ERZ~J;YBfV>-7JldDmBSK$Bxwm#-){&muF_1&F0L^taL-U zCDmj$8w?qS42wCnJUb;T%}{1cFEgjmuO@3U>DgLMZD49r3PwKTEp=9S+RjoNv8hR^ z^yzv{U~A|xwLB#?B_pLg1xOpR4cX0W0O{6L%Nl(Yl()jWV88}wR6XN1+xI4vY2@RY9DiGZ<4S;iMk`p4{&e9uO;DWPl449NHCWZTE#K$LaoZtD&fL3;3EO)D4>h@X#)%|lRZ zwy`X$+*F=!OgES;X=PdICS!Icbed__r>0uU3@KTu21803>&nxSprwv_L-#bps;Rpp zb$EcEjX_Ck3`u(6NHGCqjTaA2)cD7N8kD8$jph`X&2+t~+>lw8m0?NEg8!w#ET$VX zGBZGXvKUJ)@=w4}G8tyJN4+Le9hi25nxsKLX`Fm&T86=rT5d9#GEL-2NCTgZA4cT<=bd5hE=g?#-gV|3v7_;@L3)$IertGY& zGJR^AIn`pwG8&C#<(X-EB$3~!ove9LaRUvgk(O;T>9f+{|C#3Ow6Zi)S$1l+DYZN` zBQqsC(~y~!X3?7%4LW9;hS0e2Anw{JnjpGus=|$qnyl&HsGO!5b0hJLw5&4t;T&Uz zF)cf-Jko8D=xe*-i^HA`nyMR^%+O~Vj24i! z0prE*sKr_RjPc@d6rGgL*#O%+wT9iayhnQkI@77}`EV zGqo9kY)h8KRF)17(vS|mEz^{inVoGZH-n%v$}+P|CS#c)tGqm$v+?Dlnn}$FWEwNd z%TvKUre~LdOEFr&5X#arQjPlZ6q7j>{+Cj228YfFNM7L@dTr(nbCRhCf|Y%I^p1QpgB(ld>EP(5G{t~in8C=CsGOjCV>ewfnBj9EY=yDTF$!(3)Em1lx! zrlgoGndy2<7K{|EJ>3HS;UP_@#?Z$#&)lf#utJpSGcxqq`f_sycm{oHc50?UpPf~1 zOi4F_ah0WHWP+k_GwSxFX8a9o=#6><=s75Kxj8GtU@{pp^yc!iOiM~e7Vu&*0r?Cd z#I3n#wq}WrKKTYLle=D4N6?pcXuKNrYc+|X^nse_5c=gFjdoyXIY}POBYf zwdnHkXk@+#k2SYrH*A%gg!T@9uxj*xhm$|yE%0}|Ff|6JN0%4-1QlwN+qBVkgl8VL zmBxCD<5dORvfvM7TD5JGwdEDn#!8*3(rC5n*fvIIFL&gNCcmJGa2{{09A|+p3@>QH zoa!gl%GY%3OR;T3qggRTJ6Mtchb8MF8mX~X;6XULV~hu!V*Mr7nP#tq9~!Dy85>L= z?x*q9=f@=_C9x*f_#9msJWqi$m35Z-admj!vXnjYh>NZtRbfr+fP`tEmtzBIw@vVq zOvx$E@a3&sCztG+@^Y)C-rn9pR5>|t@@(WtOC3BmX}Vb9l0Y{k#``wk8rH(O@#M^G zEa$UQQ9V)@W7XBx)zn(*>MJZ(-S`S)6Y+GY)CDz&@gtYInmV04cDdao7>~6cP6PsB ztEI9$Cx^*h8xLx5!+`mS5_H328P(VXT`bZ?l9Yh<7W8CuPN#L3d>NUQm!hFXg zwWs%Z=D|U|;8pbce^oA=MYA|9V7Zy{G#!907Y=E0Lj|>fe-6fS@r77tyRrQLWHhLy zsN&PK?el6!QF1&sjQP}To146ePaR+>ue7jJ+Xd*{ntDmPVW>}>GkUrj2$>^0`NYxM zPCnuEosK@;HEbJ37r!1G8g@%Bss-Ok^ULCb49t&%O0a*mbrs{m-RfXV39q<-SvS2~ zk3S7f=brHjY>|Dx8Dks;4h1Ou zV@1}nV>fP$OL+UpGO-=)uXc{0y;QK5j4+dM4^|mA%(`JE;Ocv=iH)Z%=X&^4&mUdA zTid#Xay~DzYsRt3H>tEHwhetWS`p|9Zn+SK6BkeCu8H-d14p~I^sKYsU9mF6(a4pt zL3}~j_?=hFkv&j$gJADmX{%yeM)177aFy0^ct}ZJ8JNHmbb45QWYNlQ(dHFF4ZwRR zR+J~A*Q6&BH7!YnwXbDjJzM#J)TCNE*4xRq&_2q@Ts}@+>(;QYu|>#MnAoAhn$KF< zT<|~j)!@)qe)S~&mIGfbtq$XA-iz+vS+FmlVkNjK8%h}S$wW<%wyI{l1xL;2BqW7R zI80shp4(}g-+@XMAjEoVct{rjhd^Up)FtuSJQ}e!HaxLy+Y()lPzrgHZXh5JhV~!r z8df=`qLxjx5F$+Ogi-KT1>|I!iMojpB5&Z-aVFw*Q)IsF0|mLz%f~gLzHG+Ck`c`Y z9#0ipV*LV(U~!ETeqNUgv(8KD-U`Tc;F~dOv`V`CnkyVVS`%B3Z@@&bg8Y${;7P2O zIGn_2VY^}g_*Wb#qQjpcL$r9I#jHLxXuTr*ttMkNCZj<6*=r@`y0}OkeRo6bVt>&b zewDgUjhW??tT1^cug8wmzz@BSETy|&k8P7#0WG4djP-C52Fw?RP;RWWT2LNZ`)%E@ zVZ0A8mJ%@VX^?9?=b@v%Z^Rb2(!x6|b=LYmNFxE52AKdblEVxo7^qC6h7s=J4ZSPi z=TwcAFi&XqGQ0dQ7UdYLO_rK+og9`T6Jo?Lh*B2!$c=SLy4akYSODHWu|qW+vt^nb z%_`!PO^}+k9?lz>SkM%J4qY2v2R@#8cPOp4OwdtMNCFD5I*Oe6aU;aJP-?H5*Z~-T zcXfdp6ye-x?U_Ki3B4W|9omCygM%_SjKYC4JNq)BN`Ifwh(Rs#CwR(Xf&V0`_;Itflw{6tBte5_m-la59PrtI~t!*1zb(R*eLwJ@~$pZ=Uc1SUa)9KdZvc21LE{ z;6Uu@(0Fx$gM=Ycz%bi3oxolt2(|CHsxnKR?7kvlabr4dpAfn}$s>RkzaFhEjRhlR zjS85kz=tzxVnj_$#oitUFIF^Iv`{?~JAhjRv4cNkDuY}A!M1H_p=Xd^t1@^dF-EvP zE;$M1dsE@%5 zBTMFNbA*N|FH048*$R`fvU&SJXm2ZYph33{_VTBRQNGUex2nC}K^&Mp zV6AEX-d4VJ)ZSL%^zbV9m7CaM1)|uYz03oc5{m`vEaNL`##!lCN1URxxSlmk3YK7p4urin~(ArS$qALi$Vq>-N9`qF_IDfic zO$He8wL3VDX2CJ?p=)LSY-Q*PAR{46#Qx}`>3w-PbMN!279AzuO>1HMMK2t2@^7fKj2%}2L-K}b@j;3XBO>KQe6)um3 zmE)`fjpHGVsABnCdSI1@|9#rn`)bDNM!|hueT@#{5fGQIrk0)8PO`%7Qg~?1>gO6T zOF7w6Z7#LZtOc6QYbAkCxq0usYmDYQ=)DrE|9kJvYRSFV?$!83{lkhUzfrzyO=K|L zm)zRJqkuh6A7=tJgdh{!r~P|-bSrYKJPy__c;PSXq(?B_neWq*Rz~{xyN$NiRF_(+ zO_(||cJc|LseVDe>CI1rLU_tkGNWqI-y}lzM(2>aVG&e2`c)tJwgY^SA%xBe)Hw45 zGD`+vZ~!X8owC@MTIF1D35y?i;BUVPk;t&-_gKuyA`KSYh-5l5etSbktsX)H`sxWc zcuj>yyEJHHJ2oGY%|}}*>PJB+XM`OYi>h!e38+foUAduxYvpA(cykBg-8d@Q%SPAh zSf+&u35L~tRH%%1qz=m#hq?M#VM=VNGbRFBvsdG9Kj|*Ahz^@3p;LC9fDAbJxYj2< z2&MTx$#i|O52OQz`UJV+WI>!`tm8WI_1>7kj_7>;MGqJspl|G-Ew9IS*Z-m(IHQn@ zv5T>iH;Zki9=6-4AY38rJKkohz)p~Ws><;x(;7amxM<~gBlQjdM_>42jJAP|PG=og zTU%2n`%7MvFD_QT+%rdptBQleV;wYcckGVCvWtHUZGctxMs_PJ;Mo==AYw}x$73v$ z_`AtXIJZ4Kf@1K#&4x<9`o=>~50nO~8_X66yC4*?FI!@LWC08Gt`jn3Lt;xLlGFmp zIy;vlNyECisnUuHGA)~4dk%}W&Cy+{c6&$7Mx#N6l9dVL7{|Zms0CPL`JsC;0{%i$ zDG0+#XXX2J5Ic&u@_mM2Lfw_QMkjs%o7Q}%$#Ck^rKo$q&UC~pkPDvvoyN(%a6rGp zE(41019sBrhVL{1+WfwK`xWIE_2}1^Ui?ne(xdC3z6JOf)G%bQDz5pxd&6I;hITan zv0&eZDq}7DISiiG_3q8i0P$e7D1Sh=E=8qq6CUIh^v)kR@Ww)R8;Ut!HQ2SEHFV_4b<4Ghk-zog#0>oAE()G>+u3Rso!OXf zz~^ir9@u%=whXpHQKkh?24)S(q_T?oDx+0A+PTrGv4+B<35Ve5htbz_#fFS*?J&qi z)LYcx1551U$nH@ML@LZWAr%~6k}hA4nsq`qa#&!Cdn?gRg7(>+o)Ha57oPXt!0%K@ zzOoIhy<_Z`4@x|l=UN9UA&(N%K5P|d!@`1Qg0WQ)Oz5Cavw+!w0EDMyXNqP^rDY`DHYql$Eic7nA=YBg9k{4i9elP2;^u{PtWlv$ zbcku<>;vGrbDqj(MEKsH_V4c$_^d8SQ!JC?NppOT>PSd5WGgUhiQ0UGn<*4z%Q^_beECsWwJK^Za5odK>v$ za@u5&TsA5H$S6E3Vnb}wkV&VVtl5sEva5|;3XfWa1>8(ZWlcJl+c;9RH@|mDZLe^1 z%3;=M@4-P-a`$$Yn~a)^EAwACjytj{S23ljR3;Ysvv*z-}q&HX07o-;_kt*|YPI zFKfxo}lRVB|AU}xa80s=}rM`JL)0wtxy2}Xx?5pURV8* z#tHW*?93kAR1EPApoPmc?kw35U^dnp(Qxg72;QMP>b(MJnAX|ZDVlAoX!R+``Rl)Q zccW$APJUWU6inccTcP(rI;M+{YeCeY>M_+d6RPb;-C|>`v5-WAoPfL>=GmJ=awld7uhj9+H}e1XfQOOzxrZLIDK(D=n4vVk z$yKlU-NL#gId;H#6uz|vKK|J>lwj$UQV7eaA>YTJZqfPphp|&EoS-e_zz0NCELrvI zHSfsqI^zWRUO&%KHLD4gsBul8Uq;g}Dcw%&0gG%qI^ykUcv&P$5t@Q|I*ZxCR$y(% z{DMQs!mHq;PR`uEjj=HeO@o&N9s5eh4Z?+o8u+>qWM4t#x@fbdY}`obfFEf91!?AA z?E#N1tYq!+KD)5p_LE7)A?0{ZntF$8LUV7|31at*XfMn=KnLjh;9EFx5urB-Wtgod z#OW`)`ZoMi4IWW5lVPV8cu-evf#Vom>uRbBP$Cf1AVAk(Nvvo7q`Nuu>=7(7hF;2c z9AQ*Eo}>LI9&kX61G+=+9*mwng6G9d zr0n>PEOOgy+a5i~#p5&ZXn2yOwUhb3)&+UE4su6zkVh$NL^2$)mXlJ=joCqOn`#7; z^*t_cs2OE9VbUI9{m1%Y3#4y5=4Y0rqgThcg(rjW_%{V;C7yrdp5gy`_W6?2Z0@W0 zcE-UMwB_FA_I-gp$V#;>>bDIYx!i5_ zAeSs3@qwpO@>wR_H_IfUfBW(cscE~vN3)HFq)!zZB%eIii1{L1K$}#>CrI)+O1|X5 z5mwvL$vR6poWdPtZy_%x@GxlVRIG;`C60t6uH7r(q$u0kH|Y}}CBktg1`}-cz z;K;?6bOAbK||l-Hnk;tY-`_AG~!D)_929r@GK%iDwfD*jpEa0aD>pTH1n zG7OKM>)`_v!efVr<)MNwbsb;=n{&*%i)lKq&1H-c9?S*3^pv+hE!h|4H}GboySYk& zuwWC2s~!f6_>=%;#M~THAhdwKa5s)_=;P!c(%dYD*_!b_t5g$Fc z!qcxWq#T<~25?bjoXAf@m%^!mk(M~Ey)$?!j_k7V(cxGXYPypTxh9O%8lMuTLCj;T>J?l8^hK`vu z9lL92-jiMRn$osyDmZ<7iyMWP2aj~QUEOS=MJ>pxK}Hvj=c0pvfCh4saYD>qcv@H} zH6FdDr+;z_O#X+dL!D?oL-ca2dvMjQ1$ToOZYqCS^H9gImu8i2Uk8yulUUmBySd)5 z3S0-94+SUs)(Xd1yFuabE++U<;cWY{INW;ClTUj(-I4k=+**pw1%i$e)bD0uvMJ)t zrrbW`Y_K@%eA9$WKRx@Cn@7gY=bwq~X7i79fEo74{Wh{yw|B;Ze-R#!rtuBxZMJH# z9pY*Js^mXDy)VW`@pse_O2eFAH-<1E zIH1jm*&4$cKX&ktes#^eRhW1z-mDHBPh)RQEz9?5?IhlyT2}1Snt+exDMtD5_eOXk z9N}=_qZy$}I6YFuPKeWxzr6iuF`gB#V>jVgO=}HY)z;9ry?k1y)z`sGJ6W~(>`@DQYn3=LA9q9^Lu~F*aJ2|C;y9^izPnJu2bfyO@J^Wl@R{5!9x;;SS zPo)HnpFi{I_K$h6_)tr$rPu&?MFJYI7r=6Iib{(H4C>PKPS^b21DoCII|!dfvn&ZF z>TC~p*qedCANyy!%b(Y^qmdV#{vUO30v}a%_K$xiB$H&a&z-q5*(d8vfP|nZ$`-_#>;HW}e}2EWX6`-rEYErN=Q+<&&ti3|gI#oTiX$5H@gf{AwRvPf%!2fd zrq*zXvx%$?q3crh!2&g5K4i{%GrE;>OWpN!>_E1KJOWL@^PO7b`@dUbmNV z-d8+sh5!iaA=EZKXenOUBKmDI&%kOZ8b~$(B&l5*=9B~@>i`tiv9@QZ%`nVmZ^C1X z=xor;d~M?-4t)}+b|M1H`udD?4)Limac(aA66`?q#b?aX&)LQssbupjtG}RVK105m zg?Cu7{Qs88W-;!VfEMr_4WM5E_D6!Vl_anf0+3sXc!yfj1SyR z^oF~F;thjZ{>4L?uoZvdNyHXRv3?5J9n~fx9lumL(bjd$%`qPeJT#^O92cL5ztZOs zb4C{tzel1GyGpw{dZVz#dWsoM7#&dt|4%VxG>QyEr8be|C@C@;LF}|6$%yynXy|rm zeU?FqCXMR*C`Gu5XJe2a#u`DqY>tlc341F?qij}^re(;g1YZODJQ4|;DOF5WGJixc zttRoexiv;JwCd~%kI68<&g~hoJAy>$fip`p!kCJk|AT(a-I6Sn2_+UuNgBcb+IEP= zWDHGnAev~}It;HHon2I#_P@nwM1UN@GD8`&6Y&+T`7_8n8Aa56JNu=fbc|qmJrDoWL72j)2GRN2o?3 zvtq2#3$c)d+;hs4HP~R zc?tueWW)o9R#gS18&RJm3uy__W|3fI{wBwvl%fKo6Tw&E*pyQ-CP>SNpze+ydAQQ3uAm<%*WHrh8+ZgpIYTP@k|VXV_HB#`3ql`A z7%IZ!E9x|a*scm0wHWj%a|s6QSa5t`5{}#=dLsMPKQ&I})6PGYD`^%Z#4eNL-rU^q zC@V1lAy3Fp3)BFHjHnV0qKbxo))HYP0ULaQKlC&8n9pnx1jF1aL_Gna<_O0&&dVf{rm$aDq6zB~orb4K z_%-I*JVm^|F?4r$0EEnlz$~6V9T-aSIpuuC-$};U^!`wa-(~zl{cE)JhsPcUV=#4z zQJ7!hAgtv})-jCNfp(>xearO|o6MZVCnEF$Pp1A{pa^=ioMM4+MANy}8<8Aipd&iO zKE?E~=q3RBe{B7VZHXAjC=VnerdG=^NQ}%4iq$|iL1hTc!a;vm&}uut zem$GRE|%G$KVyHG=~o-e9D#2|+NTk2KYda9s|XB?IC_M0F&&2KCTkRfZGpRnY@5N_ ziAD86n}PxynjRLsQ#w7HgGcb9u?j3y8&g{`HmDiiQ2SJHZeW@zwGkibRy-C11VSY~`s*$3)Ueg9eLADjdej7uVs~uIiKYld z2D;lIY@?bms77&Ei%qmcXaoU@Roe)J7MmPpP6 zT9{~KXbonuPFs$W{&4-YX?2Zl4X4dnR5w?znr@tAh{QG<^Jr~0^XEi`s?II}SA&%p zRjZ)6>s{H{tnnxYrxiA`@!tFdnxr6Mx-7|~gbnxr<(ape5EY!-0$=4U!{vmAtQrX( z6V*2}nx%T-3Ok!&*}iTRG+09w&AVVAK*2SBa78i{JP~C|S(nt!m*su`0os`wZY+>_ z7-lTBu@bYa+D%z*4=QlzK`H~tQuEcNDibZcTc=Iq^iV7P(g5WcdXHp%%zEvd*YJcI z%y$NojkK1;Lvs(|m|YkSR;DtTwy0!01Vho@o8CeqMT{4~j)?ZczA;#gZ54d}J2DK% zV~Qe`7N2Ui`!89myCl$s>Ux5FBRSQPc(o}u4b3Oa6)FU4h)`_w%N&42&~&1NjE$R1 zb%!^>(2At4B-lGI1Ui{v%1MPQvSCACSe9splg-rLMl|dmtVh|AJ`{_F$^{yX>|>q; z;OQKg#Curfq{0koC=4f8l8mPh2Y+NwREx}r(K$4xXhez@p-V>R~$m;|H z0+_K5gYj~6aE=-5tCUUjG+>67CWxY}c+#2>ho&VN{8P^5{Sgi&B_?G6PJ) zm;Z|3phqrKo1sO&fKnPEe1 z&>eKr=VvoRqu!g-v;1R1Cy4Z&ie79jCNNWA=UG&5Lw#WsLe%9VpS#CWBYTRRGMgy6 z6lQiK%S12j5OveQcKr}OalP|qNE^f|JsU)N!>LH*;q=5u%9)y1s$QN z^WagtYxmIG`&(SM`;8i%P-cN_CS%4QA<+aPi(i5-pppc15NKbrm0^5;|kXjNtq;=gx27Vn{(((<%hbP3amap3TKI5qm)~%?m)b zyN4M zBhtzxW0f>uIG`-}82HS_y)Y7GuY)icSU8ATNLO05V6w&&BlvGYaQ?b5mt%$F0pZ{% z#^^HQ+O8-&h-Fs?SFTmL9Z7L5)MBA{W&>;`N3BT^ur=iy~93R_ax?teuD7 zs;}q#t_D4N-_awyGEnXSc5#>mSq5TX42>(ohcL#xq_eLg%&g4vxF4BC$?rs%z;u%$ zp}Lfxi@unV>dJ+%QwJ?iJAxaLwn*vuqU4&r31>^7E7R#{%ObHb!6sn2aYS)q(_=r1 zRKsIAfN(hGaMejX8ZlKA#&m2cSB&uZ7?3ngaKnc%5;$z;GjJF-(9-pgf?)4QfOr`0 zf{_kQR?7@wHFD|#%8^^3Cl*7Y6QawSfpMXjC8Z+!4cqrd>;fij$n;jO940j6q@`M9R7(=E+hf5W1IkT{; zIe27YRqHW`&#b&_J(aE_(W#+2uSYB;(q$$9WO;-~AeF!jK00h51GF}ty*zm>!^Apl zBRp|pyXDzsqu@Cg)EJWMw>RaE$JhuHSDP^ESKkezRRntJnDk8LJPDnA} zqz@`4HX6HO3e;_mBk%;U1U)RBH&z&#emcY9qr+b&WVRY=ggg(}jnY4Ym*Nk|;z(VR zGsZ-rM~)J4*>fpg@E-|Qsn4>>DsF;=K%%`TCVG#8PmYXojAWE%AVRV!YY>h_Fe@^m zA_(BPFLcqHG?RflE5k=uUtQuXcoplP07aRb2fx2>yyz9VF7-hcJu3QB* z7}~mMXX+2~ehQfd1y$XwE*jO0Rim$>8JV0@)Xl%?NjQIO;kyw!C%zNCh_1u z+N(lyN+6&}>=772wLeYvhW{%PF?u!BG&z5%SRZ-LOw?f;AlM@hna0{VBbQNSLz1VI z1IQ5nPiWbYZzA#ud&3Yafte>8WE3*>~qs~9Z8R2 zE^il8as1z*$0pqbwdl%P%zsQ$w7m+~gN;Q_)*$S})9J{rc^V~v$Ixp>s-4p14p$F% zFY-vnWO}3WylBtPSX@rt-~n@ey4KFCM-x(z zCL;Jin{E#l(g*?Q#l$Y-+OJKxAJh(k%v`a`KX zVi94ZZOjGO`wLa@a$?5xMhkPytzW#j*6tb`8CfZkZS>&}#)qfk)6>e_+uAf?W<|U?g^q8}2EX17xO0bWK zuxL6F&Jwp<3g8%d6xL(R3l~M&a$|+}$aoL-5*^+`5j!q+u>|@H)KMWQ8E|?DixBsQ z=SBy}vH_m)=Aw-;x~+pF#Kk&9V9ac9i;kJk%nNEUkQso|b9E!aN^%0x5i&}fiK~On zTqsGnymj*MTg5cXEu&M4^-^fgy@QNbEC9un%(D)?gSG&SIa}c*=0lRAaIn!hTslf? zfwJbuyy>wU+Lk^d_U6*#aIWPY@U$6bv#>7o!*tEz2tc)B(IzBich;U`4zU7jx;hjy zoM#KQnM(nR04GGe4WH(qex@;($f-=Hsw=WoI81Hj(2SNN;$)J*Z729fYpJuoquwx_ z8;shqQT9PHUUQXSVZ(&kX+}&1KFK}cMTKqj#C=)=h*U^n*9%J2%~w6tVaOqi80YtP z4xWL?z+5I_legG&i;Xy50#o`~rq zOHA+ND^H)#Hd;%F&5n6rqkTl}HkWFYYu?x_K6+`w!ki&CpWOsO8n}AgarayL}1N9L?iD*$f&DWs2}4RMy4_J8U2wH_JqM$V7V0_#xZm*7-(APSKwhoPPB)Vy$= z2^-GGlHH+)G4xQ8Z^EZEb$e9wW_5FfQ=3BHkf{-aUHu(laVsES7G}Xj0Kim4b*;^o z^@CSpOcvwJQ6!z}?etVDT?aDsPlKC8tAK&jeecBF2Mm7`k z0;dJ167$a2&#dx|<<`yfM(&SDzsl8J?sA!tDzVJZV(r29cC5W&g~kFN?vgcfWySy^ zi~_@RV16pJVUBv^AN|r@;Fg9#tUJ$j0N4`Iq=eu+G(B05X~S4E>U^}#KlL<}%3>~K z3@oR&pu4N5vvzP0*(rQup>DB=Hq?7sYH~_LPe*s}=_2h|9G?u@9vBDwBk{$ut$eiU zXZfk3DEIhUcKEN;`?s-jeJ!@VqRU>$_t5JCcS*DGClHW!K!3x^Y zoL4x01Sv7|m$qh9W+O48hFMEz>N^^yJ1RVNx@IQCF)T1|aY?H_E>n$OK$z_mX6@#X z$C|GM2esI~oxp8q&D}%56%BjIJ$@P!JT7)APrv#PcUU(ji+ZQdL1y(DV zEM7&Vc}sYSPmIO@p6S;R`)Imo7_2r?C0=soc_~f%5{cb*=-P1MNJ-OTVsHW+Nm$v^ zoS8ifEz{0an)!93E&j!s_#&l-Lm*T|zM%%voVLc4a!l$3812(#iB#wyl$hssgQ? z>|zAZ!e-XqhzR1yaD~Z?1l?Ky;1$?W$WZ=m9#*C|I2wiwaN`Rhu2XG3xqiCzf&Bb1 z&SXTkgf`4=g)6}5T1=&yU2xIOZ5E7hOi43@pGJ0z;}p`8ke0hnS%d34dxtvK$(VA` zm~BT7)~9=f105^iKpGMBjZC96Y_`aSSo5K0e&zPs4$_YRzOeXZ44F}fu|OPnv`5{| z*u9`Q6Eaw+`Nl#)j@>h-)ma0J+Y>|rfZiiAj=(sK*nKP)K4SB_QAc+^m#Tyf8E8g% zgiJEp*!JG~P_RE!VDWU2W6W-i7+;Cf6};!>oOBgI4@ZWraOGH?uq`!N07!gpVrqY1 zf9zrH5;gJ@Ill2#F`xD{2_N{)!Xk2t98<`qvks+Z((@l=t0#{V0yg+dMA*&bI=Vk7 zk`2+RLr(QXs797e$f~0ViG-@Esw^hN6GP^Lu%MdwZZf{`o+kVKUfb~}H~O!O^ZzIFg-RRS`YWi5(*O`JMxg+N7uX=EOgu7b!oOWNY?c#A11f!WP?hqaLBFhujLl+}!Ve7Gis29S% zYlHKu4e6qgGMw2eC@-q~wfs!J!Hvm{k-u4yoWGSPgaLl7cSQ{4EE0 ztk37wC!1(UYubtw+PDIh=$8C6IgzRYWloxM*quq0$0^BNM=ycCh|kExp(^b7X@gzx zDZ_3Qo+UPdS0d%9e`z1iCcsaIk`mH$X8bUY!-+R2lP|wCtVyoe*3-Sbd&oH9rW^fc zNkTDs33`Nx5XI$P!+khla4aVf$B67fESu}fSumA|E;dA>FZ_A3&>U)EV7kT(ZO^R4 zNL%-_`CQ-F{g2rdYPo-qC60+gHxcWy<`_xZEOKMEh++@A%QM!h^j&BKba`LQ*li2_ z_{lO?7%OMh%bc(1LNspHrKa_So$m}N8&INWFSv|kGLdj*zo~5;Mgr~z3{jeQkvml@ zoS8O|%afFPfYO+((TTke8LpTpPiI}oaR5>*bxgdC#4)<_EQcqo zVybdQOov*^u{pI;(AX93D5psDsT#Yg*g zDk(JMU{Nal<=<(3cQj28hUop;A~npEZ2=M}#HL0pvW!8M(YOn-BG4kDKWQ1rtBY(S z=>adFUWz4>-5|%N<3+E(mI;Sd_a^HYrKA}VNfdkv)~vKUQCUN1`D{N4Ba+|1?VY1! zjaVT~JXn-RPd-@YmCVl83B!ZC(D|AU34@X)hq8f!8N~=Hmz*djb=xS2--n>)Ft=EN zevC1`25zA<46zP77o_S}60+&x=2Um30Nz{}D5yMuHRE4oa3KP?v^l4EJpKKt1XuQ` zsu*T7fp{(`nTFji5^tCxAnluqf`#50 zwMHccS-noabK!oWHEX+}j@mzHg2~h+%UH{146U{iv7Tu0ntYxj{H^W1AzCa2C_{NA&o- zQtvDj_FmOB&^?4X+h4BkSlJ!%fN{p&KyDWWK2i&pGF^8s=b}}%5#__vBOeY$jxvPP zqXQ_uZ2wN!-7!FUj1J2FZhLE-KV8)qF)oanu9bZQ>+P+U_w}#G5rS0_8z8}p))6?; zwXOrWDwY~HHkj{H8|+&j<~ffhStbx$1=jl{}`M!F?miM;s84viNVVEZHbl@uQo`FMKI zgIy6V2D^JBfiV(1C~^>E%3^mTuzskov(G-?ruupH^7kxB=CHmxmqlzRok(|Khncp0`f!7G>qTu%w3pIC?hkK9#0UDRxQIy) ztnF>Wy-$O6y^US{^dmKxVV?xviWi`-p)P|F3IltPHwjy34j<#2`L#<$dqKC0S9Z1Olr+{ioJw%o;zg3a!1D)&)~=2K4NwYC zrAeHRsZrq1K49NeihEu^I8V=jTxiuQh*M4B(x% zCg`+(Z6tH*UcGwlknjffUaP9|oJ?R*U1Jj_A;SZPZstOPCQ%nHrtW0EjZ}zYKR(8K zEcvzZJ3I}aTV!B7=BEO`tp`9}>xYh&<^vt^tlu#=-+awuN~Al1vCj6qqu2Z)chvkD zxnt95^9Rl+8GxQR>c?GAw;{qiWv0gTf(tE~65hqf+~o-$WIAsaAcBSzGH(tOp+ z?s`XVSkAjaj3Os}RAVD9Ix->o=*AUcEJ=}VU14!SL}(Ohv3cGl)?goW{0Y>c#wp@a z=2nRe9>c3{;1ciKn2o}Wi}K<{Z3M})e^YnB8$BQOWesC|h}?%$3}=L308xY6 z=+X`egB^WdK56>#DX zG8-7I_BvNIvO4flU04UDbT8WOACjAB16_3XhrJiMdTSXHLPyi5m2n`x5v*u*(2Ca# z-x$s*poW;UerfoK>fuNZk)lN&s$jUIO(HHzfQutUo1JO-CkT*R%NS)d;H&H~JyZO3 z1>IH@%FBxS8ZOnWC7IsgVSkY**FQO;PC`@%wzRVi6M-iG}Pd2BQR;8kL*ZM^xv=S4;R_4R}?> z!IV+~#E4!6811-k;hj`L#wgG|617L7Y6H$13kaC6jN$*6uolsaAzd`u&PXHYtjnba8ErJOa&zU%<8U7q3cI#O~Ru6523qfj(_(^Q_dU4ihCUA)Rl0 z5P@#S6#i?3L)JtRRn1m2Y3r*w@!?VQqJgdzT+-5cGE!zgrUK~SX!7dz8N$%btf)ss;8gFloPzb);KIq}Gr!Zy%% zRKG@qbz7(vpl5O8e8{#G1kb%n$x(DGPRC2=87OZ73d=jG`SWAT>^66ZaI}m z0Eoj-b7Q{x4`AboIfP?@qhPY+kA{S?5J5gSxNEfdJdVXDYq|P|j1#8NGCI>$biud= zI=YAIsQS7hzjWmYI5hE7zB!EZO%crO#%U#)gChsYz$b;jGz5WDbZ9^>=#i0Q7&uyo!-U0NqATzk+%Po&LNC z*l-VG`EnD);ZJIBN{o-zIW6ED+LNVc**4&4H14C?npBbhrcX}n%|fxKN7x%a=WT9{ zF;h#q3A9K&O<4G{eKecheH`V|L9zE1Y2)B79&Oo@|B2(g(T$Y)ds z+H~4d6!Oh6-D0LCYH=jld`xWwM!svI4N#SjYuE-n4xCd1E z1)&PbCvtCMF9vs$ux#X{D2^jAyRr_qbjRXEXlbXvC}$$R2&0IAS)=a=glK^Ux9A|x zBeEY_B%~vjws39+Bjc|3Z>_*1Odc(C%XY3AU_)1rFfM<3#_0=M6g8k>1 zIQxw6ybm{EfAgoo%v>EYW3{7A(;R_1{>s7{Y4#g==3-``GrpW01B*0#=1ux!b=yN; z?%G9;MGh}*eW@&-UOOiti?(#To!QX1Mo|B@Z5QA-^*lqXn zs26}#+dvmWYRf?>JdnBR48#6D`bCDjyg=L_H}bunhe%InxP6t<&uzr#D)qpgbdB3l z0xMaB+a6C+JX*!Q!J4?lz9A87*9LzataP;NzXGLP3w$mYf8ju3kV#pPgxrp%Ha?*X zQW43u5ib_-nOnSJM|s2xK0`avMYG>a_Pa-3pFu?rmF3tnAo+87MT%4`%v0Dxw2QYg zA5P@wnQy@!jd}o;;DX|%NUOA7NEbW6YpWHYH;Ly{74-NS=>>GbHmJ5YZVO&RIk%={ z(cZ(!2{dJU&_ngxagvvx)xhFu0?miYk_RZ;h_8xnMb(!g@ zq66Bw*y;5eyQyEAAzDj?JUiwqX4~}9j$ru=z*8^21}|q7VgsD|D7KxaBeB%hqRZZb zmhKErrMriMB_gBG;(7B#9-0Uu4z@JN_-r(#MYOT~(A!yrg1oWbp%r*6^pe2o$N^Zf z-uA&D^E^&2J5xk_I(1UEx0o*yPUL(f3k2a9>4SW6sv!O)eWQFs@9ikgK1OD(*qU%| zMx9mWgJIRX5`w{eMEj>ZloMs=w(kb*(?K@B*`9@}tsP}N9Lmd#Y*14}ljnPUQ{-eK zW_)zhnSO+|qWsy|6Dp2ufFp&~!e$Y1IGMRLd`E((rK^`y0&L4^LO$bpfDqS1(KR#M z+iBC}2SzK~E7%a$2qN2x2Pj0UNfaXBHiIT4?XBbsaNw4IIGEFF?5({!JNV@hRC5P} z0wG~5utg|BNW)y)(KDA1n8nzja4dKj?mq}a&(3IQT-vs%o}Z%Kl<8D^b++P*l&)tr%x@C{R=iB?>0`o{Exo$( z-5@hu^|L{uom+pk2>G%0=iW}ho3kziU1LyTy^tf`S)8bYjTUvKjldMX0i&Wfl5XXARs!9ipgPYmcMMTN^j4v*aUu9XnTO_Db?_02&SNRMDYkN%P9 zRp2=+S_wj926XTZXZG-Jr!Pm}o4OTz5l2_&f`Pu(^=pR)!OLQ8SLLYN#hg6mieOIj zige)WmpPjhh+|L9LC)qzad;*fALqy+3zP#!H2KHLUJpZF=u1LY^mpKjotdI#Qt*7N z7dd;hDwT1!FLQ|Zep%u@l0`~UErG)V}cbY@KmTUJakx)77Pp%fn7n2FYP>w_Cy2m9Jj3m z^(jgBi2ehQdEWAwSOMQSZ15||mvPRr59z14FT*5ndgH}}^f|mFc%?>PRfKSm3yVZr zB)s4fQ&%t$DjS?u)`>Id%m`T35x*zmKNAD`RPlEOPJ~Mqv<&7gJGMemiFco+*K8af8Uu`ML4ABrX)Skj#{QOZ3~bL&woAD#7; zuFDdEj2B19z>yN4YFB6Gog}+uV?<~DvIK^O{x zQl=YdN^45tep;|P({~J8#C>a#%VJXqY(|MbKbwH#FuXJ)vwdyws#k?luO zUX1Z2nP5}dw_(o8J_sj<3#DY_txuNfFcnG-yJ?vW1*MC_w@fhlw5_J+!Ia}>Y*kj% z{*Mz1PM0qmBw~gP4Ac>o{i7pxX*7<@jSU~L*!N=D(xxX48Urx*<%y8vY{gs6e_3ld z%9-cG8G}PPYt|b2L|3P6B-(Q@;@0`C1^yxf%1crwY2{^XBl}O4*6(&bI3)9`_d9=@!nu!hP`{VWzTPRLdWt|UDN6D zRViND@%vI|B7AlYaF9|*W~qn%kdf%8_P0}2Oh6aR!T`p)Rw*aB*5uw)HHcV~ly( zp_IG=EdE+RFsogK>NJu@mvi5&eX*GxRbi+P*GY*s;KQO zJY0D5_>JiSrN0{|S!z+^1!h_|j@cjv&Z~5bpLoO7bP%b-0TD3;RqO-wI`L1Os^jIs zrb#Hy6iYD^SzQ;2oukq}VTZ713F)?1>?wQviQE9YxYB9r9}^0-AN(QV!nt(Lzma3G zLvbc(4`(^=I5Ce^?^2`^S|LqDC%Svj$BFeIJyqw-rd5la*U-x+J2SNS#mZ8dHXQAh4(>Z~DSsF~D$$1I>tnR_3=4Xhr1}>sI zf14bjdydUiQ|<5Q@GGU+P@DA;aUT2u0N(}KfJ`{OQ%=A<2qjpU*jrpXurGG^`S%Ccb#j3 zQ=2{Px+5d*H#@W!?{X<|`A=^`QTyQj$A;y9NdD)0{GX?HXov4{r8->QPkoDj|KX8d z+JBcz)k^PmtvJG$gfDZx_46OQw4eVtWkZ5%Wq0L@ZF2K zQ%OMVqrfwS7T6suC`zQ@>xTP$0<_U(P>6!9iSR7C2^B`DAoc z3fb4cmamV(6|F-!^VG!@7EJSHR0}iGd`yn%nMKq(Aa@SyO^>f}WNUwVF6|5_ zZAnXW(xHDjom$&VX)k6?LD+Mp5g!Q!FAX)H)6&x0dQq?n;fc#CA`(RkY2x$_$vY5)7GZ}^fFr*`?v>D$z_h?m+i z|4QE+M~81Kb0*d;IUVJ8=8@y)86JB6-|63tY)V<3DFxc*Pt)Ia(8dpP(y0BGP&~E# zJvC+O3Y)B9>yGgp2~-mUEe*9zC)F)kP~SHH%%=GOt4QyH^x+Kk5MBAN^y0YjL2@*u z&CoV|k^b&Za%|6-tPO6@sK}RF9>_}d(j|Y)$fBp7%1A|k$hPl+Nu6EiPZA*;`~DB& zoX=Xe*=hA3Gm0`n!;@uZg?xcrhJpgx@WbSIt$%mM1&!KUfy|y>>e-X^zV^n=nZJMX zo;UVoIW%oq)=4T|_G=dk{T|FJq5gwe@!A#ZvrbQ>efvsNXxF`2DRlE?S&Qk*%d%FI z^V+N&`sE{89&PdES=9=ib8A+mTY`G=oVK~Oji_loDMj@8y=9pcxTf4in^w4Qpf_$!Q7Q8o zf2X!}rTbC`ZJpy!pdYpPrc!&i`(3)@93??J^<4M5I9h*BfkJi1Dd}`kv64Z%uJLD) zvf90jKCCP|p7t$O6C8E)%uU4r{N$2Ey6B~{bhQb6Y^WD7TPay)`A9Ha+4wjxN5!pF#WF2)1rt=f0HoEzU#rpZc^c zZT5P1XEL3>+T)=ESCqtS2fpF{hl~FHLAHn9yw+VyS664}QTvVVG-~K~C(ySxy0fP0 zaZT)laCsmR2{{GE=`HJFM=uVAuI^hqC<4+D2Xi*LkEIRQxf^q=9$NImH2RYY`u8UH zWGda{-p2QJTb&y1tcRlMIi$2IlhPxHqRi<&xJ2WXOnUnhC6#X9>`sktva>j+fT}x? zfFC#Ut1x5Gi#y?~_ejT_UmXvaSa8?}NTyRS^;aRwZeIVHPIt9j7z?YU(Dpy$zT832eBln# zHGg)`qOHGG66u`3`ID$`5YydvMM);5-G>r6Z}fxUc3g=e8qy0~+WpVEpG>8MLteLb z&OhAej#Ep)6sZfKe)=@*3nxH-Kj(f?tao|++_(NrR)X=BSqeUOMPmv6zdP8vs zYzvQ%@=q&H(JDW5pAMz;-|nf2`b=p5+iu@I$A9XMqpLS!zW}9g(caJ9CrWVSz61Q2 z^@aO-{@E)5bGTB0f8y1g1nsjg-Kpau*<6FR!l4v6Brg$@c`*)vd*W)|y1(ZIXi0L0 z&gZThr#u@+$1W<&($+ea&NycgjwTPSrX%Bi&bzLIjPE>QYx zxY)i?SxhI+P>N9>=g!ysKB|Azm+XRGzPx8Gil-n*o|X$*{H4#8itvp75Ye%NkH*6m zn4w(Y<4S~jb5tbkL}e_|ie}A3ZKUt*flj&Q-_U&y6ep(AH)bjd-F$hONAAI+0p+C> zkuN38l{OsqQF0<4JW!MK!J(b5-`Qfi1-5)wEzUqp*1V+QY+C`t6~ zm&;*kT~P?GpQw(fl=qbBbk)XmaG;&OleBkBl}V0_;B3%4+(m45!s$oHmn*wmW}fpP z?H{jHJE|ya0+z7zgTg6vO@&fSGw;kvrC*)wQz$K@gC8@<}Gfq zJ;1ek;_TTH6f-~tunW5=C8XrZnb%b+RnA6ue|kFU(n_VkjVsDgod@nj+*U89SVOfJ zyXTs?Jb`w-4)``a63C%D?kG;AnT={OW$r1=reqgb@Kt|4*TNiN5?92ilqA0 z0Ihi1G$2-VDN8N9f(ViN6K;|o&N6lFfWdO;2}gmbeq1o9SG$SeFq zLmgc0U;qJYM4E>ND9c}(n~sOjMvPaq>FQiHO(gGitc0%!&uP!;x%pP7$5~`zbgK6! z@4XbhU86*_(MPN3mu?&iHqwR(o+P^NJ!LOtUIVc0ouy2(GX$_HZF!B7;Gid1@!7jO zP)F}y@6V)XXDiK;MfE2aouFMrG0w&aETJSs1LRR7&1g_|OL<_h!W6pXs-hffBQVcr?rqtUMq`jXNEz<5iU3pVqgHYZo?k-KGf4Y6S^zNC;bCRiHfZ5dWuV8|f zceb+DF6xBnnb@Lir8_ocXHoS7{&?-(7Uha`(7%`NnF7C z0t~lP+kj}7o~^jFf@R8zI3b_49h*HTLrE;lFQoRJ*?lae2k6sTPB$dCGl$+E^cPUU zA4}4-(rcB84!Zj66otSj-=lSBq$#x3m%T*$$#u%d3fvgf8t3aXb*{W+^?WrZ@LTRLRt47emUo4df`{f0DWsqv6p`N zYY?Zv#jS}sCnX~ujzqZHx+Z%3>a<*>C@;__xZ3iAkk{km#sqLpz#6IkfL7C1r9g zbUCh72wyGo{^nE!IQtK-k-jF*uGW36?1MDIlJt$ImE*>-7x5QQE9X$z8%2IPbB}TZ zov(RLkwmm(XLg7-)Iqx3@k-HmX#4xVRQlioZ>q2%PF36#xVPM?UG$=I z#kh14j1pz{VcaxR$I4ufHsfW55-jaQoA{anrHw&3{CV+0I=sT2LZ7{^lts(>{vQ=i zrOo4%<3mQNKs~#jm1bB0(y1$IEDII5YmhP~mrNH_k*-sPtdd&9bdgJcd;=9ozv=U2 zX?Ofn+2y1S4|-P7@dp%~NPGZSd~SFJO7}LW-%0Oj-c)PC6?MHFQx0?l+JzWs*E4KU zfW_304? zAWIr!yZ;HPSCLtmM$hiahduBO7--=)73lG&7G}_u&qA=Z|EM%?_yvfiT8X&P#_cN9Zt#wcvjGc1ka63 z&ZYEyr|0t$i4S@WNF!h8ly20xS=iN!gs|ms5EZ3(3aI#vqACi1g5BQNs<`Ogd))b8@6(v~hyqV{aE=Yk~K6kqf+>R;tsKpU3jr%~HE*$LWH zd7jqz1eE5RIg^Sy0tNK%fG3y!_C#?i1+MibP}%*d8MI+hNwW6sBG2`4+JQ#pNe43> z-whA1&7`y5a?hrkvhi-3{ezNIXhYD`Nf-Xq^QB~?JARrsmv(Q1q!d=Z$y<_vh@ErS z4)mmQokmI8EwVrsoZy-I7H+3pq zd^1*iXg(YR4;C0g;-?EdmuAvCXLx4O_%l3@)4nxunr;1FSu(9Z)8p3~&h%X3aGay< zJYC=BMEh?|$&-$coV6t`dh{O8o%Gsu zo+9mr>pY*u>(g-NEYjY*(Q`|jV@SK4Jf9{=?WO(E+(q>K?J)Vjb-Yu3V2h^+hVXW% z>6`8pGkWuF)NY5O05cUgCOUW~WR%0M3{Exz0Hh}=$?QL(3{VQSxtA3mTQ zPyc+-^ST8f0)Sj}%)_3)*yOkgBn?0+9Y?zc!3x?-fZTikS)NMcop4mWn+?4`n8IT$P`7IcVtW2;4s!jN<=UKTAf)k$ggr`QXcGu_G$J1Za(s9)B z3UK1-m**DH-y5=%w1Ou+KXW++odvXK{^a?#-Jrey1<#9O!lJh~|LQ4}n<`BCGhXy; zby|>uTwg>Ff0&m}9sdB82$3Fmqi{0qc_lD;`0qtdf%_W#4-dtOO9p^+X8v?$lKsi+ySA3L^|Ok zPcdC_0EYRk?|ZJN)BmRUG`t<}lxWmntSqFb|Ap3!M(kQSo9<(5)_SCM`atI4OlwK^kipH!Pa(qRoF)bDdMGkFBn*pnW)}L3e$q6j16x zUlQ#gxCK8bR8`vfMGnm4r&Q-Sw4_f`yrpzOiuYpHHJ$W%ig&8qE@2I{&n_-S%2_bP zhB_0T;8uH|%y$kiDOR+BG%s}gzBdyRwWl+@ZikJ9?UbgKO^;LRX77r% z7yv8O?U~c5{pLKc_E?qojs(||`uc`8R=OH#&+*=FSN)um=g)0wt8bW3l~cVNY3i40 z>DoC{y#H{}r8|l%X_e~CFeOcfcF76eU53kLn)d?RoQ3K!{(nH|fp5UxIeWS{B}pZQ;;@9YG2OIFY`4;9VVw$Jna zG7gMv@^Ok^`{qLL{Yl1;h6e8^i3tIS;7e%o2~a2SAW>U&rnkpA;_1idcpuKBEuX4R zB%A6GpxW%9m%_QeGCF)siBmh==iM|8onJTT{gcC`bqsl*O|-#UI34?^k*ZJ3IgV!MswdDjw_}EuH2_QQWX-q5yDQEVV^@&>RxoIg$8t*jZq6hM_aNd4 z_k98FO7u;n_H#W6TJQI~*LY2VQAdrx@ZM)~jbX)?s-5?sH$LAsl5jcBz8_xxr~cxd zVxSwl8)wZdN~g*xurMqSAIA-}m!J1ePobd|p*E`T_06HcN*HCo{L~v@zll$K={4_4 z-F`Pi5wzu>-oMiC0%<5pUg@1@k<0^cc{?1msWtm7)9P)Y1K)wa9ZFm(Wqhb6Q{_9} z*);U3&rMIh<8^1OX19;)HX|51nfKQ@;4 zejJ`fIcwR4ufc`iF^*PGgG5^V7uXCl6V)8LytFKfN)pvQ^vQhzFRgnHFQ&}PIh%IJ zmnTu`Cy;ozzaB`AXCF3geiW|E%yb+M+|ZbxM1^mIDM8#iscJ^9Gkzihz;rMO9^PI8 zUs>km*~#?njfFuvVME&A?$~R2Jy=DDzzIe@*q|UUPESr8)uu!`*P5p(TN5UOID{h4` zyzgaiJiWyvgq0t!r6FTtoK2bhxuPDV*=qJLY18e%xxmKU7HZE`{nRszMZe=!OK6wk zNudYtFVECKH0gFbUBFiu0U*ySsCuv3Krh~s>!X$%)b!ys$lmbHDXOEYH;OW7_4b@( zM+MCp^cB?b?n#&b%TomvW}6ncAC` zs+IyVwDm;wU*l-gE@&E`Hxy@4`Y#aLfX^6Lqg*O4|A^o;7SM z@YAjzAck|pIcle_bPAOoL8aTE%bB5T7$m3C;$HPY%pu>u5xHxtI}yni5Pt06c?N_J zdRyqgS+Kr0_p8^(b*-aK1L`E&^Liki4(w3D1me|Fs(!gVfv#Jl9!3KV4NBv<y|wD=4*u@j7pT4b;Ij+VZtfSc^Fi3OOSI)-RdqOyp^k^(ToRs(=QpUcB==@0YAY{O=O=4> zzpdWukkV!MHR{zzC0*XRRy~c>kJaO-W21TsZT(Q0K&=~rvkz{Bv%LIVB^y%Y7}ljP z+XO1(S6bY4Dx@n^1OpubyM+xa;v&@Dd2y6Y1KyaGoFjG9kHm zEegpaiB9Hd4W8HC-;V?0UG98Uy_ETSz^|p>0AS(luFp@KZd9A;;Kx3n zkUhRA*`p^sgy`^%sy7j5Dp;t})_-{`Y1^<`PPIQOol5WT%*&)7klL0L6x_l(4ZQ;S zv}J>Vi!KRjc{i(N4tn9&32C^JGc{Se>bvRy%+ZdJn@OaUBYhL8<|6O>n`S4*Q(i-9 zsxr|hR8y|7q?JV zAbrsn)H1iJyAtRGS49@R_%k)FKz9i1(L^NP@+o>#v!;VTQzzk=h%Hq~I2X2#o zODpoBr`1_`N9t{jP2XpoS$k)X`c_;T(iQnC%psIAN3F)E*DC=^`Lmjm08{niAXWca zeNdR4@Bdl-fIhyUsD%3dqApBldr&7b{PB(w3UN(Yp`91<1jjV!`HK@hU$JyX2wEH(dQExN#*|oIe!jb^( z^}^Vm^`mk(?V1k_toH`Bnri+A=Jt~tRIdiB&f}oxzVPN|L@^TD^_l8{S1pu1oKX%z z@VS~qkNykJhSDz}5_XpukIeD{$0AnVUrKflS>Yxk51KG2fj`^Y8% zuW3h`LHll4e~;azLblF9JmBI-a;8W-5P%pUmVw&dMBg@8k&(v4t`*8v^zBUFq$nVh zJIi-E+Xw~paQ7R5w36%8+yF}dR$cUK0$jY@% zU9c=8TP8?{e_Vjr@AtfOhfgW=Y3&{#JaoKAPy((Y6>wCmy#WJbB z#+R&JH_NBl_}lOn&q>;y^L;R~?boOJj@3Ro)dxKw zBCeZFJLdUju)*u3-%g72)9#L3cnH^dDroix2;_Lq^i81WZ+0=NEYfa0(|3tZ%}{MZ z)Y$CXV*;g@`o2KI1F{USwCTZyXDCs-zSXxZE}lgp{j1GaNNXk~=FyCH-$wcDsdnGl znb8tatL^Y1NU`H!{&aeBm2ZQM%V%!MucI#~`ct&+-M)i5+p-`jkpG<*3o11@EHdKg zC!a#Qj{5@1XyFU;rqH85C`#9o`h3qZpgGG$dwGpdi=*!j`L3{u?}ygbxgFDXiohco9 zf&GDnTIaPs#Ua6I>~aacz7eaw@SwK4vvt~=%Zva@4 ziUY>K03m_veyo;gH8=V;$HU`=T;&|?t($#M*nK1dhH1C?_Dj9Tf}S~Ds@US&NDprD zm5&2@QNeS;T&?R4U&x_t-0Ew0*pe(3e$VF+(FxNjnMP0k$hU}2{Dsf2z4?6~lK3n` zVAEhpE4_4=Z~bT^Poc~ncRVe+Cy=JCyT|vSeW-8WJ7OpeLv0%;FjeSu+MaE`S#biG z8c-0?FpGqqjxQ_JzHy)L4A@-u%+)&WxCeY4BWTjv3uJwzYZpD}d(WN(h~%bnZTurX zSZ9}P%y7|XpCJ!+U(oMjr=Ux*)n8#1gyl8u%<_s9vP|uqM}2TcShL^+L_z{$y!Q8B z`7V}NWQK+5(ci!sW$Nf!-fw-A9Zs2quPynV@1rEDUID5{MDlOLAHwxA@7Lq9srgmk zMW#Tmqe-v%o*ND3ZPYtlkfAla;hSRcAG+dA-+0OIwQXug zQ*ysQg+6-Q7Zezo`;HHrX0At@eZaS81T6@kd^nt)K)w%sQ|a;5N;VaK;xJbKK1zjVxM-yc{vqyL$?1nQPU<&dn?TzC`{H4Jn4^* zquKfXt8Fk4605kte*zft!=7n0dkI*$NC>x)agXv{Euq+7>!9ij{o83%secb$pMcz{ zyUYA1(*81kOJQiXtc%z(IH77n4gR;~f(b35icr<~ik6B=LE3eHLS8Zii%eOe&6gGC z<>1`K;KbGm6`|&q!PW^arN(dB96oUiJzjIC9Dg!y2hxp3ocHBCHCT^GZLcza9K#+) zSQ^I5W03bwm)&28Llq)Z28D+BVo%!q9Lg}22K_&!o+pqvEaD7*3;NTA1D--N{b}@B z(4XhHMDv9F7sk1ucQ41O-sP+NspvJg2RV!WN%X{*E=1NRI^(nL6GKyR$eO8iklsAS zf4pOmo+$S(r1IL}NpzqKsH#&I9HbMu(z@x^5ZWUsE0G+Pemw+i+XbEXBRA`Z_^e|zBgBzUpc%(OH$HH$2flc8 zsx6-3zt%2}EYTvOecNaI^~5!Bv*YNUzXy`&sak(aB3}!OTb;G8IsT{OhJWFi$LZ7S z9GZ8bKhu%KN2mE{I2E1b_a_8#3af{XKgoYSb#;|zX5l~zUp?2Er<7$7<0J#~K1@~FfWfU3p?#%eoV)D_hpBSkc;oe-)vYWfxa*{$puH1rC5$v@8qN6p1&J za3;!SC>SobySgq4mXnD-6W|zH*|ugaN}j>p0W5%VHYvyqn~M!HR*02yEgYEssE$s; zOkH!bzh0NxELdoh6Ne)%4UG4Bb)SiSCCE+N)d&`C5y$>WFD(%+%M=(NIH{|rr;jgHALuH=ZzL!+`@PEe!0hE~2Z#Dr z2bxgSLcU0A@lT)wYyD~*T4kN@&!t;i{8jO|fyG7PEAva}yz~75E!65SiyL-%bEvP) zpH0`a`3q@#8`7))(1y=z+958-wfpnsGyJTgkT=gy*S7oDv4*54k*wUt12kNbB@N<8hqhznczj%l2srEB%kf|3BW|13aqY`x}3DlWdYr@7wq8 z?%fg~gJ)wiN1QH+;l8}TZAfQt83ksGT0gd*{xbJ9p;HnR7npbK<=5^1k?X_VH9*x~l0}!r3A8PlBXj zgQw{Zh4>Uj+jQO95dVt$zu$wrqvD(PAgvh#iNw2)5@+fRfo@~ywq{;qzYrzx1a(xD zL$Q8-Hd{BBhRo5O3|cmPgP;vNc9#x_nSg*25Y0jN>beFN<0AU_VRZBLF95^JT8!`@ zzkp$g&>5v^ywGbC!1fj-o-tgRdbzG1DipL0Zc+gFW~DAS=$Tw7vi7TV(7k-il6Yn( zB3&>r&i7@aBSw3Lu;%EI7*i$K-E6 zNtyhkY5lzDl;|vOMiV3#m38$Wz}LB*bdFRkH=wo12K>++be$HC!bEE@rH8VZ$90dW zx#)wQc|n5brQwt_x_(QVhH{?JeUgaiy-ZYo@_OQF0Q z2veN4PS=lG-vDSbX1y-m&S4Jt=O>L5`?5yo=pK~wsU-tgz5 zTwJ(%@`}1Bzj8f!oyJIWTg{(0rY^l1)Z(?odVY1=)iIdLBLX zl&&ao9KM}$bEbQYG^W`Yi6WlXHP_TOle1>brcO`mtVzLTPy|v_qME05vT6p^Kdoy+ zz5Z6rr9lH;8xR@P;~AZY<~#$S@KeuVpq_pPD_zQFUH8C&T{(s0;9fa;SjMb8DI(L1f$(5o60yh3W>4XrRBr>ei zb&XBu=sli=d@`p?pq>Ai44e!KqrhDtPWn!sFqhG`UUaQJ22eKh(Noy)`dPC=|{VHveB{WWP2H%`T8rm z{1hdW#do>1tac*59^ zl@DJm-oF)XL`H0C{VG=fGZ#YR!`;}AwgSv%{OcHe4>D+8|GcW}O}||9UTf{W#&B&{ zgaY#t>lXxBbNX^W!m&l57hlO}tVW-}hPqY zd>1oNM28h6xHr(<7vY4gc@IMd8(|mSxf^yd5rGxh{{chXfh?Dd8La4i-3yRgePL@9 zacRX2kpa2ufc<{+t&li!caY#8US?=c3lHeLR?WaZ-*iwn$BSO{>v{~>o_kecJSlx9 zEp(Vu=&x`@O1*qU_ihLcdeoLoNnh!vQJXVZCZGKZ`aC~kBfiGeS4O;$?KclX2h9Ig zSI%Qg#*pSaj6QKBF3@+nd4Zr4hRCx2hEbu#hSWXWy*TcKt|xo#gbo{7RNjHc{-pbh zA9aTJT=$i7^ybgHO68WE)4D=J=?r%8v~IMDq2TLb7`0%7hu81p=r9&@LDwOazW)t~ zl>_T6S~8x3x?Ob{s}^npXTxRPG8*v*USKw@|3g?J!Roww$)mx|1uocg@5a^UJnt9o~79LGu zi#X!Zd$%JP?VTw$Thh_`f8bN-e=l%2^V9X7AWyTf#t=vPkh-mYmQz_W$|g>!l4Kb! z{?6LK@o3@L$HGVdwAJejtuQiphe(m)`1HjL| z?5`aCfPl}T$&02Tel&Rr4@!)oj=l7$?C}EqW2%1_7Q9>Nw{CiO;G@vo-Ht?I-Jw;x z9m$FtD*-65qQ4SjSVeceE7G^D52il`=w}N-#}*FMBg#UodfB7&gOnHG@eFKvk^ZDN z{zV{+*E@}X&}T{!EMtfs*5slFX|V!K5~z@o;p#Zr{TITF4!2C{0GyB^oDI2O|BRYG z+JH402!|mwdb$2##mK>3?rh)+{qt(!&l1mX;_4UP0^!(!i$C8xuEYjp(Zl+0Vp#kV z!vPgZ-C(0v$<8>f$^7_B;y=8w}Cv$Uu5pNG+DwdC|i2KA?Pll0B$$4UC0)M>K5 zH$6TXp(t}hBp@j6)I*3&(Kn-!QxMO6AOtej-aR}Sz%qSQ#AsxTodDKFx-eC*r#q+W z%jl=6fEZXS^iyd=h2BnISLg@$%{PVYgKc^s@!~B&!HQQCHXO?gy%m11$`6w96poj^ zFkPPq?nbn*`xU^E;R;ElJxA?P)cJ7gMB4GbNlRIeaqRM4KvBof)Wg|yY_%~ee0ag& zKG6HvqFIR8qm?HC3~yPh-%ba%=tgtAV-&mmg1!pR&$lG99SijUZXbR>^_1T?8BdcA z>)QlPC;@=@`>=kE;*&r53VP{-&-4?NpYZFXQLiKV$^Lio(A{oxvTzQD9M$JGb@7Nv z`^!=NC&5^BJfnz`f7CZ9wcPGw`>g=%n`8Q;!PAvP07>(k{$=In;!`%bzbu9@I>B)u zm~YGIa1XErjMp2nZ?qbc1OS6IoYiZh6>G3~e9vouH2IuUw6GLnz2t9wKSc z1j9TbItYCbK~)J?JC6(_sVLRR!7#CGO@!gzP-V^V!~mx)(3>#-fGY|10jv;0yXYNb z*bp@7|GgwjiZ%QauH&|*Y1M%TmJO}qyW|!uA=U7GSkM>{8>5~k!+A(!e2rZTd#IJ65Z;u4c-I&PQ+_AI4!{4e9~IwYjG@t;(Jejy8zw-QHp)MQx{6Lp znbc5@m6T5(*0zh`M4a-)1#EPBe*;7Z|2krkh#Ckywb)XMC;w-l;dqiyD)yrfCm6iJ zgM75G)KWvbIw-`S`)xRk3D%UsFuDJClHo{@$&|rlIw?{?8s9ve7@jswi2=R^Wbj#? zp+_iJK18>%>=_2Q1Oh|?cuETzW(bQXT0BLf^y?acR{H4bKF*zJxPx$0EbGNwoT2AkjExo}GNmVD@T_x0{$^ zLIY>p*ZaOg3h!KJcvx)|Y&IMsf*mg310WxO$m@g`WQ#T!?h0D##iMB0Q-*T?hwUEP zV#Te5(XLvhk$|i0xbc&`A$7AX2 zzsvB0;0aimjHs{+ImrWQYzM>ljq$}DS^R5;kzQc1kbEB;ZBRo*(1>G(zm)0@|85u_1hc%^VAvKEfMq1QL_VV^@AQED8?!Ep9+1;_YGC`$3Ep2GI7q0E9-V_4MT>iE+S5JU#dv zX2JScHJtEa#suZ+%dfan32v?7Wcl5&Ug>wyst1Jm>hmOnx>ZXBO$RAjLk(LTZrZWV z7EALlf>Y(C7?7m=Hp&JJ$2;~gPMeGWD1Tz=Alh&ZJCH^#NTh^60mT;Q#B&2JN9PQo zT~`gyd#643;cxgDu_-w*&f(ly-I}uRb41ea7+|*i&kF@@T??vW$-z&XG%*pOuZ>|1 z(iMc!eEqjU4tlt-Bj#T>e5B6KrkERsI_2eshZw6@JjEg4g0fcv)cD5@ILieZ787O= z?aMQ@qH~K7EK&76a6IE}SbZaJ8fF2u-pc5vc)RU1NomIPV3Eba#+%ZNbCidO^{G~8 z?5Vu24`L7J)aUvnmajMdrU^I&>F;Kejct~UQ@whaP!>Q>6GdCQp*w`Q^4X=LSfs;v zEht`zpq53bYT0v6V~#p#@0#l|&Qux`zXj2Hq7q*_5P$-(31#nsHLiMKN(6f&-Pi^; zv&Nn31D?mwOBu!%K`$#7;|`g|M-)(b^(*=aI+khd3X2A$y+_#Nby-F`rMk`fC>|u# zLPC&C$BxwU6WDf9bhNk>t)R<;73tf(dO$0P%{C$cPsjx!pzmp8+!@%xv?XBiBiViJ zjLl)QyZyUF)ACAVB+V^A>jDdoc%eTFj2X%cHB13D%EAa;D0S{?ToQ`+=}$Ym8XpkI zi>B`*lfU@0D6SHP{x{#u4`pFR-Hj6zXP_eG6MGx`1UZv_?TydH9kN=zRSW8l~bn%T#AT^R;Ku8UzHcJtN!jH`l-w2<)aS-<|q?&_FeFbrZ+ z1{(MHMXFkx&ZZX{FNAOq<0d5@{o5hNc0qj!xaqe|A6V_xh5~S41d|LiwrmOq&L3{v z+(hduWIZMrFEr8)xB>UUJB=GvluwDFEpEd$;TV@adcy3gt|JR!Ud`xOk};_uqvzP> zvV)4on=LeLsT33H&W0_dWiNAb9C!IaORB4y0T5}8hgx1YCUGLiooAfMtf9iFSNqNC zec0eCBR0(<5>JfP!_`KEe}+z_Dbvy2MJK?95BaueaMcvhD4_#?D@_ExxXzG;6FH9)M&!5t&bX8 z$=NM|yy9jt1qll(wmLvyE6b2p0+Cw^6)SjcwEFtr6T;}zoskjY-jX!uF=L?;_R3Yi z_<=Ak&MZ?9iM$$St~1^ta7W+_cm1ABR+ z+_0d`pFPbp2`ZfQ@e^W$R^ zlvh#m#wgbYO$@^Wm^WV=<~s??hMigKSii-xFVT-w;c5kW}$>)r?(KOyL;|28Zj#*;)(|LbV7j< zEFVet8t>88KjZ067gEuNOWPVXM3`>oJ#X9|q;Bvz$u_)T>=Wkam>NwZUN-jdKe;%v8#Huwd`_MSZyOi@V1N%qD zpF37~tty6X4`$citlv2! zfY1T|TBmnmwg102yZ(WnFe<%gQ4aYzOSa8W_HDTUq+Gra>`h991|R%6;6RN!zBT1wzFc14(g z61`*{$UKoI@Gts5qOe=R8J|LnqD)Wv2T^ciu*g5l(2nLI0O5$Yni6lC7OaMgL716j z`aDkAsPUv+{GXOaC7asDDnH;T#py9xf_0%q1oxYAA1oE8nA)KPel{_IHGu@6OUANy zQcb6V(M&5>fY)rnG(c=RNv3v`YczEX8sncD5$G(&IA8IZY%;Nbz4_yyR}b9hL&bDt zzuHXQZvoQI{oE8ut6Zl4DB5(s9UKGu6I~JNjvbW12oYN?%udh)JFsJJ)5M^aN35q$ zW|{5|YV%APK}^0jcVwSto7M(wek};FCUM@0DbTFlb@PixeO@LT; zFf|Y59f>3iiAnW8!tnP<2UF(&@W)2#&Zd3J6R>Ox+Oim$(#3R@N^(rUlIobLPtYok zj?1Iy&Zb=E$}^2@3gV!z`rzFMywf)A?hv$tR+*$6b<1{2 zcZgB$>5tH2@rM3U&i3^;#R=2SzcZ1rqT#0Sz{VSkLo&TL0uL2c`7E>%EOVr3hnhl0 zn?@&dcyV1-T}g$)I8#sxT5&dRwCP9;+gxsX4V(gO+*H$hs!;BqqPZ0&J2{TMUoL1bh z_NLCgP2banzJR6WT}h6lwTm$E{Il(`?3DflG;TEQ8-W!k;~qr*h>aMwGoxwKJ*Eal z2Ksx(j~7p(6}v5IEdM@JMkLFB)a2XH`C~wtflOrqMZ!&EHb5EwdZ8nkzIfd92=~yz zvc(pzHq8$L2{J6H??vL`Dq}R>WjeeK3)9V=NSd4WK3(`4Ys7-1rgkA+3kT3eZLEWe z>kL-$>&8)hYSDCnEBn%d&rJix`NN<4&iiLW2sDb@O$Wksh@%g`FzK8MxDPs0r7$gd z9osMfD5?b>-vYkK^#x`lU1)9sd-0bhC?B1cg0YatjkDF?;WGv;2ExiDNDsl^prP|W z;6?nD8bm*uUJe@L!f^A*G1C^XgrrIX*pttgHUtO#1zcwPPGekL*ayGfLXFNreV;RJ zRx~-G?|1ptgy`cfCNTc-kfo~U5!G{k3%>Aw?@Z$1|M;hbEU|>GrnkHRY?Mk2(a!Ho z$L~xs`wCs(W-3V{ z!^JZ}_ay|Ch9eOY`FWEr0*-KiysBo=@pS0BXmFJbAQnhpdt+-p9$z+lDw;ztea zUbC>P@Aa8!W?-rHmMK09_Ll3fm=j2S#PkpqK9`0_#t>sG+RqTBoOj-oK-T}NqDXh% zGzElIrg4fN!809EE!EQ#wXEQR>1!43&q&MVKn(CP@u1R-OQs5nPlSu}{Y$3RVrcO- zf`PFEnkJmZcd%uDnV#Y}=S7bL=2v_lxL`)KKnR#{y7_kFidBFs%4RBF3%F$U2QZ9S zKTQE?$Fp`1{amL{qGKEE&Y(Ggo-)z8>!wup_dllPD%C9dL2d4{>oc>)cT8`8lblGc z)#fd#Sqv9js~*|1GLhzOL1n^8(kIlMAWlsS1)}~yC~)gVVdf3|6bsRq4Wikyc}cxw z{gbBrTYWg{ZHRN7IM>ZFH?F*7cxO=eo3YYwL+*^;n=r=8nTo4(Z!uz<<9iDk&2V+nm&XPK&&9$ML|%sxZT*?&fpnfLFbH6 zFW`1sNG;P*1#SE-Z6L$)0Vmp+=iq9p1VshLuZX~fW1zXYgzjEo$OIUx>6h6^mJyKP5MtpJC2a1td(6os-ruBXEd45L3VZWiz;z?*fiZ zon?kE-@ob-f?x(x+(3hYTC_8J=V)2F$AT&`gYwr& zpa(c^GO`Oj&1)K|?)=Su>tn98c^k(qZuS9lB=Lsjpy?9_{AGysHOq9K|Igje3>~tc z`CgjZ-#m@~&q$a1o9n22fcasveQn7LQl|rMY@trWIiqLlLi2hp^skMh%$pkRMl^;Z zdTO+}JKY>@PKoV_*m!Rb^eF5pl*u3f`2I2G5ltsb&r#-BwqvZ>;-!}2TNCD3rB^r@0}5Wg78IJtp3~V`>H>4LI>4F0 z_AWA41n*b;t%z^h3VLF(xix*a*xV{r=1^9!zTzvQRPP>xdvq`CrlrnH%yzB!7lso9 zV)aC*qC$v$)}H^Ey*|#gr^Mc!T=@Ii9Z@UBvtS_N3@m3(nme-W z7tHpk|C@#kg2B*aW^c&{pfyOa34scYlKnoMbyxrzB6~%B? zBk}lSd(0En|A&tcV*?w^^HlY{fH96a?(jan@&YuDE^WZ9P{BLIPYg>N;^AtIddK{y z5-G&veE+qB*jMkHFNX#9P!64XU50|$9aIhl2hGb9|8E-mc~D>zp-WO|((2nhf#C^@LzIEz ztFpI(FH0hu`L!t_P@{)fmNa?W-gIf01r*@5m|&FBQVPAdeW0FTM8Yv zT1))Az>r7T?Jb?ib&sVkNa;k3{Ycj7UJI5F!K*AjUhQJbKqYGHrF$#}DjlMar^}0x z6C{AW6dw#d`7rHXV(CIxMp;^g31U)e*}|Dj-`@o&_!lhzJ^p-?If*hdY%Z!CZ3(9q z?^zRR)>6wF`f@8E*2N`J8oHigYfk@6v}_L(Q4N9^KU^FFdb*|5QW#;+RANi$MyX{V zUH`$HM)?b^5$ZmZV4ydcXxu{U5ZbZE5SFeO@O+)E?5>dr4;=_W+_j==;#3bO>;^f* z^v_}3*xSn1m0oBA{cPp-Yni^hGS}Lv`SL>~Gbdn{L zy0x)ArSZ0kGx_@)e6o$LCEZhJks<)rR$fSMYg<69tqp$gQQ*w%*BAQE#e<&Yl|kR2roLwC^kQ#m!9~t9rDSY^PF8 zk+q;uuW$pfr~Cxl!epd?_x=o@hU85%rn#x1P&X97S~-*zFSAfkY~CHqEprs>$qu8V zH_KdM`6k4VLlJcUVDj2xxk>vCxVh+I3s#IKg9|dO55-@Hb)&jfT6TRuOE$}V)KVMa zvpjEl!m=f@iAWSei$Q2TA3XIr15QW=Y;=MG$0wd<)3L3V8Mk?AU-s%Y%N%XMg+(n^ zSfbb?uUh^aEN!`Jtzh(`-n7hD)HFUT7#e;lBsg+B+&Y_{*>Ab3%uj@N=1_H^)Mc0g)?a_{WyS`j0Jb>z{&61E(Fd zBNfzLIDJ3;xh+QLpUT%F1T?o2ac0*`E&Kmv%0>lY=EXQm_1)!87a5ejiF@glR<{0u zX-baPNJt`Pt$&8nSFKTGR4oXZF*A>d2^i_GjeIk(heko@i>GP**V9>gI~zRF8)m^) zgrN*XWqH(z`9 zp2`YJq3U;1!hAFMhY;&mK{^A2&ahoYFHeQdWMO?$SSs>AAU6~8NS9+Ab>qgcfoKzr zinPi$MY4+(=US`oYP`+W$@FCu7EQ5``X*{~ zsy-~eL)9I1chINL$dRGGaa>NURr0Q*zV&ehwFV3(wH5E=^=KQJ~kXC57;u0uy{2Bp9=?pQfmWe2?ylMi3)Kv9$hHlM z&7)u_SHhms$5O(b22-rRC@-fJat0ORKy%(2Az$Dk;e7m~MFVI-woT7FE{>kbh9|0P zwyjGjZyCQZC(t14A7EiKw6w(;yiXqMt+RP^|BLW+9#(p2p;bfAUjfa?!VDA0t`}Mj zbmHT*)B!#vgll}Y={%oU3vG4_?Px7u+xz3B$M+UmH-A~gWL5!$P&=>+gS&Dv-V5=n z%4=iYot|h+*J{&wD@11DF=c7lwE7c7#eCBj;Os_{E1On6oxF(_Bw0V9%2}2%R5%PA zjNc?%uhIj35c=_8jKxalb=KCm)sMx(J9ezK^|ObJAZ|KlvaX;XcOj~;K?~B17Xap@ zu0^IKHrZl*FQhRGiJ9|q#ehQ@tJ!)xte`jYtoN~chZR%$NE@q->DyXQ!nT`lz2skB zTQC?N9#P*aBXzym;qKOL>f0rd5S$|~^|Br@-X?#95(m%wj5CwG+uQoqZR9MNKGzuq zqfQsrx34uHlalwDAftl88nb1kE{Doz1e&tpGTeNqp9a7n352YJlVUN4M&ibmqTl%pb zGpsNj36U>!7T}K}Kq_TTr$HZ?ER-|bI`lU0)tjtGQ^M)+D1F4MbF5=D-VF-F24#?% z-gzY~nDpU|9Y`v0ZjrU0Absd~k9D+)8W!0LDL*WwHQTe++8--lL+THd{a?`Z?^|ch z2(VcCnTA8@<@Ht%{g|2xTel-sPyGi;CCvoVo%86ve;)4sdGz4^r^>tIFJD)tyRh+o9&C3dUtK4pD4 zV0$6hUOJF@B=UHH@+g{}d)j(E*vKSE#ky~?u2)^$K=6XE}Fr-wI^XOn=ELiwKj$?`V=) z$xBu+O282}oObNhZTIILh^Dh2Tki~5m-&F}OFKWY)(6?LK#o0@WgWB*gU-A&QD5K9 z9u~qgK@=ysMo`v96W^5DHcA{xfA~{tvMP_NpEkMFoe-yg((dv`qt1pDp|{paM)vL@ z>!%T+JhK!HIs#93h8_$%-ina{^l4dQ(l=Hlg$b;7KICo~oAZMeGD1-=I;Hfc-+#my zX=K}1OxC0;PX@!*G3&t~a!rP8ZvgQH>h*DC+v(9$)*3qY5S)u5P9T6Y5Mu~|%@Kqw zZgFhK&sMOyHcCzh-rek$DaB+uXN{)0R#W7zfzm!NKfQ>lsSc4|SH8YjweJm;K+u;} z>IkFU2+6FSQ(jh43W~p~Dk_PPjI>276)LR|_%*>RGO9)&rC8X6y%jvT0dlSk4hcqt z4d;^rd3!jC!egVQO2jAw$#G{4cI_LQ!C93x5?6P}NW&>B0r?J^#Ug}8WTg|)LtxWR zVK-tWq}oLAI+95>LTJto(nj@qX=YF_!j9ULPV4cMx6h^|A>wO5O0q|=lw~P4a6#?P z?clJWaz@sY2@?e$YiZde81%bi;S44#6Ljr@@0hd0x4g9q7>v8S|6f!B_pzXupJtNE zl`j&okRxdHe#(E|9LA2DrMIF3dN>1E7|2IXo!Qhg<=wUUVzmGY2Gmwcqt=Z9HbWGWFHSdlbdjS&0sUExdcQMk4v#87JK z@@l{tAc~O1agTK(bm9>}m|UnsW}(`5t*?`*owSss-NtXp+8sLahTcfF9`I%XsVtJE zgi=-?$qU&E2mqfGSg@}*r}$mwPh3+ z`*?rYi~&-zNSgI7SL{b{y5o|jQ>f!`>9}_te4l4KoO2z(aNc57EhzD5I53%oeZiWi;LoZb<9a@P|Tl774WIHy>F{ax% zobMjz$;z7NNWYsBw#Y4L;T~keK}a)_J#9s{jrg~W8Y)6wJzDv&jd!VEK&!Udqk&giun$4$V>u*ce+Afj<8!5O`g95=VZ&sEAjQ25 zl-1N_$;i@nmpzuoJtb>+xps7D6Li1a2au3tgI$WJSGP)Wl$fWoP{n0qBx}A~3iZJ! zpUv8XYeHGYJQ_@^4oKI6)O@H-hy_c7QgMBbBf2sA*ypoLp>s~`k3Rks3)AC0L8zYf z-$(=H9)f_l(LO$$!v0KzCuk=wRC`RJj1EcQt_m#TJXD&}k4Rp}pg;hOzY4W(&`}9F zK5ntdw`JyxCFoa?F=2T z|8-FGXkdmb*pibHg0%zUhF1ZAXf$0sFRfQv(Zp@<>lj7gvD%9g&}o4R0`h9eW$El~ zYw*V{P;oXE`6us7Nn)i}q^WUD`i-S)Y^%IMElnCB_5d$O*tQ0geg?zJrf@F6`mqHG zHd*E0J@ldLiMBN=iRzPVxk_Zlwl45DD`pdAgVfSP2@Rm(%GahuAaka2vQ^N@DBnp> z>vY=K*PN=(%cbyS+oIdPBHFiR49V4QA$A z@J{gzd3={n(+|Lgbv?y~0NtgD$Xu(lMOvEPJFsfNjEcH)zK6!GG%n9%qr7u5VX;jv ztXhXq18}}|p~n|HowV{8wA($~6C)|_J9~_xj3M4Nl$NL2I)({b0ojrfvW;n-MDtIW z-~=<+o}m1hh_m|VS-aj`4a)IyWSUM?_gWDa3>ga4kkc2M0GbHWAwQg zO>E;=B{WM<3l}+JIqj@jNg`6Q7rCP!S_uh(wqf7NXV+J0HaSYz4LHmb>1cLZ9myKS zB0vc;e7z6uFd&h^M9_1!*4x@qX`-ax36nNl2YYfntc49m zn?XhAjwNb1Z^Urg^b_LUMOYJXar>{<*MqkN|+$JiYz#FU~Z6Ficnn1lYw|n zvkjS`c_b8v)+NFq(xf^ zNaPN`#+A~>tH`C6J=v37@3cg9``W<8~+iGbSOwM)NV^$0?oSvR1ZaKpwEP#0mn47LfC6cq!zL8EDFRE zzBsoXwtN_*!CTC>X5`)g-kv8-w${{tAK*(u5v@LDjHed|Cs{)ATIICiT~l)Xvk0YH z`4l$aomXKAiT}cGruvCeqF3`FXg(Ht;%nH_Gui_7Fn*@HE9G~Cwdlo5(sw-mBb%<; zZS8}Es}S(Z95zyf4s6)nDS#p8${<53o_k?8c7a+ODL3$y-L@_v7&fFDk(4SB$w-75 z$Qch_9TQZ)9nO;dpw=ejkOEQOG_2dvnv6fH>(6Cw}R zTTY=xpQ+Mh>beQui|Fe}=q)Y6E+~J1Ej>&m{GgbDwl=rclD`%^f%rl&vK~>TA>!wx zF(F2ou@bT(BSjarG$3YnM zf)ok9|7Y)2+kn>)+XSIgEgud4U}~Lhr58ipBe`vTo-Hz5$q`dV@vEGz!o(8HoHK0o z*wJb1R_ao3ON#JksvT5sGjcL2CCfuPy|BbKi;i7_HobCCQYd?HzU^S>?e2SMwapkK z?weFnQOn^Eq?!RB(Y|MFNHBSitvuv*cO87frW1C_hnLs}M2VaY-Ug~3w!vn4`v!It zw>(g9gKOzFCD4?Pk^ZL8L-p_^E(pgMtG?GZzy23EPZ~-Psc1`MK9oN|qqS%P0+d><*VVUI_iP`=aY(s(qB?&oJ!f5&q zTOG^aY5T&{BzU>Wc_OZke)QxDe`*6>Vr z3IpA(G#X{TdqswCUY^$xxKYWmqUei24-71uCF=7iv98dA;HfAC!KS#A2QrAUgHJm@ zs1iKgS02A;%NBtZDf*gvQ~o zY{}R`kNVQKC{(ybaMlnrxTJD&nFrcgtMtwiFZc>O^|h^oimntQgBS;?(WWi7BuaME{vuw4wIwdaW?;kE!V12g_)YvtXJG#-gs z8I1M4Y7hZjEATor{4`AXZ_TwBSXuI>V^qmj0>)G8Jd$L-iOfGsW!k!db z0B0UQO39M)1VfpK=_wH?o1Tc>=c}Oysc_^8O-`{+k@mZ^p#ruw{ft&G;7{ymlD#UF zdV-YD2wfV9MapeRvfq~GQCtD-UJk3bXPn3Ov)T!*D!N?JK&|&-5|)^2(R7Z*hC(vSMu&(b5Gr0RWUVq_u> zP9WB#Q3wo!#cxq^OWHRB$urvwus08kQsSvbUma*icKN_a6)U@Igq0tAT8X7ukPfYUd-Igv=x~KS7?3BT z%{ET6BQrhE@p@~9P{ztIAMVR~17eC#$?}gc*XPrG5Yl2DDg%!=P_X+XZM<1VU z9}_rqGTj{euAm90d|uZA`(4T-gj?_L1$Mi5eFpPL-%y&fIu_`q2a|@tef4hCq7{9%HbIh;(2`R58aI>W$}_2aDK^rS|6(1QiAv(-c<#VNy&LnfBSw{&T-w z6GZMaZl(PxudN@smuc)OyNkLHvDmpM5?IJpb_adF%6?AyV%(yl0{79{C^L!i4Wb`0 zzSjhXHVJI!&PVMZhEVuw``nODuuT^jkm56YZDJ^UVYNL|MTa*U-l7dZ!S%QGSx4+6 zKkQ4SEzj7o!}3ctF;ryLY!eL6ubO&h#%^ z#Vw>_gv`+1J$93-SV=h%zt?`oeydmAe~&lE6~D(odHd||G{3bl-^e39Q&mlXs9RYg zY2iM5DqFeVo~UNI@7TW%V^{k|Vl$0de@;zo}vy=8@ ziu>N4Q@wVVVRn}${nL{sr>_eJ9o>H6IYS2De6K_q$A>_@UtmQ#EwB z1{olVgL6}6QG?YMNeivcLA)>=H;1f1x84aEYM7RsK);!6h-qGKLVAcbb|V$VrR}ET z$6Q*r?W!I8<4s1;kZbleVgz9&_X--{fa_)dDccmP zawLh2IdCQ|N{(X1X^tFU_H!PJa>eMF7i7Rx=ee8Oam6a#&*JE=a~<6k9CTiuqj%8r#VZ`n za}100O3e-Z90hc)4>A)^?c-?Y4Y_1EyA^ts#rPQwoQOv>?qc@EL`R6%VlCFDHf0W} zseK%>bq0%_#1PxBF=|=< zFh{7bLw`5)peKgIb0IoZv7--nJQ*6w4SaNHw8KO%j>aJ7KN)_`Ro(6iJv7$g^-l{$ zuKzg4AaB7P#SQ?y#yh@Ns=!agel~Jf7g79j*txdq9eouu&(=yu$AG_4Sz!iM;i^cx zD;Sa>y(5TKIpPI}ib%V=p#{i0_Rj=?U0w?;pklo6aURjFu%LgBA>Dc?PI;e?Fp{P$ zhJ69ru7xfT-~hdDf^jrtx}%UXUjwa5{1{Yz%z_Z|J&S>>8E_O2y!i&`B>!1#-KP9} zb%}K%^;`mT?6DHKFIy}{LZ0ytTBB&4)27v=^MT@_=bW&tRORCO-S=BN()Y{osCx&c zCV+b-GOTR+48UMFCc~;!v>#!vN2fc|=zTe*6>a!FRZGA9$Li52>FAhgxz(kjo-ZM| ze=ntcJD*=vsgwD{FZ=tyn9LyENGoHTQUT*J3GNDmeIpu?>m3!_zLr0%?Oo$j$DS#Og<-P#fAlzV3Q2Wuo7aUPa3ot2$u~yq1j!`Z?BGid_yg|019^>w)C9q=6jI;L*rI+FqBVT;>vpi=0c`PWjtQWX-R;m&hmS*} z>FYNg(bg8;9sks_Ikh5ywzjSW3`;Pq3S&Nf_B!ICagUJ|z2TT0;_c7Psg=}cFQ+@b zeP+)6%7+v2WtaCk76bM=msFoR#*pC?zEFJP7~(y%gZ+BIF{Vk@gGjpC8#vp0k2)0d z(C(v-)DW6kC3mG8C(>hR?_qqV3p+jW^iccg1e*4eCki=KG?e9bTRC4YBIOHU%;a%! zEb?o|w_)wZR7w(T<&(-McjAY|#r8}DwpMfRc1dMvr%rWMLqr}L(FG`#p6M%9K_p4m7>r3dQfOM1mkCXOBmzv!&P$`*+9UIjw@ui6J74LIC6j+65yLj|W8` zxRpLJ=HzH^-*Mhfi$DRb=(CpJV9H+V;W4OX7|+f_@a`})i;F`lmnq!Ek(pJ4?yjW_ zmE4_%G&oXqQt@075IkS%GFRrs=I0iV2iO_h&5pD%0H?60ou&p1sHL%)PLrO=fzV(9 zXja5;Pi`g(46dykR##q8%SQo@5pWb>`2@{}_okia97gJY0n}#u&#JIh`32KxXoDk3 zhdP?gDyiWPI3zlS%W+}}>;cWN2ApvW=S9Hi`l~~q>_)+1wPg~p!#wYISxIT8n-=`) z=%Q&YdXfg=g;aK!&}FM=T~ct(HRZKa=QNXO&S@;_<220@BO5g>hlV#e60EobxD1Tn z8A`TQsY-B_)?(1xVWFo%%RFf``MjfCJRls!GbG>$e>@MBf_F#+&PX^jmo_er)vM>* zDW;d(z+Zbx2xmMgY;fo_N*OwM!O>A&RY}no9oZD$3uJS=2H(}UFFNXQm36t~$W?JV zUv1dTk_zM+7OC`B{_f}y6*K|q;O~ys&Y%;)Gg92AOh^bNGF^5UQ~lc;tmm-Y2r3Pb ztMT^nx8m>8N5`SKHG!w0MdG8qt)Qh*zBplU17bveOE6qgb zao48!MB$<@@#DYO9S^E1Y32<_zP6HkR74@lx#}1y3R+NU5ds;wz~JMSiwO+U3VfT2 z`9KwnOlj7N%KmaZz?+ab0wWm(Fp!l|J_IsluFUVlQIU6KOQInHo8M@{)hH~=jpm^; zZacG&t~oMQ;X|rs)J!as=+D0$G7WBUq{O0ih|@zvnQ$Pn1q}|Tie4JzNe(Yg_Y`L~ z%cK9Cz>xpwxMLc7`-Ee<#?w78FW~+4|I=#c22UCE%-UZZ^T~6@(IT~~QmQPQT_;T| zxwEQ9;znplE{KIQjsn1qK0o7lU!@<$owmq%#5^r{fX2 zavfWS+Ya2al)>JC8mJ}%AK>S!jy5Xnga2~uvty7+nL@_ni@aIDO zXZpvyG^@O#LMp2i>m^cKVfFP2?c!oli1#zaq@|~g593w`gVxfYBW^D(1Yjy`}286Z**c9&*GI`1jUs7itH^N`kEzXMh?=$Y&G2p8v z&gW|hNc{|yRi2Kp*c*<`ni-W7u{P7De;k=bemgZ5S8j411FOk+5d!6rOJHvf{yjk` zT>pP8rXg5N*#kEnU#RiH#;fHi^p#p}9fhwn1G-MlocUVTHbkyaM`dP8Wi>TbHJv(X z=|Gq~h%z*C7n-AyzsAfQ6fVD^vZ2UCBudYizyonRb&^WUCr#3F=rP_Ohp4J3Qa&F} zxe0O|+nFH8sVS{Jte{7e9QhB5&XXTX^KnCs=N@^^>^WXMfIXBa>(vpytL)hVd9a$~?s7e) zdgL@(^_?!64s@4$@b?-;>w3uj!zRwCshC6YJ>)j@OAq-sYTrxFVo&sv3)M8UnHv;Vt@3LN2oeXLbx;!{K7Z`HWO4i026E7{u8ynGbNlQrvxQhXx$|USE6&} zl5GLc3(3!jk*OS1A+0e#qhLRkL)7j+7?0%_bp77n90n@NmsasJoO(w5h3nY&w|tT~ zszeYnFEJbOhowAT$~~!k0fGgUBOFxB5rve zSJjD!D-YyaLK#<>#k0yQCsxcT6>ah!j<2emILdp1?|UYeRf&dr^)ufObnhe#7XEON zD3c%X1;2DW!mPzQ>^mdAx%g2w%T22`>r)4yZ1t4t@sJn%JU`^9DRB&SUG$+hS($PU zX%Htue-uANN)CPm%vEVsB}T;-S#B04vSiVqZgN^be9v-GM_rBRIzIX^6e_q$OzVbU z()(w8Mai@Yr6s;!{@ZxYD-`5Z2J~hR8F-Tc@-@0|pqxxwhRZhg_&^!>M%`d}8gz=N-|GlB|P!;`?g(=*8h-{+V0f5rp z-5(RJ)o^(h`*^q<7DX+_xuapOflgmkikU?ZLV8FeFyZ5uf#>5$OHA|JW%AiqOXbf& zZqgPJYZVSig6gSqF&&*MPeH0_xkyEFCFb^uO1U#V|DfCffD$>3erqnjNrxuNEm&f; zd=DV_W8_*EGg}4#>6J?%NhHmdM={G>IW~m87%l(E(iX@s1F^zOHM?I1o

4+XM0# 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 diff --git a/tools/phpunit.phar b/tools/phpunit.phar index cab0e20..8d1aedb 100755 --- a/tools/phpunit.phar +++ b/tools/phpunit.phar @@ -19,7 +19,7 @@ if (version_compare('7.3.0', PHP_VERSION, '>')) { fwrite( STDERR, sprintf( - 'PHPUnit 9.5.28 by Sebastian Bergmann and contributors.' . PHP_EOL . PHP_EOL . + 'PHPUnit 9.6.13 by Sebastian Bergmann and contributors.' . PHP_EOL . PHP_EOL . 'This version of PHPUnit requires PHP >= 7.3.' . PHP_EOL . 'You are using PHP %s (%s).' . PHP_EOL, PHP_VERSION, @@ -30,22 +30,31 @@ if (version_compare('7.3.0', PHP_VERSION, '>')) { die(1); } -foreach (['dom', 'json', 'libxml', 'mbstring', 'tokenizer', 'xml', 'xmlwriter'] as $extension) { - if (extension_loaded($extension)) { - continue; +$requiredExtensions = ['dom', 'json', 'libxml', 'mbstring', 'tokenizer', 'xml', 'xmlwriter']; + +$unavailableExtensions = array_filter( + $requiredExtensions, + static function ($extension) { + return !extension_loaded($extension); } +); +if ([] !== $unavailableExtensions) { fwrite( STDERR, sprintf( - 'PHPUnit requires the "%s" extension.' . PHP_EOL, - $extension + 'PHPUnit requires the "%s" extensions, but the "%s" %s not available.' . PHP_EOL, + implode('", "', $requiredExtensions), + implode('", "', $unavailableExtensions), + count($unavailableExtensions) === 1 ? 'extension is' : 'extensions are' ) ); die(1); } +unset($requiredExtensions, $unavailableExtensions); + if (__FILE__ === realpath($_SERVER['SCRIPT_NAME'])) { $execute = true; } else { @@ -67,9 +76,9 @@ if (isset($options['manifest'])) { unset($options); define('__PHPUNIT_PHAR__', str_replace(DIRECTORY_SEPARATOR, '/', __FILE__)); -define('__PHPUNIT_PHAR_ROOT__', 'phar://phpunit-9.5.28.phar'); +define('__PHPUNIT_PHAR_ROOT__', 'phar://phpunit-9.6.13.phar'); -Phar::mapPhar('phpunit-9.5.28.phar'); +Phar::mapPhar('phpunit-9.6.13.phar'); spl_autoload_register( function ($class) { @@ -79,6 +88,7 @@ spl_autoload_register( $classes = ['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy.php', 'PHPUnit\\DeepCopy\\Exception\\CloneException' => '/myclabs-deep-copy/DeepCopy/Exception/CloneException.php', 'PHPUnit\\DeepCopy\\Exception\\PropertyException' => '/myclabs-deep-copy/DeepCopy/Exception/PropertyException.php', + 'PHPUnit\\DeepCopy\\Filter\\ChainableFilter' => '/myclabs-deep-copy/DeepCopy/Filter/ChainableFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', @@ -156,6 +166,7 @@ spl_autoload_register( 'PHPUnit\\Framework\\Constraint\\LogicalXor' => '/phpunit/Framework/Constraint/Operator/LogicalXor.php', 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => '/phpunit/Framework/Constraint/Object/ObjectEquals.php', 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => '/phpunit/Framework/Constraint/Object/ObjectHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\ObjectHasProperty' => '/phpunit/Framework/Constraint/Object/ObjectHasProperty.php', 'PHPUnit\\Framework\\Constraint\\Operator' => '/phpunit/Framework/Constraint/Operator/Operator.php', 'PHPUnit\\Framework\\Constraint\\RegularExpression' => '/phpunit/Framework/Constraint/String/RegularExpression.php', 'PHPUnit\\Framework\\Constraint\\SameSize' => '/phpunit/Framework/Constraint/Cardinality/SameSize.php', @@ -396,6 +407,7 @@ spl_autoload_register( 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php', + 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', @@ -906,8 +918,8 @@ spl_autoload_register( 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrator.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistIncludesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistIncludesToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => '/phpunit/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php', 'PHPUnit\\TextUI\\XmlConfiguration\\Php' => '/phpunit/TextUI/XmlConfiguration/PHP/Php.php', 'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => '/phpunit/TextUI/XmlConfiguration/PHP/PhpHandler.php', @@ -1103,6 +1115,7 @@ spl_autoload_register( 'Prophecy\\Call\\CallCenter' => '/phpspec-prophecy/Prophecy/Call/CallCenter.php', 'Prophecy\\Comparator\\ClosureComparator' => '/phpspec-prophecy/Prophecy/Comparator/ClosureComparator.php', 'Prophecy\\Comparator\\Factory' => '/phpspec-prophecy/Prophecy/Comparator/Factory.php', + 'Prophecy\\Comparator\\FactoryProvider' => '/phpspec-prophecy/Prophecy/Comparator/FactoryProvider.php', 'Prophecy\\Comparator\\ProphecyComparator' => '/phpspec-prophecy/Prophecy/Comparator/ProphecyComparator.php', 'Prophecy\\Doubler\\CachedDoubler' => '/phpspec-prophecy/Prophecy/Doubler/CachedDoubler.php', 'Prophecy\\Doubler\\ClassPatch\\ClassPatchInterface' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php', @@ -1152,7 +1165,6 @@ spl_autoload_register( 'Prophecy\\Exception\\Prophecy\\ProphecyException' => '/phpspec-prophecy/Prophecy/Exception/Prophecy/ProphecyException.php', 'Prophecy\\PhpDocumentor\\ClassAndInterfaceTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php', 'Prophecy\\PhpDocumentor\\ClassTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/ClassTagRetriever.php', - 'Prophecy\\PhpDocumentor\\LegacyClassTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php', 'Prophecy\\PhpDocumentor\\MethodTagRetrieverInterface' => '/phpspec-prophecy/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php', 'Prophecy\\Prediction\\CallPrediction' => '/phpspec-prophecy/Prophecy/Prediction/CallPrediction.php', 'Prophecy\\Prediction\\CallTimesPrediction' => '/phpspec-prophecy/Prophecy/Prediction/CallTimesPrediction.php', @@ -1176,7 +1188,7 @@ spl_autoload_register( } if (isset($classes[$class])) { - require_once 'phar://phpunit-9.5.28.phar' . $classes[$class]; + require_once 'phar://phpunit-9.6.13.phar' . $classes[$class]; } }, true, @@ -1186,6 +1198,7 @@ spl_autoload_register( foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy.php', 'PHPUnit\\DeepCopy\\Exception\\CloneException' => '/myclabs-deep-copy/DeepCopy/Exception/CloneException.php', 'PHPUnit\\DeepCopy\\Exception\\PropertyException' => '/myclabs-deep-copy/DeepCopy/Exception/PropertyException.php', + 'PHPUnit\\DeepCopy\\Filter\\ChainableFilter' => '/myclabs-deep-copy/DeepCopy/Filter/ChainableFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineCollectionFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineEmptyCollectionFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php', 'PHPUnit\\DeepCopy\\Filter\\Doctrine\\DoctrineProxyFilter' => '/myclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php', @@ -1263,6 +1276,7 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'PHPUnit\\Framework\\Constraint\\LogicalXor' => '/phpunit/Framework/Constraint/Operator/LogicalXor.php', 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => '/phpunit/Framework/Constraint/Object/ObjectEquals.php', 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => '/phpunit/Framework/Constraint/Object/ObjectHasAttribute.php', + 'PHPUnit\\Framework\\Constraint\\ObjectHasProperty' => '/phpunit/Framework/Constraint/Object/ObjectHasProperty.php', 'PHPUnit\\Framework\\Constraint\\Operator' => '/phpunit/Framework/Constraint/Operator/Operator.php', 'PHPUnit\\Framework\\Constraint\\RegularExpression' => '/phpunit/Framework/Constraint/String/RegularExpression.php', 'PHPUnit\\Framework\\Constraint\\SameSize' => '/phpunit/Framework/Constraint/Cardinality/SameSize.php', @@ -1503,6 +1517,7 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php', + 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', 'PHPUnit\\PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => '/nikic-php-parser/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', @@ -2013,8 +2028,8 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrator.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php', - 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php', + 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistIncludesToCoverage' => '/phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistIncludesToCoverage.php', 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => '/phpunit/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php', 'PHPUnit\\TextUI\\XmlConfiguration\\Php' => '/phpunit/TextUI/XmlConfiguration/PHP/Php.php', 'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => '/phpunit/TextUI/XmlConfiguration/PHP/PhpHandler.php', @@ -2210,6 +2225,7 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'Prophecy\\Call\\CallCenter' => '/phpspec-prophecy/Prophecy/Call/CallCenter.php', 'Prophecy\\Comparator\\ClosureComparator' => '/phpspec-prophecy/Prophecy/Comparator/ClosureComparator.php', 'Prophecy\\Comparator\\Factory' => '/phpspec-prophecy/Prophecy/Comparator/Factory.php', + 'Prophecy\\Comparator\\FactoryProvider' => '/phpspec-prophecy/Prophecy/Comparator/FactoryProvider.php', 'Prophecy\\Comparator\\ProphecyComparator' => '/phpspec-prophecy/Prophecy/Comparator/ProphecyComparator.php', 'Prophecy\\Doubler\\CachedDoubler' => '/phpspec-prophecy/Prophecy/Doubler/CachedDoubler.php', 'Prophecy\\Doubler\\ClassPatch\\ClassPatchInterface' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php', @@ -2259,7 +2275,6 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'Prophecy\\Exception\\Prophecy\\ProphecyException' => '/phpspec-prophecy/Prophecy/Exception/Prophecy/ProphecyException.php', 'Prophecy\\PhpDocumentor\\ClassAndInterfaceTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php', 'Prophecy\\PhpDocumentor\\ClassTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/ClassTagRetriever.php', - 'Prophecy\\PhpDocumentor\\LegacyClassTagRetriever' => '/phpspec-prophecy/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php', 'Prophecy\\PhpDocumentor\\MethodTagRetrieverInterface' => '/phpspec-prophecy/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php', 'Prophecy\\Prediction\\CallPrediction' => '/phpspec-prophecy/Prophecy/Prediction/CallPrediction.php', 'Prophecy\\Prediction\\CallTimesPrediction' => '/phpspec-prophecy/Prophecy/Prediction/CallTimesPrediction.php', @@ -2280,7 +2295,7 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy 'Prophecy\\Prophet' => '/phpspec-prophecy/Prophecy/Prophet.php', 'Prophecy\\Util\\ExportUtil' => '/phpspec-prophecy/Prophecy/Util/ExportUtil.php', 'Prophecy\\Util\\StringUtil' => '/phpspec-prophecy/Prophecy/Util/StringUtil.php'] as $file) { - require_once 'phar://phpunit-9.5.28.phar' . $file; + require_once 'phar://phpunit-9.6.13.phar' . $file; } require __PHPUNIT_PHAR_ROOT__ . '/phpunit/Framework/Assert/Functions.php'; @@ -2304,99 +2319,104 @@ if ($execute) { } __HALT_COMPILER(); ?> -jphpunit-9.5.28.pharLdoctrine-instantiator/Doctrine/Instantiator/Exception/ExceptionInterface.phpcbRdoctrine-instantiator/Doctrine/Instantiator/Exception/InvalidArgumentException.phpcRdoctrine-instantiator/Doctrine/Instantiator/Exception/UnexpectedValueException.php:c:_Y%[<doctrine-instantiator/Doctrine/Instantiator/Instantiator.phpc87Edoctrine-instantiator/Doctrine/Instantiator/InstantiatorInterface.php c LȤdoctrine-instantiator/LICENSE$c$ -͂ manifest.txtc:?'myclabs-deep-copy/DeepCopy/DeepCopy.php>c>ʼY7myclabs-deep-copy/DeepCopy/Exception/CloneException.phpc {ˤ:myclabs-deep-copy/DeepCopy/Exception/PropertyException.phpc3GzGmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php -c -DgLmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.phpc)$Bmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.phpc),myclabs-deep-copy/DeepCopy/Filter/Filter.phpdcdM0myclabs-deep-copy/DeepCopy/Filter/KeepFilter.phpcYn3myclabs-deep-copy/DeepCopy/Filter/ReplaceFilter.phpc3myclabs-deep-copy/DeepCopy/Filter/SetNullFilter.phpc䊉Dmyclabs-deep-copy/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.phpcpr.myclabs-deep-copy/DeepCopy/Matcher/Matcher.phpc6myclabs-deep-copy/DeepCopy/Matcher/PropertyMatcher.phpc=Bv:myclabs-deep-copy/DeepCopy/Matcher/PropertyNameMatcher.phpcR:myclabs-deep-copy/DeepCopy/Matcher/PropertyTypeMatcher.php2c2ZQͤ:myclabs-deep-copy/DeepCopy/Reflection/ReflectionHelper.php5c5ىAmyclabs-deep-copy/DeepCopy/TypeFilter/Date/DateIntervalFilter.phpcƤ7myclabs-deep-copy/DeepCopy/TypeFilter/ReplaceFilter.phpcz;myclabs-deep-copy/DeepCopy/TypeFilter/ShallowCopyFilter.phpcؤ?myclabs-deep-copy/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.phpc^Amyclabs-deep-copy/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.phpcv|Gmyclabs-deep-copy/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.phpcT+4myclabs-deep-copy/DeepCopy/TypeFilter/TypeFilter.phpcVD6myclabs-deep-copy/DeepCopy/TypeMatcher/TypeMatcher.phpcQBŤ(myclabs-deep-copy/DeepCopy/deep_copy.phpcrxmyclabs-deep-copy/LICENSE5c5ʭ˄nikic-php-parser/LICENSEc*&nikic-php-parser/PhpParser/Builder.phpc61nikic-php-parser/PhpParser/Builder/ClassConst.phpm cm z-nikic-php-parser/PhpParser/Builder/Class_.phpcc32nikic-php-parser/PhpParser/Builder/Declaration.phpcE7/nikic-php-parser/PhpParser/Builder/EnumCase.php^c^ɤ,nikic-php-parser/PhpParser/Builder/Enum_.php c #3nikic-php-parser/PhpParser/Builder/FunctionLike.phpcZqe0nikic-php-parser/PhpParser/Builder/Function_.phpFcFux1nikic-php-parser/PhpParser/Builder/Interface_.php c -nikic-php-parser/PhpParser/Builder/Method.phpc}1nikic-php-parser/PhpParser/Builder/Namespace_.php:c:ˆp,nikic-php-parser/PhpParser/Builder/Param.php c ֤/nikic-php-parser/PhpParser/Builder/Property.php|c|O /nikic-php-parser/PhpParser/Builder/TraitUse.phpWcWL@9nikic-php-parser/PhpParser/Builder/TraitUseAdaptation.phpcUVx-nikic-php-parser/PhpParser/Builder/Trait_.phpckj+nikic-php-parser/PhpParser/Builder/Use_.phpcs-nikic-php-parser/PhpParser/BuilderFactory.php+c+޶-nikic-php-parser/PhpParser/BuilderHelpers.php$c$:@&nikic-php-parser/PhpParser/Comment.phpcA*nikic-php-parser/PhpParser/Comment/Doc.phpxcxp;nikic-php-parser/PhpParser/ConstExprEvaluationException.php_c_I 1nikic-php-parser/PhpParser/ConstExprEvaluator.phpl%cl%evQ$nikic-php-parser/PhpParser/Error.phpcQZ+nikic-php-parser/PhpParser/ErrorHandler.php/c/#\6nikic-php-parser/PhpParser/ErrorHandler/Collecting.phpc&Ȥ4nikic-php-parser/PhpParser/ErrorHandler/Throwing.phpcS}<0nikic-php-parser/PhpParser/Internal/DiffElem.php7c7$.nikic-php-parser/PhpParser/Internal/Differ.php-c-^Anikic-php-parser/PhpParser/Internal/PrintableNewAnonClassNode.php$c$'c3nikic-php-parser/PhpParser/Internal/TokenStream.php#c#f*nikic-php-parser/PhpParser/JsonDecoder.php c xg$nikic-php-parser/PhpParser/Lexer.phpyZcyZq⃤.nikic-php-parser/PhpParser/Lexer/Emulative.php"c"3= Dnikic-php-parser/PhpParser/Lexer/TokenEmulator/AttributeEmulator.phpcrLnikic-php-parser/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php c *§oDnikic-php-parser/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.phpcLFHnikic-php-parser/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.phpc*#Lnikic-php-parser/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.phpn cn 1Bnikic-php-parser/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.phpcjBnikic-php-parser/PhpParser/Lexer/TokenEmulator/KeywordEmulator.phpc`atEnikic-php-parser/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.phpcc/Hnikic-php-parser/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.phpc:&ERnikic-php-parser/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.phpVcVHnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.phpLcL -`9JBnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReverseEmulator.phpcI}@nikic-php-parser/PhpParser/Lexer/TokenEmulator/TokenEmulator.phpucuD4h*nikic-php-parser/PhpParser/NameContext.php%c%G-#nikic-php-parser/PhpParser/Node.phpcyݗ'nikic-php-parser/PhpParser/Node/Arg.php0c0q H-nikic-php-parser/PhpParser/Node/Attribute.phpHcHhqK2nikic-php-parser/PhpParser/Node/AttributeGroup.phpcB9/nikic-php-parser/PhpParser/Node/ComplexType.phpScS(*nikic-php-parser/PhpParser/Node/Const_.phpcZ(nikic-php-parser/PhpParser/Node/Expr.phpch傤6nikic-php-parser/PhpParser/Node/Expr/ArrayDimFetch.phpMcMIY2nikic-php-parser/PhpParser/Node/Expr/ArrayItem.phpxcx| 2/nikic-php-parser/PhpParser/Node/Expr/Array_.php8c8;p6nikic-php-parser/PhpParser/Node/Expr/ArrowFunction.php c w3/nikic-php-parser/PhpParser/Node/Expr/Assign.phpc1nikic-php-parser/PhpParser/Node/Expr/AssignOp.phpc,<nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseAnd.phpcu;nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseOr.phpc;<nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseXor.phpclϚ:nikic-php-parser/PhpParser/Node/Expr/AssignOp/Coalesce.phpcq,8nikic-php-parser/PhpParser/Node/Expr/AssignOp/Concat.phpc5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Div.phpcYP -7nikic-php-parser/PhpParser/Node/Expr/AssignOp/Minus.phpc隤5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Mod.phpc]10Y5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Mul.phpcπ/6nikic-php-parser/PhpParser/Node/Expr/AssignOp/Plus.phpc&|5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Pow.phpcyV;nikic-php-parser/PhpParser/Node/Expr/AssignOp/ShiftLeft.phpc<nikic-php-parser/PhpParser/Node/Expr/AssignOp/ShiftRight.phpcs*2nikic-php-parser/PhpParser/Node/Expr/AssignRef.phpHcHE`ob1nikic-php-parser/PhpParser/Node/Expr/BinaryOp.phpoco Ѥ<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.phpPcP6L6;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseOr.phpNcN_|<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseXor.phpPcP~Ƥ<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BooleanAnd.phpQcQ5v;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BooleanOr.phpOcOeӸ:nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Coalesce.phpMcMY 8nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Concat.phpHcH @q5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Div.phpBcBi7nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Equal.phpGcGݙʤ9nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Greater.phpJcJ4ͤ@nikic-php-parser/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.phpYcY^ز;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Identical.phpPcP"<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalAnd.phpRcRi;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalOr.phpOcO@<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalXor.phpRcR4e7nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Minus.phpFcF$Lˤ5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Mod.phpBcBʤ5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Mul.phpBcB|:nikic-php-parser/PhpParser/Node/Expr/BinaryOp/NotEqual.phpMcM>nikic-php-parser/PhpParser/Node/Expr/BinaryOp/NotIdentical.phpVcVh< -6nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Plus.phpDcD' ,5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Pow.phpCcC;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/ShiftLeft.phpOcOQ#<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/ShiftRight.phpQcQǤ9nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Smaller.phpJcJf@nikic-php-parser/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.phpYcY⍤;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Spaceship.phpPcPHƉ.3nikic-php-parser/PhpParser/Node/Expr/BitwiseNot.phpc~'3nikic-php-parser/PhpParser/Node/Expr/BooleanNot.phpcDC1nikic-php-parser/PhpParser/Node/Expr/CallLike.php&c&KS0-nikic-php-parser/PhpParser/Node/Expr/Cast.phpAcA:Vs4nikic-php-parser/PhpParser/Node/Expr/Cast/Array_.phpcI|3nikic-php-parser/PhpParser/Node/Expr/Cast/Bool_.phpc V]S4nikic-php-parser/PhpParser/Node/Expr/Cast/Double.phpc>,2nikic-php-parser/PhpParser/Node/Expr/Cast/Int_.phpcc5nikic-php-parser/PhpParser/Node/Expr/Cast/Object_.phpc5nikic-php-parser/PhpParser/Node/Expr/Cast/String_.phpc4nikic-php-parser/PhpParser/Node/Expr/Cast/Unset_.phpc1Ӥ8nikic-php-parser/PhpParser/Node/Expr/ClassConstFetch.phpc/nikic-php-parser/PhpParser/Node/Expr/Clone_.phpcW0nikic-php-parser/PhpParser/Node/Expr/Closure.php -c -U;3nikic-php-parser/PhpParser/Node/Expr/ClosureUse.phpch3nikic-php-parser/PhpParser/Node/Expr/ConstFetch.phpc޶%/nikic-php-parser/PhpParser/Node/Expr/Empty_.phpc'.nikic-php-parser/PhpParser/Node/Expr/Error.phpca\6nikic-php-parser/PhpParser/Node/Expr/ErrorSuppress.phpcg.nikic-php-parser/PhpParser/Node/Expr/Eval_.phpc356.nikic-php-parser/PhpParser/Node/Expr/Exit_.phpc1nikic-php-parser/PhpParser/Node/Expr/FuncCall.php3c3%A1nikic-php-parser/PhpParser/Node/Expr/Include_.phpci4nikic-php-parser/PhpParser/Node/Expr/Instanceof_.phpaca< /nikic-php-parser/PhpParser/Node/Expr/Isset_.phpcI.nikic-php-parser/PhpParser/Node/Expr/List_.phpc/nikic-php-parser/PhpParser/Node/Expr/Match_.phpcW 3nikic-php-parser/PhpParser/Node/Expr/MethodCall.phpOcODWX-nikic-php-parser/PhpParser/Node/Expr/New_.phpciĤ;nikic-php-parser/PhpParser/Node/Expr/NullsafeMethodCall.phpfcfɤ>nikic-php-parser/PhpParser/Node/Expr/NullsafePropertyFetch.phpc /N0nikic-php-parser/PhpParser/Node/Expr/PostDec.phpcw:0nikic-php-parser/PhpParser/Node/Expr/PostInc.phpcᦦ!/nikic-php-parser/PhpParser/Node/Expr/PreDec.phpctg/nikic-php-parser/PhpParser/Node/Expr/PreInc.phpcYä/nikic-php-parser/PhpParser/Node/Expr/Print_.phpcnX6nikic-php-parser/PhpParser/Node/Expr/PropertyFetch.phpcɾ2nikic-php-parser/PhpParser/Node/Expr/ShellExec.phpchy3nikic-php-parser/PhpParser/Node/Expr/StaticCall.phpece<nikic-php-parser/PhpParser/Node/Expr/StaticPropertyFetch.php&c&ܐ0nikic-php-parser/PhpParser/Node/Expr/Ternary.phpcQͤ/nikic-php-parser/PhpParser/Node/Expr/Throw_.phpc ?3nikic-php-parser/PhpParser/Node/Expr/UnaryMinus.phpclA2nikic-php-parser/PhpParser/Node/Expr/UnaryPlus.phpce̤1nikic-php-parser/PhpParser/Node/Expr/Variable.phpcmJr2nikic-php-parser/PhpParser/Node/Expr/YieldFrom.phpcw8/nikic-php-parser/PhpParser/Node/Expr/Yield_.php\c\ 0nikic-php-parser/PhpParser/Node/FunctionLike.phpc4ͤ.nikic-php-parser/PhpParser/Node/Identifier.phpcJa4nikic-php-parser/PhpParser/Node/IntersectionType.phpco,nikic-php-parser/PhpParser/Node/MatchArm.phpc+m6(nikic-php-parser/PhpParser/Node/Name.php c Q酯7nikic-php-parser/PhpParser/Node/Name/FullyQualified.phpc 1nikic-php-parser/PhpParser/Node/Name/Relative.phpcǛEf0nikic-php-parser/PhpParser/Node/NullableType.phpc6C)nikic-php-parser/PhpParser/Node/Param.phpbcbMߤ*nikic-php-parser/PhpParser/Node/Scalar.phpkck,ߤ2nikic-php-parser/PhpParser/Node/Scalar/DNumber.phpcx3H:3nikic-php-parser/PhpParser/Node/Scalar/Encapsed.phpcRU=nikic-php-parser/PhpParser/Node/Scalar/EncapsedStringPart.phpc%2nikic-php-parser/PhpParser/Node/Scalar/LNumber.php c z5nikic-php-parser/PhpParser/Node/Scalar/MagicConst.phpccc,xG<nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Class_.phpTcT㨘X9nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Dir.phpMcMal:nikic-php-parser/PhpParser/Node/Scalar/MagicConst/File.phpPcP#?nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Function_.php]c]HnY:nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Line.phpPcPM4<nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Method.phpVcVΤ@nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Namespace_.php`c`><nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Trait_.phpTcTd2nikic-php-parser/PhpParser/Node/Scalar/String_.phpqcqT$Q(nikic-php-parser/PhpParser/Node/Stmt.phpcv2//nikic-php-parser/PhpParser/Node/Stmt/Break_.phpc֤.nikic-php-parser/PhpParser/Node/Stmt/Case_.phplclu/nikic-php-parser/PhpParser/Node/Stmt/Catch_.php|c|*V>3nikic-php-parser/PhpParser/Node/Stmt/ClassConst.phpceX?ͤ2nikic-php-parser/PhpParser/Node/Stmt/ClassLike.php c 04nikic-php-parser/PhpParser/Node/Stmt/ClassMethod.phpcX/nikic-php-parser/PhpParser/Node/Stmt/Class_.phpucu_ļ/nikic-php-parser/PhpParser/Node/Stmt/Const_.phpc2nikic-php-parser/PhpParser/Node/Stmt/Continue_.phpc7nikic-php-parser/PhpParser/Node/Stmt/DeclareDeclare.phpcƀ1nikic-php-parser/PhpParser/Node/Stmt/Declare_.phpc.. -,nikic-php-parser/PhpParser/Node/Stmt/Do_.phpBcB -@.nikic-php-parser/PhpParser/Node/Stmt/Echo_.phpc͘Ƥ0nikic-php-parser/PhpParser/Node/Stmt/ElseIf_.phpIcIEä.nikic-php-parser/PhpParser/Node/Stmt/Else_.phpc|ä1nikic-php-parser/PhpParser/Node/Stmt/EnumCase.phpcjD.nikic-php-parser/PhpParser/Node/Stmt/Enum_.php=c=dA3nikic-php-parser/PhpParser/Node/Stmt/Expression.phpcRK1nikic-php-parser/PhpParser/Node/Stmt/Finally_.phpc1A-nikic-php-parser/PhpParser/Node/Stmt/For_.php>c>NQ1nikic-php-parser/PhpParser/Node/Stmt/Foreach_.phpoco92nikic-php-parser/PhpParser/Node/Stmt/Function_.php, -c, -nL0nikic-php-parser/PhpParser/Node/Stmt/Global_.phpc.nikic-php-parser/PhpParser/Node/Stmt/Goto_.phpcVyPn1nikic-php-parser/PhpParser/Node/Stmt/GroupUse.php -c -ߎ0|5nikic-php-parser/PhpParser/Node/Stmt/HaltCompiler.phpc];,nikic-php-parser/PhpParser/Node/Stmt/If_.php:c:u٤3nikic-php-parser/PhpParser/Node/Stmt/InlineHTML.phpc]3nikic-php-parser/PhpParser/Node/Stmt/Interface_.phpcL/Ǥ.nikic-php-parser/PhpParser/Node/Stmt/Label.phpcӤ3nikic-php-parser/PhpParser/Node/Stmt/Namespace_.phpc㹀,nikic-php-parser/PhpParser/Node/Stmt/Nop.php@c@G1nikic-php-parser/PhpParser/Node/Stmt/Property.phpO -cO -=9nikic-php-parser/PhpParser/Node/Stmt/PropertyProperty.phpc҉0nikic-php-parser/PhpParser/Node/Stmt/Return_.phpcͿ)e2nikic-php-parser/PhpParser/Node/Stmt/StaticVar.phpc0nikic-php-parser/PhpParser/Node/Stmt/Static_.phpc0nikic-php-parser/PhpParser/Node/Stmt/Switch_.php5c5FFY/nikic-php-parser/PhpParser/Node/Stmt/Throw_.phpc1nikic-php-parser/PhpParser/Node/Stmt/TraitUse.phpcg,;nikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation.phpca8Anikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.phpAcAdFnikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.phpZcZP֤/nikic-php-parser/PhpParser/Node/Stmt/Trait_.phpc$v1nikic-php-parser/PhpParser/Node/Stmt/TryCatch.php$c$W/nikic-php-parser/PhpParser/Node/Stmt/Unset_.phpc=oB/nikic-php-parser/PhpParser/Node/Stmt/UseUse.phpdcdb-nikic-php-parser/PhpParser/Node/Stmt/Use_.phplcl9=|/nikic-php-parser/PhpParser/Node/Stmt/While_.phpEcEա-nikic-php-parser/PhpParser/Node/UnionType.phpcԛ5nikic-php-parser/PhpParser/Node/VarLikeIdentifier.phpc&7nikic-php-parser/PhpParser/Node/VariadicPlaceholder.phpcP+nikic-php-parser/PhpParser/NodeAbstract.phpZcZ׻@)nikic-php-parser/PhpParser/NodeDumper.phpdcdY l)nikic-php-parser/PhpParser/NodeFinder.php c ,nikic-php-parser/PhpParser/NodeTraverser.php]'c]'TG:Ƥ5nikic-php-parser/PhpParser/NodeTraverserInterface.php|c|Ś *nikic-php-parser/PhpParser/NodeVisitor.phpc39nikic-php-parser/PhpParser/NodeVisitor/CloningVisitor.phpc"WJ9nikic-php-parser/PhpParser/NodeVisitor/FindingVisitor.phpcB>nikic-php-parser/PhpParser/NodeVisitor/FirstFindingVisitor.phpcm4Ť7nikic-php-parser/PhpParser/NodeVisitor/NameResolver.phpm&cm&f[&@nikic-php-parser/PhpParser/NodeVisitor/NodeConnectingVisitor.phpcu -äBnikic-php-parser/PhpParser/NodeVisitor/ParentConnectingVisitor.phpucuME2nikic-php-parser/PhpParser/NodeVisitorAbstract.phpc%nikic-php-parser/PhpParser/Parser.php}c}{.nikic-php-parser/PhpParser/Parser/Multiple.phpcsF)7*nikic-php-parser/PhpParser/Parser/Php5.php*(c*(2l=*nikic-php-parser/PhpParser/Parser/Php7.phpSHcSHt55,nikic-php-parser/PhpParser/Parser/Tokens.php&c&<-nikic-php-parser/PhpParser/ParserAbstract.phpc6(,nikic-php-parser/PhpParser/ParserFactory.phpc -~&5nikic-php-parser/PhpParser/PrettyPrinter/Standard.phpc'4nikic-php-parser/PhpParser/PrettyPrinterAbstract.phpcܤobject-enumerator/LICENSEcy{object-reflector/LICENSEc9vphar-io-manifest/LICENSE`c`p+phar-io-manifest/ManifestDocumentMapper.phpc:#phar-io-manifest/ManifestLoader.phpc.-a'phar-io-manifest/ManifestSerializer.phpcrp:phar-io-manifest/exceptions/ElementCollectionException.phpc I)phar-io-manifest/exceptions/Exception.phpc?phar-io-manifest/exceptions/InvalidApplicationNameException.phpc:@>5phar-io-manifest/exceptions/InvalidEmailException.phpc<3phar-io-manifest/exceptions/InvalidUrlException.phpc 9phar-io-manifest/exceptions/ManifestDocumentException.phpc!P4@phar-io-manifest/exceptions/ManifestDocumentLoadingException.phpHcHǃ?phar-io-manifest/exceptions/ManifestDocumentMapperException.phpc:9z8phar-io-manifest/exceptions/ManifestElementException.phpcA47phar-io-manifest/exceptions/ManifestLoaderException.phpcD>'phar-io-manifest/values/Application.phpcI$ۤ+phar-io-manifest/values/ApplicationName.php;c;D"phar-io-manifest/values/Author.phpcF,phar-io-manifest/values/AuthorCollection.phpco4phar-io-manifest/values/AuthorCollectionIterator.php3c3џ,phar-io-manifest/values/BundledComponent.php@c@DP`6phar-io-manifest/values/BundledComponentCollection.php c ¾W6>phar-io-manifest/values/BundledComponentCollectionIterator.phpcVh0phar-io-manifest/values/CopyrightInformation.phpPcP ai!phar-io-manifest/values/Email.phpNcNZ&%phar-io-manifest/values/Extension.phpcq}#phar-io-manifest/values/Library.phpcO#phar-io-manifest/values/License.phpc&!o$phar-io-manifest/values/Manifest.php -c -=La3phar-io-manifest/values/PhpExtensionRequirement.phpc11phar-io-manifest/values/PhpVersionRequirement.phpcm?'phar-io-manifest/values/Requirement.phpcd1phar-io-manifest/values/RequirementCollection.phpcP9phar-io-manifest/values/RequirementCollectionIterator.phpjcjܭ: phar-io-manifest/values/Type.phpc=%phar-io-manifest/values/Url.phpc͚&phar-io-manifest/xml/AuthorElement.phprcr<0phar-io-manifest/xml/AuthorElementCollection.php,c,-'phar-io-manifest/xml/BundlesElement.phpScSWN>)phar-io-manifest/xml/ComponentElement.phpycyݤ3phar-io-manifest/xml/ComponentElementCollection.php5c5(\(phar-io-manifest/xml/ContainsElement.phpncnf)phar-io-manifest/xml/CopyrightElement.phpc7*phar-io-manifest/xml/ElementCollection.phpc@ #phar-io-manifest/xml/ExtElement.php c y>-phar-io-manifest/xml/ExtElementCollection.php#c#E)phar-io-manifest/xml/ExtensionElement.php}c}0'phar-io-manifest/xml/LicenseElement.phpoco%:')phar-io-manifest/xml/ManifestDocument.php - c - 4(phar-io-manifest/xml/ManifestElement.php4c4#phar-io-manifest/xml/PhpElement.phpcB:5(phar-io-manifest/xml/RequiresElement.php$c$>!phar-io-version/BuildMetaData.phpcphar-io-version/LICENSE&c&Ҫ $phar-io-version/PreReleaseSuffix.phpc:phar-io-version/Version.phpcu#+phar-io-version/VersionConstraintParser.phpT cT Ф*phar-io-version/VersionConstraintValue.phpH -cH -F{~4!phar-io-version/VersionNumber.phpcO19phar-io-version/constraints/AbstractVersionConstraint.phpcxB9phar-io-version/constraints/AndVersionConstraintGroup.phpcY4phar-io-version/constraints/AnyVersionConstraint.phpRcR #6phar-io-version/constraints/ExactVersionConstraint.phpc!Ephar-io-version/constraints/GreaterThanOrEqualToVersionConstraint.phpcVU8phar-io-version/constraints/OrVersionConstraintGroup.phpcM%Fphar-io-version/constraints/SpecificMajorAndMinorVersionConstraint.phpcɍ>phar-io-version/constraints/SpecificMajorVersionConstraint.phpc`9q:1phar-io-version/constraints/VersionConstraint.phpceDq(phar-io-version/exceptions/Exception.phpc$eb?phar-io-version/exceptions/InvalidPreReleaseSuffixException.phpcҵ6phar-io-version/exceptions/InvalidVersionException.phpc4/S7phar-io-version/exceptions/NoBuildMetaDataException.phpc]:phar-io-version/exceptions/NoPreReleaseSuffixException.phpcT4Dphar-io-version/exceptions/UnsupportedVersionConstraintException.phpc9"php-code-coverage/CodeCoverage.php/Cc/C$\#php-code-coverage/Driver/Driver.phpc3A'php-code-coverage/Driver/PcovDriver.phpJcJ)php-code-coverage/Driver/PhpdbgDriver.php^ -c^ -_2G%php-code-coverage/Driver/Selector.php c 6]*php-code-coverage/Driver/Xdebug2Driver.phpA cA *php-code-coverage/Driver/Xdebug3Driver.php c h*Jphp-code-coverage/Exception/BranchAndPathCoverageNotSupportedException.phpc77Fphp-code-coverage/Exception/DeadCodeDetectionNotSupportedException.phpcCphp-code-coverage/Exception/DirectoryCouldNotBeCreatedException.phpc)php-code-coverage/Exception/Exception.php}c}z8php-code-coverage/Exception/InvalidArgumentException.phpcK.nFphp-code-coverage/Exception/NoCodeCoverageDriverAvailableException.php/c/6R]php-code-coverage/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.phpaca"A/php-code-coverage/Exception/ParserException.phpc,/Dphp-code-coverage/Exception/PathExistsButIsNotDirectoryException.phpc.29php-code-coverage/Exception/PcovNotAvailableException.phpacaj;php-code-coverage/Exception/PhpdbgNotAvailableException.php`c`3php-code-coverage/Exception/ReflectionException.phpck)?php-code-coverage/Exception/ReportAlreadyFinalizedException.php:c:d%6Iphp-code-coverage/Exception/StaticAnalysisCacheNotConfiguredException.phpc}6php-code-coverage/Exception/TestIdMissingException.phpc -Cphp-code-coverage/Exception/UnintentionallyCoveredCodeException.php+c+Q_ª=php-code-coverage/Exception/WriteOperationFailedException.phpc(e;php-code-coverage/Exception/WrongXdebugVersionException.phpc Ȥ:php-code-coverage/Exception/Xdebug2NotEnabledException.phpfcf,':php-code-coverage/Exception/Xdebug3NotEnabledException.phpycy<>;php-code-coverage/Exception/XdebugNotAvailableException.phpeceNG,php-code-coverage/Exception/XmlException.phpcWܤphp-code-coverage/Filter.php c 4php-code-coverage/LICENSEc?i'php-code-coverage/Node/AbstractNode.php:c:%^"php-code-coverage/Node/Builder.php c 2N$php-code-coverage/Node/CrapIndex.phpc# $php-code-coverage/Node/Directory.php -&c -&}php-code-coverage/Node/File.phpKcK{#php-code-coverage/Node/Iterator.phpcHk/php-code-coverage/ProcessedCodeCoverageData.php$c$')php-code-coverage/RawCodeCoverageData.php!c!#php-code-coverage/Report/Clover.php'c'l4&php-code-coverage/Report/Cobertura.php(1c(1q#php-code-coverage/Report/Crap4j.phpcJ#D(php-code-coverage/Report/Html/Facade.php"c";ڤ*php-code-coverage/Report/Html/Renderer.phpU!cU!}4php-code-coverage/Report/Html/Renderer/Dashboard.phpC cC L+4php-code-coverage/Report/Html/Renderer/Directory.php c (/php-code-coverage/Report/Html/Renderer/File.php7c7#lؤBphp-code-coverage/Report/Html/Renderer/Template/branches.html.distch2+Fphp-code-coverage/Report/Html/Renderer/Template/coverage_bar.html.dist'c'O}Mphp-code-coverage/Report/Html/Renderer/Template/coverage_bar_branch.html.dist'c'O}Ephp-code-coverage/Report/Html/Renderer/Template/css/bootstrap.min.cssycyĤ>php-code-coverage/Report/Html/Renderer/Template/css/custom.csscAphp-code-coverage/Report/Html/Renderer/Template/css/nv.d3.min.cssX%cX%0,@php-code-coverage/Report/Html/Renderer/Template/css/octicons.cssXcX'#=php-code-coverage/Report/Html/Renderer/Template/css/style.csscWCphp-code-coverage/Report/Html/Renderer/Template/dashboard.html.distGcGlJphp-code-coverage/Report/Html/Renderer/Template/dashboard_branch.html.distGcGlCphp-code-coverage/Report/Html/Renderer/Template/directory.html.distcGMJphp-code-coverage/Report/Html/Renderer/Template/directory_branch.html.distjcjHHphp-code-coverage/Report/Html/Renderer/Template/directory_item.html.distAcAdsOphp-code-coverage/Report/Html/Renderer/Template/directory_item_branch.html.dist;c;mۤ>php-code-coverage/Report/Html/Renderer/Template/file.html.distcGd=rEphp-code-coverage/Report/Html/Renderer/Template/file_branch.html.dist c gCphp-code-coverage/Report/Html/Renderer/Template/file_item.html.distrcr/yJphp-code-coverage/Report/Html/Renderer/Template/file_item_branch.html.distlcl-Cphp-code-coverage/Report/Html/Renderer/Template/icons/file-code.svg0c0QUUHphp-code-coverage/Report/Html/Renderer/Template/icons/file-directory.svgcZCphp-code-coverage/Report/Html/Renderer/Template/js/bootstrap.min.jsccc"#<php-code-coverage/Report/Html/Renderer/Template/js/d3.min.jsPcPhb:php-code-coverage/Report/Html/Renderer/Template/js/file.jscb䆤@php-code-coverage/Report/Html/Renderer/Template/js/jquery.min.js@^c@^ ?php-code-coverage/Report/Html/Renderer/Template/js/nv.d3.min.jsRcRphp-code-coverage/Report/Html/Renderer/Template/line.html.distc{?php-code-coverage/Report/Html/Renderer/Template/lines.html.distecedf Ephp-code-coverage/Report/Html/Renderer/Template/method_item.html.distcjפLphp-code-coverage/Report/Html/Renderer/Template/method_item_branch.html.distcyĎk?php-code-coverage/Report/Html/Renderer/Template/paths.html.distc*'ݤ php-code-coverage/Report/PHP.phpcg!php-code-coverage/Report/Text.php'c' 6H1php-code-coverage/Report/Xml/BuildInformation.php c T3e)php-code-coverage/Report/Xml/Coverage.php+c+9E*php-code-coverage/Report/Xml/Directory.phpcAf'php-code-coverage/Report/Xml/Facade.php"c"O}%php-code-coverage/Report/Xml/File.php+c+g׃'php-code-coverage/Report/Xml/Method.phpWcW ʤ%php-code-coverage/Report/Xml/Node.php3c3(php-code-coverage/Report/Xml/Project.phpfcfPe'php-code-coverage/Report/Xml/Report.php c HC'php-code-coverage/Report/Xml/Source.phpzcz'1&php-code-coverage/Report/Xml/Tests.phpc'php-code-coverage/Report/Xml/Totals.phpc:6%php-code-coverage/Report/Xml/Unit.phpcY0php-code-coverage/StaticAnalysis/CacheWarmer.php)c) ۤ8php-code-coverage/StaticAnalysis/CachingFileAnalyser.phpc,K&;php-code-coverage/StaticAnalysis/CodeUnitFindingVisitor.php&c&xTgBphp-code-coverage/StaticAnalysis/ExecutableLinesFindingVisitor.phpd&cd&l!1php-code-coverage/StaticAnalysis/FileAnalyser.phpcJ?php-code-coverage/StaticAnalysis/IgnoredLinesFindingVisitor.php c 8php-code-coverage/StaticAnalysis/ParsingFileAnalyser.phpcd%php-code-coverage/Util/Filesystem.phpc%php-code-coverage/Util/Percentage.phpcphp-code-coverage/Version.phpclphp-file-iterator/Facade.php% -c% -Τphp-file-iterator/Factory.phpcg ,php-file-iterator/Iterator.phpZ cZ C܎php-file-iterator/LICENSEco:php-invoker/Invoker.phpc+L$php-invoker/exceptions/Exception.phprcrvvduDphp-invoker/exceptions/ProcessControlExtensionNotLoadedException.phpc +php-invoker/exceptions/TimeoutException.phpc.php-text-template/LICENSEcuphp-text-template/Template.php( c( *php-text-template/exceptions/Exception.phpycyn9php-text-template/exceptions/InvalidArgumentException.phpcaM1php-text-template/exceptions/RuntimeException.phpcYm'php-timer/Duration.php -c -tXyphp-timer/LICENSEcx$php-timer/ResourceUsageFormatter.phpcPھphp-timer/Timer.phpccAɤ"php-timer/exceptions/Exception.phpncniuۤ/php-timer/exceptions/NoActiveTimerException.phpcl٤Ephp-timer/exceptions/TimeSinceStartOfRequestNotAvailableException.phpc$b+phpdocumentor-reflection-common/Element.php c %(phpdocumentor-reflection-common/File.phpcI))phpdocumentor-reflection-common/Fqsen.phpc?'phpdocumentor-reflection-common/LICENSE9c9*2Ȑ,phpdocumentor-reflection-common/Location.phpc=(+phpdocumentor-reflection-common/Project.phpcJ2phpdocumentor-reflection-common/ProjectFactory.php_c_j\".phpdocumentor-reflection-docblock/DocBlock.phpcHx>$:phpdocumentor-reflection-docblock/DocBlock/Description.php c 54Aphpdocumentor-reflection-docblock/DocBlock/DescriptionFactory.phpcd=<phpdocumentor-reflection-docblock/DocBlock/ExampleFinder.php,c,ׯf9phpdocumentor-reflection-docblock/DocBlock/Serializer.php c ]Aphpdocumentor-reflection-docblock/DocBlock/StandardTagFactory.php0c0<2phpdocumentor-reflection-docblock/DocBlock/Tag.phpc9phpdocumentor-reflection-docblock/DocBlock/TagFactory.phpcJMx:phpdocumentor-reflection-docblock/DocBlock/Tags/Author.php c ;phpdocumentor-reflection-docblock/DocBlock/Tags/BaseTag.phpcZr:phpdocumentor-reflection-docblock/DocBlock/Tags/Covers.phpg -cg +kphpunit-9.6.13.pharLdoctrine-instantiator/Doctrine/Instantiator/Exception/ExceptionInterface.php(4 ebRdoctrine-instantiator/Doctrine/Instantiator/Exception/InvalidArgumentException.php(4 eRdoctrine-instantiator/Doctrine/Instantiator/Exception/UnexpectedValueException.php:(4 e:_Y%[<doctrine-instantiator/Doctrine/Instantiator/Instantiator.php(4 e87Edoctrine-instantiator/Doctrine/Instantiator/InstantiatorInterface.php (4 e LȤdoctrine-instantiator/LICENSE$(4 e$ +͂ manifest.txt(4 eRoa'myclabs-deep-copy/DeepCopy/DeepCopy.php(4 eLä7myclabs-deep-copy/DeepCopy/Exception/CloneException.php(4 e {ˤ:myclabs-deep-copy/DeepCopy/Exception/PropertyException.php(4 e3Gz5myclabs-deep-copy/DeepCopy/Filter/ChainableFilter.php(4 eTE Gmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php +(4 e +DgLmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php(4 e)$Bmyclabs-deep-copy/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php(4 e),myclabs-deep-copy/DeepCopy/Filter/Filter.phpd(4 edM0myclabs-deep-copy/DeepCopy/Filter/KeepFilter.php(4 eYn3myclabs-deep-copy/DeepCopy/Filter/ReplaceFilter.php(4 e3myclabs-deep-copy/DeepCopy/Filter/SetNullFilter.php(4 e䊉Dmyclabs-deep-copy/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php(4 epr.myclabs-deep-copy/DeepCopy/Matcher/Matcher.php(4 e6myclabs-deep-copy/DeepCopy/Matcher/PropertyMatcher.php(4 e=Bv:myclabs-deep-copy/DeepCopy/Matcher/PropertyNameMatcher.php(4 eR:myclabs-deep-copy/DeepCopy/Matcher/PropertyTypeMatcher.php2(4 e2ZQͤ:myclabs-deep-copy/DeepCopy/Reflection/ReflectionHelper.php5(4 e5ىAmyclabs-deep-copy/DeepCopy/TypeFilter/Date/DateIntervalFilter.php(4 eƤ7myclabs-deep-copy/DeepCopy/TypeFilter/ReplaceFilter.php(4 ez;myclabs-deep-copy/DeepCopy/TypeFilter/ShallowCopyFilter.php(4 eؤ?myclabs-deep-copy/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php(4 e^Amyclabs-deep-copy/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php(4 ev|Gmyclabs-deep-copy/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php(4 eT+4myclabs-deep-copy/DeepCopy/TypeFilter/TypeFilter.php(4 eVD6myclabs-deep-copy/DeepCopy/TypeMatcher/TypeMatcher.php(4 eQBŤ(myclabs-deep-copy/DeepCopy/deep_copy.php(4 erxmyclabs-deep-copy/LICENSE5(4 e5ʭ˄nikic-php-parser/LICENSE(4 e*&nikic-php-parser/PhpParser/Builder.php(4 e61nikic-php-parser/PhpParser/Builder/ClassConst.php(4 e-nikic-php-parser/PhpParser/Builder/Class_.php(4 ec32nikic-php-parser/PhpParser/Builder/Declaration.php(4 eE7/nikic-php-parser/PhpParser/Builder/EnumCase.php^(4 e^ueT,nikic-php-parser/PhpParser/Builder/Enum_.php (4 e #3nikic-php-parser/PhpParser/Builder/FunctionLike.php(4 eZqe0nikic-php-parser/PhpParser/Builder/Function_.phpF(4 eFux1nikic-php-parser/PhpParser/Builder/Interface_.php (4 e -nikic-php-parser/PhpParser/Builder/Method.php(4 e}1nikic-php-parser/PhpParser/Builder/Namespace_.php:(4 e:ˆp,nikic-php-parser/PhpParser/Builder/Param.php{(4 e{j4/nikic-php-parser/PhpParser/Builder/Property.php|(4 e|O /nikic-php-parser/PhpParser/Builder/TraitUse.phpW(4 eWL@9nikic-php-parser/PhpParser/Builder/TraitUseAdaptation.php(4 eUVx-nikic-php-parser/PhpParser/Builder/Trait_.php(4 ekj+nikic-php-parser/PhpParser/Builder/Use_.php(4 es-nikic-php-parser/PhpParser/BuilderFactory.php+(4 e+ $-nikic-php-parser/PhpParser/BuilderHelpers.php$(4 e$:@&nikic-php-parser/PhpParser/Comment.php(4 eA*nikic-php-parser/PhpParser/Comment/Doc.phpx(4 exp;nikic-php-parser/PhpParser/ConstExprEvaluationException.php_(4 e_I 1nikic-php-parser/PhpParser/ConstExprEvaluator.phpl%(4 el%evQ$nikic-php-parser/PhpParser/Error.php(4 eQZ+nikic-php-parser/PhpParser/ErrorHandler.php/(4 e/#\6nikic-php-parser/PhpParser/ErrorHandler/Collecting.php(4 e&Ȥ4nikic-php-parser/PhpParser/ErrorHandler/Throwing.php(4 eS}<0nikic-php-parser/PhpParser/Internal/DiffElem.php7(4 e7$.nikic-php-parser/PhpParser/Internal/Differ.php-(4 e-^Anikic-php-parser/PhpParser/Internal/PrintableNewAnonClassNode.php(4 e<3nikic-php-parser/PhpParser/Internal/TokenStream.php#(4 e#f*nikic-php-parser/PhpParser/JsonDecoder.php (4 e xg$nikic-php-parser/PhpParser/Lexer.phpyZ(4 eyZq⃤.nikic-php-parser/PhpParser/Lexer/Emulative.phpO#(4 eO#ܲݤDnikic-php-parser/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php(4 erLnikic-php-parser/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php (4 e *§oDnikic-php-parser/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php(4 eLFHnikic-php-parser/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php(4 e*#Lnikic-php-parser/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.phpn (4 en 1Bnikic-php-parser/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php(4 ejBnikic-php-parser/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php(4 e`atEnikic-php-parser/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php(4 ec/Hnikic-php-parser/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php(4 e:&ERnikic-php-parser/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.phpV(4 eVPnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php(4 ee!ćHnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.phpL(4 eL +`9JBnikic-php-parser/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php(4 eI}@nikic-php-parser/PhpParser/Lexer/TokenEmulator/TokenEmulator.phpu(4 euD4h*nikic-php-parser/PhpParser/NameContext.php%(4 e%G-#nikic-php-parser/PhpParser/Node.php(4 eyݗ'nikic-php-parser/PhpParser/Node/Arg.php0(4 e0q H-nikic-php-parser/PhpParser/Node/Attribute.phpH(4 eHhqK2nikic-php-parser/PhpParser/Node/AttributeGroup.php(4 eB9/nikic-php-parser/PhpParser/Node/ComplexType.phpS(4 eS(*nikic-php-parser/PhpParser/Node/Const_.php(4 eZ(nikic-php-parser/PhpParser/Node/Expr.php(4 eh傤6nikic-php-parser/PhpParser/Node/Expr/ArrayDimFetch.phpM(4 eMIY2nikic-php-parser/PhpParser/Node/Expr/ArrayItem.phpx(4 ex| 2/nikic-php-parser/PhpParser/Node/Expr/Array_.php8(4 e8;p6nikic-php-parser/PhpParser/Node/Expr/ArrowFunction.php (4 e w3/nikic-php-parser/PhpParser/Node/Expr/Assign.php(4 e1nikic-php-parser/PhpParser/Node/Expr/AssignOp.php(4 e,<nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php(4 eu;nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseOr.php(4 e;<nikic-php-parser/PhpParser/Node/Expr/AssignOp/BitwiseXor.php(4 elϚ:nikic-php-parser/PhpParser/Node/Expr/AssignOp/Coalesce.php(4 eq,8nikic-php-parser/PhpParser/Node/Expr/AssignOp/Concat.php(4 e5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Div.php(4 eYP +7nikic-php-parser/PhpParser/Node/Expr/AssignOp/Minus.php(4 e隤5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Mod.php(4 e]10Y5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Mul.php(4 eπ/6nikic-php-parser/PhpParser/Node/Expr/AssignOp/Plus.php(4 e&|5nikic-php-parser/PhpParser/Node/Expr/AssignOp/Pow.php(4 eyV;nikic-php-parser/PhpParser/Node/Expr/AssignOp/ShiftLeft.php(4 e<nikic-php-parser/PhpParser/Node/Expr/AssignOp/ShiftRight.php(4 es*2nikic-php-parser/PhpParser/Node/Expr/AssignRef.phpH(4 eHE`ob1nikic-php-parser/PhpParser/Node/Expr/BinaryOp.phpo(4 eo Ѥ<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.phpP(4 eP6L6;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseOr.phpN(4 eN_|<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BitwiseXor.phpP(4 eP~Ƥ<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BooleanAnd.phpQ(4 eQ5v;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/BooleanOr.phpO(4 eOeӸ:nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Coalesce.phpM(4 eMY 8nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Concat.phpH(4 eH @q5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Div.phpB(4 eBi7nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Equal.phpG(4 eGݙʤ9nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Greater.phpJ(4 eJ4ͤ@nikic-php-parser/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.phpY(4 eY^ز;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Identical.phpP(4 eP"<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalAnd.phpR(4 eRi;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalOr.phpO(4 eO@<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/LogicalXor.phpR(4 eR4e7nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Minus.phpF(4 eF$Lˤ5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Mod.phpB(4 eBʤ5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Mul.phpB(4 eB|:nikic-php-parser/PhpParser/Node/Expr/BinaryOp/NotEqual.phpM(4 eM>nikic-php-parser/PhpParser/Node/Expr/BinaryOp/NotIdentical.phpV(4 eVh< +6nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Plus.phpD(4 eD' ,5nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Pow.phpC(4 eC;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/ShiftLeft.phpO(4 eOQ#<nikic-php-parser/PhpParser/Node/Expr/BinaryOp/ShiftRight.phpQ(4 eQǤ9nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Smaller.phpJ(4 eJf@nikic-php-parser/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.phpY(4 eY⍤;nikic-php-parser/PhpParser/Node/Expr/BinaryOp/Spaceship.phpP(4 ePHƉ.3nikic-php-parser/PhpParser/Node/Expr/BitwiseNot.php(4 e~'3nikic-php-parser/PhpParser/Node/Expr/BooleanNot.php(4 eDC1nikic-php-parser/PhpParser/Node/Expr/CallLike.php&(4 e&KS0-nikic-php-parser/PhpParser/Node/Expr/Cast.phpA(4 eA:Vs4nikic-php-parser/PhpParser/Node/Expr/Cast/Array_.php(4 eI|3nikic-php-parser/PhpParser/Node/Expr/Cast/Bool_.php(4 e V]S4nikic-php-parser/PhpParser/Node/Expr/Cast/Double.php(4 e>,2nikic-php-parser/PhpParser/Node/Expr/Cast/Int_.php(4 ec5nikic-php-parser/PhpParser/Node/Expr/Cast/Object_.php(4 e5nikic-php-parser/PhpParser/Node/Expr/Cast/String_.php(4 e4nikic-php-parser/PhpParser/Node/Expr/Cast/Unset_.php(4 e1Ӥ8nikic-php-parser/PhpParser/Node/Expr/ClassConstFetch.php(4 eE/nikic-php-parser/PhpParser/Node/Expr/Clone_.php(4 eW0nikic-php-parser/PhpParser/Node/Expr/Closure.php +(4 e +U;3nikic-php-parser/PhpParser/Node/Expr/ClosureUse.php(4 eh3nikic-php-parser/PhpParser/Node/Expr/ConstFetch.php(4 e޶%/nikic-php-parser/PhpParser/Node/Expr/Empty_.php(4 e'.nikic-php-parser/PhpParser/Node/Expr/Error.php(4 ea\6nikic-php-parser/PhpParser/Node/Expr/ErrorSuppress.php(4 eg.nikic-php-parser/PhpParser/Node/Expr/Eval_.php(4 e356.nikic-php-parser/PhpParser/Node/Expr/Exit_.php(4 e1nikic-php-parser/PhpParser/Node/Expr/FuncCall.php3(4 e3%A1nikic-php-parser/PhpParser/Node/Expr/Include_.php(4 ei4nikic-php-parser/PhpParser/Node/Expr/Instanceof_.phpa(4 ea< /nikic-php-parser/PhpParser/Node/Expr/Isset_.php(4 eI.nikic-php-parser/PhpParser/Node/Expr/List_.php(4 e/nikic-php-parser/PhpParser/Node/Expr/Match_.php(4 eW 3nikic-php-parser/PhpParser/Node/Expr/MethodCall.phpO(4 eODWX-nikic-php-parser/PhpParser/Node/Expr/New_.php(4 eiĤ;nikic-php-parser/PhpParser/Node/Expr/NullsafeMethodCall.phpf(4 efɤ>nikic-php-parser/PhpParser/Node/Expr/NullsafePropertyFetch.php(4 e /N0nikic-php-parser/PhpParser/Node/Expr/PostDec.php(4 ew:0nikic-php-parser/PhpParser/Node/Expr/PostInc.php(4 eᦦ!/nikic-php-parser/PhpParser/Node/Expr/PreDec.php(4 etg/nikic-php-parser/PhpParser/Node/Expr/PreInc.php(4 eYä/nikic-php-parser/PhpParser/Node/Expr/Print_.php(4 enX6nikic-php-parser/PhpParser/Node/Expr/PropertyFetch.php(4 eɾ2nikic-php-parser/PhpParser/Node/Expr/ShellExec.php(4 ehy3nikic-php-parser/PhpParser/Node/Expr/StaticCall.phpe(4 ee<nikic-php-parser/PhpParser/Node/Expr/StaticPropertyFetch.php&(4 e&ܐ0nikic-php-parser/PhpParser/Node/Expr/Ternary.php(4 eQͤ/nikic-php-parser/PhpParser/Node/Expr/Throw_.php(4 e ?3nikic-php-parser/PhpParser/Node/Expr/UnaryMinus.php(4 elA2nikic-php-parser/PhpParser/Node/Expr/UnaryPlus.php(4 ee̤1nikic-php-parser/PhpParser/Node/Expr/Variable.php(4 emJr2nikic-php-parser/PhpParser/Node/Expr/YieldFrom.php(4 ew8/nikic-php-parser/PhpParser/Node/Expr/Yield_.php\(4 e\ 0nikic-php-parser/PhpParser/Node/FunctionLike.php(4 e4ͤ.nikic-php-parser/PhpParser/Node/Identifier.php(4 eJa4nikic-php-parser/PhpParser/Node/IntersectionType.php(4 eo,nikic-php-parser/PhpParser/Node/MatchArm.php(4 e+m6(nikic-php-parser/PhpParser/Node/Name.php (4 e 7nikic-php-parser/PhpParser/Node/Name/FullyQualified.php(4 e 1nikic-php-parser/PhpParser/Node/Name/Relative.php(4 eǛEf0nikic-php-parser/PhpParser/Node/NullableType.php(4 e6C)nikic-php-parser/PhpParser/Node/Param.phpb(4 ebMߤ*nikic-php-parser/PhpParser/Node/Scalar.phpk(4 ek,ߤ2nikic-php-parser/PhpParser/Node/Scalar/DNumber.php(4 ex3H:3nikic-php-parser/PhpParser/Node/Scalar/Encapsed.php(4 eRU=nikic-php-parser/PhpParser/Node/Scalar/EncapsedStringPart.php(4 e%2nikic-php-parser/PhpParser/Node/Scalar/LNumber.php (4 e z5nikic-php-parser/PhpParser/Node/Scalar/MagicConst.phpc(4 ec,xG<nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Class_.phpT(4 eT㨘X9nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Dir.phpM(4 eMal:nikic-php-parser/PhpParser/Node/Scalar/MagicConst/File.phpP(4 eP#?nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Function_.php](4 e]HnY:nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Line.phpP(4 ePM4<nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Method.phpV(4 eVΤ@nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Namespace_.php`(4 e`><nikic-php-parser/PhpParser/Node/Scalar/MagicConst/Trait_.phpT(4 eTd2nikic-php-parser/PhpParser/Node/Scalar/String_.phpq(4 eqT$Q(nikic-php-parser/PhpParser/Node/Stmt.php(4 ev2//nikic-php-parser/PhpParser/Node/Stmt/Break_.php(4 e֤.nikic-php-parser/PhpParser/Node/Stmt/Case_.phpl(4 elu/nikic-php-parser/PhpParser/Node/Stmt/Catch_.php|(4 e|*V>3nikic-php-parser/PhpParser/Node/Stmt/ClassConst.php| (4 e| K:d2nikic-php-parser/PhpParser/Node/Stmt/ClassLike.php (4 e 04nikic-php-parser/PhpParser/Node/Stmt/ClassMethod.php(4 eX/nikic-php-parser/PhpParser/Node/Stmt/Class_.phpu(4 eu_ļ/nikic-php-parser/PhpParser/Node/Stmt/Const_.php(4 e2nikic-php-parser/PhpParser/Node/Stmt/Continue_.php(4 e7nikic-php-parser/PhpParser/Node/Stmt/DeclareDeclare.php(4 eƀ1nikic-php-parser/PhpParser/Node/Stmt/Declare_.php(4 e.. +,nikic-php-parser/PhpParser/Node/Stmt/Do_.phpB(4 eB +@.nikic-php-parser/PhpParser/Node/Stmt/Echo_.php(4 e͘Ƥ0nikic-php-parser/PhpParser/Node/Stmt/ElseIf_.phpI(4 eIEä.nikic-php-parser/PhpParser/Node/Stmt/Else_.php(4 e|ä1nikic-php-parser/PhpParser/Node/Stmt/EnumCase.php(4 ejD.nikic-php-parser/PhpParser/Node/Stmt/Enum_.php=(4 e=dA3nikic-php-parser/PhpParser/Node/Stmt/Expression.php(4 eRK1nikic-php-parser/PhpParser/Node/Stmt/Finally_.php(4 e1A-nikic-php-parser/PhpParser/Node/Stmt/For_.php>(4 e>NQ1nikic-php-parser/PhpParser/Node/Stmt/Foreach_.phpo(4 eo92nikic-php-parser/PhpParser/Node/Stmt/Function_.php, +(4 e, +nL0nikic-php-parser/PhpParser/Node/Stmt/Global_.php(4 e.nikic-php-parser/PhpParser/Node/Stmt/Goto_.php(4 eVyPn1nikic-php-parser/PhpParser/Node/Stmt/GroupUse.php +(4 e +ߎ0|5nikic-php-parser/PhpParser/Node/Stmt/HaltCompiler.php(4 e];,nikic-php-parser/PhpParser/Node/Stmt/If_.php:(4 e:u٤3nikic-php-parser/PhpParser/Node/Stmt/InlineHTML.php(4 e]3nikic-php-parser/PhpParser/Node/Stmt/Interface_.php(4 eL/Ǥ.nikic-php-parser/PhpParser/Node/Stmt/Label.php(4 eӤ3nikic-php-parser/PhpParser/Node/Stmt/Namespace_.php(4 e㹀,nikic-php-parser/PhpParser/Node/Stmt/Nop.php@(4 e@G1nikic-php-parser/PhpParser/Node/Stmt/Property.phpO +(4 eO +=9nikic-php-parser/PhpParser/Node/Stmt/PropertyProperty.php(4 e҉0nikic-php-parser/PhpParser/Node/Stmt/Return_.php(4 eͿ)e2nikic-php-parser/PhpParser/Node/Stmt/StaticVar.php(4 e0nikic-php-parser/PhpParser/Node/Stmt/Static_.php(4 e0nikic-php-parser/PhpParser/Node/Stmt/Switch_.php5(4 e5FFY/nikic-php-parser/PhpParser/Node/Stmt/Throw_.php(4 e1nikic-php-parser/PhpParser/Node/Stmt/TraitUse.php(4 eg,;nikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation.php(4 ea8Anikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.phpA(4 eAdFnikic-php-parser/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.phpZ(4 eZP֤/nikic-php-parser/PhpParser/Node/Stmt/Trait_.php(4 e$v1nikic-php-parser/PhpParser/Node/Stmt/TryCatch.php$(4 e$W/nikic-php-parser/PhpParser/Node/Stmt/Unset_.php(4 e=oB/nikic-php-parser/PhpParser/Node/Stmt/UseUse.phpd(4 edb-nikic-php-parser/PhpParser/Node/Stmt/Use_.phpl(4 el9=|/nikic-php-parser/PhpParser/Node/Stmt/While_.phpE(4 eEա-nikic-php-parser/PhpParser/Node/UnionType.php(4 eԛ5nikic-php-parser/PhpParser/Node/VarLikeIdentifier.php(4 e&7nikic-php-parser/PhpParser/Node/VariadicPlaceholder.php(4 eP+nikic-php-parser/PhpParser/NodeAbstract.phpZ(4 eZ׻@)nikic-php-parser/PhpParser/NodeDumper.phpd(4 edY l)nikic-php-parser/PhpParser/NodeFinder.php (4 e ,nikic-php-parser/PhpParser/NodeTraverser.php]'(4 e]'TG:Ƥ5nikic-php-parser/PhpParser/NodeTraverserInterface.php|(4 e|Ś *nikic-php-parser/PhpParser/NodeVisitor.php(4 e39nikic-php-parser/PhpParser/NodeVisitor/CloningVisitor.php(4 e"WJ9nikic-php-parser/PhpParser/NodeVisitor/FindingVisitor.php(4 eB>nikic-php-parser/PhpParser/NodeVisitor/FirstFindingVisitor.php(4 em4Ť7nikic-php-parser/PhpParser/NodeVisitor/NameResolver.phpq&(4 eq&ǠG@nikic-php-parser/PhpParser/NodeVisitor/NodeConnectingVisitor.php(4 eu +äBnikic-php-parser/PhpParser/NodeVisitor/ParentConnectingVisitor.phpu(4 euME2nikic-php-parser/PhpParser/NodeVisitorAbstract.php(4 e%nikic-php-parser/PhpParser/Parser.php}(4 e}{.nikic-php-parser/PhpParser/Parser/Multiple.php(4 esF)7*nikic-php-parser/PhpParser/Parser/Php5.php+(4 e+1*nikic-php-parser/PhpParser/Parser/Php7.phpT(4 eT!V`,nikic-php-parser/PhpParser/Parser/Tokens.php&(4 e&<-nikic-php-parser/PhpParser/ParserAbstract.phpT(4 eT'[,nikic-php-parser/PhpParser/ParserFactory.php(4 e +~&5nikic-php-parser/PhpParser/PrettyPrinter/Standard.php+(4 e+4nikic-php-parser/PhpParser/PrettyPrinterAbstract.phpQ(4 eQ%jobject-enumerator/LICENSE(4 ey{object-reflector/LICENSE(4 e9vphar-io-manifest/LICENSE`(4 e`p+phar-io-manifest/ManifestDocumentMapper.php(4 e:#phar-io-manifest/ManifestLoader.php(4 e.-a'phar-io-manifest/ManifestSerializer.php(4 erp:phar-io-manifest/exceptions/ElementCollectionException.php(4 e I)phar-io-manifest/exceptions/Exception.php(4 e?phar-io-manifest/exceptions/InvalidApplicationNameException.php(4 e:@>5phar-io-manifest/exceptions/InvalidEmailException.php(4 e<3phar-io-manifest/exceptions/InvalidUrlException.php(4 e 9phar-io-manifest/exceptions/ManifestDocumentException.php(4 e!P4@phar-io-manifest/exceptions/ManifestDocumentLoadingException.phpH(4 eHǃ?phar-io-manifest/exceptions/ManifestDocumentMapperException.php(4 e:9z8phar-io-manifest/exceptions/ManifestElementException.php(4 eA47phar-io-manifest/exceptions/ManifestLoaderException.php(4 eD>'phar-io-manifest/values/Application.php(4 eI$ۤ+phar-io-manifest/values/ApplicationName.php;(4 e;D"phar-io-manifest/values/Author.php(4 eF,phar-io-manifest/values/AuthorCollection.php(4 eo4phar-io-manifest/values/AuthorCollectionIterator.php3(4 e3џ,phar-io-manifest/values/BundledComponent.php@(4 e@DP`6phar-io-manifest/values/BundledComponentCollection.php (4 e ¾W6>phar-io-manifest/values/BundledComponentCollectionIterator.php(4 eVh0phar-io-manifest/values/CopyrightInformation.phpP(4 eP ai!phar-io-manifest/values/Email.phpN(4 eNZ&%phar-io-manifest/values/Extension.php(4 eq}#phar-io-manifest/values/Library.php(4 eO#phar-io-manifest/values/License.php(4 e&!o$phar-io-manifest/values/Manifest.php +(4 e +=La3phar-io-manifest/values/PhpExtensionRequirement.php(4 e11phar-io-manifest/values/PhpVersionRequirement.php(4 em?'phar-io-manifest/values/Requirement.php(4 ed1phar-io-manifest/values/RequirementCollection.php(4 eP9phar-io-manifest/values/RequirementCollectionIterator.phpj(4 ejܭ: phar-io-manifest/values/Type.php(4 e=%phar-io-manifest/values/Url.php(4 e͚&phar-io-manifest/xml/AuthorElement.phpr(4 er<0phar-io-manifest/xml/AuthorElementCollection.php,(4 e,-'phar-io-manifest/xml/BundlesElement.phpS(4 eSWN>)phar-io-manifest/xml/ComponentElement.phpy(4 eyݤ3phar-io-manifest/xml/ComponentElementCollection.php5(4 e5(\(phar-io-manifest/xml/ContainsElement.phpn(4 enf)phar-io-manifest/xml/CopyrightElement.php(4 e7*phar-io-manifest/xml/ElementCollection.php(4 e@ #phar-io-manifest/xml/ExtElement.php (4 e y>-phar-io-manifest/xml/ExtElementCollection.php#(4 e#E)phar-io-manifest/xml/ExtensionElement.php}(4 e}0'phar-io-manifest/xml/LicenseElement.phpo(4 eo%:')phar-io-manifest/xml/ManifestDocument.php + (4 e + 4(phar-io-manifest/xml/ManifestElement.php4(4 e4#phar-io-manifest/xml/PhpElement.php(4 eB:5(phar-io-manifest/xml/RequiresElement.php$(4 e$>!phar-io-version/BuildMetaData.php(4 ephar-io-version/LICENSE&(4 e&Ҫ $phar-io-version/PreReleaseSuffix.php(4 e:phar-io-version/Version.php(4 eu#+phar-io-version/VersionConstraintParser.phpT (4 eT Ф*phar-io-version/VersionConstraintValue.phpH +(4 eH +F{~4!phar-io-version/VersionNumber.php(4 eO19phar-io-version/constraints/AbstractVersionConstraint.php(4 exB9phar-io-version/constraints/AndVersionConstraintGroup.php(4 eY4phar-io-version/constraints/AnyVersionConstraint.phpR(4 eR #6phar-io-version/constraints/ExactVersionConstraint.php(4 e!Ephar-io-version/constraints/GreaterThanOrEqualToVersionConstraint.php(4 eVU8phar-io-version/constraints/OrVersionConstraintGroup.php(4 eM%Fphar-io-version/constraints/SpecificMajorAndMinorVersionConstraint.php(4 eɍ>phar-io-version/constraints/SpecificMajorVersionConstraint.php(4 e`9q:1phar-io-version/constraints/VersionConstraint.php(4 eeDq(phar-io-version/exceptions/Exception.php(4 e$eb?phar-io-version/exceptions/InvalidPreReleaseSuffixException.php(4 eҵ6phar-io-version/exceptions/InvalidVersionException.php(4 e4/S7phar-io-version/exceptions/NoBuildMetaDataException.php(4 e]:phar-io-version/exceptions/NoPreReleaseSuffixException.php(4 eT4Dphar-io-version/exceptions/UnsupportedVersionConstraintException.php(4 e9"php-code-coverage/CodeCoverage.phpNE(4 eNE3M%#php-code-coverage/Driver/Driver.php(4 e3A'php-code-coverage/Driver/PcovDriver.phpJ(4 eJ)php-code-coverage/Driver/PhpdbgDriver.php^ +(4 e^ +_2G%php-code-coverage/Driver/Selector.php (4 e 6]*php-code-coverage/Driver/Xdebug2Driver.phpA (4 eA *php-code-coverage/Driver/Xdebug3Driver.php (4 e h*Jphp-code-coverage/Exception/BranchAndPathCoverageNotSupportedException.php(4 e77Fphp-code-coverage/Exception/DeadCodeDetectionNotSupportedException.php(4 eCphp-code-coverage/Exception/DirectoryCouldNotBeCreatedException.php(4 e)php-code-coverage/Exception/Exception.php}(4 e}z8php-code-coverage/Exception/InvalidArgumentException.php(4 eK.nFphp-code-coverage/Exception/NoCodeCoverageDriverAvailableException.php/(4 e/6R]php-code-coverage/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.phpa(4 ea"A/php-code-coverage/Exception/ParserException.php(4 e,/Dphp-code-coverage/Exception/PathExistsButIsNotDirectoryException.php(4 e.29php-code-coverage/Exception/PcovNotAvailableException.phpa(4 eaj;php-code-coverage/Exception/PhpdbgNotAvailableException.php`(4 e`3php-code-coverage/Exception/ReflectionException.php(4 ek)?php-code-coverage/Exception/ReportAlreadyFinalizedException.php:(4 e:d%6Iphp-code-coverage/Exception/StaticAnalysisCacheNotConfiguredException.php(4 e}6php-code-coverage/Exception/TestIdMissingException.php(4 e +Cphp-code-coverage/Exception/UnintentionallyCoveredCodeException.php+(4 e+Q_ª=php-code-coverage/Exception/WriteOperationFailedException.php(4 e(e;php-code-coverage/Exception/WrongXdebugVersionException.php(4 e Ȥ:php-code-coverage/Exception/Xdebug2NotEnabledException.phpf(4 ef,':php-code-coverage/Exception/Xdebug3NotEnabledException.phpy(4 ey<>;php-code-coverage/Exception/XdebugNotAvailableException.phpe(4 eeNG,php-code-coverage/Exception/XmlException.php(4 eWܤphp-code-coverage/Filter.php (4 e 4php-code-coverage/LICENSE(4 e-~y֤'php-code-coverage/Node/AbstractNode.php:(4 e:%^"php-code-coverage/Node/Builder.php (4 e 2N$php-code-coverage/Node/CrapIndex.php(4 e# $php-code-coverage/Node/Directory.php +&(4 e +&}php-code-coverage/Node/File.phpK(4 eK{#php-code-coverage/Node/Iterator.php(4 eHk/php-code-coverage/ProcessedCodeCoverageData.php$(4 e$')php-code-coverage/RawCodeCoverageData.php!(4 e!#php-code-coverage/Report/Clover.phpW((4 eW(yD&php-code-coverage/Report/Cobertura.php1(4 e1 Z#php-code-coverage/Report/Crap4j.php<(4 e<r(php-code-coverage/Report/Html/Facade.php"(4 e";ڤ*php-code-coverage/Report/Html/Renderer.phpU!(4 eU!}4php-code-coverage/Report/Html/Renderer/Dashboard.phpC (4 eC L+4php-code-coverage/Report/Html/Renderer/Directory.php (4 e (/php-code-coverage/Report/Html/Renderer/File.php (4 e ZuBphp-code-coverage/Report/Html/Renderer/Template/branches.html.dist(4 eh2+Fphp-code-coverage/Report/Html/Renderer/Template/coverage_bar.html.dist'(4 e'O}Mphp-code-coverage/Report/Html/Renderer/Template/coverage_bar_branch.html.dist'(4 e'O}Ephp-code-coverage/Report/Html/Renderer/Template/css/bootstrap.min.cssy(4 eyĤ>php-code-coverage/Report/Html/Renderer/Template/css/custom.css(4 eAphp-code-coverage/Report/Html/Renderer/Template/css/nv.d3.min.cssX%(4 eX%0,@php-code-coverage/Report/Html/Renderer/Template/css/octicons.cssX(4 eX'#=php-code-coverage/Report/Html/Renderer/Template/css/style.css +(4 e +Cphp-code-coverage/Report/Html/Renderer/Template/dashboard.html.dist(4 eDJphp-code-coverage/Report/Html/Renderer/Template/dashboard_branch.html.dist(4 eDCphp-code-coverage/Report/Html/Renderer/Template/directory.html.dist(4 eՆJphp-code-coverage/Report/Html/Renderer/Template/directory_branch.html.dist(4 en2]Hphp-code-coverage/Report/Html/Renderer/Template/directory_item.html.distA(4 eAdsOphp-code-coverage/Report/Html/Renderer/Template/directory_item_branch.html.dist;(4 e;mۤ>php-code-coverage/Report/Html/Renderer/Template/file.html.distP (4 eP j*Ephp-code-coverage/Report/Html/Renderer/Template/file_branch.html.dist (4 e ㉞Cphp-code-coverage/Report/Html/Renderer/Template/file_item.html.distr(4 er/yJphp-code-coverage/Report/Html/Renderer/Template/file_item_branch.html.distl(4 el-Cphp-code-coverage/Report/Html/Renderer/Template/icons/file-code.svg0(4 e0QUUHphp-code-coverage/Report/Html/Renderer/Template/icons/file-directory.svg(4 eZCphp-code-coverage/Report/Html/Renderer/Template/js/bootstrap.min.jsc(4 ec"#<php-code-coverage/Report/Html/Renderer/Template/js/d3.min.jsP(4 ePhb:php-code-coverage/Report/Html/Renderer/Template/js/file.js(4 eb䆤@php-code-coverage/Report/Html/Renderer/Template/js/jquery.min.js@^(4 e@^ ?php-code-coverage/Report/Html/Renderer/Template/js/nv.d3.min.jsR(4 eRphp-code-coverage/Report/Html/Renderer/Template/line.html.dist(4 e{?php-code-coverage/Report/Html/Renderer/Template/lines.html.diste(4 eedf Ephp-code-coverage/Report/Html/Renderer/Template/method_item.html.dist(4 ejפLphp-code-coverage/Report/Html/Renderer/Template/method_item_branch.html.dist(4 eyĎk?php-code-coverage/Report/Html/Renderer/Template/paths.html.dist(4 e*'ݤ php-code-coverage/Report/PHP.php(4 e<[!php-code-coverage/Report/Text.php'(4 e' 6H1php-code-coverage/Report/Xml/BuildInformation.php (4 e T3e)php-code-coverage/Report/Xml/Coverage.php+(4 e+9E*php-code-coverage/Report/Xml/Directory.php(4 eAf'php-code-coverage/Report/Xml/Facade.php"(4 e"O}%php-code-coverage/Report/Xml/File.php+(4 e+g׃'php-code-coverage/Report/Xml/Method.phpW(4 eW ʤ%php-code-coverage/Report/Xml/Node.php3(4 e3(php-code-coverage/Report/Xml/Project.phpf(4 efPe'php-code-coverage/Report/Xml/Report.php (4 e HC'php-code-coverage/Report/Xml/Source.phpz(4 ez'1&php-code-coverage/Report/Xml/Tests.php(4 e'php-code-coverage/Report/Xml/Totals.php(4 e:6%php-code-coverage/Report/Xml/Unit.php(4 eY0php-code-coverage/StaticAnalysis/CacheWarmer.php`(4 e`_%פ8php-code-coverage/StaticAnalysis/CachingFileAnalyser.php(4 e2Q;php-code-coverage/StaticAnalysis/CodeUnitFindingVisitor.php,((4 e,(vMBphp-code-coverage/StaticAnalysis/ExecutableLinesFindingVisitor.phpm'(4 em'i1php-code-coverage/StaticAnalysis/FileAnalyser.php(4 eJ?php-code-coverage/StaticAnalysis/IgnoredLinesFindingVisitor.php (4 e 8php-code-coverage/StaticAnalysis/ParsingFileAnalyser.php(4 ed%php-code-coverage/Util/Filesystem.php(4 e%php-code-coverage/Util/Percentage.php(4 ephp-code-coverage/Version.php(4 eR郤php-file-iterator/Facade.php% +(4 e% +Τphp-file-iterator/Factory.php(4 eg ,php-file-iterator/Iterator.phpZ (4 eZ C܎php-file-iterator/LICENSE(4 eo:php-invoker/Invoker.php(4 e+L$php-invoker/exceptions/Exception.phpr(4 ervvduDphp-invoker/exceptions/ProcessControlExtensionNotLoadedException.php(4 e +php-invoker/exceptions/TimeoutException.php(4 e.php-text-template/LICENSE(4 euphp-text-template/Template.php( (4 e( *php-text-template/exceptions/Exception.phpy(4 eyn9php-text-template/exceptions/InvalidArgumentException.php(4 eaM1php-text-template/exceptions/RuntimeException.php(4 eYm'php-timer/Duration.php +(4 e +tXyphp-timer/LICENSE(4 ex$php-timer/ResourceUsageFormatter.php(4 ePھphp-timer/Timer.php(4 ecAɤ"php-timer/exceptions/Exception.phpn(4 eniuۤ/php-timer/exceptions/NoActiveTimerException.php(4 el٤Ephp-timer/exceptions/TimeSinceStartOfRequestNotAvailableException.php(4 e$b+phpdocumentor-reflection-common/Element.php (4 e %(phpdocumentor-reflection-common/File.php(4 eI))phpdocumentor-reflection-common/Fqsen.php(4 e?'phpdocumentor-reflection-common/LICENSE9(4 e9*2Ȑ,phpdocumentor-reflection-common/Location.php(4 e=(+phpdocumentor-reflection-common/Project.php(4 eJ2phpdocumentor-reflection-common/ProjectFactory.php_(4 e_j\".phpdocumentor-reflection-docblock/DocBlock.php(4 eHx>$:phpdocumentor-reflection-docblock/DocBlock/Description.php (4 e 54Aphpdocumentor-reflection-docblock/DocBlock/DescriptionFactory.php(4 ed=<phpdocumentor-reflection-docblock/DocBlock/ExampleFinder.php,(4 e,ׯf9phpdocumentor-reflection-docblock/DocBlock/Serializer.php (4 e ]Aphpdocumentor-reflection-docblock/DocBlock/StandardTagFactory.php0(4 e0<2phpdocumentor-reflection-docblock/DocBlock/Tag.php(4 e9phpdocumentor-reflection-docblock/DocBlock/TagFactory.php(4 eJMx:phpdocumentor-reflection-docblock/DocBlock/Tags/Author.php (4 e ;phpdocumentor-reflection-docblock/DocBlock/Tags/BaseTag.php(4 eZr:phpdocumentor-reflection-docblock/DocBlock/Tags/Covers.phpg +(4 eg w8>phpdocumentor-reflection-docblock/DocBlock/Tags/Deprecated.php -c -}CO;phpdocumentor-reflection-docblock/DocBlock/Tags/Example.phpcalN@Hphpdocumentor-reflection-docblock/DocBlock/Tags/Factory/StaticMethod.phpc.ͤ=phpdocumentor-reflection-docblock/DocBlock/Tags/Formatter.phpc}BܤLphpdocumentor-reflection-docblock/DocBlock/Tags/Formatter/AlignFormatter.phpqcqRphpdocumentor-reflection-docblock/DocBlock/Tags/Formatter/PassthroughFormatter.phpcP~;phpdocumentor-reflection-docblock/DocBlock/Tags/Generic.phpx cx Bn>phpdocumentor-reflection-docblock/DocBlock/Tags/InvalidTag.php,c,Md88phpdocumentor-reflection-docblock/DocBlock/Tags/Link.phpcG:phpdocumentor-reflection-docblock/DocBlock/Tags/Method.phpcYKc9phpdocumentor-reflection-docblock/DocBlock/Tags/Param.phpcB<phpdocumentor-reflection-docblock/DocBlock/Tags/Property.php c |yCϤ@phpdocumentor-reflection-docblock/DocBlock/Tags/PropertyRead.php c #k:Aphpdocumentor-reflection-docblock/DocBlock/Tags/PropertyWrite.php c v Cphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Fqsen.php,c,%8Gphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Reference.phpc Aphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Url.phpcc[];phpdocumentor-reflection-docblock/DocBlock/Tags/Return_.phpc N7phpdocumentor-reflection-docblock/DocBlock/Tags/See.php c :e9phpdocumentor-reflection-docblock/DocBlock/Tags/Since.phpW -cW -1>:phpdocumentor-reflection-docblock/DocBlock/Tags/Source.php c [K?phpdocumentor-reflection-docblock/DocBlock/Tags/TagWithType.phpc;u:phpdocumentor-reflection-docblock/DocBlock/Tags/Throws.phpc"G8phpdocumentor-reflection-docblock/DocBlock/Tags/Uses.php> -c> +(4 e +}CO;phpdocumentor-reflection-docblock/DocBlock/Tags/Example.php(4 ealN@Hphpdocumentor-reflection-docblock/DocBlock/Tags/Factory/StaticMethod.php(4 e.ͤ=phpdocumentor-reflection-docblock/DocBlock/Tags/Formatter.php(4 e}BܤLphpdocumentor-reflection-docblock/DocBlock/Tags/Formatter/AlignFormatter.phpq(4 eqRphpdocumentor-reflection-docblock/DocBlock/Tags/Formatter/PassthroughFormatter.php(4 eP~;phpdocumentor-reflection-docblock/DocBlock/Tags/Generic.phpx (4 ex Bn>phpdocumentor-reflection-docblock/DocBlock/Tags/InvalidTag.php,(4 e,Md88phpdocumentor-reflection-docblock/DocBlock/Tags/Link.php(4 eG:phpdocumentor-reflection-docblock/DocBlock/Tags/Method.php(4 eYKc9phpdocumentor-reflection-docblock/DocBlock/Tags/Param.php(4 eB<phpdocumentor-reflection-docblock/DocBlock/Tags/Property.php (4 e |yCϤ@phpdocumentor-reflection-docblock/DocBlock/Tags/PropertyRead.php (4 e #k:Aphpdocumentor-reflection-docblock/DocBlock/Tags/PropertyWrite.php (4 e v Cphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Fqsen.php,(4 e,%8Gphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Reference.php(4 e Aphpdocumentor-reflection-docblock/DocBlock/Tags/Reference/Url.php(4 ec[];phpdocumentor-reflection-docblock/DocBlock/Tags/Return_.php(4 e N7phpdocumentor-reflection-docblock/DocBlock/Tags/See.php (4 e :e9phpdocumentor-reflection-docblock/DocBlock/Tags/Since.phpW +(4 eW +1>:phpdocumentor-reflection-docblock/DocBlock/Tags/Source.php (4 e [K?phpdocumentor-reflection-docblock/DocBlock/Tags/TagWithType.php(4 e;u:phpdocumentor-reflection-docblock/DocBlock/Tags/Throws.php(4 e"G8phpdocumentor-reflection-docblock/DocBlock/Tags/Uses.php> +(4 e>  -8phpdocumentor-reflection-docblock/DocBlock/Tags/Var_.php c u:ڤ;phpdocumentor-reflection-docblock/DocBlock/Tags/Version.php -c -@S5phpdocumentor-reflection-docblock/DocBlockFactory.php$c$br>phpdocumentor-reflection-docblock/DocBlockFactoryInterface.phpc)%ߤ=phpdocumentor-reflection-docblock/Exception/PcreException.phpc V)phpdocumentor-reflection-docblock/LICENSE8c8ʤ+phpdocumentor-reflection-docblock/Utils.php c -phpdocumentor-type-resolver/FqsenResolver.phpcj^#phpdocumentor-type-resolver/LICENSE8c8ʤ*phpdocumentor-type-resolver/PseudoType.phpucu]\:phpdocumentor-type-resolver/PseudoTypes/CallableString.php`c`Z2phpdocumentor-type-resolver/PseudoTypes/False_.phpco䈤=phpdocumentor-type-resolver/PseudoTypes/HtmlEscapedString.phpgcgwe8phpdocumentor-type-resolver/PseudoTypes/IntegerRange.php%c%R1phpdocumentor-type-resolver/PseudoTypes/List_.phpcwu9phpdocumentor-type-resolver/PseudoTypes/LiteralString.php^c^=oNW;phpdocumentor-type-resolver/PseudoTypes/LowercaseString.phpbcb7 ;phpdocumentor-type-resolver/PseudoTypes/NegativeInteger.php[c[DEۤCphpdocumentor-type-resolver/PseudoTypes/NonEmptyLowercaseString.phptct):phpdocumentor-type-resolver/PseudoTypes/NonEmptyString.phpaca²,9phpdocumentor-type-resolver/PseudoTypes/NumericString.php^c^8M4phpdocumentor-type-resolver/PseudoTypes/Numeric_.phpc=k;phpdocumentor-type-resolver/PseudoTypes/PositiveInteger.php[c[H7phpdocumentor-type-resolver/PseudoTypes/TraitString.phpZcZgC1phpdocumentor-type-resolver/PseudoTypes/True_.phpcl$phpdocumentor-type-resolver/Type.phpcb&,phpdocumentor-type-resolver/TypeResolver.php%Uc%UU2phpdocumentor-type-resolver/Types/AbstractList.phptctt4phpdocumentor-type-resolver/Types/AggregatedType.php -c -Hɵ.phpdocumentor-type-resolver/Types/ArrayKey.phpcPĤ,phpdocumentor-type-resolver/Types/Array_.phpc4-phpdocumentor-type-resolver/Types/Boolean.phpncnrĤ/phpdocumentor-type-resolver/Types/Callable_.php{c{E1phpdocumentor-type-resolver/Types/ClassString.phpCcCrvy0phpdocumentor-type-resolver/Types/Collection.phpc?.phpdocumentor-type-resolver/Types/Compound.phpc>7-phpdocumentor-type-resolver/Types/Context.php c ]Z4phpdocumentor-type-resolver/Types/ContextFactory.php6c6\0phpdocumentor-type-resolver/Types/Expression.php8c8g,phpdocumentor-type-resolver/Types/Float_.phpmcm)J-phpdocumentor-type-resolver/Types/Integer.phpjcjv5phpdocumentor-type-resolver/Types/InterfaceString.phpc2phpdocumentor-type-resolver/Types/Intersection.phpcUz$/phpdocumentor-type-resolver/Types/Iterable_.php?c?Q8,phpdocumentor-type-resolver/Types/Mixed_.phpc3i,phpdocumentor-type-resolver/Types/Never_.phpcj+phpdocumentor-type-resolver/Types/Null_.phpxcxs.phpdocumentor-type-resolver/Types/Nullable.phpRcRCp\-phpdocumentor-type-resolver/Types/Object_.phpcwEhN-phpdocumentor-type-resolver/Types/Parent_.phpcO!./phpdocumentor-type-resolver/Types/Resource_.phpcŞX,phpdocumentor-type-resolver/Types/Scalar.phpc+phpdocumentor-type-resolver/Types/Self_.phpcoȤ-phpdocumentor-type-resolver/Types/Static_.phpc8-phpdocumentor-type-resolver/Types/String_.phpscsH*phpdocumentor-type-resolver/Types/This.phpYcY^?ֈ+phpdocumentor-type-resolver/Types/Void_.phpckphpspec-prophecy/LICENSE}c} ߦ&phpspec-prophecy/Prophecy/Argument.phpcn8phpspec-prophecy/Prophecy/Argument/ArgumentsWildcard.phpY cY 0?:phpspec-prophecy/Prophecy/Argument/Token/AnyValueToken.phpc{ܤ;phpspec-prophecy/Prophecy/Argument/Token/AnyValuesToken.phpc'`Bphpspec-prophecy/Prophecy/Argument/Token/ApproximateValueToken.phpc <phpspec-prophecy/Prophecy/Argument/Token/ArrayCountToken.phpc/*2<phpspec-prophecy/Prophecy/Argument/Token/ArrayEntryToken.phpcAphpspec-prophecy/Prophecy/Argument/Token/ArrayEveryEntryToken.phpc#:phpspec-prophecy/Prophecy/Argument/Token/CallbackToken.phpcv<phpspec-prophecy/Prophecy/Argument/Token/ExactValueToken.php c j\@phpspec-prophecy/Prophecy/Argument/Token/IdenticalValueToken.phpcu`S9phpspec-prophecy/Prophecy/Argument/Token/InArrayToken.phpc?xn<phpspec-prophecy/Prophecy/Argument/Token/LogicalAndToken.phpDcD(bL<phpspec-prophecy/Prophecy/Argument/Token/LogicalNotToken.phpXcX5)<phpspec-prophecy/Prophecy/Argument/Token/NotInArrayToken.phpc;=phpspec-prophecy/Prophecy/Argument/Token/ObjectStateToken.php c T@phpspec-prophecy/Prophecy/Argument/Token/StringContainsToken.php-c-3xD;phpspec-prophecy/Prophecy/Argument/Token/TokenInterface.phpc(nGw6phpspec-prophecy/Prophecy/Argument/Token/TypeToken.phpc$'phpspec-prophecy/Prophecy/Call/Call.phpc cc ڟJ-phpspec-prophecy/Prophecy/Call/CallCenter.phpcɝ.:phpspec-prophecy/Prophecy/Comparator/ClosureComparator.phpc40phpspec-prophecy/Prophecy/Comparator/Factory.phpc8! -Ԥ;phpspec-prophecy/Prophecy/Comparator/ProphecyComparator.phpc^^3phpspec-prophecy/Prophecy/Doubler/CachedDoubler.phpcOd\Dphpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.phphchq!ʤHphpspec-prophecy/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.phpc=phpspec-prophecy/Prophecy/Doubler/ClassPatch/KeywordPatch.php c ?phpspec-prophecy/Prophecy/Doubler/ClassPatch/MagicCallPatch.php c Q)7Ephpspec-prophecy/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php c /Pphpspec-prophecy/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.phpcۤAphpspec-prophecy/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.phpi ci [ꢤ?phpspec-prophecy/Prophecy/Doubler/ClassPatch/ThrowablePatch.php c 83Aphpspec-prophecy/Prophecy/Doubler/ClassPatch/TraversablePatch.php c wp5phpspec-prophecy/Prophecy/Doubler/DoubleInterface.phpcBۤ-phpspec-prophecy/Prophecy/Doubler/Doubler.php5c55Bphpspec-prophecy/Prophecy/Doubler/Generator/ClassCodeGenerator.php c <phpspec-prophecy/Prophecy/Doubler/Generator/ClassCreator.phpc扴;phpspec-prophecy/Prophecy/Doubler/Generator/ClassMirror.php c sAphpspec-prophecy/Prophecy/Doubler/Generator/Node/ArgumentNode.phpz cz CiEphpspec-prophecy/Prophecy/Doubler/Generator/Node/ArgumentTypeNode.phpcˤ>phpspec-prophecy/Prophecy/Doubler/Generator/Node/ClassNode.phpc4?phpspec-prophecy/Prophecy/Doubler/Generator/Node/MethodNode.phpoco}-Cphpspec-prophecy/Prophecy/Doubler/Generator/Node/ReturnTypeNode.phpc,X;Ephpspec-prophecy/Prophecy/Doubler/Generator/Node/TypeNodeAbstract.phpz cz a Cphpspec-prophecy/Prophecy/Doubler/Generator/ReflectionInterface.phpc YAphpspec-prophecy/Prophecy/Doubler/Generator/TypeHintReference.phpci0phpspec-prophecy/Prophecy/Doubler/LazyDouble.php c 3phpspec-prophecy/Prophecy/Doubler/NameGenerator.phpcdDphpspec-prophecy/Prophecy/Exception/Call/UnexpectedCallException.phpc}Ephpspec-prophecy/Prophecy/Exception/Doubler/ClassCreatorException.phpcrDphpspec-prophecy/Prophecy/Exception/Doubler/ClassMirrorException.phpcbFphpspec-prophecy/Prophecy/Exception/Doubler/ClassNotFoundException.phpc>?phpspec-prophecy/Prophecy/Exception/Doubler/DoubleException.phpcV"^@phpspec-prophecy/Prophecy/Exception/Doubler/DoublerException.phpchJphpspec-prophecy/Prophecy/Exception/Doubler/InterfaceNotFoundException.phpc&qLphpspec-prophecy/Prophecy/Exception/Doubler/MethodNotExtendableException.phpc[Gphpspec-prophecy/Prophecy/Exception/Doubler/MethodNotFoundException.phpce:Jphpspec-prophecy/Prophecy/Exception/Doubler/ReturnByReferenceException.phpc0+5,1phpspec-prophecy/Prophecy/Exception/Exception.phpcx@phpspec-prophecy/Prophecy/Exception/InvalidArgumentException.phpc󱙤Ephpspec-prophecy/Prophecy/Exception/Prediction/AggregateException.php8c8 .ڤLphpspec-prophecy/Prophecy/Exception/Prediction/FailedPredictionException.phpgcg3'}}Cphpspec-prophecy/Prophecy/Exception/Prediction/NoCallsException.phpcZFphpspec-prophecy/Prophecy/Exception/Prediction/PredictionException.phpcR2ͤPphpspec-prophecy/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php#c#ߤKphpspec-prophecy/Prophecy/Exception/Prediction/UnexpectedCallsException.phpFcF|bHphpspec-prophecy/Prophecy/Exception/Prophecy/MethodProphecyException.phpAcAcHphpspec-prophecy/Prophecy/Exception/Prophecy/ObjectProphecyException.php2c2eBphpspec-prophecy/Prophecy/Exception/Prophecy/ProphecyException.phpcD7jIphpspec-prophecy/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.phpcƤ=phpspec-prophecy/Prophecy/PhpDocumentor/ClassTagRetriever.phpc@%Cphpspec-prophecy/Prophecy/PhpDocumentor/LegacyClassTagRetriever.phpc|6Gphpspec-prophecy/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.phpc17phpspec-prophecy/Prophecy/Prediction/CallPrediction.phpZcZ%U<phpspec-prophecy/Prophecy/Prediction/CallTimesPrediction.php -c -#c;phpspec-prophecy/Prophecy/Prediction/CallbackPrediction.phpc~*:phpspec-prophecy/Prophecy/Prediction/NoCallsPrediction.phpcܼ<phpspec-prophecy/Prophecy/Prediction/PredictionInterface.phpcv5phpspec-prophecy/Prophecy/Promise/CallbackPromise.phpcԌӤ6phpspec-prophecy/Prophecy/Promise/PromiseInterface.phpIcIyv;phpspec-prophecy/Prophecy/Promise/ReturnArgumentPromise.php -c -,s3phpspec-prophecy/Prophecy/Promise/ReturnPromise.php%c%&2phpspec-prophecy/Prophecy/Promise/ThrowPromise.php% c% Q35phpspec-prophecy/Prophecy/Prophecy/MethodProphecy.php29c29S5phpspec-prophecy/Prophecy/Prophecy/ObjectProphecy.phpc#=8phpspec-prophecy/Prophecy/Prophecy/ProphecyInterface.php+c+X?phpspec-prophecy/Prophecy/Prophecy/ProphecySubjectInterface.phpc</phpspec-prophecy/Prophecy/Prophecy/Revealer.phpc m8phpspec-prophecy/Prophecy/Prophecy/RevealerInterface.phpGcGWnZ%phpspec-prophecy/Prophecy/Prophet.phpc-phpspec-prophecy/Prophecy/Util/ExportUtil.phpcbZ-phpspec-prophecy/Prophecy/Util/StringUtil.php -c -{a phpunit.xsdDFcDFs|phpunit/Exception.phpca#phpunit/Framework/Assert.phpRcR6뒤&phpunit/Framework/Assert/Functions.phpc lO0phpunit/Framework/Constraint/Boolean/IsFalse.phpc/phpunit/Framework/Constraint/Boolean/IsTrue.phpc})phpunit/Framework/Constraint/Callback.php?c? -b2phpunit/Framework/Constraint/Cardinality/Count.phpj cj xR@ؤ8phpunit/Framework/Constraint/Cardinality/GreaterThan.phpch,d}4phpunit/Framework/Constraint/Cardinality/IsEmpty.phpchf5phpunit/Framework/Constraint/Cardinality/LessThan.phpca T5phpunit/Framework/Constraint/Cardinality/SameSize.php_c_uŤ+phpunit/Framework/Constraint/Constraint.phpk"ck"@ƍ1phpunit/Framework/Constraint/Equality/IsEqual.php c Ӥ?phpunit/Framework/Constraint/Equality/IsEqualCanonicalizing.php -c +8phpdocumentor-reflection-docblock/DocBlock/Tags/Var_.php (4 e u:ڤ;phpdocumentor-reflection-docblock/DocBlock/Tags/Version.php +(4 e +@S5phpdocumentor-reflection-docblock/DocBlockFactory.php$(4 e$br>phpdocumentor-reflection-docblock/DocBlockFactoryInterface.php(4 e)%ߤ=phpdocumentor-reflection-docblock/Exception/PcreException.php(4 e V)phpdocumentor-reflection-docblock/LICENSE8(4 e8ʤ+phpdocumentor-reflection-docblock/Utils.php (4 e -phpdocumentor-type-resolver/FqsenResolver.php(4 ej^#phpdocumentor-type-resolver/LICENSE8(4 e8ʤ*phpdocumentor-type-resolver/PseudoType.phpu(4 eu]\:phpdocumentor-type-resolver/PseudoTypes/CallableString.php`(4 e`Z2phpdocumentor-type-resolver/PseudoTypes/False_.php(4 eo䈤=phpdocumentor-type-resolver/PseudoTypes/HtmlEscapedString.phpg(4 egwe8phpdocumentor-type-resolver/PseudoTypes/IntegerRange.php%(4 e%R1phpdocumentor-type-resolver/PseudoTypes/List_.php(4 ewu9phpdocumentor-type-resolver/PseudoTypes/LiteralString.php^(4 e^=oNW;phpdocumentor-type-resolver/PseudoTypes/LowercaseString.phpb(4 eb7 ;phpdocumentor-type-resolver/PseudoTypes/NegativeInteger.php[(4 e[DEۤCphpdocumentor-type-resolver/PseudoTypes/NonEmptyLowercaseString.phpt(4 et):phpdocumentor-type-resolver/PseudoTypes/NonEmptyString.phpa(4 ea²,9phpdocumentor-type-resolver/PseudoTypes/NumericString.php^(4 e^8M4phpdocumentor-type-resolver/PseudoTypes/Numeric_.php(4 e=k;phpdocumentor-type-resolver/PseudoTypes/PositiveInteger.php[(4 e[H7phpdocumentor-type-resolver/PseudoTypes/TraitString.phpZ(4 eZgC1phpdocumentor-type-resolver/PseudoTypes/True_.php(4 el$phpdocumentor-type-resolver/Type.php(4 eb&,phpdocumentor-type-resolver/TypeResolver.php%U(4 e%UU2phpdocumentor-type-resolver/Types/AbstractList.phpt(4 ett4phpdocumentor-type-resolver/Types/AggregatedType.php +(4 e +Hɵ.phpdocumentor-type-resolver/Types/ArrayKey.php(4 ePĤ,phpdocumentor-type-resolver/Types/Array_.php(4 e4-phpdocumentor-type-resolver/Types/Boolean.phpn(4 enrĤ/phpdocumentor-type-resolver/Types/Callable_.php{(4 e{E1phpdocumentor-type-resolver/Types/ClassString.phpC(4 eCrvy0phpdocumentor-type-resolver/Types/Collection.php(4 e?.phpdocumentor-type-resolver/Types/Compound.php(4 e>7-phpdocumentor-type-resolver/Types/Context.php (4 e ]Z4phpdocumentor-type-resolver/Types/ContextFactory.php6(4 e6\0phpdocumentor-type-resolver/Types/Expression.php8(4 e8g,phpdocumentor-type-resolver/Types/Float_.phpm(4 em)J-phpdocumentor-type-resolver/Types/Integer.phpj(4 ejv5phpdocumentor-type-resolver/Types/InterfaceString.php(4 e2phpdocumentor-type-resolver/Types/Intersection.php(4 eUz$/phpdocumentor-type-resolver/Types/Iterable_.php?(4 e?Q8,phpdocumentor-type-resolver/Types/Mixed_.php(4 e3i,phpdocumentor-type-resolver/Types/Never_.php(4 ej+phpdocumentor-type-resolver/Types/Null_.phpx(4 exs.phpdocumentor-type-resolver/Types/Nullable.phpR(4 eRCp\-phpdocumentor-type-resolver/Types/Object_.php(4 ewEhN-phpdocumentor-type-resolver/Types/Parent_.php(4 eO!./phpdocumentor-type-resolver/Types/Resource_.php(4 eŞX,phpdocumentor-type-resolver/Types/Scalar.php(4 e+phpdocumentor-type-resolver/Types/Self_.php(4 eoȤ-phpdocumentor-type-resolver/Types/Static_.php(4 e8-phpdocumentor-type-resolver/Types/String_.phps(4 esH*phpdocumentor-type-resolver/Types/This.phpY(4 eY^?ֈ+phpdocumentor-type-resolver/Types/Void_.php(4 ekphpspec-prophecy/LICENSE}(4 e} ߦ&phpspec-prophecy/Prophecy/Argument.php](4 e]eQ8phpspec-prophecy/Prophecy/Argument/ArgumentsWildcard.php (4 e N<:phpspec-prophecy/Prophecy/Argument/Token/AnyValueToken.php(4 eIZ%%;phpspec-prophecy/Prophecy/Argument/Token/AnyValuesToken.php(4 e'`Bphpspec-prophecy/Prophecy/Argument/Token/ApproximateValueToken.phpm(4 em٬c<phpspec-prophecy/Prophecy/Argument/Token/ArrayCountToken.phpQ(4 eQ_穤<phpspec-prophecy/Prophecy/Argument/Token/ArrayEntryToken.php(4 eRAphpspec-prophecy/Prophecy/Argument/Token/ArrayEveryEntryToken.php(4 e#:phpspec-prophecy/Prophecy/Argument/Token/CallbackToken.php(4 ef"<phpspec-prophecy/Prophecy/Argument/Token/ExactValueToken.php (4 e :٤@phpspec-prophecy/Prophecy/Argument/Token/IdenticalValueToken.php(4 e49phpspec-prophecy/Prophecy/Argument/Token/InArrayToken.php(4 eͪ!<phpspec-prophecy/Prophecy/Argument/Token/LogicalAndToken.php(4 e<phpspec-prophecy/Prophecy/Argument/Token/LogicalNotToken.phpA(4 eA<phpspec-prophecy/Prophecy/Argument/Token/NotInArrayToken.php(4 e=phpspec-prophecy/Prophecy/Argument/Token/ObjectStateToken.php +(4 e +#"lV@phpspec-prophecy/Prophecy/Argument/Token/StringContainsToken.php-(4 e-3xD;phpspec-prophecy/Prophecy/Argument/Token/TokenInterface.php(4 eG66phpspec-prophecy/Prophecy/Argument/Token/TypeToken.php(4 e$'phpspec-prophecy/Prophecy/Call/Call.php(4 e΂-phpspec-prophecy/Prophecy/Call/CallCenter.php(4 e\%-j:phpspec-prophecy/Prophecy/Comparator/ClosureComparator.php(4 eO0phpspec-prophecy/Prophecy/Comparator/Factory.php(4 eU%8phpspec-prophecy/Prophecy/Comparator/FactoryProvider.php(4 ek;phpspec-prophecy/Prophecy/Comparator/ProphecyComparator.php (4 e 3phpspec-prophecy/Prophecy/Doubler/CachedDoubler.php(4 eUWDphpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.phph(4 ehq!ʤHphpspec-prophecy/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php(4 e,g=phpspec-prophecy/Prophecy/Doubler/ClassPatch/KeywordPatch.php'(4 e'?phpspec-prophecy/Prophecy/Doubler/ClassPatch/MagicCallPatch.php (4 e Q)7Ephpspec-prophecy/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php$ (4 e$ bBۀPphpspec-prophecy/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php(4 e +,Aphpspec-prophecy/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php@ (4 e@ YyG?phpspec-prophecy/Prophecy/Doubler/ClassPatch/ThrowablePatch.php" (4 e" aԤAphpspec-prophecy/Prophecy/Doubler/ClassPatch/TraversablePatch.php (4 e wp5phpspec-prophecy/Prophecy/Doubler/DoubleInterface.php(4 eBۤ-phpspec-prophecy/Prophecy/Doubler/Doubler.php(4 ePvlBphpspec-prophecy/Prophecy/Doubler/Generator/ClassCodeGenerator.php (4 e Wy<phpspec-prophecy/Prophecy/Doubler/Generator/ClassCreator.phpb(4 ebH1ؤ;phpspec-prophecy/Prophecy/Doubler/Generator/ClassMirror.php#(4 e#Aphpspec-prophecy/Prophecy/Doubler/Generator/Node/ArgumentNode.php(4 eZfEphpspec-prophecy/Prophecy/Doubler/Generator/Node/ArgumentTypeNode.php(4 eˤ>phpspec-prophecy/Prophecy/Doubler/Generator/Node/ClassNode.phpN(4 eN׉ ?phpspec-prophecy/Prophecy/Doubler/Generator/Node/MethodNode.php(4 eCphpspec-prophecy/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php(4 eCٮEphpspec-prophecy/Prophecy/Doubler/Generator/Node/TypeNodeAbstract.php (4 e eCphpspec-prophecy/Prophecy/Doubler/Generator/ReflectionInterface.php(4 e YAphpspec-prophecy/Prophecy/Doubler/Generator/TypeHintReference.php"(4 e"&0phpspec-prophecy/Prophecy/Doubler/LazyDouble.php (4 e 3phpspec-prophecy/Prophecy/Doubler/NameGenerator.php(4 e,ôyDphpspec-prophecy/Prophecy/Exception/Call/UnexpectedCallException.php(4 eOEphpspec-prophecy/Prophecy/Exception/Doubler/ClassCreatorException.phpD(4 eDyXDphpspec-prophecy/Prophecy/Exception/Doubler/ClassMirrorException.phpd(4 edv48Fphpspec-prophecy/Prophecy/Exception/Doubler/ClassNotFoundException.php(4 e}:?phpspec-prophecy/Prophecy/Exception/Doubler/DoubleException.php(4 eV"^@phpspec-prophecy/Prophecy/Exception/Doubler/DoublerException.php(4 ehJphpspec-prophecy/Prophecy/Exception/Doubler/InterfaceNotFoundException.php!(4 e!R3Lphpspec-prophecy/Prophecy/Exception/Doubler/MethodNotExtendableException.php(4 e[Gphpspec-prophecy/Prophecy/Exception/Doubler/MethodNotFoundException.php(4 e#kJphpspec-prophecy/Prophecy/Exception/Doubler/ReturnByReferenceException.php(4 eL?1phpspec-prophecy/Prophecy/Exception/Exception.php(4 ex@phpspec-prophecy/Prophecy/Exception/InvalidArgumentException.php(4 e󱙤Ephpspec-prophecy/Prophecy/Exception/Prediction/AggregateException.php;(4 e;.Lphpspec-prophecy/Prophecy/Exception/Prediction/FailedPredictionException.phpg(4 eg3'}}Cphpspec-prophecy/Prophecy/Exception/Prediction/NoCallsException.php(4 eZFphpspec-prophecy/Prophecy/Exception/Prediction/PredictionException.php(4 eR2ͤPphpspec-prophecy/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php (4 e ڶKphpspec-prophecy/Prophecy/Exception/Prediction/UnexpectedCallsException.php(4 eHphpspec-prophecy/Prophecy/Exception/Prophecy/MethodProphecyException.phpo(4 eoHphpspec-prophecy/Prophecy/Exception/Prophecy/ObjectProphecyException.php(4 eg6ڤBphpspec-prophecy/Prophecy/Exception/Prophecy/ProphecyException.php(4 eD7jIphpspec-prophecy/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php\(4 e\,|Ϥ=phpspec-prophecy/Prophecy/PhpDocumentor/ClassTagRetriever.php(4 eGphpspec-prophecy/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php(4 eB7phpspec-prophecy/Prophecy/Prediction/CallPrediction.php"(4 e"Ҷڤ<phpspec-prophecy/Prophecy/Prediction/CallTimesPrediction.phpH (4 eH ,;phpspec-prophecy/Prophecy/Prediction/CallbackPrediction.php(4 e :phpspec-prophecy/Prophecy/Prediction/NoCallsPrediction.php>(4 e>y<phpspec-prophecy/Prophecy/Prediction/PredictionInterface.php(4 eD5phpspec-prophecy/Prophecy/Promise/CallbackPromise.php#(4 e#26phpspec-prophecy/Prophecy/Promise/PromiseInterface.phpa(4 eaĶ= +;phpspec-prophecy/Prophecy/Promise/ReturnArgumentPromise.phpE(4 eEj3phpspec-prophecy/Prophecy/Promise/ReturnPromise.phpu(4 euR2phpspec-prophecy/Prophecy/Promise/ThrowPromise.php +(4 e +cb5phpspec-prophecy/Prophecy/Prophecy/MethodProphecy.phpt<(4 et<n(5phpspec-prophecy/Prophecy/Prophecy/ObjectProphecy.php(4 eVK%8phpspec-prophecy/Prophecy/Prophecy/ProphecyInterface.phpq(4 eqhRw¤?phpspec-prophecy/Prophecy/Prophecy/ProphecySubjectInterface.php(4 eġAr/phpspec-prophecy/Prophecy/Prophecy/Revealer.php(4 e m8phpspec-prophecy/Prophecy/Prophecy/RevealerInterface.phpG(4 eGWnZ%phpspec-prophecy/Prophecy/Prophet.php(4 eNȤ-phpspec-prophecy/Prophecy/Util/ExportUtil.php(4 et-phpspec-prophecy/Prophecy/Util/StringUtil.php +(4 e +v|= phpunit.xsdRF(4 eRFAgphpunit/Exception.php(4 ea#phpunit/Framework/Assert.phpc(4 ectN&phpunit/Framework/Assert/Functions.php (4 e s0phpunit/Framework/Constraint/Boolean/IsFalse.php(4 e/phpunit/Framework/Constraint/Boolean/IsTrue.php(4 e})phpunit/Framework/Constraint/Callback.php?(4 e? +b2phpunit/Framework/Constraint/Cardinality/Count.phpj (4 ej xR@ؤ8phpunit/Framework/Constraint/Cardinality/GreaterThan.php(4 eh,d}4phpunit/Framework/Constraint/Cardinality/IsEmpty.php(4 ehf5phpunit/Framework/Constraint/Cardinality/LessThan.php(4 ea T5phpunit/Framework/Constraint/Cardinality/SameSize.php_(4 e_uŤ+phpunit/Framework/Constraint/Constraint.php"(4 e"*yK1phpunit/Framework/Constraint/Equality/IsEqual.php (4 e \hh?phpunit/Framework/Constraint/Equality/IsEqualCanonicalizing.php +(4 e ~=phpunit/Framework/Constraint/Equality/IsEqualIgnoringCase.php -c -C\:phpunit/Framework/Constraint/Equality/IsEqualWithDelta.php -c -64phpunit/Framework/Constraint/Exception/Exception.phpcRu{8phpunit/Framework/Constraint/Exception/ExceptionCode.phpciأ;phpunit/Framework/Constraint/Exception/ExceptionMessage.phpcw;Lphpunit/Framework/Constraint/Exception/ExceptionMessageRegularExpression.phpcLj[i;phpunit/Framework/Constraint/Filesystem/DirectoryExists.phpjcji+6phpunit/Framework/Constraint/Filesystem/FileExists.phpeceK6phpunit/Framework/Constraint/Filesystem/IsReadable.phpece16phpunit/Framework/Constraint/Filesystem/IsWritable.phpece+phpunit/Framework/Constraint/IsAnything.phpcE,phpunit/Framework/Constraint/IsIdentical.php c &,phpunit/Framework/Constraint/JsonMatches.phpz cz 'R@phpunit/Framework/Constraint/JsonMatchesErrorMessageProvider.php5c5mһ.phpunit/Framework/Constraint/Math/IsFinite.phpcZҗ0phpunit/Framework/Constraint/Math/IsInfinite.phpc'*~+phpunit/Framework/Constraint/Math/IsNan.phpc4g09phpunit/Framework/Constraint/Object/ClassHasAttribute.phphch<%D?phpunit/Framework/Constraint/Object/ClassHasStaticAttribute.phpcݫؤ4phpunit/Framework/Constraint/Object/ObjectEquals.php -c -0W:phpunit/Framework/Constraint/Object/ObjectHasAttribute.php[c[Fm8phpunit/Framework/Constraint/Operator/BinaryOperator.phpGcGS\4phpunit/Framework/Constraint/Operator/LogicalAnd.phpcbJ4phpunit/Framework/Constraint/Operator/LogicalNot.php c 3phpunit/Framework/Constraint/Operator/LogicalOr.phpcZ4phpunit/Framework/Constraint/Operator/LogicalXor.php$c$O2phpunit/Framework/Constraint/Operator/Operator.php&c& Dܤ7phpunit/Framework/Constraint/Operator/UnaryOperator.php -c - a.phpunit/Framework/Constraint/String/IsJson.phpc\@9phpunit/Framework/Constraint/String/RegularExpression.phpc+J6phpunit/Framework/Constraint/String/StringContains.phpcij"6phpunit/Framework/Constraint/String/StringEndsWith.phpc{Fphpunit/Framework/Constraint/String/StringMatchesFormatDescription.php -c -J8phpunit/Framework/Constraint/String/StringStartsWith.phpBcBߤ8phpunit/Framework/Constraint/Traversable/ArrayHasKey.phpc6@!@phpunit/Framework/Constraint/Traversable/TraversableContains.phpcEphpunit/Framework/Constraint/Traversable/TraversableContainsEqual.phpacawAIphpunit/Framework/Constraint/Traversable/TraversableContainsIdentical.php'c'sӤDphpunit/Framework/Constraint/Traversable/TraversableContainsOnly.php c RuФ2phpunit/Framework/Constraint/Type/IsInstanceOf.php:c:@,phpunit/Framework/Constraint/Type/IsNull.phpc?),phpunit/Framework/Constraint/Type/IsType.phpcGȤ+phpunit/Framework/DataProviderTestSuite.phpc\8&phpunit/Framework/Error/Deprecated.phpzczV!phpunit/Framework/Error/Error.phplcl]"phpunit/Framework/Error/Notice.phpvcvˤ#phpunit/Framework/Error/Warning.phpwcwG#phpunit/Framework/ErrorTestCase.phpc̤Aphpunit/Framework/Exception/ActualValueIsNotAnObjectException.phpc`B4phpunit/Framework/Exception/AssertionFailedError.phpc5phpunit/Framework/Exception/CodeCoverageException.phpc[Sphpunit/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.phpkckphpunit/Framework/MockObject/Exception/ReflectionException.phpc.ؔLphpunit/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php6c6?먙;phpunit/Framework/MockObject/Exception/RuntimeException.phpc_|Mphpunit/Framework/MockObject/Exception/SoapExtensionNotAvailableException.phpcz@phpunit/Framework/MockObject/Exception/UnknownClassException.phpc5uW@phpunit/Framework/MockObject/Exception/UnknownTraitException.phpcq¥?phpunit/Framework/MockObject/Exception/UnknownTypeException.phpc~*phpunit/Framework/MockObject/Generator.phpbcbiEۤ6phpunit/Framework/MockObject/Generator/deprecation.tpl;c;O5s7phpunit/Framework/MockObject/Generator/intersection.tplLcL-X7phpunit/Framework/MockObject/Generator/mocked_class.tplcwZ8phpunit/Framework/MockObject/Generator/mocked_method.tplFcFKFphpunit/Framework/MockObject/Generator/mocked_method_never_or_void.tplcp?phpunit/Framework/MockObject/Generator/mocked_static_method.tplc 4R9phpunit/Framework/MockObject/Generator/proxied_method.tpl}c}@ėGphpunit/Framework/MockObject/Generator/proxied_method_never_or_void.tplvcvT6phpunit/Framework/MockObject/Generator/trait_class.tplQcQ<Ȥ5phpunit/Framework/MockObject/Generator/wsdl_class.tplc6phpunit/Framework/MockObject/Generator/wsdl_method.tpl<c<i+phpunit/Framework/MockObject/Invocation.phpcid2phpunit/Framework/MockObject/InvocationHandler.php:c:ˤ(phpunit/Framework/MockObject/Matcher.phpcD-5phpunit/Framework/MockObject/MethodNameConstraint.php -c -A1|,phpunit/Framework/MockObject/MockBuilder.phpY+cY+ϴ=*phpunit/Framework/MockObject/MockClass.phpc'C+phpunit/Framework/MockObject/MockMethod.phpz&cz&p.phpunit/Framework/MockObject/MockMethodSet.php8c8G\+phpunit/Framework/MockObject/MockObject.phpcbt*phpunit/Framework/MockObject/MockTrait.phpc&nä)phpunit/Framework/MockObject/MockType.phpcFFt5phpunit/Framework/MockObject/Rule/AnyInvokedCount.phpjcj`Ť3phpunit/Framework/MockObject/Rule/AnyParameters.phpc~';phpunit/Framework/MockObject/Rule/ConsecutiveParameters.phpl cl z'%5phpunit/Framework/MockObject/Rule/InvocationOrder.phpcLDӤ4phpunit/Framework/MockObject/Rule/InvokedAtIndex.php,c,kK9phpunit/Framework/MockObject/Rule/InvokedAtLeastCount.phpcB8phpunit/Framework/MockObject/Rule/InvokedAtLeastOnce.php-c- (8phpunit/Framework/MockObject/Rule/InvokedAtMostCount.phpcgY2phpunit/Framework/MockObject/Rule/InvokedCount.php c ^ 0phpunit/Framework/MockObject/Rule/MethodName.phpc -WG0phpunit/Framework/MockObject/Rule/Parameters.phpQcQ`g|4phpunit/Framework/MockObject/Rule/ParametersRule.phpccc?(%phpunit/Framework/MockObject/Stub.phpcŎ6phpunit/Framework/MockObject/Stub/ConsecutiveCalls.php c ./phpunit/Framework/MockObject/Stub/Exception.php(c(J4phpunit/Framework/MockObject/Stub/ReturnArgument.phpc?}64phpunit/Framework/MockObject/Stub/ReturnCallback.phpcD0Ӥ5phpunit/Framework/MockObject/Stub/ReturnReference.php c f0phpunit/Framework/MockObject/Stub/ReturnSelf.php4c4DD0phpunit/Framework/MockObject/Stub/ReturnStub.phpc4phpunit/Framework/MockObject/Stub/ReturnValueMap.phpcۤ*phpunit/Framework/MockObject/Stub/Stub.php3c3>++phpunit/Framework/MockObject/Verifiable.phpc̐ s!phpunit/Framework/Reorderable.phpcz0$phpunit/Framework/SelfDescribing.php -c -s!phpunit/Framework/SkippedTest.phpcS.%phpunit/Framework/SkippedTestCase.phpcl]phpunit/Framework/Test.php~c~wt!phpunit/Framework/TestBuilder.php"c"14jphpunit/Framework/TestCase.php#c#!phpunit/Framework/TestFailure.phpc'q"phpunit/Framework/TestListener.phprcrӪc^7phpunit/Framework/TestListenerDefaultImplementation.php'c'! phpunit/Framework/TestResult.php~c~+ۤphpunit/Framework/TestSuite.php7cc7c^'phpunit/Framework/TestSuiteIterator.php6c6$ u%phpunit/Framework/WarningTestCase.php$c$Hޤ!phpunit/Runner/BaseTestRunner.php c C +)phpunit/Runner/DefaultTestResultCache.php!c!/i^phpunit/Runner/Exception.phpczZ-phpunit/Runner/Extension/ExtensionHandler.php c Az'phpunit/Runner/Extension/PharLoader.php c c4phpunit/Runner/Filter/ExcludeGroupFilterIterator.phpscs} -Z!phpunit/Runner/Filter/Factory.phpcdcΤ-phpunit/Runner/Filter/GroupFilterIterator.phpc=;4phpunit/Runner/Filter/IncludeGroupFilterIterator.phprcrP;AD,phpunit/Runner/Filter/NameFilterIterator.phpv cv Z/phpunit/Runner/Hook/AfterIncompleteTestHook.php-c-zԤ)phpunit/Runner/Hook/AfterLastTestHook.phpc0B֤*phpunit/Runner/Hook/AfterRiskyTestHook.php#c#dm,phpunit/Runner/Hook/AfterSkippedTestHook.php'c':/phpunit/Runner/Hook/AfterSuccessfulTestHook.phpc5w*phpunit/Runner/Hook/AfterTestErrorHook.php#c#ݮ,phpunit/Runner/Hook/AfterTestFailureHook.php'c'2F%phpunit/Runner/Hook/AfterTestHook.phpc;gA,phpunit/Runner/Hook/AfterTestWarningHook.php'c'':+phpunit/Runner/Hook/BeforeFirstTestHook.phpchWt&phpunit/Runner/Hook/BeforeTestHook.phpc"bphpunit/Runner/Hook/Hook.phpc. phpunit/Runner/Hook/TestHook.phpcZ_ -+phpunit/Runner/Hook/TestListenerAdapter.phpc\6E&phpunit/Runner/NullTestResultCache.phpcW<phpunit/Runner/PhptTestCase.phpRVcRVԴO'phpunit/Runner/ResultCacheExtension.php<c<6 _*phpunit/Runner/StandardTestSuiteLoader.phpc;i Ȥ"phpunit/Runner/TestResultCache.phpcK"phpunit/Runner/TestSuiteLoader.phpcޤ"phpunit/Runner/TestSuiteSorter.php,c,kڤphpunit/Runner/Version.phpcJ'phpunit/TextUI/CliArguments/Builder.phpTcTɣۤ-phpunit/TextUI/CliArguments/Configuration.phpcX)phpunit/TextUI/CliArguments/Exception.phpc%zE&phpunit/TextUI/CliArguments/Mapper.php+,c+,'aphpunit/TextUI/Command.php_nc_nkF/'phpunit/TextUI/DefaultResultPrinter.phpY7cY7}G(J&phpunit/TextUI/Exception/Exception.phpcD{i0phpunit/TextUI/Exception/ReflectionException.phpc Y-phpunit/TextUI/Exception/RuntimeException.phpcF;phpunit/TextUI/Exception/TestDirectoryNotFoundException.phpc6phpunit/TextUI/Exception/TestFileNotFoundException.phpcpCphpunit/TextUI/Help.php.c.  phpunit/TextUI/ResultPrinter.phppcpܤphpunit/TextUI/TestRunner.php,c,WFϤ"phpunit/TextUI/TestSuiteMapper.php c +;-=phpunit/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.phpcrAphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.phpcc{Kphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.phpcju}Sphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.phpcJ=phpunit/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.phpc}ݚ>phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.phpc=CAphpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.phpci>phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.phpcG<phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Html.phpcE6;phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Php.phpcpS<phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Text.phpcKkw;phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.phpc?u1phpunit/TextUI/XmlConfiguration/Configuration.php5c5˞-phpunit/TextUI/XmlConfiguration/Exception.phpcN5+8phpunit/TextUI/XmlConfiguration/Filesystem/Directory.phpc@Bphpunit/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.phpc1EqJphpunit/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.phpc&3phpunit/TextUI/XmlConfiguration/Filesystem/File.phpc.P =phpunit/TextUI/XmlConfiguration/Filesystem/FileCollection.php~c~]rEphpunit/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.phpfcfĤ-phpunit/TextUI/XmlConfiguration/Generator.phpcF /phpunit/TextUI/XmlConfiguration/Group/Group.phpc9phpunit/TextUI/XmlConfiguration/Group/GroupCollection.phpcyAphpunit/TextUI/XmlConfiguration/Group/GroupCollectionIterator.phpqcqY50phpunit/TextUI/XmlConfiguration/Group/Groups.phpc@I*phpunit/TextUI/XmlConfiguration/Loader.phpccB1phpunit/TextUI/XmlConfiguration/Logging/Junit.phpcciG3phpunit/TextUI/XmlConfiguration/Logging/Logging.php c ]٤4phpunit/TextUI/XmlConfiguration/Logging/TeamCity.phpc7Z鵤8phpunit/TextUI/XmlConfiguration/Logging/TestDox/Html.phpcV2ܤ8phpunit/TextUI/XmlConfiguration/Logging/TestDox/Text.phpcώ7phpunit/TextUI/XmlConfiguration/Logging/TestDox/Xml.phpct0phpunit/TextUI/XmlConfiguration/Logging/Text.phpcCn>phpunit/TextUI/XmlConfiguration/Migration/MigrationBuilder.php# c# gGphpunit/TextUI/XmlConfiguration/Migration/MigrationBuilderException.phpcUWĝ@phpunit/TextUI/XmlConfiguration/Migration/MigrationException.phpc\ZHphpunit/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.phpchoeOphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.phpXcXijOphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.phpc$i'Mphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.phpcՄjLphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.phpFcF^ӤMphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.phpcV_Lphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.phpKcK_ Qphpunit/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.phpcUMphpunit/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.phpcUBphpunit/TextUI/XmlConfiguration/Migration/Migrations/Migration.phpc'dphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.phpcU%5Yphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.phpCcCcF[phpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.phpc†踤Xphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.phpcSphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.phpcwJphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php{c{KGphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.phpoco3Qphpunit/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.phpcbJ6phpunit/TextUI/XmlConfiguration/Migration/Migrator.phpco$V0phpunit/TextUI/XmlConfiguration/PHP/Constant.php7c7$Ҥ:phpunit/TextUI/XmlConfiguration/PHP/ConstantCollection.phplcl%(Bphpunit/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.phpc}=Ƥ2phpunit/TextUI/XmlConfiguration/PHP/IniSetting.phpJcJOt<phpunit/TextUI/XmlConfiguration/PHP/IniSettingCollection.phpcޛ;Dphpunit/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.phpc/mo+phpunit/TextUI/XmlConfiguration/PHP/Php.phpc6僤2phpunit/TextUI/XmlConfiguration/PHP/PhpHandler.phpwcw` -0phpunit/TextUI/XmlConfiguration/PHP/Variable.phpcN:phpunit/TextUI/XmlConfiguration/PHP/VariableCollection.phplclsB@٤Bphpunit/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.phpc!~gȤ5phpunit/TextUI/XmlConfiguration/PHPUnit/Extension.phpc}Q?phpunit/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.phpco;RGphpunit/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.phpc|D?3phpunit/TextUI/XmlConfiguration/PHPUnit/PHPUnit.phplCclCv;phpunit/TextUI/XmlConfiguration/TestSuite/TestDirectory.phpCcC0Ephpunit/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.phpcLCMphpunit/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.phpcn6phpunit/TextUI/XmlConfiguration/TestSuite/TestFile.phpc?y@phpunit/TextUI/XmlConfiguration/TestSuite/TestFileCollection.phpcXHphpunit/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.phpzczX17phpunit/TextUI/XmlConfiguration/TestSuite/TestSuite.phpc8wAphpunit/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.phpc/jIphpunit/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.phpc+6$phpunit/Util/Annotation/DocBlock.phpAcA+$phpunit/Util/Annotation/Registry.phpN -cN -?caphpunit/Util/Blacklist.phpcsphpunit/Util/Cloner.phpc"Ɩܤphpunit/Util/Color.phpcj?phpunit/Util/ErrorHandler.phpc=phpunit/Util/Exception.phpc다phpunit/Util/ExcludeList.phpc%akphpunit/Util/FileLoader.php c 'phpunit/Util/Filesystem.phpcܐphpunit/Util/Filter.php c l* phpunit/Util/GlobalState.php=c=z(phpunit/Util/InvalidDataSetException.phpc1 phpunit/Util/Json.phpE cE !phpunit/Util/Log/JUnit.phpb*cb*}3phpunit/Util/Log/TeamCity.phpy&cy&4g'phpunit/Util/PHP/AbstractPhpProcess.php&c&%m&phpunit/Util/PHP/DefaultPhpProcess.phpzczCp*phpunit/Util/PHP/Template/PhptTestCase.tplc+phpunit/Util/PHP/Template/TestCaseClass.tplp cp 3 H݀,phpunit/Util/PHP/Template/TestCaseMethod.tpl c mD&phpunit/Util/PHP/WindowsPhpProcess.phpc)aBphpunit/Util/Printer.php c shphpunit/Util/Reflection.phpcW챤"phpunit/Util/RegularExpression.phpc0uR)phpunit/Util/Test.php]c] *phpunit/Util/TestDox/CliTestDoxPrinter.php(*c(*@f*phpunit/Util/TestDox/HtmlResultPrinter.php -c -t&'phpunit/Util/TestDox/NamePrettifier.php/"c/"p~J&phpunit/Util/TestDox/ResultPrinter.php"c"1q$'phpunit/Util/TestDox/TestDoxPrinter.php)c)K̤*phpunit/Util/TestDox/TextResultPrinter.phpcȹ!.)phpunit/Util/TestDox/XmlResultPrinter.phpcQ%phpunit/Util/TextTestListRenderer.php6c6.phpunit/Util/Type.phpc|ä*phpunit/Util/VersionComparisonOperator.phpcb,phpunit/Util/XdebugFilterScriptGenerator.phpwcwتphpunit/Util/Xml.phpc̤phpunit/Util/Xml/Exception.phpcӤ0phpunit/Util/Xml/FailedSchemaDetectionResult.phpc#Sphpunit/Util/Xml/Loader.php c ,?*phpunit/Util/Xml/SchemaDetectionResult.phpc4χz#phpunit/Util/Xml/SchemaDetector.php-c-!phpunit/Util/Xml/SchemaFinder.phpcS%phpunit/Util/Xml/SnapshotNodeList.phpHcH ^d4phpunit/Util/Xml/SuccessfulSchemaDetectionResult.php'c'g%phpunit/Util/Xml/ValidationResult.phpcxv:phpunit/Util/Xml/Validator.phpcV$phpunit/Util/XmlTestListRenderer.php -c -8sbom.xml /c / Ҍschema/8.5.xsdBcB贅schema/9.2.xsdBcB|lsebastian-cli-parser/LICENSEcusebastian-cli-parser/Parser.phpckM<sebastian-cli-parser/exceptions/AmbiguousOptionException.phpFcFm\-sebastian-cli-parser/exceptions/Exception.phpucuӫGsebastian-cli-parser/exceptions/OptionDoesNotAllowArgumentException.php_c_|13Jsebastian-cli-parser/exceptions/RequiredOptionArgumentMissingException.phphchC:sebastian-cli-parser/exceptions/UnknownOptionException.php?c?vD*sebastian-code-unit-reverse-lookup/LICENSEc3G (-sebastian-code-unit-reverse-lookup/Wizard.php c }Z['sebastian-code-unit/ClassMethodUnit.phpc@[!sebastian-code-unit/ClassUnit.phpcF sebastian-code-unit/CodeUnit.php~%c~%D){*sebastian-code-unit/CodeUnitCollection.phpcJ2sebastian-code-unit/CodeUnitCollectionIterator.php;c;Lʤ$sebastian-code-unit/FunctionUnit.phpc`+sebastian-code-unit/InterfaceMethodUnit.phpcǦ%sebastian-code-unit/InterfaceUnit.phpccsebastian-code-unit/LICENSE c psebastian-code-unit/Mapper.php-c-#'sebastian-code-unit/TraitMethodUnit.phpcqz!sebastian-code-unit/TraitUnit.phpcXA,sebastian-code-unit/exceptions/Exception.phpscstg;sebastian-code-unit/exceptions/InvalidCodeUnitException.phpc6-3sebastian-code-unit/exceptions/NoTraitException.phpcQ36sebastian-code-unit/exceptions/ReflectionException.phpc$(sebastian-comparator/ArrayComparator.phpucuEmhf#sebastian-comparator/Comparator.phpct*sebastian-comparator/ComparisonFailure.php c %*sebastian-comparator/DOMNodeComparator.php c 1i+sebastian-comparator/DateTimeComparator.php c KQ)sebastian-comparator/DoubleComparator.phpc:n,sebastian-comparator/ExceptionComparator.phpc1 sebastian-comparator/Factory.phpc?Nsebastian-comparator/LICENSE c =(-sebastian-comparator/MockObjectComparator.phpcI*sebastian-comparator/NumericComparator.php3 c3 i{l)sebastian-comparator/ObjectComparator.phpX cX ׌+sebastian-comparator/ResourceComparator.phpcJ)sebastian-comparator/ScalarComparator.php/ c/ dF3sebastian-comparator/SplObjectStorageComparator.phpc?/'sebastian-comparator/TypeComparator.phpccX\-sebastian-comparator/exceptions/Exception.phpvcvEᵤ4sebastian-comparator/exceptions/RuntimeException.phpcV'#sebastian-complexity/Calculator.phpe ce (6.sebastian-complexity/Complexity/Complexity.phpQcQl8sebastian-complexity/Complexity/ComplexityCollection.phpcil@sebastian-complexity/Complexity/ComplexityCollectionIterator.php,c,e,sebastian-complexity/Exception/Exception.phpvcv73sebastian-complexity/Exception/RuntimeException.phpcCdWsebastian-complexity/LICENSEc=ݤ=sebastian-complexity/Visitor/ComplexityCalculatingVisitor.php c OGsebastian-complexity/Visitor/CyclomaticComplexityCalculatingVisitor.php c 7Ysebastian-diff/Chunk.php_c_vsebastian-diff/Diff.phpjcjbXAsebastian-diff/Differ.php $c $wkz3sebastian-diff/Exception/ConfigurationException.php=c=1/Ff&sebastian-diff/Exception/Exception.phpjcj05sebastian-diff/Exception/InvalidArgumentException.phpcqsebastian-diff/LICENSE c a1sebastian-diff/Line.phpLcL -q5sebastian-diff/LongestCommonSubsequenceCalculator.phpc}e7zDsebastian-diff/MemoryEfficientLongestCommonSubsequenceCalculator.phpc9 4sebastian-diff/Output/AbstractChunkOutputBuilder.phpc\t/sebastian-diff/Output/DiffOnlyOutputBuilder.phpzczc4sebastian-diff/Output/DiffOutputBuilderInterface.phpcV8sebastian-diff/Output/StrictUnifiedDiffOutputBuilder.php(c(kv2sebastian-diff/Output/UnifiedDiffOutputBuilder.php>c>'q)sebastian-diff/Parser.php c X{Bsebastian-diff/TimeEfficientLongestCommonSubsequenceCalculator.phpct٤!sebastian-environment/Console.phpc72e4sebastian-environment/LICENSEcFy٤)sebastian-environment/OperatingSystem.phpc̄!sebastian-environment/Runtime.phpc4sebastian-exporter/Exporter.phpx$cx$sebastian-exporter/LICENSEc 5٤'sebastian-global-state/CodeExporter.php c &sebastian-global-state/ExcludeList.php -c -R{sebastian-global-state/LICENSEcJ#sebastian-global-state/Restorer.phpcGJ #sebastian-global-state/Snapshot.php*c*X%/sebastian-global-state/exceptions/Exception.phpycyJ6sebastian-global-state/exceptions/RuntimeException.phpc;#sebastian-lines-of-code/Counter.phpcH5/sebastian-lines-of-code/Exception/Exception.phpzcz aV>sebastian-lines-of-code/Exception/IllogicalValuesException.phpcG<sebastian-lines-of-code/Exception/NegativeValueException.phpc -ڤ6sebastian-lines-of-code/Exception/RuntimeException.phpcKsebastian-lines-of-code/LICENSEcbS~/sebastian-lines-of-code/LineCountingVisitor.phpc~A'sebastian-lines-of-code/LinesOfCode.php c fӤ*sebastian-object-enumerator/Enumerator.phpcx})sebastian-object-enumerator/Exception.phpc}Ȥ8sebastian-object-enumerator/InvalidArgumentException.phpcâ(sebastian-object-reflector/Exception.phpcЬۤ7sebastian-object-reflector/InvalidArgumentException.phpc -M.sebastian-object-reflector/ObjectReflector.phpc_'sebastian-recursion-context/Context.phpcaDy)sebastian-recursion-context/Exception.phpcPFA8sebastian-recursion-context/InvalidArgumentException.phpcb21#sebastian-recursion-context/LICENSEc`%sebastian-resource-operations/LICENSEc]<4sebastian-resource-operations/ResourceOperations.phpccT쒤sebastian-type/LICENSE c &.sebastian-type/Parameter.phpc,#sebastian-type/ReflectionMapper.phppcp&ޤsebastian-type/TypeName.php:c:n -&sebastian-type/exception/Exception.phpjcjbᮧ-sebastian-type/exception/RuntimeException.phpc%$sebastian-type/type/CallableType.phpcŵ`!sebastian-type/type/FalseType.phpbcb_&)sebastian-type/type/GenericObjectType.php<c<Ch(sebastian-type/type/IntersectionType.phpd -cd -nc$sebastian-type/type/IterableType.phpcf!sebastian-type/type/MixedType.php'c'o!sebastian-type/type/NeverType.phpcFҹ sebastian-type/type/NullType.php"c"9$F"sebastian-type/type/ObjectType.php]c]L&"sebastian-type/type/SimpleType.phpc]"sebastian-type/type/StaticType.phpcj~ sebastian-type/type/TrueType.php]c]<iפsebastian-type/type/Type.phpcDje!sebastian-type/type/UnionType.php$ c$ )#sebastian-type/type/UnknownType.phpcǤ sebastian-type/type/VoidType.phpcsebastian-version/LICENSEcZsebastian-version/Version.phpc ƪtheseer-tokenizer/Exception.phpncn'Ǥtheseer-tokenizer/LICENSEcR ("theseer-tokenizer/NamespaceUri.phpHcH=C+theseer-tokenizer/NamespaceUriException.phpycy'Hetheseer-tokenizer/Token.phpc4%theseer-tokenizer/TokenCollection.php -c -a.theseer-tokenizer/TokenCollectionException.php|c|`g-theseer-tokenizer/Tokenizer.php -c -zl#theseer-tokenizer/XMLSerializer.phpcg; webmozart-assert/Assert.phpcYT-webmozart-assert/InvalidArgumentException.phpbcbAwebmozart-assert/LICENSE<c<t}webmozart-assert/Mixin.php.c. a.phpstorm.meta.phpcO8phpunit/Framework/Constraint/Traversable/ArrayHasKey.php(4 e6@!@phpunit/Framework/Constraint/Traversable/TraversableContains.php(4 eEphpunit/Framework/Constraint/Traversable/TraversableContainsEqual.phpa(4 eawAIphpunit/Framework/Constraint/Traversable/TraversableContainsIdentical.php'(4 e'sӤDphpunit/Framework/Constraint/Traversable/TraversableContainsOnly.php (4 e RuФ2phpunit/Framework/Constraint/Type/IsInstanceOf.php:(4 e:@,phpunit/Framework/Constraint/Type/IsNull.php(4 e?),phpunit/Framework/Constraint/Type/IsType.php(4 eGȤ+phpunit/Framework/DataProviderTestSuite.php(4 e\8&phpunit/Framework/Error/Deprecated.phpz(4 ezV!phpunit/Framework/Error/Error.phpl(4 el]"phpunit/Framework/Error/Notice.phpv(4 evˤ#phpunit/Framework/Error/Warning.phpw(4 ewG#phpunit/Framework/ErrorTestCase.php(4 ecȶAphpunit/Framework/Exception/ActualValueIsNotAnObjectException.php(4 e`B4phpunit/Framework/Exception/AssertionFailedError.php(4 e5phpunit/Framework/Exception/CodeCoverageException.php(4 e[Sphpunit/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.phpk(4 ek:phpunit/Framework/MockObject/Builder/InvocationStubber.php(4 e8phpunit/Framework/MockObject/Builder/MethodNameMatch.phpw(4 ewTy8phpunit/Framework/MockObject/Builder/ParametersMatch.php(4 eڃ-phpunit/Framework/MockObject/Builder/Stub.php(4 e(3phpunit/Framework/MockObject/ConfigurableMethod.php(4 eAphpunit/Framework/MockObject/Exception/BadMethodCallException.php(4 eΫXGphpunit/Framework/MockObject/Exception/CannotUseAddMethodsException.php5(4 e5{Hphpunit/Framework/MockObject/Exception/CannotUseOnlyMethodsException.phpE(4 eEFphpunit/Framework/MockObject/Exception/ClassAlreadyExistsException.php(4 e@phpunit/Framework/MockObject/Exception/ClassIsFinalException.php(4 e()Cphpunit/Framework/MockObject/Exception/ClassIsReadonlyException.php(4 eOuXYphpunit/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php (4 e ɅWCphpunit/Framework/MockObject/Exception/DuplicateMethodException.php(4 ey4phpunit/Framework/MockObject/Exception/Exception.php(4 eB'Kphpunit/Framework/MockObject/Exception/IncompatibleReturnValueException.php(4 e3dfEphpunit/Framework/MockObject/Exception/InvalidMethodNameException.php(4 e ܤHphpunit/Framework/MockObject/Exception/MatchBuilderNotFoundException.php(4 eLphpunit/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php(4 ez'Lphpunit/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php(4 e}QOphpunit/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php(4 eӁƤKphpunit/Framework/MockObject/Exception/MethodNameNotConfiguredException.php~(4 e~x1)Uphpunit/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php(4 e rYphpunit/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php(4 eک>phpunit/Framework/MockObject/Exception/ReflectionException.php(4 e.ؔLphpunit/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php6(4 e6?먙;phpunit/Framework/MockObject/Exception/RuntimeException.php(4 e_|Mphpunit/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php(4 ez@phpunit/Framework/MockObject/Exception/UnknownClassException.php(4 e5uW@phpunit/Framework/MockObject/Exception/UnknownTraitException.php(4 eq¥?phpunit/Framework/MockObject/Exception/UnknownTypeException.php(4 e~*phpunit/Framework/MockObject/Generator.phpb(4 ebiEۤ6phpunit/Framework/MockObject/Generator/deprecation.tpl;(4 e;O5s7phpunit/Framework/MockObject/Generator/intersection.tplL(4 eL-X7phpunit/Framework/MockObject/Generator/mocked_class.tpl(4 ewZ8phpunit/Framework/MockObject/Generator/mocked_method.tplF(4 eFKFphpunit/Framework/MockObject/Generator/mocked_method_never_or_void.tpl(4 ep?phpunit/Framework/MockObject/Generator/mocked_static_method.tpl(4 e 4R9phpunit/Framework/MockObject/Generator/proxied_method.tpl}(4 e}@ėGphpunit/Framework/MockObject/Generator/proxied_method_never_or_void.tplv(4 evT6phpunit/Framework/MockObject/Generator/trait_class.tplQ(4 eQ<Ȥ5phpunit/Framework/MockObject/Generator/wsdl_class.tpl(4 e6phpunit/Framework/MockObject/Generator/wsdl_method.tpl<(4 e<i+phpunit/Framework/MockObject/Invocation.php(4 eid2phpunit/Framework/MockObject/InvocationHandler.php:(4 e:ˤ(phpunit/Framework/MockObject/Matcher.php(4 eD-5phpunit/Framework/MockObject/MethodNameConstraint.php +(4 e +A1|,phpunit/Framework/MockObject/MockBuilder.phpY+(4 eY+ϴ=*phpunit/Framework/MockObject/MockClass.php(4 e'C+phpunit/Framework/MockObject/MockMethod.phpz&(4 ez&p.phpunit/Framework/MockObject/MockMethodSet.php8(4 e8G\+phpunit/Framework/MockObject/MockObject.php(4 ebt*phpunit/Framework/MockObject/MockTrait.php(4 e&nä)phpunit/Framework/MockObject/MockType.php(4 eFFt5phpunit/Framework/MockObject/Rule/AnyInvokedCount.phpj(4 ej`Ť3phpunit/Framework/MockObject/Rule/AnyParameters.php(4 e~';phpunit/Framework/MockObject/Rule/ConsecutiveParameters.php~ (4 e~ 5phpunit/Framework/MockObject/Rule/InvocationOrder.php(4 eLDӤ4phpunit/Framework/MockObject/Rule/InvokedAtIndex.php,(4 e,kK9phpunit/Framework/MockObject/Rule/InvokedAtLeastCount.php(4 eB8phpunit/Framework/MockObject/Rule/InvokedAtLeastOnce.php-(4 e- (8phpunit/Framework/MockObject/Rule/InvokedAtMostCount.php(4 egY2phpunit/Framework/MockObject/Rule/InvokedCount.php (4 e ^ 0phpunit/Framework/MockObject/Rule/MethodName.php(4 e +WG0phpunit/Framework/MockObject/Rule/Parameters.phpQ(4 eQ`g|4phpunit/Framework/MockObject/Rule/ParametersRule.phpc(4 ec?(%phpunit/Framework/MockObject/Stub.php(4 eŎ6phpunit/Framework/MockObject/Stub/ConsecutiveCalls.php (4 e ./phpunit/Framework/MockObject/Stub/Exception.php((4 e(J4phpunit/Framework/MockObject/Stub/ReturnArgument.php(4 e?}64phpunit/Framework/MockObject/Stub/ReturnCallback.php(4 eD0Ӥ5phpunit/Framework/MockObject/Stub/ReturnReference.php (4 e f0phpunit/Framework/MockObject/Stub/ReturnSelf.php4(4 e4DD0phpunit/Framework/MockObject/Stub/ReturnStub.php(4 e4phpunit/Framework/MockObject/Stub/ReturnValueMap.php(4 eۤ*phpunit/Framework/MockObject/Stub/Stub.php3(4 e3>++phpunit/Framework/MockObject/Verifiable.php(4 e̐ s!phpunit/Framework/Reorderable.php(4 ez0$phpunit/Framework/SelfDescribing.php +(4 e +s!phpunit/Framework/SkippedTest.php(4 eS.%phpunit/Framework/SkippedTestCase.php(4 eQKhphpunit/Framework/Test.php~(4 e~wt!phpunit/Framework/TestBuilder.php"(4 e"14jphpunit/Framework/TestCase.php.(4 e.] !phpunit/Framework/TestFailure.php(4 e'q"phpunit/Framework/TestListener.phpr(4 erӪc^7phpunit/Framework/TestListenerDefaultImplementation.php'(4 e'! phpunit/Framework/TestResult.php +(4 e +rOphpunit/Framework/TestSuite.phpQd(4 eQd5ܛ'phpunit/Framework/TestSuiteIterator.php6(4 e6$ u%phpunit/Framework/WarningTestCase.php'(4 e'n@ !phpunit/Runner/BaseTestRunner.php (4 e C +)phpunit/Runner/DefaultTestResultCache.php!(4 e!/i^phpunit/Runner/Exception.php(4 ezZ-phpunit/Runner/Extension/ExtensionHandler.php (4 e Az'phpunit/Runner/Extension/PharLoader.php (4 e /4phpunit/Runner/Filter/ExcludeGroupFilterIterator.phps(4 es} +Z!phpunit/Runner/Filter/Factory.php(4 edcΤ-phpunit/Runner/Filter/GroupFilterIterator.php(4 e=;4phpunit/Runner/Filter/IncludeGroupFilterIterator.phpr(4 erP;AD,phpunit/Runner/Filter/NameFilterIterator.phpv (4 ev Z/phpunit/Runner/Hook/AfterIncompleteTestHook.php-(4 e-zԤ)phpunit/Runner/Hook/AfterLastTestHook.php(4 e0B֤*phpunit/Runner/Hook/AfterRiskyTestHook.php#(4 e#dm,phpunit/Runner/Hook/AfterSkippedTestHook.php'(4 e':/phpunit/Runner/Hook/AfterSuccessfulTestHook.php(4 e5w*phpunit/Runner/Hook/AfterTestErrorHook.php#(4 e#ݮ,phpunit/Runner/Hook/AfterTestFailureHook.php'(4 e'2F%phpunit/Runner/Hook/AfterTestHook.php(4 e;gA,phpunit/Runner/Hook/AfterTestWarningHook.php'(4 e'':+phpunit/Runner/Hook/BeforeFirstTestHook.php(4 ehWt&phpunit/Runner/Hook/BeforeTestHook.php(4 e"bphpunit/Runner/Hook/Hook.php(4 e. phpunit/Runner/Hook/TestHook.php(4 eZ_ ++phpunit/Runner/Hook/TestListenerAdapter.php(4 e\6E&phpunit/Runner/NullTestResultCache.php(4 eW<phpunit/Runner/PhptTestCase.phpRV(4 eRVԴO'phpunit/Runner/ResultCacheExtension.php<(4 e<6 _*phpunit/Runner/StandardTestSuiteLoader.php(4 e;i Ȥ"phpunit/Runner/TestResultCache.php(4 eK"phpunit/Runner/TestSuiteLoader.php(4 eޤ"phpunit/Runner/TestSuiteSorter.php,(4 e,kڤphpunit/Runner/Version.php(4 e'phpunit/TextUI/CliArguments/Builder.phpT(4 eTɣۤ-phpunit/TextUI/CliArguments/Configuration.php(4 eX)phpunit/TextUI/CliArguments/Exception.php(4 e%zE&phpunit/TextUI/CliArguments/Mapper.php+,(4 e+,'aphpunit/TextUI/Command.php`o(4 e`o;e"'phpunit/TextUI/DefaultResultPrinter.phpY7(4 eY7}G(J&phpunit/TextUI/Exception/Exception.php(4 eD{i0phpunit/TextUI/Exception/ReflectionException.php(4 e Y-phpunit/TextUI/Exception/RuntimeException.php(4 eF;phpunit/TextUI/Exception/TestDirectoryNotFoundException.php(4 e6phpunit/TextUI/Exception/TestFileNotFoundException.php(4 epCphpunit/TextUI/Help.php.(4 e.  phpunit/TextUI/ResultPrinter.phpp(4 epܤphpunit/TextUI/TestRunner.php(4 eG"phpunit/TextUI/TestSuiteMapper.php (4 e +;-=phpunit/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php(4 erAphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php(4 ec{Kphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php(4 eju}Sphpunit/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php(4 eJ=phpunit/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php(4 e}ݚ>phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php(4 e=CAphpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php(4 ei>phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php(4 eG<phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php(4 eE6;phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php(4 epS<phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php(4 eKkw;phpunit/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php(4 e?u1phpunit/TextUI/XmlConfiguration/Configuration.php5(4 e5˞-phpunit/TextUI/XmlConfiguration/Exception.php(4 eN5+8phpunit/TextUI/XmlConfiguration/Filesystem/Directory.php(4 e@Bphpunit/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php(4 e1EqJphpunit/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php(4 e&3phpunit/TextUI/XmlConfiguration/Filesystem/File.php(4 e.P =phpunit/TextUI/XmlConfiguration/Filesystem/FileCollection.php~(4 e~]rEphpunit/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.phpf(4 efĤ-phpunit/TextUI/XmlConfiguration/Generator.php(4 eF /phpunit/TextUI/XmlConfiguration/Group/Group.php(4 e9phpunit/TextUI/XmlConfiguration/Group/GroupCollection.php(4 eyAphpunit/TextUI/XmlConfiguration/Group/GroupCollectionIterator.phpq(4 eqY50phpunit/TextUI/XmlConfiguration/Group/Groups.php(4 e@I*phpunit/TextUI/XmlConfiguration/Loader.php(4 ecB1phpunit/TextUI/XmlConfiguration/Logging/Junit.php(4 eciG3phpunit/TextUI/XmlConfiguration/Logging/Logging.php (4 e ]٤4phpunit/TextUI/XmlConfiguration/Logging/TeamCity.php(4 e7Z鵤8phpunit/TextUI/XmlConfiguration/Logging/TestDox/Html.php(4 eV2ܤ8phpunit/TextUI/XmlConfiguration/Logging/TestDox/Text.php(4 eώ7phpunit/TextUI/XmlConfiguration/Logging/TestDox/Xml.php(4 et0phpunit/TextUI/XmlConfiguration/Logging/Text.php(4 eCn>phpunit/TextUI/XmlConfiguration/Migration/MigrationBuilder.php (4 e r:Gphpunit/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php(4 eUWĝ@phpunit/TextUI/XmlConfiguration/Migration/MigrationException.php(4 e\ZHphpunit/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php(4 ehoeOphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.phpX(4 eXijOphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php(4 e$i'Mphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php(4 eՄjLphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.phpF(4 eF^ӤMphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php(4 eV_Lphpunit/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.phpK(4 eK_ Qphpunit/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php(4 eUMphpunit/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php(4 eUBphpunit/TextUI/XmlConfiguration/Migration/Migrations/Migration.php(4 e'dphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php(4 eU%5Yphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.phpC(4 eCcFXphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php(4 eXphpunit/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistIncludesToCoverage.php(4 etSphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php(4 ewJphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php{(4 e{KGphpunit/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.phpo(4 eo3Qphpunit/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php(4 ebJ6phpunit/TextUI/XmlConfiguration/Migration/Migrator.php(4 eo$V0phpunit/TextUI/XmlConfiguration/PHP/Constant.php7(4 e7$Ҥ:phpunit/TextUI/XmlConfiguration/PHP/ConstantCollection.phpl(4 el%(Bphpunit/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php(4 e}=Ƥ2phpunit/TextUI/XmlConfiguration/PHP/IniSetting.phpJ(4 eJOt<phpunit/TextUI/XmlConfiguration/PHP/IniSettingCollection.php(4 eޛ;Dphpunit/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php(4 e/mo+phpunit/TextUI/XmlConfiguration/PHP/Php.php(4 e6僤2phpunit/TextUI/XmlConfiguration/PHP/PhpHandler.phpw(4 ew` +0phpunit/TextUI/XmlConfiguration/PHP/Variable.php(4 eN:phpunit/TextUI/XmlConfiguration/PHP/VariableCollection.phpl(4 elsB@٤Bphpunit/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php(4 e!~gȤ5phpunit/TextUI/XmlConfiguration/PHPUnit/Extension.php(4 e}Q?phpunit/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php(4 eo;RGphpunit/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php(4 e|D?3phpunit/TextUI/XmlConfiguration/PHPUnit/PHPUnit.phplC(4 elCv;phpunit/TextUI/XmlConfiguration/TestSuite/TestDirectory.phpC(4 eC0Ephpunit/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php(4 eLCMphpunit/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php(4 en6phpunit/TextUI/XmlConfiguration/TestSuite/TestFile.php(4 e?y@phpunit/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php(4 eXHphpunit/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.phpz(4 ezX17phpunit/TextUI/XmlConfiguration/TestSuite/TestSuite.php(4 e8wAphpunit/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php(4 e/jIphpunit/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php(4 e+6$phpunit/Util/Annotation/DocBlock.php@(4 e@n"$phpunit/Util/Annotation/Registry.phpN +(4 eN +?caphpunit/Util/Blacklist.php(4 esphpunit/Util/Cloner.php(4 e"Ɩܤphpunit/Util/Color.php(4 ej?phpunit/Util/ErrorHandler.php(4 e=phpunit/Util/Exception.php(4 e다phpunit/Util/ExcludeList.php(4 efphpunit/Util/FileLoader.php (4 e 'phpunit/Util/Filesystem.php(4 eܐphpunit/Util/Filter.php (4 e l* phpunit/Util/GlobalState.php(4 el(phpunit/Util/InvalidDataSetException.php(4 e1 phpunit/Util/Json.phpE (4 eE !phpunit/Util/Log/JUnit.phpb*(4 eb*}3phpunit/Util/Log/TeamCity.phpy&(4 ey&4g'phpunit/Util/PHP/AbstractPhpProcess.php'(4 e'-Eʤ&phpunit/Util/PHP/DefaultPhpProcess.phpz(4 ezCp*phpunit/Util/PHP/Template/PhptTestCase.tpl(4 e+phpunit/Util/PHP/Template/TestCaseClass.tpl (4 e #,phpunit/Util/PHP/Template/TestCaseMethod.tpl*(4 e* &phpunit/Util/PHP/WindowsPhpProcess.php(4 e)aBphpunit/Util/Printer.php (4 e shphpunit/Util/Reflection.php(4 eW챤"phpunit/Util/RegularExpression.php(4 e0uR)phpunit/Util/Test.php](4 e]1fä*phpunit/Util/TestDox/CliTestDoxPrinter.php(*(4 e(*@f*phpunit/Util/TestDox/HtmlResultPrinter.php (4 e 3~ʤ'phpunit/Util/TestDox/NamePrettifier.php/"(4 e/"p~J&phpunit/Util/TestDox/ResultPrinter.php"(4 e"1q$'phpunit/Util/TestDox/TestDoxPrinter.php)(4 e)K̤*phpunit/Util/TestDox/TextResultPrinter.php(4 eȹ!.)phpunit/Util/TestDox/XmlResultPrinter.php(4 eQ%phpunit/Util/TextTestListRenderer.php6(4 e6.phpunit/Util/Type.php(4 e|ä*phpunit/Util/VersionComparisonOperator.php(4 eb,phpunit/Util/XdebugFilterScriptGenerator.phpw(4 ewتphpunit/Util/Xml.php(4 e̤phpunit/Util/Xml/Exception.php(4 eӤ0phpunit/Util/Xml/FailedSchemaDetectionResult.php(4 e#Sphpunit/Util/Xml/Loader.php (4 e ,?*phpunit/Util/Xml/SchemaDetectionResult.php(4 e4χz#phpunit/Util/Xml/SchemaDetector.php-(4 e-!phpunit/Util/Xml/SchemaFinder.php(4 eS%phpunit/Util/Xml/SnapshotNodeList.phpH(4 eH ^d4phpunit/Util/Xml/SuccessfulSchemaDetectionResult.php'(4 e'g%phpunit/Util/Xml/ValidationResult.php(4 exv:phpunit/Util/Xml/Validator.php(4 eV$phpunit/Util/XmlTestListRenderer.php +(4 e +8sbom.xml +/(4 e +/OOschema/8.5.xsdB(4 eB贅schema/9.2.xsdB(4 eB|lsebastian-cli-parser/LICENSE(4 eusebastian-cli-parser/Parser.php(4 ekM<sebastian-cli-parser/exceptions/AmbiguousOptionException.phpF(4 eFm\-sebastian-cli-parser/exceptions/Exception.phpu(4 euӫGsebastian-cli-parser/exceptions/OptionDoesNotAllowArgumentException.php_(4 e_|13Jsebastian-cli-parser/exceptions/RequiredOptionArgumentMissingException.phph(4 ehC:sebastian-cli-parser/exceptions/UnknownOptionException.php?(4 e?vD*sebastian-code-unit-reverse-lookup/LICENSE(4 e3G (-sebastian-code-unit-reverse-lookup/Wizard.php (4 e }Z['sebastian-code-unit/ClassMethodUnit.php(4 e@[!sebastian-code-unit/ClassUnit.php(4 eF sebastian-code-unit/CodeUnit.php~%(4 e~%D){*sebastian-code-unit/CodeUnitCollection.php(4 eJ2sebastian-code-unit/CodeUnitCollectionIterator.php;(4 e;Lʤ$sebastian-code-unit/FunctionUnit.php(4 e`+sebastian-code-unit/InterfaceMethodUnit.php(4 eǦ%sebastian-code-unit/InterfaceUnit.php(4 ecsebastian-code-unit/LICENSE (4 e psebastian-code-unit/Mapper.php-(4 e-#'sebastian-code-unit/TraitMethodUnit.php(4 eqz!sebastian-code-unit/TraitUnit.php(4 eXA,sebastian-code-unit/exceptions/Exception.phps(4 estg;sebastian-code-unit/exceptions/InvalidCodeUnitException.php(4 e6-3sebastian-code-unit/exceptions/NoTraitException.php(4 eQ36sebastian-code-unit/exceptions/ReflectionException.php(4 e$(sebastian-comparator/ArrayComparator.phpu(4 euEmhf#sebastian-comparator/Comparator.php(4 et*sebastian-comparator/ComparisonFailure.php (4 e %*sebastian-comparator/DOMNodeComparator.php (4 e 1i+sebastian-comparator/DateTimeComparator.php (4 e KQ)sebastian-comparator/DoubleComparator.php(4 e:n,sebastian-comparator/ExceptionComparator.php(4 e1 sebastian-comparator/Factory.php(4 e?Nsebastian-comparator/LICENSE (4 e =(-sebastian-comparator/MockObjectComparator.php(4 eI*sebastian-comparator/NumericComparator.php3 (4 e3 i{l)sebastian-comparator/ObjectComparator.phpX (4 eX ׌+sebastian-comparator/ResourceComparator.php(4 eJ)sebastian-comparator/ScalarComparator.php/ (4 e/ dF3sebastian-comparator/SplObjectStorageComparator.php(4 e?/'sebastian-comparator/TypeComparator.php(4 ecX\-sebastian-comparator/exceptions/Exception.phpv(4 evEᵤ4sebastian-comparator/exceptions/RuntimeException.php(4 eV'#sebastian-complexity/Calculator.phpe (4 ee (6.sebastian-complexity/Complexity/Complexity.phpQ(4 eQl8sebastian-complexity/Complexity/ComplexityCollection.php(4 eil@sebastian-complexity/Complexity/ComplexityCollectionIterator.php,(4 e,e,sebastian-complexity/Exception/Exception.phpv(4 ev73sebastian-complexity/Exception/RuntimeException.php(4 eCdWsebastian-complexity/LICENSE(4 e=ݤ=sebastian-complexity/Visitor/ComplexityCalculatingVisitor.php (4 e OGsebastian-complexity/Visitor/CyclomaticComplexityCalculatingVisitor.php (4 e 7Ysebastian-diff/Chunk.php_(4 e_vsebastian-diff/Diff.phpj(4 ejbXAsebastian-diff/Differ.php $(4 e $wkz3sebastian-diff/Exception/ConfigurationException.php=(4 e=1/Ff&sebastian-diff/Exception/Exception.phpj(4 ej05sebastian-diff/Exception/InvalidArgumentException.php(4 eqsebastian-diff/LICENSE (4 e a1sebastian-diff/Line.phpL(4 eL +q5sebastian-diff/LongestCommonSubsequenceCalculator.php(4 e}e7zDsebastian-diff/MemoryEfficientLongestCommonSubsequenceCalculator.php{ (4 e{ d^4sebastian-diff/Output/AbstractChunkOutputBuilder.php(4 e\t/sebastian-diff/Output/DiffOnlyOutputBuilder.phpz(4 ezc4sebastian-diff/Output/DiffOutputBuilderInterface.php(4 eV8sebastian-diff/Output/StrictUnifiedDiffOutputBuilder.php((4 e(kv2sebastian-diff/Output/UnifiedDiffOutputBuilder.php>(4 e>'q)sebastian-diff/Parser.php (4 e X{Bsebastian-diff/TimeEfficientLongestCommonSubsequenceCalculator.php0 (4 e0 B !sebastian-environment/Console.php(4 eP1Ťsebastian-environment/LICENSE(4 eFy٤)sebastian-environment/OperatingSystem.php(4 ē!sebastian-environment/Runtime.php(4 e4sebastian-exporter/Exporter.phpx$(4 ex$sebastian-exporter/LICENSE(4 e 5٤'sebastian-global-state/CodeExporter.php (4 e &sebastian-global-state/ExcludeList.php +(4 e +R{sebastian-global-state/LICENSE(4 eJ#sebastian-global-state/Restorer.php(4 e9}b#sebastian-global-state/Snapshot.php*(4 e*X%/sebastian-global-state/exceptions/Exception.phpy(4 eyJ6sebastian-global-state/exceptions/RuntimeException.php(4 e;#sebastian-lines-of-code/Counter.php(4 eH5/sebastian-lines-of-code/Exception/Exception.phpz(4 ez aV>sebastian-lines-of-code/Exception/IllogicalValuesException.php(4 eG<sebastian-lines-of-code/Exception/NegativeValueException.php(4 e +ڤ6sebastian-lines-of-code/Exception/RuntimeException.php(4 eKsebastian-lines-of-code/LICENSE(4 ebS~/sebastian-lines-of-code/LineCountingVisitor.php(4 e~A'sebastian-lines-of-code/LinesOfCode.php (4 e fӤ*sebastian-object-enumerator/Enumerator.php(4 ex})sebastian-object-enumerator/Exception.php(4 e}Ȥ8sebastian-object-enumerator/InvalidArgumentException.php(4 eâ(sebastian-object-reflector/Exception.php(4 eЬۤ7sebastian-object-reflector/InvalidArgumentException.php(4 e +M.sebastian-object-reflector/ObjectReflector.php(4 e_'sebastian-recursion-context/Context.phpB(4 eBapply($object, $property->getName(), function ($object) { return $this->recursiveCopy($object); }); + if ($filter instanceof ChainableFilter) { + continue; + } // If a filter matches, we stop processing this property return; } @@ -3021,6 +3045,28 @@ class PropertyException extends ReflectionException } filter = $filter; + } + public function apply($object, $property, $objectCopier) + { + $this->filter->apply($object, $property, $objectCopier); + } +} +attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute); return $this; } + /** + * Sets the constant type. + * + * @param string|Node\Name|Identifier|Node\ComplexType $type + * + * @return $this + */ + public function setType($type) + { + $this->type = BuilderHelpers::normalizeType($type); + return $this; + } /** * Returns the built class node. * @@ -3784,7 +3844,7 @@ class ClassConst implements PhpParser\Builder */ public function getNode() : PhpParser\Node { - return new Stmt\ClassConst($this->constants, $this->flags, $this->attributes, $this->attributeGroups); + return new Stmt\ClassConst($this->constants, $this->flags, $this->attributes, $this->attributeGroups, $this->type); } } name, $this->value, $this->attributes, $this->attributeGroups); + return new Stmt\EnumCase($this->name, $this->value, $this->attributeGroups, $this->attributes); } } variadic = \true; return $this; } + /** + * Makes the (promoted) parameter public. + * + * @return $this The builder instance (for fluid interface) + */ + public function makePublic() + { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PUBLIC); + return $this; + } + /** + * Makes the (promoted) parameter protected. + * + * @return $this The builder instance (for fluid interface) + */ + public function makeProtected() + { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PROTECTED); + return $this; + } + /** + * Makes the (promoted) parameter private. + * + * @return $this The builder instance (for fluid interface) + */ + public function makePrivate() + { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_PRIVATE); + return $this; + } + /** + * Makes the (promoted) parameter readonly. + * + * @return $this The builder instance (for fluid interface) + */ + public function makeReadonly() + { + $this->flags = BuilderHelpers::addModifier($this->flags, Node\Stmt\Class_::MODIFIER_READONLY); + return $this; + } /** * Adds an attribute group. * @@ -4602,7 +4703,7 @@ class Param implements PhpParser\Builder */ public function getNode() : Node { - return new Node\Param(new Node\Expr\Variable($this->name), $this->default, $this->type, $this->byRef, $this->variadic, [], 0, $this->attributeGroups); + return new Node\Param(new Node\Expr\Variable($this->name), $this->default, $this->type, $this->byRef, $this->variadic, [], $this->flags, $this->attributeGroups); } } attrGroups = $attrGroups; + $this->flags = $flags; $this->args = $args; $this->extends = $extends; $this->implements = $implements; @@ -6661,7 +6765,7 @@ class PrintableNewAnonClassNode extends Expr \assert($class instanceof Node\Stmt\Class_); // We don't assert that $class->name is null here, to allow consumers to assign unique names // to anonymous classes for their own purposes. We simplify ignore the name here. - return new self($class->attrGroups, $newNode->args, $class->extends, $class->implements, $class->stmts, $newNode->getAttributes()); + return new self($class->attrGroups, $class->flags, $newNode->args, $class->extends, $class->implements, $class->stmts, $newNode->getAttributes()); } public function getType() : string { @@ -6669,7 +6773,7 @@ class PrintableNewAnonClassNode extends Expr } public function getSubNodeNames() : array { - return ['attrGroups', 'args', 'extends', 'implements', 'stmts']; + return ['attrGroups', 'flags', 'args', 'extends', 'implements', 'stmts']; } } targetPhpVersion = $options['phpVersion'] ?? Emulative::PHP_8_1; + $this->targetPhpVersion = $options['phpVersion'] ?? Emulative::PHP_8_2; unset($options['phpVersion']); parent::__construct($options); - $emulators = [new FlexibleDocStringEmulator(), new FnTokenEmulator(), new MatchTokenEmulator(), new CoaleseEqualTokenEmulator(), new NumericLiteralSeparatorEmulator(), new NullsafeTokenEmulator(), new AttributeEmulator(), new EnumTokenEmulator(), new ReadonlyTokenEmulator(), new ExplicitOctalEmulator()]; + $emulators = [new FlexibleDocStringEmulator(), new FnTokenEmulator(), new MatchTokenEmulator(), new CoaleseEqualTokenEmulator(), new NumericLiteralSeparatorEmulator(), new NullsafeTokenEmulator(), new AttributeEmulator(), new EnumTokenEmulator(), new ReadonlyTokenEmulator(), new ExplicitOctalEmulator(), new ReadonlyFunctionTokenEmulator()]; // Collect emulators that are relevant for the PHP version we're running // and the PHP version we're targeting for emulation. foreach ($emulators as $emulator) { @@ -8163,6 +8269,39 @@ final class NumericLiteralSeparatorEmulator extends TokenEmulator declare (strict_types=1); namespace PHPUnit\PhpParser\Lexer\TokenEmulator; +use PHPUnit\PhpParser\Lexer\Emulative; +/* + * In PHP 8.1, "readonly(" was special cased in the lexer in order to support functions with + * name readonly. In PHP 8.2, this may conflict with readonly properties having a DNF type. For + * this reason, PHP 8.2 instead treats this as T_READONLY and then handles it specially in the + * parser. This emulator only exists to handle this special case, which is skipped by the + * PHP 8.1 ReadonlyTokenEmulator. + */ +class ReadonlyFunctionTokenEmulator extends KeywordEmulator +{ + public function getKeywordString() : string + { + return 'readonly'; + } + public function getKeywordToken() : int + { + return \T_READONLY; + } + public function getPhpVersion() : string + { + return Emulative::PHP_8_2; + } + public function reverseEmulate(string $code, array $tokens) : array + { + // Don't bother + return $tokens; + } +} + \true, 'parent' => \true, 'static' => \true]; /** @@ -11413,6 +11555,15 @@ class Name extends NodeAbstract { return ['parts']; } + /** + * Get parts of name (split by the namespace separator). + * + * @return string[] Parts of name + */ + public function getParts() : array + { + return $this->parts; + } /** * Gets the first part of the name, i.e. everything before the first namespace separator. * @@ -12424,26 +12575,30 @@ class ClassConst extends Node\Stmt public $flags; /** @var Node\Const_[] Constant declarations */ public $consts; - /** @var Node\AttributeGroup[] */ + /** @var Node\AttributeGroup[] PHP attribute groups */ public $attrGroups; + /** @var Node\Identifier|Node\Name|Node\ComplexType|null Type declaration */ + public $type; /** * Constructs a class const list node. * - * @param Node\Const_[] $consts Constant declarations - * @param int $flags Modifiers - * @param array $attributes Additional attributes - * @param Node\AttributeGroup[] $attrGroups PHP attribute groups + * @param Node\Const_[] $consts Constant declarations + * @param int $flags Modifiers + * @param array $attributes Additional attributes + * @param Node\AttributeGroup[] $attrGroups PHP attribute groups + * @param null|string|Node\Identifier|Node\Name|Node\ComplexType $type Type declaration */ - public function __construct(array $consts, int $flags = 0, array $attributes = [], array $attrGroups = []) + public function __construct(array $consts, int $flags = 0, array $attributes = [], array $attrGroups = [], $type = null) { $this->attributes = $attributes; $this->flags = $flags; $this->consts = $consts; $this->attrGroups = $attrGroups; + $this->type = \is_string($type) ? new Node\Identifier($type) : $type; } public function getSubNodeNames() : array { - return ['attrGroups', 'flags', 'consts']; + return ['attrGroups', 'flags', 'type', 'consts']; } /** * Whether constant is explicitly or implicitly public. @@ -15502,7 +15657,7 @@ class NameResolver extends NodeVisitorAbstract } return null; } - private function addAlias(Stmt\UseUse $use, $type, Name $prefix = null) + private function addAlias(Stmt\UseUse $use, int $type, Name $prefix = null) { // Add prefix for group uses $name = $prefix ? Name::concat($prefix, $use->name) : $use->name; @@ -15790,26 +15945,26 @@ use PHPUnit\PhpParser\Node\Stmt; class Php5 extends \PHPUnit\PhpParser\ParserAbstract { protected $tokenToSymbolMapSize = 396; - protected $actionTableSize = 1093; - protected $gotoTableSize = 643; + protected $actionTableSize = 1099; + protected $gotoTableSize = 640; protected $invalidSymbol = 168; protected $errorSymbol = 1; protected $defaultAction = -32766; protected $unexpectedTokenRule = 32767; protected $YY2TBLSTATE = 415; - protected $numNonLeafStates = 662; - protected $symbolToName = array("EOF", "error", "T_THROW", "T_INCLUDE", "T_INCLUDE_ONCE", "T_EVAL", "T_REQUIRE", "T_REQUIRE_ONCE", "','", "T_LOGICAL_OR", "T_LOGICAL_XOR", "T_LOGICAL_AND", "T_PRINT", "T_YIELD", "T_DOUBLE_ARROW", "T_YIELD_FROM", "'='", "T_PLUS_EQUAL", "T_MINUS_EQUAL", "T_MUL_EQUAL", "T_DIV_EQUAL", "T_CONCAT_EQUAL", "T_MOD_EQUAL", "T_AND_EQUAL", "T_OR_EQUAL", "T_XOR_EQUAL", "T_SL_EQUAL", "T_SR_EQUAL", "T_POW_EQUAL", "T_COALESCE_EQUAL", "'?'", "':'", "T_COALESCE", "T_BOOLEAN_OR", "T_BOOLEAN_AND", "'|'", "'^'", "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG", "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG", "T_IS_EQUAL", "T_IS_NOT_EQUAL", "T_IS_IDENTICAL", "T_IS_NOT_IDENTICAL", "T_SPACESHIP", "'<'", "T_IS_SMALLER_OR_EQUAL", "'>'", "T_IS_GREATER_OR_EQUAL", "T_SL", "T_SR", "'+'", "'-'", "'.'", "'*'", "'/'", "'%'", "'!'", "T_INSTANCEOF", "'~'", "T_INC", "T_DEC", "T_INT_CAST", "T_DOUBLE_CAST", "T_STRING_CAST", "T_ARRAY_CAST", "T_OBJECT_CAST", "T_BOOL_CAST", "T_UNSET_CAST", "'@'", "T_POW", "'['", "T_NEW", "T_CLONE", "T_EXIT", "T_IF", "T_ELSEIF", "T_ELSE", "T_ENDIF", "T_LNUMBER", "T_DNUMBER", "T_STRING", "T_STRING_VARNAME", "T_VARIABLE", "T_NUM_STRING", "T_INLINE_HTML", "T_ENCAPSED_AND_WHITESPACE", "T_CONSTANT_ENCAPSED_STRING", "T_ECHO", "T_DO", "T_WHILE", "T_ENDWHILE", "T_FOR", "T_ENDFOR", "T_FOREACH", "T_ENDFOREACH", "T_DECLARE", "T_ENDDECLARE", "T_AS", "T_SWITCH", "T_MATCH", "T_ENDSWITCH", "T_CASE", "T_DEFAULT", "T_BREAK", "T_CONTINUE", "T_GOTO", "T_FUNCTION", "T_FN", "T_CONST", "T_RETURN", "T_TRY", "T_CATCH", "T_FINALLY", "T_USE", "T_INSTEADOF", "T_GLOBAL", "T_STATIC", "T_ABSTRACT", "T_FINAL", "T_PRIVATE", "T_PROTECTED", "T_PUBLIC", "T_VAR", "T_UNSET", "T_ISSET", "T_EMPTY", "T_HALT_COMPILER", "T_CLASS", "T_TRAIT", "T_INTERFACE", "T_EXTENDS", "T_IMPLEMENTS", "T_OBJECT_OPERATOR", "T_LIST", "T_ARRAY", "T_CALLABLE", "T_CLASS_C", "T_TRAIT_C", "T_METHOD_C", "T_FUNC_C", "T_LINE", "T_FILE", "T_START_HEREDOC", "T_END_HEREDOC", "T_DOLLAR_OPEN_CURLY_BRACES", "T_CURLY_OPEN", "T_PAAMAYIM_NEKUDOTAYIM", "T_NAMESPACE", "T_NS_C", "T_DIR", "T_NS_SEPARATOR", "T_ELLIPSIS", "T_NAME_FULLY_QUALIFIED", "T_NAME_QUALIFIED", "T_NAME_RELATIVE", "';'", "'{'", "'}'", "'('", "')'", "'\$'", "'`'", "']'", "'\"'", "T_READONLY", "T_ENUM", "T_NULLSAFE_OBJECT_OPERATOR", "T_ATTRIBUTE"); - protected $tokenToSymbol = array(0, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 56, 163, 168, 160, 55, 168, 168, 158, 159, 53, 50, 8, 51, 52, 54, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 31, 155, 44, 16, 46, 30, 68, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 70, 168, 162, 36, 168, 161, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 156, 35, 157, 58, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43, 45, 47, 48, 49, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 164, 122, 123, 124, 125, 126, 127, 128, 129, 165, 130, 131, 132, 166, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 167); - protected $action = array(699, 669, 670, 671, 672, 673, 286, 674, 675, 676, 712, 713, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 245, 246, 242, 243, 244, -32766, -32766, 677, -32766, 750, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 1224, 245, 246, 1225, 678, 679, 680, 681, 682, 683, 684, -32766, 48, 746, -32766, -32766, -32766, -32766, -32766, -32766, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 715, 738, 716, 717, 718, 719, 707, 708, 709, 737, 710, 711, 696, 697, 698, 700, 701, 702, 740, 741, 742, 743, 744, 745, 703, 704, 705, 706, 736, 727, 725, 726, 722, 723, 751, 714, 720, 721, 728, 729, 731, 730, 732, 733, 55, 56, 425, 57, 58, 724, 735, 734, 1073, 59, 60, -224, 61, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 121, -32767, -32767, -32767, -32767, 29, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 1043, 766, 1071, 767, 580, 62, 63, -32766, -32766, -32766, -32766, 64, 516, 65, 294, 295, 66, 67, 68, 69, 70, 71, 72, 73, 822, 25, 302, 74, 418, 981, 983, 1043, 1181, 1095, 1096, 1073, 748, 754, 1075, 1074, 1076, 469, -32766, -32766, -32766, 337, 823, 54, -32767, -32767, -32767, -32767, 98, 99, 100, 101, 102, 220, 221, 222, 78, 361, 1107, -32766, 341, -32766, -32766, -32766, -32766, -32766, 1107, 492, 949, 950, 951, 948, 947, 946, 207, 477, 478, 949, 950, 951, 948, 947, 946, 1043, 479, 480, 52, 1101, 1102, 1103, 1104, 1098, 1099, 319, 872, 668, 667, 27, -511, 1105, 1100, -32766, 130, 1075, 1074, 1076, 345, 668, 667, 41, 126, 341, 334, 369, 336, 426, -128, -128, -128, 896, 897, 468, 220, 221, 222, 811, 1195, 619, 40, 21, 427, -128, 470, -128, 471, -128, 472, -128, 802, 428, -4, 823, 54, 207, 33, 34, 429, 360, 317, 28, 35, 473, -32766, -32766, -32766, 211, 356, 357, 474, 475, -32766, -32766, -32766, 754, 476, 49, 313, 794, 843, 430, 431, 289, 125, -32766, 813, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, -32766, -32766, -32766, 769, 103, 104, 105, 327, 307, 825, 633, -128, 1075, 1074, 1076, 221, 222, 927, 748, 1146, 106, -32766, 129, -32766, -32766, -32766, -32766, 426, 823, 54, 902, 873, 302, 468, 75, 207, 359, 811, 668, 667, 40, 21, 427, 754, 470, 754, 471, 423, 472, 1043, 127, 428, 435, 1043, 341, 1043, 33, 34, 429, 360, 1181, 415, 35, 473, 122, 10, 315, 128, 356, 357, 474, 475, -32766, -32766, -32766, 768, 476, 668, 667, 758, 843, 430, 431, 754, 1043, 1147, -32766, -32766, -32766, 754, 419, 342, 1215, -32766, 131, -32766, -32766, -32766, 341, 363, 346, 426, 823, 54, 100, 101, 102, 468, 825, 633, -4, 811, 442, 903, 40, 21, 427, 754, 470, 435, 471, 341, 472, 341, 766, 428, 767, -209, -209, -209, 33, 34, 429, 360, 479, 1196, 35, 473, 345, -32766, -32766, -32766, 356, 357, 474, 475, 220, 221, 222, 421, 476, 32, 297, 794, 843, 430, 431, 754, 754, 435, -32766, 341, -32766, -32766, 9, 300, 51, 207, 249, 324, 753, 120, 220, 221, 222, 426, 30, 247, 941, 422, 424, 468, 825, 633, -209, 811, 1043, 1061, 40, 21, 427, 129, 470, 207, 471, 341, 472, 804, 20, 428, 124, -208, -208, -208, 33, 34, 429, 360, 479, 212, 35, 473, 923, -259, 823, 54, 356, 357, 474, 475, -32766, -32766, -32766, 1043, 476, 213, 806, 794, 843, 430, 431, -32766, -32766, 435, 435, 341, 341, 443, 79, 80, 81, -32766, 668, 667, 636, 344, 808, 668, 667, 239, 240, 241, 123, 214, 538, 250, 825, 633, -208, 36, 251, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 252, 307, 426, 220, 221, 222, 823, 54, 468, -32766, 222, 765, 811, 106, 134, 40, 21, 427, 571, 470, 207, 471, 445, 472, 207, -32766, 428, 896, 897, 207, 307, 33, 34, 429, 245, 246, 637, 35, 473, 452, 22, 809, 922, 356, 357, 457, 588, 135, 374, 595, 596, 476, -228, 759, 639, 938, 653, 926, 661, -86, 823, 54, 314, 644, 647, 821, 133, 836, 43, 106, 603, 44, 45, 46, 47, 748, 50, 53, 132, 426, 302, -32766, 520, 825, 633, 468, -84, 607, 577, 811, 641, 362, 40, 21, 427, -278, 470, 754, 471, 954, 472, 441, 627, 428, 823, 54, 574, 844, 33, 34, 429, 11, 615, 845, 35, 473, 444, 461, 285, -511, 356, 357, 592, -419, 593, 1106, 1153, -410, 476, 368, 838, 38, 658, 426, 645, 795, 1052, 0, 325, 468, 0, -32766, 0, 811, 0, 0, 40, 21, 427, 0, 470, 0, 471, 0, 472, 0, 322, 428, 823, 54, 825, 633, 33, 34, 429, 0, 326, 0, 35, 473, 323, 0, 316, 318, 356, 357, -512, 426, 0, 753, 531, 0, 476, 468, 6, 0, 0, 811, 650, 7, 40, 21, 427, 12, 470, 14, 471, 373, 472, -420, 562, 428, 823, 54, 78, -225, 33, 34, 429, 39, 656, 657, 35, 473, 859, 633, 764, 812, 356, 357, 820, 799, 814, 875, 866, 867, 476, 797, 860, 857, 855, 426, 933, 934, 931, 819, 803, 468, 805, 807, 810, 811, 930, 762, 40, 21, 427, 763, 470, 932, 471, 335, 472, 358, 634, 428, 638, 640, 825, 633, 33, 34, 429, 642, 643, 646, 35, 473, 648, 649, 651, 652, 356, 357, 635, 426, 1221, 1223, 761, 842, 476, 468, 248, 760, 841, 811, 1222, 840, 40, 21, 427, 1057, 470, 830, 471, 1045, 472, 839, 1046, 428, 828, 215, 216, 939, 33, 34, 429, 217, 864, 218, 35, 473, 825, 633, 24, 865, 356, 357, 456, 1220, 1189, 209, 1187, 1172, 476, 1185, 215, 216, 1086, 1095, 1096, 914, 217, 1193, 218, 1183, -224, 1097, 26, 31, 37, 42, 76, 77, 210, 288, 209, 292, 293, 308, 309, 310, 311, 339, 1095, 1096, 825, 633, 355, 291, 416, 1152, 1097, 16, 17, 18, 393, 453, 460, 462, 466, 552, 624, 1048, 1051, 904, 1111, 1047, 1023, 563, 1022, 1088, 0, 0, -429, 558, 1041, 1101, 1102, 1103, 1104, 1098, 1099, 398, 1054, 1053, 1056, 1055, 1070, 1105, 1100, 1186, 1171, 1167, 1184, 1085, 1218, 1112, 1166, 219, 558, 599, 1101, 1102, 1103, 1104, 1098, 1099, 398, 0, 0, 0, 0, 0, 1105, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 219); - protected $actionCheck = array(2, 3, 4, 5, 6, 7, 14, 9, 10, 11, 12, 13, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 9, 10, 11, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 69, 70, 53, 54, 55, 9, 10, 57, 30, 80, 32, 33, 34, 35, 36, 37, 38, 80, 69, 70, 83, 71, 72, 73, 74, 75, 76, 77, 9, 70, 80, 33, 34, 35, 36, 37, 38, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 153, 133, 134, 135, 136, 137, 138, 139, 140, 141, 3, 4, 5, 6, 7, 147, 148, 149, 80, 12, 13, 159, 15, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 156, 44, 45, 46, 47, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 13, 106, 116, 108, 85, 50, 51, 33, 34, 35, 36, 56, 85, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1, 70, 71, 72, 73, 59, 60, 13, 82, 78, 79, 80, 80, 82, 152, 153, 154, 86, 9, 10, 11, 8, 1, 2, 44, 45, 46, 47, 48, 49, 50, 51, 52, 9, 10, 11, 156, 106, 143, 30, 160, 32, 33, 34, 35, 36, 143, 116, 116, 117, 118, 119, 120, 121, 30, 124, 125, 116, 117, 118, 119, 120, 121, 13, 133, 134, 70, 136, 137, 138, 139, 140, 141, 142, 31, 37, 38, 8, 132, 148, 149, 116, 156, 152, 153, 154, 160, 37, 38, 158, 8, 160, 161, 8, 163, 74, 75, 76, 77, 134, 135, 80, 9, 10, 11, 84, 1, 80, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 155, 98, 0, 1, 2, 30, 103, 104, 105, 106, 132, 8, 109, 110, 9, 10, 11, 8, 115, 116, 117, 118, 9, 10, 11, 82, 123, 70, 8, 126, 127, 128, 129, 8, 156, 30, 155, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 9, 10, 11, 157, 53, 54, 55, 8, 57, 155, 156, 157, 152, 153, 154, 10, 11, 157, 80, 162, 69, 30, 151, 32, 33, 34, 35, 74, 1, 2, 159, 155, 71, 80, 151, 30, 8, 84, 37, 38, 87, 88, 89, 82, 91, 82, 93, 8, 95, 13, 156, 98, 158, 13, 160, 13, 103, 104, 105, 106, 82, 108, 109, 110, 156, 8, 113, 31, 115, 116, 117, 118, 9, 10, 11, 157, 123, 37, 38, 126, 127, 128, 129, 82, 13, 159, 33, 34, 35, 82, 127, 8, 85, 30, 156, 32, 33, 34, 160, 8, 147, 74, 1, 2, 50, 51, 52, 80, 155, 156, 157, 84, 31, 159, 87, 88, 89, 82, 91, 158, 93, 160, 95, 160, 106, 98, 108, 100, 101, 102, 103, 104, 105, 106, 133, 159, 109, 110, 160, 9, 10, 11, 115, 116, 117, 118, 9, 10, 11, 8, 123, 144, 145, 126, 127, 128, 129, 82, 82, 158, 30, 160, 32, 33, 108, 8, 70, 30, 31, 113, 152, 16, 9, 10, 11, 74, 14, 14, 122, 8, 8, 80, 155, 156, 157, 84, 13, 159, 87, 88, 89, 151, 91, 30, 93, 160, 95, 155, 159, 98, 14, 100, 101, 102, 103, 104, 105, 106, 133, 16, 109, 110, 155, 157, 1, 2, 115, 116, 117, 118, 9, 10, 11, 13, 123, 16, 155, 126, 127, 128, 129, 33, 34, 158, 158, 160, 160, 156, 9, 10, 11, 30, 37, 38, 31, 70, 155, 37, 38, 50, 51, 52, 156, 16, 81, 16, 155, 156, 157, 30, 16, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 16, 57, 74, 9, 10, 11, 1, 2, 80, 116, 11, 155, 84, 69, 156, 87, 88, 89, 160, 91, 30, 93, 132, 95, 30, 33, 98, 134, 135, 30, 57, 103, 104, 105, 69, 70, 31, 109, 110, 75, 76, 155, 155, 115, 116, 75, 76, 101, 102, 111, 112, 123, 159, 155, 156, 155, 156, 155, 156, 31, 1, 2, 31, 31, 31, 31, 31, 38, 70, 69, 77, 70, 70, 70, 70, 80, 70, 70, 70, 74, 71, 85, 85, 155, 156, 80, 97, 96, 100, 84, 31, 106, 87, 88, 89, 82, 91, 82, 93, 82, 95, 89, 92, 98, 1, 2, 90, 127, 103, 104, 105, 97, 94, 127, 109, 110, 97, 97, 97, 132, 115, 116, 100, 146, 113, 143, 143, 146, 123, 106, 151, 155, 157, 74, 31, 157, 162, -1, 114, 80, -1, 116, -1, 84, -1, -1, 87, 88, 89, -1, 91, -1, 93, -1, 95, -1, 130, 98, 1, 2, 155, 156, 103, 104, 105, -1, 130, -1, 109, 110, 131, -1, 132, 132, 115, 116, 132, 74, -1, 152, 150, -1, 123, 80, 146, -1, -1, 84, 31, 146, 87, 88, 89, 146, 91, 146, 93, 146, 95, 146, 150, 98, 1, 2, 156, 159, 103, 104, 105, 155, 155, 155, 109, 110, 155, 156, 155, 155, 115, 116, 155, 155, 155, 155, 155, 155, 123, 155, 155, 155, 155, 74, 155, 155, 155, 155, 155, 80, 155, 155, 155, 84, 155, 155, 87, 88, 89, 155, 91, 155, 93, 156, 95, 156, 156, 98, 156, 156, 155, 156, 103, 104, 105, 156, 156, 156, 109, 110, 156, 156, 156, 156, 115, 116, 156, 74, 157, 157, 157, 157, 123, 80, 31, 157, 157, 84, 157, 157, 87, 88, 89, 157, 91, 157, 93, 157, 95, 157, 157, 98, 157, 50, 51, 157, 103, 104, 105, 56, 157, 58, 109, 110, 155, 156, 158, 157, 115, 116, 157, 157, 157, 70, 157, 157, 123, 157, 50, 51, 157, 78, 79, 157, 56, 157, 58, 157, 159, 86, 158, 158, 158, 158, 158, 158, 158, 158, 70, 158, 158, 158, 158, 158, 158, 158, 78, 79, 155, 156, 158, 160, 158, 163, 86, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, -1, -1, 161, 134, 161, 136, 137, 138, 139, 140, 141, 142, 162, 162, 162, 162, 162, 148, 149, 162, 162, 162, 162, 162, 162, 162, 162, 158, 134, 162, 136, 137, 138, 139, 140, 141, 142, -1, -1, -1, -1, -1, 148, 149, -1, -1, -1, -1, -1, -1, -1, -1, 158); - protected $actionBase = array(0, 227, 326, 400, 474, 233, 132, 132, 752, -2, -2, 138, -2, -2, -2, 663, 761, 815, 761, 586, 717, 859, 859, 859, 244, 256, 256, 256, 413, 583, 583, 880, 546, 169, 415, 444, 409, 200, 200, 200, 200, 137, 137, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 249, 205, 738, 559, 535, 739, 741, 742, 876, 679, 877, 820, 821, 693, 823, 824, 826, 829, 832, 819, 834, 907, 836, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 67, 536, 299, 510, 230, 44, 652, 652, 652, 652, 652, 652, 652, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 378, 584, 584, 584, 657, 909, 648, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 503, -21, -21, 436, 650, 364, 571, 215, 426, 156, 26, 26, 329, 329, 329, 329, 329, 46, 46, 5, 5, 5, 5, 152, 186, 186, 186, 186, 120, 120, 120, 120, 374, 374, 429, 448, 448, 334, 267, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 336, 427, 427, 572, 572, 408, 551, 551, 551, 551, 671, 171, 171, 391, 311, 311, 311, 109, 641, 856, 68, 68, 68, 68, 68, 68, 324, 324, 324, -3, -3, -3, 655, 77, 380, 77, 380, 683, 685, 86, 685, 654, -15, 516, 776, 281, 646, 809, 680, 816, 560, 711, 202, 578, 857, 643, -23, 578, 578, 578, 578, 857, 622, 628, 596, -23, 578, -23, 639, 454, 849, 351, 249, 558, 469, 631, 743, 514, 688, 746, 464, 544, 548, 556, 7, 412, 708, 750, 878, 879, 349, 702, 631, 631, 631, 327, 101, 7, -8, 623, 623, 623, 623, 219, 623, 623, 623, 623, 291, 430, 545, 401, 745, 653, 653, 675, 839, 814, 814, 653, 673, 653, 675, 841, 841, 841, 841, 653, 653, 653, 653, 814, 814, 667, 814, 275, 684, 694, 694, 841, 713, 714, 653, 653, 697, 814, 814, 814, 697, 687, 841, 669, 637, 333, 814, 841, 689, 673, 689, 653, 669, 689, 673, 673, 689, 22, 686, 656, 840, 842, 860, 756, 638, 644, 847, 848, 843, 845, 838, 692, 719, 720, 528, 659, 660, 661, 662, 696, 664, 698, 643, 658, 658, 658, 645, 701, 645, 658, 658, 658, 658, 658, 658, 658, 658, 632, 635, 709, 699, 670, 723, 566, 582, 758, 640, 636, 872, 865, 881, 883, 849, 870, 645, 890, 634, 288, 610, 850, 633, 753, 645, 851, 645, 759, 645, 873, 777, 666, 778, 779, 658, 874, 891, 892, 893, 894, 897, 898, 899, 900, 665, 901, 724, 674, 866, 344, 844, 639, 705, 677, 755, 725, 780, 372, 902, 784, 645, 645, 765, 706, 645, 766, 726, 712, 862, 727, 867, 903, 640, 678, 868, 645, 681, 785, 904, 372, 690, 651, 704, 649, 728, 858, 875, 853, 767, 612, 617, 787, 788, 792, 691, 730, 863, 864, 835, 731, 770, 642, 771, 676, 794, 772, 852, 732, 796, 798, 871, 647, 707, 682, 672, 668, 773, 799, 869, 733, 735, 736, 801, 737, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 137, 137, 137, -2, -2, -2, -2, 0, 0, -2, 0, 0, 0, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 0, 0, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 602, -21, -21, -21, -21, 602, -21, -21, -21, -21, -21, -21, -21, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, -21, 602, 602, 602, -21, 68, -21, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 602, 0, 0, 602, -21, 602, -21, 602, -21, -21, 602, 602, 602, 602, 602, 602, 602, -21, -21, -21, -21, -21, -21, 0, 324, 324, 324, 324, -21, -21, -21, -21, 68, 68, 147, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 324, 324, -3, -3, 68, 68, 68, 68, 68, 147, 68, 68, -23, 673, 673, 673, 380, 380, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, -23, 0, -23, 0, 68, -23, 673, -23, 380, 673, 673, -23, 814, 604, 604, 604, 604, 372, 7, 0, 0, 673, 673, 0, 0, 0, 0, 0, 673, 0, 0, 0, 0, 0, 0, 814, 0, 653, 0, 0, 0, 0, 658, 288, 0, 677, 456, 0, 0, 0, 0, 0, 0, 677, 456, 530, 530, 0, 665, 658, 658, 658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 372); - protected $actionDefault = array(3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 540, 540, 495, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 297, 297, 297, 32767, 32767, 32767, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 32767, 32767, 32767, 32767, 32767, 32767, 381, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 387, 545, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 362, 363, 365, 366, 296, 548, 529, 245, 388, 544, 295, 247, 325, 499, 32767, 32767, 32767, 327, 122, 256, 201, 498, 125, 294, 232, 380, 382, 326, 301, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 300, 454, 359, 358, 357, 456, 32767, 455, 492, 492, 495, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 323, 483, 482, 324, 452, 328, 453, 331, 457, 460, 329, 330, 347, 348, 345, 346, 349, 458, 459, 476, 477, 474, 475, 299, 350, 351, 352, 353, 478, 479, 480, 481, 32767, 32767, 280, 539, 539, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 338, 339, 467, 468, 32767, 236, 236, 236, 236, 281, 236, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 333, 334, 332, 462, 463, 461, 428, 32767, 32767, 32767, 430, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 500, 32767, 32767, 32767, 32767, 32767, 513, 417, 171, 32767, 409, 32767, 171, 171, 171, 171, 32767, 220, 222, 167, 32767, 171, 32767, 486, 32767, 32767, 32767, 32767, 32767, 518, 343, 32767, 32767, 116, 32767, 32767, 32767, 555, 32767, 513, 32767, 116, 32767, 32767, 32767, 32767, 356, 335, 336, 337, 32767, 32767, 517, 511, 470, 471, 472, 473, 32767, 464, 465, 466, 469, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 425, 431, 431, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 516, 515, 32767, 410, 494, 186, 184, 184, 32767, 206, 206, 32767, 32767, 188, 487, 506, 32767, 188, 173, 32767, 398, 175, 494, 32767, 32767, 238, 32767, 238, 32767, 398, 238, 32767, 32767, 238, 32767, 411, 435, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 377, 378, 489, 502, 32767, 503, 32767, 409, 341, 342, 344, 320, 32767, 322, 367, 368, 369, 370, 371, 372, 373, 375, 32767, 415, 32767, 418, 32767, 32767, 32767, 255, 32767, 553, 32767, 32767, 304, 553, 32767, 32767, 32767, 547, 32767, 32767, 298, 32767, 32767, 32767, 32767, 251, 32767, 169, 32767, 537, 32767, 554, 32767, 511, 32767, 340, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 512, 32767, 32767, 32767, 32767, 227, 32767, 448, 32767, 116, 32767, 32767, 32767, 187, 32767, 32767, 302, 246, 32767, 32767, 546, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 114, 32767, 170, 32767, 32767, 32767, 189, 32767, 32767, 511, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 293, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 511, 32767, 32767, 231, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 411, 32767, 274, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 127, 127, 3, 127, 127, 258, 3, 258, 127, 258, 258, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 214, 217, 206, 206, 164, 127, 127, 266); - protected $goto = array(166, 140, 140, 140, 166, 187, 168, 144, 147, 141, 142, 143, 149, 163, 163, 163, 163, 144, 144, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 138, 159, 160, 161, 162, 184, 139, 185, 493, 494, 377, 495, 499, 500, 501, 502, 503, 504, 505, 506, 967, 164, 145, 146, 148, 171, 176, 186, 203, 253, 256, 258, 260, 263, 264, 265, 266, 267, 268, 269, 277, 278, 279, 280, 303, 304, 328, 329, 330, 394, 395, 396, 542, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 150, 151, 152, 167, 153, 169, 154, 204, 170, 155, 156, 157, 205, 158, 136, 620, 560, 756, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 1108, 628, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 757, 888, 888, 508, 1200, 1200, 400, 606, 508, 536, 536, 568, 532, 534, 534, 496, 498, 524, 540, 569, 572, 583, 590, 852, 852, 852, 852, 847, 853, 174, 585, 519, 600, 601, 177, 178, 179, 401, 402, 403, 404, 173, 202, 206, 208, 257, 259, 261, 262, 270, 271, 272, 273, 274, 275, 281, 282, 283, 284, 305, 306, 331, 332, 333, 406, 407, 408, 409, 175, 180, 254, 255, 181, 182, 183, 497, 497, 785, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 509, 578, 582, 626, 749, 509, 544, 545, 546, 547, 548, 549, 550, 551, 553, 586, 338, 559, 321, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 530, 349, 655, 555, 587, 352, 414, 591, 575, 604, 885, 611, 612, 881, 616, 617, 623, 625, 630, 632, 298, 296, 296, 296, 298, 290, 299, 944, 610, 816, 1170, 613, 436, 436, 375, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 1072, 1084, 1083, 945, 1065, 1072, 895, 895, 895, 895, 1178, 895, 895, 1212, 1212, 1178, 388, 858, 561, 755, 1072, 1072, 1072, 1072, 1072, 1072, 3, 4, 384, 384, 384, 1212, 874, 856, 854, 856, 654, 465, 511, 883, 878, 1089, 541, 384, 537, 384, 567, 384, 1026, 19, 15, 371, 384, 1226, 510, 1204, 1192, 1192, 1192, 510, 906, 372, 522, 533, 554, 912, 514, 1068, 1069, 13, 1065, 378, 912, 1158, 594, 23, 965, 386, 386, 386, 602, 1066, 1169, 1066, 937, 447, 449, 631, 752, 1177, 1067, 1109, 614, 935, 1177, 605, 1197, 391, 1211, 1211, 543, 892, 386, 1194, 1194, 1194, 399, 518, 1016, 901, 389, 771, 529, 752, 340, 752, 1211, 518, 518, 385, 781, 1214, 770, 772, 1063, 910, 774, 1058, 1176, 659, 953, 514, 782, 862, 915, 450, 573, 1155, 0, 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, 528, 0, 0, 0, 0, 513, 0, 528, 0, 350, 351, 0, 609, 512, 515, 438, 439, 1064, 618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 1219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 301); - protected $gotoCheck = array(43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 57, 68, 15, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 126, 9, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 16, 76, 76, 68, 76, 76, 51, 51, 68, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 68, 68, 68, 68, 68, 68, 27, 66, 101, 66, 66, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 117, 117, 29, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 61, 61, 61, 6, 117, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 125, 57, 125, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 32, 71, 32, 32, 69, 69, 69, 32, 40, 40, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 5, 5, 5, 5, 5, 5, 5, 97, 62, 50, 81, 62, 57, 57, 62, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 124, 124, 97, 81, 57, 57, 57, 57, 57, 118, 57, 57, 142, 142, 118, 12, 33, 12, 14, 57, 57, 57, 57, 57, 57, 30, 30, 13, 13, 13, 142, 14, 14, 14, 14, 14, 57, 14, 14, 14, 34, 2, 13, 109, 13, 2, 13, 34, 34, 34, 34, 13, 13, 122, 140, 9, 9, 9, 122, 83, 58, 58, 58, 34, 13, 13, 81, 81, 58, 81, 46, 13, 131, 127, 34, 101, 123, 123, 123, 34, 81, 81, 81, 8, 8, 8, 8, 11, 119, 81, 8, 8, 8, 119, 49, 138, 48, 141, 141, 47, 78, 123, 119, 119, 119, 123, 47, 102, 80, 17, 23, 9, 11, 18, 11, 141, 47, 47, 11, 23, 141, 23, 24, 115, 84, 25, 113, 119, 73, 99, 13, 26, 70, 85, 64, 65, 130, -1, 108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, 9, -1, 9, -1, 71, 71, -1, 13, 9, 9, 9, 9, 13, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5); - protected $gotoBase = array(0, 0, -184, 0, 0, 356, 290, 0, 488, 149, 0, 182, 85, 118, 426, 112, 203, 179, 208, 0, 0, 0, 0, 162, 190, 198, 120, 27, 0, 272, -224, 0, -274, 406, 32, 0, 0, 0, 0, 0, 330, 0, 0, -24, 0, 0, 440, 485, 213, 218, 371, -74, 0, 0, 0, 0, 0, 107, 110, 0, 0, -11, -72, 0, 104, 95, -405, 0, -94, 41, 119, -82, 0, 164, 0, 0, -79, 0, 197, 0, 204, 43, 0, 441, 171, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 115, 0, 195, 210, 0, 0, 0, 0, 0, 86, 427, 259, 0, 0, 116, 0, 174, 0, -5, 117, 196, 0, 0, 161, 170, 93, -21, -48, 273, 0, 0, 91, 271, 0, 0, 0, 0, 0, 0, 216, 0, 437, 187, 102, 0, 0); - protected $gotoDefault = array(-32768, 467, 663, 2, 664, 834, 739, 747, 597, 481, 629, 581, 380, 1188, 791, 792, 793, 381, 367, 482, 379, 410, 405, 780, 773, 775, 783, 172, 411, 786, 1, 788, 517, 824, 1017, 364, 796, 365, 589, 798, 526, 800, 801, 137, 382, 383, 527, 483, 390, 576, 815, 276, 387, 817, 366, 818, 827, 370, 464, 454, 459, 556, 608, 432, 446, 570, 564, 535, 1081, 565, 861, 348, 869, 660, 877, 880, 484, 557, 891, 451, 899, 1094, 397, 905, 911, 916, 287, 919, 417, 412, 584, 924, 925, 5, 929, 621, 622, 8, 312, 952, 598, 966, 420, 1036, 1038, 485, 486, 521, 458, 507, 525, 487, 1059, 440, 413, 1062, 488, 489, 433, 434, 1078, 354, 1163, 353, 448, 320, 1150, 579, 1113, 455, 1203, 1159, 347, 490, 491, 376, 1182, 392, 1198, 437, 1205, 1213, 343, 539, 566); - protected $ruleToNonTerminal = array(0, 1, 3, 3, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 11, 12, 12, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 18, 18, 19, 19, 21, 21, 17, 17, 22, 22, 23, 23, 24, 24, 25, 25, 20, 20, 26, 28, 28, 29, 30, 30, 32, 31, 31, 31, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 14, 14, 54, 54, 56, 55, 55, 48, 48, 58, 58, 59, 59, 60, 60, 15, 16, 16, 16, 63, 63, 63, 64, 64, 67, 67, 65, 65, 69, 69, 41, 41, 50, 50, 53, 53, 53, 52, 52, 70, 42, 42, 42, 42, 71, 71, 72, 72, 73, 73, 39, 39, 35, 35, 74, 37, 37, 75, 36, 36, 38, 38, 49, 49, 49, 61, 61, 77, 77, 78, 78, 80, 80, 80, 79, 79, 62, 62, 81, 81, 81, 82, 82, 83, 83, 83, 44, 44, 84, 84, 84, 45, 45, 85, 85, 86, 86, 66, 87, 87, 87, 87, 92, 92, 93, 93, 94, 94, 94, 94, 94, 95, 96, 96, 91, 91, 88, 88, 90, 90, 98, 98, 97, 97, 97, 97, 97, 97, 89, 89, 100, 99, 99, 46, 46, 40, 40, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 34, 34, 47, 47, 105, 105, 106, 106, 106, 106, 112, 101, 101, 108, 108, 114, 114, 115, 116, 116, 116, 116, 116, 116, 68, 68, 57, 57, 57, 57, 102, 102, 120, 120, 117, 117, 121, 121, 121, 121, 103, 103, 103, 107, 107, 107, 113, 113, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 27, 27, 27, 27, 27, 27, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 111, 111, 104, 104, 104, 104, 127, 127, 130, 130, 129, 129, 131, 131, 51, 51, 51, 51, 133, 133, 132, 132, 132, 132, 132, 134, 134, 119, 119, 122, 122, 118, 118, 136, 135, 135, 135, 135, 123, 123, 123, 123, 110, 110, 124, 124, 124, 124, 76, 137, 137, 138, 138, 138, 109, 109, 139, 139, 140, 140, 140, 140, 140, 125, 125, 125, 125, 142, 143, 141, 141, 141, 141, 141, 141, 141, 144, 144, 144); - protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 6, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 2, 3, 1, 3, 3, 1, 3, 2, 0, 1, 1, 1, 1, 1, 3, 5, 8, 3, 5, 9, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 1, 2, 2, 5, 7, 9, 5, 6, 3, 3, 2, 2, 1, 1, 1, 0, 2, 8, 0, 4, 1, 3, 0, 1, 0, 1, 0, 1, 10, 7, 6, 5, 1, 2, 2, 0, 2, 0, 2, 0, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 1, 4, 0, 2, 3, 0, 2, 4, 0, 2, 0, 3, 1, 2, 1, 1, 0, 1, 3, 4, 6, 1, 1, 1, 0, 1, 0, 2, 2, 3, 3, 1, 3, 1, 2, 2, 3, 1, 1, 2, 4, 3, 1, 1, 3, 2, 0, 1, 3, 3, 9, 3, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 3, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 1, 0, 1, 1, 3, 3, 4, 4, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 4, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 2, 1, 2, 10, 11, 3, 3, 2, 4, 4, 3, 4, 4, 4, 4, 7, 3, 2, 0, 4, 1, 3, 2, 2, 4, 6, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 0, 2, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 3, 1, 4, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 1, 3, 1, 1, 3, 3, 0, 2, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 6, 4, 3, 4, 2, 4, 4, 1, 3, 1, 2, 1, 1, 4, 1, 1, 3, 6, 4, 4, 4, 4, 1, 4, 0, 1, 1, 3, 1, 1, 4, 3, 1, 1, 1, 0, 0, 2, 3, 1, 3, 1, 4, 2, 2, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 6, 3, 1, 1, 1); + protected $numNonLeafStates = 663; + protected $symbolToName = array("EOF", "error", "T_THROW", "T_INCLUDE", "T_INCLUDE_ONCE", "T_EVAL", "T_REQUIRE", "T_REQUIRE_ONCE", "','", "T_LOGICAL_OR", "T_LOGICAL_XOR", "T_LOGICAL_AND", "T_PRINT", "T_YIELD", "T_DOUBLE_ARROW", "T_YIELD_FROM", "'='", "T_PLUS_EQUAL", "T_MINUS_EQUAL", "T_MUL_EQUAL", "T_DIV_EQUAL", "T_CONCAT_EQUAL", "T_MOD_EQUAL", "T_AND_EQUAL", "T_OR_EQUAL", "T_XOR_EQUAL", "T_SL_EQUAL", "T_SR_EQUAL", "T_POW_EQUAL", "T_COALESCE_EQUAL", "'?'", "':'", "T_COALESCE", "T_BOOLEAN_OR", "T_BOOLEAN_AND", "'|'", "'^'", "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG", "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG", "T_IS_EQUAL", "T_IS_NOT_EQUAL", "T_IS_IDENTICAL", "T_IS_NOT_IDENTICAL", "T_SPACESHIP", "'<'", "T_IS_SMALLER_OR_EQUAL", "'>'", "T_IS_GREATER_OR_EQUAL", "T_SL", "T_SR", "'+'", "'-'", "'.'", "'*'", "'/'", "'%'", "'!'", "T_INSTANCEOF", "'~'", "T_INC", "T_DEC", "T_INT_CAST", "T_DOUBLE_CAST", "T_STRING_CAST", "T_ARRAY_CAST", "T_OBJECT_CAST", "T_BOOL_CAST", "T_UNSET_CAST", "'@'", "T_POW", "'['", "T_NEW", "T_CLONE", "T_EXIT", "T_IF", "T_ELSEIF", "T_ELSE", "T_ENDIF", "T_LNUMBER", "T_DNUMBER", "T_STRING", "T_STRING_VARNAME", "T_VARIABLE", "T_NUM_STRING", "T_INLINE_HTML", "T_ENCAPSED_AND_WHITESPACE", "T_CONSTANT_ENCAPSED_STRING", "T_ECHO", "T_DO", "T_WHILE", "T_ENDWHILE", "T_FOR", "T_ENDFOR", "T_FOREACH", "T_ENDFOREACH", "T_DECLARE", "T_ENDDECLARE", "T_AS", "T_SWITCH", "T_MATCH", "T_ENDSWITCH", "T_CASE", "T_DEFAULT", "T_BREAK", "T_CONTINUE", "T_GOTO", "T_FUNCTION", "T_FN", "T_CONST", "T_RETURN", "T_TRY", "T_CATCH", "T_FINALLY", "T_USE", "T_INSTEADOF", "T_GLOBAL", "T_STATIC", "T_ABSTRACT", "T_FINAL", "T_PRIVATE", "T_PROTECTED", "T_PUBLIC", "T_READONLY", "T_VAR", "T_UNSET", "T_ISSET", "T_EMPTY", "T_HALT_COMPILER", "T_CLASS", "T_TRAIT", "T_INTERFACE", "T_EXTENDS", "T_IMPLEMENTS", "T_OBJECT_OPERATOR", "T_LIST", "T_ARRAY", "T_CALLABLE", "T_CLASS_C", "T_TRAIT_C", "T_METHOD_C", "T_FUNC_C", "T_LINE", "T_FILE", "T_START_HEREDOC", "T_END_HEREDOC", "T_DOLLAR_OPEN_CURLY_BRACES", "T_CURLY_OPEN", "T_PAAMAYIM_NEKUDOTAYIM", "T_NAMESPACE", "T_NS_C", "T_DIR", "T_NS_SEPARATOR", "T_ELLIPSIS", "T_NAME_FULLY_QUALIFIED", "T_NAME_QUALIFIED", "T_NAME_RELATIVE", "';'", "'{'", "'}'", "'('", "')'", "'\$'", "'`'", "']'", "'\"'", "T_ENUM", "T_NULLSAFE_OBJECT_OPERATOR", "T_ATTRIBUTE"); + protected $tokenToSymbol = array(0, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 56, 164, 168, 161, 55, 168, 168, 159, 160, 53, 50, 8, 51, 52, 54, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 31, 156, 44, 16, 46, 30, 68, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 70, 168, 163, 36, 168, 162, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 157, 35, 158, 58, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43, 45, 47, 48, 49, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 165, 131, 132, 133, 166, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 167); + protected $action = array(700, 670, 671, 672, 673, 674, 286, 675, 676, 677, 713, 714, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 0, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 245, 246, 242, 243, 244, -32766, -32766, 678, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 1229, 245, 246, 1230, 679, 680, 681, 682, 683, 684, 685, 899, 900, 747, -32766, -32766, -32766, -32766, -32766, -32766, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 716, 739, 717, 718, 719, 720, 708, 709, 710, 738, 711, 712, 697, 698, 699, 701, 702, 703, 741, 742, 743, 744, 745, 746, 875, 704, 705, 706, 707, 737, 728, 726, 727, 723, 724, 1046, 715, 721, 722, 729, 730, 732, 731, 733, 734, 55, 56, 425, 57, 58, 725, 736, 735, 755, 59, 60, -226, 61, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 337, -32767, -32767, -32767, -32767, 29, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 620, -32766, -32766, -32766, -32766, 62, 63, 1046, -32766, -32766, -32766, 64, 419, 65, 294, 295, 66, 67, 68, 69, 70, 71, 72, 73, 823, 25, 302, 74, 418, 984, 986, 669, 668, 1100, 1101, 1078, 755, 755, 767, 1220, 768, 470, -32766, -32766, -32766, 341, 749, 824, 54, -32767, -32767, -32767, -32767, 98, 99, 100, 101, 102, 220, 221, 222, 362, 876, -32766, 27, -32766, -32766, -32766, -32766, -32766, 1046, 493, 126, 1080, 1079, 1081, 370, 1068, 930, 207, 478, 479, 952, 953, 954, 951, 950, 949, 128, 480, 481, 803, 1106, 1107, 1108, 1109, 1103, 1104, 319, 32, 297, 10, 211, -515, 1110, 1105, 669, 668, 1080, 1079, 1081, 220, 221, 222, 41, 364, 341, 334, 421, 336, 426, -128, -128, -128, 313, 1046, 469, -4, 824, 54, 812, 770, 207, 40, 21, 427, -128, 471, -128, 472, -128, 473, -128, 1046, 428, 220, 221, 222, -32766, 33, 34, 429, 361, 327, 52, 35, 474, -32766, -32766, -32766, 342, 357, 358, 475, 476, 48, 207, 249, 669, 668, 477, 443, 300, 795, 846, 430, 431, 28, -32766, 814, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, 952, 953, 954, 951, 950, 949, 422, 755, 424, 426, 826, 634, -128, -32766, -32766, 469, 824, 54, 288, 812, 1151, 755, 40, 21, 427, 317, 471, 345, 472, 129, 473, 9, 1186, 428, 769, 360, 324, 905, 33, 34, 429, 361, 1046, 415, 35, 474, 944, 1068, 315, 125, 357, 358, 475, 476, -32766, -32766, -32766, 926, 302, 477, 121, 1068, 759, 846, 430, 431, 669, 668, 423, 755, 1152, 809, 1046, 480, 766, -32766, 805, -32766, -32766, -32766, -32766, -261, 127, 347, 436, 841, 341, 1078, 1200, 426, 446, 826, 634, -4, 807, 469, 824, 54, 436, 812, 341, 755, 40, 21, 427, 444, 471, 130, 472, 1068, 473, 346, 767, 428, 768, -211, -211, -211, 33, 34, 429, 361, 308, 1076, 35, 474, -32766, -32766, -32766, 1046, 357, 358, 475, 476, -32766, -32766, -32766, 906, 120, 477, 539, 1068, 795, 846, 430, 431, 436, -32766, 341, -32766, -32766, -32766, 1046, 480, 810, -32766, 925, -32766, -32766, 754, 1080, 1079, 1081, 49, -32766, -32766, -32766, 749, 751, 426, 1201, 826, 634, -211, 30, 469, 669, 668, 436, 812, 341, 75, 40, 21, 427, -32766, 471, 1064, 472, 124, 473, 669, 668, 428, 212, -210, -210, -210, 33, 34, 429, 361, 51, 1186, 35, 474, 755, -32766, -32766, -32766, 357, 358, 475, 476, 213, 824, 54, 221, 222, 477, 20, 581, 795, 846, 430, 431, 220, 221, 222, 755, 222, 247, 78, 79, 80, 81, 341, 207, 517, 103, 104, 105, 752, 307, 131, 637, 1068, 207, 341, 207, 122, 826, 634, -210, 36, 106, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 1112, 307, 346, 436, 214, 341, 824, 54, 426, 123, 250, 129, 134, 106, 469, -32766, 572, 1112, 812, 245, 246, 40, 21, 427, 251, 471, 252, 472, 341, 473, 453, 22, 428, 207, 899, 900, 638, 33, 34, 429, 824, 54, -86, 35, 474, 220, 221, 222, 314, 357, 358, 100, 101, 102, 239, 240, 241, 645, 477, -230, 458, 589, 135, 374, 596, 597, 207, 760, 640, 648, 642, 941, 654, 929, 662, 822, 133, 307, 837, 426, -32766, 106, 749, 43, 44, 469, 45, 442, 46, 812, 826, 634, 40, 21, 427, 47, 471, 50, 472, 53, 473, 132, 608, 428, 302, 604, -280, -32766, 33, 34, 429, 824, 54, 426, 35, 474, 755, 957, -84, 469, 357, 358, 521, 812, 628, 363, 40, 21, 427, 477, 471, 575, 472, -515, 473, 847, 616, 428, -423, -32766, 11, 646, 33, 34, 429, 824, 54, 445, 35, 474, 462, 285, 578, 1111, 357, 358, 593, 369, 848, 594, 290, 826, 634, 477, 0, 0, 532, 0, 0, 325, 0, 0, 0, 0, 0, 651, 0, 0, 0, 322, 326, 0, 0, 0, 426, 0, 0, 0, 0, 323, 469, 316, 318, -516, 812, 862, 634, 40, 21, 427, 0, 471, 0, 472, 0, 473, 1158, 0, 428, 0, -414, 6, 7, 33, 34, 429, 824, 54, 426, 35, 474, 12, 14, 373, 469, 357, 358, -424, 812, 563, 754, 40, 21, 427, 477, 471, 248, 472, 839, 473, 38, 39, 428, 657, 658, 765, 813, 33, 34, 429, 821, 800, 815, 35, 474, 215, 216, 878, 869, 357, 358, 217, 870, 218, 798, 863, 826, 634, 477, 860, 858, 936, 937, 934, 820, 209, 804, 806, 808, 811, 933, 763, 764, 1100, 1101, 935, 659, 78, 335, 426, 359, 1102, 635, 639, 641, 469, 643, 644, 647, 812, 826, 634, 40, 21, 427, 649, 471, 650, 472, 652, 473, 653, 636, 428, 796, 1226, 1228, 762, 33, 34, 429, 215, 216, 845, 35, 474, 761, 217, 844, 218, 357, 358, 1227, 843, 1060, 831, 1048, 842, 1049, 477, 559, 209, 1106, 1107, 1108, 1109, 1103, 1104, 398, 1100, 1101, 829, 942, 867, 1110, 1105, 868, 1102, 457, 1225, 1194, 1192, 1177, 1157, 219, 1190, 1091, 917, 1198, 1188, 0, 826, 634, 24, -433, 26, 31, 37, 42, 76, 77, 210, 287, 292, 293, 308, 309, 310, 311, 339, 356, 416, 0, -227, -226, 16, 17, 18, 393, 454, 461, 463, 467, 553, 625, 1051, 559, 1054, 1106, 1107, 1108, 1109, 1103, 1104, 398, 907, 1116, 1050, 1026, 564, 1110, 1105, 1025, 1093, 1055, 0, 1044, 0, 1057, 1056, 219, 1059, 1058, 1075, 0, 1191, 1176, 1172, 1189, 1090, 1223, 1117, 1171, 600); + protected $actionCheck = array(2, 3, 4, 5, 6, 7, 14, 9, 10, 11, 12, 13, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 9, 10, 11, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 69, 70, 53, 54, 55, 9, 10, 57, 30, 116, 32, 33, 34, 35, 36, 37, 38, 80, 69, 70, 83, 71, 72, 73, 74, 75, 76, 77, 135, 136, 80, 33, 34, 35, 36, 37, 38, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 31, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 13, 134, 135, 136, 137, 138, 139, 140, 141, 142, 3, 4, 5, 6, 7, 148, 149, 150, 82, 12, 13, 160, 15, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 8, 44, 45, 46, 47, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 80, 33, 34, 35, 36, 50, 51, 13, 9, 10, 11, 56, 128, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1, 70, 71, 72, 73, 59, 60, 37, 38, 78, 79, 80, 82, 82, 106, 85, 108, 86, 9, 10, 11, 161, 80, 1, 2, 44, 45, 46, 47, 48, 49, 50, 51, 52, 9, 10, 11, 106, 156, 30, 8, 32, 33, 34, 35, 36, 13, 116, 8, 153, 154, 155, 8, 122, 158, 30, 125, 126, 116, 117, 118, 119, 120, 121, 31, 134, 135, 156, 137, 138, 139, 140, 141, 142, 143, 145, 146, 8, 8, 133, 149, 150, 37, 38, 153, 154, 155, 9, 10, 11, 159, 8, 161, 162, 8, 164, 74, 75, 76, 77, 8, 13, 80, 0, 1, 2, 84, 158, 30, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 13, 98, 9, 10, 11, 9, 103, 104, 105, 106, 8, 70, 109, 110, 9, 10, 11, 8, 115, 116, 117, 118, 70, 30, 31, 37, 38, 124, 31, 8, 127, 128, 129, 130, 8, 30, 156, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 116, 117, 118, 119, 120, 121, 8, 82, 8, 74, 156, 157, 158, 33, 34, 80, 1, 2, 8, 84, 163, 82, 87, 88, 89, 133, 91, 70, 93, 152, 95, 108, 82, 98, 158, 8, 113, 160, 103, 104, 105, 106, 13, 108, 109, 110, 123, 122, 113, 157, 115, 116, 117, 118, 9, 10, 11, 156, 71, 124, 157, 122, 127, 128, 129, 130, 37, 38, 8, 82, 160, 156, 13, 134, 156, 30, 156, 32, 33, 34, 35, 158, 157, 148, 159, 122, 161, 80, 1, 74, 133, 156, 157, 158, 156, 80, 1, 2, 159, 84, 161, 82, 87, 88, 89, 157, 91, 157, 93, 122, 95, 161, 106, 98, 108, 100, 101, 102, 103, 104, 105, 106, 159, 116, 109, 110, 9, 10, 11, 13, 115, 116, 117, 118, 9, 10, 11, 160, 16, 124, 81, 122, 127, 128, 129, 130, 159, 30, 161, 32, 33, 34, 13, 134, 156, 30, 156, 32, 33, 153, 153, 154, 155, 70, 9, 10, 11, 80, 80, 74, 160, 156, 157, 158, 14, 80, 37, 38, 159, 84, 161, 152, 87, 88, 89, 30, 91, 160, 93, 14, 95, 37, 38, 98, 16, 100, 101, 102, 103, 104, 105, 106, 70, 82, 109, 110, 82, 33, 34, 35, 115, 116, 117, 118, 16, 1, 2, 10, 11, 124, 160, 85, 127, 128, 129, 130, 9, 10, 11, 82, 11, 14, 157, 9, 10, 11, 161, 30, 85, 53, 54, 55, 154, 57, 157, 31, 122, 30, 161, 30, 157, 156, 157, 158, 30, 69, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 144, 57, 161, 159, 16, 161, 1, 2, 74, 157, 16, 152, 157, 69, 80, 116, 161, 144, 84, 69, 70, 87, 88, 89, 16, 91, 16, 93, 161, 95, 75, 76, 98, 30, 135, 136, 31, 103, 104, 105, 1, 2, 31, 109, 110, 9, 10, 11, 31, 115, 116, 50, 51, 52, 50, 51, 52, 31, 124, 160, 75, 76, 101, 102, 111, 112, 30, 156, 157, 31, 31, 156, 157, 156, 157, 31, 31, 57, 38, 74, 33, 69, 80, 70, 70, 80, 70, 89, 70, 84, 156, 157, 87, 88, 89, 70, 91, 70, 93, 70, 95, 70, 96, 98, 71, 77, 82, 85, 103, 104, 105, 1, 2, 74, 109, 110, 82, 82, 97, 80, 115, 116, 85, 84, 92, 106, 87, 88, 89, 124, 91, 90, 93, 133, 95, 128, 94, 98, 147, 116, 97, 31, 103, 104, 105, 1, 2, 97, 109, 110, 97, 97, 100, 144, 115, 116, 100, 106, 128, 113, 161, 156, 157, 124, -1, -1, 151, -1, -1, 114, -1, -1, -1, -1, -1, 31, -1, -1, -1, 131, 131, -1, -1, -1, 74, -1, -1, -1, -1, 132, 80, 133, 133, 133, 84, 156, 157, 87, 88, 89, -1, 91, -1, 93, -1, 95, 144, -1, 98, -1, 147, 147, 147, 103, 104, 105, 1, 2, 74, 109, 110, 147, 147, 147, 80, 115, 116, 147, 84, 151, 153, 87, 88, 89, 124, 91, 31, 93, 152, 95, 156, 156, 98, 156, 156, 156, 156, 103, 104, 105, 156, 156, 156, 109, 110, 50, 51, 156, 156, 115, 116, 56, 156, 58, 156, 156, 156, 157, 124, 156, 156, 156, 156, 156, 156, 70, 156, 156, 156, 156, 156, 156, 156, 78, 79, 156, 158, 157, 157, 74, 157, 86, 157, 157, 157, 80, 157, 157, 157, 84, 156, 157, 87, 88, 89, 157, 91, 157, 93, 157, 95, 157, 157, 98, 158, 158, 158, 158, 103, 104, 105, 50, 51, 158, 109, 110, 158, 56, 158, 58, 115, 116, 158, 158, 158, 158, 158, 158, 158, 124, 135, 70, 137, 138, 139, 140, 141, 142, 143, 78, 79, 158, 158, 158, 149, 150, 158, 86, 158, 158, 158, 158, 158, 164, 159, 158, 158, 158, 158, 158, -1, 156, 157, 159, 162, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, -1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 135, 160, 137, 138, 139, 140, 141, 142, 143, 160, 160, 160, 160, 160, 149, 150, 160, 160, 163, -1, 162, -1, 163, 163, 159, 163, 163, 163, -1, 163, 163, 163, 163, 163, 163, 163, 163, 163); + protected $actionBase = array(0, 229, 310, 390, 470, 103, 325, 325, 784, -2, -2, 149, -2, -2, -2, 660, 765, 799, 765, 589, 694, 870, 870, 870, 252, 404, 404, 404, 514, 177, 177, 918, 434, 118, 295, 313, 240, 491, 491, 491, 491, 138, 138, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 89, 206, 773, 550, 535, 775, 776, 777, 912, 709, 913, 856, 857, 700, 858, 859, 862, 863, 864, 855, 865, 935, 866, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 322, 592, 285, 319, 232, 44, 691, 691, 691, 691, 691, 691, 691, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 582, 530, 530, 530, 594, 860, 658, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 500, -21, -21, 492, 702, 420, 355, 216, 549, 151, 26, 26, 331, 331, 331, 331, 331, 46, 46, 5, 5, 5, 5, 153, 188, 188, 188, 188, 121, 121, 121, 121, 314, 314, 394, 394, 362, 300, 298, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 67, 656, 656, 659, 659, 522, 554, 554, 554, 554, 679, -59, -59, 381, 462, 462, 462, 528, 717, 854, 382, 382, 382, 382, 382, 382, 561, 561, 561, -3, -3, -3, 692, 115, 137, 115, 137, 678, 732, 450, 732, 338, 677, -15, 510, 810, 468, 707, 850, 711, 853, 572, 735, 267, 529, 654, 674, 463, 529, 529, 529, 529, 654, 610, 640, 608, 463, 529, 463, 718, 323, 496, 89, 570, 507, 675, 778, 293, 670, 780, 290, 373, 332, 566, 278, 435, 733, 781, 914, 917, 385, 715, 675, 675, 675, 352, 511, 278, -8, 605, 605, 605, 605, 156, 605, 605, 605, 605, 251, 276, 375, 402, 779, 657, 657, 690, 872, 869, 869, 657, 689, 657, 690, 874, 874, 874, 874, 657, 657, 657, 657, 869, 869, 869, 688, 869, 239, 703, 704, 704, 874, 742, 743, 657, 657, 712, 869, 869, 869, 712, 695, 874, 701, 741, 277, 869, 874, 672, 689, 672, 657, 701, 672, 689, 689, 672, 22, 666, 668, 873, 875, 887, 790, 662, 685, 879, 880, 876, 878, 871, 699, 744, 745, 497, 669, 671, 673, 680, 719, 682, 713, 674, 667, 667, 667, 655, 720, 655, 667, 667, 667, 667, 667, 667, 667, 667, 916, 646, 731, 714, 653, 749, 553, 573, 791, 664, 811, 900, 893, 867, 919, 881, 898, 655, 920, 739, 247, 643, 882, 783, 786, 655, 883, 655, 792, 655, 902, 812, 686, 813, 814, 667, 910, 921, 923, 924, 925, 927, 928, 929, 930, 684, 931, 750, 696, 894, 299, 877, 718, 729, 705, 788, 751, 820, 328, 932, 823, 655, 655, 794, 785, 655, 795, 756, 740, 890, 757, 895, 933, 664, 708, 896, 655, 706, 825, 934, 328, 681, 683, 888, 661, 761, 886, 911, 885, 796, 649, 663, 829, 830, 831, 693, 763, 891, 892, 889, 764, 803, 665, 805, 697, 832, 807, 884, 768, 833, 834, 899, 676, 730, 710, 698, 687, 809, 835, 897, 769, 770, 771, 848, 772, 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 138, 138, 138, -2, -2, -2, -2, 0, 0, -2, 0, 0, 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 0, 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, -21, -21, -21, -21, 599, -21, -21, -21, -21, -21, -21, -21, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, -21, 599, 599, 599, -21, 382, -21, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 599, 0, 0, 599, -21, 599, -21, 599, -21, -21, 599, 599, 599, 599, 599, 599, 599, -21, -21, -21, -21, -21, -21, 0, 561, 561, 561, 561, -21, -21, -21, -21, 382, 382, 382, 382, 382, 382, 259, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 561, 561, -3, -3, 382, 382, 382, 382, 382, 259, 382, 382, 463, 689, 689, 689, 137, 137, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 463, 0, 463, 0, 382, 463, 689, 463, 657, 137, 689, 689, 463, 869, 616, 616, 616, 616, 328, 278, 0, 0, 689, 689, 0, 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, 0, 869, 0, 0, 0, 0, 0, 667, 247, 0, 705, 335, 0, 0, 0, 0, 0, 0, 705, 335, 347, 347, 0, 684, 667, 667, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328); + protected $actionDefault = array(3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 544, 544, 499, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 299, 299, 299, 32767, 32767, 32767, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 32767, 32767, 32767, 32767, 32767, 32767, 383, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 389, 549, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 364, 365, 367, 368, 298, 552, 533, 247, 390, 548, 297, 249, 327, 503, 32767, 32767, 32767, 329, 122, 258, 203, 502, 125, 296, 234, 382, 384, 328, 303, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 302, 458, 361, 360, 359, 460, 32767, 459, 496, 496, 499, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 325, 487, 486, 326, 456, 330, 457, 333, 461, 464, 331, 332, 349, 350, 347, 348, 351, 462, 463, 480, 481, 478, 479, 301, 352, 353, 354, 355, 482, 483, 484, 485, 32767, 32767, 543, 543, 32767, 32767, 282, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 340, 341, 471, 472, 32767, 238, 238, 238, 238, 283, 238, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 335, 336, 334, 466, 467, 465, 432, 32767, 32767, 32767, 434, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 504, 32767, 32767, 32767, 32767, 32767, 517, 421, 171, 32767, 413, 32767, 171, 171, 171, 171, 32767, 222, 224, 167, 32767, 171, 32767, 490, 32767, 32767, 32767, 32767, 522, 345, 32767, 32767, 116, 32767, 32767, 32767, 559, 32767, 517, 32767, 116, 32767, 32767, 32767, 32767, 358, 337, 338, 339, 32767, 32767, 521, 515, 474, 475, 476, 477, 32767, 468, 469, 470, 473, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 429, 435, 435, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 520, 519, 32767, 414, 498, 188, 186, 186, 32767, 208, 208, 32767, 32767, 190, 491, 510, 32767, 190, 173, 32767, 400, 175, 498, 32767, 32767, 240, 32767, 240, 32767, 400, 240, 32767, 32767, 240, 32767, 415, 439, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 379, 380, 493, 506, 32767, 507, 32767, 413, 343, 344, 346, 322, 32767, 324, 369, 370, 371, 372, 373, 374, 375, 377, 32767, 419, 32767, 422, 32767, 32767, 32767, 257, 32767, 557, 32767, 32767, 306, 557, 32767, 32767, 32767, 551, 32767, 32767, 300, 32767, 32767, 32767, 32767, 253, 32767, 169, 32767, 541, 32767, 558, 32767, 515, 32767, 342, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 516, 32767, 32767, 32767, 32767, 229, 32767, 452, 32767, 116, 32767, 32767, 32767, 189, 32767, 32767, 304, 248, 32767, 32767, 550, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 114, 32767, 170, 32767, 32767, 32767, 191, 32767, 32767, 515, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 295, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 515, 32767, 32767, 233, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 415, 32767, 276, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 127, 127, 3, 127, 127, 260, 3, 260, 127, 260, 260, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 216, 219, 208, 208, 164, 127, 127, 268); + protected $goto = array(166, 140, 140, 140, 166, 187, 168, 144, 147, 141, 142, 143, 149, 163, 163, 163, 163, 144, 144, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 138, 159, 160, 161, 162, 184, 139, 185, 494, 495, 377, 496, 500, 501, 502, 503, 504, 505, 506, 507, 970, 164, 145, 146, 148, 171, 176, 186, 203, 253, 256, 258, 260, 263, 264, 265, 266, 267, 268, 269, 277, 278, 279, 280, 303, 304, 328, 329, 330, 394, 395, 396, 543, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 150, 151, 152, 167, 153, 169, 154, 204, 170, 155, 156, 157, 205, 158, 136, 621, 561, 757, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 1113, 629, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 758, 520, 531, 509, 656, 556, 1183, 750, 509, 592, 786, 1183, 888, 612, 613, 884, 617, 618, 624, 626, 631, 633, 817, 855, 855, 855, 855, 850, 856, 174, 891, 891, 1205, 1205, 177, 178, 179, 401, 402, 403, 404, 173, 202, 206, 208, 257, 259, 261, 262, 270, 271, 272, 273, 274, 275, 281, 282, 283, 284, 305, 306, 331, 332, 333, 406, 407, 408, 409, 175, 180, 254, 255, 181, 182, 183, 498, 498, 498, 498, 498, 498, 861, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 510, 586, 538, 601, 602, 510, 545, 546, 547, 548, 549, 550, 551, 552, 554, 587, 1209, 560, 350, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 400, 607, 537, 537, 569, 533, 909, 535, 535, 497, 499, 525, 541, 570, 573, 584, 591, 298, 296, 296, 296, 298, 289, 299, 611, 378, 511, 614, 595, 947, 375, 511, 437, 437, 437, 437, 437, 437, 1163, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 1077, 948, 338, 1175, 321, 1077, 898, 898, 898, 898, 606, 898, 898, 1217, 1217, 1202, 753, 576, 605, 756, 1077, 1077, 1077, 1077, 1077, 1077, 1069, 384, 384, 384, 391, 1217, 877, 859, 857, 859, 655, 466, 512, 886, 881, 753, 384, 753, 384, 968, 384, 895, 385, 588, 353, 414, 384, 1231, 1019, 542, 1197, 1197, 1197, 568, 1094, 386, 386, 386, 904, 915, 515, 1029, 19, 15, 372, 389, 915, 940, 448, 450, 632, 340, 1216, 1216, 1114, 615, 938, 840, 555, 775, 386, 913, 1070, 1073, 1074, 399, 1069, 1182, 660, 23, 1216, 773, 1182, 544, 603, 1066, 1219, 1071, 1174, 1071, 519, 1199, 1199, 1199, 1089, 1088, 1072, 343, 523, 534, 519, 519, 772, 351, 352, 13, 579, 583, 627, 1061, 388, 782, 562, 771, 515, 783, 1181, 3, 4, 918, 956, 865, 451, 574, 1160, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 514, 529, 0, 0, 0, 0, 514, 0, 529, 0, 0, 0, 0, 610, 513, 516, 439, 440, 1067, 619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 780, 1224, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 301); + protected $gotoCheck = array(43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 57, 69, 15, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 128, 9, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 16, 102, 32, 69, 32, 32, 120, 6, 69, 32, 29, 120, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 50, 69, 69, 69, 69, 69, 69, 27, 77, 77, 77, 77, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 119, 119, 119, 119, 119, 119, 33, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 67, 110, 67, 67, 119, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 142, 57, 72, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 51, 51, 51, 51, 51, 51, 84, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 5, 5, 5, 5, 5, 5, 5, 63, 46, 124, 63, 129, 98, 63, 124, 57, 57, 57, 57, 57, 57, 133, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 98, 127, 82, 127, 57, 57, 57, 57, 57, 49, 57, 57, 144, 144, 140, 11, 40, 40, 14, 57, 57, 57, 57, 57, 57, 82, 13, 13, 13, 48, 144, 14, 14, 14, 14, 14, 57, 14, 14, 14, 11, 13, 11, 13, 102, 13, 79, 11, 70, 70, 70, 13, 13, 103, 2, 9, 9, 9, 2, 34, 125, 125, 125, 81, 13, 13, 34, 34, 34, 34, 17, 13, 8, 8, 8, 8, 18, 143, 143, 8, 8, 8, 9, 34, 25, 125, 85, 82, 82, 82, 125, 82, 121, 74, 34, 143, 24, 121, 47, 34, 116, 143, 82, 82, 82, 47, 121, 121, 121, 126, 126, 82, 58, 58, 58, 47, 47, 23, 72, 72, 58, 62, 62, 62, 114, 12, 23, 12, 23, 13, 26, 121, 30, 30, 86, 100, 71, 65, 66, 132, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, 9, -1, 9, -1, -1, -1, -1, 13, 9, 9, 9, 9, 13, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, 9, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5); + protected $gotoBase = array(0, 0, -172, 0, 0, 353, 201, 0, 477, 149, 0, 110, 195, 117, 426, 112, 203, 140, 171, 0, 0, 0, 0, 168, 164, 157, 119, 27, 0, 205, -118, 0, -428, 266, 51, 0, 0, 0, 0, 0, 388, 0, 0, -24, 0, 0, 345, 484, 146, 133, 209, 75, 0, 0, 0, 0, 0, 107, 161, 0, 0, 0, 222, -77, 0, 106, 97, -343, 0, -94, 135, 123, -129, 0, 129, 0, 0, -50, 0, 143, 0, 159, 64, 0, 338, 132, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 121, 0, 165, 156, 0, 0, 0, 0, 0, 87, 273, 259, 0, 0, 114, 0, 150, 0, 0, -5, -91, 200, 0, 0, 84, 154, 202, 77, -48, 178, 0, 0, 93, 187, 0, 0, 0, 0, 0, 0, 136, 0, 286, 167, 102, 0, 0); + protected $gotoDefault = array(-32768, 468, 664, 2, 665, 835, 740, 748, 598, 482, 630, 582, 380, 1193, 792, 793, 794, 381, 368, 483, 379, 410, 405, 781, 774, 776, 784, 172, 411, 787, 1, 789, 518, 825, 1020, 365, 797, 366, 590, 799, 527, 801, 802, 137, 382, 383, 528, 484, 390, 577, 816, 276, 387, 818, 367, 819, 828, 371, 465, 455, 460, 530, 557, 609, 432, 447, 571, 565, 536, 1086, 566, 864, 349, 872, 661, 880, 883, 485, 558, 894, 452, 902, 1099, 397, 908, 914, 919, 291, 922, 417, 412, 585, 927, 928, 5, 932, 622, 623, 8, 312, 955, 599, 969, 420, 1039, 1041, 486, 487, 522, 459, 508, 526, 488, 1062, 441, 413, 1065, 433, 489, 490, 434, 435, 1083, 355, 1168, 354, 449, 320, 1155, 580, 1118, 456, 1208, 1164, 348, 491, 492, 376, 1187, 392, 1203, 438, 1210, 1218, 344, 540, 567); + protected $ruleToNonTerminal = array(0, 1, 3, 3, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 11, 12, 12, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 18, 18, 19, 19, 21, 21, 17, 17, 22, 22, 23, 23, 24, 24, 25, 25, 20, 20, 26, 28, 28, 29, 30, 30, 32, 31, 31, 31, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 14, 14, 54, 54, 56, 55, 55, 48, 48, 58, 58, 59, 59, 60, 60, 61, 61, 15, 16, 16, 16, 64, 64, 64, 65, 65, 68, 68, 66, 66, 70, 70, 41, 41, 50, 50, 53, 53, 53, 52, 52, 71, 42, 42, 42, 42, 72, 72, 73, 73, 74, 74, 39, 39, 35, 35, 75, 37, 37, 76, 36, 36, 38, 38, 49, 49, 49, 62, 62, 78, 78, 79, 79, 81, 81, 81, 80, 80, 63, 63, 82, 82, 82, 83, 83, 84, 84, 84, 44, 44, 85, 85, 85, 45, 45, 86, 86, 87, 87, 67, 88, 88, 88, 88, 93, 93, 94, 94, 95, 95, 95, 95, 95, 96, 97, 97, 92, 92, 89, 89, 91, 91, 99, 99, 98, 98, 98, 98, 98, 98, 90, 90, 101, 100, 100, 46, 46, 40, 40, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 34, 34, 47, 47, 106, 106, 107, 107, 107, 107, 113, 102, 102, 109, 109, 115, 115, 116, 117, 118, 118, 118, 118, 118, 118, 118, 69, 69, 57, 57, 57, 57, 103, 103, 122, 122, 119, 119, 123, 123, 123, 123, 104, 104, 104, 108, 108, 108, 114, 114, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 27, 27, 27, 27, 27, 27, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 112, 112, 105, 105, 105, 105, 129, 129, 132, 132, 131, 131, 133, 133, 51, 51, 51, 51, 135, 135, 134, 134, 134, 134, 134, 136, 136, 121, 121, 124, 124, 120, 120, 138, 137, 137, 137, 137, 125, 125, 125, 125, 111, 111, 126, 126, 126, 126, 77, 139, 139, 140, 140, 140, 110, 110, 141, 141, 142, 142, 142, 142, 142, 127, 127, 127, 127, 144, 145, 143, 143, 143, 143, 143, 143, 143, 146, 146, 146); + protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 6, 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, 1, 2, 3, 1, 3, 3, 1, 3, 2, 0, 1, 1, 1, 1, 1, 3, 5, 8, 3, 5, 9, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 1, 2, 2, 5, 7, 9, 5, 6, 3, 3, 2, 2, 1, 1, 1, 0, 2, 8, 0, 4, 1, 3, 0, 1, 0, 1, 0, 1, 1, 1, 10, 7, 6, 5, 1, 2, 2, 0, 2, 0, 2, 0, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 1, 4, 0, 2, 3, 0, 2, 4, 0, 2, 0, 3, 1, 2, 1, 1, 0, 1, 3, 4, 6, 1, 1, 1, 0, 1, 0, 2, 2, 3, 3, 1, 3, 1, 2, 2, 3, 1, 1, 2, 4, 3, 1, 1, 3, 2, 0, 1, 3, 3, 9, 3, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 3, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 1, 0, 1, 1, 3, 3, 4, 4, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 5, 4, 3, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 2, 1, 2, 10, 11, 3, 3, 2, 4, 4, 3, 4, 4, 4, 4, 7, 3, 2, 0, 4, 1, 3, 2, 1, 2, 2, 4, 6, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 0, 2, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 3, 1, 4, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 1, 3, 1, 1, 3, 3, 0, 2, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 6, 4, 3, 4, 2, 4, 4, 1, 3, 1, 2, 1, 1, 4, 1, 1, 3, 6, 4, 4, 4, 4, 1, 4, 0, 1, 1, 3, 1, 1, 4, 3, 1, 1, 1, 0, 0, 2, 3, 1, 3, 1, 4, 2, 2, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 6, 3, 1, 1, 1); protected function initReduceCallbacks() { $this->reduceCallbacks = [0 => function ($stackPos) { @@ -16242,27 +16397,27 @@ class Php5 extends \PHPUnit\PhpParser\ParserAbstract }, 176 => function ($stackPos) { $this->semValue = \true; }, 177 => function ($stackPos) { - $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (10 - 3)], ['byRef' => $this->semStack[$stackPos - (10 - 2)], 'params' => $this->semStack[$stackPos - (10 - 5)], 'returnType' => $this->semStack[$stackPos - (10 - 7)], 'stmts' => $this->semStack[$stackPos - (10 - 9)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 178 => function ($stackPos) { + $this->semValue = new Node\Identifier($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 179 => function ($stackPos) { + $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (10 - 3)], ['byRef' => $this->semStack[$stackPos - (10 - 2)], 'params' => $this->semStack[$stackPos - (10 - 5)], 'returnType' => $this->semStack[$stackPos - (10 - 7)], 'stmts' => $this->semStack[$stackPos - (10 - 9)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); + }, 180 => function ($stackPos) { $this->semValue = new Stmt\Class_($this->semStack[$stackPos - (7 - 2)], ['type' => $this->semStack[$stackPos - (7 - 1)], 'extends' => $this->semStack[$stackPos - (7 - 3)], 'implements' => $this->semStack[$stackPos - (7 - 4)], 'stmts' => $this->semStack[$stackPos - (7 - 6)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); $this->checkClass($this->semValue, $stackPos - (7 - 2)); - }, 179 => function ($stackPos) { + }, 181 => function ($stackPos) { $this->semValue = new Stmt\Interface_($this->semStack[$stackPos - (6 - 2)], ['extends' => $this->semStack[$stackPos - (6 - 3)], 'stmts' => $this->semStack[$stackPos - (6 - 5)]], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); $this->checkInterface($this->semValue, $stackPos - (6 - 2)); - }, 180 => function ($stackPos) { - $this->semValue = new Stmt\Trait_($this->semStack[$stackPos - (5 - 2)], ['stmts' => $this->semStack[$stackPos - (5 - 4)]], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 181 => function ($stackPos) { - $this->semValue = 0; }, 182 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; + $this->semValue = new Stmt\Trait_($this->semStack[$stackPos - (5 - 2)], ['stmts' => $this->semStack[$stackPos - (5 - 4)]], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); }, 183 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_FINAL; + $this->semValue = 0; }, 184 => function ($stackPos) { - $this->semValue = null; + $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; }, 185 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (2 - 2)]; + $this->semValue = Stmt\Class_::MODIFIER_FINAL; }, 186 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = null; }, 187 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; }, 188 => function ($stackPos) { @@ -16270,14 +16425,14 @@ class Php5 extends \PHPUnit\PhpParser\ParserAbstract }, 189 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; }, 190 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = array(); }, 191 => function ($stackPos) { - $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; - $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + $this->semValue = $this->semStack[$stackPos - (2 - 2)]; }, 192 => function ($stackPos) { - $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); }, 193 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (4 - 2)]; + $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; + $this->semValue = $this->semStack[$stackPos - (3 - 1)]; }, 194 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); }, 195 => function ($stackPos) { @@ -16285,143 +16440,147 @@ class Php5 extends \PHPUnit\PhpParser\ParserAbstract }, 196 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); }, 197 => function ($stackPos) { - $this->semValue = null; - }, 198 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; + }, 198 => function ($stackPos) { + $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); }, 199 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = null; }, 200 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos - (4 - 2)]; + }, 201 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 202 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 201 => function ($stackPos) { + }, 203 => function ($stackPos) { $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 202 => function ($stackPos) { + }, 204 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 203 => function ($stackPos) { + }, 205 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 3)]; - }, 204 => function ($stackPos) { + }, 206 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 205 => function ($stackPos) { + }, 207 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (5 - 3)]; - }, 206 => function ($stackPos) { + }, 208 => function ($stackPos) { $this->semValue = array(); - }, 207 => function ($stackPos) { + }, 209 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 208 => function ($stackPos) { + }, 210 => function ($stackPos) { $this->semValue = new Stmt\Case_($this->semStack[$stackPos - (4 - 2)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 209 => function ($stackPos) { + }, 211 => function ($stackPos) { $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 210 => function ($stackPos) { + }, 212 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 211 => function ($stackPos) { + }, 213 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 212 => function ($stackPos) { + }, 214 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); - }, 213 => function ($stackPos) { + }, 215 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 214 => function ($stackPos) { + }, 216 => function ($stackPos) { $this->semValue = array(); - }, 215 => function ($stackPos) { + }, 217 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 216 => function ($stackPos) { + }, 218 => function ($stackPos) { $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos - (3 - 2)], \is_array($this->semStack[$stackPos - (3 - 3)]) ? $this->semStack[$stackPos - (3 - 3)] : array($this->semStack[$stackPos - (3 - 3)]), $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 217 => function ($stackPos) { + }, 219 => function ($stackPos) { $this->semValue = array(); - }, 218 => function ($stackPos) { + }, 220 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 219 => function ($stackPos) { - $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos - (4 - 2)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 220 => function ($stackPos) { - $this->semValue = null; }, 221 => function ($stackPos) { - $this->semValue = new Stmt\Else_(\is_array($this->semStack[$stackPos - (2 - 2)]) ? $this->semStack[$stackPos - (2 - 2)] : array($this->semStack[$stackPos - (2 - 2)]), $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos - (4 - 2)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 222 => function ($stackPos) { $this->semValue = null; }, 223 => function ($stackPos) { - $this->semValue = new Stmt\Else_($this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Else_(\is_array($this->semStack[$stackPos - (2 - 2)]) ? $this->semStack[$stackPos - (2 - 2)] : array($this->semStack[$stackPos - (2 - 2)]), $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 224 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); + $this->semValue = null; }, 225 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (2 - 2)], \true); + $this->semValue = new Stmt\Else_($this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 226 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); }, 227 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = array($this->semStack[$stackPos - (2 - 2)], \true); }, 228 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); }, 229 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 230 => function ($stackPos) { + $this->semValue = array(); + }, 231 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 232 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 231 => function ($stackPos) { + }, 233 => function ($stackPos) { $this->semValue = new Node\Param($this->semStack[$stackPos - (4 - 4)], null, $this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 2)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); $this->checkParam($this->semValue); - }, 232 => function ($stackPos) { + }, 234 => function ($stackPos) { $this->semValue = new Node\Param($this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 6)], $this->semStack[$stackPos - (6 - 1)], $this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 3)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); $this->checkParam($this->semValue); - }, 233 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 234 => function ($stackPos) { - $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 235 => function ($stackPos) { - $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 236 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 237 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 238 => function ($stackPos) { $this->semValue = null; }, 239 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (2 - 2)]; + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 240 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = null; }, 241 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = $this->semStack[$stackPos - (2 - 2)]; }, 242 => function ($stackPos) { - $this->semValue = array(new Node\Arg($this->semStack[$stackPos - (3 - 2)], \false, \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes)); + $this->semValue = array(); }, 243 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; }, 244 => function ($stackPos) { + $this->semValue = array(new Node\Arg($this->semStack[$stackPos - (3 - 2)], \false, \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes)); + }, 245 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 246 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 245 => function ($stackPos) { + }, 247 => function ($stackPos) { $this->semValue = new Node\Arg($this->semStack[$stackPos - (1 - 1)], \false, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 246 => function ($stackPos) { + }, 248 => function ($stackPos) { $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \true, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 247 => function ($stackPos) { + }, 249 => function ($stackPos) { $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \false, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 248 => function ($stackPos) { + }, 250 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 249 => function ($stackPos) { + }, 251 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 250 => function ($stackPos) { + }, 252 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 251 => function ($stackPos) { + }, 253 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 252 => function ($stackPos) { + }, 254 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 253 => function ($stackPos) { + }, 255 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 254 => function ($stackPos) { + }, 256 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 255 => function ($stackPos) { + }, 257 => function ($stackPos) { $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (1 - 1)], null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 256 => function ($stackPos) { + }, 258 => function ($stackPos) { $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 257 => function ($stackPos) { + }, 259 => function ($stackPos) { if ($this->semStack[$stackPos - (2 - 2)] !== null) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; } - }, 258 => function ($stackPos) { + }, 260 => function ($stackPos) { $this->semValue = array(); - }, 259 => function ($stackPos) { + }, 261 => function ($stackPos) { $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); @@ -16432,489 +16591,493 @@ class Php5 extends \PHPUnit\PhpParser\ParserAbstract $this->semStack[$stackPos - (1 - 1)][] = $nop; } $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 260 => function ($stackPos) { + }, 262 => function ($stackPos) { $this->semValue = new Stmt\Property($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); $this->checkProperty($this->semValue, $stackPos - (3 - 1)); - }, 261 => function ($stackPos) { + }, 263 => function ($stackPos) { $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos - (3 - 2)], 0, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 262 => function ($stackPos) { + }, 264 => function ($stackPos) { $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos - (9 - 4)], ['type' => $this->semStack[$stackPos - (9 - 1)], 'byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 6)], 'returnType' => $this->semStack[$stackPos - (9 - 8)], 'stmts' => $this->semStack[$stackPos - (9 - 9)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); $this->checkClassMethod($this->semValue, $stackPos - (9 - 1)); - }, 263 => function ($stackPos) { - $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 264 => function ($stackPos) { - $this->semValue = array(); }, 265 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 266 => function ($stackPos) { $this->semValue = array(); }, 267 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + }, 268 => function ($stackPos) { + $this->semValue = array(); + }, 269 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 268 => function ($stackPos) { + }, 270 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 269 => function ($stackPos) { + }, 271 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (5 - 1)][0], $this->semStack[$stackPos - (5 - 1)][1], $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 4)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 270 => function ($stackPos) { + }, 272 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], $this->semStack[$stackPos - (4 - 3)], null, $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 271 => function ($stackPos) { + }, 273 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], null, $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 272 => function ($stackPos) { + }, 274 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], null, $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 273 => function ($stackPos) { + }, 275 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); - }, 274 => function ($stackPos) { + }, 276 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 275 => function ($stackPos) { + }, 277 => function ($stackPos) { $this->semValue = array(null, $this->semStack[$stackPos - (1 - 1)]); - }, 276 => function ($stackPos) { + }, 278 => function ($stackPos) { $this->semValue = null; - }, 277 => function ($stackPos) { + }, 279 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 278 => function ($stackPos) { + }, 280 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 279 => function ($stackPos) { + }, 281 => function ($stackPos) { $this->semValue = 0; - }, 280 => function ($stackPos) { + }, 282 => function ($stackPos) { $this->semValue = 0; - }, 281 => function ($stackPos) { + }, 283 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 282 => function ($stackPos) { + }, 284 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 283 => function ($stackPos) { + }, 285 => function ($stackPos) { $this->checkModifier($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $stackPos - (2 - 2)); $this->semValue = $this->semStack[$stackPos - (2 - 1)] | $this->semStack[$stackPos - (2 - 2)]; - }, 284 => function ($stackPos) { + }, 286 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PUBLIC; - }, 285 => function ($stackPos) { + }, 287 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PROTECTED; - }, 286 => function ($stackPos) { + }, 288 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PRIVATE; - }, 287 => function ($stackPos) { + }, 289 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_STATIC; - }, 288 => function ($stackPos) { + }, 290 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; - }, 289 => function ($stackPos) { + }, 291 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_FINAL; - }, 290 => function ($stackPos) { + }, 292 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 291 => function ($stackPos) { + }, 293 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 292 => function ($stackPos) { + }, 294 => function ($stackPos) { $this->semValue = new Node\VarLikeIdentifier(\substr($this->semStack[$stackPos - (1 - 1)], 1), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 293 => function ($stackPos) { + }, 295 => function ($stackPos) { $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos - (1 - 1)], null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 294 => function ($stackPos) { + }, 296 => function ($stackPos) { $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 295 => function ($stackPos) { + }, 297 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 296 => function ($stackPos) { + }, 298 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 297 => function ($stackPos) { + }, 299 => function ($stackPos) { $this->semValue = array(); - }, 298 => function ($stackPos) { + }, 300 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 299 => function ($stackPos) { + }, 301 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 300 => function ($stackPos) { + }, 302 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 301 => function ($stackPos) { + }, 303 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 302 => function ($stackPos) { + }, 304 => function ($stackPos) { $this->semValue = new Expr\AssignRef($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 303 => function ($stackPos) { + }, 305 => function ($stackPos) { $this->semValue = new Expr\AssignRef($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 304 => function ($stackPos) { + }, 306 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 305 => function ($stackPos) { + }, 307 => function ($stackPos) { $this->semValue = new Expr\Clone_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 306 => function ($stackPos) { + }, 308 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 307 => function ($stackPos) { + }, 309 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 308 => function ($stackPos) { + }, 310 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 309 => function ($stackPos) { + }, 311 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 310 => function ($stackPos) { + }, 312 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 311 => function ($stackPos) { + }, 313 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 312 => function ($stackPos) { + }, 314 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 313 => function ($stackPos) { + }, 315 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 314 => function ($stackPos) { + }, 316 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 315 => function ($stackPos) { + }, 317 => function ($stackPos) { $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 316 => function ($stackPos) { + }, 318 => function ($stackPos) { $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 317 => function ($stackPos) { + }, 319 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 318 => function ($stackPos) { + }, 320 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 319 => function ($stackPos) { + }, 321 => function ($stackPos) { $this->semValue = new Expr\PostInc($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 320 => function ($stackPos) { + }, 322 => function ($stackPos) { $this->semValue = new Expr\PreInc($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 321 => function ($stackPos) { + }, 323 => function ($stackPos) { $this->semValue = new Expr\PostDec($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 322 => function ($stackPos) { + }, 324 => function ($stackPos) { $this->semValue = new Expr\PreDec($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 323 => function ($stackPos) { + }, 325 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 324 => function ($stackPos) { + }, 326 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 325 => function ($stackPos) { + }, 327 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 326 => function ($stackPos) { + }, 328 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 327 => function ($stackPos) { + }, 329 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 328 => function ($stackPos) { + }, 330 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 329 => function ($stackPos) { + }, 331 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 330 => function ($stackPos) { + }, 332 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 331 => function ($stackPos) { + }, 333 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 332 => function ($stackPos) { + }, 334 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 333 => function ($stackPos) { + }, 335 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 334 => function ($stackPos) { + }, 336 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 335 => function ($stackPos) { + }, 337 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 336 => function ($stackPos) { + }, 338 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 337 => function ($stackPos) { + }, 339 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 338 => function ($stackPos) { + }, 340 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 339 => function ($stackPos) { + }, 341 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 340 => function ($stackPos) { + }, 342 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 341 => function ($stackPos) { + }, 343 => function ($stackPos) { $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 342 => function ($stackPos) { + }, 344 => function ($stackPos) { $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 343 => function ($stackPos) { + }, 345 => function ($stackPos) { $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 344 => function ($stackPos) { + }, 346 => function ($stackPos) { $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 345 => function ($stackPos) { + }, 347 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 346 => function ($stackPos) { + }, 348 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 347 => function ($stackPos) { + }, 349 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 348 => function ($stackPos) { + }, 350 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 349 => function ($stackPos) { + }, 351 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 350 => function ($stackPos) { + }, 352 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 351 => function ($stackPos) { + }, 353 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 352 => function ($stackPos) { + }, 354 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 353 => function ($stackPos) { + }, 355 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 354 => function ($stackPos) { + }, 356 => function ($stackPos) { $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 355 => function ($stackPos) { + }, 357 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 356 => function ($stackPos) { + }, 358 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 357 => function ($stackPos) { + }, 359 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (5 - 1)], $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 358 => function ($stackPos) { + }, 360 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (4 - 1)], null, $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 359 => function ($stackPos) { + }, 361 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 360 => function ($stackPos) { + }, 362 => function ($stackPos) { $this->semValue = new Expr\Isset_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 361 => function ($stackPos) { + }, 363 => function ($stackPos) { $this->semValue = new Expr\Empty_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 362 => function ($stackPos) { + }, 364 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 363 => function ($stackPos) { + }, 365 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 364 => function ($stackPos) { + }, 366 => function ($stackPos) { $this->semValue = new Expr\Eval_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 365 => function ($stackPos) { + }, 367 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 366 => function ($stackPos) { + }, 368 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 367 => function ($stackPos) { + }, 369 => function ($stackPos) { $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 368 => function ($stackPos) { + }, 370 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes; $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos - (2 - 1)]); $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos - (2 - 2)], $attrs); - }, 369 => function ($stackPos) { + }, 371 => function ($stackPos) { $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 370 => function ($stackPos) { + }, 372 => function ($stackPos) { $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 371 => function ($stackPos) { + }, 373 => function ($stackPos) { $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 372 => function ($stackPos) { + }, 374 => function ($stackPos) { $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 373 => function ($stackPos) { + }, 375 => function ($stackPos) { $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 374 => function ($stackPos) { + }, 376 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes; $attrs['kind'] = \strtolower($this->semStack[$stackPos - (2 - 1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE; $this->semValue = new Expr\Exit_($this->semStack[$stackPos - (2 - 2)], $attrs); - }, 375 => function ($stackPos) { - $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 376 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 377 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 378 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 379 => function ($stackPos) { - $this->semValue = new Expr\ShellExec($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 380 => function ($stackPos) { - $this->semValue = new Expr\Print_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 381 => function ($stackPos) { - $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Expr\ShellExec($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 382 => function ($stackPos) { - $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = new Expr\Print_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 383 => function ($stackPos) { - $this->semValue = new Expr\Closure(['static' => \false, 'byRef' => $this->semStack[$stackPos - (10 - 2)], 'params' => $this->semStack[$stackPos - (10 - 4)], 'uses' => $this->semStack[$stackPos - (10 - 6)], 'returnType' => $this->semStack[$stackPos - (10 - 7)], 'stmts' => $this->semStack[$stackPos - (10 - 9)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); + $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 384 => function ($stackPos) { - $this->semValue = new Expr\Closure(['static' => \true, 'byRef' => $this->semStack[$stackPos - (11 - 3)], 'params' => $this->semStack[$stackPos - (11 - 5)], 'uses' => $this->semStack[$stackPos - (11 - 7)], 'returnType' => $this->semStack[$stackPos - (11 - 8)], 'stmts' => $this->semStack[$stackPos - (11 - 10)]], $this->startAttributeStack[$stackPos - (11 - 1)] + $this->endAttributes); + $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 385 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = new Expr\Closure(['static' => \false, 'byRef' => $this->semStack[$stackPos - (10 - 2)], 'params' => $this->semStack[$stackPos - (10 - 4)], 'uses' => $this->semStack[$stackPos - (10 - 6)], 'returnType' => $this->semStack[$stackPos - (10 - 7)], 'stmts' => $this->semStack[$stackPos - (10 - 9)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); }, 386 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = new Expr\Closure(['static' => \true, 'byRef' => $this->semStack[$stackPos - (11 - 3)], 'params' => $this->semStack[$stackPos - (11 - 5)], 'uses' => $this->semStack[$stackPos - (11 - 7)], 'returnType' => $this->semStack[$stackPos - (11 - 8)], 'stmts' => $this->semStack[$stackPos - (11 - 10)]], $this->startAttributeStack[$stackPos - (11 - 1)] + $this->endAttributes); }, 387 => function ($stackPos) { - $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (2 - 2)], null, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; }, 388 => function ($stackPos) { - $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (4 - 4)], $this->semStack[$stackPos - (4 - 2)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; }, 389 => function ($stackPos) { + $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (2 - 2)], null, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + }, 390 => function ($stackPos) { + $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (4 - 4)], $this->semStack[$stackPos - (4 - 2)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + }, 391 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG; $this->semValue = new Expr\Array_($this->semStack[$stackPos - (4 - 3)], $attrs); - }, 390 => function ($stackPos) { + }, 392 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT; $this->semValue = new Expr\Array_($this->semStack[$stackPos - (3 - 2)], $attrs); - }, 391 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 392 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch(Scalar\String_::fromString($this->semStack[$stackPos - (4 - 1)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes), $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 393 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 394 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch(Scalar\String_::fromString($this->semStack[$stackPos - (4 - 1)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes), $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 395 => function ($stackPos) { + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + }, 396 => function ($stackPos) { + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + }, 397 => function ($stackPos) { $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos - (7 - 3)], 'implements' => $this->semStack[$stackPos - (7 - 4)], 'stmts' => $this->semStack[$stackPos - (7 - 6)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes), $this->semStack[$stackPos - (7 - 2)]); $this->checkClass($this->semValue[0], -1); - }, 396 => function ($stackPos) { + }, 398 => function ($stackPos) { $this->semValue = new Expr\New_($this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 397 => function ($stackPos) { + }, 399 => function ($stackPos) { list($class, $ctorArgs) = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 398 => function ($stackPos) { + }, 400 => function ($stackPos) { $this->semValue = array(); - }, 399 => function ($stackPos) { + }, 401 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 3)]; - }, 400 => function ($stackPos) { + }, 402 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 401 => function ($stackPos) { + }, 403 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 402 => function ($stackPos) { - $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos - (2 - 2)], $this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 403 => function ($stackPos) { - $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 404 => function ($stackPos) { - $this->semValue = new Expr\StaticCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos - (2 - 2)], $this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 405 => function ($stackPos) { - $this->semValue = new Expr\StaticCall($this->semStack[$stackPos - (6 - 1)], $this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 6)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); + $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 406 => function ($stackPos) { - $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 407 => function ($stackPos) { $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 408 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = new Expr\StaticCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 409 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Expr\StaticCall($this->semStack[$stackPos - (6 - 1)], $this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 6)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); }, 410 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 411 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 412 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 413 => function ($stackPos) { - $this->semValue = new Name\FullyQualified(\substr($this->semStack[$stackPos - (1 - 1)], 1), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 414 => function ($stackPos) { - $this->semValue = new Name\Relative(\substr($this->semStack[$stackPos - (1 - 1)], 10), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 415 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + }, 415 => function ($stackPos) { + $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 416 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 417 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Name\FullyQualified(\substr($this->semStack[$stackPos - (1 - 1)], 1), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 418 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Name\Relative(\substr($this->semStack[$stackPos - (1 - 1)], 10), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 419 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 420 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 421 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 422 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 423 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 424 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 425 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 426 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 427 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 428 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 429 => function ($stackPos) { - $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos - (1 - 1)], '`', \false), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes)); + $this->semValue = null; }, 430 => function ($stackPos) { + $this->semValue = null; + }, 431 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + }, 432 => function ($stackPos) { + $this->semValue = array(); + }, 433 => function ($stackPos) { + $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos - (1 - 1)], '`', \false), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes)); + }, 434 => function ($stackPos) { foreach ($this->semStack[$stackPos - (1 - 1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', \false); } } $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 431 => function ($stackPos) { + }, 435 => function ($stackPos) { $this->semValue = array(); - }, 432 => function ($stackPos) { + }, 436 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 433 => function ($stackPos) { + }, 437 => function ($stackPos) { $this->semValue = $this->parseLNumber($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes, \true); - }, 434 => function ($stackPos) { + }, 438 => function ($stackPos) { $this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 435 => function ($stackPos) { + }, 439 => function ($stackPos) { $this->semValue = Scalar\String_::fromString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes, \false); - }, 436 => function ($stackPos) { + }, 440 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 437 => function ($stackPos) { + }, 441 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 438 => function ($stackPos) { + }, 442 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 439 => function ($stackPos) { + }, 443 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 440 => function ($stackPos) { + }, 444 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 441 => function ($stackPos) { + }, 445 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 442 => function ($stackPos) { + }, 446 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 443 => function ($stackPos) { + }, 447 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 444 => function ($stackPos) { + }, 448 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (3 - 3)] + $this->endAttributeStack[$stackPos - (3 - 3)], \false); - }, 445 => function ($stackPos) { + }, 449 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (2 - 1)], '', $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (2 - 2)] + $this->endAttributeStack[$stackPos - (2 - 2)], \false); - }, 446 => function ($stackPos) { + }, 450 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 447 => function ($stackPos) { + }, 451 => function ($stackPos) { $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 448 => function ($stackPos) { + }, 452 => function ($stackPos) { $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 449 => function ($stackPos) { + }, 453 => function ($stackPos) { $this->semValue = new Expr\Array_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 450 => function ($stackPos) { + }, 454 => function ($stackPos) { $this->semValue = new Expr\Array_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 451 => function ($stackPos) { + }, 455 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 452 => function ($stackPos) { + }, 456 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 453 => function ($stackPos) { + }, 457 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 454 => function ($stackPos) { + }, 458 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 455 => function ($stackPos) { + }, 459 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 456 => function ($stackPos) { + }, 460 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 457 => function ($stackPos) { + }, 461 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 458 => function ($stackPos) { + }, 462 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 459 => function ($stackPos) { + }, 463 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 460 => function ($stackPos) { + }, 464 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 461 => function ($stackPos) { + }, 465 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 462 => function ($stackPos) { + }, 466 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 463 => function ($stackPos) { + }, 467 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 464 => function ($stackPos) { + }, 468 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 465 => function ($stackPos) { + }, 469 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 466 => function ($stackPos) { + }, 470 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 467 => function ($stackPos) { + }, 471 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 468 => function ($stackPos) { + }, 472 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 469 => function ($stackPos) { + }, 473 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 470 => function ($stackPos) { + }, 474 => function ($stackPos) { $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 471 => function ($stackPos) { + }, 475 => function ($stackPos) { $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 472 => function ($stackPos) { + }, 476 => function ($stackPos) { $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 473 => function ($stackPos) { + }, 477 => function ($stackPos) { $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 474 => function ($stackPos) { + }, 478 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 475 => function ($stackPos) { + }, 479 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 476 => function ($stackPos) { + }, 480 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 477 => function ($stackPos) { + }, 481 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 478 => function ($stackPos) { + }, 482 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 479 => function ($stackPos) { + }, 483 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 480 => function ($stackPos) { + }, 484 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 481 => function ($stackPos) { + }, 485 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 482 => function ($stackPos) { + }, 486 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (5 - 1)], $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 483 => function ($stackPos) { + }, 487 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (4 - 1)], null, $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 484 => function ($stackPos) { + }, 488 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 485 => function ($stackPos) { + }, 489 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 486 => function ($stackPos) { + }, 490 => function ($stackPos) { $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 487 => function ($stackPos) { + }, 491 => function ($stackPos) { $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 488 => function ($stackPos) { + }, 492 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 489 => function ($stackPos) { + }, 493 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 490 => function ($stackPos) { + }, 494 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; foreach ($this->semStack[$stackPos - (3 - 2)] as $s) { @@ -16923,160 +17086,160 @@ class Php5 extends \PHPUnit\PhpParser\ParserAbstract } } $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos - (3 - 2)], $attrs); - }, 491 => function ($stackPos) { + }, 495 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (3 - 3)] + $this->endAttributeStack[$stackPos - (3 - 3)], \true); - }, 492 => function ($stackPos) { + }, 496 => function ($stackPos) { $this->semValue = array(); - }, 493 => function ($stackPos) { + }, 497 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 494 => function ($stackPos) { + }, 498 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 495 => function ($stackPos) { + }, 499 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 496 => function ($stackPos) { + }, 500 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 497 => function ($stackPos) { + }, 501 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 498 => function ($stackPos) { + }, 502 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (3 - 3)], $this->semStack[$stackPos - (3 - 1)], \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 499 => function ($stackPos) { + }, 503 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 500 => function ($stackPos) { + }, 504 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 501 => function ($stackPos) { + }, 505 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 502 => function ($stackPos) { + }, 506 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 503 => function ($stackPos) { + }, 507 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 504 => function ($stackPos) { + }, 508 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 5)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 505 => function ($stackPos) { + }, 509 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 506 => function ($stackPos) { + }, 510 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 507 => function ($stackPos) { + }, 511 => function ($stackPos) { $this->semValue = new Expr\MethodCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 508 => function ($stackPos) { + }, 512 => function ($stackPos) { $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 509 => function ($stackPos) { + }, 513 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 510 => function ($stackPos) { + }, 514 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 511 => function ($stackPos) { + }, 515 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 512 => function ($stackPos) { + }, 516 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 513 => function ($stackPos) { + }, 517 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 514 => function ($stackPos) { + }, 518 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 515 => function ($stackPos) { + }, 519 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 516 => function ($stackPos) { + }, 520 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 517 => function ($stackPos) { + }, 521 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 518 => function ($stackPos) { + }, 522 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 519 => function ($stackPos) { + }, 523 => function ($stackPos) { $var = \substr($this->semStack[$stackPos - (1 - 1)], 1); $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes) : $var; - }, 520 => function ($stackPos) { + }, 524 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 521 => function ($stackPos) { + }, 525 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (6 - 1)], $this->semStack[$stackPos - (6 - 5)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 522 => function ($stackPos) { + }, 526 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 523 => function ($stackPos) { + }, 527 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 524 => function ($stackPos) { + }, 528 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 525 => function ($stackPos) { + }, 529 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 526 => function ($stackPos) { + }, 530 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 527 => function ($stackPos) { + }, 531 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 528 => function ($stackPos) { + }, 532 => function ($stackPos) { $this->semValue = null; - }, 529 => function ($stackPos) { + }, 533 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 530 => function ($stackPos) { + }, 534 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 531 => function ($stackPos) { + }, 535 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 532 => function ($stackPos) { + }, 536 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 533 => function ($stackPos) { + }, 537 => function ($stackPos) { $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); $this->errorState = 2; - }, 534 => function ($stackPos) { + }, 538 => function ($stackPos) { $this->semValue = new Expr\List_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 535 => function ($stackPos) { + }, 539 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 536 => function ($stackPos) { + }, 540 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 537 => function ($stackPos) { + }, 541 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 538 => function ($stackPos) { + }, 542 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 539 => function ($stackPos) { + }, 543 => function ($stackPos) { $this->semValue = null; - }, 540 => function ($stackPos) { + }, 544 => function ($stackPos) { $this->semValue = array(); - }, 541 => function ($stackPos) { + }, 545 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 542 => function ($stackPos) { + }, 546 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 543 => function ($stackPos) { + }, 547 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 544 => function ($stackPos) { + }, 548 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (3 - 3)], $this->semStack[$stackPos - (3 - 1)], \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 545 => function ($stackPos) { + }, 549 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 546 => function ($stackPos) { + }, 550 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (4 - 4)], $this->semStack[$stackPos - (4 - 1)], \true, $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 547 => function ($stackPos) { + }, 551 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 548 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 549 => function ($stackPos) { + }, 552 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, \true); + }, 553 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 550 => function ($stackPos) { + }, 554 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 551 => function ($stackPos) { + }, 555 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 552 => function ($stackPos) { + }, 556 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)]); - }, 553 => function ($stackPos) { + }, 557 => function ($stackPos) { $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 554 => function ($stackPos) { + }, 558 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 555 => function ($stackPos) { + }, 559 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 556 => function ($stackPos) { + }, 560 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 557 => function ($stackPos) { + }, 561 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 558 => function ($stackPos) { + }, 562 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 559 => function ($stackPos) { + }, 563 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 560 => function ($stackPos) { + }, 564 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 4)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 561 => function ($stackPos) { + }, 565 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 562 => function ($stackPos) { + }, 566 => function ($stackPos) { $this->semValue = new Scalar\String_($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 563 => function ($stackPos) { + }, 567 => function ($stackPos) { $this->semValue = $this->parseNumString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 564 => function ($stackPos) { + }, 568 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }]; } @@ -17100,26 +17263,26 @@ use PHPUnit\PhpParser\Node\Stmt; class Php7 extends \PHPUnit\PhpParser\ParserAbstract { protected $tokenToSymbolMapSize = 396; - protected $actionTableSize = 1217; - protected $gotoTableSize = 604; + protected $actionTableSize = 1241; + protected $gotoTableSize = 629; protected $invalidSymbol = 168; protected $errorSymbol = 1; protected $defaultAction = -32766; protected $unexpectedTokenRule = 32767; - protected $YY2TBLSTATE = 429; - protected $numNonLeafStates = 717; + protected $YY2TBLSTATE = 434; + protected $numNonLeafStates = 736; protected $symbolToName = array("EOF", "error", "T_THROW", "T_INCLUDE", "T_INCLUDE_ONCE", "T_EVAL", "T_REQUIRE", "T_REQUIRE_ONCE", "','", "T_LOGICAL_OR", "T_LOGICAL_XOR", "T_LOGICAL_AND", "T_PRINT", "T_YIELD", "T_DOUBLE_ARROW", "T_YIELD_FROM", "'='", "T_PLUS_EQUAL", "T_MINUS_EQUAL", "T_MUL_EQUAL", "T_DIV_EQUAL", "T_CONCAT_EQUAL", "T_MOD_EQUAL", "T_AND_EQUAL", "T_OR_EQUAL", "T_XOR_EQUAL", "T_SL_EQUAL", "T_SR_EQUAL", "T_POW_EQUAL", "T_COALESCE_EQUAL", "'?'", "':'", "T_COALESCE", "T_BOOLEAN_OR", "T_BOOLEAN_AND", "'|'", "'^'", "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG", "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG", "T_IS_EQUAL", "T_IS_NOT_EQUAL", "T_IS_IDENTICAL", "T_IS_NOT_IDENTICAL", "T_SPACESHIP", "'<'", "T_IS_SMALLER_OR_EQUAL", "'>'", "T_IS_GREATER_OR_EQUAL", "T_SL", "T_SR", "'+'", "'-'", "'.'", "'*'", "'/'", "'%'", "'!'", "T_INSTANCEOF", "'~'", "T_INC", "T_DEC", "T_INT_CAST", "T_DOUBLE_CAST", "T_STRING_CAST", "T_ARRAY_CAST", "T_OBJECT_CAST", "T_BOOL_CAST", "T_UNSET_CAST", "'@'", "T_POW", "'['", "T_NEW", "T_CLONE", "T_EXIT", "T_IF", "T_ELSEIF", "T_ELSE", "T_ENDIF", "T_LNUMBER", "T_DNUMBER", "T_STRING", "T_STRING_VARNAME", "T_VARIABLE", "T_NUM_STRING", "T_INLINE_HTML", "T_ENCAPSED_AND_WHITESPACE", "T_CONSTANT_ENCAPSED_STRING", "T_ECHO", "T_DO", "T_WHILE", "T_ENDWHILE", "T_FOR", "T_ENDFOR", "T_FOREACH", "T_ENDFOREACH", "T_DECLARE", "T_ENDDECLARE", "T_AS", "T_SWITCH", "T_MATCH", "T_ENDSWITCH", "T_CASE", "T_DEFAULT", "T_BREAK", "T_CONTINUE", "T_GOTO", "T_FUNCTION", "T_FN", "T_CONST", "T_RETURN", "T_TRY", "T_CATCH", "T_FINALLY", "T_USE", "T_INSTEADOF", "T_GLOBAL", "T_STATIC", "T_ABSTRACT", "T_FINAL", "T_PRIVATE", "T_PROTECTED", "T_PUBLIC", "T_READONLY", "T_VAR", "T_UNSET", "T_ISSET", "T_EMPTY", "T_HALT_COMPILER", "T_CLASS", "T_TRAIT", "T_INTERFACE", "T_ENUM", "T_EXTENDS", "T_IMPLEMENTS", "T_OBJECT_OPERATOR", "T_NULLSAFE_OBJECT_OPERATOR", "T_LIST", "T_ARRAY", "T_CALLABLE", "T_CLASS_C", "T_TRAIT_C", "T_METHOD_C", "T_FUNC_C", "T_LINE", "T_FILE", "T_START_HEREDOC", "T_END_HEREDOC", "T_DOLLAR_OPEN_CURLY_BRACES", "T_CURLY_OPEN", "T_PAAMAYIM_NEKUDOTAYIM", "T_NAMESPACE", "T_NS_C", "T_DIR", "T_NS_SEPARATOR", "T_ELLIPSIS", "T_NAME_FULLY_QUALIFIED", "T_NAME_QUALIFIED", "T_NAME_RELATIVE", "T_ATTRIBUTE", "';'", "']'", "'{'", "'}'", "'('", "')'", "'`'", "'\"'", "'\$'"); protected $tokenToSymbol = array(0, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 56, 166, 168, 167, 55, 168, 168, 163, 164, 53, 50, 8, 51, 52, 54, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 31, 159, 44, 16, 46, 30, 68, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 70, 168, 160, 36, 168, 165, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 161, 35, 162, 58, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43, 45, 47, 48, 49, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158); - protected $action = array(132, 133, 134, 570, 135, 136, 0, 729, 730, 731, 137, 37, 929, 450, 451, 452, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 101, 102, 103, 104, 105, 1085, 1086, 1087, 1084, 1083, 1082, 1088, 723, 722, -32766, 1275, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, 373, 374, 918, 2, 732, -32766, -32766, -32766, 1001, 472, 417, 150, -32766, -32766, -32766, 375, 374, 12, 267, 138, 399, 736, 737, 738, 739, 417, -32766, 423, -32766, -32766, -32766, -32766, -32766, -32766, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 770, 571, 771, 772, 773, 774, 762, 763, 339, 340, 765, 766, 751, 752, 753, 755, 756, 757, 349, 797, 798, 799, 800, 801, 802, 758, 759, 572, 573, 791, 782, 780, 781, 794, 777, 778, 323, 423, 574, 575, 776, 576, 577, 578, 579, 580, 581, -324, -585, 810, 34, 805, 779, 582, 583, -585, 139, -32766, -32766, -32766, 132, 133, 134, 570, 135, 136, 1034, 729, 730, 731, 137, 37, -32766, -32766, -32766, 544, 814, 126, -32766, 1310, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 1085, 1086, 1087, 1084, 1083, 1082, 1088, 473, 723, 722, -32766, -32766, -32766, 458, 459, 81, -32766, -32766, -32766, -193, -192, 322, 898, 240, 599, 1210, 1209, 1211, 732, 816, 703, -32766, 1063, -32766, -32766, -32766, -32766, -32766, 811, -32766, -32766, -32766, 267, 138, 399, 736, 737, 738, 739, 1247, 1295, 423, 694, 1320, 35, 249, 1321, 1294, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 770, 571, 771, 772, 773, 774, 762, 763, 339, 340, 765, 766, 751, 752, 753, 755, 756, 757, 349, 797, 798, 799, 800, 801, 802, 758, 759, 572, 573, 791, 782, 780, 781, 794, 777, 778, 888, 593, 574, 575, 776, 576, 577, 578, 579, 580, 581, -324, 82, 83, 84, -585, 779, 582, 583, -585, 148, 754, 724, 725, 726, 727, 728, -582, 729, 730, 731, 767, 768, 36, -582, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, -362, 271, -362, -32766, -32766, -32766, 106, 107, 108, -268, 271, -193, -192, 109, 933, 934, 900, 732, 689, 935, 14, 288, 109, 815, -32766, 1061, -32766, -32766, 964, -86, 288, 733, 734, 735, 736, 737, 738, 739, 239, 384, 803, 11, 1077, -539, -32766, -32766, -32766, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 770, 793, 771, 772, 773, 774, 762, 763, 764, 792, 765, 766, 751, 752, 753, 755, 756, 757, 796, 797, 798, 799, 800, 801, 802, 758, 759, 760, 761, 791, 782, 780, 781, 794, 777, 778, 128, -86, 769, 775, 776, 783, 784, 786, 785, 787, 788, -576, 144, -539, -539, -576, 779, 790, 789, 49, 50, 51, 503, 52, 53, 997, 996, 995, 998, 54, 55, -111, 56, -582, 1033, 1010, -111, -582, -111, 1291, -539, -32766, -32766, 302, 1010, 1010, -111, -111, -111, -111, -111, -111, -111, -111, 1208, 841, 898, 842, 253, 807, 287, 306, 965, 284, 898, 723, 722, 57, 58, 287, 287, 1007, -536, 59, 308, 60, 246, 247, 61, 62, 63, 64, 65, 66, 67, 68, 695, 27, 269, 69, 439, 504, -338, 1010, 696, 1241, 1242, 505, 898, 814, 640, 25, 898, 1239, 41, 24, 506, 320, 507, 1235, 508, 1009, 509, 149, 402, 510, 511, 841, 805, 842, 43, 44, 440, 370, 369, 898, 45, 512, 698, 1210, 1209, 1211, 361, 335, 1215, 809, -536, -536, 336, 888, 691, 513, 514, 515, 1215, 1007, 1062, 888, 715, 1007, 337, -536, 363, 516, 517, 705, 1229, 1230, 1231, 1232, 1226, 1227, 294, -536, -16, -542, 813, 1010, 1233, 1228, 367, 1010, 1210, 1209, 1211, 295, -153, -153, -153, 382, 70, 888, 318, 319, 322, 888, 659, 660, -535, 1206, 814, -153, 279, -153, 435, -153, 279, -153, 436, 141, 103, 104, 105, 632, 633, 322, 437, 368, 888, -32766, -32766, 371, 372, 438, 900, 814, 689, 820, -111, -111, 376, 377, 950, -111, 689, 814, -88, 151, 874, -111, -111, -111, -111, 31, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 723, 722, 1206, 153, 154, -535, -535, 155, 898, 900, 157, 689, 1206, 900, -111, 689, -153, 32, 123, 898, -535, 124, 140, -32766, -537, 129, 130, 143, 322, 1122, 1124, 158, -535, -32766, -541, -534, 900, -32766, 689, 159, -534, 723, 722, 1208, 295, 160, 161, -79, -75, 74, -32766, -32766, -32766, 322, -32766, -73, -32766, -298, -32766, 74, -294, -32766, -72, 322, -71, -70, -32766, -32766, -32766, -69, -68, -67, -32766, -32766, 27, -66, -47, 1215, -32766, 414, -18, 147, 275, 270, 281, 704, 814, -32766, -537, -537, 1239, 888, 707, 897, 146, 276, 48, -4, 898, -534, -534, 282, 888, -537, -534, -534, 283, -246, -246, -246, 329, 285, 271, 368, -534, -537, 286, 73, 289, -534, 1206, 47, 723, 722, -111, -111, -534, 290, 109, -111, 914, -534, 550, 669, 874, -111, -111, -111, -111, 145, 516, 517, -32766, 1229, 1230, 1231, 1232, 1226, 1227, 814, 805, 1322, 662, 300, 1092, 1233, 1228, 682, 814, -32766, 298, 299, 546, 641, 647, 1208, 900, 72, 689, -246, 319, 322, -32766, -32766, -32766, 366, -32766, 900, -32766, 689, -32766, 888, 646, -32766, 13, 296, 297, 127, -32766, -32766, -32766, 455, 1206, -51, -32766, -32766, 483, 630, 663, 556, -32766, 414, 303, 368, -111, 430, 434, 39, 930, -32766, 293, 0, 125, -32766, -111, -111, 301, 0, 0, -111, 1010, 307, 0, 0, 833, -111, -111, -111, -111, 0, -32766, 131, 0, 0, 295, 0, -32766, 1246, 0, 74, 0, 1248, 1208, 322, 0, -500, 0, 9, 0, -32766, -32766, -32766, -490, -32766, 7, -32766, 900, -32766, 689, -4, -32766, 16, 365, 597, 813, -32766, -32766, -32766, 916, 295, 709, -32766, -32766, 1240, -32766, 40, 712, -32766, 414, 713, 1208, 879, 898, 974, 951, 958, -32766, -32766, -32766, -32766, 948, -32766, 959, -32766, 877, -32766, 946, 1066, -32766, 1069, 1070, 1067, 1068, -32766, -32766, -32766, -32766, 1074, 33, -32766, -32766, 1236, 1208, 825, 1261, -32766, 414, 1279, 1313, -32766, -32766, -32766, 317, -32766, -32766, -32766, 635, -32766, 364, 690, -32766, 693, 697, 699, 478, -32766, -32766, -32766, -32766, 700, 701, -32766, -32766, 702, 1208, 562, 706, -32766, 414, 692, -570, -32766, -32766, -32766, 875, -32766, -32766, -32766, 1317, -32766, 1319, 836, -32766, 835, 844, 888, 923, -32766, -32766, -32766, 966, 843, 1318, -32766, -32766, 922, 924, 921, 1194, -32766, 414, -245, -245, -245, 907, 917, 905, 368, -32766, 956, 957, 1316, 1273, 1262, 0, 1280, 1286, 1289, -111, -111, -568, 27, -542, -111, -541, -540, 1, 28, 874, -111, -111, -111, -111, 814, 29, -32766, 38, 1239, 42, 46, 71, 1208, 75, 76, 77, 78, 79, 0, -32766, -32766, -32766, 80, -32766, 142, -32766, 152, -32766, 156, 245, -32766, 900, 324, 689, -245, -32766, -32766, -32766, 1206, 350, 351, -32766, -32766, 352, 353, 354, 355, -32766, 414, 356, 357, 358, 359, 360, 362, 431, -32766, -271, -269, 517, -268, 1229, 1230, 1231, 1232, 1226, 1227, 18, 19, 20, 21, 23, 401, 1233, 1228, 474, 475, 482, 485, 486, 487, 488, 492, 493, 494, 72, -504, 501, 319, 322, 676, 1219, 1162, 1237, 1036, 1035, 0, 1016, 1198, 1012, -273, -103, 17, 22, 26, 292, 400, 590, 594, 621, 681, 1166, 1214, 1163, 1292, 0, 1179, 0, 0, 322); - protected $actionCheck = array(2, 3, 4, 5, 6, 7, 0, 9, 10, 11, 12, 13, 128, 129, 130, 131, 9, 10, 11, 44, 45, 46, 47, 48, 49, 50, 51, 52, 116, 117, 118, 119, 120, 121, 122, 37, 38, 30, 1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 106, 107, 1, 8, 57, 9, 10, 11, 1, 31, 116, 14, 9, 10, 11, 106, 107, 8, 71, 72, 73, 74, 75, 76, 77, 116, 30, 80, 32, 33, 34, 35, 36, 30, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 70, 80, 136, 137, 138, 139, 140, 141, 142, 143, 144, 8, 1, 80, 8, 80, 150, 151, 152, 8, 154, 9, 10, 11, 2, 3, 4, 5, 6, 7, 164, 9, 10, 11, 12, 13, 9, 10, 11, 85, 82, 14, 30, 85, 32, 33, 34, 35, 36, 37, 38, 116, 117, 118, 119, 120, 121, 122, 161, 37, 38, 9, 10, 11, 134, 135, 161, 9, 10, 11, 8, 8, 167, 1, 14, 51, 155, 156, 157, 57, 1, 161, 30, 162, 32, 33, 34, 35, 30, 156, 32, 33, 34, 71, 72, 73, 74, 75, 76, 77, 146, 1, 80, 31, 80, 147, 148, 83, 8, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 84, 1, 136, 137, 138, 139, 140, 141, 142, 143, 144, 164, 9, 10, 11, 160, 150, 151, 152, 164, 154, 2, 3, 4, 5, 6, 7, 1, 9, 10, 11, 12, 13, 30, 8, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 106, 57, 108, 9, 10, 11, 53, 54, 55, 164, 57, 164, 164, 69, 117, 118, 159, 57, 161, 122, 101, 30, 69, 159, 30, 1, 32, 33, 31, 31, 30, 71, 72, 73, 74, 75, 76, 77, 97, 106, 80, 108, 123, 70, 9, 10, 11, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 8, 97, 136, 137, 138, 139, 140, 141, 142, 143, 144, 160, 8, 134, 135, 164, 150, 151, 152, 2, 3, 4, 5, 6, 7, 119, 120, 121, 122, 12, 13, 101, 15, 160, 1, 138, 106, 164, 108, 1, 161, 9, 10, 113, 138, 138, 116, 117, 118, 119, 120, 121, 122, 123, 80, 106, 1, 108, 8, 80, 163, 8, 159, 30, 1, 37, 38, 50, 51, 163, 163, 116, 70, 56, 8, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 31, 70, 71, 72, 73, 74, 162, 138, 31, 78, 79, 80, 1, 82, 75, 76, 1, 86, 87, 88, 89, 8, 91, 1, 93, 137, 95, 101, 102, 98, 99, 106, 80, 108, 103, 104, 105, 106, 107, 1, 109, 110, 31, 155, 156, 157, 115, 116, 1, 156, 134, 135, 8, 84, 161, 124, 125, 126, 1, 116, 159, 84, 161, 116, 8, 149, 8, 136, 137, 31, 139, 140, 141, 142, 143, 144, 145, 161, 31, 163, 155, 138, 151, 152, 8, 138, 155, 156, 157, 158, 75, 76, 77, 8, 163, 84, 165, 166, 167, 84, 75, 76, 70, 116, 82, 90, 163, 92, 8, 94, 163, 96, 8, 161, 50, 51, 52, 111, 112, 167, 8, 106, 84, 9, 137, 106, 107, 8, 159, 82, 161, 8, 117, 118, 106, 107, 159, 122, 161, 82, 31, 14, 127, 128, 129, 130, 131, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 37, 38, 116, 14, 14, 134, 135, 14, 1, 159, 14, 161, 116, 159, 128, 161, 162, 14, 16, 1, 149, 16, 161, 137, 70, 16, 16, 16, 167, 59, 60, 16, 161, 137, 163, 70, 159, 74, 161, 16, 70, 37, 38, 80, 158, 16, 16, 31, 31, 163, 87, 88, 89, 167, 91, 31, 93, 35, 95, 163, 35, 98, 31, 167, 31, 31, 103, 104, 105, 31, 31, 31, 109, 110, 70, 31, 31, 1, 115, 116, 31, 31, 35, 31, 31, 31, 82, 124, 134, 135, 86, 84, 31, 31, 31, 35, 70, 0, 1, 134, 135, 35, 84, 149, 134, 135, 35, 100, 101, 102, 35, 37, 57, 106, 149, 161, 37, 154, 37, 149, 116, 70, 37, 38, 117, 118, 161, 37, 69, 122, 38, 161, 89, 77, 127, 128, 129, 130, 131, 70, 136, 137, 85, 139, 140, 141, 142, 143, 144, 82, 80, 83, 94, 132, 82, 151, 152, 92, 82, 74, 134, 135, 85, 90, 100, 80, 159, 163, 161, 162, 166, 167, 87, 88, 89, 149, 91, 159, 93, 161, 95, 84, 96, 98, 97, 134, 135, 161, 103, 104, 105, 97, 116, 31, 109, 110, 97, 113, 100, 153, 115, 116, 114, 106, 128, 108, 128, 159, 128, 124, 113, -1, 161, 137, 117, 118, 133, -1, -1, 122, 138, 132, -1, -1, 127, 128, 129, 130, 131, -1, 137, 31, -1, -1, 158, -1, 74, 146, -1, 163, -1, 146, 80, 167, -1, 149, -1, 150, -1, 87, 88, 89, 149, 91, 149, 93, 159, 95, 161, 162, 98, 149, 149, 153, 155, 103, 104, 105, 154, 158, 162, 109, 110, 166, 74, 159, 159, 115, 116, 159, 80, 159, 1, 159, 159, 159, 124, 87, 88, 89, 159, 91, 159, 93, 159, 95, 159, 159, 98, 159, 159, 159, 159, 103, 104, 105, 74, 159, 161, 109, 110, 160, 80, 160, 160, 115, 116, 160, 160, 87, 88, 89, 161, 91, 124, 93, 160, 95, 161, 161, 98, 161, 161, 161, 102, 103, 104, 105, 74, 161, 161, 109, 110, 161, 80, 81, 161, 115, 116, 161, 163, 87, 88, 89, 162, 91, 124, 93, 162, 95, 162, 162, 98, 162, 162, 84, 162, 103, 104, 105, 162, 162, 162, 109, 110, 162, 162, 162, 162, 115, 116, 100, 101, 102, 162, 162, 162, 106, 124, 162, 162, 162, 162, 162, -1, 162, 162, 162, 117, 118, 163, 70, 163, 122, 163, 163, 163, 163, 127, 128, 129, 130, 131, 82, 163, 74, 163, 86, 163, 163, 163, 80, 163, 163, 163, 163, 163, -1, 87, 88, 89, 163, 91, 163, 93, 163, 95, 163, 163, 98, 159, 163, 161, 162, 103, 104, 105, 116, 163, 163, 109, 110, 163, 163, 163, 163, 115, 116, 163, 163, 163, 163, 163, 163, 163, 124, 164, 164, 137, 164, 139, 140, 141, 142, 143, 144, 164, 164, 164, 164, 164, 164, 151, 152, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 163, 165, 164, 166, 167, 164, 164, 164, 164, 164, 164, -1, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, -1, 165, -1, -1, 167); - protected $actionBase = array(0, -2, 154, 542, 785, 695, 969, 549, 53, 420, 831, 307, 307, 67, 307, 307, 307, 496, 538, 538, 565, 538, 204, 504, 706, 706, 706, 651, 651, 651, 651, 773, 773, 920, 920, 952, 888, 850, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 211, 344, 288, 691, 1038, 1044, 1040, 1045, 1036, 1035, 1039, 1041, 1046, 917, 918, 751, 919, 921, 922, 923, 1042, 854, 1037, 1043, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 641, 159, 473, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 54, 54, 54, 341, 692, 692, 190, 184, 658, 47, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 144, 144, 7, 7, 7, 7, 7, 371, -25, -25, -25, -25, 574, 347, 764, 474, 584, 266, 241, 338, 470, 470, 591, 591, 396, -116, 396, 348, 348, 396, 396, 396, 770, 770, 770, 770, 443, 559, 452, 86, 514, 479, 479, 479, 479, 514, 514, 514, 514, 783, 795, 514, 514, 514, 642, 653, 653, 714, 300, 300, 300, 653, 390, 765, 90, 390, 90, 37, 156, 781, -55, -40, 292, 768, 781, 320, 739, 314, 143, 797, 546, 797, 1034, 745, 733, 705, 836, 876, 1047, 752, 915, 786, 916, 62, 704, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1049, 469, 1034, 65, 1049, 1049, 1049, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 533, 65, 466, 552, 65, 763, 469, 211, 791, 211, 211, 211, 211, 973, 211, 211, 211, 211, 211, 211, 980, 737, 29, 211, 344, 52, 52, 428, 58, 52, 52, 52, 52, 211, 211, 211, 546, 743, 734, 555, 798, 195, 743, 743, 743, 345, 135, 192, 194, 710, 713, 280, 758, 758, 760, 931, 931, 758, 755, 758, 760, 944, 758, 931, 799, 433, 627, 571, 603, 631, 931, 494, 758, 758, 758, 758, 639, 758, 491, 445, 758, 758, 709, 741, 777, 46, 931, 931, 931, 777, 585, 771, 771, 771, 805, 808, 772, 740, 540, 507, 650, 138, 780, 740, 740, 758, 612, 772, 740, 772, 740, 802, 740, 740, 740, 772, 740, 755, 583, 740, 703, 646, 60, 740, 6, 945, 947, 636, 948, 941, 949, 989, 950, 951, 856, 963, 943, 956, 939, 932, 750, 690, 693, 793, 784, 930, 747, 747, 747, 927, 747, 747, 747, 747, 747, 747, 747, 747, 690, 839, 801, 766, 731, 974, 697, 698, 779, 880, 1018, 1048, 973, 1024, 958, 736, 699, 1004, 977, 796, 849, 978, 979, 1005, 1025, 1026, 884, 757, 886, 887, 841, 983, 858, 747, 945, 951, 943, 956, 939, 932, 732, 728, 726, 727, 722, 721, 712, 719, 738, 1027, 925, 875, 842, 980, 929, 690, 845, 1000, 835, 1008, 1009, 855, 782, 756, 846, 889, 984, 985, 986, 859, 1028, 804, 1001, 990, 1010, 787, 890, 1011, 1012, 1013, 1014, 892, 860, 866, 867, 810, 761, 991, 774, 896, 48, 754, 759, 778, 988, 654, 966, 870, 897, 898, 1015, 1016, 1017, 901, 960, 812, 1002, 746, 1003, 993, 813, 814, 677, 769, 1030, 735, 748, 767, 678, 681, 902, 903, 904, 962, 742, 744, 819, 821, 1031, 762, 1032, 910, 684, 823, 711, 911, 1023, 717, 718, 753, 873, 800, 776, 775, 987, 749, 825, 912, 826, 828, 829, 1020, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458, 458, 458, 458, 458, 458, 307, 307, 307, 307, 0, 0, 307, 0, 0, 0, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 415, 415, 291, 291, 0, 291, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 291, 291, 291, 291, 291, 291, 291, 799, 300, 300, 300, 300, 415, 415, 415, 415, 415, -88, -88, 415, 415, 415, 300, 300, 415, 244, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 0, 0, 65, 90, 415, 755, 755, 755, 755, 415, 415, 415, 415, 90, 90, 415, 415, 415, 0, 0, 0, 0, 0, 0, 0, 0, 65, 90, 0, 65, 0, 755, 755, 415, 799, 799, 232, 244, 415, 0, 0, 0, 0, 65, 755, 65, 469, 90, 469, 469, 52, 211, 232, 453, 453, 453, 453, 0, 546, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 755, 0, 799, 0, 755, 755, 755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 755, 0, 0, 931, 0, 0, 0, 0, 758, 0, 0, 0, 0, 0, 0, 758, 944, 0, 0, 0, 0, 0, 0, 755, 0, 0, 0, 0, 0, 0, 0, 0, 747, 782, 0, 782, 0, 747, 747, 747, 0, 0, 0, 0, 769, 762); - protected $actionDefault = array(3, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 588, 588, 588, 588, 32767, 32767, 250, 103, 32767, 32767, 464, 382, 382, 382, 32767, 32767, 532, 532, 532, 532, 532, 532, 32767, 32767, 32767, 32767, 32767, 32767, 464, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 37, 7, 8, 10, 11, 50, 17, 320, 32767, 32767, 32767, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 581, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 468, 447, 448, 450, 451, 381, 533, 587, 323, 584, 380, 146, 335, 325, 238, 326, 254, 469, 255, 470, 473, 474, 211, 283, 377, 150, 411, 465, 413, 463, 467, 412, 387, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 385, 386, 466, 444, 443, 442, 409, 32767, 32767, 410, 414, 384, 417, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 415, 416, 433, 434, 431, 432, 435, 32767, 436, 437, 438, 439, 32767, 312, 32767, 32767, 32767, 361, 359, 312, 32767, 32767, 424, 425, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 526, 441, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 101, 528, 406, 408, 496, 419, 420, 418, 388, 32767, 503, 32767, 103, 505, 32767, 32767, 32767, 112, 32767, 32767, 32767, 32767, 527, 32767, 534, 534, 32767, 489, 101, 194, 32767, 194, 194, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 595, 489, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 32767, 194, 111, 32767, 32767, 32767, 101, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 189, 32767, 264, 266, 103, 549, 194, 32767, 508, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 501, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 489, 429, 139, 32767, 139, 534, 421, 422, 423, 491, 534, 534, 534, 308, 285, 32767, 32767, 32767, 32767, 506, 506, 101, 101, 101, 101, 501, 32767, 32767, 112, 100, 100, 100, 100, 100, 104, 102, 32767, 32767, 32767, 32767, 100, 32767, 102, 102, 32767, 32767, 221, 208, 219, 102, 32767, 553, 554, 219, 102, 223, 223, 223, 243, 243, 480, 314, 102, 100, 102, 102, 196, 314, 314, 32767, 102, 480, 314, 480, 314, 198, 314, 314, 314, 480, 314, 32767, 102, 314, 210, 100, 100, 314, 32767, 32767, 32767, 491, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 521, 32767, 538, 551, 427, 428, 430, 536, 452, 453, 454, 455, 456, 457, 458, 460, 583, 32767, 495, 32767, 32767, 32767, 32767, 334, 593, 32767, 593, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 594, 32767, 534, 32767, 32767, 32767, 32767, 426, 9, 76, 43, 44, 52, 58, 512, 513, 514, 515, 509, 510, 516, 511, 32767, 32767, 517, 559, 32767, 32767, 535, 586, 32767, 32767, 32767, 32767, 32767, 32767, 139, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 521, 32767, 137, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 534, 32767, 32767, 32767, 32767, 310, 307, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 534, 32767, 32767, 32767, 32767, 32767, 287, 32767, 304, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 282, 32767, 32767, 376, 32767, 32767, 32767, 32767, 355, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 152, 152, 3, 3, 337, 152, 152, 152, 337, 152, 337, 337, 337, 152, 152, 152, 152, 152, 152, 276, 184, 258, 261, 243, 243, 152, 347, 152); - protected $goto = array(194, 194, 677, 466, 1281, 1282, 345, 428, 325, 325, 325, 325, 536, 536, 536, 536, 665, 591, 926, 1039, 685, 1003, 1019, 1020, 1080, 1081, 165, 165, 165, 165, 218, 195, 191, 191, 175, 177, 213, 191, 191, 191, 191, 191, 192, 192, 192, 192, 192, 192, 186, 187, 188, 189, 190, 215, 213, 216, 524, 525, 415, 526, 528, 529, 530, 531, 532, 533, 534, 535, 1108, 166, 167, 168, 193, 169, 170, 171, 164, 172, 173, 174, 176, 212, 214, 217, 235, 238, 241, 242, 244, 255, 256, 257, 258, 259, 260, 261, 263, 264, 265, 266, 277, 278, 313, 314, 315, 420, 421, 422, 569, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 178, 234, 179, 196, 197, 198, 236, 186, 187, 188, 189, 190, 215, 1108, 199, 180, 181, 182, 200, 196, 183, 237, 201, 199, 163, 202, 203, 184, 204, 205, 206, 185, 207, 208, 209, 210, 211, 834, 587, 425, 645, 548, 541, 830, 831, 419, 310, 311, 332, 564, 316, 424, 333, 426, 623, 832, 973, 947, 947, 945, 947, 710, 808, 540, 982, 977, 827, 827, 607, 642, 391, 541, 548, 557, 558, 398, 567, 589, 603, 604, 839, 865, 887, 882, 883, 896, 15, 840, 884, 837, 885, 886, 838, 457, 457, 639, 890, 656, 657, 658, 987, 987, 457, 609, 609, 806, 1060, 1056, 1057, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1256, 1256, 346, 347, 812, 949, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1014, 1013, 1207, 1008, 1207, 1008, 1207, 561, 442, 1008, 1008, 1008, 343, 442, 1008, 442, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 251, 251, 1296, 812, 1207, 812, 1307, 1307, 970, 1207, 1207, 1207, 1207, 1017, 1018, 1207, 1207, 1207, 1288, 1288, 1288, 1288, 827, 1307, 321, 305, 248, 248, 248, 248, 250, 252, 387, 903, 1254, 1254, 619, 620, 904, 1203, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 527, 527, 280, 280, 280, 280, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 941, 405, 684, 560, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 348, 644, 442, 389, 393, 549, 588, 592, 847, 1157, 348, 348, 538, 1204, 538, 891, 538, 892, 432, 418, 822, 598, 666, 859, 348, 348, 846, 348, 5, 1323, 6, 824, 554, 1283, 1284, 650, 1205, 1264, 1265, 602, 448, 543, 565, 601, 348, 943, 943, 943, 943, 334, 932, 448, 937, 944, 403, 404, 1278, 852, 1278, 654, 1278, 655, 397, 407, 408, 409, 1200, 668, 849, 1045, 410, 542, 552, 992, 341, 490, 542, 491, 552, 714, 467, 390, 861, 497, 1049, 1290, 1290, 1290, 1290, 1267, 954, 568, 460, 461, 462, 1091, 857, 471, 0, 1314, 1315, 555, 0, 0, 0, 711, 622, 624, 0, 643, 0, 1274, 670, 667, 671, 984, 675, 683, 980, 0, 0, 0, 0, 0, 855, 596, 610, 613, 614, 615, 616, 636, 637, 638, 687, 860, 848, 1044, 1048, 908, 1096, 0, 543, 0, 0, 952, 606, 1306, 1306, 0, 1047, 989, 0, 0, 1276, 1276, 1047, 254, 254, 851, 0, 648, 968, 427, 1306, 0, 0, 845, 942, 427, 0, 0, 0, 0, 0, 0, 0, 1015, 1015, 1199, 0, 1309, 649, 1026, 1022, 1023, 0, 0, 0, 0, 1089, 864, 0, 0, 0, 586, 1073, 0, 688, 674, 674, 1202, 498, 680, 1071, 1188, 919, 0, 0, 1189, 1192, 920, 1193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 539, 0, 539); - protected $gotoCheck = array(42, 42, 72, 172, 172, 172, 95, 87, 23, 23, 23, 23, 105, 105, 105, 105, 87, 105, 87, 125, 9, 87, 87, 87, 142, 142, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 15, 128, 65, 65, 75, 75, 25, 26, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 27, 25, 25, 25, 25, 25, 25, 7, 25, 25, 25, 22, 22, 55, 55, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 15, 45, 15, 15, 15, 15, 75, 15, 15, 15, 15, 15, 15, 147, 147, 84, 15, 84, 84, 84, 105, 105, 147, 106, 106, 6, 15, 15, 15, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 166, 166, 95, 95, 12, 49, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 116, 116, 72, 72, 72, 72, 72, 168, 23, 72, 72, 72, 175, 23, 72, 23, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 5, 5, 177, 12, 72, 12, 179, 179, 101, 72, 72, 72, 72, 117, 117, 72, 72, 72, 9, 9, 9, 9, 22, 179, 165, 165, 5, 5, 5, 5, 5, 5, 61, 72, 167, 167, 83, 83, 72, 20, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 169, 169, 24, 24, 24, 24, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 91, 91, 91, 102, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 14, 63, 23, 58, 58, 58, 58, 58, 35, 149, 14, 14, 19, 20, 19, 64, 19, 64, 111, 13, 20, 13, 114, 35, 14, 14, 35, 14, 46, 14, 46, 18, 9, 174, 174, 118, 20, 20, 20, 9, 19, 14, 2, 2, 14, 19, 19, 19, 19, 29, 90, 19, 19, 19, 80, 80, 128, 39, 128, 80, 128, 80, 28, 80, 80, 80, 158, 80, 37, 127, 80, 9, 9, 108, 80, 153, 9, 153, 9, 97, 155, 9, 41, 153, 130, 128, 128, 128, 128, 14, 94, 9, 9, 9, 9, 145, 9, 82, -1, 9, 9, 48, -1, -1, -1, 48, 48, 48, -1, 48, -1, 128, 14, 48, 48, 48, 48, 48, 48, -1, -1, -1, -1, -1, 9, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 16, 16, 16, 16, 17, 17, -1, 14, -1, -1, 16, 17, 178, 178, -1, 128, 17, -1, -1, 128, 128, 128, 5, 5, 17, -1, 17, 17, 115, 178, -1, -1, 17, 16, 115, -1, -1, -1, -1, -1, -1, -1, 115, 115, 17, -1, 178, 115, 115, 115, 115, -1, -1, -1, -1, 16, 16, -1, -1, -1, 8, 8, -1, 8, 8, 8, 14, 8, 8, 8, 78, 78, -1, -1, 78, 78, 78, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, 24, -1, 24); - protected $gotoBase = array(0, 0, -283, 0, 0, 284, 216, 177, 554, 7, 0, 0, -46, 51, 72, -181, 57, 49, 91, 111, -62, 0, -135, 5, 334, 163, 164, 175, 94, 122, 0, 0, 0, 0, 0, 10, 0, 98, 0, 103, 0, 13, -1, 0, 0, 193, -320, 0, -223, 225, 0, 0, 0, 0, 0, 153, 0, 0, 325, 0, 0, 276, 0, 127, 362, -76, 0, 0, 0, 0, 0, 0, -6, 0, 0, -174, 0, 0, 168, 140, -61, 0, -4, -149, -478, 0, 0, -263, 0, 0, 88, 50, 0, 0, 19, -467, 0, 43, 0, 0, 0, 259, 312, 0, 0, -15, -12, 0, 76, 0, 0, 110, 0, 0, 109, 261, -16, 16, 114, 0, 0, 0, 0, 0, 0, 17, 0, 68, 155, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 23, 0, 184, 0, 104, 0, 0, 0, -44, 0, 12, 0, 0, 70, 0, 0, 0, 0, 0, 0, -9, 4, 80, 238, 96, 0, 0, -294, 0, 34, 242, 0, 257, 209, -13, 0, 0); - protected $gotoDefault = array(-32768, 502, 718, 4, 719, 912, 795, 804, 584, 518, 686, 342, 611, 416, 1272, 889, 1095, 566, 823, 1216, 1224, 449, 826, 326, 708, 871, 872, 873, 394, 379, 385, 392, 634, 612, 484, 858, 445, 850, 476, 853, 444, 862, 162, 413, 500, 866, 3, 868, 545, 899, 380, 876, 381, 661, 878, 551, 880, 881, 388, 395, 396, 1100, 559, 608, 893, 243, 553, 894, 378, 895, 902, 383, 386, 672, 456, 495, 489, 406, 1075, 595, 631, 453, 470, 618, 617, 605, 469, 1011, 411, 328, 931, 939, 477, 454, 953, 344, 961, 716, 1107, 625, 479, 969, 626, 976, 979, 519, 520, 468, 991, 268, 994, 480, 1032, 651, 1005, 1006, 652, 627, 1028, 628, 653, 629, 1030, 463, 585, 1038, 446, 1046, 1260, 447, 1050, 262, 1053, 274, 412, 429, 1058, 1059, 8, 1065, 678, 679, 10, 273, 499, 1090, 673, 443, 1106, 433, 1176, 1178, 547, 481, 1196, 1195, 664, 496, 1201, 1263, 441, 521, 464, 312, 522, 304, 330, 309, 537, 291, 331, 523, 465, 1269, 1277, 327, 30, 1297, 1308, 338, 563, 600); - protected $ruleToNonTerminal = array(0, 1, 3, 3, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 11, 11, 12, 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 18, 21, 21, 22, 23, 23, 24, 24, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 30, 30, 32, 34, 34, 28, 36, 36, 33, 38, 38, 35, 35, 37, 37, 39, 39, 31, 40, 40, 41, 43, 44, 44, 45, 46, 46, 48, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 25, 25, 68, 68, 71, 71, 70, 69, 69, 62, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 26, 26, 27, 27, 27, 27, 86, 86, 88, 88, 81, 81, 89, 89, 90, 90, 90, 82, 82, 85, 85, 83, 83, 91, 92, 92, 56, 56, 64, 64, 67, 67, 67, 66, 93, 93, 94, 57, 57, 57, 57, 95, 95, 96, 96, 97, 97, 98, 99, 99, 100, 100, 101, 101, 54, 54, 50, 50, 103, 52, 52, 104, 51, 51, 53, 53, 63, 63, 63, 63, 79, 79, 107, 107, 109, 109, 110, 110, 110, 110, 108, 108, 108, 112, 112, 112, 112, 87, 87, 115, 115, 115, 116, 116, 113, 113, 117, 117, 119, 119, 120, 120, 114, 121, 121, 118, 122, 122, 122, 122, 111, 111, 80, 80, 80, 20, 20, 20, 124, 123, 123, 125, 125, 125, 125, 59, 126, 126, 127, 60, 129, 129, 130, 130, 131, 131, 84, 132, 132, 132, 132, 132, 132, 137, 137, 138, 138, 139, 139, 139, 139, 139, 140, 141, 141, 136, 136, 133, 133, 135, 135, 143, 143, 142, 142, 142, 142, 142, 142, 142, 134, 144, 144, 146, 145, 145, 61, 102, 147, 147, 55, 55, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 154, 148, 148, 153, 153, 156, 157, 157, 158, 159, 159, 159, 19, 19, 72, 72, 72, 72, 149, 149, 149, 149, 161, 161, 150, 150, 152, 152, 152, 155, 155, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 106, 169, 169, 169, 169, 151, 151, 151, 151, 151, 151, 151, 151, 58, 58, 164, 164, 164, 164, 170, 170, 160, 160, 160, 171, 171, 171, 171, 171, 171, 73, 73, 65, 65, 65, 65, 128, 128, 128, 128, 174, 173, 163, 163, 163, 163, 163, 163, 163, 162, 162, 162, 172, 172, 172, 172, 105, 168, 176, 176, 175, 175, 177, 177, 177, 177, 177, 177, 177, 177, 165, 165, 165, 165, 179, 180, 178, 178, 178, 178, 178, 178, 178, 178, 181, 181, 181, 181); - protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 2, 1, 3, 4, 1, 2, 0, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 6, 2, 3, 1, 2, 3, 1, 2, 3, 1, 1, 3, 1, 3, 1, 2, 2, 3, 1, 3, 2, 3, 1, 3, 2, 0, 1, 1, 1, 1, 1, 3, 7, 10, 5, 7, 9, 5, 3, 3, 3, 3, 3, 3, 1, 2, 5, 7, 9, 6, 5, 6, 3, 2, 1, 1, 1, 0, 2, 1, 3, 8, 0, 4, 2, 1, 3, 0, 1, 0, 1, 0, 1, 3, 1, 8, 9, 8, 7, 6, 8, 0, 2, 0, 2, 1, 2, 1, 2, 1, 1, 1, 0, 2, 0, 2, 0, 2, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 2, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 7, 0, 2, 1, 3, 3, 4, 1, 4, 0, 2, 5, 0, 2, 6, 0, 2, 0, 3, 1, 2, 1, 1, 2, 0, 1, 3, 0, 2, 1, 1, 1, 1, 6, 8, 6, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 2, 1, 1, 0, 1, 0, 2, 2, 2, 4, 3, 1, 1, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 1, 1, 3, 2, 0, 1, 5, 5, 10, 3, 5, 1, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, 3, 2, 2, 3, 1, 0, 1, 1, 3, 3, 3, 4, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 1, 2, 4, 2, 2, 8, 9, 8, 9, 9, 10, 9, 10, 8, 3, 2, 0, 4, 2, 1, 3, 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 0, 3, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4, 1, 1, 3, 1, 1, 1, 1, 1, 3, 2, 3, 0, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 4, 4, 1, 4, 4, 0, 1, 1, 1, 3, 3, 1, 4, 2, 2, 1, 3, 1, 4, 4, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1, 1, 2, 1, 3, 4, 3, 2, 0, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 3, 6, 3, 1, 1, 2, 1); + protected $action = array(133, 134, 135, 579, 136, 137, 0, 748, 749, 750, 138, 38, 327, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, 102, 103, 104, 105, 106, 1109, 1110, 1111, 1108, 1107, 1106, 1112, 742, 741, -32766, 1232, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767, -32767, -32767, 2, 107, 108, 109, 751, 274, 381, 380, -32766, -32766, -32766, -32766, 104, 105, 106, 1024, 422, 110, 265, 139, 403, 755, 756, 757, 758, 466, 467, 428, 938, 291, -32766, 287, -32766, -32766, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 789, 580, 790, 791, 792, 793, 781, 782, 344, 345, 784, 785, 770, 771, 772, 774, 775, 776, 355, 816, 817, 818, 819, 820, 581, 777, 778, 582, 583, 810, 801, 799, 800, 813, 796, 797, 687, -545, 584, 585, 795, 586, 587, 588, 589, 590, 591, -328, -593, -367, 1234, -367, 798, 592, 593, -593, 140, -32766, -32766, -32766, 133, 134, 135, 579, 136, 137, 1057, 748, 749, 750, 138, 38, 688, 1020, 1019, 1018, 1021, 390, -32766, 7, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, -32766, 379, 380, 1033, 689, 690, 742, 741, -32766, -32766, -32766, 422, -545, -545, -590, -32766, -32766, -32766, 1032, -32766, 127, -590, 1236, 1235, 1237, 1318, 751, -545, 290, -32766, 283, -32766, -32766, -32766, -32766, -32766, 1236, 1235, 1237, -545, 265, 139, 403, 755, 756, 757, 758, 16, 481, 428, 458, 459, 460, 298, 722, 35, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 789, 580, 790, 791, 792, 793, 781, 782, 344, 345, 784, 785, 770, 771, 772, 774, 775, 776, 355, 816, 817, 818, 819, 820, 581, 777, 778, 582, 583, 810, 801, 799, 800, 813, 796, 797, 129, 824, 584, 585, 795, 586, 587, 588, 589, 590, 591, -328, 83, 84, 85, -593, 798, 592, 593, -593, 149, 773, 743, 744, 745, 746, 747, 824, 748, 749, 750, 786, 787, 37, 145, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 291, 274, 835, 254, 1109, 1110, 1111, 1108, 1107, 1106, 1112, -590, 860, 110, 861, -590, 482, 751, -32766, -32766, -32766, -32766, -32766, 142, 603, 1085, 742, 741, 1262, 326, 987, 752, 753, 754, 755, 756, 757, 758, 309, -32766, 822, -32766, -32766, -32766, -32766, 242, 553, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 789, 812, 790, 791, 792, 793, 781, 782, 783, 811, 784, 785, 770, 771, 772, 774, 775, 776, 815, 816, 817, 818, 819, 820, 821, 777, 778, 779, 780, 810, 801, 799, 800, 813, 796, 797, 311, 940, 788, 794, 795, 802, 803, 805, 804, 806, 807, 323, 609, 1274, 1033, 833, 798, 809, 808, 50, 51, 52, 512, 53, 54, 860, 241, 861, 918, 55, 56, -111, 57, -32766, -32766, -32766, -111, 826, -111, 290, 1302, 1347, 356, 305, 1348, 339, -111, -111, -111, -111, -111, -111, -111, -111, -32766, -194, -32766, -32766, -32766, -193, 956, 957, 829, -86, 988, 958, 834, 58, 59, 340, 428, 952, -544, 60, 832, 61, 247, 248, 62, 63, 64, 65, 66, 67, 68, 69, 1241, 28, 267, 70, 444, 513, -342, -32766, 141, 1268, 1269, 514, 918, 833, 326, -272, 918, 1266, 42, 25, 515, 940, 516, 14, 517, 908, 518, 828, 369, 519, 520, 373, 709, 1033, 44, 45, 445, 376, 375, 388, 46, 521, 712, -86, 440, 1101, 367, 338, -543, 441, -544, -544, 830, 1227, 442, 523, 524, 525, 290, 1236, 1235, 1237, 361, 1030, 443, -544, 1087, 526, 527, 839, 1255, 1256, 1257, 1258, 1252, 1253, 297, -544, 151, -550, -584, 833, 1259, 1254, -584, 1033, 1236, 1235, 1237, 298, -154, -154, -154, 152, 71, 908, 321, 322, 326, 908, 920, 1030, 707, 833, 154, -154, 1337, -154, 155, -154, 283, -154, -543, -543, 82, 1232, 1086, 1322, 734, 156, 326, 374, 158, 1033, 1321, -194, -79, -543, -88, -193, 742, 741, 956, 957, 653, 26, -32766, 522, -51, -543, 33, -549, 894, 952, -111, -111, -111, 32, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, -59, 75, 28, 672, 673, 326, -58, 36, 250, 920, 124, 707, 125, 920, 833, 707, -154, 130, 1266, 131, -32766, -547, 144, -542, 150, 406, 1234, 377, 378, 1146, 1148, 382, 383, -32766, -32766, -32766, -85, -32766, 1056, -32766, -542, -32766, 644, 645, -32766, 159, 160, 161, 1232, -32766, -32766, -32766, 162, -79, 1227, -32766, -32766, 742, 741, 163, -302, -32766, 419, -75, -4, 918, -73, 287, 526, 527, -32766, 1255, 1256, 1257, 1258, 1252, 1253, -72, -71, -70, -69, -68, -67, 1259, 1254, -547, -547, -542, -542, 742, 741, -66, -47, -18, -32766, 73, 148, 918, 322, 326, 1234, 273, -542, 284, -542, -542, 723, -32766, -32766, -32766, 726, -32766, -547, -32766, -542, -32766, 917, 147, -32766, -542, 288, 289, -298, -32766, -32766, -32766, -32766, 713, 279, -32766, -32766, -542, 1234, 280, 285, -32766, 419, 48, 286, -32766, -32766, -32766, 332, -32766, -32766, -32766, 292, -32766, 908, 293, -32766, 934, 274, 1030, 918, -32766, -32766, -32766, 110, 682, 132, -32766, -32766, 833, 146, -32766, 559, -32766, 419, 659, 374, 824, 435, 1349, 74, 1033, -32766, 296, 654, 1116, 908, 956, 957, 306, 714, 698, 522, 555, 303, 13, 310, 852, 952, -111, -111, -111, 700, 463, 492, 953, 283, 299, 300, -32766, 49, 675, 918, 304, 660, 1234, 676, 936, 1273, -32766, 10, 1263, -32766, -32766, -32766, 642, -32766, 918, -32766, 920, -32766, 707, -4, -32766, 126, 34, 918, 565, -32766, -32766, -32766, -32766, 0, 908, -32766, -32766, 0, 1234, 918, 0, -32766, 419, 0, 0, -32766, -32766, -32766, 717, -32766, -32766, -32766, 920, -32766, 707, 1033, -32766, 724, 1275, 0, 487, -32766, -32766, -32766, -32766, 301, 302, -32766, -32766, -507, 1234, 571, -497, -32766, 419, 607, 8, -32766, -32766, -32766, 372, -32766, -32766, -32766, 17, -32766, 908, 371, -32766, 832, 298, 320, 128, -32766, -32766, -32766, 40, 370, 41, -32766, -32766, 908, -250, -250, -250, -32766, 419, 731, 374, 973, 908, 707, 732, 899, -32766, 997, 974, 728, 981, 956, 957, 971, 908, 982, 522, 897, 969, 1090, 1093, 894, 952, -111, -111, -111, 28, 1094, 1091, 1092, -249, -249, -249, 1241, 1098, 708, 374, 844, 833, 1288, 1306, 1340, 1266, 647, 1267, 711, 715, 956, 957, 716, 1241, 718, 522, 920, 719, 707, -250, 894, 952, -111, -111, -111, 720, -16, 721, 725, 710, -511, 920, 895, 707, -578, 1232, 1344, 1346, 855, 854, 920, 1227, 707, -577, 863, 946, 989, 862, 1345, 945, 943, 944, 920, 947, 707, -249, 527, 1218, 1255, 1256, 1257, 1258, 1252, 1253, 927, 937, 925, 979, 980, 631, 1259, 1254, 1343, 1300, -32766, 1289, 1307, 833, 1316, -275, 1234, -576, 73, -550, -549, 322, 326, -32766, -32766, -32766, -548, -32766, -491, -32766, 833, -32766, 1, 29, -32766, 30, 39, 43, 47, -32766, -32766, -32766, 72, 76, 77, -32766, -32766, 1232, -111, -111, 78, -32766, 419, -111, 79, 80, 81, 143, 153, -111, -32766, 157, 246, 328, 1232, -111, -111, 356, -32766, 357, -111, 358, 359, 360, 361, 362, -111, 363, 364, 365, 366, 368, 436, 0, -273, -32766, -272, 19, 20, 298, 21, 22, 24, 405, 75, 1203, 483, 484, 326, 491, 0, 494, 495, 496, 497, 501, 298, 502, 503, 510, 693, 75, 0, 1245, 1186, 326, 1264, 1059, 1058, 1039, 1222, 1035, -277, -103, 18, 23, 27, 295, 404, 600, 604, 633, 699, 1190, 1240, 1187, 1319, 0, 0, 0, 326); + protected $actionCheck = array(2, 3, 4, 5, 6, 7, 0, 9, 10, 11, 12, 13, 70, 9, 10, 11, 9, 10, 11, 44, 45, 46, 47, 48, 49, 50, 51, 52, 116, 117, 118, 119, 120, 121, 122, 37, 38, 30, 116, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 8, 53, 54, 55, 57, 57, 106, 107, 137, 9, 10, 11, 50, 51, 52, 1, 116, 69, 71, 72, 73, 74, 75, 76, 77, 134, 135, 80, 1, 30, 30, 30, 32, 33, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 80, 70, 136, 137, 138, 139, 140, 141, 142, 143, 144, 8, 1, 106, 80, 108, 150, 151, 152, 8, 154, 9, 10, 11, 2, 3, 4, 5, 6, 7, 164, 9, 10, 11, 12, 13, 116, 119, 120, 121, 122, 106, 30, 108, 32, 33, 34, 35, 36, 37, 38, 9, 10, 11, 106, 107, 138, 137, 138, 37, 38, 9, 10, 11, 116, 134, 135, 1, 9, 10, 11, 137, 30, 14, 8, 155, 156, 157, 1, 57, 149, 163, 30, 163, 32, 33, 34, 35, 36, 155, 156, 157, 161, 71, 72, 73, 74, 75, 76, 77, 8, 31, 80, 129, 130, 131, 158, 161, 8, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 8, 80, 136, 137, 138, 139, 140, 141, 142, 143, 144, 164, 9, 10, 11, 160, 150, 151, 152, 164, 154, 2, 3, 4, 5, 6, 7, 80, 9, 10, 11, 12, 13, 30, 8, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 30, 57, 1, 8, 116, 117, 118, 119, 120, 121, 122, 160, 106, 69, 108, 164, 161, 57, 9, 10, 11, 9, 10, 161, 1, 1, 37, 38, 1, 167, 31, 71, 72, 73, 74, 75, 76, 77, 8, 30, 80, 32, 33, 34, 35, 14, 85, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 8, 122, 136, 137, 138, 139, 140, 141, 142, 143, 144, 8, 51, 146, 138, 82, 150, 151, 152, 2, 3, 4, 5, 6, 7, 106, 97, 108, 1, 12, 13, 101, 15, 9, 10, 11, 106, 80, 108, 163, 1, 80, 163, 113, 83, 8, 116, 117, 118, 119, 120, 121, 122, 123, 30, 8, 32, 33, 34, 8, 117, 118, 80, 31, 159, 122, 159, 50, 51, 8, 80, 128, 70, 56, 155, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1, 70, 71, 72, 73, 74, 162, 9, 161, 78, 79, 80, 1, 82, 167, 164, 1, 86, 87, 88, 89, 122, 91, 101, 93, 84, 95, 156, 8, 98, 99, 8, 161, 138, 103, 104, 105, 106, 107, 8, 109, 110, 31, 97, 8, 123, 115, 116, 70, 8, 134, 135, 156, 122, 8, 124, 125, 126, 163, 155, 156, 157, 163, 116, 8, 149, 162, 136, 137, 8, 139, 140, 141, 142, 143, 144, 145, 161, 14, 163, 160, 82, 151, 152, 164, 138, 155, 156, 157, 158, 75, 76, 77, 14, 163, 84, 165, 166, 167, 84, 159, 116, 161, 82, 14, 90, 85, 92, 14, 94, 163, 96, 134, 135, 161, 116, 159, 1, 161, 14, 167, 106, 14, 138, 8, 164, 16, 149, 31, 164, 37, 38, 117, 118, 75, 76, 137, 122, 31, 161, 14, 163, 127, 128, 129, 130, 131, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 16, 163, 70, 75, 76, 167, 16, 147, 148, 159, 16, 161, 16, 159, 82, 161, 162, 16, 86, 16, 74, 70, 16, 70, 101, 102, 80, 106, 107, 59, 60, 106, 107, 87, 88, 89, 31, 91, 1, 93, 70, 95, 111, 112, 98, 16, 16, 16, 116, 103, 104, 105, 16, 31, 122, 109, 110, 37, 38, 16, 35, 115, 116, 31, 0, 1, 31, 30, 136, 137, 124, 139, 140, 141, 142, 143, 144, 31, 31, 31, 31, 31, 31, 151, 152, 134, 135, 134, 135, 37, 38, 31, 31, 31, 74, 163, 31, 1, 166, 167, 80, 31, 149, 31, 134, 135, 31, 87, 88, 89, 31, 91, 161, 93, 161, 95, 31, 31, 98, 149, 37, 37, 35, 103, 104, 105, 74, 31, 35, 109, 110, 161, 80, 35, 35, 115, 116, 70, 35, 87, 88, 89, 35, 91, 124, 93, 37, 95, 84, 37, 98, 38, 57, 116, 1, 103, 104, 105, 69, 77, 31, 109, 110, 82, 70, 85, 89, 115, 116, 96, 106, 80, 108, 83, 154, 138, 124, 113, 90, 82, 84, 117, 118, 114, 31, 80, 122, 85, 132, 97, 132, 127, 128, 129, 130, 131, 92, 97, 97, 128, 163, 134, 135, 74, 70, 94, 1, 133, 100, 80, 100, 154, 146, 137, 150, 160, 87, 88, 89, 113, 91, 1, 93, 159, 95, 161, 162, 98, 161, 161, 1, 153, 103, 104, 105, 74, -1, 84, 109, 110, -1, 80, 1, -1, 115, 116, -1, -1, 87, 88, 89, 31, 91, 124, 93, 159, 95, 161, 138, 98, 31, 146, -1, 102, 103, 104, 105, 74, 134, 135, 109, 110, 149, 80, 81, 149, 115, 116, 153, 149, 87, 88, 89, 149, 91, 124, 93, 149, 95, 84, 149, 98, 155, 158, 161, 161, 103, 104, 105, 159, 161, 159, 109, 110, 84, 100, 101, 102, 115, 116, 159, 106, 159, 84, 161, 159, 159, 124, 159, 159, 162, 159, 117, 118, 159, 84, 159, 122, 159, 159, 159, 159, 127, 128, 129, 130, 131, 70, 159, 159, 159, 100, 101, 102, 1, 159, 161, 106, 160, 82, 160, 160, 160, 86, 160, 166, 161, 161, 117, 118, 161, 1, 161, 122, 159, 161, 161, 162, 127, 128, 129, 130, 131, 161, 31, 161, 161, 161, 165, 159, 162, 161, 163, 116, 162, 162, 162, 162, 159, 122, 161, 163, 162, 162, 162, 162, 162, 162, 162, 162, 159, 162, 161, 162, 137, 162, 139, 140, 141, 142, 143, 144, 162, 162, 162, 162, 162, 162, 151, 152, 162, 162, 74, 162, 162, 82, 162, 164, 80, 163, 163, 163, 163, 166, 167, 87, 88, 89, 163, 91, 163, 93, 82, 95, 163, 163, 98, 163, 163, 163, 163, 103, 104, 105, 163, 163, 163, 109, 110, 116, 117, 118, 163, 115, 116, 122, 163, 163, 163, 163, 163, 128, 124, 163, 163, 163, 116, 117, 118, 163, 137, 163, 122, 163, 163, 163, 163, 163, 128, 163, 163, 163, 163, 163, 163, -1, 164, 137, 164, 164, 164, 158, 164, 164, 164, 164, 163, 165, 164, 164, 167, 164, -1, 164, 164, 164, 164, 164, 158, 164, 164, 164, 164, 163, -1, 164, 164, 167, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, -1, -1, -1, 167); + protected $actionBase = array(0, -2, 154, 542, 752, 893, 929, 52, 374, 431, 398, 869, 793, 235, 307, 307, 793, 307, 784, 908, 908, 917, 908, 538, 841, 468, 468, 468, 708, 708, 708, 708, 740, 740, 849, 849, 881, 817, 634, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 348, 346, 370, 653, 1063, 1069, 1065, 1070, 1061, 1060, 1064, 1066, 1071, 946, 947, 774, 949, 950, 943, 952, 1067, 882, 1062, 1068, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 525, 191, 359, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 174, 174, 174, 620, 620, 51, 465, 356, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 658, 184, 144, 144, 7, 7, 7, 7, 7, 1031, 371, 1048, -25, -25, -25, -25, 50, 725, 526, 449, 39, 317, 80, 474, 474, 13, 13, 512, 512, 422, 422, 512, 512, 512, 808, 808, 808, 808, 443, 505, 360, 308, -78, 209, 209, 209, 209, -78, -78, -78, -78, 803, 877, -78, -78, -78, 63, 641, 641, 822, -1, -1, -1, 641, 253, 790, 548, 253, 384, 548, 480, 402, 764, 759, -49, 447, 764, 639, 755, 198, 143, 825, 609, 825, 1059, 320, 768, 426, 749, 720, 874, 904, 1072, 796, 941, 798, 942, 106, -58, 710, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1073, 336, 1059, 423, 1073, 1073, 1073, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 619, 423, 586, 616, 423, 795, 336, 348, 814, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 750, 202, 348, 346, 78, 78, 484, 65, 78, 78, 78, 78, 348, 348, 348, 348, 609, 783, 766, 613, 813, 492, 783, 783, 783, 473, 135, 378, 488, 713, 775, 67, 779, 779, 785, 969, 969, 779, 769, 779, 785, 975, 779, 779, 969, 969, 823, 280, 563, 478, 550, 568, 969, 377, 779, 779, 779, 779, 746, 573, 779, 342, 314, 779, 779, 746, 744, 760, 43, 762, 969, 969, 969, 746, 547, 762, 762, 762, 839, 844, 794, 758, 444, 433, 588, 232, 801, 758, 758, 779, 558, 794, 758, 794, 758, 745, 758, 758, 758, 794, 758, 769, 502, 758, 717, 583, 224, 758, 6, 979, 980, 624, 981, 973, 987, 1019, 991, 992, 873, 965, 999, 974, 993, 972, 970, 773, 682, 684, 818, 811, 963, 777, 777, 777, 956, 777, 777, 777, 777, 777, 777, 777, 777, 682, 743, 829, 765, 1006, 689, 691, 754, 906, 901, 1030, 1004, 1049, 994, 828, 694, 1028, 1008, 846, 821, 1009, 1010, 1029, 1050, 1052, 910, 782, 911, 912, 876, 1012, 883, 777, 979, 992, 693, 974, 993, 972, 970, 748, 739, 737, 738, 736, 735, 723, 734, 753, 1053, 954, 907, 878, 1011, 957, 682, 879, 1023, 756, 1032, 1033, 827, 788, 778, 880, 913, 1014, 1015, 1016, 884, 1054, 887, 830, 1024, 951, 1035, 789, 918, 1037, 1038, 1039, 1040, 889, 919, 892, 916, 900, 845, 776, 1020, 761, 920, 591, 787, 791, 800, 1018, 606, 1000, 902, 921, 922, 1041, 1043, 1044, 923, 924, 995, 847, 1026, 799, 1027, 1022, 848, 850, 617, 797, 1055, 781, 786, 772, 621, 632, 925, 927, 931, 998, 763, 770, 853, 855, 1056, 771, 1057, 938, 635, 857, 718, 939, 1046, 719, 724, 637, 678, 672, 731, 792, 903, 826, 757, 780, 1017, 724, 767, 858, 940, 859, 860, 867, 1045, 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458, 458, 458, 458, 458, 458, 307, 307, 307, 307, 307, 307, 307, 0, 0, 307, 0, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 66, 66, 291, 291, 291, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 0, 291, 291, 291, 291, 291, 291, 291, 291, 66, 823, 66, -1, -1, -1, -1, 66, 66, 66, -88, -88, 66, 384, 66, 66, -1, -1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 0, 0, 423, 548, 66, 769, 769, 769, 769, 66, 66, 66, 66, 548, 548, 66, 66, 66, 0, 0, 0, 0, 0, 0, 0, 0, 423, 548, 0, 423, 0, 0, 769, 769, 66, 384, 823, 643, 66, 0, 0, 0, 0, 423, 769, 423, 336, 779, 548, 779, 336, 336, 78, 348, 643, 611, 611, 611, 611, 0, 0, 609, 823, 823, 823, 823, 823, 823, 823, 823, 823, 823, 823, 769, 0, 823, 0, 769, 769, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769, 0, 0, 969, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 975, 0, 0, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 788, 0, 788, 0, 777, 777, 777, 0, 0, 0, 0, 797, 771); + protected $actionDefault = array(3, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 596, 596, 596, 596, 32767, 32767, 254, 103, 32767, 32767, 469, 387, 387, 387, 32767, 32767, 540, 540, 540, 540, 540, 540, 32767, 32767, 32767, 32767, 32767, 32767, 469, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 101, 32767, 32767, 32767, 37, 7, 8, 10, 11, 50, 17, 324, 32767, 32767, 32767, 32767, 103, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 589, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 473, 452, 453, 455, 456, 386, 541, 595, 327, 592, 385, 146, 339, 329, 242, 330, 258, 474, 259, 475, 478, 479, 215, 287, 382, 150, 151, 416, 470, 418, 468, 472, 417, 392, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 390, 391, 471, 449, 448, 447, 32767, 32767, 414, 415, 419, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 389, 422, 420, 421, 438, 439, 436, 437, 440, 32767, 32767, 32767, 441, 442, 443, 444, 316, 32767, 32767, 366, 364, 316, 112, 32767, 32767, 429, 430, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 534, 446, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 103, 32767, 101, 536, 411, 413, 503, 424, 425, 423, 393, 32767, 510, 32767, 103, 32767, 512, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 535, 32767, 542, 542, 32767, 496, 101, 195, 32767, 32767, 32767, 195, 195, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 603, 496, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 32767, 195, 111, 32767, 32767, 32767, 101, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 190, 32767, 268, 270, 103, 557, 195, 32767, 515, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 508, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 496, 434, 139, 32767, 139, 542, 426, 427, 428, 498, 542, 542, 542, 312, 289, 32767, 32767, 32767, 32767, 513, 513, 101, 101, 101, 101, 508, 32767, 32767, 32767, 32767, 112, 100, 100, 100, 100, 100, 104, 102, 32767, 32767, 32767, 32767, 223, 100, 32767, 102, 102, 32767, 32767, 223, 225, 212, 102, 227, 32767, 561, 562, 223, 102, 227, 227, 227, 247, 247, 485, 318, 102, 100, 102, 102, 197, 318, 318, 32767, 102, 485, 318, 485, 318, 199, 318, 318, 318, 485, 318, 32767, 102, 318, 214, 100, 100, 318, 32767, 32767, 32767, 498, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 222, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 529, 32767, 546, 559, 432, 433, 435, 544, 457, 458, 459, 460, 461, 462, 463, 465, 591, 32767, 502, 32767, 32767, 32767, 338, 601, 32767, 601, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 602, 32767, 542, 32767, 32767, 32767, 32767, 431, 9, 76, 491, 43, 44, 52, 58, 519, 520, 521, 522, 516, 517, 523, 518, 32767, 32767, 524, 567, 32767, 32767, 543, 594, 32767, 32767, 32767, 32767, 32767, 32767, 139, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 529, 32767, 137, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 525, 32767, 32767, 32767, 542, 32767, 32767, 32767, 32767, 314, 311, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 542, 32767, 32767, 32767, 32767, 32767, 291, 32767, 308, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 286, 32767, 32767, 381, 498, 294, 296, 297, 32767, 32767, 32767, 32767, 360, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 153, 153, 3, 3, 341, 153, 153, 153, 341, 341, 153, 341, 341, 341, 153, 153, 153, 153, 153, 153, 280, 185, 262, 265, 247, 247, 153, 352, 153); + protected $goto = array(196, 196, 1031, 703, 694, 430, 658, 1062, 1334, 1334, 424, 313, 314, 335, 573, 319, 429, 336, 431, 635, 651, 652, 850, 669, 670, 671, 1334, 167, 167, 167, 167, 221, 197, 193, 193, 177, 179, 216, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 188, 189, 190, 191, 192, 218, 216, 219, 534, 535, 420, 536, 538, 539, 540, 541, 542, 543, 544, 545, 1132, 168, 169, 170, 195, 171, 172, 173, 166, 174, 175, 176, 178, 215, 217, 220, 238, 243, 244, 245, 257, 258, 259, 260, 261, 262, 263, 264, 268, 269, 270, 271, 281, 282, 316, 317, 318, 425, 426, 427, 578, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 180, 237, 181, 198, 199, 200, 239, 188, 189, 190, 191, 192, 218, 1132, 201, 182, 183, 184, 202, 198, 185, 240, 203, 201, 165, 204, 205, 186, 206, 207, 208, 187, 209, 210, 211, 212, 213, 214, 853, 851, 278, 278, 278, 278, 418, 620, 620, 350, 570, 597, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1283, 1283, 831, 618, 655, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 353, 353, 353, 353, 866, 557, 550, 858, 825, 907, 902, 903, 916, 859, 904, 856, 905, 906, 857, 878, 457, 910, 865, 884, 546, 546, 546, 546, 831, 601, 831, 1084, 1079, 1080, 1081, 341, 550, 557, 566, 567, 343, 576, 599, 613, 614, 407, 408, 972, 465, 465, 667, 15, 668, 1323, 411, 412, 413, 465, 681, 348, 1233, 414, 1233, 478, 569, 346, 439, 1031, 1031, 1233, 993, 480, 1031, 393, 1031, 1031, 1104, 1105, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1315, 1315, 1315, 1315, 1233, 657, 1333, 1333, 1055, 1233, 1233, 1233, 1233, 1037, 1036, 1233, 1233, 1233, 1034, 1034, 1181, 354, 678, 949, 1333, 437, 1026, 1042, 1043, 337, 691, 354, 354, 827, 923, 691, 1040, 1041, 924, 691, 663, 1336, 939, 871, 939, 354, 354, 1281, 1281, 354, 679, 1350, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 552, 537, 537, 911, 354, 912, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 548, 564, 548, 574, 611, 730, 634, 636, 849, 548, 656, 475, 1308, 1309, 680, 684, 1007, 692, 701, 1003, 252, 252, 996, 970, 970, 968, 970, 729, 843, 549, 1005, 1000, 423, 455, 608, 1294, 846, 955, 966, 966, 966, 966, 325, 308, 455, 960, 967, 249, 249, 249, 249, 251, 253, 402, 351, 352, 683, 868, 551, 561, 449, 449, 449, 551, 1305, 561, 1305, 612, 396, 461, 1010, 1010, 1224, 1305, 395, 398, 558, 598, 602, 1015, 468, 577, 469, 470, 1310, 1311, 876, 552, 846, 1341, 1342, 964, 409, 702, 733, 324, 275, 324, 1317, 1317, 1317, 1317, 606, 621, 624, 625, 626, 627, 648, 649, 650, 705, 1068, 596, 1097, 874, 706, 476, 1228, 507, 697, 880, 1095, 1115, 432, 1301, 628, 630, 632, 432, 879, 867, 1067, 1071, 5, 1072, 6, 1038, 1038, 977, 0, 975, 662, 1049, 1045, 1046, 0, 0, 0, 0, 1226, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 928, 1120, 449, 965, 1070, 0, 0, 616, 1303, 1303, 1070, 1229, 1230, 1012, 499, 0, 500, 0, 0, 841, 0, 870, 506, 661, 991, 1113, 883, 1212, 941, 864, 0, 1213, 1216, 942, 1217, 0, 0, 1231, 1291, 1292, 0, 1223, 0, 0, 0, 846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255); + protected $gotoCheck = array(42, 42, 72, 9, 72, 65, 65, 126, 181, 181, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 85, 85, 26, 85, 85, 85, 181, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 15, 27, 23, 23, 23, 23, 43, 107, 107, 96, 170, 129, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 168, 168, 12, 55, 55, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 24, 24, 24, 24, 35, 75, 75, 15, 6, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 35, 82, 15, 35, 45, 106, 106, 106, 106, 12, 106, 12, 15, 15, 15, 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 81, 81, 49, 148, 148, 81, 75, 81, 179, 81, 81, 81, 148, 81, 177, 72, 81, 72, 83, 103, 81, 82, 72, 72, 72, 102, 83, 72, 61, 72, 72, 143, 143, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 9, 9, 9, 9, 72, 63, 180, 180, 113, 72, 72, 72, 72, 117, 117, 72, 72, 72, 88, 88, 150, 14, 88, 88, 180, 112, 88, 88, 88, 29, 7, 14, 14, 7, 72, 7, 118, 118, 72, 7, 119, 180, 9, 39, 9, 14, 14, 169, 169, 14, 115, 14, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 14, 171, 171, 64, 14, 64, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 19, 48, 19, 2, 2, 48, 48, 48, 25, 19, 48, 174, 174, 174, 48, 48, 48, 48, 48, 48, 5, 5, 25, 25, 25, 25, 25, 25, 18, 25, 25, 25, 13, 19, 13, 14, 22, 91, 19, 19, 19, 19, 167, 167, 19, 19, 19, 5, 5, 5, 5, 5, 5, 28, 96, 96, 14, 37, 9, 9, 23, 23, 23, 9, 129, 9, 129, 79, 9, 9, 106, 106, 159, 129, 58, 58, 58, 58, 58, 109, 9, 9, 9, 9, 176, 176, 9, 14, 22, 9, 9, 92, 92, 92, 98, 24, 24, 24, 129, 129, 129, 129, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 128, 8, 8, 9, 8, 156, 20, 8, 8, 41, 8, 146, 116, 129, 84, 84, 84, 116, 16, 16, 16, 16, 46, 131, 46, 116, 116, 95, -1, 16, 116, 116, 116, 116, -1, -1, -1, -1, 14, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 17, 17, 23, 16, 129, -1, -1, 17, 129, 129, 129, 20, 20, 17, 154, -1, 154, -1, -1, 20, -1, 17, 154, 17, 17, 16, 16, 78, 78, 17, -1, 78, 78, 78, 78, -1, -1, 20, 20, 20, -1, 17, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5); + protected $gotoBase = array(0, 0, -339, 0, 0, 386, 195, 312, 472, -10, 0, 0, -109, 62, 13, -184, 46, 65, 86, 102, 93, 0, 125, 162, 197, 371, 18, 160, 83, 22, 0, 0, 0, 0, 0, -166, 0, 85, 0, 9, 0, 48, -1, 157, 0, 207, -232, 0, -340, 223, 0, 0, 0, 0, 0, 148, 0, 0, 396, 0, 0, 231, 0, 52, 334, -236, 0, 0, 0, 0, 0, 0, -5, 0, 0, -139, 0, 0, 149, 91, 112, -245, -58, -205, 15, -695, 0, 0, 28, 0, 0, 75, 154, 0, 0, 64, -310, 0, 55, 0, 0, 0, 235, 221, 0, 0, 196, -71, 0, 77, 0, 0, 37, 24, 0, 56, 219, 23, 40, 39, 0, 0, 0, 0, 0, 0, 5, 0, 106, 166, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 47, 0, 214, 0, 35, 0, 0, 0, 49, 0, 45, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 88, -56, 95, 144, 111, 0, 0, 78, 0, 80, 229, 0, 222, -12, -299, 0, 0); + protected $gotoDefault = array(-32768, 511, 737, 4, 738, 932, 814, 823, 594, 528, 704, 347, 622, 421, 1299, 909, 1119, 575, 842, 1242, 1250, 456, 845, 330, 727, 891, 892, 893, 399, 385, 391, 397, 646, 623, 493, 877, 452, 869, 485, 872, 451, 881, 164, 417, 509, 885, 3, 888, 554, 919, 386, 896, 387, 674, 898, 560, 900, 901, 394, 400, 401, 1124, 568, 619, 913, 256, 562, 914, 384, 915, 922, 389, 392, 685, 464, 504, 498, 410, 1099, 563, 605, 643, 446, 472, 617, 629, 615, 479, 433, 415, 329, 954, 962, 486, 462, 976, 349, 984, 735, 1131, 637, 488, 992, 638, 999, 1002, 529, 530, 477, 1014, 272, 1017, 489, 12, 664, 1028, 1029, 665, 639, 1051, 640, 666, 641, 1053, 471, 595, 1061, 453, 1069, 1287, 454, 1073, 266, 1076, 277, 416, 434, 1082, 1083, 9, 1089, 695, 696, 11, 276, 508, 1114, 686, 450, 1130, 438, 1200, 1202, 556, 490, 1220, 1219, 677, 505, 1225, 447, 1290, 448, 531, 473, 315, 532, 307, 333, 312, 547, 294, 334, 533, 474, 1296, 1304, 331, 31, 1324, 1335, 342, 572, 610); + protected $ruleToNonTerminal = array(0, 1, 3, 3, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 11, 11, 12, 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 18, 21, 21, 22, 23, 23, 24, 24, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 30, 30, 32, 34, 34, 28, 36, 36, 33, 38, 38, 35, 35, 37, 37, 39, 39, 31, 40, 40, 41, 43, 44, 44, 45, 45, 46, 46, 48, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 25, 25, 68, 68, 71, 71, 70, 69, 69, 62, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, 26, 26, 27, 27, 27, 27, 27, 87, 87, 89, 89, 82, 82, 90, 90, 91, 91, 91, 83, 83, 86, 86, 84, 84, 92, 93, 93, 56, 56, 64, 64, 67, 67, 67, 66, 94, 94, 95, 57, 57, 57, 57, 96, 96, 97, 97, 98, 98, 99, 100, 100, 101, 101, 102, 102, 54, 54, 50, 50, 104, 52, 52, 105, 51, 51, 53, 53, 63, 63, 63, 63, 80, 80, 108, 108, 110, 110, 111, 111, 111, 111, 109, 109, 109, 113, 113, 113, 113, 88, 88, 116, 116, 116, 117, 117, 114, 114, 118, 118, 120, 120, 121, 121, 115, 122, 122, 119, 123, 123, 123, 123, 112, 112, 81, 81, 81, 20, 20, 20, 125, 124, 124, 126, 126, 126, 126, 59, 127, 127, 128, 60, 130, 130, 131, 131, 132, 132, 85, 133, 133, 133, 133, 133, 133, 133, 138, 138, 139, 139, 140, 140, 140, 140, 140, 141, 142, 142, 137, 137, 134, 134, 136, 136, 144, 144, 143, 143, 143, 143, 143, 143, 143, 135, 145, 145, 147, 146, 146, 61, 103, 148, 148, 55, 55, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 155, 149, 149, 154, 154, 157, 158, 158, 159, 160, 161, 161, 161, 161, 19, 19, 72, 72, 72, 72, 150, 150, 150, 150, 163, 163, 151, 151, 153, 153, 153, 156, 156, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 169, 169, 107, 171, 171, 171, 171, 152, 152, 152, 152, 152, 152, 152, 152, 58, 58, 166, 166, 166, 166, 172, 172, 162, 162, 162, 173, 173, 173, 173, 173, 173, 73, 73, 65, 65, 65, 65, 129, 129, 129, 129, 176, 175, 165, 165, 165, 165, 165, 165, 165, 164, 164, 164, 174, 174, 174, 174, 106, 170, 178, 178, 177, 177, 179, 179, 179, 179, 179, 179, 179, 179, 167, 167, 167, 167, 181, 182, 180, 180, 180, 180, 180, 180, 180, 180, 183, 183, 183, 183); + protected $ruleToLength = array(1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 2, 1, 3, 4, 1, 2, 0, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 6, 2, 3, 1, 2, 3, 1, 2, 3, 1, 1, 3, 1, 3, 1, 2, 2, 3, 1, 3, 2, 3, 1, 3, 3, 2, 0, 1, 1, 1, 1, 1, 3, 7, 10, 5, 7, 9, 5, 3, 3, 3, 3, 3, 3, 1, 2, 5, 7, 9, 6, 5, 6, 3, 2, 1, 1, 1, 0, 2, 1, 3, 8, 0, 4, 2, 1, 3, 0, 1, 0, 1, 0, 1, 3, 1, 1, 1, 8, 9, 7, 8, 7, 6, 8, 0, 2, 0, 2, 1, 2, 1, 2, 1, 1, 1, 0, 2, 0, 2, 0, 2, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 2, 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, 1, 1, 7, 0, 2, 1, 3, 3, 4, 1, 4, 0, 2, 5, 0, 2, 6, 0, 2, 0, 3, 1, 2, 1, 1, 2, 0, 1, 3, 0, 2, 1, 1, 1, 1, 6, 8, 6, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 2, 1, 1, 0, 1, 0, 2, 2, 2, 4, 3, 1, 1, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 1, 1, 3, 2, 0, 1, 5, 5, 6, 10, 3, 5, 1, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, 3, 2, 2, 3, 1, 0, 1, 1, 3, 3, 3, 4, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 1, 2, 4, 2, 2, 8, 9, 8, 9, 9, 10, 9, 10, 8, 3, 2, 0, 4, 2, 1, 3, 2, 1, 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 0, 3, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 3, 3, 4, 1, 1, 3, 1, 1, 1, 1, 1, 3, 2, 3, 0, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 4, 4, 1, 4, 4, 0, 1, 1, 1, 3, 3, 1, 4, 2, 2, 1, 3, 1, 4, 4, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1, 1, 2, 1, 3, 4, 3, 2, 0, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 3, 6, 3, 1, 1, 2, 1); protected function initReduceCallbacks() { $this->reduceCallbacks = [0 => function ($stackPos) { @@ -17456,17 +17619,19 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract }, 149 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); }, 150 => function ($stackPos) { - $this->semValue = new Node\Const_($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Node\Const_(new Node\Identifier($this->semStack[$stackPos - (3 - 1)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributeStack[$stackPos - (3 - 1)]), $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 151 => function ($stackPos) { + $this->semValue = new Node\Const_(new Node\Identifier($this->semStack[$stackPos - (3 - 1)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributeStack[$stackPos - (3 - 1)]), $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + }, 152 => function ($stackPos) { if (\is_array($this->semStack[$stackPos - (2 - 2)])) { $this->semValue = \array_merge($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)]); } else { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; } - }, 152 => function ($stackPos) { - $this->semValue = array(); }, 153 => function ($stackPos) { + $this->semValue = array(); + }, 154 => function ($stackPos) { $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); @@ -17477,15 +17642,15 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract $this->semStack[$stackPos - (1 - 1)][] = $nop; } $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 154 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 155 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 156 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 157 => function ($stackPos) { - throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 158 => function ($stackPos) { + throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 159 => function ($stackPos) { if ($this->semStack[$stackPos - (3 - 2)]) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; $attrs = $this->startAttributeStack[$stackPos - (3 - 1)]; @@ -17504,33 +17669,33 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract $this->semValue = array(); } } - }, 159 => function ($stackPos) { - $this->semValue = new Stmt\If_($this->semStack[$stackPos - (7 - 3)], ['stmts' => \is_array($this->semStack[$stackPos - (7 - 5)]) ? $this->semStack[$stackPos - (7 - 5)] : array($this->semStack[$stackPos - (7 - 5)]), 'elseifs' => $this->semStack[$stackPos - (7 - 6)], 'else' => $this->semStack[$stackPos - (7 - 7)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); }, 160 => function ($stackPos) { - $this->semValue = new Stmt\If_($this->semStack[$stackPos - (10 - 3)], ['stmts' => $this->semStack[$stackPos - (10 - 6)], 'elseifs' => $this->semStack[$stackPos - (10 - 7)], 'else' => $this->semStack[$stackPos - (10 - 8)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\If_($this->semStack[$stackPos - (7 - 3)], ['stmts' => \is_array($this->semStack[$stackPos - (7 - 5)]) ? $this->semStack[$stackPos - (7 - 5)] : array($this->semStack[$stackPos - (7 - 5)]), 'elseifs' => $this->semStack[$stackPos - (7 - 6)], 'else' => $this->semStack[$stackPos - (7 - 7)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); }, 161 => function ($stackPos) { - $this->semValue = new Stmt\While_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\If_($this->semStack[$stackPos - (10 - 3)], ['stmts' => $this->semStack[$stackPos - (10 - 6)], 'elseifs' => $this->semStack[$stackPos - (10 - 7)], 'else' => $this->semStack[$stackPos - (10 - 8)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); }, 162 => function ($stackPos) { - $this->semValue = new Stmt\Do_($this->semStack[$stackPos - (7 - 5)], \is_array($this->semStack[$stackPos - (7 - 2)]) ? $this->semStack[$stackPos - (7 - 2)] : array($this->semStack[$stackPos - (7 - 2)]), $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\While_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); }, 163 => function ($stackPos) { - $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos - (9 - 3)], 'cond' => $this->semStack[$stackPos - (9 - 5)], 'loop' => $this->semStack[$stackPos - (9 - 7)], 'stmts' => $this->semStack[$stackPos - (9 - 9)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Do_($this->semStack[$stackPos - (7 - 5)], \is_array($this->semStack[$stackPos - (7 - 2)]) ? $this->semStack[$stackPos - (7 - 2)] : array($this->semStack[$stackPos - (7 - 2)]), $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); }, 164 => function ($stackPos) { - $this->semValue = new Stmt\Switch_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos - (9 - 3)], 'cond' => $this->semStack[$stackPos - (9 - 5)], 'loop' => $this->semStack[$stackPos - (9 - 7)], 'stmts' => $this->semStack[$stackPos - (9 - 9)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); }, 165 => function ($stackPos) { - $this->semValue = new Stmt\Break_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Switch_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); }, 166 => function ($stackPos) { - $this->semValue = new Stmt\Continue_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Break_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 167 => function ($stackPos) { - $this->semValue = new Stmt\Return_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Continue_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 168 => function ($stackPos) { - $this->semValue = new Stmt\Global_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Return_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 169 => function ($stackPos) { - $this->semValue = new Stmt\Static_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Global_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 170 => function ($stackPos) { - $this->semValue = new Stmt\Echo_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Static_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 171 => function ($stackPos) { - $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Echo_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 172 => function ($stackPos) { + $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 173 => function ($stackPos) { $e = $this->semStack[$stackPos - (2 - 1)]; if ($e instanceof Expr\Throw_) { // For backwards-compatibility reasons, convert throw in statement position into @@ -17539,29 +17704,29 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract } else { $this->semValue = new Stmt\Expression($e, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); } - }, 173 => function ($stackPos) { - $this->semValue = new Stmt\Unset_($this->semStack[$stackPos - (5 - 3)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); }, 174 => function ($stackPos) { - $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (7 - 3)], $this->semStack[$stackPos - (7 - 5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos - (7 - 5)][1], 'stmts' => $this->semStack[$stackPos - (7 - 7)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Unset_($this->semStack[$stackPos - (5 - 3)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); }, 175 => function ($stackPos) { - $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (9 - 3)], $this->semStack[$stackPos - (9 - 7)][0], ['keyVar' => $this->semStack[$stackPos - (9 - 5)], 'byRef' => $this->semStack[$stackPos - (9 - 7)][1], 'stmts' => $this->semStack[$stackPos - (9 - 9)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (7 - 3)], $this->semStack[$stackPos - (7 - 5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos - (7 - 5)][1], 'stmts' => $this->semStack[$stackPos - (7 - 7)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); }, 176 => function ($stackPos) { - $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (6 - 3)], new Expr\Error($this->startAttributeStack[$stackPos - (6 - 4)] + $this->endAttributeStack[$stackPos - (6 - 4)]), ['stmts' => $this->semStack[$stackPos - (6 - 6)]], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (9 - 3)], $this->semStack[$stackPos - (9 - 7)][0], ['keyVar' => $this->semStack[$stackPos - (9 - 5)], 'byRef' => $this->semStack[$stackPos - (9 - 7)][1], 'stmts' => $this->semStack[$stackPos - (9 - 9)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); }, 177 => function ($stackPos) { - $this->semValue = new Stmt\Declare_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos - (6 - 3)], new Expr\Error($this->startAttributeStack[$stackPos - (6 - 4)] + $this->endAttributeStack[$stackPos - (6 - 4)]), ['stmts' => $this->semStack[$stackPos - (6 - 6)]], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); }, 178 => function ($stackPos) { + $this->semValue = new Stmt\Declare_($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); + }, 179 => function ($stackPos) { $this->semValue = new Stmt\TryCatch($this->semStack[$stackPos - (6 - 3)], $this->semStack[$stackPos - (6 - 5)], $this->semStack[$stackPos - (6 - 6)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); $this->checkTryCatch($this->semValue); - }, 179 => function ($stackPos) { - $this->semValue = new Stmt\Goto_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 180 => function ($stackPos) { - $this->semValue = new Stmt\Label($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = new Stmt\Goto_($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); }, 181 => function ($stackPos) { + $this->semValue = new Stmt\Label($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + }, 182 => function ($stackPos) { $this->semValue = array(); /* means: no statement */ - }, 182 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 183 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + }, 184 => function ($stackPos) { $startAttributes = $this->startAttributeStack[$stackPos - (1 - 1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); @@ -17572,252 +17737,252 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract $this->semValue = array(); } /* means: no statement */ - }, 184 => function ($stackPos) { - $this->semValue = array(); }, 185 => function ($stackPos) { + $this->semValue = array(); + }, 186 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 186 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); }, 187 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 188 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 188 => function ($stackPos) { - $this->semValue = new Stmt\Catch_($this->semStack[$stackPos - (8 - 3)], $this->semStack[$stackPos - (8 - 4)], $this->semStack[$stackPos - (8 - 7)], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); }, 189 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Stmt\Catch_($this->semStack[$stackPos - (8 - 3)], $this->semStack[$stackPos - (8 - 4)], $this->semStack[$stackPos - (8 - 7)], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); }, 190 => function ($stackPos) { - $this->semValue = new Stmt\Finally_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); + $this->semValue = null; }, 191 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (2 - 1)]; + $this->semValue = new Stmt\Finally_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); }, 192 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = $this->semStack[$stackPos - (2 - 1)]; }, 193 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 194 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 194 => function ($stackPos) { - $this->semValue = \false; }, 195 => function ($stackPos) { - $this->semValue = \true; - }, 196 => function ($stackPos) { $this->semValue = \false; - }, 197 => function ($stackPos) { + }, 196 => function ($stackPos) { $this->semValue = \true; - }, 198 => function ($stackPos) { + }, 197 => function ($stackPos) { $this->semValue = \false; - }, 199 => function ($stackPos) { + }, 198 => function ($stackPos) { $this->semValue = \true; + }, 199 => function ($stackPos) { + $this->semValue = \false; }, 200 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = \true; }, 201 => function ($stackPos) { - $this->semValue = []; + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; }, 202 => function ($stackPos) { - $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (8 - 3)], ['byRef' => $this->semStack[$stackPos - (8 - 2)], 'params' => $this->semStack[$stackPos - (8 - 5)], 'returnType' => $this->semStack[$stackPos - (8 - 7)], 'stmts' => $this->semStack[$stackPos - (8 - 8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); + $this->semValue = []; }, 203 => function ($stackPos) { - $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (9 - 4)], ['byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 6)], 'returnType' => $this->semStack[$stackPos - (9 - 8)], 'stmts' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => $this->semStack[$stackPos - (9 - 1)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 204 => function ($stackPos) { + $this->semValue = new Node\Identifier($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 205 => function ($stackPos) { + $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (8 - 3)], ['byRef' => $this->semStack[$stackPos - (8 - 2)], 'params' => $this->semStack[$stackPos - (8 - 5)], 'returnType' => $this->semStack[$stackPos - (8 - 7)], 'stmts' => $this->semStack[$stackPos - (8 - 8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); + }, 206 => function ($stackPos) { + $this->semValue = new Stmt\Function_($this->semStack[$stackPos - (9 - 4)], ['byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 6)], 'returnType' => $this->semStack[$stackPos - (9 - 8)], 'stmts' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => $this->semStack[$stackPos - (9 - 1)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); + }, 207 => function ($stackPos) { + $this->semValue = new Stmt\Class_($this->semStack[$stackPos - (7 - 2)], ['type' => $this->semStack[$stackPos - (7 - 1)], 'extends' => $this->semStack[$stackPos - (7 - 3)], 'implements' => $this->semStack[$stackPos - (7 - 4)], 'stmts' => $this->semStack[$stackPos - (7 - 6)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); + $this->checkClass($this->semValue, $stackPos - (7 - 2)); + }, 208 => function ($stackPos) { $this->semValue = new Stmt\Class_($this->semStack[$stackPos - (8 - 3)], ['type' => $this->semStack[$stackPos - (8 - 2)], 'extends' => $this->semStack[$stackPos - (8 - 4)], 'implements' => $this->semStack[$stackPos - (8 - 5)], 'stmts' => $this->semStack[$stackPos - (8 - 7)], 'attrGroups' => $this->semStack[$stackPos - (8 - 1)]], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); $this->checkClass($this->semValue, $stackPos - (8 - 3)); - }, 205 => function ($stackPos) { + }, 209 => function ($stackPos) { $this->semValue = new Stmt\Interface_($this->semStack[$stackPos - (7 - 3)], ['extends' => $this->semStack[$stackPos - (7 - 4)], 'stmts' => $this->semStack[$stackPos - (7 - 6)], 'attrGroups' => $this->semStack[$stackPos - (7 - 1)]], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); $this->checkInterface($this->semValue, $stackPos - (7 - 3)); - }, 206 => function ($stackPos) { + }, 210 => function ($stackPos) { $this->semValue = new Stmt\Trait_($this->semStack[$stackPos - (6 - 3)], ['stmts' => $this->semStack[$stackPos - (6 - 5)], 'attrGroups' => $this->semStack[$stackPos - (6 - 1)]], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 207 => function ($stackPos) { + }, 211 => function ($stackPos) { $this->semValue = new Stmt\Enum_($this->semStack[$stackPos - (8 - 3)], ['scalarType' => $this->semStack[$stackPos - (8 - 4)], 'implements' => $this->semStack[$stackPos - (8 - 5)], 'stmts' => $this->semStack[$stackPos - (8 - 7)], 'attrGroups' => $this->semStack[$stackPos - (8 - 1)]], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); $this->checkEnum($this->semValue, $stackPos - (8 - 3)); - }, 208 => function ($stackPos) { + }, 212 => function ($stackPos) { $this->semValue = null; - }, 209 => function ($stackPos) { + }, 213 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; - }, 210 => function ($stackPos) { + }, 214 => function ($stackPos) { $this->semValue = null; - }, 211 => function ($stackPos) { + }, 215 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; - }, 212 => function ($stackPos) { + }, 216 => function ($stackPos) { $this->semValue = 0; - }, 213 => function ($stackPos) { + }, 217 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 214 => function ($stackPos) { + }, 218 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 215 => function ($stackPos) { + }, 219 => function ($stackPos) { $this->checkClassModifier($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $stackPos - (2 - 2)); $this->semValue = $this->semStack[$stackPos - (2 - 1)] | $this->semStack[$stackPos - (2 - 2)]; - }, 216 => function ($stackPos) { + }, 220 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; - }, 217 => function ($stackPos) { + }, 221 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_FINAL; - }, 218 => function ($stackPos) { + }, 222 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_READONLY; - }, 219 => function ($stackPos) { + }, 223 => function ($stackPos) { $this->semValue = null; - }, 220 => function ($stackPos) { + }, 224 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; - }, 221 => function ($stackPos) { + }, 225 => function ($stackPos) { $this->semValue = array(); - }, 222 => function ($stackPos) { + }, 226 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; - }, 223 => function ($stackPos) { + }, 227 => function ($stackPos) { $this->semValue = array(); - }, 224 => function ($stackPos) { + }, 228 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 2)]; - }, 225 => function ($stackPos) { + }, 229 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 226 => function ($stackPos) { + }, 230 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 227 => function ($stackPos) { + }, 231 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 228 => function ($stackPos) { + }, 232 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); - }, 229 => function ($stackPos) { + }, 233 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 230 => function ($stackPos) { + }, 234 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); - }, 231 => function ($stackPos) { + }, 235 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 232 => function ($stackPos) { + }, 236 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); - }, 233 => function ($stackPos) { + }, 237 => function ($stackPos) { $this->semValue = null; - }, 234 => function ($stackPos) { + }, 238 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 235 => function ($stackPos) { + }, 239 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 236 => function ($stackPos) { + }, 240 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 237 => function ($stackPos) { + }, 241 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 238 => function ($stackPos) { + }, 242 => function ($stackPos) { $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 239 => function ($stackPos) { + }, 243 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 240 => function ($stackPos) { + }, 244 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 3)]; - }, 241 => function ($stackPos) { + }, 245 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 242 => function ($stackPos) { + }, 246 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (5 - 3)]; - }, 243 => function ($stackPos) { + }, 247 => function ($stackPos) { $this->semValue = array(); - }, 244 => function ($stackPos) { + }, 248 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 245 => function ($stackPos) { + }, 249 => function ($stackPos) { $this->semValue = new Stmt\Case_($this->semStack[$stackPos - (4 - 2)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 246 => function ($stackPos) { + }, 250 => function ($stackPos) { $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 247 => function ($stackPos) { + }, 251 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 248 => function ($stackPos) { + }, 252 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 249 => function ($stackPos) { + }, 253 => function ($stackPos) { $this->semValue = new Expr\Match_($this->semStack[$stackPos - (7 - 3)], $this->semStack[$stackPos - (7 - 6)], $this->startAttributeStack[$stackPos - (7 - 1)] + $this->endAttributes); - }, 250 => function ($stackPos) { + }, 254 => function ($stackPos) { $this->semValue = []; - }, 251 => function ($stackPos) { + }, 255 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 252 => function ($stackPos) { + }, 256 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 253 => function ($stackPos) { + }, 257 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 254 => function ($stackPos) { + }, 258 => function ($stackPos) { $this->semValue = new Node\MatchArm($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 255 => function ($stackPos) { + }, 259 => function ($stackPos) { $this->semValue = new Node\MatchArm(null, $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 256 => function ($stackPos) { + }, 260 => function ($stackPos) { $this->semValue = \is_array($this->semStack[$stackPos - (1 - 1)]) ? $this->semStack[$stackPos - (1 - 1)] : array($this->semStack[$stackPos - (1 - 1)]); - }, 257 => function ($stackPos) { + }, 261 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 2)]; - }, 258 => function ($stackPos) { + }, 262 => function ($stackPos) { $this->semValue = array(); - }, 259 => function ($stackPos) { + }, 263 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 260 => function ($stackPos) { + }, 264 => function ($stackPos) { $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos - (5 - 3)], \is_array($this->semStack[$stackPos - (5 - 5)]) ? $this->semStack[$stackPos - (5 - 5)] : array($this->semStack[$stackPos - (5 - 5)]), $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 261 => function ($stackPos) { + }, 265 => function ($stackPos) { $this->semValue = array(); - }, 262 => function ($stackPos) { + }, 266 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 263 => function ($stackPos) { + }, 267 => function ($stackPos) { $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos - (6 - 3)], $this->semStack[$stackPos - (6 - 6)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 264 => function ($stackPos) { + $this->fixupAlternativeElse($this->semValue); + }, 268 => function ($stackPos) { $this->semValue = null; - }, 265 => function ($stackPos) { + }, 269 => function ($stackPos) { $this->semValue = new Stmt\Else_(\is_array($this->semStack[$stackPos - (2 - 2)]) ? $this->semStack[$stackPos - (2 - 2)] : array($this->semStack[$stackPos - (2 - 2)]), $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 266 => function ($stackPos) { + }, 270 => function ($stackPos) { $this->semValue = null; - }, 267 => function ($stackPos) { + }, 271 => function ($stackPos) { $this->semValue = new Stmt\Else_($this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 268 => function ($stackPos) { + $this->fixupAlternativeElse($this->semValue); + }, 272 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); - }, 269 => function ($stackPos) { + }, 273 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (2 - 2)], \true); - }, 270 => function ($stackPos) { + }, 274 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); - }, 271 => function ($stackPos) { + }, 275 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)], \false); - }, 272 => function ($stackPos) { + }, 276 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 273 => function ($stackPos) { + }, 277 => function ($stackPos) { $this->semValue = array(); - }, 274 => function ($stackPos) { + }, 278 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 275 => function ($stackPos) { + }, 279 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 276 => function ($stackPos) { + }, 280 => function ($stackPos) { $this->semValue = 0; - }, 277 => function ($stackPos) { + }, 281 => function ($stackPos) { $this->checkModifier($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $stackPos - (2 - 2)); $this->semValue = $this->semStack[$stackPos - (2 - 1)] | $this->semStack[$stackPos - (2 - 2)]; - }, 278 => function ($stackPos) { + }, 282 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PUBLIC; - }, 279 => function ($stackPos) { + }, 283 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PROTECTED; - }, 280 => function ($stackPos) { + }, 284 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PRIVATE; - }, 281 => function ($stackPos) { + }, 285 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_READONLY; - }, 282 => function ($stackPos) { + }, 286 => function ($stackPos) { $this->semValue = new Node\Param($this->semStack[$stackPos - (6 - 6)], null, $this->semStack[$stackPos - (6 - 3)], $this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 5)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 1)]); $this->checkParam($this->semValue); - }, 283 => function ($stackPos) { + }, 287 => function ($stackPos) { $this->semValue = new Node\Param($this->semStack[$stackPos - (8 - 6)], $this->semStack[$stackPos - (8 - 8)], $this->semStack[$stackPos - (8 - 3)], $this->semStack[$stackPos - (8 - 4)], $this->semStack[$stackPos - (8 - 5)], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (8 - 2)], $this->semStack[$stackPos - (8 - 1)]); $this->checkParam($this->semValue); - }, 284 => function ($stackPos) { - $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes), null, $this->semStack[$stackPos - (6 - 3)], $this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 5)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 1)]); - }, 285 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 286 => function ($stackPos) { - $this->semValue = new Node\NullableType($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 287 => function ($stackPos) { - $this->semValue = new Node\UnionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 288 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes), null, $this->semStack[$stackPos - (6 - 3)], $this->semStack[$stackPos - (6 - 4)], $this->semStack[$stackPos - (6 - 5)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 1)]); }, 289 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 290 => function ($stackPos) { - $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = new Node\NullableType($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 291 => function ($stackPos) { - $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = new Node\UnionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 292 => function ($stackPos) { - $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 293 => function ($stackPos) { - $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 294 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + }, 294 => function ($stackPos) { + $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 295 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (3 - 2)]; + $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos - (1 - 1)]); }, 296 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); + $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 297 => function ($stackPos) { - $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; - $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 298 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 299 => function ($stackPos) { @@ -17828,67 +17993,67 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; }, 302 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 303 => function ($stackPos) { - $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; - $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + $this->semValue = $this->semStack[$stackPos - (3 - 2)]; }, 304 => function ($stackPos) { - $this->semValue = new Node\IntersectionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 305 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); - }, 306 => function ($stackPos) { + }, 305 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + }, 306 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); }, 307 => function ($stackPos) { - $this->semValue = new Node\IntersectionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; + $this->semValue = $this->semStack[$stackPos - (3 - 1)]; }, 308 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Node\IntersectionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 309 => function ($stackPos) { - $this->semValue = new Node\NullableType($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); }, 310 => function ($stackPos) { - $this->semValue = new Node\UnionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; + $this->semValue = $this->semStack[$stackPos - (3 - 1)]; }, 311 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Node\IntersectionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 312 => function ($stackPos) { - $this->semValue = null; - }, 313 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + }, 313 => function ($stackPos) { + $this->semValue = new Node\NullableType($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 314 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Node\UnionType($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 315 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (2 - 2)]; + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 316 => function ($stackPos) { $this->semValue = null; }, 317 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 318 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (4 - 2)]; + $this->semValue = null; }, 319 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (3 - 2)]); + $this->semValue = $this->semStack[$stackPos - (2 - 2)]; }, 320 => function ($stackPos) { - $this->semValue = new Node\VariadicPlaceholder($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = null; }, 321 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = array(); }, 322 => function ($stackPos) { - $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; - $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + $this->semValue = $this->semStack[$stackPos - (4 - 2)]; }, 323 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos - (1 - 1)], \false, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$stackPos - (3 - 2)]); }, 324 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \true, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = new Node\VariadicPlaceholder($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); }, 325 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \false, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); }, 326 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos - (3 - 3)], \false, \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (3 - 1)]); - }, 327 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 328 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + }, 327 => function ($stackPos) { + $this->semValue = new Node\Arg($this->semStack[$stackPos - (1 - 1)], \false, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 328 => function ($stackPos) { + $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \true, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 329 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + $this->semValue = new Node\Arg($this->semStack[$stackPos - (2 - 2)], \false, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); }, 330 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos - (1 - 1)]; + $this->semValue = new Node\Arg($this->semStack[$stackPos - (3 - 3)], \false, \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (3 - 1)]); }, 331 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; }, 332 => function ($stackPos) { @@ -17897,17 +18062,26 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract }, 333 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); }, 334 => function ($stackPos) { - $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (1 - 1)], null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }, 335 => function ($stackPos) { - $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos - (2 - 1)]; }, 336 => function ($stackPos) { + $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; + $this->semValue = $this->semStack[$stackPos - (3 - 1)]; + }, 337 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); + }, 338 => function ($stackPos) { + $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (1 - 1)], null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 339 => function ($stackPos) { + $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); + }, 340 => function ($stackPos) { if ($this->semStack[$stackPos - (2 - 2)] !== null) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; } - }, 337 => function ($stackPos) { + }, 341 => function ($stackPos) { $this->semValue = array(); - }, 338 => function ($stackPos) { + }, 342 => function ($stackPos) { $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); @@ -17918,401 +18092,410 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract $this->semStack[$stackPos - (1 - 1)][] = $nop; } $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 339 => function ($stackPos) { + }, 343 => function ($stackPos) { $this->semValue = new Stmt\Property($this->semStack[$stackPos - (5 - 2)], $this->semStack[$stackPos - (5 - 4)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 1)]); $this->checkProperty($this->semValue, $stackPos - (5 - 2)); - }, 340 => function ($stackPos) { + }, 344 => function ($stackPos) { $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos - (5 - 4)], $this->semStack[$stackPos - (5 - 2)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (5 - 1)]); $this->checkClassConst($this->semValue, $stackPos - (5 - 2)); - }, 341 => function ($stackPos) { + }, 345 => function ($stackPos) { + $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos - (6 - 5)], $this->semStack[$stackPos - (6 - 2)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes, $this->semStack[$stackPos - (6 - 1)], $this->semStack[$stackPos - (6 - 4)]); + $this->checkClassConst($this->semValue, $stackPos - (6 - 2)); + }, 346 => function ($stackPos) { $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos - (10 - 5)], ['type' => $this->semStack[$stackPos - (10 - 2)], 'byRef' => $this->semStack[$stackPos - (10 - 4)], 'params' => $this->semStack[$stackPos - (10 - 7)], 'returnType' => $this->semStack[$stackPos - (10 - 9)], 'stmts' => $this->semStack[$stackPos - (10 - 10)], 'attrGroups' => $this->semStack[$stackPos - (10 - 1)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); $this->checkClassMethod($this->semValue, $stackPos - (10 - 2)); - }, 342 => function ($stackPos) { + }, 347 => function ($stackPos) { $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 343 => function ($stackPos) { + }, 348 => function ($stackPos) { $this->semValue = new Stmt\EnumCase($this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 4)], $this->semStack[$stackPos - (5 - 1)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 344 => function ($stackPos) { + }, 349 => function ($stackPos) { $this->semValue = null; /* will be skipped */ - }, 345 => function ($stackPos) { + }, 350 => function ($stackPos) { $this->semValue = array(); - }, 346 => function ($stackPos) { + }, 351 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 347 => function ($stackPos) { + }, 352 => function ($stackPos) { $this->semValue = array(); - }, 348 => function ($stackPos) { + }, 353 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 349 => function ($stackPos) { + }, 354 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 350 => function ($stackPos) { + }, 355 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (5 - 1)][0], $this->semStack[$stackPos - (5 - 1)][1], $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 4)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 351 => function ($stackPos) { + }, 356 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], $this->semStack[$stackPos - (4 - 3)], null, $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 352 => function ($stackPos) { + }, 357 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], null, $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 353 => function ($stackPos) { + }, 358 => function ($stackPos) { $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos - (4 - 1)][0], $this->semStack[$stackPos - (4 - 1)][1], null, $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 354 => function ($stackPos) { + }, 359 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)]); - }, 355 => function ($stackPos) { + }, 360 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 356 => function ($stackPos) { + }, 361 => function ($stackPos) { $this->semValue = array(null, $this->semStack[$stackPos - (1 - 1)]); - }, 357 => function ($stackPos) { + }, 362 => function ($stackPos) { $this->semValue = null; - }, 358 => function ($stackPos) { + }, 363 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 359 => function ($stackPos) { + }, 364 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 360 => function ($stackPos) { + }, 365 => function ($stackPos) { $this->semValue = 0; - }, 361 => function ($stackPos) { + }, 366 => function ($stackPos) { $this->semValue = 0; - }, 362 => function ($stackPos) { + }, 367 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 363 => function ($stackPos) { + }, 368 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 364 => function ($stackPos) { + }, 369 => function ($stackPos) { $this->checkModifier($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $stackPos - (2 - 2)); $this->semValue = $this->semStack[$stackPos - (2 - 1)] | $this->semStack[$stackPos - (2 - 2)]; - }, 365 => function ($stackPos) { + }, 370 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PUBLIC; - }, 366 => function ($stackPos) { + }, 371 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PROTECTED; - }, 367 => function ($stackPos) { + }, 372 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_PRIVATE; - }, 368 => function ($stackPos) { + }, 373 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_STATIC; - }, 369 => function ($stackPos) { + }, 374 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; - }, 370 => function ($stackPos) { + }, 375 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_FINAL; - }, 371 => function ($stackPos) { + }, 376 => function ($stackPos) { $this->semValue = Stmt\Class_::MODIFIER_READONLY; - }, 372 => function ($stackPos) { + }, 377 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 373 => function ($stackPos) { + }, 378 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 374 => function ($stackPos) { + }, 379 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 375 => function ($stackPos) { + }, 380 => function ($stackPos) { $this->semValue = new Node\VarLikeIdentifier(\substr($this->semStack[$stackPos - (1 - 1)], 1), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 376 => function ($stackPos) { + }, 381 => function ($stackPos) { $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos - (1 - 1)], null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 377 => function ($stackPos) { + }, 382 => function ($stackPos) { $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 378 => function ($stackPos) { + }, 383 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 379 => function ($stackPos) { + }, 384 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 380 => function ($stackPos) { + }, 385 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 381 => function ($stackPos) { + }, 386 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 382 => function ($stackPos) { + }, 387 => function ($stackPos) { $this->semValue = array(); - }, 383 => function ($stackPos) { + }, 388 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 384 => function ($stackPos) { + }, 389 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 385 => function ($stackPos) { + }, 390 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 386 => function ($stackPos) { + }, 391 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 387 => function ($stackPos) { + }, 392 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 388 => function ($stackPos) { + }, 393 => function ($stackPos) { $this->semValue = new Expr\AssignRef($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 389 => function ($stackPos) { + }, 394 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 390 => function ($stackPos) { + }, 395 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 391 => function ($stackPos) { + }, 396 => function ($stackPos) { $this->semValue = new Expr\Clone_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 392 => function ($stackPos) { + }, 397 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 393 => function ($stackPos) { + }, 398 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 394 => function ($stackPos) { + }, 399 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 395 => function ($stackPos) { + }, 400 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 396 => function ($stackPos) { + }, 401 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 397 => function ($stackPos) { + }, 402 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 398 => function ($stackPos) { + }, 403 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 399 => function ($stackPos) { + }, 404 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 400 => function ($stackPos) { + }, 405 => function ($stackPos) { $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 401 => function ($stackPos) { + }, 406 => function ($stackPos) { $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 402 => function ($stackPos) { + }, 407 => function ($stackPos) { $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 403 => function ($stackPos) { + }, 408 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 404 => function ($stackPos) { + }, 409 => function ($stackPos) { $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 405 => function ($stackPos) { + }, 410 => function ($stackPos) { $this->semValue = new Expr\PostInc($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 406 => function ($stackPos) { + }, 411 => function ($stackPos) { $this->semValue = new Expr\PreInc($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 407 => function ($stackPos) { + }, 412 => function ($stackPos) { $this->semValue = new Expr\PostDec($this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 408 => function ($stackPos) { + }, 413 => function ($stackPos) { $this->semValue = new Expr\PreDec($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 409 => function ($stackPos) { + }, 414 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 410 => function ($stackPos) { + }, 415 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 411 => function ($stackPos) { + }, 416 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 412 => function ($stackPos) { + }, 417 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 413 => function ($stackPos) { + }, 418 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 414 => function ($stackPos) { + }, 419 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 415 => function ($stackPos) { + }, 420 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 416 => function ($stackPos) { + }, 421 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 417 => function ($stackPos) { + }, 422 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 418 => function ($stackPos) { + }, 423 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 419 => function ($stackPos) { + }, 424 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 420 => function ($stackPos) { + }, 425 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 421 => function ($stackPos) { + }, 426 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 422 => function ($stackPos) { + }, 427 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 423 => function ($stackPos) { + }, 428 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 424 => function ($stackPos) { + }, 429 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 425 => function ($stackPos) { + }, 430 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 426 => function ($stackPos) { + }, 431 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 427 => function ($stackPos) { + }, 432 => function ($stackPos) { $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 428 => function ($stackPos) { + }, 433 => function ($stackPos) { $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 429 => function ($stackPos) { + }, 434 => function ($stackPos) { $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 430 => function ($stackPos) { + }, 435 => function ($stackPos) { $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 431 => function ($stackPos) { + }, 436 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 432 => function ($stackPos) { + }, 437 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 433 => function ($stackPos) { + }, 438 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 434 => function ($stackPos) { + }, 439 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 435 => function ($stackPos) { + }, 440 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 436 => function ($stackPos) { + }, 441 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 437 => function ($stackPos) { + }, 442 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 438 => function ($stackPos) { + }, 443 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 439 => function ($stackPos) { + }, 444 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 440 => function ($stackPos) { + }, 445 => function ($stackPos) { $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 441 => function ($stackPos) { + }, 446 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 442 => function ($stackPos) { + }, 447 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (5 - 1)], $this->semStack[$stackPos - (5 - 3)], $this->semStack[$stackPos - (5 - 5)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); - }, 443 => function ($stackPos) { + }, 448 => function ($stackPos) { $this->semValue = new Expr\Ternary($this->semStack[$stackPos - (4 - 1)], null, $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 444 => function ($stackPos) { + }, 449 => function ($stackPos) { $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 445 => function ($stackPos) { + }, 450 => function ($stackPos) { $this->semValue = new Expr\Isset_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 446 => function ($stackPos) { + }, 451 => function ($stackPos) { $this->semValue = new Expr\Empty_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 447 => function ($stackPos) { + }, 452 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 448 => function ($stackPos) { + }, 453 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 449 => function ($stackPos) { + }, 454 => function ($stackPos) { $this->semValue = new Expr\Eval_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 450 => function ($stackPos) { + }, 455 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 451 => function ($stackPos) { + }, 456 => function ($stackPos) { $this->semValue = new Expr\Include_($this->semStack[$stackPos - (2 - 2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 452 => function ($stackPos) { + }, 457 => function ($stackPos) { $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 453 => function ($stackPos) { + }, 458 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes; $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos - (2 - 1)]); $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos - (2 - 2)], $attrs); - }, 454 => function ($stackPos) { + }, 459 => function ($stackPos) { $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 455 => function ($stackPos) { + }, 460 => function ($stackPos) { $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 456 => function ($stackPos) { + }, 461 => function ($stackPos) { $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 457 => function ($stackPos) { + }, 462 => function ($stackPos) { $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 458 => function ($stackPos) { + }, 463 => function ($stackPos) { $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 459 => function ($stackPos) { + }, 464 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes; $attrs['kind'] = \strtolower($this->semStack[$stackPos - (2 - 1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE; $this->semValue = new Expr\Exit_($this->semStack[$stackPos - (2 - 2)], $attrs); - }, 460 => function ($stackPos) { + }, 465 => function ($stackPos) { $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 461 => function ($stackPos) { + }, 466 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 462 => function ($stackPos) { + }, 467 => function ($stackPos) { $this->semValue = new Expr\ShellExec($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 463 => function ($stackPos) { + }, 468 => function ($stackPos) { $this->semValue = new Expr\Print_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 464 => function ($stackPos) { + }, 469 => function ($stackPos) { $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 465 => function ($stackPos) { + }, 470 => function ($stackPos) { $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (2 - 2)], null, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 466 => function ($stackPos) { + }, 471 => function ($stackPos) { $this->semValue = new Expr\Yield_($this->semStack[$stackPos - (4 - 4)], $this->semStack[$stackPos - (4 - 2)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 467 => function ($stackPos) { + }, 472 => function ($stackPos) { $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 468 => function ($stackPos) { + }, 473 => function ($stackPos) { $this->semValue = new Expr\Throw_($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 469 => function ($stackPos) { + }, 474 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => \false, 'byRef' => $this->semStack[$stackPos - (8 - 2)], 'params' => $this->semStack[$stackPos - (8 - 4)], 'returnType' => $this->semStack[$stackPos - (8 - 6)], 'expr' => $this->semStack[$stackPos - (8 - 8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); - }, 470 => function ($stackPos) { + }, 475 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => \true, 'byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 5)], 'returnType' => $this->semStack[$stackPos - (9 - 7)], 'expr' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); - }, 471 => function ($stackPos) { + }, 476 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => \false, 'byRef' => $this->semStack[$stackPos - (8 - 2)], 'params' => $this->semStack[$stackPos - (8 - 4)], 'uses' => $this->semStack[$stackPos - (8 - 6)], 'returnType' => $this->semStack[$stackPos - (8 - 7)], 'stmts' => $this->semStack[$stackPos - (8 - 8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes); - }, 472 => function ($stackPos) { + }, 477 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => \true, 'byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 5)], 'uses' => $this->semStack[$stackPos - (9 - 7)], 'returnType' => $this->semStack[$stackPos - (9 - 8)], 'stmts' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); - }, 473 => function ($stackPos) { + }, 478 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => \false, 'byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 5)], 'returnType' => $this->semStack[$stackPos - (9 - 7)], 'expr' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => $this->semStack[$stackPos - (9 - 1)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); - }, 474 => function ($stackPos) { + }, 479 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => \true, 'byRef' => $this->semStack[$stackPos - (10 - 4)], 'params' => $this->semStack[$stackPos - (10 - 6)], 'returnType' => $this->semStack[$stackPos - (10 - 8)], 'expr' => $this->semStack[$stackPos - (10 - 10)], 'attrGroups' => $this->semStack[$stackPos - (10 - 1)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); - }, 475 => function ($stackPos) { + }, 480 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => \false, 'byRef' => $this->semStack[$stackPos - (9 - 3)], 'params' => $this->semStack[$stackPos - (9 - 5)], 'uses' => $this->semStack[$stackPos - (9 - 7)], 'returnType' => $this->semStack[$stackPos - (9 - 8)], 'stmts' => $this->semStack[$stackPos - (9 - 9)], 'attrGroups' => $this->semStack[$stackPos - (9 - 1)]], $this->startAttributeStack[$stackPos - (9 - 1)] + $this->endAttributes); - }, 476 => function ($stackPos) { + }, 481 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => \true, 'byRef' => $this->semStack[$stackPos - (10 - 4)], 'params' => $this->semStack[$stackPos - (10 - 6)], 'uses' => $this->semStack[$stackPos - (10 - 8)], 'returnType' => $this->semStack[$stackPos - (10 - 9)], 'stmts' => $this->semStack[$stackPos - (10 - 10)], 'attrGroups' => $this->semStack[$stackPos - (10 - 1)]], $this->startAttributeStack[$stackPos - (10 - 1)] + $this->endAttributes); - }, 477 => function ($stackPos) { - $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos - (8 - 4)], 'implements' => $this->semStack[$stackPos - (8 - 5)], 'stmts' => $this->semStack[$stackPos - (8 - 7)], 'attrGroups' => $this->semStack[$stackPos - (8 - 1)]], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes), $this->semStack[$stackPos - (8 - 3)]); + }, 482 => function ($stackPos) { + $this->semValue = array(new Stmt\Class_(null, ['type' => $this->semStack[$stackPos - (8 - 2)], 'extends' => $this->semStack[$stackPos - (8 - 4)], 'implements' => $this->semStack[$stackPos - (8 - 5)], 'stmts' => $this->semStack[$stackPos - (8 - 7)], 'attrGroups' => $this->semStack[$stackPos - (8 - 1)]], $this->startAttributeStack[$stackPos - (8 - 1)] + $this->endAttributes), $this->semStack[$stackPos - (8 - 3)]); $this->checkClass($this->semValue[0], -1); - }, 478 => function ($stackPos) { + }, 483 => function ($stackPos) { $this->semValue = new Expr\New_($this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 479 => function ($stackPos) { + }, 484 => function ($stackPos) { list($class, $ctorArgs) = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 480 => function ($stackPos) { + }, 485 => function ($stackPos) { $this->semValue = array(); - }, 481 => function ($stackPos) { + }, 486 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (4 - 3)]; - }, 482 => function ($stackPos) { + }, 487 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 483 => function ($stackPos) { + }, 488 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 484 => function ($stackPos) { + }, 489 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 485 => function ($stackPos) { + }, 490 => function ($stackPos) { $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos - (2 - 2)], $this->semStack[$stackPos - (2 - 1)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 486 => function ($stackPos) { + }, 491 => function ($stackPos) { + $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); + }, 492 => function ($stackPos) { $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 487 => function ($stackPos) { + }, 493 => function ($stackPos) { $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 488 => function ($stackPos) { + }, 494 => function ($stackPos) { + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); + }, 495 => function ($stackPos) { $this->semValue = new Expr\StaticCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 489 => function ($stackPos) { + }, 496 => function ($stackPos) { $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 490 => function ($stackPos) { + }, 497 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 491 => function ($stackPos) { + }, 498 => function ($stackPos) { $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 492 => function ($stackPos) { + }, 499 => function ($stackPos) { $this->semValue = new Name($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 493 => function ($stackPos) { + }, 500 => function ($stackPos) { $this->semValue = new Name\FullyQualified(\substr($this->semStack[$stackPos - (1 - 1)], 1), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 494 => function ($stackPos) { + }, 501 => function ($stackPos) { $this->semValue = new Name\Relative(\substr($this->semStack[$stackPos - (1 - 1)], 10), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 495 => function ($stackPos) { + }, 502 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 496 => function ($stackPos) { + }, 503 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 497 => function ($stackPos) { + }, 504 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 498 => function ($stackPos) { + }, 505 => function ($stackPos) { $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); $this->errorState = 2; - }, 499 => function ($stackPos) { + }, 506 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 500 => function ($stackPos) { + }, 507 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 501 => function ($stackPos) { + }, 508 => function ($stackPos) { $this->semValue = null; - }, 502 => function ($stackPos) { + }, 509 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 503 => function ($stackPos) { + }, 510 => function ($stackPos) { $this->semValue = array(); - }, 504 => function ($stackPos) { + }, 511 => function ($stackPos) { $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos - (1 - 1)], '`'), $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes)); - }, 505 => function ($stackPos) { + }, 512 => function ($stackPos) { foreach ($this->semStack[$stackPos - (1 - 1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', \true); } } $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 506 => function ($stackPos) { + }, 513 => function ($stackPos) { $this->semValue = array(); - }, 507 => function ($stackPos) { + }, 514 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 508 => function ($stackPos) { + }, 515 => function ($stackPos) { $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 509 => function ($stackPos) { + }, 516 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 510 => function ($stackPos) { + }, 517 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 511 => function ($stackPos) { + }, 518 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 512 => function ($stackPos) { + }, 519 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 513 => function ($stackPos) { + }, 520 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 514 => function ($stackPos) { + }, 521 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 515 => function ($stackPos) { + }, 522 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 516 => function ($stackPos) { + }, 523 => function ($stackPos) { $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 517 => function ($stackPos) { + }, 524 => function ($stackPos) { $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 518 => function ($stackPos) { + }, 525 => function ($stackPos) { + $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos - (5 - 1)], $this->semStack[$stackPos - (5 - 4)], $this->startAttributeStack[$stackPos - (5 - 1)] + $this->endAttributes); + }, 526 => function ($stackPos) { $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos - (3 - 1)], new Expr\Error($this->startAttributeStack[$stackPos - (3 - 3)] + $this->endAttributeStack[$stackPos - (3 - 3)]), $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); $this->errorState = 2; - }, 519 => function ($stackPos) { + }, 527 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT; $this->semValue = new Expr\Array_($this->semStack[$stackPos - (3 - 2)], $attrs); - }, 520 => function ($stackPos) { + }, 528 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG; $this->semValue = new Expr\Array_($this->semStack[$stackPos - (4 - 3)], $attrs); - }, 521 => function ($stackPos) { + }, 529 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 522 => function ($stackPos) { + }, 530 => function ($stackPos) { $this->semValue = Scalar\String_::fromString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 523 => function ($stackPos) { + }, 531 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; foreach ($this->semStack[$stackPos - (3 - 2)] as $s) { @@ -18321,181 +18504,181 @@ class Php7 extends \PHPUnit\PhpParser\ParserAbstract } } $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos - (3 - 2)], $attrs); - }, 524 => function ($stackPos) { + }, 532 => function ($stackPos) { $this->semValue = $this->parseLNumber($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 525 => function ($stackPos) { + }, 533 => function ($stackPos) { $this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 526 => function ($stackPos) { + }, 534 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 527 => function ($stackPos) { + }, 535 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 528 => function ($stackPos) { + }, 536 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 529 => function ($stackPos) { + }, 537 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (3 - 3)] + $this->endAttributeStack[$stackPos - (3 - 3)], \true); - }, 530 => function ($stackPos) { + }, 538 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (2 - 1)], '', $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (2 - 2)] + $this->endAttributeStack[$stackPos - (2 - 2)], \true); - }, 531 => function ($stackPos) { + }, 539 => function ($stackPos) { $this->semValue = $this->parseDocString($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 2)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes, $this->startAttributeStack[$stackPos - (3 - 3)] + $this->endAttributeStack[$stackPos - (3 - 3)], \true); - }, 532 => function ($stackPos) { + }, 540 => function ($stackPos) { $this->semValue = null; - }, 533 => function ($stackPos) { + }, 541 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 534 => function ($stackPos) { + }, 542 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 535 => function ($stackPos) { + }, 543 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 536 => function ($stackPos) { + }, 544 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 537 => function ($stackPos) { + }, 545 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 538 => function ($stackPos) { + }, 546 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 539 => function ($stackPos) { + }, 547 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 540 => function ($stackPos) { + }, 548 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 541 => function ($stackPos) { + }, 549 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 542 => function ($stackPos) { + }, 550 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 543 => function ($stackPos) { + }, 551 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 544 => function ($stackPos) { + }, 552 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 545 => function ($stackPos) { + }, 553 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 546 => function ($stackPos) { + }, 554 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 547 => function ($stackPos) { + }, 555 => function ($stackPos) { $this->semValue = new Expr\MethodCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 548 => function ($stackPos) { + }, 556 => function ($stackPos) { $this->semValue = new Expr\NullsafeMethodCall($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->semStack[$stackPos - (4 - 4)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 549 => function ($stackPos) { + }, 557 => function ($stackPos) { $this->semValue = null; - }, 550 => function ($stackPos) { + }, 558 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 551 => function ($stackPos) { + }, 559 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 552 => function ($stackPos) { + }, 560 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 553 => function ($stackPos) { + }, 561 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 554 => function ($stackPos) { + }, 562 => function ($stackPos) { $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 555 => function ($stackPos) { + }, 563 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 556 => function ($stackPos) { + }, 564 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 557 => function ($stackPos) { + }, 565 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 558 => function ($stackPos) { + }, 566 => function ($stackPos) { $this->semValue = new Expr\Variable(new Expr\Error($this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes), $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); $this->errorState = 2; - }, 559 => function ($stackPos) { + }, 567 => function ($stackPos) { $var = $this->semStack[$stackPos - (1 - 1)]->name; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes) : $var; - }, 560 => function ($stackPos) { + }, 568 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 561 => function ($stackPos) { + }, 569 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 562 => function ($stackPos) { + }, 570 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 563 => function ($stackPos) { + }, 571 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 564 => function ($stackPos) { + }, 572 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 565 => function ($stackPos) { + }, 573 => function ($stackPos) { $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 566 => function ($stackPos) { + }, 574 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 567 => function ($stackPos) { + }, 575 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 568 => function ($stackPos) { + }, 576 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 569 => function ($stackPos) { + }, 577 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 570 => function ($stackPos) { + }, 578 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 571 => function ($stackPos) { + }, 579 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 572 => function ($stackPos) { + }, 580 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 573 => function ($stackPos) { + }, 581 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 574 => function ($stackPos) { + }, 582 => function ($stackPos) { $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); $this->errorState = 2; - }, 575 => function ($stackPos) { + }, 583 => function ($stackPos) { $this->semValue = new Expr\List_($this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 576 => function ($stackPos) { + }, 584 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; $end = \count($this->semValue) - 1; if ($this->semValue[$end] === null) { \array_pop($this->semValue); } - }, 577 => function ($stackPos) { + }, 585 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; - }, 578 => function ($stackPos) { + }, 586 => function ($stackPos) { /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */ - }, 579 => function ($stackPos) { + }, 587 => function ($stackPos) { $this->semStack[$stackPos - (3 - 1)][] = $this->semStack[$stackPos - (3 - 3)]; $this->semValue = $this->semStack[$stackPos - (3 - 1)]; - }, 580 => function ($stackPos) { + }, 588 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 581 => function ($stackPos) { + }, 589 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 582 => function ($stackPos) { + }, 590 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 583 => function ($stackPos) { + }, 591 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (1 - 1)], null, \false, $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 584 => function ($stackPos) { + }, 592 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (3 - 3)], $this->semStack[$stackPos - (3 - 1)], \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 585 => function ($stackPos) { + }, 593 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (4 - 4)], $this->semStack[$stackPos - (4 - 1)], \true, $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 586 => function ($stackPos) { + }, 594 => function ($stackPos) { $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (3 - 3)], $this->semStack[$stackPos - (3 - 1)], \false, $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 587 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, \true, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 588 => function ($stackPos) { + }, 595 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos - (2 - 2)], null, \false, $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes, \true); + }, 596 => function ($stackPos) { $this->semValue = null; - }, 589 => function ($stackPos) { + }, 597 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 590 => function ($stackPos) { + }, 598 => function ($stackPos) { $this->semStack[$stackPos - (2 - 1)][] = $this->semStack[$stackPos - (2 - 2)]; $this->semValue = $this->semStack[$stackPos - (2 - 1)]; - }, 591 => function ($stackPos) { + }, 599 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (1 - 1)]); - }, 592 => function ($stackPos) { + }, 600 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos - (2 - 1)], $this->semStack[$stackPos - (2 - 2)]); - }, 593 => function ($stackPos) { + }, 601 => function ($stackPos) { $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 594 => function ($stackPos) { + }, 602 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 595 => function ($stackPos) { + }, 603 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; - }, 596 => function ($stackPos) { + }, 604 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (4 - 1)], $this->semStack[$stackPos - (4 - 3)], $this->startAttributeStack[$stackPos - (4 - 1)] + $this->endAttributes); - }, 597 => function ($stackPos) { + }, 605 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 598 => function ($stackPos) { + }, 606 => function ($stackPos) { $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos - (3 - 1)], $this->semStack[$stackPos - (3 - 3)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 599 => function ($stackPos) { + }, 607 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 600 => function ($stackPos) { + }, 608 => function ($stackPos) { $this->semValue = new Expr\Variable($this->semStack[$stackPos - (3 - 2)], $this->startAttributeStack[$stackPos - (3 - 1)] + $this->endAttributes); - }, 601 => function ($stackPos) { + }, 609 => function ($stackPos) { $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos - (6 - 2)], $this->semStack[$stackPos - (6 - 4)], $this->startAttributeStack[$stackPos - (6 - 1)] + $this->endAttributes); - }, 602 => function ($stackPos) { + }, 610 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (3 - 2)]; - }, 603 => function ($stackPos) { + }, 611 => function ($stackPos) { $this->semValue = new Scalar\String_($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 604 => function ($stackPos) { + }, 612 => function ($stackPos) { $this->semValue = $this->parseNumString($this->semStack[$stackPos - (1 - 1)], $this->startAttributeStack[$stackPos - (1 - 1)] + $this->endAttributes); - }, 605 => function ($stackPos) { + }, 613 => function ($stackPos) { $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos - (2 - 2)], $this->startAttributeStack[$stackPos - (2 - 1)] + $this->endAttributes); - }, 606 => function ($stackPos) { + }, 614 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos - (1 - 1)]; }]; } @@ -18667,9 +18850,12 @@ use PHPUnit\PhpParser\Node\Scalar\String_; use PHPUnit\PhpParser\Node\Stmt\Class_; use PHPUnit\PhpParser\Node\Stmt\ClassConst; use PHPUnit\PhpParser\Node\Stmt\ClassMethod; +use PHPUnit\PhpParser\Node\Stmt\Else_; +use PHPUnit\PhpParser\Node\Stmt\ElseIf_; use PHPUnit\PhpParser\Node\Stmt\Enum_; use PHPUnit\PhpParser\Node\Stmt\Interface_; use PHPUnit\PhpParser\Node\Stmt\Namespace_; +use PHPUnit\PhpParser\Node\Stmt\Nop; use PHPUnit\PhpParser\Node\Stmt\Property; use PHPUnit\PhpParser\Node\Stmt\TryCatch; use PHPUnit\PhpParser\Node\Stmt\UseUse; @@ -19369,6 +19555,24 @@ abstract class ParserAbstract implements Parser } return $attributes; } + /** @param ElseIf_|Else_ $node */ + protected function fixupAlternativeElse($node) + { + // Make sure a trailing nop statement carrying comments is part of the node. + $numStmts = \count($node->stmts); + if ($numStmts !== 0 && $node->stmts[$numStmts - 1] instanceof Nop) { + $nopAttrs = $node->stmts[$numStmts - 1]->getAttributes(); + if (isset($nopAttrs['endLine'])) { + $node->setAttribute('endLine', $nopAttrs['endLine']); + } + if (isset($nopAttrs['endFilePos'])) { + $node->setAttribute('endFilePos', $nopAttrs['endFilePos']); + } + if (isset($nopAttrs['endTokenPos'])) { + $node->setAttribute('endTokenPos', $nopAttrs['endTokenPos']); + } + } + } protected function checkClassModifier($a, $b, $modifierPos) { try { @@ -20023,7 +20227,7 @@ class Standard extends PrettyPrinterAbstract } protected function pExpr_StaticCall(Expr\StaticCall $node) { - return $this->pDereferenceLhs($node->class) . '::' . ($node->name instanceof Expr ? $node->name instanceof Expr\Variable ? $this->p($node->name) : '{' . $this->p($node->name) . '}' : $node->name) . '(' . $this->pMaybeMultiline($node->args) . ')'; + return $this->pStaticDereferenceLhs($node->class) . '::' . ($node->name instanceof Expr ? $node->name instanceof Expr\Variable ? $this->p($node->name) : '{' . $this->p($node->name) . '}' : $node->name) . '(' . $this->pMaybeMultiline($node->args) . ')'; } protected function pExpr_Empty(Expr\Empty_ $node) { @@ -20082,7 +20286,7 @@ class Standard extends PrettyPrinterAbstract } protected function pExpr_ClassConstFetch(Expr\ClassConstFetch $node) { - return $this->pDereferenceLhs($node->class) . '::' . $this->p($node->name); + return $this->pStaticDereferenceLhs($node->class) . '::' . $this->pObjectProperty($node->name); } protected function pExpr_PropertyFetch(Expr\PropertyFetch $node) { @@ -20094,7 +20298,7 @@ class Standard extends PrettyPrinterAbstract } protected function pExpr_StaticPropertyFetch(Expr\StaticPropertyFetch $node) { - return $this->pDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name); + return $this->pStaticDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name); } protected function pExpr_ShellExec(Expr\ShellExec $node) { @@ -20227,7 +20431,7 @@ class Standard extends PrettyPrinterAbstract } protected function pStmt_ClassConst(Stmt\ClassConst $node) { - return $this->pAttrGroups($node->attrGroups) . $this->pModifiers($node->flags) . 'const ' . $this->pCommaSeparated($node->consts) . ';'; + return $this->pAttrGroups($node->attrGroups) . $this->pModifiers($node->flags) . 'const ' . (null !== $node->type ? $this->p($node->type) . ' ' : '') . $this->pCommaSeparated($node->consts) . ';'; } protected function pStmt_Function(Stmt\Function_ $node) { @@ -20441,6 +20645,14 @@ class Standard extends PrettyPrinterAbstract return '(' . $this->p($node) . ')'; } } + protected function pStaticDereferenceLhs(Node $node) + { + if (!$this->staticDereferenceLhsRequiresParens($node)) { + return $this->p($node); + } else { + return '(' . $this->p($node) . ')'; + } + } protected function pCallLhs(Node $node) { if (!$this->callLhsRequiresParens($node)) { @@ -20449,10 +20661,13 @@ class Standard extends PrettyPrinterAbstract return '(' . $this->p($node) . ')'; } } - protected function pNewVariable(Node $node) + protected function pNewVariable(Node $node) : string { - // TODO: This is not fully accurate. - return $this->pDereferenceLhs($node); + if (!$this->newOperandRequiresParens($node)) { + return $this->p($node); + } else { + return '(' . $this->p($node) . ')'; + } } /** * @param Node[] $nodes @@ -20515,6 +20730,10 @@ abstract class PrettyPrinterAbstract // Name operand that may require ${} bracing const FIXUP_ENCAPSED = 6; // Encapsed string part + const FIXUP_NEW = 7; + // New/instanceof operand + const FIXUP_STATIC_DEREF_LHS = 8; + // LHS of static dereferencing operation protected $precedenceMap = [ // [precedence, associativity] // where for precedence -1 is %left, 0 is %nonassoc and 1 is %right @@ -21356,6 +21575,16 @@ abstract class PrettyPrinterAbstract return '(' . $this->p($subNode) . ')'; } break; + case self::FIXUP_STATIC_DEREF_LHS: + if ($this->staticDereferenceLhsRequiresParens($subNode) && !$this->origTokens->haveParens($subStartPos, $subEndPos)) { + return '(' . $this->p($subNode) . ')'; + } + break; + case self::FIXUP_NEW: + if ($this->newOperandRequiresParens($subNode) && !$this->origTokens->haveParens($subStartPos, $subEndPos)) { + return '(' . $this->p($subNode) . ')'; + } + break; case self::FIXUP_BRACED_NAME: case self::FIXUP_VAR_BRACED_NAME: if ($subNode instanceof Expr && !$this->origTokens->haveBraces($subStartPos, $subEndPos)) { @@ -21409,7 +21638,7 @@ abstract class PrettyPrinterAbstract return !($node instanceof Node\Name || $node instanceof Expr\Variable || $node instanceof Expr\ArrayDimFetch || $node instanceof Expr\FuncCall || $node instanceof Expr\MethodCall || $node instanceof Expr\NullsafeMethodCall || $node instanceof Expr\StaticCall || $node instanceof Expr\Array_); } /** - * Determines whether the LHS of a dereferencing operation must be wrapped in parenthesis. + * Determines whether the LHS of an array/object operation must be wrapped in parentheses. * * @param Node $node LHS of dereferencing operation * @@ -21417,7 +21646,39 @@ abstract class PrettyPrinterAbstract */ protected function dereferenceLhsRequiresParens(Node $node) : bool { - return !($node instanceof Expr\Variable || $node instanceof Node\Name || $node instanceof Expr\ArrayDimFetch || $node instanceof Expr\PropertyFetch || $node instanceof Expr\NullsafePropertyFetch || $node instanceof Expr\StaticPropertyFetch || $node instanceof Expr\FuncCall || $node instanceof Expr\MethodCall || $node instanceof Expr\NullsafeMethodCall || $node instanceof Expr\StaticCall || $node instanceof Expr\Array_ || $node instanceof Scalar\String_ || $node instanceof Expr\ConstFetch || $node instanceof Expr\ClassConstFetch); + // A constant can occur on the LHS of an array/object deref, but not a static deref. + return $this->staticDereferenceLhsRequiresParens($node) && !$node instanceof Expr\ConstFetch; + } + /** + * Determines whether the LHS of a static operation must be wrapped in parentheses. + * + * @param Node $node LHS of dereferencing operation + * + * @return bool Whether parentheses are required + */ + protected function staticDereferenceLhsRequiresParens(Node $node) : bool + { + return !($node instanceof Expr\Variable || $node instanceof Node\Name || $node instanceof Expr\ArrayDimFetch || $node instanceof Expr\PropertyFetch || $node instanceof Expr\NullsafePropertyFetch || $node instanceof Expr\StaticPropertyFetch || $node instanceof Expr\FuncCall || $node instanceof Expr\MethodCall || $node instanceof Expr\NullsafeMethodCall || $node instanceof Expr\StaticCall || $node instanceof Expr\Array_ || $node instanceof Scalar\String_ || $node instanceof Expr\ClassConstFetch); + } + /** + * Determines whether an expression used in "new" or "instanceof" requires parentheses. + * + * @param Node $node New or instanceof operand + * + * @return bool Whether parentheses are required + */ + protected function newOperandRequiresParens(Node $node) : bool + { + if ($node instanceof Node\Name || $node instanceof Expr\Variable) { + return \false; + } + if ($node instanceof Expr\ArrayDimFetch || $node instanceof Expr\PropertyFetch || $node instanceof Expr\NullsafePropertyFetch) { + return $this->newOperandRequiresParens($node->var); + } + if ($node instanceof Expr\StaticPropertyFetch) { + return $this->newOperandRequiresParens($node->class); + } + return \true; } /** * Print modifiers, including trailing whitespace. @@ -21508,26 +21769,7 @@ abstract class PrettyPrinterAbstract if ($this->fixupMap) { return; } - $this->fixupMap = [ - Expr\PreInc::class => ['var' => self::FIXUP_PREC_RIGHT], - Expr\PreDec::class => ['var' => self::FIXUP_PREC_RIGHT], - Expr\PostInc::class => ['var' => self::FIXUP_PREC_LEFT], - Expr\PostDec::class => ['var' => self::FIXUP_PREC_LEFT], - Expr\Instanceof_::class => ['expr' => self::FIXUP_PREC_LEFT, 'class' => self::FIXUP_PREC_RIGHT], - Expr\Ternary::class => ['cond' => self::FIXUP_PREC_LEFT, 'else' => self::FIXUP_PREC_RIGHT], - Expr\FuncCall::class => ['name' => self::FIXUP_CALL_LHS], - Expr\StaticCall::class => ['class' => self::FIXUP_DEREF_LHS], - Expr\ArrayDimFetch::class => ['var' => self::FIXUP_DEREF_LHS], - Expr\ClassConstFetch::class => ['var' => self::FIXUP_DEREF_LHS], - Expr\New_::class => ['class' => self::FIXUP_DEREF_LHS], - // TODO: FIXUP_NEW_VARIABLE - Expr\MethodCall::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], - Expr\NullsafeMethodCall::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], - Expr\StaticPropertyFetch::class => ['class' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_VAR_BRACED_NAME], - Expr\PropertyFetch::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], - Expr\NullsafePropertyFetch::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], - Scalar\Encapsed::class => ['parts' => self::FIXUP_ENCAPSED], - ]; + $this->fixupMap = [Expr\PreInc::class => ['var' => self::FIXUP_PREC_RIGHT], Expr\PreDec::class => ['var' => self::FIXUP_PREC_RIGHT], Expr\PostInc::class => ['var' => self::FIXUP_PREC_LEFT], Expr\PostDec::class => ['var' => self::FIXUP_PREC_LEFT], Expr\Instanceof_::class => ['expr' => self::FIXUP_PREC_LEFT, 'class' => self::FIXUP_NEW], Expr\Ternary::class => ['cond' => self::FIXUP_PREC_LEFT, 'else' => self::FIXUP_PREC_RIGHT], Expr\FuncCall::class => ['name' => self::FIXUP_CALL_LHS], Expr\StaticCall::class => ['class' => self::FIXUP_STATIC_DEREF_LHS], Expr\ArrayDimFetch::class => ['var' => self::FIXUP_DEREF_LHS], Expr\ClassConstFetch::class => ['class' => self::FIXUP_STATIC_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], Expr\New_::class => ['class' => self::FIXUP_NEW], Expr\MethodCall::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], Expr\NullsafeMethodCall::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], Expr\StaticPropertyFetch::class => ['class' => self::FIXUP_STATIC_DEREF_LHS, 'name' => self::FIXUP_VAR_BRACED_NAME], Expr\PropertyFetch::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], Expr\NullsafePropertyFetch::class => ['var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME], Scalar\Encapsed::class => ['parts' => self::FIXUP_ENCAPSED]]; $binaryOps = [BinaryOp\Pow::class, BinaryOp\Mul::class, BinaryOp\Div::class, BinaryOp\Mod::class, BinaryOp\Plus::class, BinaryOp\Minus::class, BinaryOp\Concat::class, BinaryOp\ShiftLeft::class, BinaryOp\ShiftRight::class, BinaryOp\Smaller::class, BinaryOp\SmallerOrEqual::class, BinaryOp\Greater::class, BinaryOp\GreaterOrEqual::class, BinaryOp\Equal::class, BinaryOp\NotEqual::class, BinaryOp\Identical::class, BinaryOp\NotIdentical::class, BinaryOp\Spaceship::class, BinaryOp\BitwiseAnd::class, BinaryOp\BitwiseXor::class, BinaryOp\BitwiseOr::class, BinaryOp\BooleanAnd::class, BinaryOp\BooleanOr::class, BinaryOp\Coalesce::class, BinaryOp\LogicalAnd::class, BinaryOp\LogicalXor::class, BinaryOp\LogicalOr::class]; foreach ($binaryOps as $binaryOp) { $this->fixupMap[$binaryOp] = ['left' => self::FIXUP_PREC_LEFT, 'right' => self::FIXUP_PREC_RIGHT]; @@ -21558,7 +21800,7 @@ abstract class PrettyPrinterAbstract $stripDoubleArrow = ['right' => \T_DOUBLE_ARROW]; $stripColon = ['left' => ':']; $stripEquals = ['left' => '=']; - $this->removalMap = ['Expr_ArrayDimFetch->dim' => $stripBoth, 'Expr_ArrayItem->key' => $stripDoubleArrow, 'Expr_ArrowFunction->returnType' => $stripColon, 'Expr_Closure->returnType' => $stripColon, 'Expr_Exit->expr' => $stripBoth, 'Expr_Ternary->if' => $stripBoth, 'Expr_Yield->key' => $stripDoubleArrow, 'Expr_Yield->value' => $stripBoth, 'Param->type' => $stripRight, 'Param->default' => $stripEquals, 'Stmt_Break->num' => $stripBoth, 'Stmt_Catch->var' => $stripLeft, 'Stmt_ClassMethod->returnType' => $stripColon, 'Stmt_Class->extends' => ['left' => \T_EXTENDS], 'Stmt_Enum->scalarType' => $stripColon, 'Stmt_EnumCase->expr' => $stripEquals, 'Expr_PrintableNewAnonClass->extends' => ['left' => \T_EXTENDS], 'Stmt_Continue->num' => $stripBoth, 'Stmt_Foreach->keyVar' => $stripDoubleArrow, 'Stmt_Function->returnType' => $stripColon, 'Stmt_If->else' => $stripLeft, 'Stmt_Namespace->name' => $stripLeft, 'Stmt_Property->type' => $stripRight, 'Stmt_PropertyProperty->default' => $stripEquals, 'Stmt_Return->expr' => $stripBoth, 'Stmt_StaticVar->default' => $stripEquals, 'Stmt_TraitUseAdaptation_Alias->newName' => $stripLeft, 'Stmt_TryCatch->finally' => $stripLeft]; + $this->removalMap = ['Expr_ArrayDimFetch->dim' => $stripBoth, 'Expr_ArrayItem->key' => $stripDoubleArrow, 'Expr_ArrowFunction->returnType' => $stripColon, 'Expr_Closure->returnType' => $stripColon, 'Expr_Exit->expr' => $stripBoth, 'Expr_Ternary->if' => $stripBoth, 'Expr_Yield->key' => $stripDoubleArrow, 'Expr_Yield->value' => $stripBoth, 'Param->type' => $stripRight, 'Param->default' => $stripEquals, 'Stmt_Break->num' => $stripBoth, 'Stmt_Catch->var' => $stripLeft, 'Stmt_ClassConst->type' => $stripRight, 'Stmt_ClassMethod->returnType' => $stripColon, 'Stmt_Class->extends' => ['left' => \T_EXTENDS], 'Stmt_Enum->scalarType' => $stripColon, 'Stmt_EnumCase->expr' => $stripEquals, 'Expr_PrintableNewAnonClass->extends' => ['left' => \T_EXTENDS], 'Stmt_Continue->num' => $stripBoth, 'Stmt_Foreach->keyVar' => $stripDoubleArrow, 'Stmt_Function->returnType' => $stripColon, 'Stmt_If->else' => $stripLeft, 'Stmt_Namespace->name' => $stripLeft, 'Stmt_Property->type' => $stripRight, 'Stmt_PropertyProperty->default' => $stripEquals, 'Stmt_Return->expr' => $stripBoth, 'Stmt_StaticVar->default' => $stripEquals, 'Stmt_TraitUseAdaptation_Alias->newName' => $stripLeft, 'Stmt_TryCatch->finally' => $stripLeft]; } protected function initializeInsertionMap() { @@ -21580,6 +21822,7 @@ abstract class PrettyPrinterAbstract 'Stmt_Break->num' => [\T_BREAK, \false, ' ', null], 'Stmt_Catch->var' => [null, \false, ' ', null], 'Stmt_ClassMethod->returnType' => [')', \false, ' : ', null], + 'Stmt_ClassConst->type' => [\T_CONST, \false, ' ', null], 'Stmt_Class->extends' => [null, \false, ' extends ', null], 'Stmt_Enum->scalarType' => [null, \false, ' : ', null], 'Stmt_EnumCase->expr' => [null, \false, ' = ', null], @@ -21703,7 +21946,7 @@ abstract class PrettyPrinterAbstract if ($this->modifierChangeMap) { return; } - $this->modifierChangeMap = ['Stmt_ClassConst->flags' => \T_CONST, 'Stmt_ClassMethod->flags' => \T_FUNCTION, 'Stmt_Class->flags' => \T_CLASS, 'Stmt_Property->flags' => \T_VARIABLE, 'Param->flags' => \T_VARIABLE]; + $this->modifierChangeMap = ['Stmt_ClassConst->flags' => \T_CONST, 'Stmt_ClassMethod->flags' => \T_FUNCTION, 'Stmt_Class->flags' => \T_CLASS, 'Stmt_Property->flags' => \T_VARIABLE, 'Expr_PrintableNewAnonClass->flags' => \T_CLASS, 'Param->flags' => \T_VARIABLE]; // List of integer subnodes that are not modifiers: // Expr_Include->type // Stmt_GroupUse->type @@ -24393,6 +24636,10 @@ final class CodeCoverage * @var ?string */ private $cacheDirectory; + /** + * @var ?Directory + */ + private $cachedReport; public function __construct(Driver $driver, Filter $filter) { $this->driver = $driver; @@ -24405,7 +24652,10 @@ final class CodeCoverage */ public function getReport() : Directory { - return (new Builder($this->analyser()))->build($this); + if ($this->cachedReport === null) { + $this->cachedReport = (new Builder($this->analyser()))->build($this); + } + return $this->cachedReport; } /** * Clears collected code coverage data. @@ -24415,6 +24665,14 @@ final class CodeCoverage $this->currentId = null; $this->data = new ProcessedCodeCoverageData(); $this->tests = []; + $this->cachedReport = null; + } + /** + * @internal + */ + public function clearCache() : void + { + $this->cachedReport = null; } /** * Returns the filter object used. @@ -24470,6 +24728,7 @@ final class CodeCoverage } $this->currentId = $id; $this->driver->start(); + $this->cachedReport = null; } /** * Stop collection of code coverage information. @@ -24484,6 +24743,7 @@ final class CodeCoverage $data = $this->driver->stop(); $this->append($data, null, $append, $linesToBeCovered, $linesToBeUsed); $this->currentId = null; + $this->cachedReport = null; return $data; } /** @@ -24504,6 +24764,7 @@ final class CodeCoverage if ($id === null) { throw new TestIdMissingException(); } + $this->cachedReport = null; $this->applyFilter($rawData); $this->applyExecutableLinesFilter($rawData); if ($this->useAnnotationsForIgnoringCode) { @@ -24550,6 +24811,7 @@ final class CodeCoverage $this->filter->includeFiles($that->filter()->files()); $this->data->merge($that->data); $this->tests = array_merge($this->tests, $that->getTests()); + $this->cachedReport = null; } public function enableCheckForUnintentionallyCoveredCode() : void { @@ -24801,7 +25063,7 @@ final class CodeCoverage } $this->analyser = new ParsingFileAnalyser($this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode); if ($this->cachesStaticAnalysis()) { - $this->analyser = new CachingFileAnalyser($this->cacheDirectory, $this->analyser); + $this->analyser = new CachingFileAnalyser($this->cacheDirectory, $this->analyser, $this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode); } return $this->analyser; } @@ -25898,39 +26160,35 @@ final class Filter return empty($this->files); } } -php-code-coverage +BSD 3-Clause License -Copyright (c) 2009-2022, Sebastian Bergmann . +Copyright (c) 2009-2023, Sebastian Bergmann All rights reserved. Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: +modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - * Neither the name of Sebastian Bergmann nor the names of his - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. appendChild($xmlMetrics); $buffer = $xmlDocument->saveXML(); if ($target !== null) { - Filesystem::createDirectory(dirname($target)); + if (!strpos($target, '://') !== \false) { + Filesystem::createDirectory(dirname($target)); + } if (@file_put_contents($target, $buffer) === \false) { throw new WriteOperationFailedException($target); } @@ -27864,6 +28125,7 @@ use function file_put_contents; use function preg_match; use function range; use function str_replace; +use function strpos; use function time; use DOMImplementation; use PHPUnit\SebastianBergmann\CodeCoverage\CodeCoverage; @@ -27986,7 +28248,7 @@ final class Cobertura $methodsElement->appendChild($methodElement); } } - if ($report->numberOfFunctions() === 0) { + if ($item->numberOfFunctions() === 0) { $packageElement->setAttribute('complexity', (string) $packageComplexity); continue; } @@ -28002,7 +28264,7 @@ final class Cobertura $classElement->appendChild($methodsElement); $classLinesElement = $document->createElement('lines'); $classElement->appendChild($classLinesElement); - $functions = $report->functions(); + $functions = $item->functions(); foreach ($functions as $functionName => $function) { if ($function['executableLines'] === 0) { continue; @@ -28055,7 +28317,9 @@ final class Cobertura $coverageElement->setAttribute('complexity', (string) $complexity); $buffer = $document->saveXML(); if ($target !== null) { - Filesystem::createDirectory(dirname($target)); + if (!strpos($target, '://') !== \false) { + Filesystem::createDirectory(dirname($target)); + } if (@file_put_contents($target, $buffer) === \false) { throw new WriteOperationFailedException($target); } @@ -28082,6 +28346,7 @@ use function file_put_contents; use function htmlspecialchars; use function is_string; use function round; +use function strpos; use DOMDocument; use PHPUnit\SebastianBergmann\CodeCoverage\CodeCoverage; use PHPUnit\SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; @@ -28165,7 +28430,9 @@ final class Crap4j $root->appendChild($methodsNode); $buffer = $document->saveXML(); if ($target !== null) { - Filesystem::createDirectory(dirname($target)); + if (!strpos($target, '://') !== \false) { + Filesystem::createDirectory(dirname($target)); + } if (@file_put_contents($target, $buffer) === \false) { throw new WriteOperationFailedException($target); } @@ -28832,7 +29099,7 @@ final class File extends Renderer $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'file_branch.html' : 'file.html'); $template = new Template($templateName, '{{', '}}'); $this->setCommonTemplateVariables($template, $node); - $template->setVar(['items' => $this->renderItems($node), 'lines' => $this->renderSourceWithLineCoverage($node), 'legend' => '

ExecutedNot ExecutedDead Code

', 'structure' => '']); + $template->setVar(['items' => $this->renderItems($node), 'lines' => $this->renderSourceWithLineCoverage($node), 'legend' => '

Covered by small (and larger) testsCovered by medium (and large) testsCovered by large tests (and tests of unknown size)Not coveredNot coverable

', 'structure' => '']); $template->renderTo($file . '.html'); if ($this->hasBranchCoverage) { $template->setVar(['items' => $this->renderItems($node), 'lines' => $this->renderSourceWithBranchCoverage($node), 'legend' => '

Fully coveredPartially coveredNot covered

', 'structure' => $this->renderBranchStructure($node)]); @@ -29556,15 +29823,43 @@ table + .structure-heading { border-top: 1px solid lightgrey; padding-top: 0.5em; } + +.legend { + font-weight: bold; + margin-right: 2px; + padding-left: 10px; + padding-right: 10px; + text-align: center; +} + +.covered-by-small-tests { + background-color: #99cb84; +} + +.covered-by-medium-tests { + background-color: #c3e3b5; +} + +.covered-by-large-tests { + background-color: #dff0d8; +} + +.not-covered { + background-color: #f2dede; +} + +.not-coverable { + background-color: #fcf8e3; +} Dashboard for {{full_path}} - - - + + + @@ -29695,9 +29990,9 @@ table + .structure-heading {

- - - + + + - - + + + - - - + + + + @@ -30343,9 +30638,9 @@ $(document).ready(function() { Code Coverage for {{full_path}} - - - + + + @@ -30398,10 +30693,10 @@ $(document).ready(function() {
- - - - + + + + @@ -30585,6 +30880,7 @@ namespace PHPUnit\SebastianBergmann\CodeCoverage\Report; use function dirname; use function file_put_contents; use function serialize; +use function strpos; use PHPUnit\SebastianBergmann\CodeCoverage\CodeCoverage; use PHPUnit\SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException; use PHPUnit\SebastianBergmann\CodeCoverage\Util\Filesystem; @@ -30592,9 +30888,12 @@ final class PHP { public function process(CodeCoverage $coverage, ?string $target = null) : string { + $coverage->clearCache(); $buffer = "files() as $file) { $analyser->process($file); } @@ -31781,23 +32080,33 @@ final class CachingFileAnalyser implements FileAnalyser * @var ?string */ private static $cacheVersion; + /** + * @var string + */ + private $directory; /** * @var FileAnalyser */ private $analyser; /** - * @var array + * @var bool */ - private $cache = []; + private $useAnnotationsForIgnoringCode; /** - * @var string + * @var bool */ - private $directory; - public function __construct(string $directory, FileAnalyser $analyser) + private $ignoreDeprecatedCode; + /** + * @var array + */ + private $cache = []; + public function __construct(string $directory, FileAnalyser $analyser, bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode) { Filesystem::createDirectory($directory); $this->analyser = $analyser; $this->directory = $directory; + $this->useAnnotationsForIgnoringCode = $useAnnotationsForIgnoringCode; + $this->ignoreDeprecatedCode = $ignoreDeprecatedCode; } public function classesIn(string $filename) : array { @@ -31874,7 +32183,8 @@ final class CachingFileAnalyser implements FileAnalyser } private function cacheFile(string $filename) : string { - return $this->directory . \DIRECTORY_SEPARATOR . md5($filename . "\x00" . file_get_contents($filename) . "\x00" . self::cacheVersion()); + $cacheKey = md5(implode("\x00", [$filename, file_get_contents($filename), self::cacheVersion(), $this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode])); + return $this->directory . \DIRECTORY_SEPARATOR . $cacheKey; } private static function cacheVersion() : string { @@ -31920,6 +32230,7 @@ use PHPUnit\PhpParser\Node\Stmt\Function_; use PHPUnit\PhpParser\Node\Stmt\Interface_; use PHPUnit\PhpParser\Node\Stmt\Trait_; use PHPUnit\PhpParser\Node\UnionType; +use PHPUnit\PhpParser\NodeAbstract; use PHPUnit\PhpParser\NodeTraverser; use PHPUnit\PhpParser\NodeVisitorAbstract; use PHPUnit\SebastianBergmann\Complexity\CyclomaticComplexityCalculatingVisitor; @@ -32036,8 +32347,11 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract if ($type instanceof NullableType) { return '?' . $type->type; } - if ($type instanceof UnionType || $type instanceof IntersectionType) { - return $this->unionOrIntersectionAsString($type); + if ($type instanceof UnionType) { + return $this->unionTypeAsString($type); + } + if ($type instanceof IntersectionType) { + return $this->intersectionTypeAsString($type); } return $type->toString(); } @@ -32098,26 +32412,35 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract { return trim(rtrim($namespacedName, $name), '\\'); } - /** - * @psalm-param UnionType|IntersectionType $type - */ - private function unionOrIntersectionAsString(ComplexType $type) : string + private function unionTypeAsString(UnionType $node) : string { - if ($type instanceof UnionType) { - $separator = '|'; - } else { - $separator = '&'; - } $types = []; - foreach ($type->types as $_type) { - if ($_type instanceof Name) { - $types[] = $_type->toCodeString(); - } else { - assert($_type instanceof Identifier); - $types[] = $_type->toString(); + foreach ($node->types as $type) { + if ($type instanceof IntersectionType) { + $types[] = '(' . $this->intersectionTypeAsString($type) . ')'; + continue; } + $types[] = $this->typeAsString($type); + } + return implode('|', $types); + } + private function intersectionTypeAsString(IntersectionType $node) : string + { + $types = []; + foreach ($node->types as $type) { + $types[] = $this->typeAsString($type); } - return implode($separator, $types); + return implode('&', $types); + } + /** + * @psalm-param Identifier|Name $node $node + */ + private function typeAsString(NodeAbstract $node) : string + { + if ($node instanceof Name) { + return $node->toCodeString(); + } + return $node->toString(); } } getStartLine(), $node->getEndLine()) as $line) { + $this->unsets[$line] = \true; + } + return; + } + if ($node instanceof Node\Stmt\Declare_ || $node instanceof Node\Stmt\DeclareDeclare || $node instanceof Node\Stmt\Else_ || $node instanceof Node\Stmt\EnumCase || $node instanceof Node\Stmt\Finally_ || $node instanceof Node\Stmt\GroupUse || $node instanceof Node\Stmt\Label || $node instanceof Node\Stmt\Namespace_ || $node instanceof Node\Stmt\Nop || $node instanceof Node\Stmt\Switch_ || $node instanceof Node\Stmt\TryCatch || $node instanceof Node\Stmt\Use_ || $node instanceof Node\Stmt\UseUse || $node instanceof Node\Expr\ConstFetch || $node instanceof Node\Expr\Match_ || $node instanceof Node\Expr\Variable || $node instanceof Node\ComplexType || $node instanceof Node\Const_ || $node instanceof Node\Identifier || $node instanceof Node\Name || $node instanceof Node\Param || $node instanceof Node\Scalar) { return; } if ($node instanceof Node\Stmt\Throw_) { @@ -32761,7 +33090,7 @@ final class Version public static function id() : string { if (self::$version === null) { - self::$version = (new VersionId('9.2.23', dirname(__DIR__)))->getVersion(); + self::$version = (new VersionId('9.2.29', dirname(__DIR__)))->getVersion(); } return self::$version; } @@ -40283,12 +40612,13 @@ class Argument * Checks that argument matches provided callback. * * @param callable $callback + * @param string|null $customStringRepresentation Customize the __toString() representation of this token * * @return Token\CallbackToken */ - public static function that($callback) + public static function that($callback, ?string $customStringRepresentation = null) { - return new Token\CallbackToken($callback); + return new Token\CallbackToken($callback, $customStringRepresentation); } /** * Matches any single value. @@ -40311,13 +40641,13 @@ class Argument /** * Checks that argument matches all tokens * - * @param mixed ... a list of tokens + * @param mixed ...$tokens a list of tokens * * @return Token\LogicalAndToken */ - public static function allOf() + public static function allOf(...$tokens) { - return new Token\LogicalAndToken(\func_get_args()); + return new Token\LogicalAndToken($tokens); } /** * Checks that argument array or countable object has exact number of elements. @@ -40411,7 +40741,7 @@ class Argument * given precision. * * @param float $value - * @param float $precision + * @param int $precision * * @return Token\ApproximateValueToken */ @@ -40422,7 +40752,7 @@ class Argument /** * Checks that argument is in array. * - * @param array $value + * @param array $value * * @return Token\InArrayToken */ @@ -40433,7 +40763,7 @@ class Argument /** * Checks that argument is not in array. * - * @param array $value + * @param array $value * * @return Token\NotInArrayToken */ @@ -40462,14 +40792,17 @@ namespace Prophecy\Argument; class ArgumentsWildcard { /** - * @var Token\TokenInterface[] + * @var list */ private $tokens = array(); + /** + * @var string|null + */ private $string; /** * Initializes wildcard. * - * @param array $arguments Array of argument tokens or values + * @param array $arguments Array of argument tokens or values */ public function __construct(array $arguments) { @@ -40483,7 +40816,7 @@ class ArgumentsWildcard /** * Calculates wildcard match score for provided arguments. * - * @param array $arguments + * @param array $arguments * * @return false|int False OR integer score (higher - better) */ @@ -40524,7 +40857,7 @@ class ArgumentsWildcard return $this->string; } /** - * @return array + * @return list */ public function getTokens() { @@ -40553,7 +40886,7 @@ class AnyValueToken implements \Prophecy\Argument\Token\TokenInterface /** * Always scores 3 for any argument. * - * @param $argument + * @param mixed $argument * * @return int */ @@ -40650,6 +40983,10 @@ class ApproximateValueToken implements \Prophecy\Argument\Token\TokenInterface { private $value; private $precision; + /** + * @param float $value + * @param int $precision + */ public function __construct($value, $precision = 0) { $this->value = $value; @@ -40660,6 +40997,9 @@ class ApproximateValueToken implements \Prophecy\Argument\Token\TokenInterface */ public function scoreArgument($argument) { + if (!\is_float($argument) && !\is_int($argument) && !\is_numeric($argument)) { + return \false; + } return \round((float) $argument, $this->precision) === \round($this->value, $this->precision) ? 10 : \false; } /** @@ -40709,9 +41049,9 @@ class ArrayCountToken implements \Prophecy\Argument\Token\TokenInterface /** * Scores 6 when argument has preset number of elements. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -40738,8 +41078,10 @@ class ArrayCountToken implements \Prophecy\Argument\Token\TokenInterface /** * Returns true if object is either array or instance of \Countable * - * @param $argument + * @param mixed $argument * @return bool + * + * @phpstan-assert-if-true array|\Countable $argument */ private function isCountable($argument) { @@ -40748,7 +41090,7 @@ class ArrayCountToken implements \Prophecy\Argument\Token\TokenInterface /** * Returns true if $argument has expected number of elements * - * @param array|\Countable $argument + * @param array|\Countable $argument * * @return bool */ @@ -40777,9 +41119,9 @@ use Prophecy\Exception\InvalidArgumentException; */ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface { - /** @var \Prophecy\Argument\Token\TokenInterface */ + /** @var TokenInterface */ private $key; - /** @var \Prophecy\Argument\Token\TokenInterface */ + /** @var TokenInterface */ private $value; /** * @param mixed $key exact value or token @@ -40794,10 +41136,10 @@ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface * Scores half of combined scores from key and value tokens for same entry. Capped at 8. * If argument implements \ArrayAccess without \Traversable, then key token is restricted to ExactValueToken. * - * @param array|\ArrayAccess|\Traversable $argument + * @param mixed $argument * - * @throws \Prophecy\Exception\InvalidArgumentException - * @return bool|int + * @throws InvalidArgumentException + * @return false|int */ public function scoreArgument($argument) { @@ -40812,6 +41154,7 @@ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface } $keyScores = \array_map(array($this->key, 'scoreArgument'), \array_keys($argument)); $valueScores = \array_map(array($this->value, 'scoreArgument'), $argument); + /** @var callable(int|false, int|false): (int|false) $scoreEntry */ $scoreEntry = function ($value, $key) { return $value && $key ? \min(8, ($key + $value) / 2) : \false; }; @@ -40856,7 +41199,7 @@ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface /** * Wraps non token $value into ExactValueToken * - * @param $value + * @param mixed $value * @return TokenInterface */ private function wrapIntoExactValueToken($value) @@ -40866,10 +41209,10 @@ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface /** * Converts instance of \ArrayAccess to key => value array entry * - * @param \ArrayAccess $object + * @param \ArrayAccess $object * - * @return array|null - * @throws \Prophecy\Exception\InvalidArgumentException + * @return array + * @throws InvalidArgumentException */ private function convertArrayAccessToEntry(\ArrayAccess $object) { @@ -40877,6 +41220,9 @@ class ArrayEntryToken implements \Prophecy\Argument\Token\TokenInterface throw new InvalidArgumentException(\sprintf('You can only use exact value tokens to match key of ArrayAccess object' . \PHP_EOL . 'But you used `%s`.', $this->key)); } $key = $this->key->getValue(); + if (!\is_int($key) && !\is_string($key)) { + throw new InvalidArgumentException(\sprintf('You can only use integer or string keys to match key of ArrayAccess object' . \PHP_EOL . 'But you used `%s`.', $this->key)); + } return $object->offsetExists($key) ? array($key => $object[$key]) : array(); } } @@ -40973,26 +41319,32 @@ use Prophecy\Exception\InvalidArgumentException; class CallbackToken implements \Prophecy\Argument\Token\TokenInterface { private $callback; + /** + * @var string|null + */ + private $customStringRepresentation; /** * Initializes token. * * @param callable $callback + * @param string|null $customStringRepresentation Customize the __toString() representation of this token * * @throws \Prophecy\Exception\InvalidArgumentException */ - public function __construct($callback) + public function __construct($callback, ?string $customStringRepresentation = null) { if (!\is_callable($callback)) { throw new InvalidArgumentException(\sprintf('Callable expected as an argument to CallbackToken, but got %s.', \gettype($callback))); } $this->callback = $callback; + $this->customStringRepresentation = $customStringRepresentation; } /** * Scores 7 if callback returns true, false otherwise. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -41014,6 +41366,9 @@ class CallbackToken implements \Prophecy\Argument\Token\TokenInterface */ public function __toString() { + if ($this->customStringRepresentation !== null) { + return $this->customStringRepresentation; + } return 'callback()'; } } @@ -41029,8 +41384,9 @@ class CallbackToken implements \Prophecy\Argument\Token\TokenInterface */ namespace Prophecy\Argument\Token; +use Prophecy\Comparator\FactoryProvider; use PHPUnit\SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; +use PHPUnit\SebastianBergmann\Comparator\Factory as ComparatorFactory; use Prophecy\Util\StringUtil; /** * Exact value token. @@ -41040,28 +41396,29 @@ use Prophecy\Util\StringUtil; class ExactValueToken implements \Prophecy\Argument\Token\TokenInterface { private $value; + /** + * @var string|null + */ private $string; private $util; private $comparatorFactory; /** * Initializes token. * - * @param mixed $value - * @param StringUtil $util - * @param ComparatorFactory $comparatorFactory + * @param mixed $value */ public function __construct($value, StringUtil $util = null, ComparatorFactory $comparatorFactory = null) { $this->value = $value; $this->util = $util ?: new StringUtil(); - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + $this->comparatorFactory = $comparatorFactory ?: FactoryProvider::getInstance(); } /** * Scores 10 if argument matches preset value. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -41141,13 +41498,15 @@ use Prophecy\Util\StringUtil; class IdenticalValueToken implements \Prophecy\Argument\Token\TokenInterface { private $value; + /** + * @var string|null + */ private $string; private $util; /** * Initializes token. * - * @param mixed $value - * @param StringUtil $util + * @param mixed $value */ public function __construct($value, StringUtil $util = null) { @@ -41157,9 +41516,9 @@ class IdenticalValueToken implements \Prophecy\Argument\Token\TokenInterface /** * Scores 11 if argument matches preset value. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -41209,7 +41568,7 @@ class InArrayToken implements \Prophecy\Argument\Token\TokenInterface private $token = array(); private $strict; /** - * @param array $arguments tokens + * @param array $arguments tokens * @param bool $strict */ public function __construct(array $arguments, $strict = \true) @@ -41273,9 +41632,12 @@ namespace Prophecy\Argument\Token; */ class LogicalAndToken implements \Prophecy\Argument\Token\TokenInterface { + /** + * @var list + */ private $tokens = array(); /** - * @param array $arguments exact values or tokens + * @param array $arguments exact values or tokens */ public function __construct(array $arguments) { @@ -41289,9 +41651,9 @@ class LogicalAndToken implements \Prophecy\Argument\Token\TokenInterface /** * Scores maximum score from scores returned by tokens for this argument if all of them score. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -41346,7 +41708,7 @@ namespace Prophecy\Argument\Token; */ class LogicalNotToken implements \Prophecy\Argument\Token\TokenInterface { - /** @var \Prophecy\Argument\Token\TokenInterface */ + /** @var TokenInterface */ private $token; /** * @param mixed $value exact value or token @@ -41358,9 +41720,9 @@ class LogicalNotToken implements \Prophecy\Argument\Token\TokenInterface /** * Scores 4 when preset token does not match the argument. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument) { @@ -41369,7 +41731,7 @@ class LogicalNotToken implements \Prophecy\Argument\Token\TokenInterface /** * Returns true if preset token is last. * - * @return bool|int + * @return bool */ public function isLast() { @@ -41416,7 +41778,7 @@ class NotInArrayToken implements \Prophecy\Argument\Token\TokenInterface private $token = array(); private $strict; /** - * @param array $arguments tokens + * @param array $arguments tokens * @param bool $strict */ public function __construct(array $arguments, $strict = \true) @@ -41473,8 +41835,9 @@ class NotInArrayToken implements \Prophecy\Argument\Token\TokenInterface */ namespace Prophecy\Argument\Token; +use Prophecy\Comparator\FactoryProvider; use PHPUnit\SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; +use PHPUnit\SebastianBergmann\Comparator\Factory as ComparatorFactory; use Prophecy\Util\StringUtil; /** * Object state-checker token. @@ -41490,17 +41853,15 @@ class ObjectStateToken implements \Prophecy\Argument\Token\TokenInterface /** * Initializes token. * - * @param string $methodName - * @param mixed $value Expected return value - * @param null|StringUtil $util - * @param ComparatorFactory $comparatorFactory + * @param string $methodName + * @param mixed $value Expected return value */ public function __construct($methodName, $value, StringUtil $util = null, ComparatorFactory $comparatorFactory = null) { $this->name = $methodName; $this->value = $value; $this->util = $util ?: new StringUtil(); - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + $this->comparatorFactory = $comparatorFactory ?: FactoryProvider::getInstance(); } /** * Scores 8 if argument is an object, which method returns expected value. @@ -41511,8 +41872,9 @@ class ObjectStateToken implements \Prophecy\Argument\Token\TokenInterface */ public function scoreArgument($argument) { - if (\is_object($argument) && \method_exists($argument, $this->name)) { - $actual = \call_user_func(array($argument, $this->name)); + $methodCallable = array($argument, $this->name); + if (\is_object($argument) && \method_exists($argument, $this->name) && \is_callable($methodCallable)) { + $actual = \call_user_func($methodCallable); $comparator = $this->comparatorFactory->getComparatorFor($this->value, $actual); try { $comparator->assertEquals($this->value, $actual); @@ -41628,15 +41990,15 @@ interface TokenInterface /** * Calculates token match score for provided argument. * - * @param $argument + * @param mixed $argument * - * @return bool|int + * @return false|int */ public function scoreArgument($argument); /** * Returns true if this token prevents check of other tokens (is last one). * - * @return bool|int + * @return bool */ public function isLast(); /** @@ -41737,16 +42099,25 @@ class Call private $arguments; private $returnValue; private $exception; + /** + * @var string|null + */ private $file; + /** + * @var int|null + */ private $line; + /** + * @var \SplObjectStorage + */ private $scores; /** * Initializes call. * * @param string $methodName - * @param array $arguments + * @param array $arguments * @param mixed $returnValue - * @param Exception $exception + * @param Exception|null $exception * @param null|string $file * @param null|int $line */ @@ -41774,7 +42145,7 @@ class Call /** * Returns called method arguments. * - * @return array + * @return array */ public function getArguments() { @@ -41801,7 +42172,7 @@ class Call /** * Returns callee filename. * - * @return string + * @return string|null */ public function getFile() { @@ -41810,7 +42181,7 @@ class Call /** * Returns callee line number. * - * @return int + * @return int|null */ public function getLine() { @@ -41870,6 +42241,7 @@ class Call namespace Prophecy\Call; use Prophecy\Exception\Prophecy\MethodProphecyException; +use Prophecy\Prophecy\MethodProphecy; use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Argument\ArgumentsWildcard; use Prophecy\Util\StringUtil; @@ -41888,7 +42260,7 @@ class CallCenter */ private $recordedCalls = array(); /** - * @var SplObjectStorage + * @var SplObjectStorage> */ private $unexpectedCalls; /** @@ -41904,9 +42276,9 @@ class CallCenter /** * Makes and records specific method call for object prophecy. * - * @param ObjectProphecy $prophecy + * @param ObjectProphecy $prophecy * @param string $methodName - * @param array $arguments + * @param array $arguments * * @return mixed Returns null if no promise for prophecy found or promise return value. * @@ -41918,7 +42290,7 @@ class CallCenter // Limit backtrace to last 3 calls as we don't use the rest $backtrace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 3); $file = $line = null; - if (isset($backtrace[2]) && isset($backtrace[2]['file'])) { + if (isset($backtrace[2]) && isset($backtrace[2]['file']) && isset($backtrace[2]['line'])) { $file = $backtrace[2]['file']; $line = $backtrace[2]['line']; } @@ -41967,7 +42339,7 @@ class CallCenter * @param string $methodName * @param ArgumentsWildcard $wildcard * - * @return Call[] + * @return list */ public function findCalls($methodName, ArgumentsWildcard $wildcard) { @@ -41977,11 +42349,11 @@ class CallCenter })); } /** + * @return void * @throws UnexpectedCallException */ public function checkUnexpectedCalls() { - /** @var Call $call */ foreach ($this->unexpectedCalls as $call) { $prophecy = $this->unexpectedCalls[$call]; // If fake/stub doesn't have method prophecy for this call - throw exception @@ -41990,6 +42362,13 @@ class CallCenter } } } + /** + * @param ObjectProphecy $prophecy + * @param string $methodName + * @param array $arguments + * + * @return UnexpectedCallException + */ private function createUnexpectedCallException(ObjectProphecy $prophecy, $methodName, array $arguments) { $classname = \get_class($prophecy->reveal()); @@ -42002,6 +42381,12 @@ class CallCenter } return new UnexpectedCallException(\sprintf("Unexpected method call on %s:\n" . " - %s(\n" . "%s\n" . " )\n" . "expected calls were:\n" . "%s", $classname, $methodName, $argstring, \implode("\n", $expected)), $prophecy, $methodName, $arguments); } + /** + * @param string[] $arguments + * @param int $indentationLength + * + * @return string[] + */ private function indentArguments(array $arguments, $indentationLength) { return \preg_replace_callback('/^/m', function () use($indentationLength) { @@ -42009,11 +42394,13 @@ class CallCenter }, $arguments); } /** - * @param ObjectProphecy $prophecy + * @param ObjectProphecy $prophecy * @param string $methodName - * @param array $arguments + * @param array $arguments * * @return array + * + * @phpstan-return list */ private function findMethodProphecies(ObjectProphecy $prophecy, $methodName, array $arguments) { @@ -42051,7 +42438,7 @@ final class ClosureComparator extends Comparator { return \is_object($expected) && $expected instanceof \Closure && \is_object($actual) && $actual instanceof \Closure; } - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = \false, $ignoreCase = \false, array &$processed = array()) : void + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = \false, $ignoreCase = \false) : void { if ($expected !== $actual) { throw new ComparisonFailure( @@ -42083,6 +42470,8 @@ use PHPUnit\SebastianBergmann\Comparator\Factory as BaseFactory; * Prophecy comparator factory. * * @author Konstantin Kudryashov + * + * @deprecated Use "Prophecy\Comparator\FactoryProvider" instead to get a "SebastianBergmann\Comparator\Factory" instance. */ final class Factory extends BaseFactory { @@ -42119,6 +42508,43 @@ final class Factory extends BaseFactory */ namespace Prophecy\Comparator; +use PHPUnit\SebastianBergmann\Comparator\Factory; +/** + * Prophecy comparator factory. + * + * @author Konstantin Kudryashov + */ +final class FactoryProvider +{ + /** + * @var Factory|null + */ + private static $instance; + private function __construct() + { + } + public static function getInstance() : Factory + { + if (self::$instance === null) { + self::$instance = new Factory(); + self::$instance->register(new \Prophecy\Comparator\ClosureComparator()); + self::$instance->register(new \Prophecy\Comparator\ProphecyComparator()); + } + return self::$instance; + } +} + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Prophecy\Comparator; + use Prophecy\Prophecy\ProphecyInterface; use PHPUnit\SebastianBergmann\Comparator\ObjectComparator; /** @@ -42130,8 +42556,12 @@ class ProphecyComparator extends ObjectComparator { return \is_object($expected) && \is_object($actual) && $actual instanceof ProphecyInterface; } + /** + * @phpstan-param list $processed + */ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = \false, $ignoreCase = \false, array &$processed = array()) : void { + \assert($actual instanceof ProphecyInterface); parent::assertEquals($expected, $actual->reveal(), $delta, $canonicalize, $ignoreCase, $processed); } } @@ -42156,10 +42586,10 @@ use ReflectionClass; */ class CachedDoubler extends \Prophecy\Doubler\Doubler { - private static $classes = array(); /** - * {@inheritdoc} + * @var array */ + private static $classes = array(); protected function createDoubleClass(ReflectionClass $class = null, array $interfaces) { $classId = $this->generateClassId($class, $interfaces); @@ -42169,8 +42599,8 @@ class CachedDoubler extends \Prophecy\Doubler\Doubler return self::$classes[$classId] = parent::createDoubleClass($class, $interfaces); } /** - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces * * @return string */ @@ -42189,6 +42619,9 @@ class CachedDoubler extends \Prophecy\Doubler\Doubler \sort($parts); return \md5(\implode('', $parts)); } + /** + * @return void + */ public function resetCache() { self::$classes = array(); @@ -42286,6 +42719,7 @@ class DisableConstructorPatch implements \Prophecy\Doubler\ClassPatch\ClassPatch return; } $constructor = $node->getMethod('__construct'); + \assert($constructor !== null); foreach ($constructor->getArguments() as $argument) { $argument->setDefault(null); } @@ -42362,7 +42796,7 @@ class KeywordPatch implements \Prophecy\Doubler\ClassPatch\ClassPatchInterface /** * Returns array of php keywords. * - * @return array + * @return list */ private function getKeywords() { @@ -42530,6 +42964,7 @@ PHP $prophecyGetter->setCode('return \\call_user_func($this->objectProphecyClosure);'); if ($node->hasMethod('__call')) { $__call = $node->getMethod('__call'); + \assert($__call !== null); } else { $__call = new MethodNode('__call'); $__call->addArgument(new ArgumentNode('name')); @@ -42595,7 +43030,9 @@ class ReflectionClassNewInstancePatch implements \Prophecy\Doubler\ClassPatch\Cl */ public function apply(ClassNode $node) { - foreach ($node->getMethod('newInstance')->getArguments() as $argument) { + $method = $node->getMethod('newInstance'); + \assert($method !== null); + foreach ($method->getArguments() as $argument) { $argument->setDefault(null); } } @@ -42640,9 +43077,6 @@ class SplFileInfoPatch implements \Prophecy\Doubler\ClassPatch\ClassPatchInterfa */ public function supports(ClassNode $node) { - if (null === $node->getParentClass()) { - return \false; - } return 'SplFileInfo' === $node->getParentClass() || \is_subclass_of($node->getParentClass(), 'SplFileInfo'); } /** @@ -42654,6 +43088,7 @@ class SplFileInfoPatch implements \Prophecy\Doubler\ClassPatch\ClassPatchInterfa { if ($node->hasMethod('__construct')) { $constructor = $node->getMethod('__construct'); + \assert($constructor !== null); } else { $constructor = new MethodNode('__construct'); $node->addMethod($constructor); @@ -42762,14 +43197,14 @@ class ThrowablePatch implements \Prophecy\Doubler\ClassPatch\ClassPatchInterface $this->checkItCanBeDoubled($node); $this->setParentClassToException($node); } - private function checkItCanBeDoubled(ClassNode $node) + private function checkItCanBeDoubled(ClassNode $node) : void { $className = $node->getParentClass(); if ($className !== 'stdClass') { throw new ClassCreatorException(\sprintf('Cannot double concrete class %s as well as implement Traversable', $className), $node); } } - private function setParentClassToException(ClassNode $node) + private function setParentClassToException(ClassNode $node) : void { $node->setParentClass('Exception'); $node->removeMethod('getMessage'); @@ -42928,20 +43363,13 @@ class Doubler private $creator; private $namer; /** - * @var ClassPatchInterface[] + * @var list */ private $patches = array(); /** - * @var \Doctrine\Instantiator\Instantiator + * @var Instantiator|null */ private $instantiator; - /** - * Initializes doubler. - * - * @param ClassMirror $mirror - * @param ClassCreator $creator - * @param NameGenerator $namer - */ public function __construct(ClassMirror $mirror = null, ClassCreator $creator = null, \Prophecy\Doubler\NameGenerator $namer = null) { $this->mirror = $mirror ?: new ClassMirror(); @@ -42951,7 +43379,7 @@ class Doubler /** * Returns list of registered class patches. * - * @return ClassPatchInterface[] + * @return list */ public function getClassPatches() { @@ -42961,6 +43389,8 @@ class Doubler * Registers new class patch. * * @param ClassPatchInterface $patch + * + * @return void */ public function registerClassPatch(ClassPatchInterface $patch) { @@ -42972,9 +43402,9 @@ class Doubler /** * Creates double from specific class or/and list of interfaces. * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces Array of ReflectionClass instances - * @param array $args Constructor arguments + * @param ReflectionClass|null $class + * @param ReflectionClass[] $interfaces Array of ReflectionClass instances + * @param array|null $args Constructor arguments * * @return DoubleInterface * @@ -43003,8 +43433,8 @@ class Doubler /** * Creates double class and returns its FQN. * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces + * @param ReflectionClass|null $class + * @param ReflectionClass[] $interfaces * * @return string */ @@ -43043,7 +43473,8 @@ use Prophecy\Doubler\Generator\Node\TypeNodeAbstract; */ class ClassCodeGenerator { - public function __construct(\Prophecy\Doubler\Generator\TypeHintReference $typeHintReference = null) + // Used to accept an optional first argument with the deprecated Prophecy\Doubler\Generator\TypeHintReference so careful when adding a new argument in a minor version. + public function __construct() { } /** @@ -43072,7 +43503,7 @@ class ClassCodeGenerator $code .= "\n}"; return \sprintf("namespace %s {\n%s\n}", $namespace, $code); } - private function generateMethod(\Prophecy\Doubler\Generator\Node\MethodNode $method) + private function generateMethod(\Prophecy\Doubler\Generator\Node\MethodNode $method) : string { $php = \sprintf("%s %s function %s%s(%s)%s {\n", $method->getVisibility(), $method->isStatic() ? 'static' : '', $method->returnsReference() ? '&' : '', $method->getName(), \implode(', ', $this->generateArguments($method->getArguments())), ($ret = $this->generateTypes($method->getReturnTypeNode())) ? ': ' . $ret : ''); $php .= $method->getCode() . "\n"; @@ -43090,7 +43521,12 @@ class ClassCodeGenerator return \join('|', $typeNode->getTypes()); } } - private function generateArguments(array $arguments) + /** + * @param list $arguments + * + * @return list + */ + private function generateArguments(array $arguments) : array { return \array_map(function (\Prophecy\Doubler\Generator\Node\ArgumentNode $argument) { $php = $this->generateTypes($argument->getTypeNode()); @@ -43126,11 +43562,6 @@ use Prophecy\Exception\Doubler\ClassCreatorException; class ClassCreator { private $generator; - /** - * Initializes creator. - * - * @param ClassCodeGenerator $generator - */ public function __construct(\Prophecy\Doubler\Generator\ClassCodeGenerator $generator = null) { $this->generator = $generator ?: new \Prophecy\Doubler\Generator\ClassCodeGenerator(); @@ -43189,12 +43620,12 @@ use ReflectionUnionType; */ class ClassMirror { - private static $reflectableMethods = array('__construct', '__destruct', '__sleep', '__wakeup', '__toString', '__call', '__invoke'); + private const REFLECTABLE_METHODS = array('__construct', '__destruct', '__sleep', '__wakeup', '__toString', '__call', '__invoke'); /** * Reflects provided arguments into class node. * - * @param ReflectionClass|null $class - * @param ReflectionClass[] $interfaces + * @param ReflectionClass|null $class + * @param ReflectionClass[] $interfaces * * @return Node\ClassNode * @@ -43220,7 +43651,10 @@ class ClassMirror $node->addInterface('Prophecy\\Doubler\\Generator\\ReflectionInterface'); return $node; } - private function reflectClassToNode(ReflectionClass $class, \Prophecy\Doubler\Generator\Node\ClassNode $node) + /** + * @param ReflectionClass $class + */ + private function reflectClassToNode(ReflectionClass $class, \Prophecy\Doubler\Generator\Node\ClassNode $node) : void { if (\true === $class->isFinal()) { throw new ClassMirrorException(\sprintf('Could not reflect class %s as it is marked final.', $class->getName()), $class); @@ -43236,7 +43670,7 @@ class ClassMirror $this->reflectMethodToNode($method, $node); } foreach ($class->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { - if (0 === \strpos($method->getName(), '_') && !\in_array($method->getName(), self::$reflectableMethods)) { + if (0 === \strpos($method->getName(), '_') && !\in_array($method->getName(), self::REFLECTABLE_METHODS)) { continue; } if (\true === $method->isFinal()) { @@ -43246,14 +43680,17 @@ class ClassMirror $this->reflectMethodToNode($method, $node); } } - private function reflectInterfaceToNode(ReflectionClass $interface, \Prophecy\Doubler\Generator\Node\ClassNode $node) + /** + * @param ReflectionClass $interface + */ + private function reflectInterfaceToNode(ReflectionClass $interface, \Prophecy\Doubler\Generator\Node\ClassNode $node) : void { $node->addInterface($interface->getName()); foreach ($interface->getMethods() as $method) { $this->reflectMethodToNode($method, $node); } } - private function reflectMethodToNode(ReflectionMethod $method, \Prophecy\Doubler\Generator\Node\ClassNode $classNode) + private function reflectMethodToNode(ReflectionMethod $method, \Prophecy\Doubler\Generator\Node\ClassNode $classNode) : void { $node = new \Prophecy\Doubler\Generator\Node\MethodNode($method->getName()); if (\true === $method->isProtected()) { @@ -43266,24 +43703,31 @@ class ClassMirror $node->setReturnsReference(); } if ($method->hasReturnType()) { + \assert($method->getReturnType() !== null); $returnTypes = $this->getTypeHints($method->getReturnType(), $method->getDeclaringClass(), $method->getReturnType()->allowsNull()); $node->setReturnTypeNode(new ReturnTypeNode(...$returnTypes)); } elseif (\method_exists($method, 'hasTentativeReturnType') && $method->hasTentativeReturnType()) { + \assert($method->getTentativeReturnType() !== null); $returnTypes = $this->getTypeHints($method->getTentativeReturnType(), $method->getDeclaringClass(), $method->getTentativeReturnType()->allowsNull()); $node->setReturnTypeNode(new ReturnTypeNode(...$returnTypes)); } if (\is_array($params = $method->getParameters()) && \count($params)) { foreach ($params as $param) { - $this->reflectArgumentToNode($param, $node); + $this->reflectArgumentToNode($param, $method->getDeclaringClass(), $node); } } $classNode->addMethod($node); } - private function reflectArgumentToNode(ReflectionParameter $parameter, \Prophecy\Doubler\Generator\Node\MethodNode $methodNode) + /** + * @param ReflectionClass $declaringClass + * + * @return void + */ + private function reflectArgumentToNode(ReflectionParameter $parameter, ReflectionClass $declaringClass, \Prophecy\Doubler\Generator\Node\MethodNode $methodNode) : void { $name = $parameter->getName() == '...' ? '__dot_dot_dot__' : $parameter->getName(); $node = new \Prophecy\Doubler\Generator\Node\ArgumentNode($name); - $typeHints = $this->getTypeHints($parameter->getType(), $parameter->getDeclaringClass(), $parameter->allowsNull()); + $typeHints = $this->getTypeHints($parameter->getType(), $declaringClass, $parameter->allowsNull()); $node->setTypeNode(new ArgumentTypeNode(...$typeHints)); if ($parameter->isVariadic()) { $node->setAsVariadic(); @@ -43296,7 +43740,7 @@ class ClassMirror } $methodNode->addArgument($node); } - private function hasDefaultValue(ReflectionParameter $parameter) + private function hasDefaultValue(ReflectionParameter $parameter) : bool { if ($parameter->isVariadic()) { return \false; @@ -43306,6 +43750,9 @@ class ClassMirror } return $parameter->isOptional() || $parameter->allowsNull() && $parameter->getType() && \PHP_VERSION_ID < 80100; } + /** + * @return mixed + */ private function getDefaultValue(ReflectionParameter $parameter) { if (!$parameter->isDefaultValueAvailable()) { @@ -43313,7 +43760,12 @@ class ClassMirror } return $parameter->getDefaultValue(); } - private function getTypeHints(?ReflectionType $type, ?ReflectionClass $class, bool $allowsNull) : array + /** + * @param ReflectionClass $class + * + * @return list + */ + private function getTypeHints(?ReflectionType $type, ReflectionClass $class, bool $allowsNull) : array { $types = []; if ($type instanceof ReflectionNamedType) { @@ -43337,6 +43789,9 @@ class ClassMirror return $class->getName(); } if ($type === 'parent') { + if (\false === $class->getParentClass()) { + throw new ClassMirrorException(\sprintf('Invalid type "parent" in class "%s" without a parent', $class->getName()), $class); + } return $class->getParentClass()->getName(); } return $type; @@ -43367,9 +43822,21 @@ namespace Prophecy\Doubler\Generator\Node; class ArgumentNode { private $name; + /** + * @var mixed + */ private $default; + /** + * @var bool + */ private $optional = \false; + /** + * @var bool + */ private $byReference = \false; + /** + * @var bool + */ private $isVariadic = \false; /** @var ArgumentTypeNode */ private $typeNode; @@ -43381,10 +43848,16 @@ class ArgumentNode $this->name = $name; $this->typeNode = new \Prophecy\Doubler\Generator\Node\ArgumentTypeNode(); } + /** + * @return string + */ public function getName() { return $this->name; } + /** + * @return void + */ public function setTypeNode(\Prophecy\Doubler\Generator\Node\ArgumentTypeNode $typeNode) { $this->typeNode = $typeNode; @@ -43393,35 +43866,65 @@ class ArgumentNode { return $this->typeNode; } + /** + * @return bool + */ public function hasDefault() { return $this->isOptional() && !$this->isVariadic(); } + /** + * @return mixed + */ public function getDefault() { return $this->default; } + /** + * @param mixed $default + * + * @return void + */ public function setDefault($default = null) { $this->optional = \true; $this->default = $default; } + /** + * @return bool + */ public function isOptional() { return $this->optional; } + /** + * @param bool $byReference + * + * @return void + */ public function setAsPassedByReference($byReference = \true) { $this->byReference = $byReference; } + /** + * @return bool + */ public function isPassedByReference() { return $this->byReference; } + /** + * @param bool $isVariadic + * + * @return void + */ public function setAsVariadic($isVariadic = \true) { $this->isVariadic = $isVariadic; } + /** + * @return bool + */ public function isVariadic() { return $this->isVariadic; @@ -43438,6 +43941,8 @@ class ArgumentNode /** * @deprecated use setArgumentTypeNode instead * @param string|null $typeHint + * + * @return void */ public function setTypeHint($typeHint = null) { @@ -43454,6 +43959,8 @@ class ArgumentNode /** * @deprecated use getArgumentTypeNode instead * @param bool $isNullable + * + * @return void */ public function setAsNullable($isNullable = \true) { @@ -43490,28 +43997,50 @@ use Prophecy\Exception\InvalidArgumentException; */ class ClassNode { + /** + * @var string + */ private $parentClass = 'stdClass'; + /** + * @var list + */ private $interfaces = array(); + /** + * @var array + * + * @phpstan-var array + */ private $properties = array(); + /** + * @var list + */ private $unextendableMethods = array(); + /** + * @var bool + */ private $readOnly = \false; /** - * @var MethodNode[] + * @var array */ private $methods = array(); + /** + * @return string + */ public function getParentClass() { return $this->parentClass; } /** * @param string $class + * + * @return void */ public function setParentClass($class) { $this->parentClass = $class ?: 'stdClass'; } /** - * @return string[] + * @return list */ public function getInterfaces() { @@ -43519,6 +44048,8 @@ class ClassNode } /** * @param string $interface + * + * @return void */ public function addInterface($interface) { @@ -43536,25 +44067,44 @@ class ClassNode { return \in_array($interface, $this->interfaces); } + /** + * @return array + * + * @phpstan-return array + */ public function getProperties() { return $this->properties; } + /** + * @param string $name + * @param string $visibility + * + * @return void + * + * @phpstan-param 'public'|'private'|'protected' $visibility + */ public function addProperty($name, $visibility = 'public') { $visibility = \strtolower($visibility); - if (!\in_array($visibility, array('public', 'private', 'protected'))) { + if (!\in_array($visibility, array('public', 'private', 'protected'), \true)) { throw new InvalidArgumentException(\sprintf('`%s` property visibility is not supported.', $visibility)); } $this->properties[$name] = $visibility; } /** - * @return MethodNode[] + * @return array */ public function getMethods() { return $this->methods; } + /** + * @param MethodNode $method + * @param bool $force + * + * @return void + */ public function addMethod(\Prophecy\Doubler\Generator\Node\MethodNode $method, $force = \false) { if (!$this->isExtendable($method->getName())) { @@ -43565,6 +44115,11 @@ class ClassNode $this->methods[$method->getName()] = $method; } } + /** + * @param string $name + * + * @return void + */ public function removeMethod($name) { unset($this->methods[$name]); @@ -43588,7 +44143,7 @@ class ClassNode return isset($this->methods[$name]); } /** - * @return string[] + * @return list */ public function getUnextendableMethods() { @@ -43596,6 +44151,8 @@ class ClassNode } /** * @param string $unextendableMethod + * + * @return void */ public function addUnextendableMethod($unextendableMethod) { @@ -43606,6 +44163,7 @@ class ClassNode } /** * @param string $method + * * @return bool */ public function isExtendable($method) @@ -43621,6 +44179,8 @@ class ClassNode } /** * @param bool $readOnly + * + * @return void */ public function setReadOnly($readOnly) { @@ -43639,7 +44199,6 @@ class ClassNode */ namespace Prophecy\Doubler\Generator\Node; -use Prophecy\Doubler\Generator\TypeHintReference; use Prophecy\Exception\InvalidArgumentException; /** * Method node. @@ -43650,66 +44209,105 @@ class MethodNode { private $name; private $code; + /** + * @var string + * + * @phpstan-var 'public'|'private'|'protected' + */ private $visibility = 'public'; + /** + * @var bool + */ private $static = \false; + /** + * @var bool + */ private $returnsReference = \false; /** @var ReturnTypeNode */ private $returnTypeNode; /** - * @var ArgumentNode[] + * @var list */ private $arguments = array(); + // Used to accept an optional third argument with the deprecated Prophecy\Doubler\Generator\TypeHintReference so careful when adding a new argument in a minor version. /** - * @param string $name - * @param string $code + * @param string $name + * @param string|null $code */ - public function __construct($name, $code = null, TypeHintReference $typeHintReference = null) + public function __construct($name, $code = null) { $this->name = $name; $this->code = $code; $this->returnTypeNode = new \Prophecy\Doubler\Generator\Node\ReturnTypeNode(); } + /** + * @return string + * + * @phpstan-return 'public'|'private'|'protected' + */ public function getVisibility() { return $this->visibility; } /** * @param string $visibility + * + * @return void */ public function setVisibility($visibility) { $visibility = \strtolower($visibility); - if (!\in_array($visibility, array('public', 'private', 'protected'))) { + if (!\in_array($visibility, array('public', 'private', 'protected'), \true)) { throw new InvalidArgumentException(\sprintf('`%s` method visibility is not supported.', $visibility)); } $this->visibility = $visibility; } + /** + * @return bool + */ public function isStatic() { return $this->static; } + /** + * @param bool $static + * + * @return void + */ public function setStatic($static = \true) { $this->static = (bool) $static; } + /** + * @return bool + */ public function returnsReference() { return $this->returnsReference; } + /** + * @return void + */ public function setReturnsReference() { $this->returnsReference = \true; } + /** + * @return string + */ public function getName() { return $this->name; } + /** + * @return void + */ public function addArgument(\Prophecy\Doubler\Generator\Node\ArgumentNode $argument) { $this->arguments[] = $argument; } /** - * @return ArgumentNode[] + * @return list */ public function getArguments() { @@ -43730,6 +44328,8 @@ class MethodNode /** * @deprecated use setReturnTypeNode instead * @param string $type + * + * @return void */ public function setReturnType($type = null) { @@ -43738,6 +44338,8 @@ class MethodNode /** * @deprecated use setReturnTypeNode instead * @param bool $bool + * + * @return void */ public function setNullableReturnType($bool = \true) { @@ -43772,11 +44374,16 @@ class MethodNode } /** * @param string $code + * + * @return void */ public function setCode($code) { $this->code = $code; } + /** + * @return string + */ public function getCode() { if ($this->returnsReference) { @@ -43784,10 +44391,16 @@ class MethodNode } return (string) $this->code; } + /** + * @return void + */ public function useParentCode() { $this->code = \sprintf('return parent::%s(%s);', $this->getName(), \implode(', ', \array_map(array($this, 'generateArgument'), $this->arguments))); } + /** + * @return string + */ private function generateArgument(\Prophecy\Doubler\Generator\Node\ArgumentNode $arg) { $argument = '$' . $arg->getName(); @@ -43826,6 +44439,8 @@ final class ReturnTypeNode extends \Prophecy\Doubler\Generator\Node\TypeNodeAbst } /** * @deprecated use hasReturnStatement + * + * @return bool */ public function isVoid() { @@ -43843,7 +44458,7 @@ namespace Prophecy\Doubler\Generator\Node; use Prophecy\Exception\Doubler\DoubleException; abstract class TypeNodeAbstract { - /** @var string[] */ + /** @var array */ protected $types = []; public function __construct(string ...$types) { @@ -43857,10 +44472,16 @@ abstract class TypeNodeAbstract { return isset($this->types['null']) && \count($this->types) <= 2; } + /** + * @return list + */ public function getTypes() : array { return \array_values($this->types); } + /** + * @return list + */ public function getNonNullTypes() : array { $nonNullTypes = $this->types; @@ -43903,6 +44524,9 @@ abstract class TypeNodeAbstract return $this->prefixWithNsSeparator($type); } } + /** + * @return void + */ protected function guardIsValidType() { if (\PHP_VERSION_ID < 80200) { @@ -43960,6 +44584,11 @@ namespace Prophecy\Doubler\Generator; */ final class TypeHintReference { + /** + * @param string $type + * + * @return bool + */ public function isBuiltInParamTypeHint($type) { switch ($type) { @@ -43979,6 +44608,11 @@ final class TypeHintReference return \false; } } + /** + * @param string $type + * + * @return bool + */ public function isBuiltInReturnTypeHint($type) { if ($type === 'void') { @@ -44012,15 +44646,22 @@ use ReflectionClass; class LazyDouble { private $doubler; + /** + * @var ReflectionClass|null + */ private $class; + /** + * @var list> + */ private $interfaces = array(); + /** + * @var array|null + */ private $arguments = null; - private $double; /** - * Initializes lazy double. - * - * @param Doubler $doubler + * @var DoubleInterface|null */ + private $double; public function __construct(\Prophecy\Doubler\Doubler $doubler) { $this->doubler = $doubler; @@ -44028,7 +44669,9 @@ class LazyDouble /** * Tells doubler to use specific class as parent one for double. * - * @param string|ReflectionClass $class + * @param string|ReflectionClass $class + * + * @return void * * @throws \Prophecy\Exception\Doubler\ClassNotFoundException * @throws \Prophecy\Exception\Doubler\DoubleException @@ -44049,7 +44692,9 @@ class LazyDouble /** * Tells doubler to implement specific interface with double. * - * @param string|ReflectionClass $interface + * @param string|ReflectionClass $interface + * + * @return void * * @throws \Prophecy\Exception\Doubler\InterfaceNotFoundException * @throws \Prophecy\Exception\Doubler\DoubleException @@ -44070,7 +44715,9 @@ class LazyDouble /** * Sets constructor arguments. * - * @param array $arguments + * @param array|null $arguments + * + * @return void */ public function setArguments(array $arguments = null) { @@ -44113,12 +44760,15 @@ use ReflectionClass; */ class NameGenerator { + /** + * @var int + */ private static $counter = 1; /** * Generates name. * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces + * @param ReflectionClass|null $class + * @param ReflectionClass[] $interfaces * * @return string */ @@ -44156,16 +44806,28 @@ class UnexpectedCallException extends ObjectProphecyException { private $methodName; private $arguments; + /** + * @param string $message + * @param ObjectProphecy $objectProphecy + * @param string $methodName + * @param array $arguments + */ public function __construct($message, ObjectProphecy $objectProphecy, $methodName, array $arguments) { parent::__construct($message, $objectProphecy); $this->methodName = $methodName; $this->arguments = $arguments; } + /** + * @return string + */ public function getMethodName() { return $this->methodName; } + /** + * @return array + */ public function getArguments() { return $this->arguments; @@ -44187,11 +44849,18 @@ use Prophecy\Doubler\Generator\Node\ClassNode; class ClassCreatorException extends \RuntimeException implements \Prophecy\Exception\Doubler\DoublerException { private $node; + /** + * @param string $message + * @param ClassNode $node + */ public function __construct($message, ClassNode $node) { parent::__construct($message); $this->node = $node; } + /** + * @return ClassNode + */ public function getClassNode() { return $this->node; @@ -44213,11 +44882,18 @@ use ReflectionClass; class ClassMirrorException extends \RuntimeException implements \Prophecy\Exception\Doubler\DoublerException { private $class; + /** + * @param string $message + * @param ReflectionClass $class + */ public function __construct($message, ReflectionClass $class) { parent::__construct($message); $this->class = $class; } + /** + * @return ReflectionClass + */ public function getReflectedClass() { return $this->class; @@ -44247,6 +44923,9 @@ class ClassNotFoundException extends \Prophecy\Exception\Doubler\DoubleException parent::__construct($message); $this->classname = $classname; } + /** + * @return string + */ public function getClassname() { return $this->classname; @@ -44298,6 +44977,9 @@ namespace Prophecy\Exception\Doubler; class InterfaceNotFoundException extends \Prophecy\Exception\Doubler\ClassNotFoundException { + /** + * @return string + */ public function getInterfaceName() { return $this->getClassname(); @@ -44349,6 +45031,7 @@ class MethodNotExtendableException extends \Prophecy\Exception\Doubler\DoubleExc */ namespace Prophecy\Exception\Doubler; +use Prophecy\Argument\ArgumentsWildcard; class MethodNotFoundException extends \Prophecy\Exception\Doubler\DoubleException { /** @@ -44360,14 +45043,14 @@ class MethodNotFoundException extends \Prophecy\Exception\Doubler\DoubleExceptio */ private $methodName; /** - * @var array + * @var null|ArgumentsWildcard|array */ private $arguments; /** * @param string $message * @param string|object $classname * @param string $methodName - * @param null|Argument\ArgumentsWildcard|array $arguments + * @param null|ArgumentsWildcard|array $arguments */ public function __construct($message, $classname, $methodName, $arguments = null) { @@ -44376,14 +45059,23 @@ class MethodNotFoundException extends \Prophecy\Exception\Doubler\DoubleExceptio $this->methodName = $methodName; $this->arguments = $arguments; } + /** + * @return object|string + */ public function getClassname() { return $this->classname; } + /** + * @return string + */ public function getMethodName() { return $this->methodName; } + /** + * @return null|ArgumentsWildcard|array + */ public function getArguments() { return $this->arguments; @@ -44416,10 +45108,16 @@ class ReturnByReferenceException extends \Prophecy\Exception\Doubler\DoubleExcep $this->classname = $classname; $this->methodName = $methodName; } + /** + * @return string + */ public function getClassname() { return $this->classname; } + /** + * @return string + */ public function getMethodName() { return $this->methodName; @@ -44476,8 +45174,17 @@ namespace Prophecy\Exception\Prediction; use Prophecy\Prophecy\ObjectProphecy; class AggregateException extends \RuntimeException implements \Prophecy\Exception\Prediction\PredictionException { + /** + * @var list + */ private $exceptions = array(); + /** + * @var ObjectProphecy|null + */ private $objectProphecy; + /** + * @return void + */ public function append(\Prophecy\Exception\Prediction\PredictionException $exception) { $message = $exception->getMessage(); @@ -44487,18 +45194,23 @@ class AggregateException extends \RuntimeException implements \Prophecy\Exceptio $this->exceptions[] = $exception; } /** - * @return PredictionException[] + * @return list */ public function getExceptions() { return $this->exceptions; } + /** + * @param ObjectProphecy $objectProphecy + * + * @return void + */ public function setObjectProphecy(ObjectProphecy $objectProphecy) { $this->objectProphecy = $objectProphecy; } /** - * @return ObjectProphecy + * @return ObjectProphecy|null */ public function getObjectProphecy() { @@ -44571,15 +45283,25 @@ interface PredictionException extends Exception */ namespace Prophecy\Exception\Prediction; +use Prophecy\Call\Call; use Prophecy\Prophecy\MethodProphecy; class UnexpectedCallsCountException extends \Prophecy\Exception\Prediction\UnexpectedCallsException { private $expectedCount; + /** + * @param string $message + * @param MethodProphecy $methodProphecy + * @param int $count + * @param list $calls + */ public function __construct($message, MethodProphecy $methodProphecy, $count, array $calls) { parent::__construct($message, $methodProphecy, $calls); $this->expectedCount = \intval($count); } + /** + * @return int + */ public function getExpectedCount() { return $this->expectedCount; @@ -44597,16 +45319,25 @@ class UnexpectedCallsCountException extends \Prophecy\Exception\Prediction\Unexp */ namespace Prophecy\Exception\Prediction; +use Prophecy\Call\Call; use Prophecy\Prophecy\MethodProphecy; use Prophecy\Exception\Prophecy\MethodProphecyException; class UnexpectedCallsException extends MethodProphecyException implements \Prophecy\Exception\Prediction\PredictionException { private $calls = array(); + /** + * @param string $message + * @param MethodProphecy $methodProphecy + * @param list $calls + */ public function __construct($message, MethodProphecy $methodProphecy, array $calls) { parent::__construct($message, $methodProphecy); $this->calls = $calls; } + /** + * @return list + */ public function getCalls() { return $this->calls; @@ -44628,6 +45359,9 @@ use Prophecy\Prophecy\MethodProphecy; class MethodProphecyException extends \Prophecy\Exception\Prophecy\ObjectProphecyException { private $methodProphecy; + /** + * @param string $message + */ public function __construct($message, MethodProphecy $methodProphecy) { parent::__construct($message, $methodProphecy->getObjectProphecy()); @@ -44657,13 +45391,17 @@ use Prophecy\Prophecy\ObjectProphecy; class ObjectProphecyException extends \RuntimeException implements \Prophecy\Exception\Prophecy\ProphecyException { private $objectProphecy; + /** + * @param string $message + * @param ObjectProphecy $objectProphecy + */ public function __construct($message, ObjectProphecy $objectProphecy) { parent::__construct($message); $this->objectProphecy = $objectProphecy; } /** - * @return ObjectProphecy + * @return ObjectProphecy */ public function getObjectProphecy() { @@ -44698,7 +45436,6 @@ interface ProphecyException extends Exception */ namespace Prophecy\PhpDocumentor; -use PHPUnit\phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; use PHPUnit\phpDocumentor\Reflection\DocBlock\Tags\Method; /** * @author Théo FIDRY @@ -44707,6 +45444,9 @@ use PHPUnit\phpDocumentor\Reflection\DocBlock\Tags\Method; */ final class ClassAndInterfaceTagRetriever implements \Prophecy\PhpDocumentor\MethodTagRetrieverInterface { + /** + * @var MethodTagRetrieverInterface + */ private $classRetriever; public function __construct(\Prophecy\PhpDocumentor\MethodTagRetrieverInterface $classRetriever = null) { @@ -44714,21 +45454,16 @@ final class ClassAndInterfaceTagRetriever implements \Prophecy\PhpDocumentor\Met $this->classRetriever = $classRetriever; return; } - $this->classRetriever = \class_exists('PHPUnit\\phpDocumentor\\Reflection\\DocBlockFactory') && \class_exists('PHPUnit\\phpDocumentor\\Reflection\\Types\\ContextFactory') ? new \Prophecy\PhpDocumentor\ClassTagRetriever() : new \Prophecy\PhpDocumentor\LegacyClassTagRetriever(); + $this->classRetriever = new \Prophecy\PhpDocumentor\ClassTagRetriever(); } - /** - * @param \ReflectionClass $reflectionClass - * - * @return LegacyMethodTag[]|Method[] - */ public function getTagList(\ReflectionClass $reflectionClass) { return \array_merge($this->classRetriever->getTagList($reflectionClass), $this->getInterfacesTagList($reflectionClass)); } /** - * @param \ReflectionClass $reflectionClass + * @param \ReflectionClass $reflectionClass * - * @return LegacyMethodTag[]|Method[] + * @return list */ private function getInterfacesTagList(\ReflectionClass $reflectionClass) { @@ -44769,11 +45504,6 @@ final class ClassTagRetriever implements \Prophecy\PhpDocumentor\MethodTagRetrie $this->docBlockFactory = DocBlockFactory::createInstance(); $this->contextFactory = new ContextFactory(); } - /** - * @param \ReflectionClass $reflectionClass - * - * @return Method[] - */ public function getTagList(\ReflectionClass $reflectionClass) { try { @@ -44802,39 +45532,6 @@ final class ClassTagRetriever implements \Prophecy\PhpDocumentor\MethodTagRetrie */ namespace Prophecy\PhpDocumentor; -use PHPUnit\phpDocumentor\Reflection\DocBlock; -use PHPUnit\phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; -/** - * @author Théo FIDRY - * - * @internal - */ -final class LegacyClassTagRetriever implements \Prophecy\PhpDocumentor\MethodTagRetrieverInterface -{ - /** - * @param \ReflectionClass $reflectionClass - * - * @return LegacyMethodTag[] - */ - public function getTagList(\ReflectionClass $reflectionClass) - { - $phpdoc = new DocBlock($reflectionClass->getDocComment()); - return $phpdoc->getTagsByName('method'); - } -} - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace Prophecy\PhpDocumentor; - -use PHPUnit\phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; use PHPUnit\phpDocumentor\Reflection\DocBlock\Tags\Method; /** * @author Théo FIDRY @@ -44844,9 +45541,9 @@ use PHPUnit\phpDocumentor\Reflection\DocBlock\Tags\Method; interface MethodTagRetrieverInterface { /** - * @param \ReflectionClass $reflectionClass + * @param \ReflectionClass $reflectionClass * - * @return LegacyMethodTag[]|Method[] + * @return list */ public function getTagList(\ReflectionClass $reflectionClass); } @@ -44870,31 +45567,17 @@ use Prophecy\Argument\Token\AnyValuesToken; use Prophecy\Util\StringUtil; use Prophecy\Exception\Prediction\NoCallsException; /** - * Call prediction. + * Tests that there was at least one call. * * @author Konstantin Kudryashov */ class CallPrediction implements \Prophecy\Prediction\PredictionInterface { private $util; - /** - * Initializes prediction. - * - * @param StringUtil $util - */ public function __construct(StringUtil $util = null) { $this->util = $util ?: new StringUtil(); } - /** - * Tests that there was at least one call. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\NoCallsException - */ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) { if (\count($calls)) { @@ -44927,8 +45610,7 @@ use Prophecy\Argument\Token\AnyValuesToken; use Prophecy\Util\StringUtil; use Prophecy\Exception\Prediction\UnexpectedCallsCountException; /** - * Prediction interface. - * Predictions are logical test blocks, tied to `should...` keyword. + * Tests that there was exact amount of calls made. * * @author Konstantin Kudryashov */ @@ -44937,25 +45619,13 @@ class CallTimesPrediction implements \Prophecy\Prediction\PredictionInterface private $times; private $util; /** - * Initializes prediction. - * * @param int $times - * @param StringUtil $util */ public function __construct($times, StringUtil $util = null) { $this->times = \intval($times); $this->util = $util ?: new StringUtil(); } - /** - * Tests that there was exact amount of calls made. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\UnexpectedCallsCountException - */ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) { if ($this->times == \count($calls)) { @@ -44991,7 +45661,7 @@ use Prophecy\Exception\InvalidArgumentException; use Closure; use ReflectionFunction; /** - * Callback prediction. + * Executes preset callback. * * @author Konstantin Kudryashov */ @@ -44999,8 +45669,6 @@ class CallbackPrediction implements \Prophecy\Prediction\PredictionInterface { private $callback; /** - * Initializes callback prediction. - * * @param callable $callback Custom callback * * @throws \Prophecy\Exception\InvalidArgumentException @@ -45012,18 +45680,11 @@ class CallbackPrediction implements \Prophecy\Prediction\PredictionInterface } $this->callback = $callback; } - /** - * Executes preset callback. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - */ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) { $callback = $this->callback; if ($callback instanceof Closure && \method_exists('Closure', 'bind') && (new ReflectionFunction($callback))->getClosureThis() !== null) { - $callback = Closure::bind($callback, $object); + $callback = Closure::bind($callback, $object) ?? $this->callback; } \call_user_func($callback, $calls, $object, $method); } @@ -45046,31 +45707,17 @@ use Prophecy\Prophecy\MethodProphecy; use Prophecy\Util\StringUtil; use Prophecy\Exception\Prediction\UnexpectedCallsException; /** - * No calls prediction. + * Tests that there were no calls made. * * @author Konstantin Kudryashov */ class NoCallsPrediction implements \Prophecy\Prediction\PredictionInterface { private $util; - /** - * Initializes prediction. - * - * @param null|StringUtil $util - */ public function __construct(StringUtil $util = null) { $this->util = $util ?: new StringUtil(); } - /** - * Tests that there were no calls made. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\UnexpectedCallsException - */ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) { if (!\count($calls)) { @@ -45093,6 +45740,7 @@ class NoCallsPrediction implements \Prophecy\Prediction\PredictionInterface namespace Prophecy\Prediction; use Prophecy\Call\Call; +use Prophecy\Exception\Prediction\PredictionException; use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Prophecy\MethodProphecy; /** @@ -45107,10 +45755,10 @@ interface PredictionInterface * Tests that double fulfilled prediction. * * @param Call[] $calls - * @param ObjectProphecy $object + * @param ObjectProphecy $object * @param MethodProphecy $method * - * @throws object + * @throws PredictionException * @return void */ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method); @@ -45133,7 +45781,7 @@ use Prophecy\Exception\InvalidArgumentException; use Closure; use ReflectionFunction; /** - * Callback promise. + * Evaluates promise callback. * * @author Konstantin Kudryashov */ @@ -45154,20 +45802,11 @@ class CallbackPromise implements \Prophecy\Promise\PromiseInterface } $this->callback = $callback; } - /** - * Evaluates promise callback. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return mixed - */ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) { $callback = $this->callback; if ($callback instanceof Closure && \method_exists('Closure', 'bind') && (new ReflectionFunction($callback))->getClosureThis() !== null) { - $callback = Closure::bind($callback, $object); + $callback = Closure::bind($callback, $object) ?? $this->callback; } return \call_user_func($callback, $args, $object, $method); } @@ -45197,9 +45836,9 @@ interface PromiseInterface /** * Evaluates promise. * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method * * @return mixed */ @@ -45221,7 +45860,7 @@ use Prophecy\Exception\InvalidArgumentException; use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Prophecy\MethodProphecy; /** - * Return argument promise. + * Returns nth argument if has one, null otherwise. * * @author Konstantin Kudryashov */ @@ -45245,15 +45884,6 @@ class ReturnArgumentPromise implements \Prophecy\Promise\PromiseInterface } $this->index = $index; } - /** - * Returns nth argument if has one, null otherwise. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return null|mixed - */ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) { return \count($args) > $this->index ? $args[$this->index] : null; @@ -45274,7 +45904,7 @@ namespace Prophecy\Promise; use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Prophecy\MethodProphecy; /** - * Return promise. + * Returns saved values one by one until last one, then continuously returns last value. * * @author Konstantin Kudryashov */ @@ -45284,21 +45914,12 @@ class ReturnPromise implements \Prophecy\Promise\PromiseInterface /** * Initializes promise. * - * @param array $returnValues Array of values + * @param array $returnValues Array of values */ public function __construct(array $returnValues) { $this->returnValues = $returnValues; } - /** - * Returns saved values one by one until last one, then continuously returns last value. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return mixed - */ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) { $value = \array_shift($this->returnValues); @@ -45326,7 +45947,7 @@ use Prophecy\Prophecy\MethodProphecy; use Prophecy\Exception\InvalidArgumentException; use ReflectionClass; /** - * Throw promise. + * Throws predefined exception. * * @author Konstantin Kudryashov */ @@ -45334,15 +45955,17 @@ class ThrowPromise implements \Prophecy\Promise\PromiseInterface { private $exception; /** - * @var \Doctrine\Instantiator\Instantiator + * @var Instantiator|null */ private $instantiator; /** * Initializes promise. * - * @param string|\Exception|\Throwable $exception Exception class name or instance + * @param string|\Throwable $exception Exception class name or instance * * @throws \Prophecy\Exception\InvalidArgumentException + * + * @phpstan-param class-string<\Throwable>|\Throwable $exception */ public function __construct($exception) { @@ -45355,22 +45978,13 @@ class ThrowPromise implements \Prophecy\Promise\PromiseInterface } $this->exception = $exception; } - /** - * Throws predefined exception. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws object - */ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) { if (\is_string($this->exception)) { $classname = $this->exception; $reflection = new ReflectionClass($classname); $constructor = $reflection->getConstructor(); - if ($constructor->isPublic() && 0 == $constructor->getNumberOfRequiredParameters()) { + if ($constructor === null || $constructor->isPublic() && 0 == $constructor->getNumberOfRequiredParameters()) { throw $reflection->newInstance(); } if (!$this->instantiator) { @@ -45403,6 +46017,7 @@ class ThrowPromise implements \Prophecy\Promise\PromiseInterface namespace Prophecy\Prophecy; use Prophecy\Argument; +use Prophecy\Exception\Prediction\PredictionException; use Prophecy\Prophet; use Prophecy\Promise; use Prophecy\Prediction; @@ -45410,7 +46025,6 @@ use Prophecy\Exception\Doubler\MethodNotFoundException; use Prophecy\Exception\InvalidArgumentException; use Prophecy\Exception\Prophecy\MethodProphecyException; use ReflectionNamedType; -use ReflectionType; use ReflectionUnionType; /** * Method prophecy. @@ -45421,22 +46035,40 @@ class MethodProphecy { private $objectProphecy; private $methodName; + /** + * @var Argument\ArgumentsWildcard + */ private $argumentsWildcard; + /** + * @var Promise\PromiseInterface|null + */ private $promise; + /** + * @var Prediction\PredictionInterface|null + */ private $prediction; + /** + * @var list + */ private $checkedPredictions = array(); + /** + * @var bool + */ private $bound = \false; + /** + * @var bool + */ private $voidReturnType = \false; /** - * Initializes method prophecy. - * - * @param ObjectProphecy $objectProphecy - * @param string $methodName - * @param null|Argument\ArgumentsWildcard|array $arguments + * @param ObjectProphecy $objectProphecy + * @param string $methodName + * @param Argument\ArgumentsWildcard|array $arguments * * @throws \Prophecy\Exception\Doubler\MethodNotFoundException If method not found + * + * @internal */ - public function __construct(\Prophecy\Prophecy\ObjectProphecy $objectProphecy, $methodName, $arguments = null) + public function __construct(\Prophecy\Prophecy\ObjectProphecy $objectProphecy, $methodName, $arguments) { $double = $objectProphecy->reveal(); if (!\method_exists($double, $methodName)) { @@ -45448,9 +46080,7 @@ class MethodProphecy if ($reflectedMethod->isFinal()) { throw new MethodProphecyException(\sprintf("Can not add prophecy for a method `%s::%s()`\n" . "as it is a final method.", \get_class($double), $methodName), $this); } - if (null !== $arguments) { - $this->withArguments($arguments); - } + $this->withArguments($arguments); $hasTentativeReturnType = \method_exists($reflectedMethod, 'hasTentativeReturnType') && $reflectedMethod->hasTentativeReturnType(); if (\true === $reflectedMethod->hasReturnType() || $hasTentativeReturnType) { if ($hasTentativeReturnType) { @@ -45462,8 +46092,10 @@ class MethodProphecy $types = [$reflectionType]; } elseif ($reflectionType instanceof ReflectionUnionType) { $types = $reflectionType->getTypes(); + } else { + throw new MethodProphecyException(\sprintf("Can not add prophecy for a method `%s::%s()`\nas its return type is not supported by Prophecy yet.", \get_class($double), $methodName), $this); } - $types = \array_map(function (ReflectionType $type) { + $types = \array_map(function (ReflectionNamedType $type) { return $type->getName(); }, $types); \usort($types, static function (string $type1, string $type2) { @@ -45522,7 +46154,7 @@ class MethodProphecy /** * Sets argument wildcard. * - * @param array|Argument\ArgumentsWildcard $arguments + * @param array|Argument\ArgumentsWildcard $arguments * * @return $this * @@ -45575,7 +46207,7 @@ class MethodProphecy return $this->will(new Promise\ReturnPromise(\func_get_args())); } /** - * @param array $items + * @param array $items * @param mixed $return * * @return $this @@ -45617,9 +46249,11 @@ class MethodProphecy * * @see \Prophecy\Promise\ThrowPromise * - * @param string|\Exception $exception Exception class or instance + * @param string|\Throwable $exception Exception class or instance * * @return $this + * + * @phpstan-param class-string<\Throwable>|\Throwable $exception */ public function willThrow($exception) { @@ -45673,7 +46307,7 @@ class MethodProphecy * * @see \Prophecy\Prediction\CallTimesPrediction * - * @param $count + * @param int $count * * @return $this */ @@ -45700,6 +46334,7 @@ class MethodProphecy * @return $this * * @throws \Prophecy\Exception\InvalidArgumentException + * @throws PredictionException */ public function shouldHave($prediction) { @@ -45728,6 +46363,8 @@ class MethodProphecy * @see \Prophecy\Prediction\CallPrediction * * @return $this + * + * @throws PredictionException */ public function shouldHaveBeenCalled() { @@ -45739,6 +46376,8 @@ class MethodProphecy * @see \Prophecy\Prediction\NoCallsPrediction * * @return $this + * + * @throws PredictionException */ public function shouldNotHaveBeenCalled() { @@ -45782,6 +46421,10 @@ class MethodProphecy } /** * Checks currently registered [with should(...)] prediction. + * + * @return void + * + * @throws PredictionException */ public function checkPrediction() { @@ -45811,7 +46454,7 @@ class MethodProphecy /** * Returns predictions that were checked on this object. * - * @return Prediction\PredictionInterface[] + * @return list */ public function getCheckedPredictions() { @@ -45820,7 +46463,7 @@ class MethodProphecy /** * Returns object prophecy this method prophecy is tied to. * - * @return ObjectProphecy + * @return ObjectProphecy */ public function getObjectProphecy() { @@ -45851,6 +46494,9 @@ class MethodProphecy { return $this->voidReturnType; } + /** + * @return void + */ private function bindToObjectProphecy() { if ($this->bound) { @@ -45872,8 +46518,9 @@ class MethodProphecy */ namespace Prophecy\Prophecy; +use Prophecy\Comparator\FactoryProvider; use PHPUnit\SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; +use PHPUnit\SebastianBergmann\Comparator\Factory as ComparatorFactory; use Prophecy\Call\Call; use Prophecy\Doubler\LazyDouble; use Prophecy\Argument\ArgumentsWildcard; @@ -45883,9 +46530,10 @@ use Prophecy\Exception\Prophecy\MethodProphecyException; use Prophecy\Exception\Prediction\AggregateException; use Prophecy\Exception\Prediction\PredictionException; /** - * Object prophecy. - * * @author Konstantin Kudryashov + * + * @template-covariant T of object + * @template-implements ProphecyInterface */ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface { @@ -45894,23 +46542,15 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface private $revealer; private $comparatorFactory; /** - * @var MethodProphecy[][] + * @var array> */ private $methodProphecies = array(); - /** - * Initializes object prophecy. - * - * @param LazyDouble $lazyDouble - * @param CallCenter $callCenter - * @param RevealerInterface $revealer - * @param ComparatorFactory $comparatorFactory - */ public function __construct(LazyDouble $lazyDouble, CallCenter $callCenter = null, \Prophecy\Prophecy\RevealerInterface $revealer = null, ComparatorFactory $comparatorFactory = null) { $this->lazyDouble = $lazyDouble; $this->callCenter = $callCenter ?: new CallCenter(); $this->revealer = $revealer ?: new \Prophecy\Prophecy\Revealer(); - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + $this->comparatorFactory = $comparatorFactory ?: FactoryProvider::getInstance(); } /** * Forces double to extend specific class. @@ -45918,6 +46558,10 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * @param string $class * * @return $this + * + * @template U + * @phpstan-param class-string $class + * @phpstan-this-out static */ public function willExtend($class) { @@ -45930,6 +46574,10 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * @param string $interface * * @return $this + * + * @template U + * @phpstan-param class-string $interface + * @phpstan-this-out static */ public function willImplement($interface) { @@ -45939,7 +46587,7 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface /** * Sets constructor arguments. * - * @param array $arguments + * @param array $arguments * * @return $this */ @@ -45954,11 +46602,13 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * @return object * * @throws \Prophecy\Exception\Prophecy\ObjectProphecyException If double doesn't implement needed interface + * + * @phpstan-return T */ public function reveal() { $double = $this->lazyDouble->getInstance(); - if (null === $double || !$double instanceof \Prophecy\Prophecy\ProphecySubjectInterface) { + if (!$double instanceof \Prophecy\Prophecy\ProphecySubjectInterface) { throw new ObjectProphecyException("Generated double must implement ProphecySubjectInterface, but it does not.\n" . 'It seems you have wrongly configured doubler without required ClassPatch.', $this); } $double->setProphecy($this); @@ -45969,15 +46619,10 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * * @param MethodProphecy $methodProphecy * - * @throws \Prophecy\Exception\Prophecy\MethodProphecyException If method prophecy doesn't - * have arguments wildcard + * @return void */ public function addMethodProphecy(\Prophecy\Prophecy\MethodProphecy $methodProphecy) { - $argumentsWildcard = $methodProphecy->getArgumentsWildcard(); - if (null === $argumentsWildcard) { - throw new MethodProphecyException(\sprintf("Can not add prophecy for a method `%s::%s()`\n" . "as you did not specify arguments wildcard for it.", \get_class($this->reveal()), $methodProphecy->getMethodName()), $methodProphecy); - } $methodName = \strtolower($methodProphecy->getMethodName()); if (!isset($this->methodProphecies[$methodName])) { $this->methodProphecies[$methodName] = array(); @@ -45989,7 +46634,9 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * * @param null|string $methodName * - * @return MethodProphecy[] + * @return MethodProphecy[]|array + * + * @phpstan-return ($methodName is string ? list : array>) */ public function getMethodProphecies($methodName = null) { @@ -46006,13 +46653,14 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * Makes specific method call. * * @param string $methodName - * @param array $arguments + * @param array $arguments * * @return mixed */ public function makeProphecyMethodCall($methodName, array $arguments) { $arguments = $this->revealer->reveal($arguments); + \assert(\is_array($arguments)); $return = $this->callCenter->makeCall($this, $methodName, $arguments); return $this->revealer->reveal($return); } @@ -46022,7 +46670,7 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * @param string $methodName * @param ArgumentsWildcard $wildcard * - * @return Call[] + * @return list */ public function findProphecyMethodCalls($methodName, ArgumentsWildcard $wildcard) { @@ -46031,6 +46679,8 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface /** * Checks that registered method predictions do not fail. * + * @return void + * * @throws \Prophecy\Exception\Prediction\AggregateException If any of registered predictions fail * @throws \Prophecy\Exception\Call\UnexpectedCallException */ @@ -46056,13 +46706,15 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * Creates new method prophecy using specified method name and arguments. * * @param string $methodName - * @param array $arguments + * @param array $arguments * * @return MethodProphecy */ public function __call($methodName, array $arguments) { - $arguments = new ArgumentsWildcard($this->revealer->reveal($arguments)); + $arguments = $this->revealer->reveal($arguments); + \assert(\is_array($arguments)); + $arguments = new ArgumentsWildcard($arguments); foreach ($this->getMethodProphecies($methodName) as $prophecy) { $argumentsWildcard = $prophecy->getArgumentsWildcard(); $comparator = $this->comparatorFactory->getComparatorFor($argumentsWildcard, $arguments); @@ -46090,6 +46742,8 @@ class ObjectProphecy implements \Prophecy\Prophecy\ProphecyInterface * * @param string $name * @param mixed $value + * + * @return void */ public function __set($name, $value) { @@ -46112,6 +46766,8 @@ namespace Prophecy\Prophecy; * Core Prophecy interface. * * @author Konstantin Kudryashov + * + * @template-covariant T of object */ interface ProphecyInterface { @@ -46119,6 +46775,8 @@ interface ProphecyInterface * Reveals prophecy object (double) . * * @return object + * + * @phpstan-return T */ public function reveal(); } @@ -46144,13 +46802,15 @@ interface ProphecySubjectInterface /** * Sets subject prophecy. * - * @param ProphecyInterface $prophecy + * @param ProphecyInterface $prophecy + * + * @return void */ public function setProphecy(\Prophecy\Prophecy\ProphecyInterface $prophecy); /** * Returns subject prophecy. * - * @return ProphecyInterface + * @return ProphecyInterface */ public function getProphecy(); } @@ -46252,20 +46912,16 @@ use Prophecy\Exception\Prediction\AggregateException; */ class Prophet { + /** + * @var Doubler + */ private $doubler; private $revealer; private $util; /** - * @var ObjectProphecy[] + * @var list> */ private $prophecies = array(); - /** - * Initializes Prophet. - * - * @param null|Doubler $doubler - * @param null|RevealerInterface $revealer - * @param null|StringUtil $util - */ public function __construct(Doubler $doubler = null, RevealerInterface $revealer = null, StringUtil $util = null) { if (null === $doubler) { @@ -46289,6 +46945,10 @@ class Prophet * @param null|string $classOrInterface Class or interface name * * @return ObjectProphecy + * + * @template T of object + * @phpstan-param class-string|null $classOrInterface + * @phpstan-return ObjectProphecy */ public function prophesize($classOrInterface = null) { @@ -46304,7 +46964,7 @@ class Prophet /** * Returns all created object prophecies. * - * @return ObjectProphecy[] + * @return list> */ public function getProphecies() { @@ -46322,6 +46982,8 @@ class Prophet /** * Checks all predictions defined by prophecies of this Prophet. * + * @return void + * * @throws Exception\Prediction\AggregateException If any prediction fails */ public function checkPredictions() @@ -46385,7 +47047,7 @@ class ExportUtil * and public properties. * * @param mixed $value - * @return array + * @return array */ public static function toArray($value) { @@ -46442,7 +47104,7 @@ class ExportUtil return "{$value}.0"; } if (\is_resource($value)) { - return \sprintf('resource(%d) of type (%s)', $value, \get_resource_type($value)); + return \sprintf('resource(%d) of type (%s)', (int) $value, \get_resource_type($value)); } if (\is_string($value)) { // Match for most non printable chars somewhat taking multibyte chars into account @@ -46542,7 +47204,7 @@ class StringUtil if (\is_object($value)) { return $exportObject ? \Prophecy\Util\ExportUtil::export($value) : \sprintf('%s#%s', \get_class($value), \spl_object_id($value)); } - if (\true === $value || \false === $value) { + if (\is_bool($value)) { return $value ? 'true' : 'false'; } if (\is_string($value)) { @@ -46555,6 +47217,7 @@ class StringUtil if (null === $value) { return 'null'; } + \assert(\is_int($value) || \is_float($value)); return (string) $value; } /** @@ -46576,7 +47239,7 @@ class StringUtil - This Schema file defines the rules by which the XML configuration file of PHPUnit 9.5 may be structured. + This Schema file defines the rules by which the XML configuration file of PHPUnit 9.6 may be structured. @@ -46631,7 +47294,7 @@ class StringUtil - + @@ -46963,6 +47626,7 @@ use Countable; use DOMAttr; use DOMDocument; use DOMElement; +use Generator; use PHPUnit\Framework\Constraint\ArrayHasKey; use PHPUnit\Framework\Constraint\Callback; use PHPUnit\Framework\Constraint\ClassHasAttribute; @@ -46998,6 +47662,7 @@ use PHPUnit\Framework\Constraint\LogicalOr; use PHPUnit\Framework\Constraint\LogicalXor; use PHPUnit\Framework\Constraint\ObjectEquals; use PHPUnit\Framework\Constraint\ObjectHasAttribute; +use PHPUnit\Framework\Constraint\ObjectHasProperty; use PHPUnit\Framework\Constraint\RegularExpression; use PHPUnit\Framework\Constraint\SameSize; use PHPUnit\Framework\Constraint\StringContains; @@ -47142,6 +47807,9 @@ abstract class Assert */ public static function assertCount(int $expectedCount, $haystack, string $message = '') : void { + if ($haystack instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $haystack parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } if (!$haystack instanceof Countable && !is_iterable($haystack)) { throw \PHPUnit\Framework\InvalidArgumentException::create(2, 'countable or iterable'); } @@ -47158,6 +47826,9 @@ abstract class Assert */ public static function assertNotCount(int $expectedCount, $haystack, string $message = '') : void { + if ($haystack instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $haystack parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } if (!$haystack instanceof Countable && !is_iterable($haystack)) { throw \PHPUnit\Framework\InvalidArgumentException::create(2, 'countable or iterable'); } @@ -47269,6 +47940,9 @@ abstract class Assert */ public static function assertEmpty($actual, string $message = '') : void { + if ($actual instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $actual parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } static::assertThat($actual, static::isEmpty(), $message); } /** @@ -47281,6 +47955,9 @@ abstract class Assert */ public static function assertNotEmpty($actual, string $message = '') : void { + if ($actual instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $actual parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } static::assertThat($actual, static::logicalNot(static::isEmpty()), $message); } /** @@ -47885,9 +48562,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertClassHasAttribute(string $attributeName, string $className, string $message = '') : void { + self::createWarning('assertClassHasAttribute() is deprecated and will be removed in PHPUnit 10.'); if (!self::isValidClassAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47902,9 +48582,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertClassNotHasAttribute(string $attributeName, string $className, string $message = '') : void { + self::createWarning('assertClassNotHasAttribute() is deprecated and will be removed in PHPUnit 10.'); if (!self::isValidClassAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47919,9 +48602,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertClassHasStaticAttribute(string $attributeName, string $className, string $message = '') : void { + self::createWarning('assertClassHasStaticAttribute() is deprecated and will be removed in PHPUnit 10.'); if (!self::isValidClassAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47936,9 +48622,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertClassNotHasStaticAttribute(string $attributeName, string $className, string $message = '') : void { + self::createWarning('assertClassNotHasStaticAttribute() is deprecated and will be removed in PHPUnit 10.'); if (!self::isValidClassAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47955,9 +48644,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertObjectHasAttribute(string $attributeName, $object, string $message = '') : void { + self::createWarning('assertObjectHasAttribute() is deprecated and will be removed in PHPUnit 10. Refactor your test to use assertObjectHasProperty() instead.'); if (!self::isValidObjectAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47974,9 +48666,12 @@ abstract class Assert * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws Exception * @throws ExpectationFailedException + * + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 */ public static function assertObjectNotHasAttribute(string $attributeName, $object, string $message = '') : void { + self::createWarning('assertObjectNotHasAttribute() is deprecated and will be removed in PHPUnit 10. Refactor your test to use assertObjectNotHasProperty() instead.'); if (!self::isValidObjectAttributeName($attributeName)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'valid attribute name'); } @@ -47985,6 +48680,24 @@ abstract class Assert } static::assertThat($object, new LogicalNot(new ObjectHasAttribute($attributeName)), $message); } + /** + * Asserts that an object has a specified property. + * + * @throws ExpectationFailedException + */ + public static final function assertObjectHasProperty(string $propertyName, object $object, string $message = '') : void + { + static::assertThat($object, new ObjectHasProperty($propertyName), $message); + } + /** + * Asserts that an object does not have a specified property. + * + * @throws ExpectationFailedException + */ + public static final function assertObjectNotHasProperty(string $propertyName, object $object, string $message = '') : void + { + static::assertThat($object, new LogicalNot(new ObjectHasProperty($propertyName)), $message); + } /** * Asserts that two variables have the same type and value. * Used on objects, it asserts that two variables reference @@ -48409,6 +49122,12 @@ abstract class Assert */ public static function assertSameSize($expected, $actual, string $message = '') : void { + if ($expected instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $expected parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } + if ($actual instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $actual parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } if (!$expected instanceof Countable && !is_iterable($expected)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'countable or iterable'); } @@ -48430,6 +49149,12 @@ abstract class Assert */ public static function assertNotSameSize($expected, $actual, string $message = '') : void { + if ($expected instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $expected parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } + if ($actual instanceof Generator) { + self::createWarning('Passing an argument of type Generator for the $actual parameter is deprecated. Support for this will be removed in PHPUnit 10.'); + } if (!$expected instanceof Countable && !is_iterable($expected)) { throw \PHPUnit\Framework\InvalidArgumentException::create(1, 'countable or iterable'); } @@ -48964,16 +49689,28 @@ abstract class Assert { return static::logicalOr(new IsEqual($value), new GreaterThan($value)); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 + */ public static function classHasAttribute(string $attributeName) : ClassHasAttribute { + self::createWarning('classHasAttribute() is deprecated and will be removed in PHPUnit 10.'); return new ClassHasAttribute($attributeName); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 + */ public static function classHasStaticAttribute(string $attributeName) : ClassHasStaticAttribute { + self::createWarning('classHasStaticAttribute() is deprecated and will be removed in PHPUnit 10.'); return new ClassHasStaticAttribute($attributeName); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4601 + */ public static function objectHasAttribute($attributeName) : ObjectHasAttribute { + self::createWarning('objectHasAttribute() is deprecated and will be removed in PHPUnit 10.'); return new ObjectHasAttribute($attributeName); } public static function identicalTo($value) : IsIdentical @@ -50488,6 +51225,40 @@ if (!function_exists('PHPUnit\\Framework\\assertObjectNotHasAttribute')) { \PHPUnit\Framework\Assert::assertObjectNotHasAttribute(...func_get_args()); } } +if (!function_exists('PHPUnit\\Framework\\assertObjectHasProperty')) { + /** + * Asserts that an object has a specified property. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws Exception + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertObjectHasProperty + */ + function assertObjectHasProperty(string $attributeName, object $object, string $message = '') : void + { + \PHPUnit\Framework\Assert::assertObjectHasProperty(...func_get_args()); + } +} +if (!function_exists('PHPUnit\\Framework\\assertObjectNotHasProperty')) { + /** + * Asserts that an object does not have a specified property. + * + * @throws ExpectationFailedException + * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException + * @throws Exception + * + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * + * @see Assert::assertObjectNotHasProperty + */ + function assertObjectNotHasProperty(string $attributeName, object $object, string $message = '') : void + { + \PHPUnit\Framework\Assert::assertObjectNotHasProperty(...func_get_args()); + } +} if (!function_exists('PHPUnit\\Framework\\assertSame')) { /** * Asserts that two variables have the same type and value. @@ -52468,9 +53239,8 @@ abstract class Constraint implements Countable, SelfDescribing /** * Throws an exception for the given compared value and test description. * - * @param mixed $other evaluated value or object - * @param string $description Additional information about the test - * @param ComparisonFailure $comparisonFailure + * @param mixed $other evaluated value or object + * @param string $description Additional information about the test * * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException * @throws ExpectationFailedException @@ -52685,8 +53455,6 @@ final class IsEqual extends \PHPUnit\Framework\Constraint\Constraint * failure. * * @throws ExpectationFailedException - * - * @return bool */ public function evaluate($other, string $description = '', bool $returnResult = \false) : ?bool { @@ -52965,7 +53733,7 @@ final class IsEqualWithDelta extends \PHPUnit\Framework\Constraint\Constraint */ public function toString() : string { - return sprintf('is equal to %s with delta <%F>>', $this->exporter()->export($this->value), $this->delta); + return sprintf('is equal to %s with delta <%F>', $this->exporter()->export($this->value), $this->delta); } } propertyName = $propertyName; + } + /** + * Returns a string representation of the constraint. + */ + public function toString() : string + { + return sprintf('has property "%s"', $this->propertyName); + } + /** + * Evaluates the constraint for parameter $other. Returns true if the + * constraint is met, false otherwise. + * + * @param mixed $other value or object to evaluate + */ + protected function matches($other) : bool + { + if (!is_object($other)) { + return \false; + } + return (new ReflectionObject($other))->hasProperty($this->propertyName); + } + /** + * Returns the description of the failure. + * + * The beginning of failure messages is "Failed asserting that" in most + * cases. This method should return the second part of that sentence. + * + * @param mixed $other evaluated value or object + */ + protected function failureDescription($other) : string + { + if (is_object($other)) { + return sprintf('object of class "%s" %s', get_class($other), $this->toString()); + } + return sprintf('"%s" (%s) %s', $other, gettype($other), $this->toString()); + } +} + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Framework\Constraint; + use function array_map; use function array_values; use function count; @@ -54952,7 +55792,6 @@ declare (strict_types=1); */ namespace PHPUnit\Framework\Constraint; -use function strlen; use function strpos; use PHPUnit\Framework\InvalidArgumentException; /** @@ -54966,7 +55805,7 @@ final class StringStartsWith extends \PHPUnit\Framework\Constraint\Constraint private $prefix; public function __construct(string $prefix) { - if (strlen($prefix) === 0) { + if ($prefix === '') { throw InvalidArgumentException::create(1, 'non-empty string'); } $this->prefix = $prefix; @@ -55705,15 +56544,15 @@ namespace PHPUnit\Framework; final class ErrorTestCase extends \PHPUnit\Framework\TestCase { /** - * @var bool + * @var ?bool */ protected $backupGlobals = \false; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes = \false; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess = \false; /** @@ -56800,15 +57639,15 @@ namespace PHPUnit\Framework; final class IncompleteTestCase extends \PHPUnit\Framework\TestCase { /** - * @var bool + * @var ?bool */ protected $backupGlobals = \false; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes = \false; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess = \false; /** @@ -57159,6 +57998,8 @@ final class InvocationMocker implements \PHPUnit\Framework\MockObject\Builder\In * @throws MethodParametersAlreadyConfiguredException * * @return $this + * + * @deprecated */ public function withConsecutive(...$arguments) : self { @@ -60505,6 +61346,8 @@ use PHPUnit\Framework\InvalidParameterGroupException; use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit + * + * @deprecated */ final class ConsecutiveParameters implements \PHPUnit\Framework\MockObject\Rule\ParametersRule { @@ -61644,15 +62487,15 @@ namespace PHPUnit\Framework; final class SkippedTestCase extends \PHPUnit\Framework\TestCase { /** - * @var bool + * @var ?bool */ protected $backupGlobals = \false; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes = \false; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess = \false; /** @@ -61900,6 +62743,8 @@ use function setlocale; use function sprintf; use function strpos; use function substr; +use function sys_get_temp_dir; +use function tempnam; use function trim; use function var_export; use PHPUnit\DeepCopy\DeepCopy; @@ -61974,7 +62819,7 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr */ protected $backupGlobalsBlacklist = []; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes; /** @@ -61988,7 +62833,7 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr */ protected $backupStaticAttributesBlacklist = []; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess; /** @@ -62000,7 +62845,7 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr */ protected $providedTests = []; /** - * @var bool + * @var ?bool */ private $runClassInSeparateProcess; /** @@ -62345,16 +63190,16 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr // @codeCoverageIgnoreStart switch ($exception) { case Deprecated::class: - $this->addWarning('Support for using expectException() with PHPUnit\\Framework\\Error\\Deprecated is deprecated and will be removed in PHPUnit 10. Use expectDeprecation() instead.'); + $this->addWarning('Expecting E_DEPRECATED and E_USER_DEPRECATED is deprecated and will no longer be possible in PHPUnit 10.'); break; case Error::class: - $this->addWarning('Support for using expectException() with PHPUnit\\Framework\\Error\\Error is deprecated and will be removed in PHPUnit 10. Use expectError() instead.'); + $this->addWarning('Expecting E_ERROR and E_USER_ERROR is deprecated and will no longer be possible in PHPUnit 10.'); break; case Notice::class: - $this->addWarning('Support for using expectException() with PHPUnit\\Framework\\Error\\Notice is deprecated and will be removed in PHPUnit 10. Use expectNotice() instead.'); + $this->addWarning('Expecting E_STRICT, E_NOTICE, and E_USER_NOTICE is deprecated and will no longer be possible in PHPUnit 10.'); break; case WarningError::class: - $this->addWarning('Support for using expectException() with PHPUnit\\Framework\\Error\\Warning is deprecated and will be removed in PHPUnit 10. Use expectWarning() instead.'); + $this->addWarning('Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10.'); break; } // @codeCoverageIgnoreEnd @@ -62390,52 +63235,100 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr { $this->doesNotPerformAssertions = \true; } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectDeprecation() : void { + $this->addWarning('Expecting E_DEPRECATED and E_USER_DEPRECATED is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectedException = Deprecated::class; } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectDeprecationMessage(string $message) : void { + $this->addWarning('Expecting E_DEPRECATED and E_USER_DEPRECATED is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessage($message); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectDeprecationMessageMatches(string $regularExpression) : void { + $this->addWarning('Expecting E_DEPRECATED and E_USER_DEPRECATED is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessageMatches($regularExpression); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectNotice() : void { + $this->addWarning('Expecting E_STRICT, E_NOTICE, and E_USER_NOTICE is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectedException = Notice::class; } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectNoticeMessage(string $message) : void { + $this->addWarning('Expecting E_STRICT, E_NOTICE, and E_USER_NOTICE is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessage($message); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectNoticeMessageMatches(string $regularExpression) : void { + $this->addWarning('Expecting E_STRICT, E_NOTICE, and E_USER_NOTICE is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessageMatches($regularExpression); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectWarning() : void { + $this->addWarning('Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectedException = WarningError::class; } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectWarningMessage(string $message) : void { + $this->addWarning('Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessage($message); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectWarningMessageMatches(string $regularExpression) : void { + $this->addWarning('Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessageMatches($regularExpression); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectError() : void { + $this->addWarning('Expecting E_ERROR and E_USER_ERROR is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectedException = Error::class; } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectErrorMessage(string $message) : void { + $this->addWarning('Expecting E_ERROR and E_USER_ERROR is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessage($message); } + /** + * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5062 + */ public function expectErrorMessageMatches(string $regularExpression) : void { + $this->addWarning('Expecting E_ERROR and E_USER_ERROR is deprecated and will no longer be possible in PHPUnit 10.'); $this->expectExceptionMessageMatches($regularExpression); } public function getStatus() : int @@ -62551,13 +63444,14 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr $codeCoverageFilter = "'." . $codeCoverageFilter . ".'"; $codeCoverageCacheDirectory = "'." . $codeCoverageCacheDirectory . ".'"; $configurationFilePath = $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] ?? ''; - $var = ['composerAutoload' => $composerAutoload, 'phar' => $phar, 'filename' => $class->getFileName(), 'className' => $class->getName(), 'collectCodeCoverageInformation' => $coverage, 'cachesStaticAnalysis' => $cachesStaticAnalysis, 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory, 'driverMethod' => $driverMethod, 'data' => $data, 'dataName' => $dataName, 'dependencyInput' => $dependencyInput, 'constants' => $constants, 'globals' => $globals, 'include_path' => $includePath, 'included_files' => $includedFiles, 'iniSettings' => $iniSettings, 'isStrictAboutTestsThatDoNotTestAnything' => $isStrictAboutTestsThatDoNotTestAnything, 'isStrictAboutOutputDuringTests' => $isStrictAboutOutputDuringTests, 'enforcesTimeLimit' => $enforcesTimeLimit, 'isStrictAboutTodoAnnotatedTests' => $isStrictAboutTodoAnnotatedTests, 'isStrictAboutResourceUsageDuringSmallTests' => $isStrictAboutResourceUsageDuringSmallTests, 'codeCoverageFilter' => $codeCoverageFilter, 'configurationFilePath' => $configurationFilePath, 'name' => $this->getName(\false)]; + $processResultFile = tempnam(sys_get_temp_dir(), 'phpunit_'); + $var = ['composerAutoload' => $composerAutoload, 'phar' => $phar, 'filename' => $class->getFileName(), 'className' => $class->getName(), 'collectCodeCoverageInformation' => $coverage, 'cachesStaticAnalysis' => $cachesStaticAnalysis, 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory, 'driverMethod' => $driverMethod, 'data' => $data, 'dataName' => $dataName, 'dependencyInput' => $dependencyInput, 'constants' => $constants, 'globals' => $globals, 'include_path' => $includePath, 'included_files' => $includedFiles, 'iniSettings' => $iniSettings, 'isStrictAboutTestsThatDoNotTestAnything' => $isStrictAboutTestsThatDoNotTestAnything, 'isStrictAboutOutputDuringTests' => $isStrictAboutOutputDuringTests, 'enforcesTimeLimit' => $enforcesTimeLimit, 'isStrictAboutTodoAnnotatedTests' => $isStrictAboutTodoAnnotatedTests, 'isStrictAboutResourceUsageDuringSmallTests' => $isStrictAboutResourceUsageDuringSmallTests, 'codeCoverageFilter' => $codeCoverageFilter, 'configurationFilePath' => $configurationFilePath, 'name' => $this->getName(\false), 'processResultFile' => $processResultFile]; if (!$runEntireClass) { $var['methodName'] = $this->name; } $template->setVar($var); $php = AbstractPhpProcess::factory(); - $php->runTestJob($template->render(), $this, $result); + $php->runTestJob($template->render(), $this, $result, $processResultFile); } else { $result->run($this); } @@ -63273,9 +64167,12 @@ abstract class TestCase extends \PHPUnit\Framework\Assert implements \PHPUnit\Fr * @psalm-param class-string|string $originalClassName * * @psalm-return class-string + * + * @deprecated */ protected function getMockClass(string $originalClassName, $methods = [], array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = \false, bool $callOriginalClone = \true, bool $callAutoload = \true, bool $cloneArguments = \false) : string { + $this->addWarning('PHPUnit\\Framework\\TestCase::getMockClass() is deprecated and will be removed in PHPUnit 10.'); $this->recordDoubledType($originalClassName); $mock = $this->getMockObjectGenerator()->getMock($originalClassName, $methods, $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $cloneArguments); return get_class($mock); @@ -64633,7 +65530,7 @@ final class TestResult implements Countable } } } - if ($this->beStrictAboutTestsThatDoNotTestAnything && $test->getNumAssertions() === 0) { + if ($this->beStrictAboutTestsThatDoNotTestAnything && !$test->doesNotPerformAssertions() && $test->getNumAssertions() === 0) { $risky = \true; } if ($this->forceCoversAnnotation && !$error && !$failure && !$warning && !$incomplete && !$skipped && !$risky) { @@ -65349,6 +66246,9 @@ class TestSuite implements IteratorAggregate, \PHPUnit\Framework\Reorderable, \P if (dirname($class->getFileName()) === __DIR__) { continue; } + if ($class->isAbstract() && $class->isSubclassOf(\PHPUnit\Framework\TestCase::class)) { + $this->addWarning(sprintf('Abstract test case classes with "Test" suffix are deprecated (%s)', $class->getName())); + } if (!$class->isAbstract()) { if ($class->hasMethod(BaseTestRunner::SUITE_METHODNAME)) { try { @@ -65465,7 +66365,7 @@ class TestSuite implements IteratorAggregate, \PHPUnit\Framework\Reorderable, \P call_user_func([$this->name, $beforeClassMethod]); } } - } catch (\PHPUnit\Framework\SkippedTestSuiteError $error) { + } catch (\PHPUnit\Framework\SkippedTestError|\PHPUnit\Framework\SkippedTestSuiteError $error) { foreach ($this->tests() as $test) { $result->startTest($test); $result->addFailure($test, $error, 0); @@ -65787,15 +66687,15 @@ namespace PHPUnit\Framework; final class WarningTestCase extends \PHPUnit\Framework\TestCase { /** - * @var bool + * @var ?bool */ protected $backupGlobals = \false; /** - * @var bool + * @var ?bool */ protected $backupStaticAttributes = \false; /** - * @var bool + * @var ?bool */ protected $runTestInSeparateProcess = \false; /** @@ -66192,7 +67092,11 @@ declare (strict_types=1); */ namespace PHPUnit\Runner\Extension; +use function count; +use function explode; +use function implode; use function is_file; +use function strpos; use PHPUnit\PharIo\Manifest\ApplicationName; use PHPUnit\PharIo\Manifest\Exception as ManifestException; use PHPUnit\PharIo\Manifest\ManifestLoader; @@ -66218,7 +67122,7 @@ final class PharLoader } try { $applicationName = new ApplicationName('phpunit/phpunit'); - $version = new PharIoVersion(Version::series()); + $version = new PharIoVersion($this->phpunitVersion()); $manifest = ManifestLoader::fromFile('phar://' . $file . '/manifest.xml'); if (!$manifest->isExtensionFor($applicationName)) { $notLoadedExtensions[] = $file . ' is not an extension for PHPUnit'; @@ -66242,6 +67146,18 @@ final class PharLoader } return ['loadedExtensions' => $loadedExtensions, 'notLoadedExtensions' => $notLoadedExtensions]; } + private function phpunitVersion() : string + { + $version = Version::id(); + if (strpos($version, '-') === \false) { + return $version; + } + $parts = explode('.', explode('-', $version)[0]); + if (count($parts) === 2) { + $parts[] = 0; + } + return implode('.', $parts); + } } getVersion(); + self::$version = (new VersionId('9.6.13', dirname(__DIR__, 2)))->getVersion(); } return self::$version; } @@ -71131,7 +72047,11 @@ class Command if ($t instanceof \PHPUnit\Exception) { $this->exitWithErrorMessage($t->getMessage()); } - $this->exitWithErrorMessage(sprintf('Error in bootstrap script: %s:%s%s%s%s', get_class($t), PHP_EOL, $t->getMessage(), PHP_EOL, $t->getTraceAsString())); + $message = sprintf('Error in bootstrap script: %s:%s%s%s%s', get_class($t), PHP_EOL, $t->getMessage(), PHP_EOL, $t->getTraceAsString()); + while ($t = $t->getPrevious()) { + $message .= sprintf('%s%sPrevious error: %s:%s%s%s%s', PHP_EOL, PHP_EOL, get_class($t), PHP_EOL, $t->getMessage(), PHP_EOL, $t->getTraceAsString()); + } + $this->exitWithErrorMessage($message); } } protected function handleVersionCheck() : void @@ -72558,6 +73478,17 @@ final class TestRunner extends BaseTestRunner $result->flushListeners(); $this->printer->printResult($result); if (isset($codeCoverage)) { + if (isset($arguments['coveragePHP'])) { + $this->codeCoverageGenerationStart('PHP'); + try { + $writer = new PhpReport(); + $writer->process($codeCoverage, $arguments['coveragePHP']); + $this->codeCoverageGenerationSucceeded(); + unset($writer); + } catch (CodeCoverageException $e) { + $this->codeCoverageGenerationFailed($e); + } + } if (isset($arguments['coverageClover'])) { $this->codeCoverageGenerationStart('Clover XML'); try { @@ -72602,17 +73533,6 @@ final class TestRunner extends BaseTestRunner $this->codeCoverageGenerationFailed($e); } } - if (isset($arguments['coveragePHP'])) { - $this->codeCoverageGenerationStart('PHP'); - try { - $writer = new PhpReport(); - $writer->process($codeCoverage, $arguments['coveragePHP']); - $this->codeCoverageGenerationSucceeded(); - unset($writer); - } catch (CodeCoverageException $e) { - $this->codeCoverageGenerationFailed($e); - } - } if (isset($arguments['coverageText'])) { if ($arguments['coverageText'] === 'php://stdout') { $outputStream = $this->printer; @@ -72819,14 +73739,16 @@ final class TestRunner extends BaseTestRunner if (!isset($arguments['excludeGroups']) && $groupConfiguration->hasExclude()) { $arguments['excludeGroups'] = array_diff($groupConfiguration->exclude()->asArrayOfStrings(), $groupCliArgs); } - $extensionHandler = new ExtensionHandler(); - foreach ($arguments['configurationObject']->extensions() as $extension) { - $extensionHandler->registerExtension($extension, $this); - } - foreach ($arguments['configurationObject']->listeners() as $listener) { - $arguments['listeners'][] = $extensionHandler->createTestListenerInstance($listener); + if (!isset($this->arguments['noExtensions'])) { + $extensionHandler = new ExtensionHandler(); + foreach ($arguments['configurationObject']->extensions() as $extension) { + $extensionHandler->registerExtension($extension, $this); + } + foreach ($arguments['configurationObject']->listeners() as $listener) { + $arguments['listeners'][] = $extensionHandler->createTestListenerInstance($listener); + } + unset($extensionHandler); } - unset($extensionHandler); foreach ($arguments['unavailableExtensions'] as $extension) { $arguments['warnings'][] = sprintf('Extension "%s" is not available', $extension); } @@ -75601,7 +76523,7 @@ use function version_compare; */ final class MigrationBuilder { - private const AVAILABLE_MIGRATIONS = ['8.5' => [\PHPUnit\TextUI\XmlConfiguration\RemoveLogTypes::class], '9.2' => [\PHPUnit\TextUI\XmlConfiguration\RemoveCacheTokensAttribute::class, \PHPUnit\TextUI\XmlConfiguration\IntroduceCoverageElement::class, \PHPUnit\TextUI\XmlConfiguration\MoveAttributesFromRootToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveAttributesFromFilterWhitelistToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveWhitelistDirectoriesToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveWhitelistExcludesToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\RemoveEmptyFilter::class, \PHPUnit\TextUI\XmlConfiguration\CoverageCloverToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageCrap4jToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageHtmlToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoveragePhpToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageTextToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageXmlToReport::class, \PHPUnit\TextUI\XmlConfiguration\ConvertLogTypes::class, \PHPUnit\TextUI\XmlConfiguration\UpdateSchemaLocationTo93::class]]; + private const AVAILABLE_MIGRATIONS = ['8.5' => [\PHPUnit\TextUI\XmlConfiguration\RemoveLogTypes::class], '9.2' => [\PHPUnit\TextUI\XmlConfiguration\RemoveCacheTokensAttribute::class, \PHPUnit\TextUI\XmlConfiguration\IntroduceCoverageElement::class, \PHPUnit\TextUI\XmlConfiguration\MoveAttributesFromRootToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveAttributesFromFilterWhitelistToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveWhitelistIncludesToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\MoveWhitelistExcludesToCoverage::class, \PHPUnit\TextUI\XmlConfiguration\RemoveEmptyFilter::class, \PHPUnit\TextUI\XmlConfiguration\CoverageCloverToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageCrap4jToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageHtmlToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoveragePhpToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageTextToReport::class, \PHPUnit\TextUI\XmlConfiguration\CoverageXmlToReport::class, \PHPUnit\TextUI\XmlConfiguration\ConvertLogTypes::class, \PHPUnit\TextUI\XmlConfiguration\UpdateSchemaLocationTo93::class]]; /** * @throws MigrationBuilderException */ @@ -76092,13 +77014,15 @@ declare (strict_types=1); */ namespace PHPUnit\TextUI\XmlConfiguration; +use function assert; +use function in_array; use DOMDocument; use DOMElement; use PHPUnit\Util\Xml\SnapshotNodeList; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -final class MoveWhitelistDirectoriesToCoverage implements \PHPUnit\TextUI\XmlConfiguration\Migration +final class MoveWhitelistExcludesToCoverage implements \PHPUnit\TextUI\XmlConfiguration\Migration { /** * @throws MigrationException @@ -76109,17 +77033,30 @@ final class MoveWhitelistDirectoriesToCoverage implements \PHPUnit\TextUI\XmlCon if ($whitelist === null) { return; } + $excludeNodes = SnapshotNodeList::fromNodeList($whitelist->getElementsByTagName('exclude')); + if ($excludeNodes->count() === 0) { + return; + } $coverage = $document->getElementsByTagName('coverage')->item(0); if (!$coverage instanceof DOMElement) { throw new \PHPUnit\TextUI\XmlConfiguration\MigrationException('Unexpected state - No coverage element'); } - $include = $document->createElement('include'); - $coverage->appendChild($include); - foreach (SnapshotNodeList::fromNodeList($whitelist->childNodes) as $child) { - if (!$child instanceof DOMElement || $child->nodeName !== 'directory') { - continue; + $targetExclude = $coverage->getElementsByTagName('exclude')->item(0); + if ($targetExclude === null) { + $targetExclude = $coverage->appendChild($document->createElement('exclude')); + } + foreach ($excludeNodes as $excludeNode) { + assert($excludeNode instanceof DOMElement); + foreach (SnapshotNodeList::fromNodeList($excludeNode->childNodes) as $child) { + if (!$child instanceof DOMElement || !in_array($child->nodeName, ['directory', 'file'], \true)) { + continue; + } + $targetExclude->appendChild($child); } - $include->appendChild($child); + if ($excludeNode->getElementsByTagName('*')->count() !== 0) { + throw new \PHPUnit\TextUI\XmlConfiguration\MigrationException('Dangling child elements in exclude found.'); + } + $whitelist->removeChild($excludeNode); } } } @@ -76136,15 +77073,13 @@ declare (strict_types=1); */ namespace PHPUnit\TextUI\XmlConfiguration; -use function assert; -use function in_array; use DOMDocument; use DOMElement; use PHPUnit\Util\Xml\SnapshotNodeList; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ -final class MoveWhitelistExcludesToCoverage implements \PHPUnit\TextUI\XmlConfiguration\Migration +final class MoveWhitelistIncludesToCoverage implements \PHPUnit\TextUI\XmlConfiguration\Migration { /** * @throws MigrationException @@ -76155,30 +77090,20 @@ final class MoveWhitelistExcludesToCoverage implements \PHPUnit\TextUI\XmlConfig if ($whitelist === null) { return; } - $excludeNodes = SnapshotNodeList::fromNodeList($whitelist->getElementsByTagName('exclude')); - if ($excludeNodes->count() === 0) { - return; - } $coverage = $document->getElementsByTagName('coverage')->item(0); if (!$coverage instanceof DOMElement) { throw new \PHPUnit\TextUI\XmlConfiguration\MigrationException('Unexpected state - No coverage element'); } - $targetExclude = $coverage->getElementsByTagName('exclude')->item(0); - if ($targetExclude === null) { - $targetExclude = $coverage->appendChild($document->createElement('exclude')); - } - foreach ($excludeNodes as $excludeNode) { - assert($excludeNode instanceof DOMElement); - foreach (SnapshotNodeList::fromNodeList($excludeNode->childNodes) as $child) { - if (!$child instanceof DOMElement || !in_array($child->nodeName, ['directory', 'file'], \true)) { - continue; - } - $targetExclude->appendChild($child); + $include = $document->createElement('include'); + $coverage->appendChild($include); + foreach (SnapshotNodeList::fromNodeList($whitelist->childNodes) as $child) { + if (!$child instanceof DOMElement) { + continue; } - if ($excludeNode->getElementsByTagName('*')->count() !== 0) { - throw new \PHPUnit\TextUI\XmlConfiguration\MigrationException('Dangling child elements in exclude found.'); + if (!($child->nodeName === 'directory' || $child->nodeName === 'file')) { + continue; } - $whitelist->removeChild($excludeNode); + $include->appendChild($child); } } } @@ -78764,9 +79689,9 @@ final class DocBlock } private function cleanUpMultiLineAnnotation(string $docComment) : string { - //removing initial ' * ' for docComment + // removing initial ' * ' for docComment $docComment = str_replace("\r\n", "\n", $docComment); - $docComment = preg_replace('/' . '\\n' . '\\s*' . '\\*' . '\\s?' . '/', "\n", $docComment); + $docComment = preg_replace('/\\n\\s*\\*\\s?/', "\n", $docComment); $docComment = (string) substr($docComment, 0, -1); return rtrim($docComment, "\n"); } @@ -79225,12 +80150,8 @@ use PHPUnit\DeepCopy\DeepCopy; use PHPUnit\Doctrine\Instantiator\Instantiator; use PHPUnit\PharIo\Manifest\Manifest; use PHPUnit\PharIo\Version\Version as PharIoVersion; -use PHPUnit\phpDocumentor\Reflection\DocBlock; -use PHPUnit\phpDocumentor\Reflection\Project; -use PHPUnit\phpDocumentor\Reflection\Type; use PHPUnit\PhpParser\Parser; use PHPUnit\Framework\TestCase; -use Prophecy\Prophet; use ReflectionClass; use PHPUnit\SebastianBergmann\CliParser\Parser as CliParser; use PHPUnit\SebastianBergmann\CodeCoverage\CodeCoverage; @@ -79253,7 +80174,6 @@ use PHPUnit\SebastianBergmann\Timer\Timer; use PHPUnit\SebastianBergmann\Type\TypeName; use PHPUnit\SebastianBergmann\Version; use PHPUnit\TheSeer\Tokenizer\Tokenizer; -use PHPUnit\Webmozart\Assert\Assert; /** * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit */ @@ -79275,14 +80195,8 @@ final class ExcludeList Manifest::class => 1, // phar-io/version PharIoVersion::class => 1, - // phpdocumentor/reflection-common - Project::class => 1, - // phpdocumentor/reflection-docblock - DocBlock::class => 1, // phpdocumentor/type-resolver - Type::class => 1, - // phpspec/prophecy - Prophet::class => 1, + \PHPUnit\Util\Type::class => 1, // phpunit/phpunit TestCase::class => 2, // phpunit/php-code-coverage @@ -79327,8 +80241,6 @@ final class ExcludeList Version::class => 1, // theseer/tokenizer Tokenizer::class => 1, - // webmozart/assert - Assert::class => 1, ]; /** * @var string[] @@ -79611,6 +80523,8 @@ declare (strict_types=1); */ namespace PHPUnit\Util; +use const PHP_MAJOR_VERSION; +use const PHP_MINOR_VERSION; use function array_keys; use function array_reverse; use function array_shift; @@ -79639,6 +80553,10 @@ final class GlobalState * @var string[] */ private const SUPER_GLOBAL_ARRAYS = ['_ENV', '_POST', '_GET', '_COOKIE', '_SERVER', '_FILES', '_REQUEST']; + /** + * @psalm-var array> + */ + private const DEPRECATED_INI_SETTINGS = ['7.3' => ['iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.func_overload' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true, 'string.strip_tags' => \true], '7.4' => ['iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.func_overload' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true, 'pdo_odbc.db2_instance_name' => \true, 'string.strip_tags' => \true], '8.0' => ['iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true], '8.1' => ['auto_detect_line_endings' => \true, 'filter.default' => \true, 'iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true, 'oci8.old_oci_close_semantics' => \true], '8.2' => ['auto_detect_line_endings' => \true, 'filter.default' => \true, 'iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true, 'oci8.old_oci_close_semantics' => \true], '8.3' => ['auto_detect_line_endings' => \true, 'filter.default' => \true, 'iconv.input_encoding' => \true, 'iconv.output_encoding' => \true, 'iconv.internal_encoding' => \true, 'mbstring.http_input' => \true, 'mbstring.http_output' => \true, 'mbstring.internal_encoding' => \true, 'oci8.old_oci_close_semantics' => \true]]; /** * @throws Exception */ @@ -79686,6 +80604,9 @@ final class GlobalState { $result = ''; foreach (ini_get_all(null, \false) as $key => $value) { + if (self::isIniSettingDeprecated($key)) { + continue; + } $result .= sprintf('@ini_set(%s, %s);' . "\n", self::exportVariable($key), self::exportVariable((string) $value)); } return $result; @@ -79745,6 +80666,10 @@ final class GlobalState } return $result; } + private static function isIniSettingDeprecated(string $iniSetting) : bool + { + return isset(self::DEPRECATED_INI_SETTINGS[PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION][$iniSetting]); + } } startTest($test); + $processResult = ''; $_result = $this->runJob($job); - $this->processChildResult($test, $result, $_result['stdout'], $_result['stderr']); + if (file_exists($processResultFile)) { + $processResult = file_get_contents($processResultFile); + @unlink($processResultFile); + } + $this->processChildResult($test, $result, $processResult, $_result['stderr']); } /** * Returns the command based into the configurations. @@ -81037,7 +81970,7 @@ function __phpunit_run_isolated_test() $test = new {className}('{name}', unserialize('{data}'), '{dataName}'); $test->setDependencyInput(unserialize('{dependencyInput}')); - $test->setInIsolation(TRUE); + $test->setInIsolation(true); ob_end_clean(); $test->run($result); @@ -81047,6 +81980,7 @@ function __phpunit_run_isolated_test() } ini_set('xdebug.scream', '0'); + @rewind(STDOUT); /* @ as not every STDOUT target stream is rewindable */ if ($stdout = @stream_get_contents(STDOUT)) { $output = $stdout . $output; @@ -81057,13 +81991,16 @@ function __phpunit_run_isolated_test() } } - print serialize( - [ - 'testResult' => $test->getResult(), - 'numAssertions' => $test->getNumAssertions(), - 'result' => $result, - 'output' => $output - ] + file_put_contents( + '{processResultFile}', + serialize( + [ + 'testResult' => $test->getResult(), + 'numAssertions' => $test->getNumAssertions(), + 'result' => $result, + 'output' => $output + ] + ) ); } @@ -81169,6 +82106,7 @@ function __phpunit_run_isolated_test() } ini_set('xdebug.scream', '0'); + @rewind(STDOUT); /* @ as not every STDOUT target stream is rewindable */ if ($stdout = @stream_get_contents(STDOUT)) { $output = $stdout . $output; @@ -81179,13 +82117,16 @@ function __phpunit_run_isolated_test() } } - print serialize( - [ - 'testResult' => $test->getResult(), - 'numAssertions' => $test->getNumAssertions(), - 'result' => $result, - 'output' => $output - ] + file_put_contents( + '{processResultFile}', + serialize( + [ + 'testResult' => $test->getResult(), + 'numAssertions' => $test->getNumAssertions(), + 'result' => $result, + 'output' => $output + ] + ) ); } @@ -81714,7 +82655,7 @@ final class Test /** * @psalm-param class-string $className */ - public static function parseTestMethodAnnotations(string $className, ?string $methodName = '') : array + public static function parseTestMethodAnnotations(string $className, ?string $methodName = null) : array { $registry = Registry::getInstance(); if ($methodName !== null) { @@ -82294,26 +83235,47 @@ final class HtmlResultPrinter extends \PHPUnit\Util\TestDox\ResultPrinter @@ -82324,7 +83286,7 @@ EOT; */ private const CLASS_HEADER = <<<'EOT' -

%s

+

%s

    EOT; @@ -82357,14 +83319,14 @@ EOT; */ protected function startClass(string $name) : void { - $this->write(sprintf(self::CLASS_HEADER, $name, $this->currentTestClassPrettified)); + $this->write(sprintf(self::CLASS_HEADER, $this->currentTestClassPrettified)); } /** * Handler for 'on test' event. */ protected function onTest(string $name, bool $success = \true) : void { - $this->write(sprintf("
  • %s %s
  • \n", $success ? '#555753' : '#ef2929', $success ? '✓' : '❌', $name)); + $this->write(sprintf("
  • %s
  • \n", $success ? 'success' : 'defect', $name)); } /** * Handler for 'end class' event. @@ -84330,19 +85292,19 @@ final class XmlTestListRenderer } } - + phpunit phpunit - 9.5.28 + 9.6.13 The PHP Unit Testing framework. BSD-3-Clause - pkg:composer/phpunit/phpunit@9.5.28 + pkg:composer/phpunit/phpunit@9.6.13 doctrine @@ -84359,26 +85321,26 @@ final class XmlTestListRenderer myclabs deep-copy - 1.11.0 + 1.11.1 Create deep copies (clones) of your objects MIT - pkg:composer/myclabs/deep-copy@1.11.0 + pkg:composer/myclabs/deep-copy@1.11.1 nikic php-parser - v4.15.2 + v4.17.1 A PHP parser written in PHP BSD-3-Clause - pkg:composer/nikic/php-parser@v4.15.2 + pkg:composer/nikic/php-parser@v4.17.1 phar-io @@ -84443,26 +85405,26 @@ final class XmlTestListRenderer phpspec prophecy - v1.16.0 + v1.17.0 Highly opinionated mocking framework for PHP 5.3+ MIT - pkg:composer/phpspec/prophecy@v1.16.0 + pkg:composer/phpspec/prophecy@v1.17.0 phpunit php-code-coverage - 9.2.23 + 9.2.29 Library that provides collection, processing, and rendering functionality for PHP code coverage information. BSD-3-Clause - pkg:composer/phpunit/php-code-coverage@9.2.23 + pkg:composer/phpunit/php-code-coverage@9.2.29 phpunit @@ -84575,26 +85537,26 @@ final class XmlTestListRenderer sebastian diff - 4.0.4 + 4.0.5 Diff implementation BSD-3-Clause - pkg:composer/sebastian/diff@4.0.4 + pkg:composer/sebastian/diff@4.0.5 sebastian environment - 5.1.4 + 5.1.5 Provides functionality to handle HHVM/PHP environments BSD-3-Clause - pkg:composer/sebastian/environment@5.1.4 + pkg:composer/sebastian/environment@5.1.5 sebastian @@ -84611,14 +85573,14 @@ final class XmlTestListRenderer sebastian global-state - 5.0.5 + 5.0.6 Snapshotting of global state BSD-3-Clause - pkg:composer/sebastian/global-state@5.0.5 + pkg:composer/sebastian/global-state@5.0.6 sebastian @@ -84659,14 +85621,14 @@ final class XmlTestListRenderer sebastian recursion-context - 4.0.4 + 4.0.5 Provides functionality to recursively process PHP variables BSD-3-Clause - pkg:composer/sebastian/recursion-context@4.0.4 + pkg:composer/sebastian/recursion-context@4.0.5 sebastian @@ -84683,14 +85645,14 @@ final class XmlTestListRenderer sebastian type - 3.2.0 + 3.2.1 Collection of value objects that represent the types of the PHP type system BSD-3-Clause - pkg:composer/sebastian/type@3.2.0 + pkg:composer/sebastian/type@3.2.1 sebastian @@ -89034,7 +89996,12 @@ final class MemoryEfficientLongestCommonSubsequenceCalculator implements Longest if ($from[$i] === $to[$j]) { $current[$j + 1] = $prev[$j] + 1; } else { - $current[$j + 1] = max($current[$j], $prev[$j + 1]); + // don't use max() to avoid function call overhead + if ($current[$j] > $prev[$j + 1]) { + $current[$j + 1] = $current[$j]; + } else { + $current[$j + 1] = $prev[$j + 1]; + } } } } @@ -89745,7 +90712,21 @@ final class TimeEfficientLongestCommonSubsequenceCalculator implements LongestCo for ($i = 1; $i <= $fromLength; ++$i) { for ($j = 1; $j <= $toLength; ++$j) { $o = $j * $width + $i; - $matrix[$o] = max($matrix[$o - 1], $matrix[$o - $width], $from[$i - 1] === $to[$j - 1] ? $matrix[$o - $width - 1] + 1 : 0); + // don't use max() to avoid function call overhead + $firstOrLast = $from[$i - 1] === $to[$j - 1] ? $matrix[$o - $width - 1] + 1 : 0; + if ($matrix[$o - 1] > $matrix[$o - $width]) { + if ($firstOrLast > $matrix[$o - 1]) { + $matrix[$o] = $firstOrLast; + } else { + $matrix[$o] = $matrix[$o - 1]; + } + } else { + if ($firstOrLast > $matrix[$o - $width]) { + $matrix[$o] = $firstOrLast; + } else { + $matrix[$o] = $matrix[$o - $width]; + } + } } } $i = $fromLength; @@ -89862,14 +90843,12 @@ final class Console public function isInteractive($fileDescriptor = self::STDOUT) : bool { if (is_resource($fileDescriptor)) { - // These functions require a descriptor that is a real resource, not a numeric ID of it if (function_exists('stream_isatty') && @stream_isatty($fileDescriptor)) { return \true; } - // Check if formatted mode is S_IFCHR - if (function_exists('fstat') && @stream_isatty($fileDescriptor)) { + if (function_exists('fstat')) { $stat = @fstat(STDOUT); - return $stat ? 020000 === ($stat['mode'] & 0170000) : \false; + return $stat && 020000 === ($stat['mode'] & 0170000); } return \false; } @@ -90849,7 +91828,7 @@ class Restorer foreach ($staticAttributes as $name => $value) { $reflector = new ReflectionProperty($className, $name); $reflector->setAccessible(\true); - $reflector->setValue($value); + $reflector->setValue(null, $value); } } foreach ($newClasses as $className) { @@ -90867,7 +91846,7 @@ class Restorer continue; } $attribute->setAccessible(\true); - $attribute->setValue($defaults[$name]); + $attribute->setValue(null, $defaults[$name]); } } } @@ -91783,7 +92762,7 @@ class ObjectReflector declare (strict_types=1); /* - * This file is part of the Recursion Context package. + * This file is part of sebastian/recursion-context. * * (c) Sebastian Bergmann * @@ -91794,6 +92773,7 @@ namespace PHPUnit\SebastianBergmann\RecursionContext; use const PHP_INT_MAX; use const PHP_INT_MIN; +use function array_key_exists; use function array_pop; use function array_slice; use function count; @@ -91893,18 +92873,22 @@ final class Context } $key = count($this->arrays); $this->arrays[] =& $array; - if (!isset($array[PHP_INT_MAX]) && !isset($array[PHP_INT_MAX - 1])) { + if (!array_key_exists(PHP_INT_MAX, $array) && !array_key_exists(PHP_INT_MAX - 1, $array)) { $array[] = $key; $array[] = $this->objects; } else { /* cover the improbable case too */ + /* Note that array_slice (used in containsArray) will return the + * last two values added *not necessarily* the highest integer + * keys in the array, so the order of these writes to $array + * is important, but the actual keys used is not. */ do { $key = random_int(PHP_INT_MIN, PHP_INT_MAX); - } while (isset($array[$key])); + } while (array_key_exists($key, $array)); $array[$key] = $key; do { $key = random_int(PHP_INT_MIN, PHP_INT_MAX); - } while (isset($array[$key])); + } while (array_key_exists($key, $array)); $array[$key] = $this->objects; } return $key; @@ -91944,7 +92928,7 @@ final class Context declare (strict_types=1); /* - * This file is part of the Recursion Context package. + * This file is part of sebastian/recursion-context. * * (c) Sebastian Bergmann * @@ -91961,7 +92945,7 @@ interface Exception extends Throwable declare (strict_types=1); /* - * This file is part of the Recursion Context package. + * This file is part of sebastian/recursion-context. * * (c) Sebastian Bergmann * @@ -91975,7 +92959,7 @@ final class InvalidArgumentException extends \InvalidArgumentException implement } Recursion Context -Copyright (c) 2002-2020, Sebastian Bergmann . +Copyright (c) 2002-2022, Sebastian Bergmann . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -92481,6 +93465,9 @@ final class CallableType extends Type if (count($type->value()) !== 2) { return \false; } + if (!isset($type->value()[0], $type->value()[1])) { + return \false; + } if (!is_object($type->value()[0]) || !is_string($type->value()[1])) { return \false; } @@ -92502,6 +93489,9 @@ final class CallableType extends Type if (count($type->value()) !== 2) { return \false; } + if (!isset($type->value()[0], $type->value()[1])) { + return \false; + } if (!is_string($type->value()[0]) || !is_string($type->value()[1])) { return \false; } @@ -92623,10 +93613,10 @@ declare (strict_types=1); */ namespace PHPUnit\SebastianBergmann\Type; -use function array_unique; use function assert; use function count; use function implode; +use function in_array; use function sort; final class IntersectionType extends Type { @@ -92707,10 +93697,11 @@ final class IntersectionType extends Type $names = []; foreach ($types as $type) { assert($type instanceof ObjectType); - $names[] = $type->className()->qualifiedName(); - } - if (count(array_unique($names)) < count($names)) { - throw new RuntimeException('An intersection type must not contain duplicate types'); + $classQualifiedName = $type->className()->qualifiedName(); + if (in_array($classQualifiedName, $names, \true)) { + throw new RuntimeException('An intersection type must not contain duplicate types'); + } + $names[] = $classQualifiedName; } } } @@ -100269,4 +101260,4 @@ namespace PHPSTORM_META { map([""=>"$0"]) ); } -L1_{0/+ߢLE>*Xg**eYdԵ:?GBMB \ No newline at end of file +RJ _q@jSY i܄ӟ6|4l=ﶉ)z0GBMB \ No newline at end of file