spd-lib 1.2.0 → 1.2.2

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/dist/index.js CHANGED
@@ -1 +1,415 @@
1
- const _0x83813e=_0x48f6;(function(_0x351c5a,_0x6e57cc){const _0x34b562=_0x48f6,_0x54db0d=_0x351c5a();while(!![]){try{const _0x3f652a=parseInt(_0x34b562(0x1b8))/0x1*(parseInt(_0x34b562(0x2ab))/0x2)+-parseInt(_0x34b562(0x2c8))/0x3+parseInt(_0x34b562(0x265))/0x4+-parseInt(_0x34b562(0x26f))/0x5*(-parseInt(_0x34b562(0x206))/0x6)+parseInt(_0x34b562(0x330))/0x7+parseInt(_0x34b562(0x231))/0x8*(parseInt(_0x34b562(0x2d1))/0x9)+-parseInt(_0x34b562(0x205))/0xa*(parseInt(_0x34b562(0x1ae))/0xb);if(_0x3f652a===_0x6e57cc)break;else _0x54db0d['push'](_0x54db0d['shift']());}catch(_0x3b5eab){_0x54db0d['push'](_0x54db0d['shift']());}}}(_0x23f6,0xd0ab3));function _0x48f6(_0x5914af,_0x4a8a30){const _0x42753e=_0x23f6();return _0x48f6=function(_0x347cd5,_0x8ba865){_0x347cd5=_0x347cd5-0x15d;let _0x3f06a1=_0x42753e[_0x347cd5];return _0x3f06a1;},_0x48f6(_0x5914af,_0x4a8a30);}const _0x5d6a11=(function(){const _0xaa16a9={'eQgaa':function(_0x540d9f,_0x1fd9c2){return _0x540d9f===_0x1fd9c2;},'vfWqD':'jYChe'};let _0x5957e5=!![];return function(_0x2f43c,_0x3028fa){const _0x56213b=_0x48f6,_0x404d9b={'BzbZR':function(_0x45d0ab,_0x234623){const _0x379d13=_0x48f6;return _0xaa16a9[_0x379d13(0x1e0)](_0x45d0ab,_0x234623);},'mSLnH':_0xaa16a9[_0x56213b(0x169)]},_0x1d4592=_0x5957e5?function(){const _0x593b6d=_0x56213b;if(_0x3028fa){if(_0x404d9b[_0x593b6d(0x2c7)](_0x404d9b[_0x593b6d(0x1c3)],_0x404d9b[_0x593b6d(0x1c3)])){const _0x26d3cd=_0x3028fa[_0x593b6d(0x174)](_0x2f43c,arguments);return _0x3028fa=null,_0x26d3cd;}else{const _0x6ce9c4=_0x21e360?function(){if(_0x351dfd){const _0x454268=_0x3fcf97['apply'](_0x931e10,arguments);return _0x17c978=null,_0x454268;}}:function(){};return _0x176548=![],_0x6ce9c4;}}}:function(){};return _0x5957e5=![],_0x1d4592;};}());(function(){const _0x1b5a2c=_0x48f6,_0x5ba53c={'ENPxO':function(_0x1c6db5,_0x2da7c9){return _0x1c6db5(_0x2da7c9);},'ZgNuE':_0x1b5a2c(0x202),'ngMfb':_0x1b5a2c(0x2d6),'OsJZx':function(_0x54125f,_0x2cb2e1){return _0x54125f(_0x2cb2e1);},'pqtof':_0x1b5a2c(0x28b),'SobKO':function(_0x1b0dbe,_0x48e9f9){return _0x1b0dbe+_0x48e9f9;},'KRobD':'chain','MTFHv':_0x1b5a2c(0x29b),'vAuDk':function(_0x131b5c,_0x1f8669){return _0x131b5c(_0x1f8669);},'XirUq':function(_0x2a57e5){return _0x2a57e5();},'yEQit':function(_0x1ce3be,_0x4b7d74){return _0x1ce3be(_0x4b7d74);},'nfIYH':function(_0x3d1dfc,_0x567a8e){return _0x3d1dfc+_0x567a8e;},'LnwOB':function(_0x43c682,_0x484d9d){return _0x43c682+_0x484d9d;},'DvCPS':function(_0x551fb8,_0x52e10d){return _0x551fb8===_0x52e10d;},'NZKqo':_0x1b5a2c(0x1d4),'iYWUi':function(_0x568010,_0x56a28f){return _0x568010(_0x56a28f);},'CecYn':function(_0x22b08f,_0xb438fe){return _0x22b08f!==_0xb438fe;},'gFtuq':_0x1b5a2c(0x24e),'hxbOs':_0x1b5a2c(0x274),'gzTBF':function(_0x18bc36,_0x8335d4,_0x13d63c){return _0x18bc36(_0x8335d4,_0x13d63c);}};_0x5ba53c[_0x1b5a2c(0x22c)](_0x5d6a11,this,function(){const _0x3ee3ec=_0x1b5a2c,_0x547b88=new RegExp(_0x5ba53c[_0x3ee3ec(0x305)]),_0x5b3048=new RegExp(_0x5ba53c['ngMfb'],'i'),_0x33889f=_0x5ba53c[_0x3ee3ec(0x1f6)](_0x4225ad,_0x5ba53c['pqtof']);if(!_0x547b88[_0x3ee3ec(0x2a8)](_0x5ba53c[_0x3ee3ec(0x27f)](_0x33889f,_0x5ba53c['KRobD']))||!_0x5b3048[_0x3ee3ec(0x2a8)](_0x5ba53c[_0x3ee3ec(0x2f5)](_0x33889f,_0x5ba53c[_0x3ee3ec(0x31d)])))_0x5ba53c[_0x3ee3ec(0x29c)](_0x5ba53c['NZKqo'],_0x5ba53c['NZKqo'])?_0x5ba53c[_0x3ee3ec(0x2f6)](_0x33889f,'0'):_0x5ba53c[_0x3ee3ec(0x32a)](_0x547f56,{'pbk':_0x477425,'salt':_0x56d59f});else{if(_0x5ba53c['CecYn'](_0x5ba53c['gFtuq'],_0x5ba53c[_0x3ee3ec(0x23f)]))_0x5ba53c[_0x3ee3ec(0x1e3)](_0x4225ad);else{const _0x36667e=new _0x17bad6(_0x5ba53c[_0x3ee3ec(0x305)]),_0x3a8dc7=new _0x46da56(_0x5ba53c['ngMfb'],'i'),_0x153184=_0x5ba53c[_0x3ee3ec(0x1d6)](_0x2a4f2f,_0x5ba53c[_0x3ee3ec(0x339)]);!_0x36667e['test'](_0x5ba53c[_0x3ee3ec(0x1f9)](_0x153184,_0x5ba53c[_0x3ee3ec(0x165)]))||!_0x3a8dc7[_0x3ee3ec(0x2a8)](_0x5ba53c[_0x3ee3ec(0x1f9)](_0x153184,_0x5ba53c[_0x3ee3ec(0x31d)]))?_0x5ba53c[_0x3ee3ec(0x328)](_0x153184,'0'):_0x5ba53c['XirUq'](_0x2d19fb);}}})();}());const _0x8ba865=(function(){const _0x1b12bf=_0x48f6,_0x4a67a5={'tmDEa':function(_0x1aefc6,_0x46d2b2){return _0x1aefc6(_0x46d2b2);},'tUBUb':function(_0x3ec2ba,_0x3ad412){return _0x3ec2ba!==_0x3ad412;},'JfRsQ':_0x1b12bf(0x31e),'gtcJu':function(_0xf818cf,_0x50799c){return _0xf818cf===_0x50799c;},'aspmd':'TbHbT','JiHNN':_0x1b12bf(0x1fa),'sjEjA':function(_0x3688a8,_0x196606){return _0x3688a8===_0x196606;},'gMGyE':_0x1b12bf(0x1e6),'rOXNg':'Uint32Array','iESlI':'BigInt64Array','wcYwT':_0x1b12bf(0x17e),'OGoBU':'Float32Array','ViZYE':_0x1b12bf(0x2b4),'PKsqm':'Map','xhjHg':'Set','mtmRZ':function(_0x4f1f5f,_0xc56322){return _0x4f1f5f===_0xc56322;},'LkNTi':'WeakMap','ZlmQG':_0x1b12bf(0x209),'bsTSC':function(_0xe20cc2,_0x487f70){return _0xe20cc2!==_0x487f70;},'xPwdI':_0x1b12bf(0x227)};let _0xed7e7a=!![];return function(_0x196af2,_0x5ca1eb){const _0x22cbf4=_0x1b12bf,_0x56bf88={'Basrb':function(_0x350ca1,_0x21b759){return _0x4a67a5['gtcJu'](_0x350ca1,_0x21b759);},'VvRoI':_0x4a67a5[_0x22cbf4(0x1bf)],'BheIY':function(_0x4227a0,_0x635080){const _0x1e59e3=_0x22cbf4;return _0x4a67a5[_0x1e59e3(0x2c4)](_0x4227a0,_0x635080);},'IFIHU':_0x4a67a5['gMGyE'],'nPGOY':_0x4a67a5[_0x22cbf4(0x228)],'UYaiJ':_0x4a67a5[_0x22cbf4(0x20d)],'aLiKG':_0x4a67a5[_0x22cbf4(0x19f)],'VpLpU':function(_0x4cc847,_0x518c4c){const _0x4418f2=_0x22cbf4;return _0x4a67a5[_0x4418f2(0x1b9)](_0x4cc847,_0x518c4c);},'lwKVL':_0x4a67a5[_0x22cbf4(0x1fb)],'OFcsc':_0x4a67a5[_0x22cbf4(0x15f)],'unvvJ':_0x4a67a5[_0x22cbf4(0x2da)],'kxarx':_0x4a67a5['xhjHg'],'znrLg':function(_0x1d143c,_0x3a05ba){const _0x46f190=_0x22cbf4;return _0x4a67a5[_0x46f190(0x266)](_0x1d143c,_0x3a05ba);},'hIZtb':_0x4a67a5[_0x22cbf4(0x22e)],'WPsTN':function(_0x47e56e,_0x4ecbbe){const _0xa11463=_0x22cbf4;return _0x4a67a5[_0xa11463(0x266)](_0x47e56e,_0x4ecbbe);},'sSGbt':_0x4a67a5[_0x22cbf4(0x321)]};if(_0x4a67a5[_0x22cbf4(0x171)](_0x4a67a5[_0x22cbf4(0x2be)],_0x4a67a5[_0x22cbf4(0x2be)])){if(_0x56bf88[_0x22cbf4(0x308)](_0x209bcc,_0x56bf88['VvRoI'])||_0x56bf88[_0x22cbf4(0x2f9)](_0x17158b,_0x56bf88['IFIHU'])||_0x56bf88[_0x22cbf4(0x308)](_0x3815d6,_0x56bf88[_0x22cbf4(0x23e)])||_0x56bf88[_0x22cbf4(0x2f9)](_0x11c7b0,_0x56bf88[_0x22cbf4(0x1c8)])||_0x56bf88[_0x22cbf4(0x2f9)](_0x46a10e,_0x56bf88[_0x22cbf4(0x271)])||_0x56bf88[_0x22cbf4(0x260)](_0x5578d5,_0x56bf88['lwKVL'])||_0x56bf88[_0x22cbf4(0x308)](_0x30fbc1,_0x56bf88[_0x22cbf4(0x2f1)]))return!![];}else{const _0x1353ea=_0xed7e7a?function(){const _0x100cb1=_0x22cbf4,_0x3c2dd4={'bJtkM':function(_0x34ca8a,_0x2d5db4){const _0x1b672d=_0x48f6;return _0x4a67a5[_0x1b672d(0x31c)](_0x34ca8a,_0x2d5db4);}};if(_0x4a67a5[_0x100cb1(0x272)](_0x4a67a5[_0x100cb1(0x27c)],_0x4a67a5[_0x100cb1(0x27c)]))_0x3c2dd4[_0x100cb1(0x1ea)](_0x1e6fb0,'0');else{if(_0x5ca1eb){if(_0x4a67a5[_0x100cb1(0x1b9)](_0x4a67a5['aspmd'],_0x4a67a5[_0x100cb1(0x1cf)])){const _0x24fc95=_0x5ca1eb[_0x100cb1(0x174)](_0x196af2,arguments);return _0x5ca1eb=null,_0x24fc95;}else{if(_0x56bf88[_0x100cb1(0x2f9)](_0x3d76b8,_0x56bf88[_0x100cb1(0x2ae)])||_0x56bf88['Basrb'](_0x136678,_0x56bf88[_0x100cb1(0x1e5)])||_0x56bf88[_0x100cb1(0x190)](_0x47d4f4,_0x56bf88['hIZtb'])||_0x56bf88['WPsTN'](_0x339728,_0x56bf88[_0x100cb1(0x1cd)]))return!![];}}}}:function(){};return _0xed7e7a=![],_0x1353ea;}};}()),_0x347cd5=_0x8ba865(this,function(){const _0xe27efb=_0x48f6,_0x4fda5b={'fAwwn':function(_0x486aae,_0x4e2f12){return _0x486aae!==_0x4e2f12;},'wzlBQ':_0xe27efb(0x279),'wPPem':_0xe27efb(0x251),'fzKQV':function(_0x1ef416,_0x1938e8){return _0x1ef416(_0x1938e8);},'NqcFk':function(_0x2967b1,_0xc13ba0){return _0x2967b1+_0xc13ba0;},'VpDGg':_0xe27efb(0x2fc),'pORMP':'{}.constructor(\x22return\x20this\x22)(\x20)','vtqSb':_0xe27efb(0x213),'KdorF':_0xe27efb(0x314),'IMCsR':function(_0x283e27){return _0x283e27();},'BTXOj':'log','IGokt':_0xe27efb(0x23b),'Xzpqr':'info','Vxbmk':_0xe27efb(0x2ef),'zjRWP':'exception','hfroK':_0xe27efb(0x1db),'AofUI':'trace','kyzSE':function(_0x576825,_0x41d78d){return _0x576825<_0x41d78d;}},_0x51691a=function(){const _0x562d0e=_0xe27efb;let _0xbcf06d;try{if(_0x4fda5b[_0x562d0e(0x1ca)](_0x4fda5b[_0x562d0e(0x2d3)],_0x4fda5b[_0x562d0e(0x22d)]))_0xbcf06d=_0x4fda5b['fzKQV'](Function,_0x4fda5b[_0x562d0e(0x1be)](_0x4fda5b['NqcFk'](_0x4fda5b[_0x562d0e(0x16c)],_0x4fda5b[_0x562d0e(0x336)]),');'))();else return!![];}catch(_0x4535b9){if(_0x4fda5b[_0x562d0e(0x1ca)](_0x4fda5b[_0x562d0e(0x267)],_0x4fda5b[_0x562d0e(0x25c)]))_0xbcf06d=window;else return new _0x491aaf(_0x397750[_0x562d0e(0x283)](_0x1a1c4e));}return _0xbcf06d;},_0x1f8b31=_0x4fda5b[_0xe27efb(0x33a)](_0x51691a),_0x510324=_0x1f8b31[_0xe27efb(0x2f7)]=_0x1f8b31[_0xe27efb(0x2f7)]||{},_0x2b9df1=[_0x4fda5b[_0xe27efb(0x245)],_0x4fda5b[_0xe27efb(0x187)],_0x4fda5b[_0xe27efb(0x1cc)],_0x4fda5b['Vxbmk'],_0x4fda5b[_0xe27efb(0x2b9)],_0x4fda5b['hfroK'],_0x4fda5b['AofUI']];for(let _0x5376c9=0x0;_0x4fda5b[_0xe27efb(0x24c)](_0x5376c9,_0x2b9df1[_0xe27efb(0x232)]);_0x5376c9++){const _0x47db56=_0x8ba865[_0xe27efb(0x26e)][_0xe27efb(0x223)][_0xe27efb(0x2a5)](_0x8ba865),_0x2e0367=_0x2b9df1[_0x5376c9],_0x4f9649=_0x510324[_0x2e0367]||_0x47db56;_0x47db56[_0xe27efb(0x1ec)]=_0x8ba865[_0xe27efb(0x2a5)](_0x8ba865),_0x47db56[_0xe27efb(0x19c)]=_0x4f9649[_0xe27efb(0x19c)][_0xe27efb(0x2a5)](_0x4f9649),_0x510324[_0x2e0367]=_0x47db56;}});_0x347cd5();const fs=require('fs'),zlib=require(_0x83813e(0x173)),sodium=require(_0x83813e(0x2fb)),crypto=require(_0x83813e(0x30a)),argon2=require('argon2');class SPD{constructor(){const _0x18a199=_0x83813e,_0x430288={'HTPWP':_0x18a199(0x175)},_0x5824d7=_0x430288[_0x18a199(0x1f4)][_0x18a199(0x32c)]('|');let _0x25f8ec=0x0;while(!![]){switch(_0x5824d7[_0x25f8ec++]){case'0':this[_0x18a199(0x296)];continue;case'1':this[_0x18a199(0x1dc)];continue;case'2':this[_0x18a199(0x242)]=[];continue;case'3':this[_0x18a199(0x194)];continue;case'4':this[_0x18a199(0x28b)]();continue;}break;}}async[_0x83813e(0x28b)](){const _0x3b2073=_0x83813e;await sodium[_0x3b2073(0x22b)],this[_0x3b2073(0x296)]=sodium[_0x3b2073(0x2d9)]();}async['setPassKey'](_0x59ede6){const _0x40448b=_0x83813e;await sodium[_0x40448b(0x22b)],this[_0x40448b(0x28b)]();const {pqcKey:_0x3b7371,salt:_0x4df4a8}=await new SPD()[_0x40448b(0x184)](_0x59ede6),_0x366520=_0x3b7371[_0x40448b(0x1c1)];this[_0x40448b(0x1dc)]=_0x366520,this[_0x40448b(0x194)]=_0x4df4a8;}async[_0x83813e(0x1c4)](_0x2dea19,_0x3b22cc){const _0x49201b=_0x83813e,_0x57cc42={'YHUur':function(_0x4775f6){return _0x4775f6();},'mZbKy':function(_0x5a9ac4,_0x35deb8){return _0x5a9ac4===_0x35deb8;},'imzCj':_0x49201b(0x30f),'acUzx':'bcLBU','kMYnL':'utf8','sDEWJ':function(_0x5e58dd){return _0x5e58dd();},'UpaeJ':function(_0x498ddc,_0xc3b99){return _0x498ddc(_0xc3b99);},'HwbJq':function(_0xa92229,_0x4c2457){return _0xa92229(_0x4c2457);},'VypRB':function(_0x3bf90a,_0xc15f8d){return _0x3bf90a!==_0xc15f8d;},'tHoCF':_0x49201b(0x167),'UPuBe':function(_0x1e8914,_0x4fe4b5){return _0x1e8914!==_0x4fe4b5;},'FbvrF':_0x49201b(0x240),'TxKNb':_0x49201b(0x2bf)},_0x56eabf=await SPD[_0x49201b(0x2d8)](_0x2dea19,_0x3b22cc),_0x126de2=async()=>{const _0x103b07=_0x49201b,_0x554ff5={'ftqmB':function(_0x562e6d){const _0xc22360=_0x48f6;return _0x57cc42[_0xc22360(0x21f)](_0x562e6d);},'tHILY':function(_0x2129ec,_0x3afbac){const _0x3cbb35=_0x48f6;return _0x57cc42[_0x3cbb35(0x255)](_0x2129ec,_0x3afbac);},'yiVLU':_0x57cc42[_0x103b07(0x258)],'Jcnqn':_0x57cc42[_0x103b07(0x19d)],'fbHUM':_0x57cc42['kMYnL'],'VjnTE':function(_0x460fe4){const _0x35303c=_0x103b07;return _0x57cc42[_0x35303c(0x186)](_0x460fe4);},'RmmJj':function(_0x3df6ad,_0x28bc3d){const _0x4503c0=_0x103b07;return _0x57cc42[_0x4503c0(0x168)](_0x3df6ad,_0x28bc3d);},'KZrts':function(_0x1c050d,_0x33f8a7){const _0x359f9b=_0x103b07;return _0x57cc42[_0x359f9b(0x30e)](_0x1c050d,_0x33f8a7);},'drYfL':function(_0x44fcc7,_0x4e0e22){return _0x57cc42['VypRB'](_0x44fcc7,_0x4e0e22);},'bhdrp':_0x57cc42[_0x103b07(0x1eb)],'GsORH':function(_0x5171a5,_0x34d8ba){return _0x57cc42['UPuBe'](_0x5171a5,_0x34d8ba);},'sOJhn':_0x57cc42[_0x103b07(0x1fd)],'bFwMJ':_0x57cc42[_0x103b07(0x297)]};return new Promise(async(_0x8b86af,_0x112d3a)=>{const _0x2c4f7d=_0x103b07,_0x420c8e={'RQOIF':function(_0x1be4d0){const _0xcbfea3=_0x48f6;return _0x554ff5[_0xcbfea3(0x18c)](_0x1be4d0);},'CgcXA':function(_0x4d2998,_0x39a466){return _0x554ff5['KZrts'](_0x4d2998,_0x39a466);}};if(_0x554ff5[_0x2c4f7d(0x16a)](_0x554ff5['bhdrp'],_0x554ff5[_0x2c4f7d(0x20c)]))_0x420c8e[_0x2c4f7d(0x2dd)](_0xfbddb8);else try{if(_0x554ff5[_0x2c4f7d(0x31b)](_0x554ff5[_0x2c4f7d(0x226)],_0x554ff5['bFwMJ'])){await sodium[_0x2c4f7d(0x22b)];let _0x2cacb6={};this[_0x2c4f7d(0x242)][_0x2c4f7d(0x2ce)](async _0x51fc5b=>{const _0x5434f1=_0x2c4f7d,_0x3c4e0c={'Okuhh':function(_0x3962ac){const _0x346149=_0x48f6;return _0x554ff5[_0x346149(0x247)](_0x3962ac);}};if(_0x554ff5['tHILY'](_0x554ff5[_0x5434f1(0x241)],_0x554ff5[_0x5434f1(0x252)]))_0x3c4e0c[_0x5434f1(0x20a)](_0x3fe96b);else try{const _0x5de231=sodium[_0x5434f1(0x17a)](_0x51fc5b[_0x5434f1(0x242)],_0x51fc5b[_0x5434f1(0x26d)],this['userKey']),_0x19ce8b=zlib['inflateSync'](_0x5de231,{'level':0x9}),_0x1f714d=_0x19ce8b[_0x5434f1(0x19c)](_0x554ff5[_0x5434f1(0x16f)]);_0x2cacb6[_0x51fc5b[_0x5434f1(0x1f8)]]=await this['CSTI'](_0x1f714d,_0x51fc5b[_0x5434f1(0x304)]);}catch{_0x554ff5[_0x5434f1(0x18c)](_0x112d3a);}}),_0x554ff5[_0x2c4f7d(0x28e)](_0x8b86af,_0x2cacb6);}else{const _0x27bc3b={'kVvRx':function(_0x34aaaf,_0xecaf89){const _0xaa180a=_0x2c4f7d;return _0x554ff5[_0xaa180a(0x335)](_0x34aaaf,_0xecaf89);}};_0x1a0f70['hash'](_0x317a90,{'salt':_0x3061c8[_0x2c4f7d(0x1c6)](_0xfa63ee),'type':_0x1d462e[_0x2c4f7d(0x2d5)]})['then'](_0x19ca29=>{const _0x36b6cd=_0x2c4f7d;_0x27bc3b[_0x36b6cd(0x27e)](_0x5662ab,{'pbk':_0x19ca29,'salt':_0x4e4c47});})[_0x2c4f7d(0x18a)](_0x37bd5b=>{const _0x4af076=_0x2c4f7d;_0x4cabfe[_0x4af076(0x257)](_0x37bd5b),_0x420c8e[_0x4af076(0x282)](_0x1108e2,_0x37bd5b);});}}catch{_0x554ff5[_0x2c4f7d(0x18c)](_0x112d3a);}});};_0x56eabf['extractData_OLD']=_0x126de2;const _0x2a5811=await _0x56eabf[_0x49201b(0x183)](),_0x29eaca=new SPD();await _0x29eaca[_0x49201b(0x204)](_0x3b22cc);for(let _0x46499b in _0x2a5811){await _0x29eaca[_0x49201b(0x1f3)](_0x46499b,_0x2a5811[_0x46499b]);}_0x29eaca['saveToFile'](_0x2dea19);}async[_0x83813e(0x259)](_0x208224,_0x262bc1){const _0x5b9d31=_0x83813e,_0x262379={'gqTKA':function(_0x4d6205,_0x1fe561){return _0x4d6205(_0x1fe561);},'LQiZq':'Invalid\x20SPD\x20path\x20or\x20passcode.','odsaV':function(_0x5ca81f,_0x38b75c){return _0x5ca81f===_0x38b75c;},'BEvTb':_0x5b9d31(0x2de),'mmhFP':'NjyVA','YfQwy':function(_0xcc5bc5,_0x3775f5){return _0xcc5bc5(_0x3775f5);},'NiIFi':function(_0x3b0534){return _0x3b0534();},'lhwxp':_0x5b9d31(0x289),'bfPXG':function(_0x176bd9,_0x6db3e7){return _0x176bd9!==_0x6db3e7;},'DlVNw':_0x5b9d31(0x246)},_0x42f1fb=await SPD['loadFromString'](_0x208224,_0x262bc1),_0x56fe09=async()=>{const _0x550f0f=_0x5b9d31,_0x39059e={'vhMHe':_0x262379[_0x550f0f(0x2c9)],'csIuD':function(_0x274c9d,_0xc372fb){const _0x1acf76=_0x550f0f;return _0x262379[_0x1acf76(0x203)](_0x274c9d,_0xc372fb);},'zpMQa':_0x262379['DlVNw'],'maMtS':function(_0x47edcf){return _0x262379['NiIFi'](_0x47edcf);}};return new Promise(async(_0x647580,_0x9c16c3)=>{const _0x8e78fe=_0x550f0f,_0x23b93d={'eemwn':function(_0x2657ce,_0x4a55a2){const _0x252076=_0x48f6;return _0x262379[_0x252076(0x26c)](_0x2657ce,_0x4a55a2);},'AKzKn':_0x262379[_0x8e78fe(0x1b0)]};if(_0x262379[_0x8e78fe(0x222)](_0x262379[_0x8e78fe(0x30d)],_0x262379[_0x8e78fe(0x30d)]))try{if(_0x262379['odsaV'](_0x262379[_0x8e78fe(0x338)],_0x262379[_0x8e78fe(0x338)])){await sodium[_0x8e78fe(0x22b)];let _0x58bf81={};this[_0x8e78fe(0x242)][_0x8e78fe(0x2ce)](async _0x1b621f=>{const _0x24ca50=_0x8e78fe;try{const _0x1298fe=sodium[_0x24ca50(0x17a)](_0x1b621f[_0x24ca50(0x242)],_0x1b621f[_0x24ca50(0x26d)],this[_0x24ca50(0x1dc)]),_0x4676b8=zlib['inflateSync'](_0x1298fe,{'level':0x9}),_0x233999=_0x4676b8[_0x24ca50(0x19c)](_0x39059e[_0x24ca50(0x327)]);_0x58bf81[_0x1b621f[_0x24ca50(0x1f8)]]=await this[_0x24ca50(0x27a)](_0x233999,_0x1b621f['dataType']);}catch{_0x39059e[_0x24ca50(0x199)](_0x39059e[_0x24ca50(0x280)],_0x39059e['zpMQa'])?_0x23b93d[_0x24ca50(0x303)](_0x38d0b3,new _0x5e9d55(_0x23b93d['AKzKn'])):_0x39059e[_0x24ca50(0x201)](_0x9c16c3);}}),_0x262379[_0x8e78fe(0x230)](_0x647580,_0x58bf81);}else return new _0x17ebac(_0x56787f['parse'](_0xe0badf));}catch{_0x262379[_0x8e78fe(0x301)](_0x9c16c3);}else _0x4f3a93=_0x30f6b7;});};_0x42f1fb[_0x5b9d31(0x183)]=_0x56fe09;const _0x52348f=await _0x42f1fb['extractData_OLD'](),_0x241641=new SPD();await _0x241641[_0x5b9d31(0x204)](_0x262bc1);for(let _0x19e800 in _0x52348f){await _0x241641[_0x5b9d31(0x1f3)](_0x19e800,_0x52348f[_0x19e800]);}return _0x241641[_0x5b9d31(0x2bc)]();}async[_0x83813e(0x1f3)](_0x5f529f,_0x58a180){const _0x266169=_0x83813e,_0x50a4e8={'BpdgT':_0x266169(0x264),'qmiZw':_0x266169(0x270)},_0x216c94=await this['CITS'](_0x58a180);await sodium[_0x266169(0x22b)];const _0x330bb5=Buffer[_0x266169(0x1c6)](_0x216c94[0x0]),_0x5b57d2=zlib['deflateSync'](_0x330bb5,{'level':0x9}),_0x1d1733=sodium['randombytes_buf'](sodium[_0x266169(0x302)]),_0x49600e=sodium[_0x266169(0x2af)](_0x5b57d2,null,null,_0x1d1733,this[_0x266169(0x1dc)]),_0x1e42fa=crypto['createHash'](_0x50a4e8['BpdgT'])[_0x266169(0x16d)](_0x49600e)['digest'](_0x50a4e8[_0x266169(0x306)]);this[_0x266169(0x242)][_0x266169(0x320)]({'dataName':_0x5f529f,'nonce':Array['from'](_0x1d1733),'data':Array[_0x266169(0x1c6)](_0x49600e),'hash':_0x1e42fa,'dataType':_0x216c94[0x1]});}[_0x83813e(0x324)](_0x37d93b){const _0x46d32d=_0x83813e,_0x133c1d={'DUxpq':function(_0x20b918,_0x4d0c36){return _0x20b918!==_0x4d0c36;},'sHQSw':_0x46d32d(0x2b5),'yWLez':function(_0x2d1c9c,_0xc78275){return _0x2d1c9c instanceof _0xc78275;},'cRmIO':function(_0x39d2f5,_0x1d5089){return _0x39d2f5!==_0x1d5089;},'zHFaI':_0x46d32d(0x2cd),'mrQFg':_0x46d32d(0x2ea)};if(!_0x37d93b||_0x133c1d['DUxpq'](typeof _0x37d93b,_0x133c1d[_0x46d32d(0x2a4)])||!_0x37d93b[_0x46d32d(0x32e)]()||!this[_0x46d32d(0x194)]||!_0x133c1d[_0x46d32d(0x1a0)](this['salt'],Uint8Array)||_0x133c1d['DUxpq'](this[_0x46d32d(0x194)][_0x46d32d(0x232)],0x10)){if(_0x133c1d[_0x46d32d(0x300)](_0x133c1d[_0x46d32d(0x185)],_0x133c1d[_0x46d32d(0x185)]))return[_0x18d694[_0x46d32d(0x238)](_0x3c5823[_0x46d32d(0x1c6)](_0x368473)),_0x1667cc];else throw new Error(_0x133c1d[_0x46d32d(0x1e2)]);}const _0x5b0bfe=JSON[_0x46d32d(0x238)]({'data':this[_0x46d32d(0x242)],'salt':Array[_0x46d32d(0x1c6)](this[_0x46d32d(0x194)])}),_0x2a1538=zlib[_0x46d32d(0x253)](_0x5b0bfe,{'level':0x9});fs[_0x46d32d(0x2bd)](_0x37d93b,_0x2a1538,{'mode':0x180});}static async['loadFromFile'](_0x585b2b,_0x328f4e){const _0x194c3e=_0x83813e,_0x2dbb0b={'AjjIk':function(_0x5b1381,_0x218a19){return _0x5b1381!==_0x218a19;},'cWMfd':'string','vANWp':function(_0x498ada,_0x4c4581){return _0x498ada instanceof _0x4c4581;},'kJbbD':_0x194c3e(0x2ea),'SndIr':_0x194c3e(0x264),'BrbVJ':_0x194c3e(0x270),'NgEzL':function(_0xefdac3,_0x3a11fa){return _0xefdac3!==_0x3a11fa;},'CZtjS':function(_0x169ec5,_0x2f1bec){return _0x169ec5===_0x2f1bec;},'OAENj':_0x194c3e(0x21e),'kyJnR':'lnVDx','aLJDg':function(_0x3a07c,_0x2f5205){return _0x3a07c(_0x2f5205);},'GQWGx':_0x194c3e(0x25e),'SgQua':_0x194c3e(0x289),'YyEeQ':_0x194c3e(0x290),'ycOom':_0x194c3e(0x16e),'ogtXN':function(_0x1c8a2d){return _0x1c8a2d();}};return new Promise(async(_0x2ffd2e,_0x57472d)=>{const _0x283210=_0x194c3e,_0x5e4a2c={'wxawR':function(_0x598525,_0x4967b6){const _0x4de9ca=_0x48f6;return _0x2dbb0b[_0x4de9ca(0x1cb)](_0x598525,_0x4967b6);},'yOtOW':_0x2dbb0b[_0x283210(0x27b)],'HbKUe':function(_0x14d6ac,_0x425347){return _0x2dbb0b['vANWp'](_0x14d6ac,_0x425347);},'EVFuO':function(_0x126bf9,_0x2a2858){return _0x2dbb0b['AjjIk'](_0x126bf9,_0x2a2858);},'JZowV':_0x2dbb0b['kJbbD'],'tfXcz':_0x2dbb0b['SndIr'],'SvYAj':_0x2dbb0b[_0x283210(0x216)],'KzQlf':function(_0x572df9,_0x2b4d6f){const _0x215dd5=_0x283210;return _0x2dbb0b[_0x215dd5(0x334)](_0x572df9,_0x2b4d6f);},'BBuBb':function(_0x364a31,_0x541fb7){return _0x2dbb0b['CZtjS'](_0x364a31,_0x541fb7);},'jAvFD':_0x2dbb0b[_0x283210(0x263)],'pyNJC':_0x2dbb0b[_0x283210(0x1a7)],'aVMhg':function(_0x3cc259,_0x24ba1a){const _0x2c7e03=_0x283210;return _0x2dbb0b[_0x2c7e03(0x25b)](_0x3cc259,_0x24ba1a);},'LSDQo':function(_0x1a72ec,_0xddc0b9){return _0x2dbb0b['aLJDg'](_0x1a72ec,_0xddc0b9);}};try{(!_0x585b2b||_0x2dbb0b[_0x283210(0x1cb)](typeof _0x585b2b,_0x2dbb0b[_0x283210(0x27b)])||!_0x585b2b['trim']()||!_0x328f4e||_0x2dbb0b[_0x283210(0x334)](typeof _0x328f4e,_0x2dbb0b[_0x283210(0x27b)])||!_0x328f4e[_0x283210(0x32e)]())&&_0x2dbb0b[_0x283210(0x25b)](_0x57472d,new Error(_0x2dbb0b['GQWGx']));await sodium[_0x283210(0x22b)];const _0x4dad09=fs['readFileSync'](_0x585b2b),_0xf6a779=zlib[_0x283210(0x18b)](_0x4dad09,{'level':0x9})[_0x283210(0x19c)](_0x2dbb0b['SgQua']),{data:_0x1e7d20,salt:_0x4b60b3}=JSON[_0x283210(0x283)](_0xf6a779),{pqcKey:_0x595a1d}=await new SPD()[_0x283210(0x2c3)](_0x328f4e,new Uint8Array(_0x4b60b3)),_0x105a00=_0x595a1d[_0x283210(0x1c1)],_0x471282=new SPD();_0x471282[_0x283210(0x1dc)]=_0x105a00,_0x471282[_0x283210(0x296)]={'publicKey':_0x105a00[_0x283210(0x1c1)]},_0x471282[_0x283210(0x242)]=_0x1e7d20[_0x283210(0x1e4)](_0x3abbe0=>({'dataName':_0x3abbe0[_0x283210(0x1f8)],'nonce':Buffer[_0x283210(0x1c6)](_0x3abbe0[_0x283210(0x26d)]),'data':Buffer['from'](_0x3abbe0[_0x283210(0x242)]),'hash':_0x3abbe0[_0x283210(0x1d0)],'dataType':_0x3abbe0[_0x283210(0x304)]})),_0x471282['data'][_0x283210(0x2ce)](_0x34ed88=>{const _0xdd88c7=_0x283210,_0x2162b3=crypto['createHash'](_0x5e4a2c[_0xdd88c7(0x2ed)])[_0xdd88c7(0x16d)](Buffer[_0xdd88c7(0x1c6)](_0x34ed88[_0xdd88c7(0x242)]))[_0xdd88c7(0x2f0)](_0x5e4a2c['SvYAj']);if(_0x5e4a2c['KzQlf'](_0x2162b3,_0x34ed88[_0xdd88c7(0x1d0)])){if(_0x5e4a2c['BBuBb'](_0x5e4a2c[_0xdd88c7(0x243)],_0x5e4a2c['pyNJC'])){if(!_0x322c7a||_0x5e4a2c[_0xdd88c7(0x220)](typeof _0x153b06,_0x5e4a2c['yOtOW'])||!_0x16d95a[_0xdd88c7(0x32e)]()||!this[_0xdd88c7(0x194)]||!_0x5e4a2c[_0xdd88c7(0x2e2)](this[_0xdd88c7(0x194)],_0x1233a5)||_0x5e4a2c[_0xdd88c7(0x269)](this['salt'][_0xdd88c7(0x232)],0x10))throw new _0x257f05(_0x5e4a2c[_0xdd88c7(0x21b)]);const _0x212095=_0x3b4a8a[_0xdd88c7(0x238)]({'data':this[_0xdd88c7(0x242)],'salt':_0x2c8add['from'](this[_0xdd88c7(0x194)])}),_0x3d5a8f=_0x41af1b['deflateSync'](_0x212095,{'level':0x9});_0x44fd74[_0xdd88c7(0x2bd)](_0x3254f5,_0x3d5a8f,{'mode':0x180});}else _0x5e4a2c[_0xdd88c7(0x225)](_0x57472d,new Error('Data\x20integrity\x20check\x20failed\x20for\x20'+_0x34ed88[_0xdd88c7(0x1f8)]));}}),_0x2dbb0b['aLJDg'](_0x2ffd2e,_0x471282);}catch{_0x2dbb0b['NgEzL'](_0x2dbb0b[_0x283210(0x309)],_0x2dbb0b[_0x283210(0x2fe)])?_0x2dbb0b['ogtXN'](_0x57472d):_0x5e4a2c[_0x283210(0x29f)](_0x192430,new _0x92d2bc(_0x283210(0x2b2)+_0x21d6eb[_0x283210(0x1f8)]));}});}async['extractData'](){const _0x4b97eb=_0x83813e,_0x1c1a54={'uULwx':function(_0x482191){return _0x482191();},'kxQIS':'Invalid\x20passcode.','LyGXs':'sha3-512','ttuEd':_0x4b97eb(0x270),'QttHm':function(_0xa00352,_0x1321d2){return _0xa00352!==_0x1321d2;},'QvblC':function(_0x3d3cd8,_0xe27553){return _0x3d3cd8(_0xe27553);},'kgKZc':_0x4b97eb(0x160),'aNHbp':_0x4b97eb(0x1b6),'tIFEG':'utf8','LprjV':function(_0x32ef5a,_0x3af365){return _0x32ef5a===_0x3af365;},'PDuQL':'SaBvz','MuhZH':_0x4b97eb(0x162),'ijnTw':function(_0x56b7d5){return _0x56b7d5();},'ijmDv':function(_0x259098,_0x59f142){return _0x259098!==_0x59f142;},'NRzHE':'yubNt','jzwru':function(_0x3ebfea,_0x107fb4){return _0x3ebfea===_0x107fb4;},'DOdZq':_0x4b97eb(0x1e9),'cQlKk':function(_0x58ee97){return _0x58ee97();}};return new Promise(async(_0x548238,_0x1675f4)=>{const _0x49ebaf=_0x4b97eb,_0xeffb8e={'KDCyh':_0x1c1a54[_0x49ebaf(0x2f8)],'jmBjA':_0x1c1a54['LyGXs'],'KFIzc':_0x1c1a54[_0x49ebaf(0x212)],'QEIFJ':function(_0x13d5e2,_0x4cbd62){const _0x20b8a2=_0x49ebaf;return _0x1c1a54[_0x20b8a2(0x1b4)](_0x13d5e2,_0x4cbd62);},'HJaaU':function(_0x182b27,_0x62d9e4){return _0x1c1a54['QvblC'](_0x182b27,_0x62d9e4);},'NHKhm':_0x1c1a54[_0x49ebaf(0x2a3)],'yBoEN':_0x1c1a54['aNHbp'],'jRjHQ':_0x1c1a54[_0x49ebaf(0x23d)],'hArjq':function(_0x42f9bc,_0x51014e){const _0x8e2ebc=_0x49ebaf;return _0x1c1a54[_0x8e2ebc(0x2e9)](_0x42f9bc,_0x51014e);},'IqvlR':_0x1c1a54['PDuQL'],'PtGOw':_0x1c1a54[_0x49ebaf(0x2f2)],'sYHzG':function(_0x711303){const _0x425bb9=_0x49ebaf;return _0x1c1a54[_0x425bb9(0x1d3)](_0x711303);}};if(_0x1c1a54[_0x49ebaf(0x221)](_0x1c1a54['NRzHE'],_0x1c1a54[_0x49ebaf(0x325)]))throw new _0x3fe305(_0xeffb8e[_0x49ebaf(0x172)]);else try{await sodium[_0x49ebaf(0x22b)];let _0x1bb102={};this[_0x49ebaf(0x242)][_0x49ebaf(0x2ce)](async _0xd50846=>{const _0x5eefce=_0x49ebaf;try{if(_0xeffb8e[_0x5eefce(0x268)](_0xeffb8e[_0x5eefce(0x219)],_0xeffb8e[_0x5eefce(0x1b1)])){const _0x100fe1=sodium[_0x5eefce(0x254)](null,_0xd50846[_0x5eefce(0x242)],null,_0xd50846[_0x5eefce(0x26d)],this[_0x5eefce(0x1dc)]),_0x45f189=zlib[_0x5eefce(0x18b)](_0x100fe1,{'level':0x9}),_0x50b3d2=_0x45f189[_0x5eefce(0x19c)](_0xeffb8e[_0x5eefce(0x1da)]);_0x1bb102[_0xd50846[_0x5eefce(0x1f8)]]=await this[_0x5eefce(0x27a)](_0x50b3d2,_0xd50846['dataType']);}else return new _0x5a4943(_0x5a2e2d[_0x5eefce(0x283)](_0x17c7d6));}catch{if(_0xeffb8e[_0x5eefce(0x2d4)](_0xeffb8e[_0x5eefce(0x329)],_0xeffb8e['PtGOw'])){const _0x5785a7=_0x3ed4f6[_0x5eefce(0x200)](_0xeffb8e['jmBjA'])[_0x5eefce(0x16d)](_0x16303d['from'](_0x1f0bf6['data']))[_0x5eefce(0x2f0)](_0xeffb8e['KFIzc']);_0xeffb8e[_0x5eefce(0x268)](_0x5785a7,_0x29446f[_0x5eefce(0x1d0)])&&_0xeffb8e['HJaaU'](_0x1f8b3f,new _0x20a154(_0x5eefce(0x2b2)+_0x33252c['dataName']));}else _0xeffb8e[_0x5eefce(0x273)](_0x1675f4);}}),_0x1c1a54[_0x49ebaf(0x315)](_0x548238,_0x1bb102);}catch{_0x1c1a54[_0x49ebaf(0x2dc)](_0x1c1a54['DOdZq'],_0x1c1a54[_0x49ebaf(0x2e7)])?_0x1c1a54[_0x49ebaf(0x2ee)](_0x1675f4):_0x1c1a54[_0x49ebaf(0x1fe)](_0x588602);}});}static async['derivePBK'](_0x2ee562,_0x4a183d){const _0x58586b=_0x83813e,_0x11ba64={'zAFqt':function(_0x101999){return _0x101999();},'ZRFpy':function(_0x1b84da,_0x559010){return _0x1b84da(_0x559010);},'BOzfx':function(_0x10c7ea,_0x42ea76){return _0x10c7ea!==_0x42ea76;},'iLmrW':_0x58586b(0x214),'gHHUA':function(_0x84479c,_0x5e0dde){return _0x84479c===_0x5e0dde;},'gJimj':'SlJwD','BprmL':function(_0x3b502c,_0x1a601a){return _0x3b502c===_0x1a601a;},'yGdyD':_0x58586b(0x1c9),'EWjty':_0x58586b(0x1af),'efdWw':_0x58586b(0x2b5),'VAJml':function(_0x38de55,_0x193840){return _0x38de55 instanceof _0x193840;},'dtalo':_0x58586b(0x166),'KPdNm':_0x58586b(0x310)};if(!_0x2ee562||_0x11ba64[_0x58586b(0x1aa)](typeof _0x2ee562,_0x11ba64['efdWw'])||!_0x2ee562['trim']()||!_0x4a183d||!_0x11ba64[_0x58586b(0x2ff)](_0x4a183d,Uint8Array)||_0x11ba64[_0x58586b(0x1aa)](_0x4a183d[_0x58586b(0x232)],0x10)){if(_0x11ba64['BprmL'](_0x11ba64[_0x58586b(0x2cc)],_0x11ba64[_0x58586b(0x2cc)]))throw new Error(_0x11ba64[_0x58586b(0x312)]);else{if(_0x384614){const _0x2e7f4b=_0x169238[_0x58586b(0x174)](_0x2c379c,arguments);return _0x334007=null,_0x2e7f4b;}}}return new Promise(async(_0x5ecb0d,_0x402584)=>{const _0x2040a4=_0x58586b,_0x2d8ac2={'lnUDC':function(_0x29c10f){const _0x5803e8=_0x48f6;return _0x11ba64[_0x5803e8(0x1b2)](_0x29c10f);},'wYehM':function(_0x55dc18,_0x32fd88){const _0x1cb292=_0x48f6;return _0x11ba64[_0x1cb292(0x26a)](_0x55dc18,_0x32fd88);},'qgOkN':function(_0x34fbb3,_0x5084aa){const _0x25f739=_0x48f6;return _0x11ba64[_0x25f739(0x1aa)](_0x34fbb3,_0x5084aa);},'kvIVG':_0x11ba64[_0x2040a4(0x28d)],'zqDEM':function(_0x5ba1f5,_0x256b89){const _0x508eff=_0x2040a4;return _0x11ba64[_0x508eff(0x26a)](_0x5ba1f5,_0x256b89);},'VEMnd':function(_0x59a703,_0x448a1e){const _0x241a44=_0x2040a4;return _0x11ba64[_0x241a44(0x30c)](_0x59a703,_0x448a1e);},'DhxiL':_0x11ba64[_0x2040a4(0x2e8)]};_0x11ba64[_0x2040a4(0x24a)](_0x11ba64['yGdyD'],_0x11ba64['EWjty'])?_0x2d8ac2['lnUDC'](_0x27a2e4):argon2[_0x2040a4(0x1d0)](_0x2ee562,{'salt':Buffer[_0x2040a4(0x1c6)](_0x4a183d),'type':argon2[_0x2040a4(0x2d5)]})['then'](_0x542671=>{const _0x374fa7=_0x2040a4,_0x2ecfa7={'xMASN':function(_0x374fa1,_0x1c39e9){const _0x1eae71=_0x48f6;return _0x2d8ac2[_0x1eae71(0x2f3)](_0x374fa1,_0x1c39e9);}};_0x2d8ac2[_0x374fa7(0x261)](_0x2d8ac2['kvIVG'],_0x2d8ac2[_0x374fa7(0x2a7)])?_0x2ecfa7['xMASN'](_0x4b9ded,new _0x3ff57d('Data\x20integrity\x20check\x20failed\x20for\x20'+_0x9f7bfe['dataName'])):_0x2d8ac2['zqDEM'](_0x5ecb0d,{'pbk':_0x542671,'salt':_0x4a183d});})['catch'](_0xb15ac1=>{const _0x2a0c94=_0x2040a4;if(_0x2d8ac2[_0x2a0c94(0x2aa)](_0x2d8ac2[_0x2a0c94(0x21a)],_0x2d8ac2[_0x2a0c94(0x21a)]))console['log'](_0xb15ac1),_0x2d8ac2[_0x2a0c94(0x286)](_0x402584,_0xb15ac1);else return![];});});}[_0x83813e(0x2bc)](){const _0x102984=_0x83813e,_0x312bc6=JSON[_0x102984(0x238)]({'data':this[_0x102984(0x242)],'salt':Array[_0x102984(0x1c6)](this['salt'])}),_0x4f9689=zlib[_0x102984(0x253)](_0x312bc6,{'level':0x9});return _0x4f9689;}static async[_0x83813e(0x28f)](_0x21ac7a,_0x5b0401){const _0x42fbde=_0x83813e,_0x2184ac={'JQAov':function(_0x5acd68,_0x400348){return _0x5acd68+_0x400348;},'EGVAW':'debu','HiAQj':'gger','pZDkY':_0x42fbde(0x1bb),'SbkWJ':function(_0x3ca64a,_0x4213ad){return _0x3ca64a===_0x4213ad;},'JhcqH':_0x42fbde(0x188),'mKtWF':'sha3-512','mkmht':_0x42fbde(0x270),'ToQik':function(_0x589e13,_0x44a302){return _0x589e13!==_0x44a302;},'svdpE':'FYzBS','pKfTS':'NTrlx','GDeKr':function(_0x4f3d2f,_0x37ca1a){return _0x4f3d2f(_0x37ca1a);},'qORzz':function(_0x30a750,_0x1cfb0c){return _0x30a750!==_0x1cfb0c;},'GDPqh':_0x42fbde(0x2b5),'hWnRp':function(_0x257ac6,_0xe3fe0){return _0x257ac6!==_0xe3fe0;},'MZuda':function(_0x1caa95,_0x4127c0){return _0x1caa95(_0x4127c0);},'UrvRq':_0x42fbde(0x25e),'HVSgS':'base64','ljLCL':'utf8','SgaCH':function(_0x38ecfc,_0x251e43){return _0x38ecfc(_0x251e43);},'sbhWJ':_0x42fbde(0x210),'joxIm':function(_0x335d0e){return _0x335d0e();}};return new Promise(async(_0x4fb4e0,_0x5e59ae)=>{const _0x524ba4=_0x42fbde,_0x2b1fb7={'SBNDT':function(_0x49f32f,_0x4a4c65){const _0x3bb360=_0x48f6;return _0x2184ac[_0x3bb360(0x18d)](_0x49f32f,_0x4a4c65);},'FUCFE':_0x2184ac[_0x524ba4(0x2ad)],'ltRYV':_0x2184ac[_0x524ba4(0x18e)],'mNYCW':_0x2184ac[_0x524ba4(0x179)],'MXTrL':function(_0xcd2420,_0x13f9f1){return _0x2184ac['SbkWJ'](_0xcd2420,_0x13f9f1);},'KOCBD':_0x2184ac[_0x524ba4(0x1dd)],'skFYm':_0x2184ac[_0x524ba4(0x2c5)],'HYEaV':_0x2184ac[_0x524ba4(0x1df)],'IsrFJ':function(_0x52e85e,_0x3a0869){return _0x2184ac['ToQik'](_0x52e85e,_0x3a0869);},'tiKNc':_0x2184ac[_0x524ba4(0x322)],'fMwBC':_0x2184ac[_0x524ba4(0x1f5)],'LggJc':function(_0xe31b70,_0x26c1c2){const _0x4bc33f=_0x524ba4;return _0x2184ac[_0x4bc33f(0x1a2)](_0xe31b70,_0x26c1c2);}};try{(!_0x21ac7a||_0x2184ac[_0x524ba4(0x307)](typeof _0x21ac7a,_0x2184ac[_0x524ba4(0x281)])||!_0x21ac7a[_0x524ba4(0x32e)]()||!_0x5b0401||_0x2184ac[_0x524ba4(0x234)](typeof _0x5b0401,_0x2184ac[_0x524ba4(0x281)])||!_0x5b0401[_0x524ba4(0x32e)]())&&_0x2184ac[_0x524ba4(0x1e8)](_0x5e59ae,new Error(_0x2184ac[_0x524ba4(0x275)]));await sodium[_0x524ba4(0x22b)];const _0x40fb60=Buffer[_0x524ba4(0x1c6)](_0x21ac7a,_0x2184ac[_0x524ba4(0x28a)]),_0x4d59bf=zlib[_0x524ba4(0x18b)](_0x40fb60,{'level':0x9})['toString'](_0x2184ac[_0x524ba4(0x17f)]),{data:_0x3a7520,salt:_0x6452eb}=JSON[_0x524ba4(0x283)](_0x4d59bf),{pqcKey:_0x1f447d}=await new SPD()[_0x524ba4(0x2c3)](_0x5b0401,new Uint8Array(_0x6452eb)),_0x231007=_0x1f447d['publicKey'],_0x18533d=new SPD();_0x18533d[_0x524ba4(0x1dc)]=_0x231007,_0x18533d[_0x524ba4(0x296)]={'publicKey':_0x231007['publicKey']},_0x18533d[_0x524ba4(0x242)]=_0x3a7520[_0x524ba4(0x1e4)](_0xb4900a=>({'dataName':_0xb4900a['dataName'],'nonce':Buffer['from'](_0xb4900a['nonce']),'data':Buffer[_0x524ba4(0x1c6)](_0xb4900a[_0x524ba4(0x242)]),'hash':_0xb4900a[_0x524ba4(0x1d0)],'dataType':_0xb4900a['dataType']})),_0x18533d['data'][_0x524ba4(0x2ce)](_0x1c6fa1=>{const _0x22cfce=_0x524ba4,_0x4e7bf1={'IMoTZ':function(_0x20d65d,_0x503c5c){const _0x3df957=_0x48f6;return _0x2b1fb7[_0x3df957(0x177)](_0x20d65d,_0x503c5c);},'KfUAY':_0x2b1fb7['FUCFE'],'mJzeA':_0x2b1fb7[_0x22cfce(0x2c2)],'uKmdl':_0x2b1fb7['mNYCW']};if(_0x2b1fb7[_0x22cfce(0x337)](_0x2b1fb7[_0x22cfce(0x1a3)],_0x2b1fb7[_0x22cfce(0x1a3)])){const _0x1e21d5=crypto[_0x22cfce(0x200)](_0x2b1fb7[_0x22cfce(0x20f)])[_0x22cfce(0x16d)](Buffer['from'](_0x1c6fa1[_0x22cfce(0x242)]))[_0x22cfce(0x2f0)](_0x2b1fb7[_0x22cfce(0x33b)]);_0x2b1fb7[_0x22cfce(0x2c6)](_0x1e21d5,_0x1c6fa1[_0x22cfce(0x1d0)])&&(_0x2b1fb7[_0x22cfce(0x2c6)](_0x2b1fb7[_0x22cfce(0x2a0)],_0x2b1fb7[_0x22cfce(0x313)])?_0x2b1fb7[_0x22cfce(0x192)](_0x5e59ae,new Error(_0x22cfce(0x2b2)+_0x1c6fa1['dataName'])):function(){return![];}[_0x22cfce(0x26e)](OYbdOs[_0x22cfce(0x2fa)](OYbdOs[_0x22cfce(0x2b0)],OYbdOs[_0x22cfce(0x2df)]))[_0x22cfce(0x174)](OYbdOs[_0x22cfce(0x1a9)]));}else return new _0x1bfc2b(_0x5b78c9);}),_0x2184ac[_0x524ba4(0x2d2)](_0x4fb4e0,_0x18533d);}catch{if(_0x2184ac[_0x524ba4(0x1c7)](_0x2184ac[_0x524ba4(0x19a)],_0x2184ac['sbhWJ']))_0x2184ac[_0x524ba4(0x32b)](_0x5e59ae);else return[_0x55b098['stringify']([..._0x5149c2]),_0x33df7b];}});}async[_0x83813e(0x2c3)](_0x5617bf,_0x4fcd5a){const _0x8a2afe=_0x83813e,_0x491961={'QkeYC':function(_0x2991d8,_0x7b84de){return _0x2991d8!==_0x7b84de;},'vYEmK':_0x8a2afe(0x2b5),'lgQUZ':function(_0x4195a5,_0x2c64c0){return _0x4195a5<_0x2c64c0;},'IKTTw':function(_0x262875,_0x383330){return _0x262875 instanceof _0x383330;},'oTwoZ':_0x8a2afe(0x310)};if(!_0x5617bf||_0x491961[_0x8a2afe(0x196)](typeof _0x5617bf,_0x491961['vYEmK'])||!_0x5617bf[_0x8a2afe(0x32e)]()||_0x491961[_0x8a2afe(0x2b1)](_0x5617bf['length'],0x8)||!_0x4fcd5a||!_0x491961['IKTTw'](_0x4fcd5a,Uint8Array)||_0x491961[_0x8a2afe(0x196)](_0x4fcd5a['length'],0x10))throw new Error(_0x491961[_0x8a2afe(0x331)]);const {pbk:_0xa2522a}=await SPD[_0x8a2afe(0x276)](_0x5617bf,_0x4fcd5a);await sodium[_0x8a2afe(0x22b)];const _0x1cff3f=sodium['crypto_kx_seed_keypair'](_0xa2522a[_0x8a2afe(0x1ff)](0x0,sodium[_0x8a2afe(0x1bd)]));return{'pqcKey':{'publicKey':_0x1cff3f['publicKey']},'salt':_0x4fcd5a};}async[_0x83813e(0x184)](_0x428b71){const _0x8414c2=_0x83813e,_0x79264e={'eWyHF':function(_0xb57699,_0x515468){return _0xb57699!==_0x515468;},'UooGT':_0x8414c2(0x2b5),'GNFkr':function(_0x15806b,_0xec2ea1){return _0x15806b<_0xec2ea1;},'PkaFc':function(_0xd225af,_0x13c48e){return _0xd225af!==_0x13c48e;},'PEmZo':_0x8414c2(0x2e0),'hjWfT':_0x8414c2(0x1c2),'NJghs':_0x8414c2(0x1b3)};if(!_0x428b71||_0x79264e[_0x8414c2(0x2bb)](typeof _0x428b71,_0x79264e[_0x8414c2(0x1fc)])||!_0x428b71[_0x8414c2(0x32e)]()||_0x79264e['GNFkr'](_0x428b71[_0x8414c2(0x232)],0x8)){if(_0x79264e['PkaFc'](_0x79264e['PEmZo'],_0x79264e['hjWfT']))throw new Error(_0x79264e['NJghs']);else{const _0x462863=_0x586752?function(){if(_0x103cde){const _0x570df3=_0x37cadc['apply'](_0x1a3217,arguments);return _0x88e7e=null,_0x570df3;}}:function(){};return _0x50ad93=![],_0x462863;}}const {pbk:_0x1df1ca,salt:_0x2eaed7}=await SPD[_0x8414c2(0x276)](_0x428b71,crypto[_0x8414c2(0x27d)](new Uint8Array(0x10)));await sodium[_0x8414c2(0x22b)];const _0x9f9f2a=sodium[_0x8414c2(0x181)](_0x1df1ca[_0x8414c2(0x1ff)](0x0,sodium[_0x8414c2(0x1bd)]));return{'pqcKey':{'publicKey':_0x9f9f2a[_0x8414c2(0x1c1)]},'salt':_0x2eaed7};}async[_0x83813e(0x1a8)](_0x50be64){const _0x5de0ca=_0x83813e,_0x2609a7={'Hadys':'Array','hAvpa':_0x5de0ca(0x1fa),'CFydb':_0x5de0ca(0x1e6),'pwCbF':_0x5de0ca(0x28c),'hiVXV':_0x5de0ca(0x1b5),'Nswtl':_0x5de0ca(0x17e),'KIhwh':'Float32Array','tvqzf':'Float64Array','PagVp':_0x5de0ca(0x22f),'BPFuS':_0x5de0ca(0x293),'DymRF':_0x5de0ca(0x256),'uLYUO':'RegExp','Ocoob':_0x5de0ca(0x163)},_0x1c6121={'[object\x20Array]':_0x2609a7[_0x5de0ca(0x1ab)],'[object\x20Uint8Array]':_0x2609a7[_0x5de0ca(0x176)],'[object\x20Uint16Array]':_0x2609a7[_0x5de0ca(0x1a4)],'[object\x20Uint32Array]':_0x2609a7['pwCbF'],'[object\x20BigInt64Array]':_0x2609a7[_0x5de0ca(0x319)],'[object\x20BigUint64Array]':_0x2609a7['Nswtl'],'[object\x20Float32Array]':_0x2609a7[_0x5de0ca(0x2a6)],'[object\x20Float64Array]':_0x2609a7[_0x5de0ca(0x22a)],'[object\x20Map]':_0x2609a7[_0x5de0ca(0x2e1)],'[object\x20Set]':_0x2609a7[_0x5de0ca(0x170)],'[object\x20Date]':_0x2609a7[_0x5de0ca(0x1d7)],'[object\x20RegExp]':_0x2609a7['uLYUO'],'[object\x20Error]':_0x2609a7[_0x5de0ca(0x178)]},_0x59e9a8=Object[_0x5de0ca(0x223)][_0x5de0ca(0x19c)][_0x5de0ca(0x2ec)](_0x50be64),_0x3ec1cf=_0x1c6121[_0x59e9a8];return _0x3ec1cf;}async[_0x83813e(0x287)](_0x3f19cc){const _0x1e5570=_0x83813e,_0x34d38d={'tUaLY':function(_0xe2dd7b,_0x49c20f){return _0xe2dd7b===_0x49c20f;},'EAbte':_0x1e5570(0x1fa),'nhPEy':'Uint16Array','YCzuK':function(_0x2a98b4,_0x53960a){return _0x2a98b4===_0x53960a;},'THNtf':'Uint32Array','ZOWGD':function(_0x103013,_0x4d4210){return _0x103013===_0x4d4210;},'fHvHc':_0x1e5570(0x1b5),'cTARw':_0x1e5570(0x17e),'bdFMY':_0x1e5570(0x1ac),'EZRoh':function(_0x4b0e54,_0x120c2d){return _0x4b0e54===_0x120c2d;},'kMprZ':_0x1e5570(0x2b4)};if(_0x34d38d[_0x1e5570(0x262)](_0x3f19cc,_0x34d38d[_0x1e5570(0x191)])||_0x34d38d[_0x1e5570(0x262)](_0x3f19cc,_0x34d38d[_0x1e5570(0x2e3)])||_0x34d38d[_0x1e5570(0x21d)](_0x3f19cc,_0x34d38d['THNtf'])||_0x34d38d[_0x1e5570(0x24d)](_0x3f19cc,_0x34d38d[_0x1e5570(0x1d8)])||_0x34d38d[_0x1e5570(0x24d)](_0x3f19cc,_0x34d38d[_0x1e5570(0x292)])||_0x34d38d[_0x1e5570(0x262)](_0x3f19cc,_0x34d38d[_0x1e5570(0x1c0)])||_0x34d38d['EZRoh'](_0x3f19cc,_0x34d38d['kMprZ']))return!![];}async[_0x83813e(0x2ca)](_0x321a9e){const _0x34c3a4=_0x83813e,_0xfc4005={'zGlml':_0x34c3a4(0x310),'oBfhB':function(_0x19dd84,_0x4314c5){return _0x19dd84===_0x4314c5;},'Wqwmw':'Map','DHVxB':'Set','HKcDU':_0x34c3a4(0x2e6),'CMPqD':function(_0x41cbc4,_0x31e478){return _0x41cbc4===_0x31e478;},'sDjZO':_0x34c3a4(0x209),'fsjJv':function(_0x7aecc1,_0x3dd203){return _0x7aecc1!==_0x3dd203;},'OFhMr':'hvqAN'};if(_0xfc4005[_0x34c3a4(0x288)](_0x321a9e,_0xfc4005['Wqwmw'])||_0xfc4005[_0x34c3a4(0x288)](_0x321a9e,_0xfc4005[_0x34c3a4(0x19b)])||_0xfc4005[_0x34c3a4(0x288)](_0x321a9e,_0xfc4005[_0x34c3a4(0x29a)])||_0xfc4005['CMPqD'](_0x321a9e,_0xfc4005[_0x34c3a4(0x1e1)])){if(_0xfc4005['fsjJv'](_0xfc4005[_0x34c3a4(0x23a)],_0xfc4005['OFhMr']))throw new _0x1d7e9(_0xfc4005[_0x34c3a4(0x207)]);else return!![];}}async[_0x83813e(0x224)](_0x5d5905){const _0x40623e=_0x83813e,_0x186fc7={'cfTFq':function(_0x59f189,_0x18ad46){return _0x59f189===_0x18ad46;},'ZKESM':_0x40623e(0x256),'nOdol':function(_0x4b4d86,_0x1f9d32){return _0x4b4d86===_0x1f9d32;},'Ydyes':_0x40623e(0x2e5),'urpLs':'Error','jEHFn':_0x40623e(0x323),'ObzhQ':_0x40623e(0x298)};if(_0x186fc7[_0x40623e(0x1ad)](_0x5d5905,_0x186fc7[_0x40623e(0x1ce)])||_0x186fc7[_0x40623e(0x1f0)](_0x5d5905,_0x186fc7[_0x40623e(0x161)])||_0x186fc7[_0x40623e(0x1ad)](_0x5d5905,_0x186fc7[_0x40623e(0x2ba)])){if(_0x186fc7['cfTFq'](_0x186fc7[_0x40623e(0x284)],_0x186fc7[_0x40623e(0x2b7)])){const _0x359430=_0x56c283['stringify']({'data':this[_0x40623e(0x242)],'salt':_0xfd7a40[_0x40623e(0x1c6)](this['salt'])}),_0x1e634d=_0x58b8b4[_0x40623e(0x253)](_0x359430,{'level':0x9});return _0x1e634d;}else return!![];}}async['CITS'](_0x42bf86){const _0x2b5fbe=_0x83813e,_0x568644={'LQNMc':function(_0x52f73c){return _0x52f73c();},'AthSE':_0x2b5fbe(0x316),'iemXj':function(_0x576a24,_0x57b901){return _0x576a24===_0x57b901;},'hmlka':_0x2b5fbe(0x2b5),'zbOWS':_0x2b5fbe(0x332),'gqNJM':function(_0x1b7e8d,_0x1a8b1e){return _0x1b7e8d===_0x1a8b1e;},'CGCEd':_0x2b5fbe(0x239),'uzogS':function(_0x2df73e,_0x48c266){return _0x2df73e===_0x48c266;},'NXrMX':_0x2b5fbe(0x249),'avtiI':_0x2b5fbe(0x31a),'RYpwk':function(_0x4f4269,_0x61d562){return _0x4f4269===_0x61d562;},'LiFvk':_0x2b5fbe(0x211),'qEkJI':_0x2b5fbe(0x17b),'bmFPF':_0x2b5fbe(0x2b8),'FpoOA':function(_0x273cf1,_0x5c9614){return _0x273cf1===_0x5c9614;},'unoio':'Array','bVBTb':function(_0x346be8,_0x270563){return _0x346be8===_0x270563;},'byCSO':'wgcYL','bgymh':'QuVLI','fLhxw':function(_0x2b2f07,_0x4e38cf){return _0x2b2f07===_0x4e38cf;},'jqEXM':_0x2b5fbe(0x317)},_0x5f3778=typeof _0x42bf86;if(_0x568644[_0x2b5fbe(0x29e)](_0x5f3778,_0x568644[_0x2b5fbe(0x193)])||_0x568644[_0x2b5fbe(0x29e)](_0x5f3778,_0x568644['zbOWS'])||_0x568644[_0x2b5fbe(0x1ef)](_0x5f3778,_0x568644['CGCEd']))return _0x568644[_0x2b5fbe(0x2a9)](_0x568644[_0x2b5fbe(0x24f)],_0x568644[_0x2b5fbe(0x1a5)])?[_0x1cf3d7[_0x2b5fbe(0x19c)](),_0xc655e0]:[_0x42bf86[_0x2b5fbe(0x19c)](),_0x5f3778];if(_0x568644[_0x2b5fbe(0x33c)](typeof _0x42bf86,_0x568644[_0x2b5fbe(0x217)])){if(_0x568644[_0x2b5fbe(0x2a9)](_0x568644[_0x2b5fbe(0x20b)],_0x568644[_0x2b5fbe(0x236)]))_0x568644[_0x2b5fbe(0x1e7)](_0x3a8f8c);else{const _0x42972f=await this['TDT'](_0x42bf86);if(_0x568644[_0x2b5fbe(0x2a2)](_0x42972f,_0x568644[_0x2b5fbe(0x1d9)]))return[JSON[_0x2b5fbe(0x238)](_0x42bf86),_0x568644['unoio']];if(await this[_0x2b5fbe(0x287)](_0x42972f))return[JSON[_0x2b5fbe(0x238)](Array[_0x2b5fbe(0x1c6)](_0x42bf86)),_0x42972f];if(await this[_0x2b5fbe(0x2ca)](_0x42972f))return _0x568644[_0x2b5fbe(0x278)](_0x568644[_0x2b5fbe(0x31f)],_0x568644[_0x2b5fbe(0x2b3)])?new _0x29614e(_0x1d87e8[_0x2b5fbe(0x283)](_0x559672)):[JSON[_0x2b5fbe(0x238)]([..._0x42bf86]),_0x42972f];if(await this['isDRE'](_0x42972f)){if(_0x568644['fLhxw'](_0x568644[_0x2b5fbe(0x25a)],_0x568644[_0x2b5fbe(0x25a)]))return[_0x42bf86['toString'](),_0x42972f];else{const _0x238572=_0x568644[_0x2b5fbe(0x18f)]['split']('|');let _0x3e13ea=0x0;while(!![]){switch(_0x238572[_0x3e13ea++]){case'0':this[_0x2b5fbe(0x242)]=[];continue;case'1':this[_0x2b5fbe(0x296)];continue;case'2':this[_0x2b5fbe(0x1dc)];continue;case'3':this[_0x2b5fbe(0x194)];continue;case'4':this[_0x2b5fbe(0x28b)]();continue;}break;}}}return[JSON[_0x2b5fbe(0x238)](_0x42bf86),typeof _0x42bf86];}}}async[_0x83813e(0x27a)](_0x23b22b,_0x2b00f8){const _0x86502c=_0x83813e,_0x4b986d={'UPxfM':_0x86502c(0x32d),'mKtqS':function(_0x5d1154,_0x24dbcc){return _0x5d1154(_0x24dbcc);},'fMizl':function(_0x566d8f){return _0x566d8f();},'mkCSY':function(_0x239da5,_0x2a9307){return _0x239da5(_0x2a9307);},'IOtGb':function(_0x429daa,_0x262e4b){return _0x429daa+_0x262e4b;},'yggVq':_0x86502c(0x2fc),'ellLR':_0x86502c(0x1f1),'WdqQx':function(_0x582a9e,_0x4e65cf){return _0x582a9e===_0x4e65cf;},'AjVSE':_0x86502c(0x2b5),'zFFwC':function(_0x2f0406,_0x2d8c76){return _0x2f0406===_0x2d8c76;},'KSFxq':_0x86502c(0x332),'JSVSD':function(_0x4c28fd,_0x3b38ba){return _0x4c28fd(_0x3b38ba);},'iKQSc':_0x86502c(0x239),'QREPn':function(_0x46faf3,_0x17fab3){return _0x46faf3!==_0x17fab3;},'Ijzwu':_0x86502c(0x235),'onUwZ':_0x86502c(0x2c0),'hfuZk':function(_0x641e80,_0x3b2795){return _0x641e80===_0x3b2795;},'HHxWc':_0x86502c(0x1d1),'RSQbV':_0x86502c(0x17c),'nRaGW':_0x86502c(0x211),'GTEGJ':_0x86502c(0x1fa),'Ojnzf':'Uint16Array','ZqryJ':function(_0xd5c4f7,_0x5e6bb4){return _0xd5c4f7!==_0x5e6bb4;},'wEPXO':'FXSvs','NiHxj':_0x86502c(0x28c),'zeiKh':_0x86502c(0x1b5),'qqgZE':_0x86502c(0x17e),'Xwbgm':'Float32Array','wmDiR':_0x86502c(0x2b4),'njPwA':_0x86502c(0x311),'PvMJj':function(_0x31ec87,_0x2148d0){return _0x31ec87===_0x2148d0;},'aiknA':_0x86502c(0x22f),'yvzuf':'XvqrH','ethpm':_0x86502c(0x293),'ZGcNs':_0x86502c(0x2e6),'jdiLp':_0x86502c(0x209),'dszKY':function(_0xd1513f,_0x2e8c0d){return _0xd1513f===_0x2e8c0d;},'dFdPC':_0x86502c(0x237),'dVqYp':function(_0x253d4b,_0x24b12b){return _0x253d4b===_0x24b12b;},'JCCCy':'Date','tHkXj':function(_0xf414ef,_0x2cbb4d){return _0xf414ef!==_0x2cbb4d;},'sjKJg':_0x86502c(0x24b),'mllki':_0x86502c(0x1ee),'NFysX':function(_0x11e5f5,_0x48af11){return _0x11e5f5===_0x48af11;},'GXxVa':_0x86502c(0x2e5),'ouufX':function(_0x4c4395,_0x3273ee){return _0x4c4395===_0x3273ee;},'WZTuz':_0x86502c(0x29d),'bYzUQ':function(_0xf9b15b,_0x1ea4ae){return _0xf9b15b===_0x1ea4ae;},'AEhnG':_0x86502c(0x163)};if(_0x4b986d[_0x86502c(0x277)](_0x2b00f8,_0x4b986d[_0x86502c(0x1f7)]))return _0x23b22b;if(_0x4b986d['zFFwC'](_0x2b00f8,_0x4b986d[_0x86502c(0x26b)]))return _0x4b986d[_0x86502c(0x294)](parseFloat,_0x23b22b);if(_0x4b986d['zFFwC'](_0x2b00f8,_0x4b986d[_0x86502c(0x198)]))return _0x4b986d[_0x86502c(0x208)](_0x4b986d[_0x86502c(0x2d7)],_0x4b986d[_0x86502c(0x285)])?_0x4b986d[_0x86502c(0x248)](_0x23b22b,_0x4b986d['HHxWc'])&&_0x4b986d[_0x86502c(0x208)](_0x23b22b,_0x4b986d[_0x86502c(0x15d)]):[_0x3c5882['stringify'](_0x14c802),_0x4b986d[_0x86502c(0x318)]];if(_0x4b986d[_0x86502c(0x2e4)](_0x2b00f8,_0x4b986d['nRaGW'])||_0x4b986d[_0x86502c(0x248)](_0x2b00f8,_0x4b986d[_0x86502c(0x318)]))return JSON[_0x86502c(0x283)](_0x23b22b);if(_0x4b986d[_0x86502c(0x248)](_0x2b00f8,_0x4b986d[_0x86502c(0x2cb)]))return new Uint8Array(JSON[_0x86502c(0x283)](_0x23b22b));if(_0x4b986d[_0x86502c(0x277)](_0x2b00f8,_0x4b986d[_0x86502c(0x229)]))return _0x4b986d['ZqryJ'](_0x4b986d[_0x86502c(0x17d)],_0x4b986d[_0x86502c(0x17d)])?new _0x5e7726(_0x222710['parse'](_0x19b500)):new Uint16Array(JSON[_0x86502c(0x283)](_0x23b22b));if(_0x4b986d[_0x86502c(0x277)](_0x2b00f8,_0x4b986d[_0x86502c(0x1d2)]))return new Uint32Array(JSON[_0x86502c(0x283)](_0x23b22b));if(_0x4b986d[_0x86502c(0x248)](_0x2b00f8,_0x4b986d[_0x86502c(0x23c)]))return new BigInt64Array(JSON[_0x86502c(0x283)](_0x23b22b));if(_0x4b986d[_0x86502c(0x277)](_0x2b00f8,_0x4b986d['qqgZE']))return new BigUint64Array(JSON['parse'](_0x23b22b));if(_0x4b986d[_0x86502c(0x2e4)](_0x2b00f8,_0x4b986d[_0x86502c(0x218)]))return new Float32Array(JSON[_0x86502c(0x283)](_0x23b22b));if(_0x4b986d['hfuZk'](_0x2b00f8,_0x4b986d[_0x86502c(0x2eb)])){if(_0x4b986d[_0x86502c(0x208)](_0x4b986d['njPwA'],_0x4b986d[_0x86502c(0x197)]))ssfnMS['mKtqS'](_0x458943,0x0);else return new Float64Array(JSON[_0x86502c(0x283)](_0x23b22b));}if(_0x4b986d[_0x86502c(0x2a1)](_0x2b00f8,_0x4b986d[_0x86502c(0x1bc)])){if(_0x4b986d['zFFwC'](_0x4b986d[_0x86502c(0x2db)],_0x4b986d[_0x86502c(0x2db)]))return new Map(JSON[_0x86502c(0x283)](_0x23b22b));else{const _0x55a21e=_0x7a2bad[_0x86502c(0x174)](_0x1ea082,arguments);return _0x449b5b=null,_0x55a21e;}}if(_0x4b986d[_0x86502c(0x2e4)](_0x2b00f8,_0x4b986d[_0x86502c(0x1f2)]))return new Set(JSON[_0x86502c(0x283)](_0x23b22b));if(_0x4b986d[_0x86502c(0x2a1)](_0x2b00f8,_0x4b986d[_0x86502c(0x189)]))return new WeakMap(JSON[_0x86502c(0x283)](_0x23b22b));if(_0x4b986d['hfuZk'](_0x2b00f8,_0x4b986d[_0x86502c(0x25f)]))return _0x4b986d['dszKY'](_0x4b986d[_0x86502c(0x2cf)],_0x4b986d['dFdPC'])?new WeakSet(JSON[_0x86502c(0x283)](_0x23b22b)):new _0x5ba867(_0x47bcc0[_0x86502c(0x283)](_0x27da9e));if(_0x4b986d['dVqYp'](_0x2b00f8,_0x4b986d[_0x86502c(0x182)])){if(_0x4b986d[_0x86502c(0x1d5)](_0x4b986d[_0x86502c(0x291)],_0x4b986d['mllki']))return new Date(_0x23b22b);else _0x4b986d[_0x86502c(0x164)](_0x1cb7ed);}if(_0x4b986d['NFysX'](_0x2b00f8,_0x4b986d[_0x86502c(0x1ed)])){if(_0x4b986d[_0x86502c(0x244)](_0x4b986d[_0x86502c(0x2fd)],_0x4b986d[_0x86502c(0x2fd)]))return new RegExp(_0x23b22b);else{let _0x23249d;try{_0x23249d=ssfnMS['mkCSY'](_0x2eda08,ssfnMS['IOtGb'](ssfnMS[_0x86502c(0x30b)](ssfnMS[_0x86502c(0x2d0)],ssfnMS[_0x86502c(0x16b)]),');'))();}catch(_0x204ca7){_0x23249d=_0x1844ed;}return _0x23249d;}}if(_0x4b986d['bYzUQ'](_0x2b00f8,_0x4b986d[_0x86502c(0x15e)]))return new Error(_0x23b22b);}}module[_0x83813e(0x25d)]={'SPD':SPD};function _0x4225ad(_0x2be890){const _0x3b286e=_0x83813e,_0x97b0f3={'JiywW':function(_0x4e7640,_0x1d30fe){return _0x4e7640===_0x1d30fe;},'icyGU':_0x3b286e(0x2b5),'RyjaG':_0x3b286e(0x333),'BBrSx':_0x3b286e(0x250),'XJHoS':function(_0x4dd5b6,_0xe536d9){return _0x4dd5b6!==_0xe536d9;},'kmHjN':function(_0x2fa9c8,_0xa48693){return _0x2fa9c8+_0xa48693;},'erejV':function(_0x55f154,_0x4a88af){return _0x55f154/_0x4a88af;},'vJKJT':_0x3b286e(0x232),'BYKnw':function(_0xe1e270,_0x328b85){return _0xe1e270%_0x328b85;},'tjndJ':_0x3b286e(0x295),'SHkgI':_0x3b286e(0x19e),'bkIYA':_0x3b286e(0x2c1),'KBpFO':_0x3b286e(0x1b7),'mFuZE':_0x3b286e(0x326),'DQmtL':function(_0x10fcfc,_0x17aabc){return _0x10fcfc+_0x17aabc;},'kHisG':_0x3b286e(0x1bb),'urepa':function(_0x5d4aee,_0x296a87){return _0x5d4aee(_0x296a87);},'qUsfV':function(_0x570e8e,_0x364633){return _0x570e8e(_0x364633);}};function _0x1de223(_0x4725af){const _0x245e68=_0x3b286e;if(_0x97b0f3[_0x245e68(0x2b6)](typeof _0x4725af,_0x97b0f3[_0x245e68(0x195)]))return function(_0x13e1c6){}[_0x245e68(0x26e)](_0x97b0f3[_0x245e68(0x20e)])['apply'](_0x97b0f3[_0x245e68(0x233)]);else{if(_0x97b0f3[_0x245e68(0x1a6)](_0x97b0f3[_0x245e68(0x1ba)]('',_0x97b0f3['erejV'](_0x4725af,_0x4725af))[_0x97b0f3[_0x245e68(0x1de)]],0x1)||_0x97b0f3[_0x245e68(0x2b6)](_0x97b0f3[_0x245e68(0x1c5)](_0x4725af,0x14),0x0)){if(_0x97b0f3[_0x245e68(0x1a6)](_0x97b0f3[_0x245e68(0x180)],_0x97b0f3[_0x245e68(0x215)]))(function(){return!![];}['constructor'](_0x97b0f3[_0x245e68(0x1ba)](_0x97b0f3[_0x245e68(0x2ac)],_0x97b0f3[_0x245e68(0x32f)]))[_0x245e68(0x2ec)](_0x97b0f3[_0x245e68(0x1a1)]));else return[_0x350988[_0x245e68(0x19c)](),_0x205d46];}else(function(){return![];}['constructor'](_0x97b0f3['DQmtL'](_0x97b0f3[_0x245e68(0x2ac)],_0x97b0f3[_0x245e68(0x32f)]))[_0x245e68(0x174)](_0x97b0f3[_0x245e68(0x2f4)]));}_0x97b0f3[_0x245e68(0x21c)](_0x1de223,++_0x4725af);}try{if(_0x2be890)return _0x1de223;else _0x97b0f3[_0x3b286e(0x299)](_0x1de223,0x0);}catch(_0x4a2d4d){}}function _0x23f6(){const _0x39cf6c=['kmHjN','stateObject','aiknA','crypto_kx_SEEDBYTES','NqcFk','JiHNN','bdFMY','publicKey','LNwcy','mSLnH','migrateFromFile','BYKnw','from','SbkWJ','UYaiJ','iXtop','fAwwn','AjjIk','Xzpqr','sSGbt','ZKESM','aspmd','hash','true','NiHxj','ijnTw','hcZDV','tHkXj','OsJZx','DymRF','fHvHc','unoio','jRjHQ','table','userKey','JhcqH','vJKJT','mkmht','eQgaa','sDjZO','mrQFg','XirUq','map','kxarx','Uint16Array','LQNMc','MZuda','AxDgZ','bJtkM','tHoCF','__proto__','GXxVa','SdWkA','gqNJM','nOdol','{}.constructor(\x22return\x20this\x22)(\x20)','ethpm','addData','HTPWP','pKfTS','yEQit','AjVSE','dataName','SobKO','Uint8Array','OGoBU','UooGT','FbvrF','uULwx','slice','createHash','maMtS','function\x20*\x5c(\x20*\x5c)','bfPXG','setPassKey','170AMOtpY','2158962RgtFAy','zGlml','QREPn','WeakSet','Okuhh','qEkJI','bhdrp','iESlI','RyjaG','skFYm','zdkaH','object','ttuEd','kOmfK','RebaN','SHkgI','BrbVJ','LiFvk','Xwbgm','NHKhm','DhxiL','JZowV','urepa','YCzuK','ethRl','YHUur','wxawR','ijmDv','odsaV','prototype','isDRE','aVMhg','sOJhn','KkpzE','rOXNg','Ojnzf','tvqzf','ready','gzTBF','wPPem','LkNTi','Map','YfQwy','8KJLNul','length','BBrSx','hWnRp','lJcyu','bmFPF','anzSH','stringify','boolean','OFhMr','warn','zeiKh','tIFEG','nPGOY','hxbOs','xBnVR','yiVLU','data','jAvFD','ouufX','BTXOj','Yrsjz','ftqmB','hfuZk','ZLIXM','BprmL','PprKD','kyzSE','ZOWGD','TLHZO','NXrMX','counter','lRQbY','Jcnqn','deflateSync','crypto_aead_xchacha20poly1305_ietf_decrypt','mZbKy','Date','log','imzCj','migrateFromString','jqEXM','aLJDg','KdorF','exports','Invalid\x20SPD\x20path\x20or\x20passcode.','jdiLp','VpLpU','qgOkN','tUaLY','OAENj','sha3-512','4820296WLEMoM','mtmRZ','vtqSb','QEIFJ','EVFuO','ZRFpy','KSFxq','gqTKA','nonce','constructor','5XWMvve','hex','aLiKG','tUBUb','sYHzG','fLeOH','UrvRq','derivePBK','WdqQx','bVBTb','AMmry','CSTI','cWMfd','JfRsQ','getRandomValues','kVvRx','nfIYH','zpMQa','GDPqh','CgcXA','parse','jEHFn','onUwZ','zqDEM','isNumArr','oBfhB','utf8','HVSgS','init','Uint32Array','iLmrW','KZrts','loadFromString','lydPN','sjKJg','cTARw','Set','JSVSD','SsMUn','keyPair','TxKNb','GoecS','qUsfV','HKcDU','input','DvCPS','PAQew','iemXj','LSDQo','tiKNc','PvMJj','FpoOA','kgKZc','sHQSw','bind','KIhwh','kvIVG','test','uzogS','VEMnd','26iNVuPn','bkIYA','EGVAW','unvvJ','crypto_aead_xchacha20poly1305_ietf_encrypt','KfUAY','lgQUZ','Data\x20integrity\x20check\x20failed\x20for\x20','bgymh','Float64Array','string','JiywW','ObzhQ','hnMOz','zjRWP','urpLs','eWyHF','saveData','writeFileSync','xPwdI','XAYFM','fYeJT','debu','ltRYV','convertPasscodeToPQCKeySalted','sjEjA','mKtWF','IsrFJ','BzbZR','366996zISCmO','lhwxp','isSWM','GTEGJ','dtalo','HdFlQ','forEach','dFdPC','yggVq','7722927rrKzhm','SgaCH','wzlBQ','hArjq','argon2id','\x5c+\x5c+\x20*(?:[a-zA-Z_$][0-9a-zA-Z_$]*)','Ijzwu','loadFromFile','crypto_kx_keypair','PKsqm','yvzuf','jzwru','RQOIF','cAOFQ','mJzeA','nrxoJ','PagVp','HbKUe','nhPEy','zFFwC','RegExp','WeakMap','DOdZq','gJimj','LprjV','Invalid\x20output\x20path\x20or\x20salt.','wmDiR','call','tfXcz','cQlKk','error','digest','OFcsc','MuhZH','wYehM','kHisG','LnwOB','iYWUi','console','kxQIS','BheIY','IMoTZ','libsodium-wrappers','return\x20(function()\x20','WZTuz','ycOom','VAJml','cRmIO','NiIFi','crypto_box_NONCEBYTES','eemwn','dataType','ZgNuE','qmiZw','qORzz','Basrb','YyEeQ','crypto','IOtGb','gHHUA','BEvTb','HwbJq','ArgtR','Invalid\x20passcode\x20or\x20salt.','fdAqD','KPdNm','fMwBC','UirFI','QvblC','0|1|2|3|4','kFqCX','UPxfM','hiVXV','YzzXm','GsORH','tmDEa','MTFHv','AMuSW','byCSO','push','ZlmQG','svdpE','fQGlV','saveToFile','NRzHE','action','vhMHe','vAuDk','IqvlR','ENPxO','joxIm','split','Array','trim','KBpFO','5712056NMwRwW','oTwoZ','number','while\x20(true)\x20{}','NgEzL','RmmJj','pORMP','MXTrL','mmhFP','pqtof','IMCsR','HYEaV','RYpwk','RSQbV','AEhnG','ViZYE','sLZNL','Ydyes','bDtEc','Error','fMizl','KRobD','MCMhq','baMVt','UpaeJ','vfWqD','drYfL','ellLR','VpDGg','update','uXegz','fbHUM','BPFuS','bsTSC','KDCyh','zlib','apply','2|0|1|3|4','hAvpa','SBNDT','Ocoob','pZDkY','crypto_secretbox_open_easy','jIiYr','false','wEPXO','BigUint64Array','ljLCL','tjndJ','crypto_kx_seed_keypair','JCCCy','extractData_OLD','convertPasscodeToPQCKey','zHFaI','sDEWJ','IGokt','zqJZZ','ZGcNs','catch','inflateSync','VjnTE','JQAov','HiAQj','AthSE','znrLg','EAbte','LggJc','hmlka','salt','icyGU','QkeYC','njPwA','iKQSc','csIuD','sbhWJ','DHVxB','toString','acUzx','MvKrY','wcYwT','yWLez','mFuZE','GDeKr','KOCBD','CFydb','avtiI','XJHoS','kyJnR','TDT','uKmdl','BOzfx','Hadys','Float32Array','cfTFq','2179925Zrelpj','plhKS','LQiZq','yBoEN','zAFqt','Invalid\x20passcode.','QttHm','BigInt64Array','IARku','gger','85154CQkssE','gtcJu'];_0x23f6=function(){return _0x39cf6c;};return _0x23f6();}
1
+ const fs = require('fs')
2
+ const zlib = require('zlib');
3
+ const sodium = require('libsodium-wrappers');
4
+ const crypto = require('crypto');
5
+ const argon2 = require('argon2');
6
+
7
+ class SPD {
8
+
9
+
10
+ constructor() {
11
+ this.data = [];
12
+ this.keyPair; // Generate a key pair for encryption/decryption
13
+ this.userKey;
14
+ this.salt;
15
+ this.init();
16
+ }
17
+ async init() {
18
+ await sodium.ready;
19
+ this.keyPair = sodium.crypto_kx_keypair()
20
+ }
21
+ async setPassKey(passcode){
22
+ await sodium.ready;
23
+ this.init()
24
+ const { pqcKey, salt } = await new SPD().convertPasscodeToPQCKey(passcode);
25
+ const userKey = pqcKey.publicKey;
26
+ this.userKey = userKey;
27
+ this.salt = salt;
28
+ }
29
+
30
+ async migrateFromFile(spdPath,passcode)
31
+ {
32
+
33
+ const spd = await SPD.loadFromFile(spdPath,passcode)
34
+ const extractData_OLD = async ()=>{
35
+ return new Promise(async(res,rej)=>{
36
+ try{
37
+ await sodium.ready;
38
+ let extractedFiles = {};
39
+ this.data.forEach(async dat => {
40
+ try{
41
+ const decryptedData = sodium.crypto_secretbox_open_easy(dat.data, dat.nonce, this.userKey);
42
+ const decompressedData = zlib.inflateSync(decryptedData,{level:9});
43
+ const dt = decompressedData.toString('utf8');
44
+ extractedFiles[dat.dataName] = await this.CSTI(dt, dat.dataType);
45
+ }catch{
46
+ rej()
47
+ }
48
+ });
49
+ res(extractedFiles);
50
+ }catch{
51
+ rej()
52
+ }
53
+ })
54
+ }
55
+ spd.extractData_OLD = extractData_OLD
56
+ const _data = await spd.extractData_OLD()
57
+ const n_spd = new SPD()
58
+ await n_spd.setPassKey(passcode)
59
+ for(let key in _data)
60
+ {
61
+ await n_spd.addData(key,_data[key])
62
+ }
63
+ n_spd.saveToFile(spdPath)
64
+
65
+ }
66
+
67
+ async migrateFromString(spdData,passcode)
68
+ {
69
+ const spd = await SPD.loadFromString(spdData,passcode)
70
+ const extractData_OLD = async ()=>{
71
+ return new Promise(async(res,rej)=>{
72
+ try{
73
+ await sodium.ready;
74
+ let extractedFiles = {};
75
+ this.data.forEach(async dat => {
76
+ try{
77
+ const decryptedData = sodium.crypto_secretbox_open_easy(dat.data, dat.nonce, this.userKey);
78
+ const decompressedData = zlib.inflateSync(decryptedData,{level:9});
79
+ const dt = decompressedData.toString('utf8');
80
+ extractedFiles[dat.dataName] = await this.CSTI(dt, dat.dataType);
81
+ }catch{
82
+ rej()
83
+ }
84
+ });
85
+ res(extractedFiles);
86
+ }catch{
87
+ rej()
88
+ }
89
+ })
90
+ }
91
+ spd.extractData_OLD = extractData_OLD
92
+ const _data = await spd.extractData_OLD()
93
+ const n_spd = new SPD()
94
+ await n_spd.setPassKey(passcode)
95
+ for(let key in _data)
96
+ {
97
+ await n_spd.addData(key,_data[key])
98
+ }
99
+ return n_spd.saveData()
100
+
101
+ }
102
+
103
+ async addData(name, data) {
104
+
105
+
106
+ const dmap = await this.CITS(data)
107
+ await sodium.ready;
108
+ const dat = Buffer.from(dmap[0]);
109
+ const compressedData = zlib.deflateSync(dat,{
110
+ level:9
111
+ });
112
+ const nonce = sodium.randombytes_buf(sodium.crypto_box_NONCEBYTES);
113
+ const encryptedData = sodium.crypto_aead_xchacha20poly1305_ietf_encrypt(
114
+ compressedData,
115
+ null,
116
+ null,
117
+ nonce,
118
+ this.userKey
119
+ )
120
+ //sodium.crypto_secretbox_easy(compressedData, nonce, this.userKey);
121
+ const hash = crypto.createHash('sha3-512').update(encryptedData).digest('hex');
122
+
123
+ this.data.push({ dataName: name, nonce: Array.from(nonce), data: Array.from(encryptedData), hash, dataType: dmap[1] });
124
+ }
125
+
126
+ saveToFile(outputPath) {
127
+ if (!outputPath || typeof outputPath !== 'string' || !outputPath.trim() || !this.salt || !(this.salt instanceof Uint8Array) || this.salt.length !== 16) {
128
+ throw new Error('Invalid output path or salt.');
129
+ }
130
+
131
+ const spdData = JSON.stringify({ data: this.data, salt: Array.from(this.salt) });
132
+ const compressedSpdData = zlib.deflateSync(spdData,{
133
+ level:9
134
+ });
135
+ fs.writeFileSync(outputPath, compressedSpdData, { mode: 0o600 });
136
+ }
137
+
138
+
139
+ static async loadFromFile(spdPath, passcode) {
140
+ return new Promise(async (res,rej)=>{
141
+ try{
142
+ if (!spdPath || typeof spdPath !== 'string' || !spdPath.trim() || !passcode || typeof passcode !== 'string' || !passcode.trim()) {
143
+ rej(new Error('Invalid SPD path or passcode.'));
144
+ }
145
+
146
+ await sodium.ready;
147
+
148
+ const compressedSpdData = fs.readFileSync(spdPath);
149
+ const spdData = zlib.inflateSync(compressedSpdData,{level:9}).toString('utf8');
150
+
151
+ const { data, salt } = JSON.parse(spdData);
152
+
153
+ const { pqcKey } = await new SPD().convertPasscodeToPQCKeySalted(passcode, new Uint8Array(salt));
154
+ const pbk = pqcKey.publicKey;
155
+ const spd = new SPD();
156
+ spd.userKey = pbk;
157
+ spd.keyPair = {
158
+ publicKey: pbk.publicKey
159
+ };
160
+ spd.data = data.map(dat => ({
161
+ dataName: dat.dataName,
162
+ nonce: Buffer.from(dat.nonce),
163
+ data: Buffer.from(dat.data),
164
+ hash: dat.hash,
165
+ dataType: dat.dataType
166
+ }));
167
+ spd.data.forEach(dat => {
168
+ //const calculatedHash = crypto.createHash('sha256').update(Buffer.from(dat.data)).digest('hex');
169
+ const calculatedHash = crypto.createHash('sha3-512').update(Buffer.from(dat.data)).digest('hex');
170
+
171
+ if (calculatedHash !== dat.hash) {
172
+ rej(new Error(`Data integrity check failed for ${dat.dataName}`));
173
+ }
174
+ });
175
+ res(spd);
176
+ }catch{
177
+ rej()
178
+ }
179
+ })
180
+ }
181
+
182
+ async extractData() {
183
+ return new Promise(async(res,rej)=>{
184
+ try{
185
+ await sodium.ready;
186
+ let extractedFiles = {};
187
+ this.data.forEach(async dat => {
188
+ try{
189
+ const decryptedData = sodium.crypto_aead_xchacha20poly1305_ietf_decrypt(null,dat.data,null, dat.nonce, this.userKey);
190
+ const decompressedData = zlib.inflateSync(decryptedData,{level:9});
191
+
192
+ const dt = decompressedData.toString('utf8');
193
+ extractedFiles[dat.dataName] = await this.CSTI(dt, dat.dataType);
194
+ }catch{
195
+ rej()
196
+ }
197
+ });
198
+ res(extractedFiles);
199
+ }catch{
200
+ rej()
201
+ }
202
+ })
203
+ }
204
+
205
+
206
+
207
+ static async derivePBK(passcode, salt) {
208
+ if (!passcode || typeof passcode !== 'string' || !passcode.trim() || !salt || !(salt instanceof Uint8Array) || salt.length !== 16) {
209
+ throw new Error('Invalid passcode or salt.');
210
+ }
211
+
212
+ return new Promise(async(resolve, reject) => {
213
+ argon2.hash(passcode, { salt:Buffer.from(salt), type: argon2.argon2id }).then((data)=>{
214
+
215
+ resolve({ pbk: data, salt: salt });
216
+ }).catch((err)=>{
217
+ console.log(err)
218
+ reject(err);
219
+ })
220
+
221
+ });
222
+ }
223
+
224
+ saveData() {
225
+ const spdData = JSON.stringify({ data: this.data, salt: Array.from(this.salt) });
226
+ const compressedSpdData = zlib.deflateSync(spdData,{level:9});
227
+ return compressedSpdData;
228
+ }
229
+
230
+ static async loadFromString(spdData, passcode) {
231
+ return new Promise(async (res,rej)=>{
232
+ try{
233
+ if (!spdData || typeof spdData !== 'string' || !spdData.trim() || !passcode || typeof passcode !== 'string' || !passcode.trim()) {
234
+ rej(new Error('Invalid SPD path or passcode.'));
235
+ }
236
+
237
+ await sodium.ready;
238
+ const spdDataBuffer = Buffer.from(spdData, 'base64');
239
+ const spdData2 = zlib.inflateSync(spdDataBuffer,{level:9}).toString('utf8');
240
+ const { data, salt } = JSON.parse(spdData2);
241
+ const { pqcKey } = await new SPD().convertPasscodeToPQCKeySalted(passcode, new Uint8Array(salt));
242
+ const pbk = pqcKey.publicKey;
243
+ const spd = new SPD();
244
+ spd.userKey = pbk;
245
+ spd.keyPair = {
246
+ publicKey: pbk.publicKey
247
+ };
248
+ spd.data = data.map(dat => ({
249
+ dataName: dat.dataName,
250
+ nonce: Buffer.from(dat.nonce),
251
+ data: Buffer.from(dat.data),
252
+ hash: dat.hash,
253
+ dataType: dat.dataType
254
+ }));
255
+ spd.data.forEach(dat => {
256
+ const calculatedHash = crypto.createHash('sha3-512').update(Buffer.from(dat.data)).digest('hex');
257
+ if (calculatedHash !== dat.hash) {
258
+ rej(new Error(`Data integrity check failed for ${dat.dataName}`));
259
+ }
260
+ });
261
+ res(spd);
262
+ }catch{
263
+ rej()
264
+ }
265
+ })
266
+ }
267
+
268
+ async convertPasscodeToPQCKeySalted(passcode, salt) {
269
+ if (!passcode || typeof passcode !== 'string' || !passcode.trim() || passcode.length < 8 || !salt || !(salt instanceof Uint8Array) || salt.length !== 16) {
270
+ throw new Error('Invalid passcode or salt.');
271
+ }
272
+
273
+ const { pbk } = await SPD.derivePBK(passcode, salt);
274
+
275
+ await sodium.ready;
276
+
277
+ const keyPair = sodium.crypto_kx_seed_keypair(pbk.slice(0, sodium.crypto_kx_SEEDBYTES));
278
+
279
+
280
+ return { pqcKey: { publicKey: keyPair.publicKey }, salt };
281
+ }
282
+
283
+ async convertPasscodeToPQCKey(passcode) {
284
+ if (!passcode || typeof passcode !== 'string' || !passcode.trim() || passcode.length < 8) {
285
+ throw new Error('Invalid passcode.');
286
+ }
287
+
288
+ const { pbk, salt } = await SPD.derivePBK(passcode, crypto.getRandomValues(new Uint8Array(16)));
289
+
290
+ await sodium.ready;
291
+ const keyPair = sodium.crypto_kx_seed_keypair(pbk.slice(0, sodium.crypto_kx_SEEDBYTES));
292
+
293
+ return { pqcKey: { publicKey: keyPair.publicKey }, salt };
294
+ }
295
+ async TDT(data) {
296
+ const classTypeMap = {
297
+ '[object Array]': 'Array',
298
+ '[object Uint8Array]': 'Uint8Array',
299
+ '[object Uint16Array]': 'Uint16Array',
300
+ '[object Uint32Array]': 'Uint32Array',
301
+ '[object BigInt64Array]': 'BigInt64Array',
302
+ '[object BigUint64Array]': 'BigUint64Array',
303
+ '[object Float32Array]': 'Float32Array',
304
+ '[object Float64Array]': 'Float64Array',
305
+ '[object Map]': 'Map',
306
+ '[object Set]': 'Set',
307
+ '[object Date]': 'Date',
308
+ '[object RegExp]': 'RegExp',
309
+ '[object Error]': 'Error'
310
+ };
311
+
312
+ const objectType = Object.prototype.toString.call(data);
313
+ const mappedType = classTypeMap[objectType];
314
+ return mappedType;
315
+ }
316
+ async isNumArr(dataType) {
317
+ if(dataType === 'Uint8Array' || dataType === 'Uint16Array' || dataType === 'Uint32Array' || dataType === 'BigInt64Array' || dataType === 'BigUint64Array' || dataType === 'Float32Array' || dataType === 'Float64Array'){
318
+ return true;
319
+ }
320
+ }
321
+ async isSWM(dataType) {
322
+ if(dataType === 'Map' || dataType === 'Set' || dataType === 'WeakMap' || dataType === 'WeakSet'){
323
+ return true;
324
+ }
325
+ }
326
+ async isDRE(dataType) {
327
+ if(dataType === 'Date' || dataType === 'RegExp' || dataType === 'Error'){
328
+ return true;
329
+ }
330
+ }
331
+ async CITS(data) {
332
+ const dataType = typeof data;
333
+ if (dataType === 'string' || dataType === 'number' || dataType === 'boolean') {
334
+ return [data.toString(), dataType];
335
+ }
336
+ if(typeof data === 'object'){
337
+ const type = await this.TDT(data)
338
+ if(type === 'Array'){
339
+ return [JSON.stringify(data),'Array'];
340
+ }
341
+ if(await this.isNumArr(type)){
342
+ return [JSON.stringify(Array.from(data)),type];
343
+ }
344
+ if(await this.isSWM(type)){
345
+
346
+ return [JSON.stringify([...data]),type];
347
+ }
348
+ if(await this.isDRE(type)){
349
+ return [data.toString(),type];
350
+ }
351
+ return [JSON.stringify(data), typeof data];
352
+ }
353
+ }
354
+ async CSTI(data,type) {
355
+ if(type === 'string') {
356
+ return data
357
+ }
358
+ if(type === 'number'){
359
+ return parseFloat(data);
360
+ }
361
+ if(type === 'boolean'){
362
+ return (data === 'true')&&(data !== 'false');
363
+ }
364
+ if(type === 'object' || type === 'Array'){
365
+ return JSON.parse(data);
366
+ }
367
+ if(type === 'Uint8Array'){
368
+ return new Uint8Array(JSON.parse(data));
369
+ }
370
+ if(type === 'Uint16Array'){
371
+ return new Uint16Array(JSON.parse(data));
372
+ }
373
+ if(type === 'Uint32Array'){
374
+
375
+ return new Uint32Array(JSON.parse(data));
376
+ }
377
+ if(type === 'BigInt64Array'){
378
+ return new BigInt64Array(JSON.parse(data));
379
+ }
380
+ if(type === 'BigUint64Array'){
381
+ return new BigUint64Array(JSON.parse(data));
382
+ }
383
+ if(type === 'Float32Array'){
384
+ return new Float32Array(JSON.parse(data));
385
+ }
386
+ if(type === 'Float64Array'){
387
+ return new Float64Array(JSON.parse(data));
388
+ }
389
+ if(type === 'Map'){
390
+ return new Map(JSON.parse(data));
391
+ }
392
+ if(type === 'Set'){
393
+ return new Set(JSON.parse(data));
394
+ }
395
+ if(type === 'WeakMap'){
396
+ return new WeakMap(JSON.parse(data));
397
+ }
398
+ if(type === 'WeakSet'){
399
+ return new WeakSet(JSON.parse(data));
400
+ }
401
+ if(type === 'Date'){
402
+ return new Date(data);
403
+ }
404
+ if(type === 'RegExp'){
405
+ return new RegExp(data);
406
+ }
407
+ if(type === 'Error'){
408
+ return new Error(data);
409
+ }
410
+ }
411
+ }
412
+
413
+ module.exports = {
414
+ SPD,
415
+ };
package/package.json CHANGED
@@ -1,11 +1,10 @@
1
1
  {
2
2
  "name": "spd-lib",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "SPD or Secure Packaged Data is a compress PQC protected file format to store sensitive data localy",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1",
8
- "prepublishOnly": "node obfuscate.js"
7
+ "test": "echo \"Error: no test specified\" && exit 1"
9
8
  },
