@evomap/evolver 1.89.17 → 1.89.18
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/README.ja-JP.md +1 -1
- package/README.ko-KR.md +1 -1
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/index.js +89 -17
- package/package.json +1 -1
- package/src/adapters/claudeCode.js +36 -7
- package/src/adapters/hookAdapter.js +24 -0
- package/src/atp/atpExecute.js +3 -1
- package/src/atp/hubClient.js +5 -3
- package/src/atp/serviceHelper.js +3 -2
- package/src/evolve/guards.js +1 -1
- package/src/evolve/pipeline/collect.js +1 -1
- package/src/evolve/pipeline/dispatch.js +1 -1
- package/src/evolve/pipeline/enrich.js +1 -1
- package/src/evolve/pipeline/hub.js +1 -1
- package/src/evolve/pipeline/select.js +1 -1
- package/src/evolve/pipeline/signals.js +1 -1
- package/src/evolve/utils.js +1 -1
- package/src/evolve.js +1 -1
- package/src/gep/a2aProtocol.js +1 -1
- package/src/gep/antiAbuseTelemetry.js +1 -1
- package/src/gep/autoDistillConv.js +1 -1
- package/src/gep/autoDistillLlm.js +1 -1
- package/src/gep/candidateEval.js +1 -1
- package/src/gep/candidates.js +1 -1
- package/src/gep/cliContracts.js +37 -1
- package/src/gep/contentHash.js +1 -1
- package/src/gep/conversationDistiller.js +1 -1
- package/src/gep/conversationSniffer.js +1 -1
- package/src/gep/crypto.js +1 -1
- package/src/gep/curriculum.js +1 -1
- package/src/gep/deviceId.js +1 -1
- package/src/gep/directoryClient.js +7 -3
- package/src/gep/envFingerprint.js +1 -1
- package/src/gep/epigenetics.js +1 -1
- package/src/gep/execBridge.js +1 -1
- package/src/gep/explore.js +1 -1
- package/src/gep/hash.js +1 -1
- package/src/gep/hubFetch.js +1 -1
- package/src/gep/hubReview.js +1 -1
- package/src/gep/hubSearch.js +1 -1
- package/src/gep/hubVerify.js +1 -1
- package/src/gep/learningSignals.js +1 -1
- package/src/gep/memoryGraph.js +1 -1
- package/src/gep/memoryGraphAdapter.js +1 -1
- package/src/gep/mutation.js +1 -1
- package/src/gep/narrativeMemory.js +1 -1
- package/src/gep/oauthLogin.js +3 -5
- package/src/gep/openPRRegistry.js +1 -1
- package/src/gep/personality.js +1 -1
- package/src/gep/policyCheck.js +1 -1
- package/src/gep/privacyClient.js +28 -10
- package/src/gep/prompt.js +1 -1
- package/src/gep/recallInject.js +1 -1
- package/src/gep/recallVerifier.js +1 -1
- package/src/gep/reflection.js +1 -1
- package/src/gep/savingsCore.js +1 -1
- package/src/gep/selector.js +1 -1
- package/src/gep/skillDistiller.js +1 -1
- package/src/gep/skillPublisher.js +8 -3
- package/src/gep/solidify.js +1 -1
- package/src/gep/strategy.js +1 -1
- package/src/gep/taskReceiver.js +3 -2
- package/src/gep/tokenSavings.js +1 -1
- package/src/gep/validator/index.js +7 -2
- package/src/gep/validator/reporter.js +7 -2
- package/src/gep/validator/stakeBootstrap.js +7 -2
- package/src/gep/workspaceKeychain.js +1 -1
- package/src/proxy/clientSettings.js +405 -0
- package/src/proxy/extensions/traceControl.js +1 -1
- package/src/proxy/index.js +10 -5
- package/src/proxy/inject.js +1 -1
- package/src/proxy/lifecycle/manager.js +82 -16
- package/src/proxy/mailbox/state.js +207 -0
- package/src/proxy/mailbox/store.js +164 -64
- package/src/proxy/router/messages_route.js +4 -3
- package/src/proxy/server/http.js +40 -6
- package/src/proxy/sync/inbound.js +31 -12
- package/src/proxy/sync/outbound.js +157 -22
- package/src/proxy/trace/extractor.js +1 -1
- package/src/proxy/trace/usage.js +1 -1
package/src/proxy/index.js
CHANGED
|
@@ -184,6 +184,7 @@ class EvoMapProxy {
|
|
|
184
184
|
this.dataDir = opts.dataDir || opts.dbPath || _defaultDataDir();
|
|
185
185
|
this.port = opts.port;
|
|
186
186
|
this.logger = opts.logger || console;
|
|
187
|
+
this.clientSettings = opts.clientSettings || null;
|
|
187
188
|
this._skillPath = opts.skillPath || null;
|
|
188
189
|
this._anthropicBaseUrl = (opts.anthropicBaseUrl || process.env.EVOMAP_ANTHROPIC_BASE_URL || 'https://api.anthropic.com').replace(/\/+$/, '');
|
|
189
190
|
this._openaiBaseUrl = String(opts.openaiBaseUrl || process.env.EVOMAP_OPENAI_BASE_URL || DEFAULT_OPENAI_BASE_URL).replace(/\/+$/, '');
|
|
@@ -396,6 +397,7 @@ class EvoMapProxy {
|
|
|
396
397
|
this.server = new ProxyHttpServer(routes, {
|
|
397
398
|
port: this.port,
|
|
398
399
|
logger: this.logger,
|
|
400
|
+
clientSettings: this.clientSettings,
|
|
399
401
|
});
|
|
400
402
|
|
|
401
403
|
const serverInfo = await this.server.start();
|
|
@@ -462,7 +464,8 @@ class EvoMapProxy {
|
|
|
462
464
|
|| (stats.skipped || 0) > 0
|
|
463
465
|
|| (stats.duplicates || 0) > 0;
|
|
464
466
|
if (!madeProgress) break;
|
|
465
|
-
if (stats.reasons?.max_pending_uploads || stats.reasons?.
|
|
467
|
+
if (stats.reasons?.max_pending_uploads || stats.reasons?.max_enqueue_bytes
|
|
468
|
+
|| stats.reasons?.collection_disabled
|
|
466
469
|
|| stats.reasons?.missing_file || stats.reasons?.missing_store
|
|
467
470
|
|| stats.reasons?.read_failed || stats.reasons?.thrown) {
|
|
468
471
|
break;
|
|
@@ -824,8 +827,9 @@ class EvoMapProxy {
|
|
|
824
827
|
// here, so clients (e.g. Claude Code) can authenticate to the proxy
|
|
825
828
|
// with `ANTHROPIC_AUTH_TOKEN=<proxy_token>` without losing the ability
|
|
826
829
|
// to reach Anthropic upstream. When the client did not pass x-api-key,
|
|
827
|
-
// the proxy substitutes its own
|
|
828
|
-
// env var on the upstream request.
|
|
830
|
+
// the proxy substitutes its own EVOMAP_ANTHROPIC_API_KEY /
|
|
831
|
+
// ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN env var on the upstream request.
|
|
832
|
+
// Env is read per-request so creds
|
|
829
833
|
// can be hot-swapped without restart, matching the EVOMAP_MODEL_*
|
|
830
834
|
// policy in README.
|
|
831
835
|
async _proxyAnthropic(reqPath, body, opts = {}) {
|
|
@@ -846,8 +850,9 @@ class EvoMapProxy {
|
|
|
846
850
|
}
|
|
847
851
|
|
|
848
852
|
if (!fwd['x-api-key']) {
|
|
849
|
-
|
|
850
|
-
|
|
853
|
+
const upstreamApiKey = process.env.EVOMAP_ANTHROPIC_API_KEY || process.env.ANTHROPIC_API_KEY;
|
|
854
|
+
if (upstreamApiKey) {
|
|
855
|
+
fwd['x-api-key'] = upstreamApiKey;
|
|
851
856
|
} else {
|
|
852
857
|
const upstreamAuthToken = process.env.EVOMAP_ANTHROPIC_AUTH_TOKEN
|
|
853
858
|
|| (process.env.EVOMAP_PROXY_AUTO_INJECTED === '1' ? '' : process.env.ANTHROPIC_AUTH_TOKEN);
|
package/src/proxy/inject.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x859dd7=_0x286f;(function(_0x1c8665,_0x314dac){const _0x10143e=_0x286f,_0x3ea0e1=_0x1c8665();while(!![]){try{const _0x124615=parseInt(_0x10143e(0x8b,'\x43\x28\x54\x65'))/(-0x51*-0x18+-0x131d+0xb86)*(-parseInt(_0x10143e(0xc6,'\x4e\x42\x75\x23'))/(-0xc5*-0x13+0x351*-0x1+-0x3c4*0x3))+-parseInt(_0x10143e(0xed,'\x2a\x79\x6e\x61'))/(-0xc0c+0x1*-0xb57+0x1766)+-parseInt(_0x10143e(0xda,'\x26\x38\x26\x26'))/(-0x2699+0x1000*-0x1+-0x1f*-0x1c3)+-parseInt(_0x10143e(0xa2,'\x39\x6d\x40\x79'))/(0x1*0x1918+0x36*0x65+-0x2e61)+-parseInt(_0x10143e(0x9a,'\x40\x5d\x63\x39'))/(-0xdb4*-0x2+-0xac0+0x851*-0x2)+-parseInt(_0x10143e(0xb6,'\x59\x4e\x6c\x40'))/(-0x3*-0x3fd+-0x1*-0x69e+-0x128e)+parseInt(_0x10143e(0x103,'\x25\x79\x23\x64'))/(-0x13be+-0x624*-0x6+0x26*-0x73)*(parseInt(_0x10143e(0x86,'\x39\x6d\x40\x79'))/(0x8f5*0x1+-0x1d8*-0xb+-0x1d34));if(_0x124615===_0x314dac)break;else _0x3ea0e1['push'](_0x3ea0e1['shift']());}catch(_0x388846){_0x3ea0e1['push'](_0x3ea0e1['shift']());}}}(_0x2dd2,-0x606*-0x3+0x8*0x636b+-0x19340));const _0x42e93d=(function(){const _0x47f961=_0x286f,_0x5607bc={};_0x5607bc[_0x47f961(0xac,'\x74\x23\x66\x4e')]=_0x47f961(0x8a,'\x25\x79\x23\x64'),_0x5607bc[_0x47f961(0xd9,'\x25\x46\x66\x49')]=function(_0x3bb26e,_0xfe61b2){return _0x3bb26e===_0xfe61b2;},_0x5607bc[_0x47f961(0x112,'\x21\x52\x4f\x25')]=_0x47f961(0xc0,'\x58\x69\x66\x66'),_0x5607bc[_0x47f961(0xfe,'\x59\x74\x34\x24')]=function(_0x3ce5f5,_0x49de39){return _0x3ce5f5===_0x49de39;},_0x5607bc[_0x47f961(0xdf,'\x52\x58\x4e\x72')]=function(_0x79ecfa,_0x20af45){return _0x79ecfa!==_0x20af45;},_0x5607bc[_0x47f961(0x107,'\x25\x79\x23\x64')]=_0x47f961(0xe0,'\x43\x48\x44\x74');const _0x39b810=_0x5607bc;let _0x337486=!![];return function(_0x3ff43c,_0x34df47){const _0x1828a0=_0x47f961,_0x1e19f3={'\x59\x56\x49\x78\x4c':_0x39b810[_0x1828a0(0x92,'\x64\x63\x5d\x43')],'\x50\x65\x73\x47\x76':function(_0x52f851,_0x48a598){return _0x39b810['\x7a\x47\x50\x4f\x72'](_0x52f851,_0x48a598);},'\x64\x58\x4b\x51\x7a':function(_0x2c2b5d,_0x195c32){const _0x32f8ef=_0x1828a0;return _0x39b810[_0x32f8ef(0xff,'\x59\x4e\x6c\x40')](_0x2c2b5d,_0x195c32);},'\x42\x63\x79\x62\x43':_0x39b810[_0x1828a0(0x8c,'\x25\x51\x48\x44')],'\x63\x70\x41\x44\x73':function(_0x186f9a,_0x42dcad){const _0x28c6fd=_0x1828a0;return _0x39b810[_0x28c6fd(0xcd,'\x24\x5d\x26\x35')](_0x186f9a,_0x42dcad);}};if(_0x39b810[_0x1828a0(0xd2,'\x78\x5a\x30\x51')](_0x39b810[_0x1828a0(0xf0,'\x78\x5a\x30\x51')],_0x39b810[_0x1828a0(0x102,'\x28\x67\x33\x39')])){const _0x5ad673=_0x24ed91(_0x4d2e93[_0x1828a0(0xc8,'\x29\x61\x38\x4d')+_0x1828a0(0xf9,'\x25\x51\x48\x44')+_0x1828a0(0xbc,'\x25\x79\x23\x64')]||'')[_0x1828a0(0xa9,'\x24\x59\x32\x4f')]()[_0x1828a0(0xf7,'\x4b\x4e\x52\x56')+_0x1828a0(0xe9,'\x64\x63\x5d\x43')]();return _0x5ad673==='\x30'||_0x5ad673===_0x1e19f3[_0x1828a0(0xbe,'\x58\x69\x66\x66')]||_0x1e19f3['\x50\x65\x73\x47\x76'](_0x5ad673,_0x1828a0(0x9d,'\x43\x28\x54\x65'))||_0x1e19f3[_0x1828a0(0xe5,'\x28\x67\x33\x39')](_0x5ad673,_0x1e19f3[_0x1828a0(0xa1,'\x25\x79\x23\x64')])||_0x1e19f3[_0x1828a0(0x96,'\x42\x6b\x58\x52')](_0x5ad673,'\x6e\x6f');}else{const _0xc904e1=_0x337486?function(){const _0x10dda0=_0x1828a0;if(_0x34df47){const _0x14b157=_0x34df47[_0x10dda0(0xf6,'\x39\x6d\x40\x79')](_0x3ff43c,arguments);return _0x34df47=null,_0x14b157;}}:function(){};return _0x337486=![],_0xc904e1;}};}()),_0x8fec98=_0x42e93d(this,function(){const _0x3d4914=_0x286f;return _0x8fec98[_0x3d4914(0x10e,'\x54\x6d\x57\x53')]()[_0x3d4914(0xbb,'\x58\x67\x36\x32')](_0x3d4914(0x10f,'\x4e\x42\x75\x23')+_0x3d4914(0x9e,'\x43\x28\x54\x65'))[_0x3d4914(0xef,'\x78\x5a\x30\x51')]()[_0x3d4914(0xa3,'\x74\x23\x66\x4e')+_0x3d4914(0xcc,'\x53\x45\x6d\x62')](_0x8fec98)[_0x3d4914(0xf8,'\x4b\x4e\x52\x56')](_0x3d4914(0xa5,'\x59\x5d\x6e\x30')+_0x3d4914(0x94,'\x59\x4e\x6c\x40'));});_0x8fec98();function _0x2dd2(){const _0x148ebc=['\x65\x43\x6f\x39\x46\x47','\x67\x61\x43\x6a','\x6e\x66\x6d\x6e\x57\x36\x57','\x70\x38\x6b\x4b\x57\x34\x35\x52\x57\x36\x43','\x45\x71\x48\x4c\x57\x4f\x39\x6c\x57\x51\x74\x63\x4a\x38\x6b\x30\x62\x68\x4e\x63\x4f\x43\x6b\x72','\x57\x37\x4a\x64\x53\x6d\x6f\x4a\x57\x35\x79','\x57\x36\x74\x64\x4d\x4b\x78\x63\x53\x6d\x6b\x78\x57\x36\x2f\x63\x54\x38\x6b\x41','\x57\x34\x42\x64\x56\x4d\x74\x63\x4c\x53\x6b\x61','\x57\x37\x6c\x64\x4a\x65\x68\x63\x4a\x43\x6b\x67','\x6e\x31\x64\x64\x55\x5a\x47\x41\x57\x34\x2f\x64\x4d\x71\x65','\x57\x51\x33\x63\x49\x76\x7a\x46\x57\x50\x57','\x76\x43\x6f\x47\x76\x4d\x2f\x64\x53\x53\x6f\x72\x57\x36\x6c\x64\x49\x61','\x57\x36\x70\x64\x56\x33\x46\x63\x47\x6d\x6b\x39','\x66\x74\x68\x64\x56\x67\x44\x2b','\x57\x34\x70\x64\x4c\x6d\x6f\x51\x57\x37\x44\x2b\x41\x38\x6b\x37\x57\x36\x4f','\x57\x34\x74\x64\x4e\x53\x6f\x68\x57\x36\x50\x51\x7a\x47','\x57\x36\x2f\x63\x53\x38\x6f\x6c\x57\x50\x71\x76\x57\x36\x47\x61\x42\x71','\x57\x52\x65\x54\x62\x6d\x6b\x53\x57\x35\x68\x63\x4f\x53\x6f\x70\x64\x71','\x57\x36\x53\x32\x67\x53\x6f\x31\x68\x62\x62\x6e\x46\x71','\x57\x51\x52\x63\x4b\x68\x54\x39\x57\x52\x4f','\x45\x47\x4e\x63\x4e\x47\x5a\x64\x4c\x53\x6f\x47\x64\x4d\x4f','\x57\x36\x31\x39\x57\x4f\x74\x64\x54\x65\x6d','\x43\x38\x6b\x55\x65\x4a\x30\x53','\x57\x37\x46\x64\x47\x43\x6b\x70\x57\x36\x2f\x64\x47\x53\x6f\x51\x68\x63\x44\x54\x57\x50\x43\x43\x6a\x53\x6b\x6a','\x57\x37\x2f\x64\x56\x6d\x6f\x56\x57\x34\x58\x6c','\x57\x4f\x4b\x5a\x57\x36\x44\x55\x42\x71','\x57\x34\x64\x64\x52\x43\x6b\x77\x66\x6d\x6f\x30\x57\x4f\x79\x33\x75\x61\x74\x63\x4d\x5a\x53\x45\x64\x71','\x57\x50\x61\x5a\x57\x35\x62\x59','\x75\x53\x6f\x62\x57\x50\x4e\x63\x54\x71\x70\x64\x53\x53\x6f\x4f\x42\x61','\x57\x36\x78\x64\x49\x53\x6f\x62\x57\x35\x76\x35','\x57\x51\x68\x63\x4c\x53\x6f\x77\x44\x43\x6b\x4a','\x78\x6d\x6f\x56\x45\x65\x46\x63\x56\x43\x6f\x4d\x57\x4f\x58\x64','\x57\x4f\x68\x64\x47\x43\x6f\x33\x72\x71\x34\x6b','\x57\x52\x37\x64\x4f\x30\x69\x52\x57\x36\x68\x64\x4f\x71','\x57\x50\x70\x63\x54\x6d\x6f\x78\x72\x53\x6b\x4b\x57\x35\x35\x51\x45\x57','\x6f\x77\x56\x63\x55\x63\x33\x63\x53\x5a\x53','\x57\x34\x70\x64\x4a\x38\x6f\x70\x57\x37\x7a\x55\x46\x71','\x57\x4f\x35\x46\x57\x35\x4f\x6c\x42\x43\x6f\x48\x69\x6d\x6f\x48','\x65\x38\x6b\x68\x57\x35\x56\x64\x56\x4b\x56\x63\x52\x38\x6b\x4d\x69\x71','\x44\x6d\x6f\x71\x72\x68\x4e\x63\x4c\x43\x6f\x79\x57\x52\x72\x44','\x57\x35\x42\x63\x48\x49\x50\x72\x6d\x75\x4a\x63\x4c\x31\x34','\x45\x68\x78\x64\x4c\x38\x6b\x50\x57\x52\x57','\x57\x37\x62\x53\x57\x51\x33\x64\x49\x67\x65','\x70\x6d\x6b\x43\x57\x37\x58\x51\x57\x35\x35\x4c\x57\x50\x34\x66','\x66\x76\x52\x63\x4b\x62\x74\x63\x50\x6d\x6b\x4f\x57\x52\x79','\x45\x43\x6f\x56\x72\x38\x6b\x56\x6a\x59\x47\x38\x57\x37\x34','\x74\x71\x56\x64\x56\x66\x35\x6f\x57\x37\x50\x32','\x72\x53\x6b\x37\x63\x48\x34\x69','\x57\x51\x4c\x68\x57\x52\x71\x54\x57\x4f\x52\x63\x55\x38\x6f\x75\x57\x51\x43','\x70\x53\x6f\x41\x75\x38\x6f\x36\x61\x43\x6b\x51\x57\x34\x48\x6a','\x57\x50\x68\x63\x56\x6d\x6f\x69\x76\x6d\x6b\x4a','\x57\x4f\x42\x63\x4b\x78\x65\x6f\x70\x4e\x69\x61\x6e\x57','\x57\x34\x33\x63\x4c\x43\x6f\x72\x57\x50\x4b\x64','\x72\x53\x6b\x32\x63\x5a\x57\x75\x6d\x43\x6b\x4f\x65\x61','\x57\x51\x78\x63\x4b\x53\x6f\x38\x46\x53\x6b\x7a\x57\x36\x44\x44\x75\x57','\x65\x49\x47\x43\x57\x4f\x56\x63\x55\x61','\x6b\x61\x74\x63\x4b\x53\x6f\x77\x43\x49\x72\x6a\x57\x51\x34','\x45\x6d\x6f\x49\x57\x34\x2f\x64\x4c\x4b\x71','\x6f\x38\x6f\x4c\x44\x43\x6f\x36\x62\x57','\x42\x53\x6f\x53\x57\x4f\x70\x63\x49\x64\x47','\x69\x53\x6f\x61\x41\x76\x79','\x45\x4a\x37\x64\x52\x77\x33\x64\x52\x32\x6c\x64\x4b\x43\x6f\x2f\x57\x4f\x46\x63\x4a\x43\x6b\x49\x57\x50\x39\x76','\x77\x38\x6f\x55\x57\x34\x6e\x66\x6c\x61','\x42\x43\x6f\x6c\x78\x4d\x43','\x62\x6d\x6f\x48\x43\x6d\x6f\x6e\x69\x61','\x57\x4f\x33\x63\x48\x72\x30\x6f\x67\x65\x42\x63\x55\x65\x47','\x68\x73\x68\x64\x4c\x4e\x74\x64\x4e\x6d\x6f\x68\x57\x36\x35\x6a\x62\x4d\x79\x72\x57\x51\x7a\x73','\x57\x37\x64\x63\x50\x4a\x35\x4e\x67\x77\x5a\x63\x53\x65\x4b','\x6e\x38\x6b\x4c\x57\x36\x79\x66','\x57\x35\x4a\x64\x47\x4c\x65','\x57\x50\x5a\x63\x4a\x72\x58\x46','\x69\x43\x6b\x39\x75\x53\x6b\x55\x67\x71','\x44\x53\x6f\x6b\x57\x34\x50\x74\x65\x62\x42\x64\x47\x72\x75','\x57\x52\x78\x63\x56\x53\x6f\x44\x72\x43\x6b\x66','\x72\x78\x68\x63\x55\x64\x47\x30\x57\x50\x71\x56\x57\x37\x65\x4c\x57\x37\x52\x64\x51\x53\x6f\x2f\x57\x37\x57','\x75\x38\x6f\x6b\x57\x36\x4a\x64\x53\x78\x6c\x64\x56\x68\x33\x63\x4a\x61','\x6d\x72\x69\x6d\x57\x50\x4a\x63\x54\x57','\x41\x61\x4c\x6d\x57\x51\x2f\x64\x4a\x71\x72\x5a\x57\x36\x30','\x63\x6d\x6b\x47\x57\x34\x71','\x62\x78\x43\x52\x57\x34\x5a\x63\x50\x33\x30\x68\x57\x50\x71','\x57\x52\x68\x63\x4e\x6d\x6f\x33\x57\x52\x64\x63\x56\x47','\x61\x48\x69\x74\x57\x51\x65','\x57\x37\x6e\x76\x6d\x53\x6b\x78\x57\x37\x53\x45','\x76\x43\x6f\x51\x72\x33\x52\x64\x52\x53\x6f\x7a\x57\x36\x6c\x64\x4e\x61','\x45\x38\x6f\x6f\x57\x36\x4a\x64\x4b\x65\x38','\x78\x43\x6f\x57\x73\x57','\x45\x38\x6f\x43\x44\x4b\x4a\x64\x4c\x6d\x6f\x59\x57\x35\x52\x64\x4c\x47','\x63\x38\x6b\x51\x57\x52\x71\x59\x41\x78\x42\x64\x52\x48\x4e\x64\x4b\x31\x70\x64\x54\x6d\x6b\x73','\x72\x78\x70\x64\x53\x38\x6b\x30\x64\x74\x62\x43\x57\x52\x6c\x63\x56\x4d\x33\x63\x4f\x47','\x57\x4f\x6c\x63\x53\x4a\x56\x64\x52\x43\x6f\x75\x71\x63\x6c\x63\x4f\x47','\x57\x50\x78\x64\x51\x6d\x6f\x77\x46\x31\x4b\x6e\x79\x77\x47','\x72\x5a\x70\x63\x54\x4a\x68\x64\x53\x38\x6f\x6c','\x57\x51\x54\x7a\x44\x63\x39\x34\x6c\x38\x6f\x64\x57\x52\x4f','\x57\x35\x69\x4a\x72\x61\x6e\x73\x65\x6d\x6f\x77\x71\x61','\x6f\x38\x6f\x46\x44\x4b\x72\x50\x70\x38\x6b\x51\x66\x57\x46\x64\x49\x53\x6f\x51','\x57\x4f\x46\x63\x4d\x62\x43\x6e','\x57\x36\x4b\x57\x68\x43\x6f\x4e\x62\x48\x57','\x57\x52\x33\x64\x49\x6d\x6f\x4f\x75\x4d\x47\x32\x79\x76\x6d','\x57\x52\x4e\x64\x54\x65\x38','\x67\x33\x4f\x6f\x69\x5a\x54\x4f','\x57\x52\x4a\x63\x47\x53\x6f\x54\x41\x43\x6b\x6d\x57\x37\x44\x6d\x73\x57','\x57\x34\x74\x64\x52\x4c\x79\x2f\x6d\x47','\x57\x50\x78\x64\x4b\x67\x4f\x47\x57\x34\x69','\x6e\x43\x6b\x32\x57\x37\x30\x42','\x57\x51\x6c\x64\x51\x75\x30\x39','\x70\x57\x74\x64\x47\x47','\x57\x50\x76\x36\x57\x36\x71\x78\x44\x47','\x63\x4b\x64\x63\x4a\x72\x42\x63\x4a\x48\x52\x63\x54\x6d\x6f\x64','\x57\x50\x6d\x59\x57\x52\x64\x63\x47\x57\x2f\x64\x55\x6d\x6b\x2f\x79\x47','\x57\x37\x72\x64\x6e\x53\x6b\x33\x57\x37\x65\x65\x7a\x4e\x38','\x63\x43\x6b\x42\x57\x34\x56\x64\x4f\x31\x64\x64\x4f\x6d\x6f\x47\x73\x53\x6f\x54\x57\x52\x33\x64\x53\x57','\x57\x4f\x78\x63\x4a\x38\x6b\x45\x57\x51\x53\x35\x41\x6d\x6b\x4b\x57\x36\x56\x63\x54\x77\x35\x32','\x78\x6d\x6f\x56\x45\x65\x46\x63\x56\x43\x6f\x4d\x57\x4f\x58\x73','\x71\x65\x37\x64\x4a\x38\x6b\x42\x57\x52\x57','\x70\x53\x6b\x6e\x57\x36\x50\x4a\x57\x35\x39\x56\x57\x50\x65\x7a','\x62\x78\x43\x52\x57\x34\x5a\x63\x50\x33\x30\x68\x57\x4f\x75','\x61\x59\x52\x63\x54\x71','\x57\x37\x6e\x66\x70\x38\x6b\x69\x57\x37\x38','\x57\x35\x4e\x64\x4c\x6d\x6f\x69\x57\x37\x30','\x45\x74\x42\x64\x51\x77\x33\x64\x52\x77\x6c\x63\x4e\x6d\x6f\x59\x57\x51\x74\x63\x56\x38\x6b\x62\x57\x50\x38','\x57\x52\x4e\x63\x49\x43\x6f\x53\x44\x43\x6b\x6a\x57\x36\x6a\x67\x78\x61','\x57\x51\x52\x63\x4b\x47\x78\x64\x47\x6d\x6f\x4c\x45\x58\x46\x63\x4a\x57','\x57\x37\x52\x64\x53\x4e\x4e\x63\x49\x6d\x6b\x4a','\x57\x50\x74\x63\x56\x38\x6f\x48\x57\x4f\x70\x63\x52\x6d\x6b\x44\x46\x72\x30','\x57\x35\x61\x78\x6b\x6d\x6f\x6a\x69\x64\x66\x36\x76\x71','\x42\x77\x74\x64\x50\x43\x6b\x73\x57\x4f\x46\x63\x51\x53\x6f\x51','\x79\x53\x6f\x7a\x57\x37\x6e\x30\x6e\x71','\x7a\x65\x6d\x57\x57\x34\x47\x6f\x57\x37\x52\x63\x4d\x43\x6b\x52','\x57\x35\x39\x6e\x57\x36\x56\x63\x4b\x53\x6f\x78','\x57\x51\x69\x65\x70\x53\x6b\x67\x57\x34\x61','\x57\x34\x42\x63\x47\x43\x6b\x4f\x67\x66\x39\x6a\x57\x36\x33\x64\x53\x6d\x6f\x4e\x57\x52\x47\x4b\x57\x4f\x79','\x73\x43\x6f\x7a\x57\x35\x48\x65\x6f\x61','\x43\x53\x6f\x71\x42\x33\x4e\x64\x4a\x47','\x70\x38\x6f\x67\x57\x51\x4a\x63\x52\x6d\x6f\x69\x76\x71','\x57\x4f\x37\x64\x54\x43\x6f\x34\x79\x77\x47','\x6b\x38\x6b\x64\x57\x37\x53\x36\x63\x71','\x6b\x43\x6b\x2b\x57\x35\x31\x48\x57\x34\x34','\x68\x74\x6c\x64\x49\x67\x6a\x30\x57\x34\x6a\x34\x57\x36\x47','\x57\x50\x4a\x63\x55\x38\x6f\x63','\x76\x31\x37\x64\x4c\x6d\x6b\x55\x57\x52\x64\x63\x47\x43\x6f\x6d\x57\x4f\x4f','\x57\x4f\x56\x63\x4a\x62\x61\x63\x63\x4c\x70\x63\x55\x65\x30','\x57\x52\x53\x47\x57\x35\x35\x54\x43\x47','\x6e\x74\x38\x37\x57\x50\x4e\x63\x49\x53\x6b\x2b\x43\x33\x69','\x57\x36\x31\x54\x57\x50\x4a\x64\x54\x65\x4e\x63\x4f\x43\x6b\x51','\x57\x35\x61\x61\x69\x43\x6f\x46\x65\x71'];_0x2dd2=function(){return _0x148ebc;};return _0x2dd2();}'use strict';const {getProxyToken:_0x1c2f04,getProxyUrl:_0x478072}=require('\x2e\x2f\x73\x65\x72\x76\x65\x72'+_0x859dd7(0xd7,'\x2a\x79\x6e\x61')+'\x73');function _0x302020(_0x52867c=process.env){const _0x5e468a=_0x859dd7,_0x1dc02c={'\x74\x4a\x51\x65\x70':function(_0x3294ac,_0xa846c6){return _0x3294ac(_0xa846c6);},'\x64\x65\x6a\x42\x73':function(_0x2fb4db,_0x3e6f97){return _0x2fb4db===_0x3e6f97;},'\x6f\x64\x45\x50\x49':_0x5e468a(0xf3,'\x65\x39\x64\x42'),'\x64\x48\x66\x47\x66':function(_0xa1930e,_0x1254ea){return _0xa1930e===_0x1254ea;},'\x79\x4f\x5a\x5a\x4f':_0x5e468a(0xe2,'\x25\x79\x23\x64'),'\x52\x71\x67\x4d\x70':function(_0x11eb93,_0x25f687){return _0x11eb93===_0x25f687;},'\x69\x67\x53\x74\x6a':_0x5e468a(0xce,'\x4b\x4e\x52\x56'),'\x61\x78\x41\x51\x43':function(_0x2fdd9c,_0x2e685a){return _0x2fdd9c===_0x2e685a;}},_0xfcdab9=_0x1dc02c['\x74\x4a\x51\x65\x70'](String,_0x52867c[_0x5e468a(0xb5,'\x65\x75\x21\x69')+_0x5e468a(0xd3,'\x33\x53\x39\x56')+_0x5e468a(0x8d,'\x59\x4e\x6c\x40')]||'')[_0x5e468a(0x97,'\x29\x61\x38\x4d')]()[_0x5e468a(0x9b,'\x49\x36\x6d\x38')+_0x5e468a(0xe9,'\x64\x63\x5d\x43')]();return _0x1dc02c[_0x5e468a(0xdc,'\x5a\x79\x67\x68')](_0xfcdab9,'\x30')||_0xfcdab9===_0x1dc02c[_0x5e468a(0x113,'\x59\x74\x34\x24')]||_0x1dc02c[_0x5e468a(0x8f,'\x24\x59\x32\x4f')](_0xfcdab9,_0x1dc02c[_0x5e468a(0xd8,'\x6d\x6f\x58\x4c')])||_0x1dc02c[_0x5e468a(0x106,'\x4b\x4e\x52\x56')](_0xfcdab9,_0x1dc02c[_0x5e468a(0x9f,'\x5b\x4a\x56\x51')])||_0x1dc02c[_0x5e468a(0xfc,'\x65\x39\x64\x42')](_0xfcdab9,'\x6e\x6f');}function _0x286f(_0x4c87d0,_0x54bb91){_0x4c87d0=_0x4c87d0-(-0x6dd*-0x4+0x2388+-0x3e77);const _0x4cd921=_0x2dd2();let _0x248e15=_0x4cd921[_0x4c87d0];if(_0x286f['\x67\x7a\x79\x53\x57\x4e']===undefined){var _0x5e64a3=function(_0x1a4914){const _0x487980='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x3d00d1='',_0x4f783b='',_0x5e1fd1=_0x3d00d1+_0x5e64a3,_0xa61f16=(''+function(){return 0x2*-0x2f9+0x1e4a+-0x1858;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x1f1a+-0x20*-0x124+-0x565);for(let _0x3f6d9b=0x22b2*-0x1+-0x3d*0x25+0x2b83,_0xaaa0b7,_0x11223f,_0x55dc9f=-0xe5*-0x22+-0x1*0xb93+-0x173*0xd;_0x11223f=_0x1a4914['\x63\x68\x61\x72\x41\x74'](_0x55dc9f++);~_0x11223f&&(_0xaaa0b7=_0x3f6d9b%(-0x20e1+0x127*-0x13+0x36ca)?_0xaaa0b7*(-0x4*0x21d+0x36d+-0xc1*-0x7)+_0x11223f:_0x11223f,_0x3f6d9b++%(-0x2*0x3fb+-0xbcd*0x1+0x13c7*0x1))?_0x3d00d1+=_0xa61f16||_0x5e1fd1['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x55dc9f+(0x26c7+0x11d0+0x1d3*-0x1f))-(-0x6e1+0x2f*0x79+0xb*-0x164)!==-0xc17*0x1+0x13dd+0x3e3*-0x2?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x95*0x23+0x1*-0x2069+0xd09&_0xaaa0b7>>(-(0x1*0x221+0x5*-0x58f+0x19ac*0x1)*_0x3f6d9b&0x20f3+-0x2*-0x67d+0xf4d*-0x3)):_0x3f6d9b:-0x2*0xfc7+0x1c*-0x6d+-0x73f*-0x6){_0x11223f=_0x487980['\x69\x6e\x64\x65\x78\x4f\x66'](_0x11223f);}for(let _0x549b93=-0x1*-0x23fe+0xf0f+0x1*-0x330d,_0x59619b=_0x3d00d1['\x6c\x65\x6e\x67\x74\x68'];_0x549b93<_0x59619b;_0x549b93++){_0x4f783b+='\x25'+('\x30\x30'+_0x3d00d1['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x549b93)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x22ad+0x1*-0x291+-0x12a7*-0x2))['\x73\x6c\x69\x63\x65'](-(-0x9*0x1b4+-0x4*-0x26+-0xde*-0x11));}return decodeURIComponent(_0x4f783b);};const _0x38202b=function(_0x45e131,_0x3a35f4){let _0x5a4552=[],_0x21ad97=0x186f+-0x726*-0x3+0x1*-0x2de1,_0x5a42cb,_0x5929ff='';_0x45e131=_0x5e64a3(_0x45e131);let _0x19c4eb;for(_0x19c4eb=-0x2f3*-0xd+0x20bc+-0x4713;_0x19c4eb<0x15*0x30+-0x2420+0x2130;_0x19c4eb++){_0x5a4552[_0x19c4eb]=_0x19c4eb;}for(_0x19c4eb=0x19e1+-0x1*-0xd75+0xbe*-0x35;_0x19c4eb<-0x3*-0x727+0x17*-0x95+-0xa*0xb5;_0x19c4eb++){_0x21ad97=(_0x21ad97+_0x5a4552[_0x19c4eb]+_0x3a35f4['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x19c4eb%_0x3a35f4['\x6c\x65\x6e\x67\x74\x68']))%(0x1*-0x1a51+0x1b1+-0x14*-0x148),_0x5a42cb=_0x5a4552[_0x19c4eb],_0x5a4552[_0x19c4eb]=_0x5a4552[_0x21ad97],_0x5a4552[_0x21ad97]=_0x5a42cb;}_0x19c4eb=-0x8cc+-0x1630+0x1efc,_0x21ad97=-0x3*0x829+0x1*-0x187b+0x1052*0x3;for(let _0x307aba=0x1ff4+-0x791*-0x2+-0x178b*0x2;_0x307aba<_0x45e131['\x6c\x65\x6e\x67\x74\x68'];_0x307aba++){_0x19c4eb=(_0x19c4eb+(-0x1*0xde1+0x4*-0x934+-0x1*-0x32b2))%(0x967*-0x3+0x1391*-0x1+0x30c6),_0x21ad97=(_0x21ad97+_0x5a4552[_0x19c4eb])%(0x2*-0x68f+0x2546+-0x1728),_0x5a42cb=_0x5a4552[_0x19c4eb],_0x5a4552[_0x19c4eb]=_0x5a4552[_0x21ad97],_0x5a4552[_0x21ad97]=_0x5a42cb,_0x5929ff+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x45e131['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x307aba)^_0x5a4552[(_0x5a4552[_0x19c4eb]+_0x5a4552[_0x21ad97])%(-0x1327*-0x2+0x1333+-0x3881)]);}return _0x5929ff;};_0x286f['\x55\x59\x7a\x54\x76\x52']=_0x38202b,_0x286f['\x69\x6b\x64\x63\x6c\x65']={},_0x286f['\x67\x7a\x79\x53\x57\x4e']=!![];}const _0x2b2e96=_0x4cd921[-0x99+0x6cd*-0x5+0x229a],_0x2443ee=_0x4c87d0+_0x2b2e96,_0x468e22=_0x286f['\x69\x6b\x64\x63\x6c\x65'][_0x2443ee];if(!_0x468e22){if(_0x286f['\x59\x50\x65\x52\x66\x52']===undefined){const _0x99f913=function(_0x39f165){this['\x72\x5a\x6e\x54\x6f\x45']=_0x39f165,this['\x69\x78\x73\x75\x6f\x50']=[-0xf20+-0x2*-0x455+0x677,-0x94a*0x4+-0x233d+0x4865,0x17*0x14+-0xbc8+-0x12*-0x8e],this['\x69\x6c\x48\x7a\x67\x74']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x6b\x59\x66\x61\x52\x48']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x78\x62\x70\x6f\x62\x4e']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x99f913['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x53\x76\x5a\x7a\x69\x57']=function(){const _0x3e0721=new RegExp(this['\x6b\x59\x66\x61\x52\x48']+this['\x78\x62\x70\x6f\x62\x4e']),_0x3c7b89=_0x3e0721['\x74\x65\x73\x74'](this['\x69\x6c\x48\x7a\x67\x74']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x69\x78\x73\x75\x6f\x50'][0x9*-0x3d2+0x649*0x1+0x1c1a]:--this['\x69\x78\x73\x75\x6f\x50'][-0xaa1*-0x1+-0x1e65+0x13c4];return this['\x4e\x45\x44\x6e\x67\x65'](_0x3c7b89);},_0x99f913['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4e\x45\x44\x6e\x67\x65']=function(_0x3fa6d2){if(!Boolean(~_0x3fa6d2))return _0x3fa6d2;return this['\x61\x6d\x48\x4b\x52\x63'](this['\x72\x5a\x6e\x54\x6f\x45']);},_0x99f913['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x61\x6d\x48\x4b\x52\x63']=function(_0x534a1e){for(let _0x326c2c=0x1c8*-0x1+0x1f*0xb8+0xa4*-0x20,_0x4113f5=this['\x69\x78\x73\x75\x6f\x50']['\x6c\x65\x6e\x67\x74\x68'];_0x326c2c<_0x4113f5;_0x326c2c++){this['\x69\x78\x73\x75\x6f\x50']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x4113f5=this['\x69\x78\x73\x75\x6f\x50']['\x6c\x65\x6e\x67\x74\x68'];}return _0x534a1e(this['\x69\x78\x73\x75\x6f\x50'][-0x1*0xe71+-0x3*0x99b+0x2b42]);},(''+function(){return-0x1def+0x1c41+0x1ae;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0xadb+0x2669*-0x1+-0x19f*-0x11)&&new _0x99f913(_0x286f)['\x53\x76\x5a\x7a\x69\x57'](),_0x286f['\x59\x50\x65\x52\x66\x52']=!![];}_0x248e15=_0x286f['\x55\x59\x7a\x54\x76\x52'](_0x248e15,_0x54bb91),_0x286f['\x69\x6b\x64\x63\x6c\x65'][_0x2443ee]=_0x248e15;}else _0x248e15=_0x468e22;return _0x248e15;}function _0x53db23(_0x1f0c01={},_0x2a3aa7=process.env){const _0x4475fb=_0x859dd7,_0x578b22={'\x48\x52\x5a\x66\x49':_0x4475fb(0x10b,'\x25\x79\x23\x64'),'\x48\x47\x49\x54\x42':function(_0x541f00,_0x1bb5be){return _0x541f00(_0x1bb5be);},'\x5a\x47\x71\x75\x6a':function(_0x56c703,_0x4cb536){return _0x56c703!==_0x4cb536;},'\x71\x47\x5a\x45\x67':function(_0x35b21f,_0x29ac10){return _0x35b21f===_0x29ac10;},'\x77\x6e\x4a\x70\x46':function(_0x22ca48,_0x20e078){return _0x22ca48(_0x20e078);},'\x4f\x52\x48\x6c\x56':function(_0x3b58ef){return _0x3b58ef();},'\x6f\x4a\x6d\x68\x69':function(_0x459f8d,_0x46891){return _0x459f8d||_0x46891;},'\x47\x72\x76\x54\x69':_0x4475fb(0xae,'\x5a\x79\x67\x68')+'\x70\x72\x6f\x78\x79\x5f\x73\x65'+_0x4475fb(0x10d,'\x4b\x4e\x52\x56'),'\x69\x79\x63\x73\x52':function(_0x5b0433,_0x18ab4a){return _0x5b0433!==_0x18ab4a;},'\x77\x6c\x4e\x6a\x4d':function(_0x57d671,_0x1bad18){return _0x57d671(_0x1bad18);},'\x42\x76\x66\x49\x6b':function(_0x305461,_0x135da5){return _0x305461===_0x135da5;},'\x5a\x53\x7a\x56\x63':'\x76\x4f\x7a\x55\x4d','\x55\x76\x73\x6c\x50':'\x41\x4e\x54\x48\x52\x4f\x50\x49'+_0x4475fb(0xe4,'\x5b\x4d\x6d\x40')+'\x52\x4c','\x55\x43\x70\x58\x58':_0x4475fb(0xb2,'\x38\x4b\x37\x36')+'\x43\x5f\x41\x55\x54\x48\x5f\x54'+_0x4475fb(0xb7,'\x5b\x4d\x6d\x40'),'\x62\x79\x57\x49\x63':_0x4475fb(0x88,'\x5e\x36\x4d\x2a')+'\x50\x49\x5f\x4b\x45\x59','\x69\x64\x4d\x4c\x6c':_0x4475fb(0xc4,'\x4c\x46\x46\x56')+_0x4475fb(0x8e,'\x25\x79\x23\x64')};if(_0x578b22[_0x4475fb(0x101,'\x4b\x4e\x52\x56')](_0x302020,_0x2a3aa7)){if(_0x578b22[_0x4475fb(0xd6,'\x42\x6b\x58\x52')](_0x4475fb(0xf5,'\x78\x5a\x30\x51'),_0x4475fb(0xbd,'\x43\x28\x54\x65'))){const _0x20b16b={};return _0x20b16b[_0x4475fb(0xd4,'\x39\x43\x76\x66')]=![],_0x20b16b[_0x4475fb(0xaa,'\x24\x5d\x26\x35')]=_0x578b22['\x48\x52\x5a\x66\x49'],_0x20b16b;}else{const _0x39c2a7={};return _0x39c2a7[_0x4475fb(0x105,'\x4e\x42\x75\x23')]=![],_0x39c2a7[_0x4475fb(0xb3,'\x42\x23\x56\x77')]=_0x578b22[_0x4475fb(0xc9,'\x21\x52\x4f\x25')],_0x39c2a7;}}const _0x45ee17=_0x578b22[_0x4475fb(0xdb,'\x42\x6b\x58\x52')](_0x2a3aa7,process.env)&&_0x1f0c01[_0x4475fb(0xc5,'\x24\x5d\x26\x35')+_0x4475fb(0xea,'\x24\x59\x32\x4f')]!==![],_0xbb3d15=String(_0x1f0c01[_0x4475fb(0xba,'\x58\x69\x66\x66')]||(_0x45ee17?_0x478072():'')||'')[_0x4475fb(0xe7,'\x59\x74\x34\x24')](/\/+$/,''),_0x1ba3fc=_0x578b22['\x77\x6e\x4a\x70\x46'](String,_0x1f0c01[_0x4475fb(0x98,'\x64\x63\x5d\x43')]||(_0x45ee17?_0x578b22[_0x4475fb(0x87,'\x59\x4e\x6c\x40')](_0x1c2f04):'')||'');if(_0x578b22[_0x4475fb(0xc2,'\x54\x6d\x57\x53')](!_0xbb3d15,!_0x1ba3fc)){const _0xcd017d={};return _0xcd017d[_0x4475fb(0xb1,'\x37\x42\x23\x4b')]=![],_0xcd017d[_0x4475fb(0x10a,'\x58\x69\x66\x66')]=_0x578b22[_0x4475fb(0xa4,'\x24\x59\x32\x4f')],_0xcd017d;}const _0x2eca40=_0x578b22[_0x4475fb(0x91,'\x74\x23\x66\x4e')](String,_0x2a3aa7['\x41\x4e\x54\x48\x52\x4f\x50\x49'+_0x4475fb(0xab,'\x5a\x79\x67\x68')+'\x52\x4c']||'')[_0x4475fb(0xeb,'\x59\x5d\x6e\x30')]()['\x72\x65\x70\x6c\x61\x63\x65'](/\/+$/,'');_0x2eca40&&_0x578b22[_0x4475fb(0xe8,'\x39\x43\x76\x66')](_0x2eca40,_0xbb3d15)&&!_0x2a3aa7[_0x4475fb(0xcb,'\x59\x5d\x6e\x30')+_0x4475fb(0xd0,'\x25\x79\x23\x64')+_0x4475fb(0xe3,'\x21\x52\x4f\x25')+'\x4c']&&(_0x2a3aa7[_0x4475fb(0x108,'\x29\x61\x38\x4d')+_0x4475fb(0xa0,'\x42\x6b\x58\x52')+_0x4475fb(0xf2,'\x34\x52\x45\x74')+'\x4c']=_0x2eca40);const _0x5b6884=_0x578b22[_0x4475fb(0xa8,'\x33\x53\x39\x56')](String,_0x2a3aa7[_0x4475fb(0xc3,'\x45\x4e\x53\x72')+_0x4475fb(0xe6,'\x24\x59\x32\x4f')+_0x4475fb(0xee,'\x4b\x4e\x52\x56')]||'')[_0x4475fb(0xbf,'\x52\x58\x4e\x72')]();if(_0x5b6884&&_0x5b6884!==_0x1ba3fc&&!_0x2a3aa7['\x45\x56\x4f\x4d\x41\x50\x5f\x41'+'\x4e\x54\x48\x52\x4f\x50\x49\x43'+_0x4475fb(0x90,'\x53\x45\x6d\x62')+_0x4475fb(0xc1,'\x39\x6d\x40\x79')]){if(_0x578b22[_0x4475fb(0xec,'\x43\x48\x44\x74')](_0x578b22['\x5a\x53\x7a\x56\x63'],_0x578b22[_0x4475fb(0xde,'\x38\x4b\x37\x36')]))_0x2a3aa7['\x45\x56\x4f\x4d\x41\x50\x5f\x41'+_0x4475fb(0x89,'\x64\x63\x5d\x43')+'\x5f\x41\x55\x54\x48\x5f\x54\x4f'+_0x4475fb(0xad,'\x5a\x79\x67\x68')]=_0x5b6884;else{const _0x5bbe7a={};return _0x5bbe7a[_0x4475fb(0xfa,'\x25\x46\x66\x49')]=![],_0x5bbe7a[_0x4475fb(0x10c,'\x45\x4e\x53\x72')]=_0x4475fb(0x110,'\x29\x61\x38\x4d')+_0x4475fb(0xb4,'\x62\x71\x53\x24')+_0x4475fb(0x109,'\x26\x38\x26\x26'),_0x5bbe7a;}}_0x2a3aa7[_0x4475fb(0xd1,'\x37\x42\x23\x4b')+_0x4475fb(0xca,'\x43\x48\x44\x74')+'\x52\x4c']=_0xbb3d15,_0x2a3aa7[_0x4475fb(0x114,'\x43\x48\x44\x74')+_0x4475fb(0xe6,'\x24\x59\x32\x4f')+_0x4475fb(0x104,'\x28\x67\x33\x39')]=_0x1ba3fc,_0x2a3aa7[_0x4475fb(0xf4,'\x5a\x79\x67\x68')+_0x4475fb(0xb8,'\x39\x43\x76\x66')]=_0x1ba3fc,_0x2a3aa7[_0x4475fb(0xa7,'\x59\x5d\x6e\x30')+_0x4475fb(0xfb,'\x39\x43\x76\x66')]=_0xbb3d15,_0x2a3aa7[_0x4475fb(0x99,'\x5b\x4d\x6d\x40')+_0x4475fb(0x111,'\x49\x36\x6d\x38')+_0x4475fb(0xfd,'\x42\x23\x56\x77')+'\x45\x44']='\x31';const _0x158d9f={};return _0x158d9f['\x69\x6e\x6a\x65\x63\x74\x65\x64']=!![],_0x158d9f[_0x4475fb(0xa6,'\x43\x48\x44\x74')]=_0xbb3d15,_0x158d9f[_0x4475fb(0x9c,'\x52\x58\x4e\x72')]=[_0x578b22['\x55\x76\x73\x6c\x50'],_0x578b22[_0x4475fb(0x93,'\x4e\x42\x75\x23')],_0x578b22[_0x4475fb(0xf1,'\x78\x5a\x30\x51')],_0x578b22['\x69\x64\x4d\x4c\x6c']],_0x158d9f;}const _0x3c7c17={};_0x3c7c17[_0x859dd7(0xb9,'\x38\x4b\x37\x36')+_0x859dd7(0xdd,'\x6a\x54\x34\x42')]=_0x53db23,_0x3c7c17[_0x859dd7(0xe1,'\x39\x6d\x40\x79')+'\x65\x64']=_0x302020,module[_0x859dd7(0xd5,'\x21\x52\x4f\x25')]=_0x3c7c17;
|
|
1
|
+
const _0xe0b292=_0x5365;(function(_0x442d10,_0x2998bf){const _0x535fd7=_0x5365,_0x404e84=_0x442d10();while(!![]){try{const _0x131a4c=parseInt(_0x535fd7(0xa5,'\x6e\x31\x4a\x6b'))/(-0x2*-0x239+0x166f+0x50*-0x56)*(parseInt(_0x535fd7(0xce,'\x6b\x41\x63\x56'))/(0x1379*0x2+0x5f*-0x48+-0x22*0x5c))+parseInt(_0x535fd7(0x8f,'\x6b\x41\x63\x56'))/(-0x78b*-0x2+-0x3c4+0x5*-0x243)+-parseInt(_0x535fd7(0xa0,'\x67\x58\x59\x6e'))/(-0x370*-0x4+-0x1011+0x255)*(parseInt(_0x535fd7(0xc7,'\x73\x39\x63\x37'))/(0x26c1*-0x1+-0xd25*0x1+0x33eb))+-parseInt(_0x535fd7(0x9d,'\x55\x43\x6e\x24'))/(-0x905+-0x2*0xe03+0x2511)*(parseInt(_0x535fd7(0xd6,'\x6b\x41\x63\x56'))/(0x1*-0xec5+-0x1*0x1951+0x1e9*0x15))+-parseInt(_0x535fd7(0x9b,'\x67\x58\x59\x6e'))/(-0xfc6+0x259*-0x1+0x1227)+parseInt(_0x535fd7(0xf7,'\x7a\x48\x33\x4d'))/(-0x1b0e+-0x1924+0x343b)*(parseInt(_0x535fd7(0xe6,'\x47\x42\x66\x54'))/(-0x986+0x29*0x6a+0xd*-0x92))+parseInt(_0x535fd7(0x97,'\x73\x39\x63\x37'))/(-0x1e3e+-0x23a3+0x41ec*0x1);if(_0x131a4c===_0x2998bf)break;else _0x404e84['push'](_0x404e84['shift']());}catch(_0x3fd5e7){_0x404e84['push'](_0x404e84['shift']());}}}(_0x2603,0x26056*0xb+-0xa0e05+-0x105fc));const _0xa36954=(function(){const _0x58d999=_0x5365,_0xb90aa={};_0xb90aa[_0x58d999(0xe9,'\x38\x29\x59\x40')]=function(_0x428f86,_0x592f2f){return _0x428f86===_0x592f2f;},_0xb90aa[_0x58d999(0xc0,'\x6b\x6c\x48\x49')]=_0x58d999(0x83,'\x68\x26\x53\x4a'),_0xb90aa[_0x58d999(0xe0,'\x4d\x71\x24\x40')]=_0x58d999(0x82,'\x52\x31\x35\x76');const _0x473d8d=_0xb90aa;let _0x10d159=!![];return function(_0x5bd8db,_0x3c8b54){const _0x12e2d6=_0x10d159?function(){const _0x476b34=_0x5365;if(_0x473d8d[_0x476b34(0xa6,'\x75\x77\x23\x51')]('\x49\x56\x6c\x7a\x76',_0x476b34(0xbb,'\x39\x6d\x6f\x73'))){const _0x26bd5d={};return _0x26bd5d[_0x476b34(0xe2,'\x39\x6d\x6f\x73')]=![],_0x26bd5d[_0x476b34(0xc4,'\x4f\x71\x42\x21')]='\x64\x69\x73\x61\x62\x6c\x65\x64',_0x26bd5d;}else{if(_0x3c8b54){if(_0x473d8d[_0x476b34(0xab,'\x29\x75\x35\x54')](_0x473d8d[_0x476b34(0xf9,'\x53\x45\x24\x33')],_0x473d8d[_0x476b34(0xa2,'\x67\x37\x24\x74')]))_0x1807f2['\x45\x56\x4f\x4d\x41\x50\x5f\x41'+_0x476b34(0xca,'\x4f\x71\x42\x21')+_0x476b34(0x8b,'\x7a\x48\x33\x4d')+_0x476b34(0xf4,'\x63\x54\x39\x49')]=_0x23aa55;else{const _0x49bc16=_0x3c8b54[_0x476b34(0xf5,'\x4e\x42\x49\x46')](_0x5bd8db,arguments);return _0x3c8b54=null,_0x49bc16;}}}}:function(){};return _0x10d159=![],_0x12e2d6;};}()),_0x5d449f=_0xa36954(this,function(){const _0x5a1916=_0x5365,_0x52685b={};_0x52685b[_0x5a1916(0xe7,'\x73\x39\x63\x37')]=_0x5a1916(0xb7,'\x4d\x71\x24\x40')+_0x5a1916(0x7f,'\x58\x46\x52\x35');const _0x517d37=_0x52685b;return _0x5d449f[_0x5a1916(0xb1,'\x6e\x31\x4a\x6b')]()[_0x5a1916(0x87,'\x67\x46\x45\x6e')](_0x517d37[_0x5a1916(0x9c,'\x47\x42\x66\x54')])[_0x5a1916(0xe1,'\x4f\x71\x42\x21')]()['\x63\x6f\x6e\x73\x74\x72\x75\x63'+_0x5a1916(0xd9,'\x36\x48\x67\x34')](_0x5d449f)[_0x5a1916(0x91,'\x45\x21\x41\x74')](_0x517d37['\x62\x57\x4c\x72\x6a']);});function _0x5365(_0x382e41,_0x280320){_0x382e41=_0x382e41-(0x88e+-0xbd0+-0x2*-0x1de);const _0x52dff6=_0x2603();let _0x56b979=_0x52dff6[_0x382e41];if(_0x5365['\x6a\x47\x6c\x4e\x72\x66']===undefined){var _0x166e65=function(_0x55a27a){const _0x30eeb6='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x345dc3='',_0x31aed9='',_0x50bde1=_0x345dc3+_0x166e65,_0x6978c5=(''+function(){return-0x5da*-0x5+-0x266*0x1+-0x1adc;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0x20b*-0x4+-0x1f0c*-0x1+0x493*-0x5);for(let _0x20934c=0xbba+0xb*0x376+0x18e6*-0x2,_0x3db9c6,_0x399cf3,_0x4090e9=-0x1362+0x61*-0x1a+0x1d3c;_0x399cf3=_0x55a27a['\x63\x68\x61\x72\x41\x74'](_0x4090e9++);~_0x399cf3&&(_0x3db9c6=_0x20934c%(0x136e*0x1+-0x1a34+-0x16*-0x4f)?_0x3db9c6*(0x1b4c+-0x1d23+0x217)+_0x399cf3:_0x399cf3,_0x20934c++%(0xac7*0x1+-0x2708+0x1c45))?_0x345dc3+=_0x6978c5||_0x50bde1['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x4090e9+(-0x72f+-0x76a+0xea3))-(-0x7*-0x33f+-0x1*0x1a14+0xb*0x4f)!==0x1c87+0x2*0x679+-0x2979?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x1e54+-0x377+0x92*0x3d&_0x3db9c6>>(-(0x1dab+-0x3c7*-0x8+-0x1*0x3be1)*_0x20934c&0x4*0x1b8+0x88+-0x762)):_0x20934c:-0x619+-0x1197+0x17b0){_0x399cf3=_0x30eeb6['\x69\x6e\x64\x65\x78\x4f\x66'](_0x399cf3);}for(let _0x47959c=0x272*-0xa+0x19ed*0x1+-0x1*0x179,_0x12f23a=_0x345dc3['\x6c\x65\x6e\x67\x74\x68'];_0x47959c<_0x12f23a;_0x47959c++){_0x31aed9+='\x25'+('\x30\x30'+_0x345dc3['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x47959c)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x1ad5+0x264f+-0xb6a*0x1))['\x73\x6c\x69\x63\x65'](-(0x9fb+0x15ba+0xf*-0x21d));}return decodeURIComponent(_0x31aed9);};const _0x19987c=function(_0x2c21d1,_0x5df9f5){let _0x13f8c3=[],_0x2829ce=-0xf72+0x1278+-0x306,_0x5674dc,_0x499e0f='';_0x2c21d1=_0x166e65(_0x2c21d1);let _0x38e5ee;for(_0x38e5ee=0xb*-0x2a1+-0xa8*-0x2a+0x1*0x15b;_0x38e5ee<-0x2169+-0x208e+0x42f7;_0x38e5ee++){_0x13f8c3[_0x38e5ee]=_0x38e5ee;}for(_0x38e5ee=0x2479+-0x1ba1+0x46c*-0x2;_0x38e5ee<-0x1219*0x1+0xa*0xc1+0xb8f;_0x38e5ee++){_0x2829ce=(_0x2829ce+_0x13f8c3[_0x38e5ee]+_0x5df9f5['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x38e5ee%_0x5df9f5['\x6c\x65\x6e\x67\x74\x68']))%(-0x18b7+-0x258e+0x3*0x1517),_0x5674dc=_0x13f8c3[_0x38e5ee],_0x13f8c3[_0x38e5ee]=_0x13f8c3[_0x2829ce],_0x13f8c3[_0x2829ce]=_0x5674dc;}_0x38e5ee=-0x7*-0x458+-0x1f6*0x2+-0x1a7c,_0x2829ce=-0x2*-0x68f+0x1*0x210a+-0x34c*0xe;for(let _0x3a0c88=-0x21e9+0x1ba9+0x640;_0x3a0c88<_0x2c21d1['\x6c\x65\x6e\x67\x74\x68'];_0x3a0c88++){_0x38e5ee=(_0x38e5ee+(-0x6a3*0x4+0x610+0x147d))%(0x79*-0x46+0x2*-0xa21+0x6cb*0x8),_0x2829ce=(_0x2829ce+_0x13f8c3[_0x38e5ee])%(0x12ac+-0x1eb8+0x5*0x29c),_0x5674dc=_0x13f8c3[_0x38e5ee],_0x13f8c3[_0x38e5ee]=_0x13f8c3[_0x2829ce],_0x13f8c3[_0x2829ce]=_0x5674dc,_0x499e0f+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x2c21d1['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3a0c88)^_0x13f8c3[(_0x13f8c3[_0x38e5ee]+_0x13f8c3[_0x2829ce])%(-0x4*0x3ef+-0x61*-0x4f+-0x6d*0x1f)]);}return _0x499e0f;};_0x5365['\x65\x5a\x46\x42\x6f\x69']=_0x19987c,_0x5365['\x6d\x46\x4f\x70\x4b\x6e']={},_0x5365['\x6a\x47\x6c\x4e\x72\x66']=!![];}const _0x239af6=_0x52dff6[0x70c+-0x2b*0xa7+0x1501],_0x7641d8=_0x382e41+_0x239af6,_0x9dd4f0=_0x5365['\x6d\x46\x4f\x70\x4b\x6e'][_0x7641d8];if(!_0x9dd4f0){if(_0x5365['\x45\x4d\x5a\x4a\x56\x6a']===undefined){const _0x399cb2=function(_0x2c57b2){this['\x45\x6e\x51\x62\x41\x53']=_0x2c57b2,this['\x6f\x6c\x71\x4d\x4d\x64']=[-0x1fe2+0x2587+-0x13*0x4c,-0x13e6+-0x22ed+0x36d3,-0xe20+-0x11c0+0x50*0x66],this['\x6c\x53\x76\x56\x68\x4b']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x76\x43\x48\x6e\x6f\x54']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x41\x75\x65\x62\x4e\x4f']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x399cb2['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x74\x4e\x41\x7a\x45\x53']=function(){const _0x16431f=new RegExp(this['\x76\x43\x48\x6e\x6f\x54']+this['\x41\x75\x65\x62\x4e\x4f']),_0x7eab3a=_0x16431f['\x74\x65\x73\x74'](this['\x6c\x53\x76\x56\x68\x4b']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x6f\x6c\x71\x4d\x4d\x64'][-0x183*-0x13+-0x247e+0x7c6]:--this['\x6f\x6c\x71\x4d\x4d\x64'][-0x2416+0x1*0x927+0x1aef];return this['\x53\x65\x68\x73\x5a\x63'](_0x7eab3a);},_0x399cb2['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x53\x65\x68\x73\x5a\x63']=function(_0x2e335d){if(!Boolean(~_0x2e335d))return _0x2e335d;return this['\x50\x46\x44\x67\x53\x72'](this['\x45\x6e\x51\x62\x41\x53']);},_0x399cb2['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x50\x46\x44\x67\x53\x72']=function(_0x6389cf){for(let _0x23f4e2=-0x1b*0x1b+0x2709+-0x2430,_0x5ac781=this['\x6f\x6c\x71\x4d\x4d\x64']['\x6c\x65\x6e\x67\x74\x68'];_0x23f4e2<_0x5ac781;_0x23f4e2++){this['\x6f\x6c\x71\x4d\x4d\x64']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x5ac781=this['\x6f\x6c\x71\x4d\x4d\x64']['\x6c\x65\x6e\x67\x74\x68'];}return _0x6389cf(this['\x6f\x6c\x71\x4d\x4d\x64'][0x1b9b+-0x181b+-0x7*0x80]);},(''+function(){return 0x503+-0xd3f*0x1+-0x2*-0x41e;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(-0x1a9d*0x1+0x8*0xe5+0x1376)&&new _0x399cb2(_0x5365)['\x74\x4e\x41\x7a\x45\x53'](),_0x5365['\x45\x4d\x5a\x4a\x56\x6a']=!![];}_0x56b979=_0x5365['\x65\x5a\x46\x42\x6f\x69'](_0x56b979,_0x280320),_0x5365['\x6d\x46\x4f\x70\x4b\x6e'][_0x7641d8]=_0x56b979;}else _0x56b979=_0x9dd4f0;return _0x56b979;}_0x5d449f();'use strict';const {getProxyToken:_0x1dee21,getProxyUrl:_0x5678f9}=require(_0xe0b292(0xc2,'\x39\x6d\x6f\x73')+_0xe0b292(0xea,'\x64\x6b\x58\x44')+'\x73');function _0x3608b0(_0x3caa2a=process.env){const _0x5d198b=_0xe0b292,_0x473c89={'\x42\x77\x57\x41\x53':function(_0x4201d2,_0x4191ce){return _0x4201d2(_0x4191ce);},'\x4c\x6a\x7a\x79\x64':function(_0x37b876,_0xe4dc2c){return _0x37b876===_0xe4dc2c;},'\x4d\x4a\x52\x55\x4d':function(_0x17e497,_0x357525){return _0x17e497===_0x357525;},'\x72\x56\x48\x70\x54':_0x5d198b(0xcf,'\x68\x26\x53\x4a'),'\x68\x49\x67\x45\x68':_0x5d198b(0xf6,'\x68\x26\x53\x4a'),'\x6e\x70\x65\x59\x7a':function(_0x8dd62a,_0x1df5e5){return _0x8dd62a===_0x1df5e5;},'\x6f\x6d\x63\x6a\x66':_0x5d198b(0xc5,'\x50\x54\x6a\x6c')},_0x45cf57=_0x473c89[_0x5d198b(0x9e,'\x5e\x40\x35\x34')](String,_0x3caa2a[_0x5d198b(0xac,'\x67\x37\x24\x74')+_0x5d198b(0xd2,'\x6b\x42\x72\x2a')+_0x5d198b(0xd4,'\x68\x4c\x32\x43')]||'')[_0x5d198b(0xa7,'\x25\x21\x55\x4e')]()[_0x5d198b(0xec,'\x30\x71\x4f\x78')+_0x5d198b(0xbc,'\x50\x54\x6a\x6c')]();return _0x473c89[_0x5d198b(0x7e,'\x73\x54\x24\x64')](_0x45cf57,'\x30')||_0x473c89[_0x5d198b(0xc1,'\x21\x6d\x32\x4e')](_0x45cf57,_0x473c89[_0x5d198b(0xb0,'\x36\x48\x67\x34')])||_0x45cf57===_0x473c89[_0x5d198b(0xc8,'\x5e\x37\x76\x67')]||_0x473c89[_0x5d198b(0xf2,'\x53\x45\x24\x33')](_0x45cf57,_0x473c89[_0x5d198b(0xba,'\x64\x6b\x58\x44')])||_0x473c89[_0x5d198b(0x7e,'\x73\x54\x24\x64')](_0x45cf57,'\x6e\x6f');}function _0x152238(_0x523962={},_0x4112c4=process.env){const _0x3d88c8=_0xe0b292,_0x4c99f4={'\x43\x67\x79\x5a\x57':function(_0x45a63c,_0x32bc33){return _0x45a63c(_0x32bc33);},'\x53\x6a\x73\x71\x58':_0x3d88c8(0xbd,'\x67\x72\x6f\x46'),'\x6e\x54\x64\x58\x78':function(_0x33372c,_0x4549c0){return _0x33372c===_0x4549c0;},'\x44\x64\x58\x4d\x62':function(_0x3ed705,_0x10400b){return _0x3ed705!==_0x10400b;},'\x66\x6e\x55\x41\x43':function(_0x45f71f){return _0x45f71f();},'\x4a\x4e\x6b\x79\x5a':function(_0xdd2093,_0x167db2){return _0xdd2093(_0x167db2);},'\x79\x6d\x65\x7a\x64':function(_0x181446,_0x46aaee){return _0x181446||_0x46aaee;},'\x62\x58\x54\x54\x6f':function(_0x27ca59,_0x1da19d){return _0x27ca59!==_0x1da19d;},'\x50\x4c\x6b\x4a\x6e':_0x3d88c8(0x7c,'\x67\x58\x59\x6e')+_0x3d88c8(0xd3,'\x53\x45\x24\x33')+'\x52\x4c','\x4b\x69\x4c\x78\x77':_0x3d88c8(0x9f,'\x36\x48\x67\x34')+'\x43\x5f\x41\x55\x54\x48\x5f\x54'+_0x3d88c8(0x9a,'\x37\x61\x43\x54'),'\x65\x67\x62\x78\x52':_0x3d88c8(0x8a,'\x6d\x51\x48\x78')+'\x50\x49\x5f\x4b\x45\x59','\x59\x4e\x73\x4d\x6c':_0x3d88c8(0xd7,'\x4e\x42\x49\x46')+_0x3d88c8(0xb9,'\x55\x43\x6e\x24')};if(_0x4c99f4[_0x3d88c8(0xe3,'\x25\x21\x55\x4e')](_0x3608b0,_0x4112c4)){const _0x412590={};return _0x412590['\x69\x6e\x6a\x65\x63\x74\x65\x64']=![],_0x412590['\x72\x65\x61\x73\x6f\x6e']=_0x4c99f4['\x53\x6a\x73\x71\x58'],_0x412590;}const _0xa0c3f7=_0x4c99f4['\x6e\x54\x64\x58\x78'](_0x4112c4,process.env)&&_0x4c99f4[_0x3d88c8(0x80,'\x6e\x31\x4a\x6b')](_0x523962[_0x3d88c8(0xda,'\x75\x77\x23\x51')+'\x6e\x67\x73'],![]),_0x1b54e7=String(_0x523962[_0x3d88c8(0xb3,'\x73\x54\x24\x64')]||(_0xa0c3f7?_0x4c99f4[_0x3d88c8(0xf0,'\x36\x48\x67\x34')](_0x5678f9):'')||'')[_0x3d88c8(0xef,'\x73\x54\x24\x64')](/\/+$/,''),_0x99c469=_0x4c99f4[_0x3d88c8(0x7d,'\x4f\x71\x42\x21')](String,_0x523962[_0x3d88c8(0xe5,'\x67\x37\x24\x74')]||(_0xa0c3f7?_0x1dee21():'')||'');if(_0x4c99f4[_0x3d88c8(0xbe,'\x23\x33\x34\x5e')](!_0x1b54e7,!_0x99c469)){const _0x130be4={};return _0x130be4[_0x3d88c8(0xb2,'\x52\x31\x35\x76')]=![],_0x130be4[_0x3d88c8(0xa4,'\x36\x69\x45\x6a')]=_0x3d88c8(0xe4,'\x30\x71\x4f\x78')+_0x3d88c8(0xb8,'\x40\x4e\x6b\x73')+_0x3d88c8(0x98,'\x25\x21\x55\x4e'),_0x130be4;}const _0xbf79e3=_0x4c99f4[_0x3d88c8(0xde,'\x64\x6b\x58\x44')](String,_0x4112c4[_0x3d88c8(0xfb,'\x68\x4c\x32\x43')+_0x3d88c8(0x86,'\x6b\x42\x72\x2a')+'\x52\x4c']||'')[_0x3d88c8(0x7a,'\x67\x37\x24\x74')]()[_0x3d88c8(0x94,'\x39\x6d\x6f\x73')](/\/+$/,'');_0xbf79e3&&_0x4c99f4['\x44\x64\x58\x4d\x62'](_0xbf79e3,_0x1b54e7)&&!_0x4112c4[_0x3d88c8(0xd8,'\x21\x6d\x32\x4e')+_0x3d88c8(0xcc,'\x25\x21\x55\x4e')+_0x3d88c8(0x88,'\x6e\x31\x4a\x6b')+'\x4c']&&(_0x4112c4[_0x3d88c8(0xae,'\x51\x6b\x57\x4a')+_0x3d88c8(0xaa,'\x5e\x40\x35\x34')+_0x3d88c8(0x92,'\x58\x46\x52\x35')+'\x4c']=_0xbf79e3);const _0x547f03=String(_0x4112c4[_0x3d88c8(0xa9,'\x30\x71\x4f\x78')+_0x3d88c8(0xdd,'\x5e\x40\x35\x34')+_0x3d88c8(0xbf,'\x58\x28\x46\x6e')]||'')[_0x3d88c8(0xa1,'\x40\x4e\x6b\x73')]();_0x547f03&&_0x4c99f4[_0x3d88c8(0xc9,'\x28\x23\x36\x35')](_0x547f03,_0x99c469)&&!_0x4112c4[_0x3d88c8(0x8e,'\x6b\x41\x63\x56')+_0x3d88c8(0x95,'\x64\x6b\x58\x44')+_0x3d88c8(0xf1,'\x73\x54\x24\x64')+_0x3d88c8(0xa8,'\x25\x21\x55\x4e')]&&(_0x4112c4[_0x3d88c8(0xcb,'\x28\x23\x36\x35')+_0x3d88c8(0xaf,'\x68\x26\x53\x4a')+_0x3d88c8(0x8b,'\x7a\x48\x33\x4d')+_0x3d88c8(0xed,'\x75\x61\x64\x75')]=_0x547f03);_0x4112c4[_0x3d88c8(0x89,'\x5e\x40\x35\x34')+_0x3d88c8(0x8d,'\x73\x39\x63\x37')+'\x52\x4c']=_0x1b54e7,_0x4112c4[_0x3d88c8(0xd1,'\x39\x6d\x6f\x73')+_0x3d88c8(0xcd,'\x7a\x48\x33\x4d')+_0x3d88c8(0x7b,'\x4d\x53\x48\x5b')]=_0x99c469,_0x4112c4[_0x3d88c8(0xe8,'\x36\x69\x45\x6a')+_0x3d88c8(0x99,'\x50\x54\x6a\x6c')]=_0x99c469,_0x4112c4[_0x3d88c8(0xb6,'\x6d\x51\x48\x78')+_0x3d88c8(0xfc,'\x4e\x42\x49\x46')]=_0x1b54e7,_0x4112c4[_0x3d88c8(0xac,'\x67\x37\x24\x74')+_0x3d88c8(0x85,'\x58\x46\x52\x35')+_0x3d88c8(0xc3,'\x5e\x40\x35\x34')+'\x45\x44']='\x31';const _0x4ed879={};return _0x4ed879[_0x3d88c8(0xf3,'\x55\x43\x6e\x24')]=!![],_0x4ed879[_0x3d88c8(0xa3,'\x68\x4c\x32\x43')]=_0x1b54e7,_0x4ed879[_0x3d88c8(0xad,'\x67\x72\x6f\x46')]=[_0x4c99f4[_0x3d88c8(0x90,'\x68\x52\x74\x76')],_0x4c99f4[_0x3d88c8(0x96,'\x58\x46\x52\x35')],_0x4c99f4[_0x3d88c8(0xd5,'\x5e\x37\x76\x67')],_0x4c99f4[_0x3d88c8(0xc6,'\x58\x28\x46\x6e')]],_0x4ed879;}function _0x2603(){const _0xcdfda6=['\x65\x59\x4f\x50\x6a\x53\x6b\x4d\x57\x34\x33\x63\x47\x63\x6d','\x65\x6d\x6b\x73\x68\x6d\x6b\x51\x72\x43\x6f\x45\x57\x51\x70\x63\x4c\x71','\x46\x64\x75\x2b\x77\x30\x4b\x38\x45\x43\x6f\x31','\x79\x43\x6f\x58\x57\x50\x78\x63\x4a\x71\x53','\x57\x51\x68\x64\x47\x78\x46\x64\x4c\x53\x6f\x33','\x57\x36\x64\x64\x55\x68\x79','\x57\x37\x54\x52\x57\x34\x54\x49\x57\x50\x48\x67\x79\x30\x65','\x71\x43\x6f\x62\x6b\x58\x5a\x63\x48\x71','\x71\x6d\x6f\x6d\x70\x43\x6f\x55','\x57\x50\x33\x63\x53\x76\x70\x64\x50\x67\x53','\x44\x77\x6a\x77\x57\x36\x74\x64\x56\x47','\x57\x37\x4e\x63\x4e\x67\x2f\x64\x47\x6d\x6f\x76\x57\x51\x70\x64\x55\x38\x6f\x67','\x57\x35\x6c\x63\x47\x43\x6f\x33\x6d\x6d\x6b\x4e\x57\x4f\x33\x63\x52\x6d\x6f\x53','\x46\x61\x2f\x64\x4e\x72\x4a\x63\x50\x74\x75','\x57\x36\x2f\x64\x50\x68\x30\x46','\x76\x53\x6f\x6a\x63\x38\x6f\x54\x72\x61','\x6a\x61\x56\x64\x54\x43\x6f\x77\x57\x52\x65\x48\x57\x52\x64\x63\x4a\x43\x6b\x32\x57\x51\x68\x64\x56\x38\x6b\x70\x57\x51\x71','\x57\x36\x74\x63\x50\x72\x6d\x79\x63\x71','\x68\x38\x6b\x70\x45\x53\x6f\x2b\x74\x57','\x71\x64\x37\x64\x54\x64\x4e\x63\x48\x71\x54\x56\x57\x35\x53','\x6f\x6d\x6b\x62\x79\x43\x6f\x4e\x79\x43\x6f\x66\x57\x34\x70\x63\x53\x61','\x57\x4f\x35\x30\x57\x35\x6a\x37\x57\x35\x79\x71\x6a\x38\x6f\x49','\x57\x50\x74\x64\x4e\x4b\x4b\x38\x57\x36\x6c\x64\x4f\x77\x6e\x6d','\x57\x35\x70\x63\x54\x38\x6f\x48\x57\x34\x6a\x32\x76\x53\x6b\x6d\x57\x36\x56\x63\x55\x53\x6b\x65\x57\x51\x68\x63\x55\x71','\x69\x6d\x6f\x77\x57\x4f\x61\x2f\x57\x36\x75','\x6e\x31\x52\x63\x49\x76\x4e\x64\x53\x32\x4f\x74\x57\x37\x4c\x31\x57\x35\x75\x59\x70\x78\x47','\x57\x50\x42\x64\x56\x75\x4a\x64\x52\x43\x6f\x31\x57\x50\x52\x64\x4a\x53\x6f\x39','\x46\x64\x71\x69\x57\x36\x64\x64\x4e\x38\x6f\x74\x57\x4f\x66\x64','\x43\x77\x37\x64\x47\x58\x76\x33\x69\x5a\x62\x4e','\x57\x52\x68\x64\x50\x4c\x4e\x64\x56\x6d\x6f\x72\x57\x37\x4f\x43\x57\x52\x30','\x57\x36\x4e\x63\x49\x58\x79\x4c\x6d\x57','\x57\x35\x37\x63\x53\x53\x6f\x50\x57\x34\x62\x2f\x75\x38\x6b\x49\x57\x37\x2f\x63\x48\x53\x6b\x46\x57\x52\x78\x63\x52\x57','\x57\x51\x4a\x64\x4d\x6d\x6b\x41\x57\x52\x37\x63\x48\x43\x6b\x35\x57\x51\x68\x63\x4a\x71','\x46\x78\x35\x6c\x57\x37\x5a\x64\x53\x53\x6f\x7a\x57\x35\x6d\x77','\x72\x30\x31\x4e','\x64\x57\x70\x63\x4a\x6d\x6b\x6e\x70\x49\x50\x61\x57\x51\x4b','\x6a\x72\x64\x63\x56\x43\x6f\x4e\x57\x36\x33\x64\x4a\x71\x61','\x57\x35\x31\x44\x78\x48\x57\x6c\x57\x52\x2f\x64\x55\x66\x6d','\x57\x35\x37\x63\x47\x43\x6f\x2f\x6b\x38\x6b\x35\x57\x4f\x64\x63\x53\x6d\x6f\x53','\x74\x43\x6f\x37\x57\x4f\x2f\x63\x56\x74\x4f','\x57\x34\x6c\x63\x54\x6d\x6b\x47\x79\x53\x6b\x55\x57\x52\x54\x47\x57\x35\x4b','\x43\x78\x6a\x6d\x42\x53\x6f\x55','\x45\x47\x78\x64\x52\x58\x2f\x63\x55\x64\x6a\x69\x57\x37\x38','\x57\x52\x37\x64\x4e\x78\x42\x64\x47\x6d\x6f\x65\x57\x51\x68\x64\x55\x38\x6f\x71','\x57\x4f\x6e\x68\x57\x36\x6e\x5a\x57\x34\x34','\x57\x52\x78\x63\x4f\x62\x57\x31\x42\x6d\x6b\x46\x57\x51\x4f\x51','\x6c\x4e\x75\x4a\x71\x75\x65','\x7a\x32\x61\x64\x57\x52\x62\x2f\x57\x34\x43\x64\x57\x34\x34','\x46\x32\x5a\x63\x4a\x6d\x6b\x77\x57\x36\x69','\x57\x50\x31\x58\x61\x38\x6b\x72\x57\x36\x6e\x53\x57\x51\x76\x62','\x57\x51\x46\x64\x4f\x38\x6f\x34\x57\x50\x44\x6f','\x69\x43\x6f\x56\x57\x50\x70\x63\x4b\x58\x4e\x64\x51\x59\x56\x63\x50\x71','\x57\x52\x4a\x64\x55\x58\x34\x4e\x6b\x53\x6b\x4d\x57\x50\x2f\x64\x4e\x57','\x57\x51\x5a\x63\x50\x49\x6d\x50\x43\x53\x6b\x75\x57\x52\x38\x32','\x62\x47\x56\x64\x53\x71','\x76\x31\x62\x39\x57\x37\x74\x64\x4e\x43\x6f\x2f','\x69\x33\x38\x57\x43\x64\x52\x63\x48\x62\x65','\x76\x75\x58\x61\x61\x31\x30','\x64\x4c\x53\x76\x73\x62\x70\x63\x55\x63\x61\x47','\x78\x65\x68\x64\x50\x61\x31\x45','\x72\x58\x71\x6d\x7a\x33\x75\x44\x74\x53\x6f\x44','\x6c\x43\x6f\x35\x57\x4f\x65','\x57\x4f\x5a\x64\x56\x53\x6b\x4c\x57\x50\x2f\x63\x56\x71','\x6b\x43\x6f\x72\x57\x4f\x4f','\x57\x36\x74\x63\x53\x4a\x35\x79\x57\x4f\x70\x63\x4d\x71\x76\x5a\x41\x61\x6a\x6d\x70\x53\x6b\x51','\x66\x4b\x38\x41\x57\x37\x33\x64\x49\x43\x6f\x2f\x57\x52\x62\x4d','\x43\x66\x64\x64\x48\x48\x54\x64','\x6c\x61\x37\x64\x53\x43\x6f\x73\x57\x52\x30\x49\x57\x52\x68\x64\x4e\x6d\x6b\x79\x57\x4f\x5a\x64\x4b\x53\x6b\x4b\x57\x52\x62\x6e','\x57\x52\x2f\x64\x54\x30\x74\x64\x55\x53\x6f\x6a\x57\x37\x61\x70\x57\x51\x61','\x57\x52\x2f\x64\x47\x43\x6b\x6e\x57\x51\x52\x63\x4d\x38\x6b\x38\x57\x51\x5a\x63\x4b\x71','\x6c\x4d\x47\x48\x73\x71','\x68\x53\x6f\x41\x6a\x32\x69','\x57\x4f\x6d\x4f\x6c\x62\x61\x76\x65\x58\x4a\x64\x55\x57','\x72\x63\x74\x64\x4c\x58\x6c\x63\x4b\x61','\x68\x78\x61\x36\x7a\x74\x38','\x57\x51\x64\x64\x4f\x4e\x66\x78','\x76\x74\x5a\x63\x4f\x38\x6f\x48\x57\x36\x34','\x64\x65\x6e\x6a\x75\x53\x6f\x6a\x57\x4f\x52\x64\x55\x71','\x61\x38\x6f\x42\x46\x4d\x52\x63\x55\x71','\x63\x38\x6f\x45\x57\x51\x4b\x76\x57\x36\x79','\x64\x4a\x69\x58\x70\x6d\x6b\x31\x57\x35\x6c\x64\x48\x33\x2f\x63\x55\x53\x6f\x61\x76\x63\x57','\x57\x35\x4e\x63\x48\x61\x69\x51\x6a\x6d\x6b\x73\x57\x4f\x4e\x64\x49\x61','\x42\x73\x71\x73\x57\x37\x4a\x64\x4b\x38\x6f\x78\x57\x4f\x54\x63','\x57\x34\x31\x33\x57\x4f\x69\x4e\x57\x4f\x64\x63\x47\x71','\x74\x48\x52\x63\x55\x53\x6f\x2f\x57\x34\x4e\x64\x4d\x71\x64\x63\x4c\x61','\x57\x35\x5a\x63\x4b\x6d\x6f\x51\x6e\x53\x6b\x2f\x57\x4f\x46\x63\x56\x38\x6f\x58','\x57\x51\x74\x63\x55\x6d\x6f\x6e\x57\x37\x31\x51\x57\x37\x6e\x33\x44\x57','\x57\x4f\x4a\x64\x47\x66\x30\x39\x57\x37\x37\x64\x54\x4d\x48\x78','\x75\x38\x6f\x74\x72\x43\x6f\x4a\x63\x43\x6b\x58\x57\x36\x4e\x63\x4d\x33\x35\x32\x57\x35\x42\x63\x4d\x33\x75','\x78\x4d\x74\x63\x47\x53\x6b\x4c\x57\x35\x54\x76\x57\x35\x52\x63\x55\x71','\x57\x51\x70\x64\x4b\x43\x6b\x45\x57\x52\x53\x70\x6d\x6d\x6b\x2f\x57\x35\x38','\x57\x35\x46\x63\x53\x6d\x6f\x4c\x57\x34\x44\x2b\x75\x53\x6f\x7a\x57\x36\x52\x63\x4d\x43\x6b\x69\x57\x4f\x6c\x63\x48\x6d\x6b\x77','\x57\x36\x53\x2b\x57\x52\x5a\x64\x53\x6d\x6b\x33','\x57\x34\x44\x77\x76\x71\x53\x6c\x57\x51\x6d','\x57\x35\x74\x63\x49\x72\x53\x47\x70\x53\x6b\x6d\x57\x4f\x4e\x64\x4a\x47','\x41\x59\x31\x38\x66\x72\x38\x73\x57\x52\x33\x64\x4f\x30\x4e\x63\x4f\x47\x5a\x64\x48\x6d\x6b\x4d','\x57\x51\x78\x64\x4c\x4d\x5a\x64\x49\x43\x6f\x67\x57\x52\x42\x64\x55\x57','\x71\x6d\x6f\x69\x57\x52\x37\x63\x54\x73\x6c\x64\x4b\x47\x5a\x63\x47\x71','\x57\x34\x64\x63\x4f\x48\x79\x6c\x64\x61','\x6c\x47\x4e\x64\x54\x43\x6f\x78\x57\x52\x38\x4e\x57\x52\x74\x64\x4d\x6d\x6b\x47\x57\x50\x68\x64\x47\x6d\x6b\x38\x57\x51\x54\x61','\x57\x52\x72\x75\x57\x37\x6e\x68\x57\x37\x34\x5a','\x57\x35\x68\x64\x47\x4b\x57\x58\x78\x67\x69','\x70\x53\x6f\x4a\x76\x64\x61','\x57\x37\x6e\x74\x73\x77\x35\x59\x42\x4e\x5a\x63\x47\x53\x6b\x74\x57\x51\x4f\x62\x57\x35\x33\x63\x4d\x31\x69','\x6e\x47\x43\x6c\x57\x50\x7a\x65','\x66\x4b\x34\x53\x72\x4c\x38\x65\x74\x38\x6f\x69','\x57\x35\x2f\x63\x51\x43\x6f\x50\x70\x38\x6b\x2b','\x43\x4d\x58\x62\x63\x4b\x58\x4e\x66\x6d\x6f\x7a','\x57\x37\x79\x55\x70\x48\x6d\x4d\x66\x58\x30','\x66\x6d\x6b\x73\x67\x53\x6b\x2f','\x65\x67\x4f\x66\x71\x4b\x57','\x57\x4f\x56\x64\x49\x33\x57','\x57\x51\x58\x62\x6d\x43\x6b\x32\x57\x34\x6e\x70','\x6a\x48\x4e\x63\x53\x38\x6f\x32\x57\x34\x4a\x64\x51\x61\x43','\x65\x63\x6c\x63\x50\x38\x6b\x6d\x66\x61','\x57\x52\x72\x73\x57\x37\x6e\x65','\x57\x4f\x54\x4c\x57\x35\x71','\x57\x50\x4e\x63\x48\x5a\x53\x6f\x76\x38\x6b\x2b\x57\x50\x30\x38','\x57\x35\x70\x63\x49\x53\x6f\x32\x6c\x6d\x6b\x49\x57\x50\x4a\x63\x50\x53\x6f\x37','\x75\x71\x58\x72\x57\x4f\x74\x64\x53\x57','\x68\x30\x57\x68\x41\x77\x35\x57\x57\x35\x56\x64\x48\x57','\x57\x36\x4c\x4a\x57\x34\x50\x57','\x6f\x73\x56\x63\x56\x53\x6f\x6b\x6c\x38\x6b\x48\x57\x35\x42\x64\x53\x71','\x63\x6d\x6f\x4a\x57\x51\x71\x45\x57\x34\x38\x49\x75\x4c\x57','\x71\x78\x72\x44\x6d\x4b\x4f','\x7a\x74\x46\x63\x51\x6d\x6f\x79\x57\x37\x37\x64\x52\x5a\x56\x63\x4f\x71','\x6f\x43\x6f\x66\x72\x32\x4a\x63\x55\x6d\x6f\x58\x70\x53\x6b\x76','\x6a\x67\x47\x53','\x57\x36\x30\x77\x7a\x43\x6f\x32\x57\x50\x53\x77\x57\x34\x53\x30\x57\x35\x2f\x63\x47\x53\x6f\x54\x57\x35\x48\x64\x57\x50\x6d','\x57\x4f\x57\x67\x64\x65\x39\x7a\x57\x37\x4a\x64\x51\x4b\x64\x64\x4c\x76\x48\x2f\x42\x57','\x57\x51\x6c\x63\x55\x38\x6f\x72\x57\x36\x72\x4b\x57\x36\x35\x33\x7a\x47'];_0x2603=function(){return _0xcdfda6;};return _0x2603();}const _0x595b34={};_0x595b34[_0xe0b292(0xdc,'\x45\x21\x41\x74')+_0xe0b292(0xee,'\x21\x6d\x32\x4e')]=_0x152238,_0x595b34[_0xe0b292(0xdf,'\x36\x49\x32\x21')+'\x65\x64']=_0x3608b0,module['\x65\x78\x70\x6f\x72\x74\x73']=_0x595b34;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
const fs = require('fs');
|
|
4
4
|
const path = require('path');
|
|
5
5
|
const { PROXY_PROTOCOL_VERSION } = require('../mailbox/store');
|
|
6
|
+
const { readMailboxStateFile } = require('../mailbox/state');
|
|
6
7
|
const { buildEnvelope } = require('../envelope');
|
|
7
8
|
const crypto = require('crypto');
|
|
8
9
|
const {
|
|
@@ -601,6 +602,23 @@ class LifecycleManager {
|
|
|
601
602
|
return storeSecret;
|
|
602
603
|
}
|
|
603
604
|
if (validNodeSecret(envSecret)) {
|
|
605
|
+
const diskRotated = this._latestDiskHubRotatedSecret();
|
|
606
|
+
if (diskRotated) {
|
|
607
|
+
this._setNodeSecretState({
|
|
608
|
+
secret: diskRotated.secret,
|
|
609
|
+
version: diskRotated.version ? String(diskRotated.version) : '',
|
|
610
|
+
source: 'hub_rotate',
|
|
611
|
+
envSuppressed: this.store.getState('node_secret_env_suppressed') || '',
|
|
612
|
+
});
|
|
613
|
+
if (!this._storeSourceLogged) {
|
|
614
|
+
this._storeSourceLogged = true;
|
|
615
|
+
this.logger.warn(
|
|
616
|
+
'[lifecycle] MailboxStore memory differs from disk hub-rotated node_secret; ' +
|
|
617
|
+
'using disk value and treating env as stale.'
|
|
618
|
+
);
|
|
619
|
+
}
|
|
620
|
+
return diskRotated.secret;
|
|
621
|
+
}
|
|
604
622
|
this._syncEnvNodeSecretToStore(envSecret);
|
|
605
623
|
if (!this._envOverrideLogged) {
|
|
606
624
|
this._envOverrideLogged = true;
|
|
@@ -618,16 +636,40 @@ class LifecycleManager {
|
|
|
618
636
|
return storeSecret || envSecret || null;
|
|
619
637
|
}
|
|
620
638
|
|
|
639
|
+
_latestDiskHubRotatedSecret() {
|
|
640
|
+
const file = this.store && this.store._stateFile;
|
|
641
|
+
if (!file) return null;
|
|
642
|
+
const state = readMailboxStateFile(file);
|
|
643
|
+
const secret = typeof state?.node_secret === 'string' ? state.node_secret.trim() : null;
|
|
644
|
+
if (!validNodeSecret(secret) || state?.node_secret_source !== 'hub_rotate') return null;
|
|
645
|
+
return {
|
|
646
|
+
secret,
|
|
647
|
+
version: parseNodeSecretVersion(state.node_secret_version),
|
|
648
|
+
};
|
|
649
|
+
}
|
|
650
|
+
|
|
621
651
|
_syncEnvNodeSecretToStore(envSecret) {
|
|
622
652
|
const envVersion = parseNodeSecretVersion(process.env.A2A_NODE_SECRET_VERSION || process.env.EVOMAP_NODE_SECRET_VERSION);
|
|
623
|
-
this.
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
653
|
+
this._setNodeSecretState({
|
|
654
|
+
secret: envSecret,
|
|
655
|
+
version: envVersion ? String(envVersion) : '',
|
|
656
|
+
source: 'env_seed',
|
|
657
|
+
envSuppressed: '',
|
|
658
|
+
});
|
|
628
659
|
this._clearEnvSecretSuppression();
|
|
629
660
|
}
|
|
630
661
|
|
|
662
|
+
_setNodeSecretState({ secret = '', version = '', source = '', envSuppressed = '' } = {}) {
|
|
663
|
+
if (this.store && typeof this.store.setNodeSecretState === 'function') {
|
|
664
|
+
this.store.setNodeSecretState({ secret, version, source, envSuppressed });
|
|
665
|
+
return;
|
|
666
|
+
}
|
|
667
|
+
this.store.setState('node_secret', secret);
|
|
668
|
+
this.store.setState('node_secret_version', version ? String(version) : '');
|
|
669
|
+
this.store.setState('node_secret_source', source);
|
|
670
|
+
this.store.setState('node_secret_env_suppressed', envSuppressed);
|
|
671
|
+
}
|
|
672
|
+
|
|
631
673
|
_effectiveEnvNodeSecret() {
|
|
632
674
|
const envSecret = getEnvNodeSecret();
|
|
633
675
|
return this._isEnvNodeSecretSuppressed(envSecret) ? null : envSecret;
|
|
@@ -811,11 +853,6 @@ class LifecycleManager {
|
|
|
811
853
|
const secret = data?.payload?.node_secret || data?.node_secret || null;
|
|
812
854
|
const secretVersion = parseNodeSecretVersion(data?.payload?.node_secret_version || data?.node_secret_version);
|
|
813
855
|
if (secret && validNodeSecret(secret)) {
|
|
814
|
-
this.store.setState('node_secret', secret);
|
|
815
|
-
// Tag the store entry so the next process that boots into a stale
|
|
816
|
-
// shell env can recognise this value as hub-authoritative and
|
|
817
|
-
// refuse to overwrite it (see _resolveNodeSecret above).
|
|
818
|
-
this.store.setState('node_secret_source', 'hub_rotate');
|
|
819
856
|
// Hub just handed us a fresh secret. Whatever sits in
|
|
820
857
|
// A2A_NODE_SECRET is now older than the store, so suppress the
|
|
821
858
|
// env-wins reconciliation in _resolveNodeSecret for the rest of
|
|
@@ -830,9 +867,14 @@ class LifecycleManager {
|
|
|
830
867
|
} else {
|
|
831
868
|
this._clearEnvSecretSuppression();
|
|
832
869
|
}
|
|
870
|
+
this._setNodeSecretState({
|
|
871
|
+
secret,
|
|
872
|
+
version: secretVersion ? String(secretVersion) : '',
|
|
873
|
+
source: 'hub_rotate',
|
|
874
|
+
envSuppressed: this.store.getState('node_secret_env_suppressed') || '',
|
|
875
|
+
});
|
|
833
876
|
this.logger.log('[lifecycle] new node_secret stored from hello response');
|
|
834
|
-
}
|
|
835
|
-
if (secretVersion) {
|
|
877
|
+
} else if (secretVersion) {
|
|
836
878
|
this.store.setState('node_secret_version', String(secretVersion));
|
|
837
879
|
} else {
|
|
838
880
|
this.store.setState('node_secret_version', '');
|
|
@@ -1001,10 +1043,34 @@ class LifecycleManager {
|
|
|
1001
1043
|
*/
|
|
1002
1044
|
_dropLocalSecret(reason) {
|
|
1003
1045
|
this.logger.warn(`[lifecycle] dropping cached node_secret (reason=${reason}); next hello will run unauthenticated`);
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1046
|
+
const diskRotated = this._latestDiskHubRotatedSecret();
|
|
1047
|
+
const storeSecret = this.store.getState('node_secret') || null;
|
|
1048
|
+
if (diskRotated && diskRotated.secret !== storeSecret) {
|
|
1049
|
+
try {
|
|
1050
|
+
this._setNodeSecretState({
|
|
1051
|
+
secret: diskRotated.secret,
|
|
1052
|
+
version: diskRotated.version ? String(diskRotated.version) : '',
|
|
1053
|
+
source: 'hub_rotate',
|
|
1054
|
+
envSuppressed: this.store.getState('node_secret_env_suppressed') || '',
|
|
1055
|
+
});
|
|
1056
|
+
this.logger.warn('[lifecycle] local in-memory node_secret is stale; preserving newer disk hub-rotated secret');
|
|
1057
|
+
return;
|
|
1058
|
+
} catch (err) {
|
|
1059
|
+
const reason = err && (err.code || err.name) ? (err.code || err.name) : 'error';
|
|
1060
|
+
this.logger.warn(`[lifecycle] failed to sync newer disk hub-rotated node_secret into memory (reason=${reason})`);
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
try {
|
|
1064
|
+
this._setNodeSecretState({
|
|
1065
|
+
secret: '',
|
|
1066
|
+
version: '',
|
|
1067
|
+
source: '',
|
|
1068
|
+
envSuppressed: this.store.getState('node_secret_env_suppressed') || '',
|
|
1069
|
+
});
|
|
1070
|
+
} catch (err) {
|
|
1071
|
+
const reason = err && (err.code || err.name || err.message) ? (err.code || err.name || err.message) : 'error';
|
|
1072
|
+
this.logger.warn(`[lifecycle] failed to clear local node_secret state (reason=${reason})`);
|
|
1073
|
+
}
|
|
1008
1074
|
// Suppress only the exact env secret that was just proven stale. If no
|
|
1009
1075
|
// env secret is present, do not leave a marker that blocks a future reset.
|
|
1010
1076
|
this._markCurrentEnvSecretSuppressed();
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
const PRIVATE_DIR_MODE = 0o700;
|
|
7
|
+
const PRIVATE_FILE_MODE = 0o600;
|
|
8
|
+
const STATE_LOCK_STALE_MS = 10_000;
|
|
9
|
+
const STATE_LOCK_WAIT_MS = 10;
|
|
10
|
+
|
|
11
|
+
const MAILBOX_NODE_SECRET_STATE_KEYS = Object.freeze([
|
|
12
|
+
'node_secret',
|
|
13
|
+
'node_secret_version',
|
|
14
|
+
'node_secret_source',
|
|
15
|
+
'node_secret_env_suppressed',
|
|
16
|
+
]);
|
|
17
|
+
|
|
18
|
+
const MAILBOX_NODE_SECRET_STATE_KEY_SET = new Set(MAILBOX_NODE_SECRET_STATE_KEYS);
|
|
19
|
+
const MAILBOX_NODE_SECRET_TUPLE_KEYS = Object.freeze([
|
|
20
|
+
'node_secret',
|
|
21
|
+
'node_secret_version',
|
|
22
|
+
'node_secret_source',
|
|
23
|
+
]);
|
|
24
|
+
const MAILBOX_NODE_SECRET_TUPLE_KEY_SET = new Set(MAILBOX_NODE_SECRET_TUPLE_KEYS);
|
|
25
|
+
|
|
26
|
+
function bestEffortChmod(filePath, mode) {
|
|
27
|
+
try { fs.chmodSync(filePath, mode); } catch { /* best effort; no-op on Windows */ }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function ensurePrivateDir(dir) {
|
|
31
|
+
if (!fs.existsSync(dir)) {
|
|
32
|
+
fs.mkdirSync(dir, { recursive: true, mode: PRIVATE_DIR_MODE });
|
|
33
|
+
}
|
|
34
|
+
bestEffortChmod(dir, PRIVATE_DIR_MODE);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function writePrivateFile(filePath, content) {
|
|
38
|
+
fs.writeFileSync(filePath, content, { encoding: 'utf8', mode: PRIVATE_FILE_MODE });
|
|
39
|
+
bestEffortChmod(filePath, PRIVATE_FILE_MODE);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function sleepSync(ms) {
|
|
43
|
+
try {
|
|
44
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
45
|
+
} catch {
|
|
46
|
+
const end = Date.now() + ms;
|
|
47
|
+
while (Date.now() < end) {}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function acquireStateFileLock(stateFile) {
|
|
52
|
+
ensurePrivateDir(path.dirname(stateFile));
|
|
53
|
+
const lockDir = `${stateFile}.lock`;
|
|
54
|
+
const startedAt = Date.now();
|
|
55
|
+
while (true) {
|
|
56
|
+
try {
|
|
57
|
+
fs.mkdirSync(lockDir, { mode: PRIVATE_DIR_MODE });
|
|
58
|
+
bestEffortChmod(lockDir, PRIVATE_DIR_MODE);
|
|
59
|
+
return function releaseStateFileLock() {
|
|
60
|
+
try { fs.rmdirSync(lockDir); } catch {}
|
|
61
|
+
};
|
|
62
|
+
} catch (e) {
|
|
63
|
+
if (!e || e.code !== 'EEXIST') throw e;
|
|
64
|
+
try {
|
|
65
|
+
const ageMs = Date.now() - fs.statSync(lockDir).mtimeMs;
|
|
66
|
+
if (ageMs > STATE_LOCK_STALE_MS) {
|
|
67
|
+
fs.rmSync(lockDir, { recursive: true, force: true });
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
} catch (statErr) {
|
|
71
|
+
if (statErr && statErr.code === 'ENOENT') continue;
|
|
72
|
+
throw statErr;
|
|
73
|
+
}
|
|
74
|
+
if (Date.now() - startedAt > STATE_LOCK_STALE_MS) {
|
|
75
|
+
const err = new Error('timed out waiting for mailbox state lock');
|
|
76
|
+
err.code = 'MAILBOX_STATE_LOCK_TIMEOUT';
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
sleepSync(STATE_LOCK_WAIT_MS);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function isPlainState(value) {
|
|
85
|
+
return value && typeof value === 'object' && !Array.isArray(value);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function isHubRotatedNodeSecretState(state) {
|
|
89
|
+
return isPlainState(state)
|
|
90
|
+
&& state.node_secret_source === 'hub_rotate'
|
|
91
|
+
&& typeof state.node_secret === 'string'
|
|
92
|
+
&& Boolean(state.node_secret.trim());
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function parseNodeSecretVersion(value) {
|
|
96
|
+
const n = Number(value);
|
|
97
|
+
return Number.isInteger(n) && n > 0 ? n : null;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function isFullNodeSecretTupleUpdate(updatedSet) {
|
|
101
|
+
return Boolean(updatedSet) && MAILBOX_NODE_SECRET_TUPLE_KEYS.every((key) => updatedSet.has(key));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function canApplyPartialNodeSecretTupleWrite(key, disk, next) {
|
|
105
|
+
if (key !== 'node_secret_version') return false;
|
|
106
|
+
if (!isHubRotatedNodeSecretState(disk)) return true;
|
|
107
|
+
if (!isHubRotatedNodeSecretState(next)) return false;
|
|
108
|
+
if (String(next.node_secret).trim() !== String(disk.node_secret).trim()) return false;
|
|
109
|
+
const nextVersion = parseNodeSecretVersion(next.node_secret_version);
|
|
110
|
+
const diskVersion = parseNodeSecretVersion(disk.node_secret_version);
|
|
111
|
+
return Boolean(nextVersion && (!diskVersion || nextVersion >= diskVersion));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @param {string} stateFile
|
|
116
|
+
* @returns {Record<string, unknown>|null}
|
|
117
|
+
*/
|
|
118
|
+
function readMailboxStateFile(stateFile) {
|
|
119
|
+
try {
|
|
120
|
+
if (!fs.existsSync(stateFile)) return null;
|
|
121
|
+
const parsed = JSON.parse(fs.readFileSync(stateFile, 'utf8'));
|
|
122
|
+
return isPlainState(parsed) ? parsed : null;
|
|
123
|
+
} catch {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function replaceStateFile(stateFile, state) {
|
|
129
|
+
const dir = path.dirname(stateFile);
|
|
130
|
+
ensurePrivateDir(dir);
|
|
131
|
+
const tmp = `${stateFile}.${process.pid}.tmp`;
|
|
132
|
+
writePrivateFile(tmp, JSON.stringify(state || {}, null, 2) + '\n');
|
|
133
|
+
// Windows: renameSync throws EPERM when the destination file already
|
|
134
|
+
// exists, unlike POSIX where rename(2) atomically replaces the target.
|
|
135
|
+
if (process.platform === 'win32') {
|
|
136
|
+
try { fs.unlinkSync(stateFile); } catch (e) {
|
|
137
|
+
if (e.code !== 'ENOENT') throw e;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
fs.renameSync(tmp, stateFile);
|
|
141
|
+
bestEffortChmod(stateFile, PRIVATE_FILE_MODE);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Merge a partial state write with the latest on-disk state.
|
|
146
|
+
*
|
|
147
|
+
* Callers pass the keys they intentionally changed. Secret-bearing keys are
|
|
148
|
+
* only written when they are in `updatedKeys`, so an old long-running
|
|
149
|
+
* MailboxStore cannot overwrite a fresher Hub-rotated or divergence-cleared
|
|
150
|
+
* secret tuple that was written by another process between load and persist.
|
|
151
|
+
*
|
|
152
|
+
* @param {string} stateFile
|
|
153
|
+
* @param {Record<string, unknown>} nextState
|
|
154
|
+
* @param {Iterable<string>} updatedKeys
|
|
155
|
+
* @returns {Record<string, unknown>}
|
|
156
|
+
*/
|
|
157
|
+
function writeMergedMailboxStateFile(stateFile, nextState, updatedKeys) {
|
|
158
|
+
const releaseLock = acquireStateFileLock(stateFile);
|
|
159
|
+
try {
|
|
160
|
+
const next = isPlainState(nextState) ? nextState : {};
|
|
161
|
+
const disk = readMailboxStateFile(stateFile);
|
|
162
|
+
const hasDiskState = isPlainState(disk);
|
|
163
|
+
const merged = hasDiskState ? { ...disk } : {};
|
|
164
|
+
const updatedSet = updatedKeys ? new Set(Array.from(updatedKeys)) : null;
|
|
165
|
+
const keys = updatedSet ? Array.from(updatedSet) : Object.keys(next);
|
|
166
|
+
const touchesNodeSecretTuple = keys.some((key) => MAILBOX_NODE_SECRET_TUPLE_KEY_SET.has(key));
|
|
167
|
+
const preserveDiskNodeSecretTuple = touchesNodeSecretTuple
|
|
168
|
+
&& hasDiskState
|
|
169
|
+
&& isHubRotatedNodeSecretState(disk)
|
|
170
|
+
&& !isFullNodeSecretTupleUpdate(updatedSet);
|
|
171
|
+
|
|
172
|
+
for (const key of keys) {
|
|
173
|
+
if (MAILBOX_NODE_SECRET_STATE_KEY_SET.has(key) && hasDiskState && (!updatedSet || !updatedSet.has(key))) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (
|
|
177
|
+
MAILBOX_NODE_SECRET_TUPLE_KEY_SET.has(key) &&
|
|
178
|
+
preserveDiskNodeSecretTuple &&
|
|
179
|
+
!canApplyPartialNodeSecretTupleWrite(key, disk, next)
|
|
180
|
+
) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (!Object.prototype.hasOwnProperty.call(next, key)) {
|
|
184
|
+
delete merged[key];
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
merged[key] = next[key];
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
replaceStateFile(stateFile, merged);
|
|
191
|
+
return merged;
|
|
192
|
+
} finally {
|
|
193
|
+
releaseLock();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
module.exports = {
|
|
198
|
+
PRIVATE_DIR_MODE,
|
|
199
|
+
PRIVATE_FILE_MODE,
|
|
200
|
+
MAILBOX_NODE_SECRET_STATE_KEYS,
|
|
201
|
+
bestEffortChmod,
|
|
202
|
+
ensurePrivateDir,
|
|
203
|
+
writePrivateFile,
|
|
204
|
+
readMailboxStateFile,
|
|
205
|
+
isHubRotatedNodeSecretState,
|
|
206
|
+
writeMergedMailboxStateFile,
|
|
207
|
+
};
|