js-confuser 1.4.2 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +9 -0
- package/dev.js +4 -5
- package/dist/compiler.js +3 -2
- package/dist/constants.js +1 -1
- package/dist/index.js +5 -5
- package/dist/obfuscator.js +14 -3
- package/dist/options.js +2 -2
- package/dist/order.js +1 -0
- package/dist/parser.js +2 -2
- package/dist/precedence.js +1 -1
- package/dist/presets.js +3 -0
- package/dist/probability.js +7 -1
- package/dist/transforms/calculator.js +15 -3
- package/dist/transforms/controlFlowFlattening/controlFlowFlattening.js +93 -19
- package/dist/transforms/deadCode.js +1 -1
- package/dist/transforms/dispatcher.js +3 -1
- package/dist/transforms/extraction/objectExtraction.js +7 -4
- package/dist/transforms/flatten.js +45 -13
- package/dist/transforms/hexadecimalNumbers.js +38 -0
- package/dist/transforms/hideInitializingCode.js +8 -3
- package/dist/transforms/identifier/globalConcealing.js +3 -1
- package/dist/transforms/identifier/nameRecycling.js +2 -1
- package/dist/transforms/lock/integrity.js +2 -1
- package/dist/transforms/lock/lock.js +2 -2
- package/dist/transforms/minify.js +8 -3
- package/dist/transforms/rgf.js +11 -8
- package/dist/transforms/stack.js +2 -1
- package/dist/transforms/string/stringConcealing.js +3 -3
- package/dist/transforms/transform.js +32 -8
- package/dist/traverse.js +4 -2
- package/dist/types.js +5 -1
- package/dist/util/compare.js +4 -4
- package/dist/util/gen.js +66 -47
- package/dist/util/guard.js +10 -0
- package/dist/util/identifiers.js +4 -4
- package/dist/util/insert.js +25 -16
- package/dist/util/object.js +3 -1
- package/dist/util/random.js +5 -5
- package/dist/util/scope.js +1 -1
- package/package.json +11 -11
- package/samples/high.js +1 -198
- package/samples/low.js +1 -26
- package/samples/medium.js +1 -40
- package/src/compiler.ts +5 -1
- package/src/obfuscator.ts +2 -0
- package/src/options.ts +8 -0
- package/src/order.ts +2 -0
- package/src/presets.ts +3 -0
- package/src/transforms/calculator.ts +36 -5
- package/src/transforms/controlFlowFlattening/controlFlowFlattening.ts +119 -2
- package/src/transforms/deadCode.ts +102 -0
- package/src/transforms/extraction/objectExtraction.ts +11 -5
- package/src/transforms/flatten.ts +166 -28
- package/src/transforms/hexadecimalNumbers.ts +31 -0
- package/src/transforms/minify.ts +9 -3
- package/src/transforms/transform.ts +10 -2
- package/src/util/gen.ts +1 -1
- package/src/util/guard.ts +7 -0
- package/test/transforms/extraction/objectExtraction.test.ts +23 -0
- package/test/transforms/flatten.test.ts +3 -3
- package/test/transforms/hexadecimalNumbers.test.ts +62 -0
- package/test/transforms/minify.test.ts +38 -0
package/samples/low.js
CHANGED
|
@@ -1,26 +1 @@
|
|
|
1
|
-
var
|
|
2
|
-
1,
|
|
3
|
-
872,
|
|
4
|
-
981,
|
|
5
|
-
'log'
|
|
6
|
-
];
|
|
7
|
-
function Id15DvL() {
|
|
8
|
-
try {
|
|
9
|
-
return global;
|
|
10
|
-
} catch (UvB2KGE) {
|
|
11
|
-
return this;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
var aXM92rd = Id15DvL.call(this), Tuaxwt = Id15DvL => {
|
|
15
|
-
switch (Id15DvL) {
|
|
16
|
-
case -UvB2KGE[1]:
|
|
17
|
-
return aXM92rd.console;
|
|
18
|
-
}
|
|
19
|
-
}, h6wvCVT = (UvB2KGE, Id15DvL, aXM92rd) => {
|
|
20
|
-
var Tuaxwt = UvB2KGE * -150 + -89;
|
|
21
|
-
switch (Tuaxwt) {
|
|
22
|
-
case -147239:
|
|
23
|
-
return Id15DvL + aXM92rd;
|
|
24
|
-
}
|
|
25
|
-
}, S7MWv1 = h6wvCVT(UvB2KGE[2], UvB2KGE[0], UvB2KGE[0]);
|
|
26
|
-
Tuaxwt(-UvB2KGE[1])[UvB2KGE[3]](h6wvCVT(UvB2KGE[2], '1 + 1 is ', S7MWv1)), Tuaxwt(-UvB2KGE[1])[UvB2KGE[3]]('The source code is only three lines long!');
|
|
1
|
+
var ndrT6q=cyOhno.call(this),b6lbh7=function(){return b6lbh7=>{return ndrT6q[b6lbh7+0x46]}}(),EEkns7=[],QcMR3z=b6lbh7(-0x46),ob0C_ma=function(){var ndrT6q=['{0x7E3733,0x401,0x7E6A,0x8}','{0x7E7873,0x440,0x7E564F4A,0x688,0x7E39,0x8}','{0x7E746543,0x611,0x7E6C6533,0x642,0x7E754138,0x642,0x7E444331,0x611,0x7E716336,0x60A,0x7E4E,0x8}','{0x7E6630,0x440,0x7E644F37,0x611,0x7E615A58,0x642,0x7E7A7363,0x60A,0x7E3634,0x88}','{0x7E4D4C41,0x60A,0x7E675138,0x650,0x7E563732,0x611,0x7E55,0x8}','{0x7E6F6C67,0x611}','{0x7E61564B,0x611,0x7E795742,0x60A,0x7E5A,0x8}','{0x7E664E4D,0x688,0x7E696554,0x611}','{0x7E686554,0x650,0x7E736F20,0x650,0x7E757263,0x60A,0x7E656320,0x642,0x7E6F6564,0x642,0x7E736920,0x688,0x7E6F6E20,0x650,0x7E796C20,0x611,0x7E747268,0x642,0x7E6520,0x409,0x7E6E6C69,0x681,0x7E736520,0x611,0x7E6F6E6C,0x650,0x7E6721,0x81}','<~0d%th0d(1O+9~>'];return QcMR3z?ndrT6q.pop():QcMR3z++,ndrT6q}(),sbXPeJ=PjiKSUj.apply(this,[b6lbh7(-0x37)]),wx5FGg=PjiKSUj(b6lbh7(-0x45));function UKqvAS(ndrT6q){return ndrT6q=EjREiwJ+(EjREiwJ=ndrT6q,b6lbh7(-0x46)),ndrT6q}function GT3maOQ(ndrT6q,EEkns7){switch(EjREiwJ){case-b6lbh7(-0x3e):return ndrT6q+EEkns7}}var UwTwWF={},dK0l3gX=b6lbh7(-0x3d),bVqHoak=b6lbh7(-0x46),csxrgr=-b6lbh7(-0x3c),msxIpk9=0x30;while(dK0l3gX+bVqHoak+csxrgr+msxIpk9!=0x44){var _TEAGj1,tRXd0s=function(){return b6lbh7=>{return ndrT6q[b6lbh7-0xf4]}}(),Y7TD4Hx=TbciSt.apply(this,[0x9]),JgF7iRb=PjiKSUj.apply(this,[b6lbh7(-0x44)]),y0pX37m=PjiKSUj.apply(this,[b6lbh7(-0x45)]),YqjSdVG=PjiKSUj(b6lbh7(-0x43)),Q26K0e=PjiKSUj(b6lbh7(-0x44));_TEAGj1=(dK0l3gX+bVqHoak+csxrgr+msxIpk9)*0x45-tRXd0s(0xfa);switch(_TEAGj1){case 0x11ae:~(console[PjiKSUj.apply(this,[tRXd0s(0xf7)])](UwTwWF[wx5FGg]),dK0l3gX+=dK0l3gX+(0x1f<msxIpk9?-0x5c:0x10d),bVqHoak*=-0xda<dK0l3gX?tRXd0s(0xf9):-0x72>bVqHoak?0x6d:0x35,bVqHoak-=bVqHoak-0x185,csxrgr+=0x3f<csxrgr?-0x7a:0x8e,msxIpk9*=-b6lbh7(-0x42)>bVqHoak?tRXd0s(0xf8):b6lbh7(-0x41),msxIpk9-=msxIpk9+(-0x67<bVqHoak?0xf3:0x33));break;case 0xf86:var EjREiwJ;~(dK0l3gX+=0xc4>msxIpk9?-0xa:0xb,bVqHoak+=bVqHoak-b6lbh7(-0x40),csxrgr*=msxIpk9-tRXd0s(0x101),csxrgr-=-0xde<dK0l3gX?bVqHoak-0x132:b6lbh7(-0x3f),msxIpk9+=bVqHoak+tRXd0s(0x100)<csxrgr?-0x76:0x5d);break;case-0x1c:var qUeSjHx;!(UwTwWF[Q26K0e]=YqjSdVG,qUeSjHx=GT3maOQ(msxIpk9+(-0xdf<msxIpk9?0x47:-tRXd0s(0xfb)),-0x4e>csxrgr?0xe2:b6lbh7(-0x38),UKqvAS(-(-0x4d<bVqHoak?-b6lbh7(-0x40):b6lbh7(-0x3e)))),dK0l3gX+=dK0l3gX-0x1ec,bVqHoak*=bVqHoak+0x63,bVqHoak-=msxIpk9-b6lbh7(-0x3b),csxrgr+=-0x8b<bVqHoak?0xbb:b6lbh7(-0x3d),msxIpk9*=dK0l3gX-0x3e<msxIpk9?tRXd0s(0xf9):msxIpk9+0xb8,msxIpk9-=dK0l3gX+0x7c);break;case 0xeb7:void(UwTwWF[y0pX37m]=sbXPeJ,console[UwTwWF[JgF7iRb]](GT3maOQ(Y7TD4Hx,qUeSjHx,EjREiwJ=-(dK0l3gX+(0x5e<dK0l3gX?0x9c:0x1dd)))),dK0l3gX+=csxrgr-0x134,bVqHoak*=b6lbh7(-0x31)<bVqHoak?b6lbh7(-0x41):dK0l3gX+tRXd0s(0xfe),bVqHoak-=dK0l3gX+(dK0l3gX+0xe7<bVqHoak?0x1fe:csxrgr-tRXd0s(0xff)),csxrgr+=0xef<csxrgr?0x96:0x49,msxIpk9*=dK0l3gX+0xd2,msxIpk9-=-tRXd0s(0x100)>dK0l3gX?-0x1da:tRXd0s(0x101))}}function wWYxmC0(EEkns7){var QcMR3z=(()=>{return EEkns7=>{return ndrT6q[EEkns7-0x9b]}})(),ob0C_ma='';EEkns7=EEkns7.substring(b6lbh7(-0x38),EEkns7.length-b6lbh7(-0x38));var sbXPeJ=EEkns7.split(',');for(var wx5FGg=b6lbh7(-0x46);wx5FGg<sbXPeJ.length;wx5FGg+=QcMR3z(0xa0)){var UKqvAS,GT3maOQ=function(){return EEkns7=>{return b6lbh7(EEkns7-0xdf)}}();UKqvAS=[sbXPeJ[wx5FGg],sbXPeJ[wx5FGg+GT3maOQ(0xa7)]];var [UwTwWF,dK0l3gX]=UKqvAS.map(Number);while(dK0l3gX)ob0C_ma+=String.fromCharCode(UwTwWF>>QcMR3z(0xaa)*(dK0l3gX>3maOQ(0x9b))&b6lbh7(-0x36)),dK0l3gX>>=GT3maOQ(0xad)}return ob0C_ma.replace(/~/g,'')}function PjiKSUj(ndrT6q,b6lbh7,QcMR3z,sbXPeJ=wWYxmC0,wx5FGg=EEkns7){if(QcMR3z){return b6lbh7[EEkns7[QcMR3z]]=PjiKSUj(ndrT6q,b6lbh7)}else{if(b6lbh7){[wx5FGg,b6lbh7]=[sbXPeJ(wx5FGg),ndrT6q||QcMR3z]}}return b6lbh7?ndrT6q[wx5FGg[b6lbh7]]:EEkns7[ndrT6q]||(QcMR3z=(wx5FGg[ndrT6q],sbXPeJ),EEkns7[ndrT6q]=QcMR3z(ob0C_ma[ndrT6q]))}function Pz6ixV2(ndrT6q){var EEkns7,QcMR3z,ob0C_ma=b6lbh7(-0x46),sbXPeJ='',wx5FGg=ndrT6q.length,UKqvAS=String,GT3maOQ=b6lbh7(-0x34),UwTwWF=b6lbh7(-0x35),dK0l3gX;for(dK0l3gX=b6lbh7(-0x46);dK0l3gX<wx5FGg;dK0l3gX+=b6lbh7(-0x38)){var bVqHoak=(()=>{return ndrT6q=>{return b6lbh7(ndrT6q+0x19)}})();+(EEkns7=ndrT6q[GT3maOQ](dK0l3gX)-bVqHoak(-0x4c),EEkns7>=b6lbh7(-0x46)&&EEkns7<0x20?(ob0C_ma+=(QcMR3z=QcMR3z<<b6lbh7(-0x43)|EEkns7,b6lbh7(-0x43)),ob0C_ma>=b6lbh7(-0x37)?ob0C_ma-=(sbXPeJ+=UKqvAS[UwTwWF](QcMR3z>>ob0C_ma-b6lbh7(-0x37)&b6lbh7(-0x36)),b6lbh7(-0x37)):b6lbh7(-0x46)):b6lbh7(-0x46))}return sbXPeJ}function fNuUjh(ndrT6q,b6lbh7,QcMR3z,sbXPeJ=Pz6ixV2,wx5FGg=EEkns7){if(QcMR3z){return b6lbh7[EEkns7[QcMR3z]]=fNuUjh(ndrT6q,b6lbh7)}else{if(b6lbh7){[wx5FGg,b6lbh7]=[sbXPeJ(wx5FGg),ndrT6q||QcMR3z]}}return b6lbh7?ndrT6q[wx5FGg[b6lbh7]]:EEkns7[ndrT6q]||(QcMR3z=(wx5FGg[ndrT6q],sbXPeJ),EEkns7[ndrT6q]=QcMR3z(ob0C_ma[ndrT6q]))}function piFKLw(EEkns7,QcMR3z=[b6lbh7(-0x35),'apply']){var ob0C_ma=(()=>{return EEkns7=>{return ndrT6q[EEkns7-0xc5]}})(),sbXPeJ,wx5FGg,UKqvAS,GT3maOQ,UwTwWF,dK0l3gX=String,bVqHoak='length',csxrgr=b6lbh7(-0x36),msxIpk9=b6lbh7(-0x34),_TEAGj1='slice',tRXd0s='replace';for('<~'===EEkns7[_TEAGj1](b6lbh7(-0x46),b6lbh7(-0x41))&&'~>'===EEkns7[_TEAGj1](-b6lbh7(-0x41)),EEkns7=EEkns7[_TEAGj1](b6lbh7(-0x41),-b6lbh7(-0x41))[tRXd0s](/s/g,'')[tRXd0s]('z','!!!!!'),sbXPeJ='uuuuu'[_TEAGj1](EEkns7[bVqHoak]%b6lbh7(-0x43)||b6lbh7(-0x43)),EEkns7+=sbXPeJ,UKqvAS=[],GT3maOQ=b6lbh7(-0x46),UwTwWF=EEkns7[bVqHoak];UwTwWF>GT3maOQ;GT3maOQ+=ob0C_ma(0xc8))wx5FGg=0x31c84b1*(EEkns7[msxIpk9](GT3maOQ)-b6lbh7(-0x33))+0x95eed*(EEkns7[msxIpk9](GT3maOQ+ob0C_ma(0xd3))-ob0C_ma(0xd8))+0x1c39*(EEkns7[msxIpk9](GT3maOQ+ob0C_ma(0xca))-b6lbh7(-0x33))+0x55*(EEkns7[msxIpk9](GT3maOQ+ob0C_ma(0xd9))-ob0C_ma(0xd8))+(EEkns7[msxIpk9](GT3maOQ+ob0C_ma(0xda))-b6lbh7(-0x33)),UKqvAS.push(csxrgr&wx5FGg>>0x18,csxrgr&wx5FGg>>0x10,csxrgr&wx5FGg>>b6lbh7(-0x37),csxrgr&wx5FGg);return function(EEkns7,ob0C_ma){var sbXPeJ;for(sbXPeJ=ob0C_ma;sbXPeJ>b6lbh7(-0x46);sbXPeJ--)EEkns7.pop()}(UKqvAS,sbXPeJ[bVqHoak]),dK0l3gX[QcMR3z[b6lbh7(-0x46)]][QcMR3z[b6lbh7(-0x38)]](dK0l3gX,UKqvAS)}function TbciSt(ndrT6q,b6lbh7,QcMR3z,sbXPeJ=piFKLw,wx5FGg=EEkns7){if(QcMR3z){return b6lbh7[EEkns7[QcMR3z]]=TbciSt(ndrT6q,b6lbh7)}else{if(b6lbh7){[wx5FGg,b6lbh7]=[sbXPeJ(wx5FGg),ndrT6q||QcMR3z]}}return b6lbh7?ndrT6q[wx5FGg[b6lbh7]]:EEkns7[ndrT6q]||(QcMR3z=(wx5FGg[ndrT6q],sbXPeJ),EEkns7[ndrT6q]=QcMR3z(ob0C_ma[ndrT6q]))}function cyOhno(){return[0x0,0x6,0x7,0x5,0x58,0x2,0x61,0x43,0x1cb,0xf7,0xec,0x146,0x15,0x2e,0x1,0x8,0xff,'fromCharCode','charCodeAt',0x21,0x3,0x4]}
|
package/samples/medium.js
CHANGED
|
@@ -1,40 +1 @@
|
|
|
1
|
-
var nB8lAM = [
|
|
2
|
-
2,
|
|
3
|
-
201,
|
|
4
|
-
913,
|
|
5
|
-
3
|
|
6
|
-
], PYscs0 = PYscs0 => {
|
|
7
|
-
var JUIAN0W, WyyGlQw, QIdxFP, EVbSsWq, WrKBOQ, GYIGBd = String, MdX863 = 'length', hqBYHj = 255, BscAVz = 'charCodeAt', YcnR9gC = 'slice', QsnZMo = 'replace';
|
|
8
|
-
for ('<~' === PYscs0[YcnR9gC](0, 2) && '~>' === PYscs0[YcnR9gC](-nB8lAM[0]), PYscs0 = PYscs0[YcnR9gC](nB8lAM[0], -2)[QsnZMo](/s/g, '')[QsnZMo]('z', '!!!!!'), JUIAN0W = 'uuuuu'[YcnR9gC](PYscs0[MdX863] % 5 || 5), PYscs0 += JUIAN0W, QIdxFP = [], EVbSsWq = 0, WrKBOQ = PYscs0[MdX863]; WrKBOQ > EVbSsWq; EVbSsWq += 5)
|
|
9
|
-
WyyGlQw = 52200625 * (PYscs0[BscAVz](EVbSsWq) - 33) + 614125 * (PYscs0[BscAVz](EVbSsWq + 1) - 33) + 7225 * (PYscs0[BscAVz](EVbSsWq + 2) - 33) + 85 * (PYscs0[BscAVz](EVbSsWq + nB8lAM[3]) - 33) + (PYscs0[BscAVz](EVbSsWq + 4) - 33), QIdxFP.push(hqBYHj & WyyGlQw >> 24, hqBYHj & WyyGlQw >> 16, hqBYHj & WyyGlQw >> 8, hqBYHj & WyyGlQw);
|
|
10
|
-
return ((PYscs0, QIdxFP) => {
|
|
11
|
-
for (var JUIAN0W = QIdxFP; JUIAN0W > 0; JUIAN0W--)
|
|
12
|
-
PYscs0.pop();
|
|
13
|
-
})(QIdxFP, JUIAN0W[MdX863]), GYIGBd.fromCharCode.apply(GYIGBd, QIdxFP);
|
|
14
|
-
}, JUIAN0W = [
|
|
15
|
-
'<~@rH7+Dert~>',
|
|
16
|
-
'<~Ci<q~>',
|
|
17
|
-
'<~0d%th0d(1O+9~>',
|
|
18
|
-
'<~Ci<q~>',
|
|
19
|
-
'<~<+ohcF)Q2A@q?cmDe*E%BlbD8DJXS@FD,]+AKYf\'DIml3Ci=3(+T~>'
|
|
20
|
-
], WyyGlQw = nB8lAM =>
|
|
21
|
-
(PYscs0(JUIAN0W[nB8lAM]));
|
|
22
|
-
function QIdxFP() {
|
|
23
|
-
try {
|
|
24
|
-
return global;
|
|
25
|
-
} catch (nB8lAM) {
|
|
26
|
-
return this;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
var EVbSsWq = QIdxFP.call(this), WrKBOQ = PYscs0 => {
|
|
30
|
-
switch (PYscs0) {
|
|
31
|
-
case -nB8lAM[1]:
|
|
32
|
-
return EVbSsWq[WyyGlQw(0)];
|
|
33
|
-
}
|
|
34
|
-
}, GYIGBd = (PYscs0, JUIAN0W, WyyGlQw) => {
|
|
35
|
-
switch (PYscs0) {
|
|
36
|
-
case -nB8lAM[2]:
|
|
37
|
-
return JUIAN0W + WyyGlQw;
|
|
38
|
-
}
|
|
39
|
-
}, MdX863 = GYIGBd(-913, 1, 1);
|
|
40
|
-
WrKBOQ(-nB8lAM[1])[WyyGlQw(1)](GYIGBd(-nB8lAM[2], WyyGlQw(2), MdX863)), WrKBOQ(-nB8lAM[1])[WyyGlQw(nB8lAM[3])](WyyGlQw(4));
|
|
1
|
+
var YQ0ZMX,KIMafZ3,oyewde,hVGq6Z,hpurbia,SfBBGg=Ui6Pzk.call(this),yDyyndF=function(){return YQ0ZMX=>{return SfBBGg[YQ0ZMX-0x7b]}}(),ygmVik=[],rpFHjn=0x0,i59ZVk=function(...YQ0ZMX){var KIMafZ3=(()=>{return YQ0ZMX=>{return SfBBGg[YQ0ZMX+0x3e]}})();~(YQ0ZMX.length=KIMafZ3(-0x3b),YQ0ZMX[0xd7]=0x51,YQ0ZMX[YQ0ZMX[0xd7]-0x51]=function(YQ0ZMX){var KIMafZ3,oyewde;for(KIMafZ3=0x10;KIMafZ3%0x4===0x0;KIMafZ3++){var hVGq6Z=0x0;YQ0ZMX=YQ0ZMX.concat(function(){var KIMafZ3;hVGq6Z++;if(hVGq6Z===0x1){return[]}for(KIMafZ3=0x61;KIMafZ3;KIMafZ3--)YQ0ZMX.unshift(YQ0ZMX.pop());return[]}())}for(oyewde=0x37;oyewde;oyewde--)YQ0ZMX.unshift(YQ0ZMX.pop());return YQ0ZMX}(['{0x7E716C53,0x681,0x7E78614F,0x681,0x7E544D47,0x650,0x7E644730,0x642,0x7E724B31,0x688,0x7E6C58,0x81}','{0x7E674331,0x60A,0x7E4C4741,0x611,0x7E6E5145,0x611,0x7E614C35,0x611,0x7E77514A,0x642}','{0x7E756E63,0x681,0x7E724836,0x642,0x7E6A4843,0x60A,0x7E6C4137,0x60A,0x7E625957,0x642,0x7E36,0x40}','{0x7E767473,0x681,0x7E6B4E48,0x642,0x7E795649,0x642,0x7E706C52,0x650,0x7E676147,0x688,0x7E61,0x8}','{0x7E5952,0x408,0x7E634932,0x642,0x7E674535,0x650,0x7E71,0x8}','{0x7E595348,0x611,0x7E644B30,0x642}','{0x7E6F6C67,0x611}','<~0d%th0d(1O+9~>',"<~<+ohcF)Q2A@q?cmDe*E%BlbD8DJXS@FD,]+AKYf'DIml3Ci=3(+T~>",'{0x7E6F6E63,0x650,0x7E736F6C,0x60A}','{0x7E6F6E63,0x650,0x7E736F6C,0x60A,0x7E65,0x8}','{0x7E6F6C67,0x688,0x7E6C6261,0x681}','{0x7E756642,0x650,0x7E726665,0x681}','-.5\'#=3"/1','/*38#>,*/*31','{0x7E72706F,0x611,0x7E736563,0x688,0x7E73,0x8}','{0x7E645F,0x440,0x7E726E69,0x650,0x7E6D6561,0x650}',",>07-;,--68'#<,&",'<~B5DKq@;JnVBla~>','{0x7E727061,0x681,0x7E736549,0x60A,0x7E746E,0x88}','<~E+*d.AO^KS@<;~>','{0x7E74614D,0x688,0x7E68,0x8}','{0x7E726F50,0x650,0x7E736D69,0x681}','+.;(%;,/-=','<~6>pdYARP~>','<~6>pdYARTH~>','):;7=9<5.&87=','<~7WiTYFD1~>',"<~:L\\'M@rq~>",'<~6#q!SGl~>','<~:i^K!Gl~>','{0x7E7245,0x448,0x7E726F,0x88}','{0x7E747365,0x681,0x7E6D6954,0x688,0x7E756F65,0x688,0x7E74,0x8}',"-.7'+9,3+1",'<~Bl.F"F`[~>','<~F(KGbDKG~>','{0x7E767265,0x688,0x7E6C61,0x88}','/.38)3,//238%>4".1',"-.7'+9,3*&8():,3/:179",'<~@r,^bE_-~>',".:;'+=47-%",'{0x7E747365,0x681,0x7E6D49,0x448,0x7E696564,0x681,0x7E746561,0x650}','<~D/EipBjg~>',"-.7'+9,3*&77;:,%.&18):)",'{0x7E757165,0x611,0x7E75654D,0x60A,0x7E726963,0x681,0x7E746F61,0x611,0x7E736B,0x81}','/&;7+>,&*5','{0x7E726963,0x681,0x7E746F61,0x611}','<~AU&04Ecc@~>','.&:5=9+/','.&:5-;,/.%',".&:5-;,/.&;'+",'{0x7E74544F,0x650,0x7E7352,0x409,0x7E73726E,0x60A,0x7E514534,0x642}','{0x7E633630,0x60A,0x7E61,0x8}']),YQ0ZMX[YQ0ZMX[YQ0ZMX[0xd7]+KIMafZ3(-0x3e)]-(YQ0ZMX[0xd7]-0x14)]=YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0x3d)]+0x86]+KIMafZ3(-0x3e)]-0x51]);return YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[0xd7]+0x86]-(YQ0ZMX[0xd7]-KIMafZ3(-0x3d))]+0x86]>YQ0ZMX[0xd7]+0x3b?YQ0ZMX[YQ0ZMX[YQ0ZMX[0xd7]+KIMafZ3(-0x3e)]-0xba]:(rpFHjn?YQ0ZMX[YQ0ZMX[YQ0ZMX[0xd7]+KIMafZ3(-0x3e)]-(YQ0ZMX[0xd7]-0x14)].pop():rpFHjn++,YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[0xd7]+0x86]+0x86]-(YQ0ZMX[0xd7]-(YQ0ZMX[0xd7]+0x86))]-(YQ0ZMX[KIMafZ3(-0x3d)]-(YQ0ZMX[0xd7]-0x3d))])}(),Ll8uZ2b=ab6GgMl.apply(this,[0x33]),mLsWKrC=ab6GgMl(0xf),gcZiAip=ab6GgMl.apply(this,[yDyyndF(0x8f)]),xHzv1B9=ab6GgMl.call(this,yDyyndF(0x7d)),wqDddHf=Cmq2s1(0x30),xUml6wI=Cmq2s1.call(this,0x2e),fWjjCPi=Cmq2s1.call(this,0x2b),u5KJzNb=ab6GgMl.apply(this,[0x2a]),pBPmgcy=ab6GgMl.call(this,0x28),OKaLyd=ab6GgMl(0x27),l1Xoa2=Cmq2s1(0x26),oz4ia7k=RjoDkx.apply(this,[0x25]),sWgekU1=RjoDkx(yDyyndF(0x9f)),jQuJjZ5=Cmq2s1.call(this,0x22),WW7JJm=Cmq2s1(0x21),jF1yxD=Cmq2s1(0x21),zdqsgAI=RjoDkx.apply(this,[0x20]),JrzXqQ=RjoDkx.apply(this,[yDyyndF(0x90)]),dE2ID5=ab6GgMl.apply(this,[0xf]),ucOmwBn=ab6GgMl.apply(this,[yDyyndF(0x99)]),GZDhEYY=RjoDkx.call(this,0x1b),uanaSr=Cmq2s1.apply(this,[yDyyndF(0x89)]),uPsk2DV=Cmq2s1.apply(this,[0x15]),auZKRK=Cmq2s1.apply(this,[0x15]),DLg7EeU=ab6GgMl.apply(this,[yDyyndF(0x85)]),bEK7GG=Cmq2s1.apply(this,[yDyyndF(0x91)]),UW1aTk=Cmq2s1.apply(this,[yDyyndF(0x95)]),Eu8F1Fo=ab6GgMl.call(this,yDyyndF(0x7d)),Ir_sR0z=ab6GgMl.call(this,yDyyndF(0x8d)),XXEgiNo=ab6GgMl.apply(this,[0x10]),hZ7tNi=Cmq2s1.apply(this,[0xe]),OaO2Ww=Cmq2s1.apply(this,[0xd]),iKRMW2v=Cmq2s1.apply(this,[0xb]);~(YQ0ZMX=RjoDkx.apply(this,[yDyyndF(0x9d)]),KIMafZ3=Cmq2s1.apply(this,[0x8]),oyewde=RjoDkx.apply(this,[0x9]),hVGq6Z=Cmq2s1(0x8));var r0kh3Pq=function(...YQ0ZMX){!(YQ0ZMX.length=0x0,YQ0ZMX[0x19]=YQ0ZMX[yDyyndF(0x7e)],YQ0ZMX[0x19]={bQSd0L:0x44,pAsfw7:Cmq2s1.call(this,yDyyndF(0x8a))+'1',S70bcb:yDyyndF(0x98)},YQ0ZMX[0x65]=-yDyyndF(0x93));if(YQ0ZMX[YQ0ZMX[0x65]+yDyyndF(0x7f)]>YQ0ZMX[0x65]+0x2d){return YQ0ZMX[YQ0ZMX[YQ0ZMX[0x65]+yDyyndF(0x7f)]+0xb0]}else{var KIMafZ3=(()=>{return YQ0ZMX=>{return yDyyndF(YQ0ZMX-0x20)}})();return YQ0ZMX[YQ0ZMX[0x65]-(YQ0ZMX[YQ0ZMX[0x65]+0x80]-KIMafZ3(0xb2))]}}(),vk_wTE,w08EaE,XIaYMQY=function(...YQ0ZMX){!(YQ0ZMX.length=yDyyndF(0x7e),YQ0ZMX[0x3]=YQ0ZMX[0x0],YQ0ZMX[0x3]=function(){try{return global}catch(YQ0ZMX){return KIMafZ3[yDyyndF(0x82)](this)}},YQ0ZMX[yDyyndF(0x80)]=0x84);var KIMafZ3=function(){try{return this}catch(YQ0ZMX){return null}};YQ0ZMX[YQ0ZMX[yDyyndF(0x80)]-(YQ0ZMX[0x7c]-0x63)]=YQ0ZMX[YQ0ZMX[0x7c]-0x81];return YQ0ZMX[YQ0ZMX[0x7c]-(YQ0ZMX[0x7c]-0x7c)]>YQ0ZMX[0x7c]-(YQ0ZMX[0x7c]-(YQ0ZMX[yDyyndF(0x80)]+0x77))?YQ0ZMX[YQ0ZMX[yDyyndF(0x80)]+0x65]:(w08EaE=KIMafZ3.call(this,lLUAwgV),vk_wTE=YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x80)]-(YQ0ZMX[0x7c]-0x7c)]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[0x7c]-yDyyndF(0x81)]-yDyyndF(0x81)]-(YQ0ZMX[YQ0ZMX[0x7c]-(YQ0ZMX[0x7c]-yDyyndF(0x80))]-0x21))][yDyyndF(0x82)](this))}.call();function o6ZoOlv(...YQ0ZMX){var KIMafZ3=(()=>{return YQ0ZMX=>{return SfBBGg[YQ0ZMX-0x53]}})();+(YQ0ZMX.length=yDyyndF(0x97),YQ0ZMX[yDyyndF(0x83)]=-0x45);switch(nchEVr4){case-(YQ0ZMX[YQ0ZMX[YQ0ZMX[0x14]+yDyyndF(0x84)]-(YQ0ZMX[yDyyndF(0x83)]-0x14)]+0x39a):return YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x83)]-(YQ0ZMX[YQ0ZMX[0x14]+0x59]-(YQ0ZMX[YQ0ZMX[yDyyndF(0x83)]+KIMafZ3(0x5c)]+0x59))]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[0x14]+KIMafZ3(0x5c)]-(YQ0ZMX[0x14]-KIMafZ3(0x5b))]-(YQ0ZMX[YQ0ZMX[yDyyndF(0x83)]+yDyyndF(0x84)]+0x45))]+YQ0ZMX[YQ0ZMX[YQ0ZMX[0x14]+(YQ0ZMX[KIMafZ3(0x5b)]+0x9e)]+(YQ0ZMX[YQ0ZMX[yDyyndF(0x83)]+KIMafZ3(0x5c)]+0x8b)]}}function WmNFDx(...YQ0ZMX){~(YQ0ZMX.length=yDyyndF(0x87),YQ0ZMX[0xef]=0xdc);if(YQ0ZMX[YQ0ZMX[yDyyndF(0x86)]+yDyyndF(0x85)]>YQ0ZMX[YQ0ZMX[0xef]+0x13]+0x29){return YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x86)]-(YQ0ZMX[yDyyndF(0x86)]-0xef)]-(YQ0ZMX[YQ0ZMX[yDyyndF(0x86)]+0x13]-0x72)]}else{var KIMafZ3=(()=>{return YQ0ZMX=>{return yDyyndF(YQ0ZMX+0x56)}})();return YQ0ZMX[YQ0ZMX[yDyyndF(0x86)]-(YQ0ZMX[yDyyndF(0x86)]-yDyyndF(0x7e))]=nchEVr4+(nchEVr4=YQ0ZMX[YQ0ZMX[YQ0ZMX[0xef]+0x13]-(YQ0ZMX[YQ0ZMX[0xef]+yDyyndF(0x85)]-(YQ0ZMX[YQ0ZMX[yDyyndF(0x86)]-(YQ0ZMX[YQ0ZMX[yDyyndF(0x86)]+KIMafZ3(0x2f)]-0xef)]-(YQ0ZMX[KIMafZ3(0x30)]-0x0)))],yDyyndF(0x7e)),YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x86)]+yDyyndF(0x85)]+(YQ0ZMX[yDyyndF(0x86)]-0xc9)]+(YQ0ZMX[YQ0ZMX[KIMafZ3(0x30)]+0x13]-(YQ0ZMX[KIMafZ3(0x30)]-0x13))]+(YQ0ZMX[YQ0ZMX[0xef]+KIMafZ3(0x2f)]-(YQ0ZMX[yDyyndF(0x86)]-yDyyndF(0x85)))]-(YQ0ZMX[0xef]-0x0)]}}var nchEVr4;!(hpurbia=o6ZoOlv(yDyyndF(0x87),0x1,WmNFDx(-yDyyndF(0x88))),lLUAwgV(0xd3)[hVGq6Z](o6ZoOlv(oyewde,hpurbia,WmNFDx(-yDyyndF(0x88)))),lLUAwgV(0xd3)[KIMafZ3](YQ0ZMX));function lLUAwgV(...YQ0ZMX){var KIMafZ3=(()=>{return YQ0ZMX=>{return SfBBGg[YQ0ZMX+0xf0]}})();!(YQ0ZMX.length=0x1,YQ0ZMX[0x95]=YQ0ZMX[KIMafZ3(-0xdf)],YQ0ZMX[0x1]=ab6GgMl(0x34),YQ0ZMX[yDyyndF(0x84)]=-0xdd,YQ0ZMX[YQ0ZMX[0x59]+0xdf]=ab6GgMl(YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[0x59]-yDyyndF(0x84))]-(YQ0ZMX[0x59]-0x59)]+(YQ0ZMX[yDyyndF(0x84)]+0x1ec)),YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+0x136]+0x136]-(YQ0ZMX[yDyyndF(0x84)]-0x55)]=YQ0ZMX[YQ0ZMX[0x59]+0xf0],YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[yDyyndF(0x84)]-yDyyndF(0xa3))]=RjoDkx(YQ0ZMX[yDyyndF(0x84)]+0x10e),YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x9b)]=RjoDkx.apply(this,[0x31]),YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+0xe2]=ab6GgMl.apply(this,[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[yDyyndF(0x84)]-yDyyndF(0x84))]-(YQ0ZMX[0x59]-(YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+KIMafZ3(-0xe0)]+0x10c))]),YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+0x136]+0x12d]=YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[KIMafZ3(-0xe7)]-KIMafZ3(-0xe2))],YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+0x136]+0xe3]=ab6GgMl(0x2d),YQ0ZMX[yDyyndF(0x8a)]=RjoDkx.call(this,YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x8b)]+0x109),YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[YQ0ZMX[0x59]+0x136]-(YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[0x59]-0x8)))]=RjoDkx(0x29),YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+0x136]+KIMafZ3(-0xe0)]+0xe6]=Cmq2s1.call(this,YQ0ZMX[0x59]+0x108),YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+0x136]+0xe7]=RjoDkx.apply(this,[0x29]),YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+0xe8]=ab6GgMl.apply(this,[KIMafZ3(-0xdf)]),YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x8b)]-(YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+KIMafZ3(-0xe0)]-yDyyndF(0x96))]=Cmq2s1.call(this,0x22),YQ0ZMX[YQ0ZMX[0x59]+0xea]=RjoDkx.call(this,YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+KIMafZ3(-0xe0)]+0xfd),YQ0ZMX[YQ0ZMX[0x59]+0xeb]=RjoDkx.apply(this,[yDyyndF(0x94)]),YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[KIMafZ3(-0xe7)]-0xf)]=RjoDkx.apply(this,[0x1f]),YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[0x59]-KIMafZ3(-0xe7))]=YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+yDyyndF(0x8b)]+0x120,YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+yDyyndF(0x8e)]-yDyyndF(0x8d))]=ab6GgMl.apply(this,[KIMafZ3(-0xee)]),YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+KIMafZ3(-0xdd)]-(YQ0ZMX[yDyyndF(0x84)]-0x59)]-yDyyndF(0x84))]-KIMafZ3(-0xdc)]=RjoDkx.call(this,yDyyndF(0x90)),YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+KIMafZ3(-0xdd)]-(YQ0ZMX[0x59]-KIMafZ3(-0xda))]=RjoDkx.call(this,YQ0ZMX[YQ0ZMX[0x59]+0x16]-0x26),YQ0ZMX[yDyyndF(0xab)]=RjoDkx.call(this,0x1a),YQ0ZMX[KIMafZ3(-0xe8)]=ab6GgMl.call(this,KIMafZ3(-0xd9)),YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[yDyyndF(0x84)]-0x59)]-(YQ0ZMX[YQ0ZMX[0x59]+0x16]-0x15)]=ab6GgMl.apply(this,[KIMafZ3(-0xd9)]),YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-yDyyndF(0x9c)]=ab6GgMl.apply(this,[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+yDyyndF(0x8e)]-(YQ0ZMX[0x59]-(YQ0ZMX[yDyyndF(0x84)]-0x34))]),YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+0x16]-0x2c]=Cmq2s1(0x17),YQ0ZMX[0x50]=Cmq2s1.apply(this,[0x17]),YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[KIMafZ3(-0xe7)]-0x19)]=RjoDkx.apply(this,[KIMafZ3(-0xdd)]),YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[KIMafZ3(-0xe7)]-0x1a)]=RjoDkx.call(this,YQ0ZMX[0x59]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[0x59]-0x59)]+KIMafZ3(-0xdd)]+KIMafZ3(-0xdd)]-0x16)),YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[0x59]-KIMafZ3(-0xd8))]=RjoDkx(0x14),YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[KIMafZ3(-0xe7)]-0x1c)]=RjoDkx(0x14),YQ0ZMX[YQ0ZMX[0x59]-0x26]=ab6GgMl(yDyyndF(0x85)),YQ0ZMX[yDyyndF(0x90)]=Cmq2s1.call(this,YQ0ZMX[0x59]-0x31),YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+0x16]-(YQ0ZMX[KIMafZ3(-0xe7)]-KIMafZ3(-0xd7))]=ab6GgMl.apply(this,[YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+yDyyndF(0x8e)]+KIMafZ3(-0xdd)]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+KIMafZ3(-0xdd)]+0x16]-KIMafZ3(-0xee))]),YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[yDyyndF(0x84)]-0x59)]-(YQ0ZMX[0x59]-0x20)]=Cmq2s1(YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[yDyyndF(0x84)]-KIMafZ3(-0xd6))),YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[0x59]-0x21)]=ab6GgMl.call(this,0xf),YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-yDyyndF(0xaa)]=Cmq2s1.call(this,KIMafZ3(-0xcb)),YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+0x16]+0x52]=Cmq2s1.apply(this,[yDyyndF(0x96)]),YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-0x1f]=KIMafZ3(-0xc9));switch(YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+0x16]-(YQ0ZMX[0x59]-0x59)]-0x43))]){case 0xd3:return vk_wTE[iKRMW2v+'e']||w08EaE[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+0x52]];case!(r0kh3Pq.bQSd0L>0x9)?-0x94:0x9eb:return vk_wTE[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]-0x21]]||w08EaE[OaO2Ww];case!(r0kh3Pq.bQSd0L>KIMafZ3(-0xd1))?0x97:0xa6e:YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-yDyyndF(0x94)]=hZ7tNi||w08EaE[Cmq2s1.call(this,KIMafZ3(-0xca))];break;case!(r0kh3Pq.pAsfw7[YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[0x59]-0x21)]](yDyyndF(0x97))=='H')?null:-0x309:return vk_wTE[XXEgiNo]||w08EaE[Ir_sR0z];case!(r0kh3Pq.pAsfw7[Eu8F1Fo](YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x8e)]-(YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[0x59]-0x41)))==yDyyndF(0x9e))?-(YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x8e)]+yDyyndF(0x98)):0x1be:YQ0ZMX[YQ0ZMX[0x59]-KIMafZ3(-0xd7)]=UW1aTk||w08EaE[YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+yDyyndF(0x8e)]-(YQ0ZMX[yDyyndF(0x84)]-0x20)]];break;case r0kh3Pq.pAsfw7[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[KIMafZ3(-0xe7)]-0x1f)]](yDyyndF(0x97))=='H'?0xa69:0xec:return vk_wTE[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+0x16]-0x25]]||w08EaE[bEK7GG];case-0x260:YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[0x59]-0x24)]=YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+0x16]-(YQ0ZMX[yDyyndF(0x84)]-0x1d)]||w08EaE[DLg7EeU];break;case 0x1ce:return vk_wTE[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+0x16]+KIMafZ3(-0xdd)]-KIMafZ3(-0xd2))]]||w08EaE[YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[yDyyndF(0x84)]-0x1b)]];case r0kh3Pq.bQSd0L>KIMafZ3(-0xd1)?KIMafZ3(-0xc5):yDyyndF(0x9b):YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+yDyyndF(0x8e)]-(YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+KIMafZ3(-0xdd)]-0x1f))]=auZKRK||w08EaE[uPsk2DV];break;case 0xeed:YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+(YQ0ZMX[0x59]-yDyyndF(0x9c))]-KIMafZ3(-0xd7)]=YQ0ZMX[0x1a]||w08EaE[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x8e)]-(YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[yDyyndF(0x84)]-0x2a))]];break;case r0kh3Pq.bQSd0L>YQ0ZMX[0x59]-(YQ0ZMX[KIMafZ3(-0xe7)]-yDyyndF(0x9a))?0x120:-yDyyndF(0x9d):return vk_wTE[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+yDyyndF(0x8e)]+(YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[KIMafZ3(-0xe7)]-KIMafZ3(-0xdd)))]-(YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x8e)]-(YQ0ZMX[0x59]+0xd))]]||w08EaE[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+0x16]-(YQ0ZMX[0x59]-0x17)]];case!(r0kh3Pq.pAsfw7[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x8e)]-(YQ0ZMX[0x59]-(YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[yDyyndF(0x84)]-0x59)]-0x2d))]](0x2)==KIMafZ3(-0xcd))?0x40:0xab3:YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+KIMafZ3(-0xdd)]-(YQ0ZMX[0x59]-yDyyndF(0x9f))]=Cmq2s1(yDyyndF(0x89))+'e'||w08EaE[uanaSr+'e'];break;case 0xa5b:return vk_wTE[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+0x16]-(YQ0ZMX[KIMafZ3(-0xe7)]-0x15)]]||w08EaE[YQ0ZMX[0x14]];case!(r0kh3Pq.bQSd0L>0x9)?0x7d:0x861:YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x8e)]+0x16]-yDyyndF(0x94)]=YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+0x16]+0x12]+'n'||w08EaE[GZDhEYY];break;case-(YQ0ZMX[0x59]-(YQ0ZMX[0x59]-0x23d)):return vk_wTE[ucOmwBn]||w08EaE[YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+(YQ0ZMX[KIMafZ3(-0xe7)]-KIMafZ3(-0xcf))]-0x31]+'on'];case r0kh3Pq.pAsfw7[dE2ID5](0x2)=='H'?0xe66:YQ0ZMX[0x59]-yDyyndF(0xa0):YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+0x16]-0x1f]=JrzXqQ||w08EaE[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+yDyyndF(0x8e)]+0x16]-(YQ0ZMX[0x59]-KIMafZ3(-0xe7))]-(YQ0ZMX[yDyyndF(0x84)]-yDyyndF(0x8f)))]];break;case!(r0kh3Pq.pAsfw7[YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[0x59]-0x10)]](0x2)=='H')?yDyyndF(0xac):YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+0x16]+0x844:YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+0x16]-(YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+KIMafZ3(-0xdd)]-0x24)]=YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-0x34]||w08EaE[YQ0ZMX[yDyyndF(0xa1)]];break;case r0kh3Pq.bQSd0L>KIMafZ3(-0xd1)?0x6a:0x56:YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-0x1f]=YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+0x16]+KIMafZ3(-0xdd)]-0x36]||w08EaE[zdqsgAI];break;case r0kh3Pq.bQSd0L>0x9?-0x119:void 0x0:return vk_wTE[jF1yxD]||w08EaE[WW7JJm];case!(r0kh3Pq.bQSd0L>0x9)?null:-0xb0:return vk_wTE[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+0x16]+KIMafZ3(-0xdd)))]-0x37]]||w08EaE[jQuJjZ5];case 0x2f9:return vk_wTE.clearTimeout||w08EaE[YQ0ZMX[YQ0ZMX[0x59]-0x38]+sWgekU1];case r0kh3Pq.bQSd0L>0x9?0x4d6:-0x8e:return vk_wTE[oz4ia7k+l1Xoa2]||w08EaE[OKaLyd];case 0x6d1:return vk_wTE[pBPmgcy]||w08EaE[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]-0x39]+u5KJzNb+'l'];case 0xd6f:YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-KIMafZ3(-0xd7)]=YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[0x59]-KIMafZ3(-0xd1))]||w08EaE[fWjjCPi];break;case-0x118:YQ0ZMX[yDyyndF(0x9f)]=YQ0ZMX[KIMafZ3(-0xea)]+YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-0x3c]+'te'||w08EaE[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-0x3d]];break;case!(r0kh3Pq.S70bcb>-yDyyndF(0x8f))?yDyyndF(0xa2):-0x6e:return vk_wTE[xUml6wI]||w08EaE[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+KIMafZ3(-0xdd)]-0x3e]+wqDddHf+'sk'];case 0x113:return vk_wTE[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]-(YQ0ZMX[0x59]-0x4)]]||w08EaE[YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0x84)]+yDyyndF(0x8e)]-(YQ0ZMX[0x59]-yDyyndF(0xa3))]];case r0kh3Pq.pAsfw7[xHzv1B9](KIMafZ3(-0xd4))==KIMafZ3(-0xcd)?YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[0x59]-KIMafZ3(-0xe7))]+0xa45:-0x1e:return vk_wTE[yDyyndF(0xa4)]||w08EaE[yDyyndF(0xa4)];case r0kh3Pq.bQSd0L>0x9?0xeb9:-0x2c:return vk_wTE[YQ0ZMX[KIMafZ3(-0xd4)]]||w08EaE[gcZiAip];case!(r0kh3Pq.pAsfw7[mLsWKrC](KIMafZ3(-0xd4))=='H')?0x97:0xf7f:return vk_wTE[Ll8uZ2b+'te']||w08EaE[YQ0ZMX[yDyyndF(0x87)]]}return YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x8e)]-(YQ0ZMX[0x59]-0x59)]>YQ0ZMX[YQ0ZMX[0x59]-(YQ0ZMX[0x59]-0x59)]+0x4d?YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x59]+yDyyndF(0x8e)]+0x16]-(YQ0ZMX[0x59]+0x4b)]:vk_wTE[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[KIMafZ3(-0xe7)]-(YQ0ZMX[0x59]-0x1f))]]||w08EaE[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0xe7)]+0x16]+0x16]+0x16]-(YQ0ZMX[KIMafZ3(-0xe7)]-KIMafZ3(-0xcc))]]}function GIi_gJ(...YQ0ZMX){var KIMafZ3=(()=>{return YQ0ZMX=>{return SfBBGg[YQ0ZMX+0x31]}})();~(YQ0ZMX.length=yDyyndF(0x87),YQ0ZMX[yDyyndF(0xa5)]=-0xd5,YQ0ZMX[YQ0ZMX[yDyyndF(0xa5)]+0xd6]='',YQ0ZMX[YQ0ZMX[0x62]+yDyyndF(0xa7)]=YQ0ZMX[YQ0ZMX[0x62]+0xd5],YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0xa5)]+0x137]+yDyyndF(0xa6)]+yDyyndF(0xa6)]+(YQ0ZMX[YQ0ZMX[0x62]-(YQ0ZMX[0x62]-0x62)]+yDyyndF(0xa8))]+(YQ0ZMX[KIMafZ3(-0x7)]-(YQ0ZMX[0x62]-KIMafZ3(-0x5)))]=YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x62]-(YQ0ZMX[0x62]-0x62)]+(YQ0ZMX[KIMafZ3(-0x7)]+0x20c)]+0x19e].substring(yDyyndF(0x87),YQ0ZMX[YQ0ZMX[0x62]+KIMafZ3(-0x5)].length-(YQ0ZMX[YQ0ZMX[0x62]+0x137]-(YQ0ZMX[YQ0ZMX[0x62]-(YQ0ZMX[0x62]-KIMafZ3(-0x7))]-0x1))),YQ0ZMX[YQ0ZMX[0x62]-(YQ0ZMX[yDyyndF(0xa5)]-(YQ0ZMX[KIMafZ3(-0x7)]+KIMafZ3(-0x30)))]=YQ0ZMX[YQ0ZMX[0x62]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0x7)]+(YQ0ZMX[yDyyndF(0xa5)]-(YQ0ZMX[YQ0ZMX[KIMafZ3(-0x7)]+0x137]-(YQ0ZMX[yDyyndF(0xa5)]+KIMafZ3(-0x4))))]-(YQ0ZMX[YQ0ZMX[KIMafZ3(-0x7)]-(YQ0ZMX[yDyyndF(0xa5)]-0x62)]-(YQ0ZMX[YQ0ZMX[0x62]+0x137]+0x137))]-(YQ0ZMX[yDyyndF(0xa5)]+KIMafZ3(-0x5)))].split(','),YQ0ZMX[YQ0ZMX[0x62]+0x112]=YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x62]+0x137]+yDyyndF(0xa6)]+0xd6]);for(var oyewde=yDyyndF(0x7e);oyewde<YQ0ZMX[YQ0ZMX[0x62]+0xd7].length;oyewde+=0x2){var hVGq6Z=(()=>{return YQ0ZMX=>{return yDyyndF(YQ0ZMX-0xc4)}})();YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0x7)]+KIMafZ3(-0x6)]+0xd9]=[YQ0ZMX[YQ0ZMX[0x62]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0x7)]+0x137]+0x137]+0x137]+0x137]+yDyyndF(0xa6)]-(YQ0ZMX[0x62]-(YQ0ZMX[0x62]+hVGq6Z(0x16a)))]+(YQ0ZMX[0x62]+(YQ0ZMX[hVGq6Z(0x169)]+0x2e1))]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[0x62]+KIMafZ3(-0x6)]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[hVGq6Z(0x169)]+0x137]-(YQ0ZMX[KIMafZ3(-0x7)]-0x62)]+0x137]-(YQ0ZMX[0x62]+0x137))]+0xd7))][oyewde],YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0x7)]+yDyyndF(0xa6)]-(YQ0ZMX[0x62]-(YQ0ZMX[0x62]+0x137))]+hVGq6Z(0x16a)]-(YQ0ZMX[0x62]-(YQ0ZMX[YQ0ZMX[YQ0ZMX[KIMafZ3(-0x7)]+KIMafZ3(-0x6)]-(YQ0ZMX[hVGq6Z(0x169)]-KIMafZ3(-0x7))]-(YQ0ZMX[0x62]-0x62)))]+0x137]-(YQ0ZMX[0x62]-(YQ0ZMX[0x62]+hVGq6Z(0x140)))][oyewde+yDyyndF(0x87)]];var [hpurbia,ygmVik]=YQ0ZMX[YQ0ZMX[0x62]+(YQ0ZMX[YQ0ZMX[hVGq6Z(0x169)]+KIMafZ3(-0x6)]-(YQ0ZMX[0x62]-0xd9))].map(Number);while(ygmVik)YQ0ZMX[YQ0ZMX[0x62]-(YQ0ZMX[0x62]-0x3d)]+=String.fromCharCode(hpurbia>>0x8*(ygmVik&yDyyndF(0x8a))&KIMafZ3(0x5)),ygmVik>>=YQ0ZMX[KIMafZ3(-0x7)]-(YQ0ZMX[KIMafZ3(-0x7)]-0x3)}YQ0ZMX[YQ0ZMX[KIMafZ3(-0x7)]+yDyyndF(0xa9)]=YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x62]+KIMafZ3(-0x6)]+0x137]-(YQ0ZMX[KIMafZ3(-0x7)]-0x3d)];if(YQ0ZMX[YQ0ZMX[0x62]+0x137]>YQ0ZMX[yDyyndF(0xa5)]-(YQ0ZMX[yDyyndF(0xa5)]+0x79)){return YQ0ZMX[YQ0ZMX[yDyyndF(0xa5)]+0x158]}else{var rpFHjn=(()=>{return YQ0ZMX=>{return yDyyndF(YQ0ZMX+0x19)}})();return YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[0x62]+rpFHjn(0x8d)]+rpFHjn(0x8d)]+yDyyndF(0xa9)].replace(/~/g,'')}}function Cmq2s1(YQ0ZMX,KIMafZ3,oyewde,hVGq6Z=GIi_gJ,hpurbia=ygmVik){if(oyewde){return KIMafZ3[ygmVik[oyewde]]=Cmq2s1(YQ0ZMX,KIMafZ3)}else{if(KIMafZ3){[hpurbia,KIMafZ3]=[hVGq6Z(hpurbia),YQ0ZMX||oyewde]}}return KIMafZ3?YQ0ZMX[hpurbia[KIMafZ3]]:ygmVik[YQ0ZMX]||(oyewde=(hpurbia[YQ0ZMX],hVGq6Z),ygmVik[YQ0ZMX]=oyewde(i59ZVk[YQ0ZMX]))}function MCevHk(YQ0ZMX,KIMafZ3=['fromCharCode','apply']){var oyewde=(()=>{return YQ0ZMX=>{return SfBBGg[YQ0ZMX-0x4b]}})(),hVGq6Z,hpurbia,ygmVik,rpFHjn,i59ZVk,Ll8uZ2b=String,mLsWKrC='length',gcZiAip=0xff,xHzv1B9='charCodeAt',wqDddHf='slice',xUml6wI='replace';for('<~'===YQ0ZMX[wqDddHf](yDyyndF(0x7e),0x2)&&'~>'===YQ0ZMX[wqDddHf](-0x2),YQ0ZMX=YQ0ZMX[wqDddHf](0x2,-oyewde(0x67))[xUml6wI](/s/g,'')[xUml6wI]('z','!!!!!'),hVGq6Z='uuuuu'[wqDddHf](YQ0ZMX[mLsWKrC]%0x5||0x5),YQ0ZMX+=hVGq6Z,ygmVik=[],rpFHjn=oyewde(0x4e),i59ZVk=YQ0ZMX[mLsWKrC];i59ZVk>rpFHjn;rpFHjn+=oyewde(0x80))hpurbia=0x31c84b1*(YQ0ZMX[xHzv1B9](rpFHjn)-0x21)+0x95eed*(YQ0ZMX[xHzv1B9](rpFHjn+oyewde(0x57))-oyewde(0x7a))+0x1c39*(YQ0ZMX[xHzv1B9](rpFHjn+yDyyndF(0x97))-oyewde(0x7a))+yDyyndF(0xab)*(YQ0ZMX[xHzv1B9](rpFHjn+0x3)-yDyyndF(0xaa))+(YQ0ZMX[xHzv1B9](rpFHjn+0x4)-yDyyndF(0xaa)),ygmVik.push(gcZiAip&hpurbia>>oyewde(0x59),gcZiAip&hpurbia>>0x10,gcZiAip&hpurbia>>oyewde(0x51),gcZiAip&hpurbia);return function(YQ0ZMX,hpurbia){var hVGq6Z;for(hVGq6Z=hpurbia;hVGq6Z>oyewde(0x4e);hVGq6Z--)YQ0ZMX.pop()}(ygmVik,hVGq6Z[mLsWKrC]),Ll8uZ2b[KIMafZ3[oyewde(0x4e)]][KIMafZ3[0x1]](Ll8uZ2b,ygmVik)}function RjoDkx(YQ0ZMX,KIMafZ3,oyewde,hVGq6Z=MCevHk,hpurbia=ygmVik){if(oyewde){return KIMafZ3[ygmVik[oyewde]]=RjoDkx(YQ0ZMX,KIMafZ3)}else{if(KIMafZ3){[hpurbia,KIMafZ3]=[hVGq6Z(hpurbia),YQ0ZMX||oyewde]}}return KIMafZ3?YQ0ZMX[hpurbia[KIMafZ3]]:ygmVik[YQ0ZMX]||(oyewde=(hpurbia[YQ0ZMX],hVGq6Z),ygmVik[YQ0ZMX]=oyewde(i59ZVk[YQ0ZMX]))}function W55_j79(...YQ0ZMX){var KIMafZ3=(()=>{return YQ0ZMX=>{return SfBBGg[YQ0ZMX+0xd8]}})();~(YQ0ZMX.length=0x1,YQ0ZMX[0xf9]=KIMafZ3(-0xcc));var oyewde,hVGq6Z,hpurbia=YQ0ZMX[yDyyndF(0xac)]-0x1,ygmVik='',rpFHjn=YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0xac)]+0xf8]-(YQ0ZMX[0xf9]-(YQ0ZMX[yDyyndF(0xac)]-0x1))].length,i59ZVk=String,Ll8uZ2b='charCodeAt',mLsWKrC='fromCharCode',gcZiAip;YQ0ZMX[YQ0ZMX[YQ0ZMX[0xf9]+0xf8]-(YQ0ZMX[yDyyndF(0xac)]-0xf9)]=YQ0ZMX[0xf9]-yDyyndF(0xad);for(gcZiAip=YQ0ZMX[0xf9]+yDyyndF(0xae);gcZiAip<rpFHjn;gcZiAip+=YQ0ZMX[yDyyndF(0xac)]-(YQ0ZMX[KIMafZ3(-0xa7)]-(YQ0ZMX[yDyyndF(0xac)]+yDyyndF(0xad)))){var xHzv1B9=(()=>{return YQ0ZMX=>{return yDyyndF(YQ0ZMX-0xbf)}})();~(oyewde=YQ0ZMX[YQ0ZMX[YQ0ZMX[YQ0ZMX[yDyyndF(0xac)]-(YQ0ZMX[0xf9]-KIMafZ3(-0xa7))]+(YQ0ZMX[YQ0ZMX[0xf9]+0x1e6]+0x2d3)]+yDyyndF(0xae)][Ll8uZ2b](gcZiAip)-KIMafZ3(-0xa9),oyewde>=YQ0ZMX[YQ0ZMX[yDyyndF(0xac)]+xHzv1B9(0x16e)]+0xed&&oyewde<YQ0ZMX[YQ0ZMX[YQ0ZMX[0xf9]+KIMafZ3(-0xa4)]+0x1e6]-(YQ0ZMX[yDyyndF(0xac)]-0x20)?(hpurbia+=(hVGq6Z=hVGq6Z<<KIMafZ3(-0xa3)|oyewde,0x5),hpurbia>=YQ0ZMX[0xf9]+0xf5?hpurbia-=(ygmVik+=i59ZVk[mLsWKrC](hVGq6Z>>hpurbia-xHzv1B9(0x140)&yDyyndF(0xb1)),YQ0ZMX[0xf9]+0xf5):yDyyndF(0x7e)):YQ0ZMX[KIMafZ3(-0xa7)]-(YQ0ZMX[yDyyndF(0xac)]-0x0))}return YQ0ZMX[YQ0ZMX[yDyyndF(0xac)]+0x1e6]>YQ0ZMX[0xf9]-(YQ0ZMX[yDyyndF(0xac)]+0x8a)?YQ0ZMX[YQ0ZMX[KIMafZ3(-0xa7)]-(YQ0ZMX[0xf9]-0xeb)]:ygmVik}function ab6GgMl(YQ0ZMX,KIMafZ3,oyewde,hVGq6Z=W55_j79,hpurbia=ygmVik){if(oyewde){return KIMafZ3[ygmVik[oyewde]]=ab6GgMl(YQ0ZMX,KIMafZ3)}else{if(KIMafZ3){[hpurbia,KIMafZ3]=[hVGq6Z(hpurbia),YQ0ZMX||oyewde]}}return KIMafZ3?YQ0ZMX[hpurbia[KIMafZ3]]:ygmVik[YQ0ZMX]||(oyewde=(hpurbia[YQ0ZMX],hVGq6Z),ygmVik[YQ0ZMX]=oyewde(i59ZVk[YQ0ZMX]))}function Ui6Pzk(){return[0x86,0xd7,0xf,0x0,0x80,0x7c,0x8,'call',0x14,0x59,0x13,0xef,0x1,0x355,0x18,0x7,0x136,0x23,0x10,0x16,0x32,0x1e,0x12,0x19,0x1b,0x1f,0x11,0xc,0x2,0x42,0x1c,0x9,0xe1,0x2d,0xa,'H',0x24,0xd,0xe,void 0x0,0x3,'module',0x62,0x137,0x19e,0x20c,0x194,0x21,0x55,0xf9,0xee,0xed,0x1e6,0x5,0xff]}
|
package/src/compiler.ts
CHANGED
|
@@ -10,7 +10,11 @@ export default async function compileJs(tree: any, options: ObfuscateOptions) {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export function compileJsSync(tree: any, options: ObfuscateOptions): string {
|
|
13
|
-
var api: any = {
|
|
13
|
+
var api: any = {
|
|
14
|
+
format: {
|
|
15
|
+
...escodegen.FORMAT_MINIFY,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
14
18
|
|
|
15
19
|
if (!options.compact) {
|
|
16
20
|
api = {};
|
package/src/obfuscator.ts
CHANGED
|
@@ -34,6 +34,7 @@ import StringCompression from "./transforms/string/stringCompression";
|
|
|
34
34
|
import NameRecycling from "./transforms/identifier/nameRecycling";
|
|
35
35
|
import AntiTooling from "./transforms/antiTooling";
|
|
36
36
|
import HideInitializingCode from "./transforms/hideInitializingCode";
|
|
37
|
+
import HexadecimalNumbers from "./transforms/hexadecimalNumbers";
|
|
37
38
|
|
|
38
39
|
/**
|
|
39
40
|
* The parent transformation holding the `state`.
|
|
@@ -96,6 +97,7 @@ export default class Obfuscator extends EventEmitter {
|
|
|
96
97
|
test(options.stack, Stack);
|
|
97
98
|
test(true, AntiTooling);
|
|
98
99
|
test(options.hideInitializingCode, HideInitializingCode);
|
|
100
|
+
test(options.hexadecimalNumbers, HexadecimalNumbers);
|
|
99
101
|
|
|
100
102
|
if (
|
|
101
103
|
options.lock &&
|
package/src/options.ts
CHANGED
|
@@ -50,6 +50,13 @@ export interface ObfuscateOptions {
|
|
|
50
50
|
*/
|
|
51
51
|
compact?: boolean;
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* ### `hexadecimalNumbers`
|
|
55
|
+
*
|
|
56
|
+
* Uses the hexadecimal representation (`50` -> `0x32`) for numbers. (`true/false`)
|
|
57
|
+
*/
|
|
58
|
+
hexadecimalNumbers?: boolean;
|
|
59
|
+
|
|
53
60
|
/**
|
|
54
61
|
* ### `minify`
|
|
55
62
|
*
|
|
@@ -676,6 +683,7 @@ const validProperties = new Set([
|
|
|
676
683
|
"target",
|
|
677
684
|
"indent",
|
|
678
685
|
"compact",
|
|
686
|
+
"hexadecimalNumbers",
|
|
679
687
|
"minify",
|
|
680
688
|
"es5",
|
|
681
689
|
"renameVariables",
|
package/src/order.ts
CHANGED
package/src/presets.ts
CHANGED
|
@@ -29,6 +29,7 @@ const highPreset: ObfuscateOptions = {
|
|
|
29
29
|
|
|
30
30
|
calculator: true,
|
|
31
31
|
compact: true,
|
|
32
|
+
hexadecimalNumbers: true,
|
|
32
33
|
controlFlowFlattening: 0.75,
|
|
33
34
|
deadCode: 0.2,
|
|
34
35
|
dispatcher: true,
|
|
@@ -64,6 +65,7 @@ const mediumPreset: ObfuscateOptions = {
|
|
|
64
65
|
|
|
65
66
|
calculator: true,
|
|
66
67
|
compact: true,
|
|
68
|
+
hexadecimalNumbers: true,
|
|
67
69
|
controlFlowFlattening: 0.5,
|
|
68
70
|
deadCode: 0.025,
|
|
69
71
|
dispatcher: 0.75,
|
|
@@ -92,6 +94,7 @@ const lowPreset: ObfuscateOptions = {
|
|
|
92
94
|
|
|
93
95
|
calculator: true,
|
|
94
96
|
compact: true,
|
|
97
|
+
hexadecimalNumbers: true,
|
|
95
98
|
controlFlowFlattening: 0.25,
|
|
96
99
|
deadCode: 0.01,
|
|
97
100
|
dispatcher: 0.5,
|
|
@@ -10,19 +10,27 @@ import {
|
|
|
10
10
|
LogicalExpression,
|
|
11
11
|
SwitchCase,
|
|
12
12
|
SwitchStatement,
|
|
13
|
+
SequenceExpression,
|
|
14
|
+
AssignmentExpression,
|
|
15
|
+
VariableDeclaration,
|
|
16
|
+
VariableDeclarator,
|
|
17
|
+
ExpressionStatement,
|
|
13
18
|
} from "../util/gen";
|
|
14
19
|
import { prepend } from "../util/insert";
|
|
15
20
|
import { getBlock } from "../traverse";
|
|
16
|
-
import { getRandomInteger } from "../util/random";
|
|
21
|
+
import { choice, getRandomInteger } from "../util/random";
|
|
17
22
|
import { ObfuscateOrder } from "../order";
|
|
18
23
|
import { ok } from "assert";
|
|
19
24
|
import { OPERATOR_PRECEDENCE } from "../precedence";
|
|
25
|
+
import Template from "../templates/template";
|
|
20
26
|
|
|
21
27
|
export default class Calculator extends Transform {
|
|
22
28
|
gen: any;
|
|
23
29
|
ops: { [operator: string]: number };
|
|
24
30
|
statesUsed: Set<string>;
|
|
25
31
|
calculatorFn: string;
|
|
32
|
+
calculatorOpVar: string;
|
|
33
|
+
calculatorSetOpFn: string;
|
|
26
34
|
|
|
27
35
|
constructor(o) {
|
|
28
36
|
super(o, ObfuscateOrder.Calculator);
|
|
@@ -30,6 +38,8 @@ export default class Calculator extends Transform {
|
|
|
30
38
|
this.ops = Object.create(null);
|
|
31
39
|
this.statesUsed = new Set();
|
|
32
40
|
this.calculatorFn = this.getPlaceholder();
|
|
41
|
+
this.calculatorOpVar = this.getPlaceholder();
|
|
42
|
+
this.calculatorSetOpFn = this.getPlaceholder();
|
|
33
43
|
|
|
34
44
|
this.gen = this.getGenerator();
|
|
35
45
|
}
|
|
@@ -41,7 +51,6 @@ export default class Calculator extends Transform {
|
|
|
41
51
|
return;
|
|
42
52
|
}
|
|
43
53
|
|
|
44
|
-
var opArg = this.getPlaceholder();
|
|
45
54
|
var leftArg = this.getPlaceholder();
|
|
46
55
|
var rightArg = this.getPlaceholder();
|
|
47
56
|
var switchCases = [];
|
|
@@ -65,8 +74,21 @@ export default class Calculator extends Transform {
|
|
|
65
74
|
|
|
66
75
|
var func = FunctionDeclaration(
|
|
67
76
|
this.calculatorFn,
|
|
68
|
-
[
|
|
69
|
-
[SwitchStatement(Identifier(
|
|
77
|
+
[leftArg, rightArg].map((x) => Identifier(x)),
|
|
78
|
+
[SwitchStatement(Identifier(this.calculatorOpVar), switchCases)]
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
prepend(
|
|
82
|
+
tree,
|
|
83
|
+
VariableDeclaration(VariableDeclarator(this.calculatorOpVar))
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
prepend(
|
|
87
|
+
tree,
|
|
88
|
+
Template(`function {name}(a){
|
|
89
|
+
a = {b} + ({b}=a, 0);
|
|
90
|
+
return a;
|
|
91
|
+
}`).single({ name: this.calculatorSetOpFn, b: this.calculatorOpVar })
|
|
70
92
|
);
|
|
71
93
|
|
|
72
94
|
prepend(tree, func);
|
|
@@ -123,9 +145,18 @@ export default class Calculator extends Transform {
|
|
|
123
145
|
this.replace(
|
|
124
146
|
object,
|
|
125
147
|
CallExpression(Identifier(this.calculatorFn), [
|
|
126
|
-
Literal(this.ops[operator]),
|
|
127
148
|
object.left,
|
|
128
149
|
object.right,
|
|
150
|
+
choice([
|
|
151
|
+
AssignmentExpression(
|
|
152
|
+
"=",
|
|
153
|
+
Identifier(this.calculatorOpVar),
|
|
154
|
+
Literal(this.ops[operator])
|
|
155
|
+
),
|
|
156
|
+
CallExpression(Identifier(this.calculatorSetOpFn), [
|
|
157
|
+
Literal(this.ops[operator]),
|
|
158
|
+
]),
|
|
159
|
+
]),
|
|
129
160
|
])
|
|
130
161
|
);
|
|
131
162
|
};
|
|
@@ -18,7 +18,10 @@ import {
|
|
|
18
18
|
IfStatement,
|
|
19
19
|
LabeledStatement,
|
|
20
20
|
Literal,
|
|
21
|
+
MemberExpression,
|
|
21
22
|
Node,
|
|
23
|
+
ObjectExpression,
|
|
24
|
+
Property,
|
|
22
25
|
ReturnStatement,
|
|
23
26
|
SequenceExpression,
|
|
24
27
|
SwitchCase,
|
|
@@ -234,7 +237,16 @@ export default class ControlFlowFlattening extends Transform {
|
|
|
234
237
|
|
|
235
238
|
var resultVar = this.getPlaceholder();
|
|
236
239
|
var argVar = this.getPlaceholder();
|
|
240
|
+
var testVar = this.getPlaceholder();
|
|
241
|
+
var stringBankVar = this.getPlaceholder();
|
|
242
|
+
var stringBank: { [strValue: string]: string } = Object.create(null);
|
|
243
|
+
var stringBankByLabels: { [label: string]: Set<string> } =
|
|
244
|
+
Object.create(null);
|
|
245
|
+
let stringBankGen = this.getGenerator();
|
|
246
|
+
|
|
247
|
+
var needsTestVar = false;
|
|
237
248
|
var needsResultAndArgVar = false;
|
|
249
|
+
var needsStringBankVar = false;
|
|
238
250
|
var fnToLabel: { [fnName: string]: string } = Object.create(null);
|
|
239
251
|
|
|
240
252
|
fnNames.forEach((fnName) => {
|
|
@@ -269,6 +281,38 @@ export default class ControlFlowFlattening extends Transform {
|
|
|
269
281
|
body: [...currentBody],
|
|
270
282
|
});
|
|
271
283
|
|
|
284
|
+
walk(currentBody, [], (o, p) => {
|
|
285
|
+
if (
|
|
286
|
+
o.type == "Literal" &&
|
|
287
|
+
typeof o.value == "string" &&
|
|
288
|
+
!o.regex &&
|
|
289
|
+
Math.random() / (Object.keys(stringBank).length / 2 + 1) > 0.5
|
|
290
|
+
) {
|
|
291
|
+
needsStringBankVar = true;
|
|
292
|
+
if (!stringBankByLabels[currentLabel]) {
|
|
293
|
+
stringBankByLabels[currentLabel] = new Set();
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
stringBankByLabels[currentLabel].add(o.value);
|
|
297
|
+
|
|
298
|
+
if (typeof stringBank[o.value] === "undefined") {
|
|
299
|
+
stringBank[o.value] = stringBankGen.generate();
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
return () => {
|
|
303
|
+
this.replaceIdentifierOrLiteral(
|
|
304
|
+
o,
|
|
305
|
+
MemberExpression(
|
|
306
|
+
Identifier(stringBankVar),
|
|
307
|
+
Literal(stringBank[o.value]),
|
|
308
|
+
true
|
|
309
|
+
),
|
|
310
|
+
p
|
|
311
|
+
);
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
|
|
272
316
|
currentLabel = newLabel;
|
|
273
317
|
currentBody = [];
|
|
274
318
|
};
|
|
@@ -478,7 +522,21 @@ export default class ControlFlowFlattening extends Transform {
|
|
|
478
522
|
finishCurrentChunk(isPostTest ? bodyPath : testPath, testPath);
|
|
479
523
|
|
|
480
524
|
currentBody.push(
|
|
481
|
-
|
|
525
|
+
ExpressionStatement(
|
|
526
|
+
AssignmentExpression(
|
|
527
|
+
"=",
|
|
528
|
+
Identifier(testVar),
|
|
529
|
+
control.test || Literal(true)
|
|
530
|
+
)
|
|
531
|
+
)
|
|
532
|
+
);
|
|
533
|
+
|
|
534
|
+
needsTestVar = true;
|
|
535
|
+
|
|
536
|
+
finishCurrentChunk();
|
|
537
|
+
|
|
538
|
+
currentBody.push(
|
|
539
|
+
IfStatement(Identifier(testVar), [
|
|
482
540
|
{
|
|
483
541
|
type: "GotoStatement",
|
|
484
542
|
label: bodyPath,
|
|
@@ -522,6 +580,16 @@ export default class ControlFlowFlattening extends Transform {
|
|
|
522
580
|
) {
|
|
523
581
|
finishCurrentChunk();
|
|
524
582
|
|
|
583
|
+
currentBody.push(
|
|
584
|
+
ExpressionStatement(
|
|
585
|
+
AssignmentExpression("=", Identifier(testVar), stmt.test)
|
|
586
|
+
)
|
|
587
|
+
);
|
|
588
|
+
|
|
589
|
+
needsTestVar = true;
|
|
590
|
+
|
|
591
|
+
finishCurrentChunk();
|
|
592
|
+
|
|
525
593
|
var hasAlternate = !!stmt.alternate;
|
|
526
594
|
ok(!(hasAlternate && stmt.alternate.type !== "BlockStatement"));
|
|
527
595
|
|
|
@@ -530,7 +598,7 @@ export default class ControlFlowFlattening extends Transform {
|
|
|
530
598
|
var afterPath = this.getPlaceholder();
|
|
531
599
|
|
|
532
600
|
currentBody.push(
|
|
533
|
-
IfStatement(
|
|
601
|
+
IfStatement(Identifier(testVar), [
|
|
534
602
|
{
|
|
535
603
|
type: "GotoStatement",
|
|
536
604
|
label: yesPath,
|
|
@@ -845,6 +913,7 @@ export default class ControlFlowFlattening extends Transform {
|
|
|
845
913
|
|
|
846
914
|
var breaksInsertion = [];
|
|
847
915
|
var staticStateValues = [...labelToStates[chunk.label]];
|
|
916
|
+
var potentialBranches = new Set<string>();
|
|
848
917
|
|
|
849
918
|
chunk.body.forEach((stmt, stmtIndex) => {
|
|
850
919
|
var addBreak = false;
|
|
@@ -894,6 +963,8 @@ export default class ControlFlowFlattening extends Transform {
|
|
|
894
963
|
);
|
|
895
964
|
}
|
|
896
965
|
|
|
966
|
+
potentialBranches.add(o.label);
|
|
967
|
+
|
|
897
968
|
var mutatingStateValues = [...labelToStates[chunk.label]];
|
|
898
969
|
var nextStateValues = labelToStates[o.label];
|
|
899
970
|
ok(nextStateValues, o.label);
|
|
@@ -930,6 +1001,29 @@ export default class ControlFlowFlattening extends Transform {
|
|
|
930
1001
|
chunk.body.splice(index + 1, 0, BreakStatement(switchLabel));
|
|
931
1002
|
});
|
|
932
1003
|
|
|
1004
|
+
for (var branch of Array.from(potentialBranches)) {
|
|
1005
|
+
var strings = stringBankByLabels[branch];
|
|
1006
|
+
if (strings) {
|
|
1007
|
+
chunk.body.unshift(
|
|
1008
|
+
ExpressionStatement(
|
|
1009
|
+
SequenceExpression(
|
|
1010
|
+
Array.from(strings).map((strValue) => {
|
|
1011
|
+
return AssignmentExpression(
|
|
1012
|
+
"=",
|
|
1013
|
+
MemberExpression(
|
|
1014
|
+
Identifier(stringBankVar),
|
|
1015
|
+
Literal(stringBank[strValue]),
|
|
1016
|
+
true
|
|
1017
|
+
),
|
|
1018
|
+
Literal(strValue)
|
|
1019
|
+
);
|
|
1020
|
+
})
|
|
1021
|
+
)
|
|
1022
|
+
)
|
|
1023
|
+
);
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
|
|
933
1027
|
// var c = Identifier("undefined");
|
|
934
1028
|
// this.addComment(c, stateValues.join(", "));
|
|
935
1029
|
// transitionStatements.push(c);
|
|
@@ -975,11 +1069,34 @@ export default class ControlFlowFlattening extends Transform {
|
|
|
975
1069
|
|
|
976
1070
|
var declarations = [];
|
|
977
1071
|
|
|
1072
|
+
if (needsTestVar) {
|
|
1073
|
+
declarations.push(VariableDeclarator(testVar));
|
|
1074
|
+
}
|
|
1075
|
+
|
|
978
1076
|
if (needsResultAndArgVar) {
|
|
979
1077
|
declarations.push(VariableDeclarator(resultVar));
|
|
980
1078
|
declarations.push(VariableDeclarator(argVar));
|
|
981
1079
|
}
|
|
982
1080
|
|
|
1081
|
+
if (needsStringBankVar) {
|
|
1082
|
+
declarations.push(
|
|
1083
|
+
VariableDeclarator(
|
|
1084
|
+
stringBankVar,
|
|
1085
|
+
ObjectExpression(
|
|
1086
|
+
stringBankByLabels[startLabel]
|
|
1087
|
+
? Array.from(stringBankByLabels[startLabel]).map((strValue) =>
|
|
1088
|
+
Property(
|
|
1089
|
+
Literal(stringBank[strValue]),
|
|
1090
|
+
Literal(strValue),
|
|
1091
|
+
false
|
|
1092
|
+
)
|
|
1093
|
+
)
|
|
1094
|
+
: []
|
|
1095
|
+
)
|
|
1096
|
+
)
|
|
1097
|
+
);
|
|
1098
|
+
}
|
|
1099
|
+
|
|
983
1100
|
declarations.push(
|
|
984
1101
|
...stateVars.map((stateVar, i) => {
|
|
985
1102
|
return VariableDeclarator(stateVar, Literal(initStateValues[i]));
|
|
@@ -124,6 +124,108 @@ function setCookie(cname, cvalue, exdays) {
|
|
|
124
124
|
|
|
125
125
|
__.match(s + g);
|
|
126
126
|
`),
|
|
127
|
+
Template(`
|
|
128
|
+
function vec_pack(vec) {
|
|
129
|
+
return vec[1] * 67108864 + (vec[0] < 0 ? 33554432 | vec[0] : vec[0]);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function vec_unpack(number) {
|
|
133
|
+
switch (((number & 33554432) !== 0) * 1 + (number < 0) * 2) {
|
|
134
|
+
case 0:
|
|
135
|
+
return [number % 33554432, Math.trunc(number / 67108864)];
|
|
136
|
+
case 1:
|
|
137
|
+
return [
|
|
138
|
+
(number % 33554432) - 33554432,
|
|
139
|
+
Math.trunc(number / 67108864) + 1,
|
|
140
|
+
];
|
|
141
|
+
case 2:
|
|
142
|
+
return [
|
|
143
|
+
(((number + 33554432) % 33554432) + 33554432) % 33554432,
|
|
144
|
+
Math.round(number / 67108864),
|
|
145
|
+
];
|
|
146
|
+
case 3:
|
|
147
|
+
return [number % 33554432, Math.trunc(number / 67108864)];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
let a = vec_pack([2, 4]);
|
|
152
|
+
let b = vec_pack([1, 2]);
|
|
153
|
+
|
|
154
|
+
let c = a + b; // Vector addition
|
|
155
|
+
let d = c - b; // Vector subtraction
|
|
156
|
+
let e = d * 2; // Scalar multiplication
|
|
157
|
+
let f = e / 2; // Scalar division
|
|
158
|
+
|
|
159
|
+
console.log(vec_unpack(c)); // [3, 6]
|
|
160
|
+
console.log(vec_unpack(d)); // [2, 4]
|
|
161
|
+
console.log(vec_unpack(e)); // [4, 8]
|
|
162
|
+
console.log(vec_unpack(f)); // [2, 4]
|
|
163
|
+
`),
|
|
164
|
+
Template(`
|
|
165
|
+
function buildCharacterMap(str) {
|
|
166
|
+
const characterMap = {};
|
|
167
|
+
|
|
168
|
+
for (let char of str.replace(/[^\w]/g, "").toLowerCase())
|
|
169
|
+
characterMap[char] = characterMap[char] + 1 || 1;
|
|
170
|
+
|
|
171
|
+
return characterMap;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function isAnagrams(stringA, stringB) {
|
|
175
|
+
const stringAMap = buildCharMap(stringA);
|
|
176
|
+
const stringBMap = buildCharMap(stringB);
|
|
177
|
+
|
|
178
|
+
for (let char in stringAMap) {
|
|
179
|
+
if (stringAMap[char] !== stringBMap[char]) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (Object.keys(stringAMap).length !== Object.keys(stringBMap).length) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* @param {TreeNode} root
|
|
193
|
+
* @return {boolean}
|
|
194
|
+
*/
|
|
195
|
+
function isBalanced(root) {
|
|
196
|
+
const height = getHeightBalanced(root);
|
|
197
|
+
return height !== Infinity;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function getHeightBalanced(node) {
|
|
201
|
+
if (!node) {
|
|
202
|
+
return -1;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const leftTreeHeight = getHeightBalanced(node.left);
|
|
206
|
+
const rightTreeHeight = getHeightBalanced(node.right);
|
|
207
|
+
|
|
208
|
+
const heightDiff = Math.abs(leftTreeHeight - rightTreeHeight);
|
|
209
|
+
|
|
210
|
+
if (
|
|
211
|
+
leftTreeHeight === Infinity ||
|
|
212
|
+
rightTreeHeight === Infinity ||
|
|
213
|
+
heightDiff > 1
|
|
214
|
+
) {
|
|
215
|
+
return Infinity;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
const currentHeight = Math.max(leftTreeHeight, rightTreeHeight) + 1;
|
|
219
|
+
return currentHeight;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
window["__GLOBAL__HELPERS__"] = {
|
|
223
|
+
buildCharacterMap,
|
|
224
|
+
isAnagrams,
|
|
225
|
+
isBalanced,
|
|
226
|
+
getHeightBalanced,
|
|
227
|
+
};
|
|
228
|
+
`),
|
|
127
229
|
];
|
|
128
230
|
|
|
129
231
|
/**
|
|
@@ -19,6 +19,7 @@ import { getIdentifierInfo } from "../../util/identifiers";
|
|
|
19
19
|
import { isValidIdentifier } from "../../util/compare";
|
|
20
20
|
import { ComputeProbabilityMap } from "../../probability";
|
|
21
21
|
import { ok } from "assert";
|
|
22
|
+
import { isStringLiteral } from "../../util/guard";
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
25
|
* Extracts keys out of an object if possible.
|
|
@@ -87,17 +88,22 @@ export default class ObjectExtraction extends Transform {
|
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
// check for computed properties
|
|
91
|
+
// Change String literals to non-computed
|
|
90
92
|
object.properties.forEach((prop) => {
|
|
91
|
-
if (prop.computed && prop.key
|
|
93
|
+
if (prop.computed && isStringLiteral(prop.key)) {
|
|
92
94
|
prop.computed = false;
|
|
93
95
|
}
|
|
94
96
|
});
|
|
95
97
|
|
|
96
|
-
var
|
|
97
|
-
|
|
98
|
+
var nonInitOrComputed = object.properties.find(
|
|
99
|
+
(x) => x.kind !== "init" || x.computed
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
if (nonInitOrComputed) {
|
|
98
103
|
this.log(
|
|
99
|
-
name +
|
|
100
|
-
computed
|
|
104
|
+
name +
|
|
105
|
+
" has non-init/computed property: " +
|
|
106
|
+
nonInitOrComputed.key.name || nonInitOrComputed.key.value
|
|
101
107
|
);
|
|
102
108
|
illegal.add(name);
|
|
103
109
|
return;
|