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.
Files changed (63) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +9 -0
  3. package/dev.js +4 -5
  4. package/dist/compiler.js +3 -2
  5. package/dist/constants.js +1 -1
  6. package/dist/index.js +5 -5
  7. package/dist/obfuscator.js +14 -3
  8. package/dist/options.js +2 -2
  9. package/dist/order.js +1 -0
  10. package/dist/parser.js +2 -2
  11. package/dist/precedence.js +1 -1
  12. package/dist/presets.js +3 -0
  13. package/dist/probability.js +7 -1
  14. package/dist/transforms/calculator.js +15 -3
  15. package/dist/transforms/controlFlowFlattening/controlFlowFlattening.js +93 -19
  16. package/dist/transforms/deadCode.js +1 -1
  17. package/dist/transforms/dispatcher.js +3 -1
  18. package/dist/transforms/extraction/objectExtraction.js +7 -4
  19. package/dist/transforms/flatten.js +45 -13
  20. package/dist/transforms/hexadecimalNumbers.js +38 -0
  21. package/dist/transforms/hideInitializingCode.js +8 -3
  22. package/dist/transforms/identifier/globalConcealing.js +3 -1
  23. package/dist/transforms/identifier/nameRecycling.js +2 -1
  24. package/dist/transforms/lock/integrity.js +2 -1
  25. package/dist/transforms/lock/lock.js +2 -2
  26. package/dist/transforms/minify.js +8 -3
  27. package/dist/transforms/rgf.js +11 -8
  28. package/dist/transforms/stack.js +2 -1
  29. package/dist/transforms/string/stringConcealing.js +3 -3
  30. package/dist/transforms/transform.js +32 -8
  31. package/dist/traverse.js +4 -2
  32. package/dist/types.js +5 -1
  33. package/dist/util/compare.js +4 -4
  34. package/dist/util/gen.js +66 -47
  35. package/dist/util/guard.js +10 -0
  36. package/dist/util/identifiers.js +4 -4
  37. package/dist/util/insert.js +25 -16
  38. package/dist/util/object.js +3 -1
  39. package/dist/util/random.js +5 -5
  40. package/dist/util/scope.js +1 -1
  41. package/package.json +11 -11
  42. package/samples/high.js +1 -198
  43. package/samples/low.js +1 -26
  44. package/samples/medium.js +1 -40
  45. package/src/compiler.ts +5 -1
  46. package/src/obfuscator.ts +2 -0
  47. package/src/options.ts +8 -0
  48. package/src/order.ts +2 -0
  49. package/src/presets.ts +3 -0
  50. package/src/transforms/calculator.ts +36 -5
  51. package/src/transforms/controlFlowFlattening/controlFlowFlattening.ts +119 -2
  52. package/src/transforms/deadCode.ts +102 -0
  53. package/src/transforms/extraction/objectExtraction.ts +11 -5
  54. package/src/transforms/flatten.ts +166 -28
  55. package/src/transforms/hexadecimalNumbers.ts +31 -0
  56. package/src/transforms/minify.ts +9 -3
  57. package/src/transforms/transform.ts +10 -2
  58. package/src/util/gen.ts +1 -1
  59. package/src/util/guard.ts +7 -0
  60. package/test/transforms/extraction/objectExtraction.test.ts +23 -0
  61. package/test/transforms/flatten.test.ts +3 -3
  62. package/test/transforms/hexadecimalNumbers.test.ts +62 -0
  63. package/test/transforms/minify.test.ts +38 -0
package/samples/low.js CHANGED
@@ -1,26 +1 @@
1
- var UvB2KGE = [
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&GT3maOQ(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 = { format: escodegen.FORMAT_MINIFY };
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
@@ -55,4 +55,6 @@ export enum ObfuscateOrder {
55
55
  StringEncoding = 32,
56
56
 
57
57
  AntiTooling = 34,
58
+
59
+ HexadecimalNumbers = 35,
58
60
  }
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
- [opArg, leftArg, rightArg].map((x) => Identifier(x)),
69
- [SwitchStatement(Identifier(opArg), switchCases)]
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
- IfStatement(control.test || Literal(true), [
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(stmt.test, [
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.type == "Literal") {
93
+ if (prop.computed && isStringLiteral(prop.key)) {
92
94
  prop.computed = false;
93
95
  }
94
96
  });
95
97
 
96
- var computed = object.properties.find((x) => x.computed);
97
- if (computed) {
98
+ var nonInitOrComputed = object.properties.find(
99
+ (x) => x.kind !== "init" || x.computed
100
+ );
101
+
102
+ if (nonInitOrComputed) {
98
103
  this.log(
99
- name + " has computed property: " + computed.key.name ||
100
- computed.key.value
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;