10
9
  "keywords": [
11
10
  "security",
@@ -26,6 +25,7 @@
26
25
  "libsodium-wrappers": "^0.7.15"
27
26
  },
28
27
  "devDependencies": {
29
- "javascript-obfuscator": "^4.1.1"
28
+ "javascript-obfuscator": "^4.1.1",
29
+ "terser": "^5.39.0"
30
30
  }
31
31
  }
package/obfuscate.js DELETED
@@ -1,35 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
- const javascriptObfuscator = require('javascript-obfuscator');
4
-
5
- const inputDir = path.join(__dirname, 'src'); // Your source code directory
6
- const outputDir = path.join(__dirname, 'dist'); // The directory to output obfuscated code
7
-
8
- // Create output directory if it doesn't exist
9
- if (!fs.existsSync(outputDir)){
10
- fs.mkdirSync(outputDir);
11
- }
12
-
13
- // Read the source code from 'src' directory
14
- fs.readdirSync(inputDir).forEach(file => {
15
- const filePath = path.join(inputDir, file);
16
- const outputFilePath = path.join(outputDir, file);
17
-
18
- // Read the file content
19
- const fileContent = fs.readFileSync(filePath, 'utf8');
20
-
21
- // Obfuscate the content of the file
22
- const obfuscatedCode = javascriptObfuscator.obfuscate(fileContent, {
23
- compact: true,
24
- controlFlowFlattening: true, // Flatten control flow to make the code harder to understand
25
- controlFlowFlatteningThreshold: 1,
26
- deadCodeInjection: true, // Inject dead code to further obscure logic
27
- debugProtection: true, // Prevent some debugging features
28
- disableConsoleOutput: true // Remove console logs
29
- }).getObfuscatedCode();
30
-
31
- // Write the obfuscated code to the 'dist' directory
32
- fs.writeFileSync(outputFilePath, obfuscatedCode, 'utf8');
33
- });
34
-
35
- console.log('Obfuscation complete.');
package/readme.md DELETED
@@ -1,137 +0,0 @@
1
- # Secure Packaged Data (SPD)
2
-
3
- The Secure Packaged Data (SPD) module provides functionality to securely store and retrieve data using encryption, compression, and hashing. This README explains how to use the SPD class and its methods.
4
-
5
- ## Installation
6
-
7
- First, ensure you have Node.js installed. Then, install the required packages:
8
-
9
- ```sh
10
- npm install spd-lib
11
- ```
12
-
13
- ## Usage
14
-
15
- Below are the primary functionalities of the SPD class.
16
-
17
- ### Initialization
18
-
19
- Create an instance of the SPD class:
20
-
21
- ```javascript
22
- const { SPD } = require('spd-lib');
23
-
24
- const spd = new SPD();
25
- ```
26
-
27
- ### Setting Passcode
28
-
29
- Set a passcode for encrypting the data:
30
-
31
- ```javascript
32
- await spd.setPassKey('your-passcode');
33
- ```
34
-
35
- ### Adding Data
36
-
37
- Add data to the SPD instance:
38
-
39
- ```javascript
40
- await spd.addData('dataName', yourData);
41
- ```
42
-
43
- ### Saving Data to File
44
-
45
- Save the encrypted and compressed data to a file:
46
-
47
- ```javascript
48
- spd.saveToFile('path/to/output.spd');
49
- ```
50
-
51
- ### Loading Data from File
52
-
53
- Load the data from an SPD file:
54
-
55
- ```javascript
56
- const loadedSPD = await SPD.loadFromFile('path/to/output.spd', 'your-passcode');
57
- ```
58
-
59
- ### Extracting Data
60
-
61
- Extract and decrypt the data from the SPD instance:
62
-
63
- ```javascript
64
- const extractedData = await loadedSPD.extractData();
65
- console.log(extractedData);
66
- ```
67
-
68
- ## Example
69
-
70
- Here is a complete example of how to use the SPD module:
71
-
72
- ```javascript
73
- const { SPD } = require('./path/to/spd.js');
74
-
75
- (async () => {
76
- const spd = new SPD();
77
- await spd.setPassKey('your-passcode');
78
-
79
- const myData = {
80
- name: "Alice",
81
- age: 30,
82
- isMember: true,
83
- preferences: ["reading", "gaming"]
84
- };
85
-
86
- await spd.addData('userData', myData);
87
-
88
- spd.saveToFile('path/to/output.spd');
89
-
90
- const loadedSPD = await SPD.loadFromFile('path/to/output.spd', 'your-passcode');
91
- const extractedData = await loadedSPD.extractData();
92
-
93
- console.log(extractedData);
94
- })();
95
- ```
96
-
97
- ## Methods
98
-
99
- ### `async setPassKey(passcode)`
100
-
101
- Sets the passcode for encrypting and decrypting data.
102
-
103
- - **Parameters**: `passcode` (string) - The passcode to be used.
104
-
105
- ### `async addData(name, data)`
106
-
107
- Adds data to the SPD instance.
108
-
109
- - **Parameters**:
110
- - `name` (string) - The name of the data.
111
- - `data` (any) - The data to be stored.
112
-
113
- ### `saveToFile(outputPath)`
114
-
115
- Saves the encrypted and compressed data to a file.
116
-
117
- - **Parameters**: `outputPath` (string) - The path to save the file.
118
-
119
- ### `static async loadFromFile(spdPath, passcode)`
120
-
121
- Loads the SPD data from a file.
122
-
123
- - **Parameters**:
124
- - `spdPath` (string) - The path to the SPD file.
125
- - `passcode` (string) - The passcode to decrypt the data.
126
-
127
- - **Returns**: An instance of SPD with the loaded data.
128
-
129
- ### `async extractData()`
130
-
131
- Extracts and decrypts the data from the SPD instance.
132
-
133
- - **Returns**: An object with the decrypted data.
134
-
135
- ## License
136
-
137
- This project is licensed under the MIT License.
package/src/index.js DELETED
@@ -1,415 +0,0 @@
1
- const fs = require('fs')
2
- const zlib = require('zlib');
3
- const sodium = require('libsodium-wrappers');
4
- const crypto = require('crypto');
5
- const argon2 = require('argon2');
6
-
7
- class SPD {
8
-
9
-
10
- constructor() {
11
- this.data = [];
12
- this.keyPair; // Generate a key pair for encryption/decryption
13
- this.userKey;
14
- this.salt;
15
- this.init();
16
- }
17
- async init() {
18
- await sodium.ready;
19
- this.keyPair = sodium.crypto_kx_keypair()
20
- }
21
- async setPassKey(passcode){
22
- await sodium.ready;
23
- this.init()
24
- const { pqcKey, salt } = await new SPD().convertPasscodeToPQCKey(passcode);
25
- const userKey = pqcKey.publicKey;
26
- this.userKey = userKey;
27
- this.salt = salt;
28
- }
29
-
30
- async migrateFromFile(spdPath,passcode)
31
- {
32
-
33
- const spd = await SPD.loadFromFile(spdPath,passcode)
34
- const extractData_OLD = async ()=>{
35
- return new Promise(async(res,rej)=>{
36
- try{
37
- await sodium.ready;
38
- let extractedFiles = {};
39
- this.data.forEach(async dat => {
40
- try{
41
- const decryptedData = sodium.crypto_secretbox_open_easy(dat.data, dat.nonce, this.userKey);
42
- const decompressedData = zlib.inflateSync(decryptedData,{level:9});
43
- const dt = decompressedData.toString('utf8');
44
- extractedFiles[dat.dataName] = await this.CSTI(dt, dat.dataType);
45
- }catch{
46
- rej()
47
- }
48
- });
49
- res(extractedFiles);
50
- }catch{
51
- rej()
52
- }
53
- })
54
- }
55
- spd.extractData_OLD = extractData_OLD
56
- const _data = await spd.extractData_OLD()
57
- const n_spd = new SPD()
58
- await n_spd.setPassKey(passcode)
59
- for(let key in _data)
60
- {
61
- await n_spd.addData(key,_data[key])
62
- }
63
- n_spd.saveToFile(spdPath)
64
-
65
- }
66
-
67
- async migrateFromString(spdData,passcode)
68
- {
69
- const spd = await SPD.loadFromString(spdData,passcode)
70
- const extractData_OLD = async ()=>{
71
- return new Promise(async(res,rej)=>{
72
- try{
73
- await sodium.ready;
74
- let extractedFiles = {};
75
- this.data.forEach(async dat => {
76
- try{
77
- const decryptedData = sodium.crypto_secretbox_open_easy(dat.data, dat.nonce, this.userKey);
78
- const decompressedData = zlib.inflateSync(decryptedData,{level:9});
79
- const dt = decompressedData.toString('utf8');
80
- extractedFiles[dat.dataName] = await this.CSTI(dt, dat.dataType);
81
- }catch{
82
- rej()
83
- }
84
- });
85
- res(extractedFiles);
86
- }catch{
87
- rej()
88
- }
89
- })
90
- }
91
- spd.extractData_OLD = extractData_OLD
92
- const _data = await spd.extractData_OLD()
93
- const n_spd = new SPD()
94
- await n_spd.setPassKey(passcode)
95
- for(let key in _data)
96
- {
97
- await n_spd.addData(key,_data[key])
98
- }
99
- return n_spd.saveData()
100
-
101
- }
102
-
103
- async addData(name, data) {
104
-
105
-
106
- const dmap = await this.CITS(data)
107
- await sodium.ready;
108
- const dat = Buffer.from(dmap[0]);
109
- const compressedData = zlib.deflateSync(dat,{
110
- level:9
111
- });
112
- const nonce = sodium.randombytes_buf(sodium.crypto_box_NONCEBYTES);
113
- const encryptedData = sodium.crypto_aead_xchacha20poly1305_ietf_encrypt(
114
- compressedData,
115
- null,
116
- null,
117
- nonce,
118
- this.userKey
119
- )
120
- //sodium.crypto_secretbox_easy(compressedData, nonce, this.userKey);
121
- const hash = crypto.createHash('sha3-512').update(encryptedData).digest('hex');
122
-
123
- this.data.push({ dataName: name, nonce: Array.from(nonce), data: Array.from(encryptedData), hash, dataType: dmap[1] });
124
- }
125
-
126
- saveToFile(outputPath) {
127
- if (!outputPath || typeof outputPath !== 'string' || !outputPath.trim() || !this.salt || !(this.salt instanceof Uint8Array) || this.salt.length !== 16) {
128
- throw new Error('Invalid output path or salt.');
129
- }
130
-
131
- const spdData = JSON.stringify({ data: this.data, salt: Array.from(this.salt) });
132
- const compressedSpdData = zlib.deflateSync(spdData,{
133
- level:9
134
- });
135
- fs.writeFileSync(outputPath, compressedSpdData, { mode: 0o600 });
136
- }
137
-
138
-
139
- static async loadFromFile(spdPath, passcode) {
140
- return new Promise(async (res,rej)=>{
141
- try{
142
- if (!spdPath || typeof spdPath !== 'string' || !spdPath.trim() || !passcode || typeof passcode !== 'string' || !passcode.trim()) {
143
- rej(new Error('Invalid SPD path or passcode.'));
144
- }
145
-
146
- await sodium.ready;
147
-
148
- const compressedSpdData = fs.readFileSync(spdPath);
149
- const spdData = zlib.inflateSync(compressedSpdData,{level:9}).toString('utf8');
150
-
151
- const { data, salt } = JSON.parse(spdData);
152
-
153
- const { pqcKey } = await new SPD().convertPasscodeToPQCKeySalted(passcode, new Uint8Array(salt));
154
- const pbk = pqcKey.publicKey;
155
- const spd = new SPD();
156
- spd.userKey = pbk;
157
- spd.keyPair = {
158
- publicKey: pbk.publicKey
159
- };
160
- spd.data = data.map(dat => ({
161
- dataName: dat.dataName,
162
- nonce: Buffer.from(dat.nonce),
163
- data: Buffer.from(dat.data),
164
- hash: dat.hash,
165
- dataType: dat.dataType
166
- }));
167
- spd.data.forEach(dat => {
168
- //const calculatedHash = crypto.createHash('sha256').update(Buffer.from(dat.data)).digest('hex');
169
- const calculatedHash = crypto.createHash('sha3-512').update(Buffer.from(dat.data)).digest('hex');
170
-
171
- if (calculatedHash !== dat.hash) {
172
- rej(new Error(`Data integrity check failed for ${dat.dataName}`));
173
- }
174
- });
175
- res(spd);
176
- }catch{
177
- rej()
178
- }
179
- })
180
- }
181
-
182
- async extractData() {
183
- return new Promise(async(res,rej)=>{
184
- try{
185
- await sodium.ready;
186
- let extractedFiles = {};
187
- this.data.forEach(async dat => {
188
- try{
189
- const decryptedData = sodium.crypto_aead_xchacha20poly1305_ietf_decrypt(null,dat.data,null, dat.nonce, this.userKey);
190
- const decompressedData = zlib.inflateSync(decryptedData,{level:9});
191
-
192
- const dt = decompressedData.toString('utf8');
193
- extractedFiles[dat.dataName] = await this.CSTI(dt, dat.dataType);
194
- }catch{
195
- rej()
196
- }
197
- });
198
- res(extractedFiles);
199
- }catch{
200
- rej()
201
- }
202
- })
203
- }
204
-
205
-
206
-
207
- static async derivePBK(passcode, salt) {
208
- if (!passcode || typeof passcode !== 'string' || !passcode.trim() || !salt || !(salt instanceof Uint8Array) || salt.length !== 16) {
209
- throw new Error('Invalid passcode or salt.');
210
- }
211
-
212
- return new Promise(async(resolve, reject) => {
213
- argon2.hash(passcode, { salt:Buffer.from(salt), type: argon2.argon2id }).then((data)=>{
214
-
215
- resolve({ pbk: data, salt: salt });
216
- }).catch((err)=>{
217
- console.log(err)
218
- reject(err);
219
- })
220
-
221
- });
222
- }
223
-
224
- saveData() {
225
- const spdData = JSON.stringify({ data: this.data, salt: Array.from(this.salt) });
226
- const compressedSpdData = zlib.deflateSync(spdData,{level:9});
227
- return compressedSpdData;
228
- }
229
-
230
- static async loadFromString(spdData, passcode) {
231
- return new Promise(async (res,rej)=>{
232
- try{
233
- if (!spdData || typeof spdData !== 'string' || !spdData.trim() || !passcode || typeof passcode !== 'string' || !passcode.trim()) {
234
- rej(new Error('Invalid SPD path or passcode.'));
235
- }
236
-
237
- await sodium.ready;
238
- const spdDataBuffer = Buffer.from(spdData, 'base64');
239
- const spdData2 = zlib.inflateSync(spdDataBuffer,{level:9}).toString('utf8');
240
- const { data, salt } = JSON.parse(spdData2);
241
- const { pqcKey } = await new SPD().convertPasscodeToPQCKeySalted(passcode, new Uint8Array(salt));
242
- const pbk = pqcKey.publicKey;
243
- const spd = new SPD();
244
- spd.userKey = pbk;
245
- spd.keyPair = {
246
- publicKey: pbk.publicKey
247
- };
248
- spd.data = data.map(dat => ({
249
- dataName: dat.dataName,
250
- nonce: Buffer.from(dat.nonce),
251
- data: Buffer.from(dat.data),
252
- hash: dat.hash,
253
- dataType: dat.dataType
254
- }));
255
- spd.data.forEach(dat => {
256
- const calculatedHash = crypto.createHash('sha3-512').update(Buffer.from(dat.data)).digest('hex');
257
- if (calculatedHash !== dat.hash) {
258
- rej(new Error(`Data integrity check failed for ${dat.dataName}`));
259
- }
260
- });
261
- res(spd);
262
- }catch{
263
- rej()
264
- }
265
- })
266
- }
267
-
268
- async convertPasscodeToPQCKeySalted(passcode, salt) {
269
- if (!passcode || typeof passcode !== 'string' || !passcode.trim() || passcode.length < 8 || !salt || !(salt instanceof Uint8Array) || salt.length !== 16) {
270
- throw new Error('Invalid passcode or salt.');
271
- }
272
-
273
- const { pbk } = await SPD.derivePBK(passcode, salt);
274
-
275
- await sodium.ready;
276
-
277
- const keyPair = sodium.crypto_kx_seed_keypair(pbk.slice(0, sodium.crypto_kx_SEEDBYTES));
278
-
279
-
280
- return { pqcKey: { publicKey: keyPair.publicKey }, salt };
281
- }
282
-
283
- async convertPasscodeToPQCKey(passcode) {
284
- if (!passcode || typeof passcode !== 'string' || !passcode.trim() || passcode.length < 8) {
285
- throw new Error('Invalid passcode.');
286
- }
287
-
288
- const { pbk, salt } = await SPD.derivePBK(passcode, crypto.getRandomValues(new Uint8Array(16)));
289
-
290
- await sodium.ready;
291
- const keyPair = sodium.crypto_kx_seed_keypair(pbk.slice(0, sodium.crypto_kx_SEEDBYTES));
292
-
293
- return { pqcKey: { publicKey: keyPair.publicKey }, salt };
294
- }
295
- async TDT(data) {
296
- const classTypeMap = {
297
- '[object Array]': 'Array',
298
- '[object Uint8Array]': 'Uint8Array',
299
- '[object Uint16Array]': 'Uint16Array',
300
- '[object Uint32Array]': 'Uint32Array',
301
- '[object BigInt64Array]': 'BigInt64Array',
302
- '[object BigUint64Array]': 'BigUint64Array',
303
- '[object Float32Array]': 'Float32Array',
304
- '[object Float64Array]': 'Float64Array',
305
- '[object Map]': 'Map',
306
- '[object Set]': 'Set',
307
- '[object Date]': 'Date',
308
- '[object RegExp]': 'RegExp',
309
- '[object Error]': 'Error'
310
- };
311
-
312
- const objectType = Object.prototype.toString.call(data);
313
- const mappedType = classTypeMap[objectType];
314
- return mappedType;
315
- }
316
- async isNumArr(dataType) {
317
- if(dataType === 'Uint8Array' || dataType === 'Uint16Array' || dataType === 'Uint32Array' || dataType === 'BigInt64Array' || dataType === 'BigUint64Array' || dataType === 'Float32Array' || dataType === 'Float64Array'){
318
- return true;
319
- }
320
- }
321
- async isSWM(dataType) {
322
- if(dataType === 'Map' || dataType === 'Set' || dataType === 'WeakMap' || dataType === 'WeakSet'){
323
- return true;
324
- }
325
- }
326
- async isDRE(dataType) {
327
- if(dataType === 'Date' || dataType === 'RegExp' || dataType === 'Error'){
328
- return true;
329
- }
330
- }
331
- async CITS(data) {
332
- const dataType = typeof data;
333
- if (dataType === 'string' || dataType === 'number' || dataType === 'boolean') {
334
- return [data.toString(), dataType];
335
- }
336
- if(typeof data === 'object'){
337
- const type = await this.TDT(data)
338
- if(type === 'Array'){
339
- return [JSON.stringify(data),'Array'];
340
- }
341
- if(await this.isNumArr(type)){
342
- return [JSON.stringify(Array.from(data)),type];
343
- }
344
- if(await this.isSWM(type)){
345
-
346
- return [JSON.stringify([...data]),type];
347
- }
348
- if(await this.isDRE(type)){
349
- return [data.toString(),type];
350
- }
351
- return [JSON.stringify(data), typeof data];
352
- }
353
- }
354
- async CSTI(data,type) {
355
- if(type === 'string') {
356
- return data
357
- }
358
- if(type === 'number'){
359
- return parseFloat(data);
360
- }
361
- if(type === 'boolean'){
362
- return (data === 'true')&&(data !== 'false');
363
- }
364
- if(type === 'object' || type === 'Array'){
365
- return JSON.parse(data);
366
- }
367
- if(type === 'Uint8Array'){
368
- return new Uint8Array(JSON.parse(data));
369
- }
370
- if(type === 'Uint16Array'){
371
- return new Uint16Array(JSON.parse(data));
372
- }
373
- if(type === 'Uint32Array'){
374
-
375
- return new Uint32Array(JSON.parse(data));
376
- }
377
- if(type === 'BigInt64Array'){
378
- return new BigInt64Array(JSON.parse(data));
379
- }
380
- if(type === 'BigUint64Array'){
381
- return new BigUint64Array(JSON.parse(data));
382
- }
383
- if(type === 'Float32Array'){
384
- return new Float32Array(JSON.parse(data));
385
- }
386
- if(type === 'Float64Array'){
387
- return new Float64Array(JSON.parse(data));
388
- }
389
- if(type === 'Map'){
390
- return new Map(JSON.parse(data));
391
- }
392
- if(type === 'Set'){
393
- return new Set(JSON.parse(data));
394
- }
395
- if(type === 'WeakMap'){
396
- return new WeakMap(JSON.parse(data));
397
- }
398
- if(type === 'WeakSet'){
399
- return new WeakSet(JSON.parse(data));
400
- }
401
- if(type === 'Date'){
402
- return new Date(data);
403
- }
404
- if(type === 'RegExp'){
405
- return new RegExp(data);
406
- }
407
- if(type === 'Error'){
408
- return new Error(data);
409
- }
410
- }
411
- }
412
-
413
- module.exports = {
414
- SPD,
415
- };
package/test.js DELETED
@@ -1,15 +0,0 @@
1
- const {SPD} = require('./index.js');
2
- function data ()
3
- {
4
-
5
- return "space"
6
- }
7
- (async()=>{
8
- const spd = new SPD()
9
- await spd.setPassKey("BKJAnjaksd8asjdlasd0a9sjd")
10
- await spd.addData("_core",data())
11
- const a = spd.saveData()
12
- const s = await SPD.loadFromString(Buffer.from(a).toString('base64'),"BKJAnjaksd8asjdlasd0a9sjd")
13
- const d = await s.extractData()
14
- console.log(d)
15
- })()