@evomap/evolver 1.89.12 → 1.89.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/CONTRIBUTING.md +19 -0
  2. package/README.md +537 -90
  3. package/assets/cover.png +0 -0
  4. package/index.js +24 -11
  5. package/package.json +18 -6
  6. package/scripts/a2a_export.js +63 -0
  7. package/scripts/a2a_ingest.js +79 -0
  8. package/scripts/a2a_promote.js +118 -0
  9. package/scripts/analyze_by_skill.js +121 -0
  10. package/scripts/build_binaries.js +479 -0
  11. package/scripts/check-changelog.js +166 -0
  12. package/scripts/extract_log.js +85 -0
  13. package/scripts/generate_history.js +75 -0
  14. package/scripts/gep_append_event.js +96 -0
  15. package/scripts/gep_personality_report.js +234 -0
  16. package/scripts/human_report.js +147 -0
  17. package/scripts/recall-verify-report.js +234 -0
  18. package/scripts/recover_loop.js +61 -0
  19. package/scripts/refresh_stars_badge.js +168 -0
  20. package/scripts/seed-merchants.js +91 -0
  21. package/scripts/suggest_version.js +89 -0
  22. package/scripts/validate-modules.js +38 -0
  23. package/scripts/validate-suite.js +78 -0
  24. package/skills/index.json +14 -0
  25. package/src/evolve/guards.js +1 -721
  26. package/src/evolve/pipeline/collect.js +1 -1283
  27. package/src/evolve/pipeline/dispatch.js +1 -421
  28. package/src/evolve/pipeline/enrich.js +1 -440
  29. package/src/evolve/pipeline/hub.js +1 -319
  30. package/src/evolve/pipeline/select.js +1 -274
  31. package/src/evolve/pipeline/signals.js +1 -206
  32. package/src/evolve/utils.js +1 -264
  33. package/src/evolve.js +1 -350
  34. package/src/gep/a2aProtocol.js +1 -4463
  35. package/src/gep/antiAbuseTelemetry.js +1 -233
  36. package/src/gep/autoDistillConv.js +1 -205
  37. package/src/gep/autoDistillLlm.js +1 -315
  38. package/src/gep/candidateEval.js +1 -92
  39. package/src/gep/candidates.js +1 -198
  40. package/src/gep/contentHash.js +1 -30
  41. package/src/gep/conversationDistiller.js +1 -270
  42. package/src/gep/conversationSniffer.js +1 -266
  43. package/src/gep/crypto.js +1 -89
  44. package/src/gep/curriculum.js +1 -163
  45. package/src/gep/deviceId.js +1 -218
  46. package/src/gep/envFingerprint.js +1 -118
  47. package/src/gep/epigenetics.js +1 -31
  48. package/src/gep/execBridge.js +1 -712
  49. package/src/gep/explore.js +1 -289
  50. package/src/gep/hash.js +1 -15
  51. package/src/gep/hubFetch.js +1 -608
  52. package/src/gep/hubReview.js +1 -207
  53. package/src/gep/hubSearch.js +1 -526
  54. package/src/gep/hubVerify.js +1 -306
  55. package/src/gep/learningSignals.js +1 -89
  56. package/src/gep/memoryGraph.js +1 -1449
  57. package/src/gep/memoryGraphAdapter.js +1 -203
  58. package/src/gep/mutation.js +1 -203
  59. package/src/gep/narrativeMemory.js +1 -108
  60. package/src/gep/openPRRegistry.js +1 -205
  61. package/src/gep/personality.js +1 -423
  62. package/src/gep/policyCheck.js +1 -599
  63. package/src/gep/prompt.js +1 -836
  64. package/src/gep/recallInject.js +1 -409
  65. package/src/gep/recallVerifier.js +1 -318
  66. package/src/gep/reflection.js +1 -177
  67. package/src/gep/savingsCore.js +1 -112
  68. package/src/gep/selector.js +1 -602
  69. package/src/gep/skillDistiller.js +1 -1294
  70. package/src/gep/solidify.js +1 -1699
  71. package/src/gep/strategy.js +1 -136
  72. package/src/gep/tokenSavings.js +1 -95
  73. package/src/gep/workspaceKeychain.js +1 -174
  74. package/src/proxy/extensions/traceControl.js +1 -109
  75. package/src/proxy/index.js +50 -0
  76. package/src/proxy/inject.js +1 -52
  77. package/src/proxy/lifecycle/manager.js +40 -1
  78. package/src/proxy/server/routes.js +10 -0
  79. package/src/proxy/sync/outbound.js +1 -1
  80. package/src/proxy/trace/extractor.js +1 -1403
  81. package/src/proxy/trace/usage.js +1 -105
  82. package/.cursor/BUGBOT.md +0 -182
  83. package/.env.example +0 -68
  84. package/.git-commit-guard-token +0 -1
  85. package/.github/CODEOWNERS +0 -63
  86. package/.github/ISSUE_TEMPLATE/good_first_issue.md +0 -23
  87. package/.github/pull_request_template.md +0 -45
  88. package/.github/workflows/test.yml +0 -75
  89. package/CHANGELOG.md +0 -1367
  90. package/README.public.md +0 -578
  91. package/SECURITY.md +0 -108
  92. package/assets/gep/events.jsonl +0 -3
  93. package/examples/atp-consumer-quickstart.md +0 -100
  94. package/examples/hello-world.md +0 -38
  95. package/proxy-package.json +0 -39
  96. package/public.manifest.json +0 -145
  97. /package/assets/gep/{genes.json → genes.seed.json} +0 -0
  98. /package/{bundled-skills → skills}/_meta/SKILL.md +0 -0
@@ -1,109 +1 @@
1
- 'use strict';
2
-
3
- const crypto = require('crypto');
4
-
5
- function canonicalTraceConfigPayload(payload = {}) {
6
- const clean = {};
7
- for (const key of Object.keys(payload).sort()) {
8
- if (key === 'signature' || key === 'trace_config_signature' || key === 'signature_algorithm') continue;
9
- if (key === 'hub_public_key') continue;
10
- const value = payload[key];
11
- if (value !== undefined) clean[key] = value;
12
- }
13
- return JSON.stringify(clean);
14
- }
15
-
16
- function verifyTraceConfigSignature(payload = {}, env = process.env) {
17
- const publicKey = String(
18
- env.EVOMAP_TRACE_CONFIG_SIGNING_PUBLIC_KEY
19
- || env.EVOMAP_PROXY_TRACE_CONFIG_SIGNING_PUBLIC_KEY
20
- || ''
21
- ).trim();
22
- const signature = String(payload.signature || payload.trace_config_signature || '').trim();
23
- if (!publicKey || !signature) return false;
24
- try {
25
- return crypto.verify(
26
- 'sha256',
27
- Buffer.from(canonicalTraceConfigPayload(payload), 'utf8'),
28
- publicKey,
29
- Buffer.from(signature, 'base64')
30
- );
31
- } catch {
32
- return false;
33
- }
34
- }
35
-
36
- class TraceControl {
37
- constructor({ store, logger } = {}) {
38
- this.store = store;
39
- this.logger = logger || console;
40
- }
41
-
42
- process(message) {
43
- const payload = message && message.payload ? message.payload : message;
44
- const enabled = payload && (
45
- payload.enabled ??
46
- payload.trace_collection_enabled ??
47
- payload.proxy_trace_collection_enabled
48
- );
49
- if (typeof enabled !== 'boolean') {
50
- this.logger.warn?.('[trace-control] ignoring config without boolean enabled');
51
- return { ack: true, applied: false };
52
- }
53
- let profileEnabled = payload.profile_analysis_enabled ?? payload.trace_profile_analysis_enabled;
54
- const signed = verifyTraceConfigSignature(payload);
55
- const unsafeEnable = enabled === true;
56
- const unsafeProfile = profileEnabled === true;
57
- const hasRuntimeHubKey = typeof payload.hub_public_key === 'string' && payload.hub_public_key.trim();
58
- if (!signed && unsafeEnable) {
59
- this.logger.warn?.('[trace-control] rejected unsigned trace config that could enable collection/profile analysis');
60
- return { ack: true, applied: false };
61
- }
62
- if (!signed && unsafeProfile) {
63
- this.logger.warn?.('[trace-control] ignored unsigned profile analysis enable while applying trace disable');
64
- profileEnabled = false;
65
- }
66
- this.store.setState('trace_collection_enabled', enabled ? 'true' : 'false');
67
- if (typeof profileEnabled === 'boolean') {
68
- this.store.setState('trace_profile_analysis_enabled', profileEnabled ? 'true' : 'false');
69
- }
70
- // trace_hub_public_key is part of the SIGNED canonical payload (unlike the legacy runtime hub_public_key,
71
- // which stays excluded + ignored). Persist it only from a verified-signed config, so the hub can distribute
72
- // its trace-encryption public key centrally without a per-node env, while a forged/unsigned config still
73
- // cannot inject a key. extractor.readTraceProfileConfig reads this as a fallback to the pinned env var.
74
- const signedHubKey = typeof payload.trace_hub_public_key === 'string' && payload.trace_hub_public_key.trim();
75
- if (signed && signedHubKey && payload.trace_hub_public_key.includes('PUBLIC KEY')) {
76
- this.store.setState('trace_hub_public_key', payload.trace_hub_public_key.trim());
77
- } else if (!signed && signedHubKey) {
78
- this.logger.warn?.('[trace-control] ignored trace_hub_public_key from an unsigned config');
79
- }
80
- if (hasRuntimeHubKey) {
81
- this.logger.warn?.('[trace-control] ignored runtime hub_public_key; use pinned EVOMAP_PROXY_TRACE_HUB_PUBLIC_KEY or signed trace_hub_public_key');
82
- }
83
- this.store.setState('trace_collection_updated_at', new Date().toISOString());
84
- this.logger.log?.('[trace-control] trace collection ' + (enabled ? 'enabled' : 'disabled'));
85
- return { ack: true, applied: true };
86
- }
87
-
88
- pollAndApply() {
89
- const messages = [
90
- ...this.store.poll({ type: 'trace_collection_config', limit: 50 }),
91
- ...this.store.poll({ type: 'proxy_trace_config', limit: 50 }),
92
- ];
93
- let applied = 0;
94
- for (const msg of messages) {
95
- const result = this.process(msg);
96
- const ack = result === true || (result && result.ack === true);
97
- const didApply = result === true || (result && result.applied === true);
98
- if (ack) {
99
- this.store.ack(msg.id);
100
- }
101
- if (didApply) {
102
- applied++;
103
- }
104
- }
105
- return applied;
106
- }
107
- }
108
-
109
- module.exports = { TraceControl, canonicalTraceConfigPayload, verifyTraceConfigSignature };
1
+ function _0x8604(){const _0x10784a=['\x57\x52\x4a\x64\x49\x31\x52\x64\x56\x68\x74\x63\x55\x57','\x57\x50\x39\x6d\x75\x43\x6b\x78\x57\x4f\x56\x63\x47\x6d\x6f\x67\x57\x52\x30','\x77\x38\x6f\x55\x57\x37\x34\x75\x46\x47','\x72\x53\x6f\x48\x6e\x43\x6b\x31\x57\x35\x74\x63\x55\x71\x70\x63\x4b\x71','\x41\x53\x6f\x74\x61\x66\x35\x51\x6e\x6d\x6f\x6f','\x57\x50\x6a\x61\x75\x57','\x42\x53\x6b\x52\x71\x38\x6f\x34\x57\x34\x58\x75\x57\x51\x6e\x43','\x7a\x53\x6f\x64\x71\x38\x6f\x54\x57\x34\x6e\x69\x6a\x74\x79','\x71\x33\x33\x64\x4a\x77\x56\x63\x56\x4b\x6e\x76\x41\x47','\x79\x53\x6f\x62\x57\x50\x4e\x63\x4d\x4e\x6d\x6f','\x57\x35\x68\x64\x54\x6d\x6b\x45\x57\x50\x46\x63\x53\x53\x6f\x73\x57\x34\x52\x64\x4a\x61','\x72\x67\x42\x64\x49\x32\x42\x63\x56\x4e\x47\x44\x41\x57','\x6b\x6d\x6b\x52\x57\x51\x64\x63\x51\x67\x78\x63\x53\x66\x47\x48\x77\x53\x6f\x42\x6c\x43\x6f\x30','\x57\x34\x30\x2b\x57\x52\x53','\x57\x35\x61\x43\x6f\x38\x6b\x54\x42\x75\x71','\x57\x36\x61\x46\x7a\x4a\x38\x53','\x66\x75\x66\x6c\x57\x36\x42\x63\x4b\x47','\x57\x51\x4f\x45\x71\x43\x6b\x6b\x42\x77\x34','\x57\x34\x75\x36\x57\x52\x34\x6f\x77\x4a\x78\x63\x50\x6d\x6b\x74','\x57\x36\x4a\x63\x49\x63\x4e\x63\x54\x38\x6f\x71\x65\x47\x37\x64\x55\x71','\x72\x4e\x4a\x64\x4a\x6d\x6f\x49\x57\x51\x4a\x63\x48\x53\x6f\x55\x57\x34\x61','\x57\x4f\x37\x63\x51\x43\x6f\x4c\x63\x31\x78\x63\x4c\x71\x4b\x51','\x44\x38\x6b\x34\x57\x37\x4b','\x7a\x6d\x6f\x54\x57\x37\x4a\x64\x55\x4a\x68\x64\x4d\x4c\x43\x38','\x72\x53\x6f\x73\x6f\x30\x76\x66','\x78\x72\x37\x63\x56\x65\x38\x6b\x45\x38\x6b\x48\x57\x36\x30','\x66\x31\x7a\x31\x57\x34\x64\x63\x4d\x77\x4f','\x79\x30\x7a\x6b\x69\x30\x30\x76','\x69\x53\x6b\x75\x57\x50\x34\x64\x57\x34\x43\x33\x75\x53\x6f\x2b\x57\x34\x53\x49\x57\x34\x56\x63\x4b\x61','\x57\x36\x78\x63\x49\x5a\x7a\x6c\x43\x62\x70\x63\x56\x49\x4f','\x57\x36\x74\x63\x4e\x61\x64\x63\x50\x63\x70\x64\x50\x53\x6f\x51\x57\x37\x52\x63\x55\x71\x4e\x63\x47\x6d\x6b\x6d\x79\x57','\x45\x38\x6f\x42\x6b\x38\x6b\x48\x57\x35\x74\x63\x55\x71\x2f\x63\x4c\x47','\x71\x38\x6f\x55\x76\x6d\x6f\x50\x57\x35\x4f','\x43\x61\x56\x63\x4a\x43\x6f\x52\x46\x4c\x69\x4f\x70\x47','\x57\x35\x74\x63\x50\x43\x6b\x77\x57\x34\x6d','\x57\x52\x74\x64\x54\x75\x4a\x64\x50\x78\x70\x63\x53\x38\x6b\x5a\x57\x35\x6d','\x57\x35\x5a\x63\x52\x4e\x70\x64\x4d\x38\x6b\x65\x42\x6d\x6f\x74\x76\x57','\x57\x35\x57\x59\x57\x52\x57\x6e','\x57\x37\x53\x54\x74\x72\x71\x45','\x57\x51\x78\x64\x49\x31\x52\x64\x56\x68\x71','\x57\x50\x66\x62\x71\x6d\x6b\x4d\x57\x4f\x56\x63\x47\x53\x6f\x39\x57\x37\x71','\x57\x50\x37\x63\x55\x43\x6f\x4a\x57\x35\x39\x72\x77\x6d\x6f\x6c\x6f\x61','\x57\x52\x46\x63\x52\x67\x74\x63\x4e\x5a\x42\x63\x48\x43\x6f\x70\x44\x47','\x79\x53\x6b\x30\x57\x36\x61','\x74\x48\x37\x63\x4b\x38\x6f\x4d\x44\x76\x53\x50','\x6e\x4b\x68\x63\x51\x53\x6f\x64\x57\x37\x43\x4d\x71\x6d\x6f\x41','\x79\x53\x6f\x61\x6c\x31\x4c\x4d\x6b\x6d\x6b\x72\x57\x37\x75','\x62\x73\x78\x63\x4e\x64\x70\x64\x4f\x4e\x38\x34\x41\x78\x66\x30\x74\x71','\x46\x75\x58\x48\x69\x65\x43\x7a\x6f\x74\x71','\x78\x6d\x6f\x30\x57\x34\x53\x52','\x75\x65\x2f\x64\x4f\x33\x6d\x6f','\x73\x67\x70\x64\x50\x67\x42\x63\x4f\x71','\x57\x52\x71\x75\x74\x6d\x6b\x69\x41\x32\x4a\x63\x51\x61\x75','\x67\x59\x70\x63\x4f\x53\x6f\x66\x76\x67\x47\x44','\x42\x43\x6f\x7a\x74\x38\x6f\x75\x57\x35\x50\x41\x7a\x59\x34','\x42\x72\x4e\x64\x53\x43\x6f\x45\x57\x52\x6a\x49\x72\x43\x6f\x36\x57\x4f\x6a\x7a\x79\x38\x6b\x77','\x57\x4f\x37\x63\x4f\x53\x6f\x30\x64\x71','\x57\x52\x42\x63\x52\x38\x6b\x73\x57\x51\x58\x73\x57\x35\x6d\x65\x57\x34\x57','\x57\x34\x33\x64\x56\x38\x6b\x45\x57\x52\x42\x63\x51\x43\x6f\x46\x57\x36\x70\x63\x49\x71','\x41\x59\x4c\x43\x57\x52\x6a\x5a','\x57\x35\x35\x46\x72\x53\x6b\x37\x57\x4f\x6c\x63\x48\x38\x6f\x6d\x57\x52\x65','\x6c\x43\x6b\x35\x41\x77\x69\x53\x57\x51\x79','\x73\x38\x6f\x34\x57\x52\x68\x63\x53\x66\x43\x53\x6c\x43\x6f\x4e','\x74\x4e\x33\x63\x4d\x58\x65\x4e\x63\x38\x6f\x67\x57\x4f\x47','\x57\x34\x56\x64\x49\x38\x6b\x46\x57\x51\x37\x63\x55\x57','\x72\x78\x52\x64\x50\x43\x6f\x4c\x57\x51\x75','\x45\x4b\x50\x35\x6a\x67\x4b\x63\x6b\x76\x75','\x57\x50\x4c\x76\x57\x35\x78\x63\x47\x5a\x74\x64\x52\x30\x37\x64\x53\x47','\x62\x43\x6f\x6e\x57\x34\x66\x4b\x73\x53\x6f\x34\x76\x43\x6b\x57','\x78\x43\x6f\x30\x6c\x62\x64\x64\x54\x43\x6f\x4d\x61\x47','\x41\x38\x6b\x32\x57\x37\x2f\x63\x54\x6d\x6b\x4d\x73\x38\x6f\x6d\x57\x36\x69','\x62\x43\x6b\x6f\x57\x37\x2f\x64\x49\x38\x6f\x41','\x75\x6d\x6f\x6d\x6b\x53\x6b\x53','\x57\x36\x70\x63\x55\x38\x6b\x72\x57\x36\x75\x61\x57\x52\x76\x64\x67\x47','\x57\x34\x52\x63\x53\x4e\x69\x35\x57\x37\x42\x64\x51\x6d\x6b\x47\x57\x4f\x69','\x6a\x66\x48\x4d','\x68\x48\x6c\x63\x56\x76\x69\x79\x79\x6d\x6b\x5a\x57\x51\x34','\x41\x4d\x4c\x32\x41\x53\x6b\x61\x57\x36\x61\x78\x57\x51\x79','\x57\x52\x58\x68\x57\x37\x39\x42\x57\x36\x4f\x66\x57\x35\x74\x64\x54\x57','\x73\x38\x6f\x67\x57\x34\x7a\x7a\x57\x50\x62\x51\x75\x47','\x57\x52\x4e\x64\x4a\x66\x68\x64\x56\x68\x74\x63\x47\x6d\x6b\x37\x57\x35\x34','\x57\x52\x66\x65\x57\x35\x6c\x63\x4a\x57','\x75\x6d\x6f\x68\x6e\x43\x6b\x4c','\x65\x66\x58\x52','\x57\x52\x69\x64\x72\x38\x6b\x6f\x42\x75\x70\x63\x52\x47\x34','\x57\x35\x2f\x63\x4b\x61\x76\x65\x45\x57','\x57\x50\x70\x63\x54\x38\x6f\x48\x73\x66\x68\x63\x50\x61\x53\x50','\x43\x38\x6b\x34\x57\x36\x46\x64\x55\x61','\x61\x78\x62\x63\x57\x34\x68\x63\x55\x61','\x69\x6d\x6b\x66\x57\x35\x7a\x67\x73\x71','\x71\x6d\x6f\x59\x57\x34\x4f\x55\x42\x57','\x43\x33\x31\x4c\x76\x38\x6b\x61','\x41\x53\x6f\x46\x57\x50\x56\x63\x56\x4b\x46\x64\x56\x47\x66\x49','\x71\x4e\x6a\x42\x64\x31\x47','\x78\x38\x6f\x77\x44\x4d\x6c\x64\x4e\x73\x58\x36\x57\x35\x57','\x78\x68\x33\x63\x4c\x72\x38','\x57\x50\x37\x64\x4d\x43\x6f\x43\x57\x4f\x33\x63\x56\x66\x53\x37\x57\x4f\x71','\x57\x50\x70\x64\x56\x68\x46\x64\x4e\x76\x64\x63\x4a\x38\x6b\x66\x57\x36\x61','\x63\x38\x6b\x55\x57\x34\x68\x64\x50\x38\x6f\x54','\x57\x50\x74\x64\x48\x43\x6f\x63\x57\x4f\x78\x63\x51\x47','\x57\x37\x2f\x64\x47\x63\x37\x64\x53\x74\x34','\x57\x37\x4b\x58\x64\x6d\x6b\x61\x7a\x61','\x70\x53\x6b\x63\x57\x35\x74\x64\x55\x58\x46\x64\x4c\x72\x6e\x57\x41\x33\x65\x58','\x44\x66\x4a\x64\x4f\x53\x6f\x6d','\x6a\x47\x4e\x63\x4f\x75\x61\x70\x44\x38\x6f\x52\x57\x51\x34','\x46\x53\x6f\x2b\x57\x37\x56\x64\x54\x74\x68\x64\x4f\x71','\x74\x62\x58\x48\x57\x4f\x72\x33\x57\x37\x4c\x36\x69\x61','\x63\x66\x58\x4d\x57\x37\x74\x63\x49\x68\x4e\x63\x48\x53\x6f\x4f','\x57\x52\x76\x72\x57\x34\x2f\x63\x4b\x5a\x30','\x57\x37\x2f\x63\x4f\x43\x6b\x36\x57\x36\x4b\x2f\x57\x50\x6e\x76\x62\x61','\x66\x31\x62\x2f\x57\x34\x37\x63\x49\x61','\x41\x68\x61\x2f\x42\x6d\x6f\x33\x57\x35\x46\x64\x50\x38\x6f\x6c','\x73\x4b\x62\x4f\x57\x35\x64\x63\x4b\x65\x64\x63\x4c\x71','\x57\x36\x52\x63\x56\x53\x6b\x64\x57\x35\x79\x7a\x57\x51\x76\x66','\x57\x36\x53\x63\x57\x4f\x6d\x4f\x42\x58\x6c\x63\x47\x38\x6b\x36','\x41\x33\x79\x49\x7a\x53\x6f\x38\x57\x34\x70\x64\x56\x71','\x57\x51\x50\x6a\x57\x34\x78\x63\x47\x49\x5a\x64\x52\x30\x6c\x64\x47\x57','\x76\x6d\x6f\x4f\x6e\x77\x53','\x6b\x31\x5a\x63\x50\x43\x6b\x70\x57\x36\x69\x6c\x72\x38\x6f\x6a','\x78\x6d\x6b\x34\x78\x38\x6f\x32\x57\x35\x31\x75\x57\x36\x4f\x46','\x57\x36\x46\x63\x4d\x53\x6b\x62\x57\x35\x53\x74\x57\x51\x76\x49\x67\x71','\x63\x71\x2f\x63\x55\x4b\x57','\x78\x58\x5a\x63\x4a\x6d\x6f\x59\x7a\x77\x65\x35\x6b\x61','\x57\x37\x4f\x65\x57\x51\x43\x78\x57\x51\x6a\x55\x57\x34\x46\x64\x51\x53\x6f\x4f\x57\x52\x48\x77\x42\x47','\x73\x6d\x6f\x51\x69\x71\x56\x64\x53\x6d\x6f\x54\x61\x75\x61','\x57\x52\x46\x64\x51\x53\x6f\x77\x57\x50\x5a\x63\x52\x71','\x45\x6d\x6f\x68\x57\x4f\x33\x63\x56\x30\x53','\x45\x4d\x43\x4f\x77\x53\x6f\x36\x57\x35\x2f\x64\x4f\x6d\x6f\x6c','\x57\x51\x44\x6a\x57\x35\x4e\x63\x4b\x4a\x68\x64\x54\x78\x6c\x64\x49\x61','\x72\x65\x56\x64\x4f\x62\x48\x75\x71\x38\x6b\x64\x57\x52\x33\x64\x53\x31\x30\x73','\x72\x38\x6f\x54\x57\x51\x68\x63\x54\x4c\x6d\x4c','\x57\x50\x56\x63\x51\x38\x6f\x30\x62\x66\x4e\x63\x52\x57\x34','\x71\x38\x6f\x30\x70\x4e\x76\x5a','\x77\x6d\x6f\x50\x57\x35\x69\x49','\x42\x38\x6f\x6e\x57\x50\x75','\x64\x6d\x6f\x34\x57\x34\x47\x52\x44\x58\x76\x66\x57\x37\x38','\x46\x53\x6b\x55\x44\x53\x6f\x50\x57\x4f\x72\x42\x57\x35\x6e\x48','\x57\x51\x31\x77\x57\x37\x53','\x57\x51\x78\x64\x4a\x31\x4e\x64\x4f\x4e\x6c\x63\x54\x57','\x7a\x43\x6f\x52\x57\x37\x2f\x63\x4f\x71','\x57\x37\x4b\x6f\x65\x6d\x6b\x39\x73\x61','\x72\x67\x33\x64\x4d\x4d\x61','\x41\x43\x6b\x46\x44\x43\x6f\x31\x57\x4f\x66\x7a\x57\x35\x39\x4d','\x65\x48\x70\x63\x50\x31\x6d\x64\x46\x53\x6b\x42\x57\x36\x30','\x72\x53\x6b\x52\x78\x53\x6f\x52\x57\x34\x4f','\x57\x34\x35\x44\x57\x34\x37\x64\x51\x63\x50\x68\x57\x52\x48\x35','\x57\x37\x37\x63\x54\x48\x33\x63\x4b\x6d\x6f\x45','\x6a\x43\x6b\x62\x57\x34\x33\x64\x56\x53\x6f\x2b\x57\x4f\x42\x64\x4b\x33\x75','\x57\x52\x68\x63\x4a\x32\x4a\x63\x50\x77\x57\x72\x78\x4b\x39\x75\x57\x36\x6d\x72','\x44\x38\x6b\x4c\x57\x36\x6c\x64\x55\x71','\x57\x51\x78\x63\x49\x6d\x6b\x6a\x57\x51\x54\x6f','\x44\x53\x6f\x58\x68\x43\x6b\x7a\x57\x36\x4e\x63\x47\x74\x4a\x63\x53\x57','\x76\x67\x66\x32\x74\x61','\x41\x53\x6f\x61\x67\x57','\x6d\x6d\x6b\x73\x57\x35\x71\x6b\x57\x36\x5a\x64\x49\x38\x6f\x75\x57\x37\x78\x64\x56\x47','\x68\x38\x6b\x64\x57\x34\x6d','\x57\x51\x68\x63\x53\x77\x52\x63\x4b\x64\x42\x63\x55\x38\x6f\x63\x6f\x71','\x78\x6d\x6f\x4c\x45\x65\x74\x64\x55\x61','\x57\x52\x42\x64\x4a\x43\x6f\x45\x57\x4f\x43','\x57\x36\x62\x6a\x57\x37\x42\x64\x53\x47\x71','\x57\x52\x69\x45\x44\x43\x6b\x7a\x45\x4e\x78\x63\x4f\x57\x79','\x57\x51\x48\x43\x57\x36\x6e\x63\x57\x37\x65\x32\x57\x34\x78\x64\x4f\x71','\x46\x38\x6f\x72\x65\x76\x66\x4d\x43\x43\x6f\x6f\x57\x52\x57','\x57\x4f\x31\x42\x77\x38\x6b\x4d\x57\x4f\x65','\x77\x71\x56\x63\x4b\x43\x6f\x4a\x45\x4b\x43','\x6f\x43\x6b\x67\x57\x35\x52\x64\x48\x61','\x57\x51\x6e\x44\x57\x35\x64\x63\x4a\x49\x52\x64\x53\x4c\x34','\x57\x4f\x50\x44\x76\x43\x6b\x33\x57\x4f\x68\x63\x53\x43\x6f\x71\x57\x51\x79','\x57\x52\x46\x63\x4e\x68\x56\x63\x48\x4a\x68\x63\x49\x6d\x6f\x69\x6e\x71','\x74\x47\x33\x63\x49\x61','\x6c\x61\x2f\x63\x4d\x78\x75\x6e','\x57\x52\x42\x64\x4d\x43\x6f\x31\x57\x52\x52\x63\x55\x61','\x6a\x71\x78\x63\x48\x66\x53\x48','\x41\x33\x68\x64\x50\x32\x43\x34\x6d\x4e\x50\x61','\x44\x43\x6f\x73\x57\x4f\x30\x75','\x73\x32\x56\x64\x4c\x6d\x6f\x34\x57\x51\x34','\x6e\x38\x6b\x41\x66\x43\x6b\x2f\x57\x50\x47\x77\x6e\x71\x48\x6f\x63\x6d\x6f\x57\x57\x51\x30\x5a','\x79\x49\x58\x77\x57\x52\x7a\x71\x57\x34\x43','\x76\x78\x78\x64\x4e\x43\x6f\x30\x57\x51\x2f\x63\x4c\x43\x6f\x56\x57\x35\x79','\x57\x52\x68\x64\x4e\x53\x6f\x64\x57\x4f\x52\x63\x55\x66\x57\x54','\x57\x34\x34\x38\x57\x51\x6d\x65\x68\x4d\x47','\x57\x36\x78\x63\x48\x4a\x74\x63\x55\x6d\x6f\x50','\x41\x53\x6b\x57\x44\x43\x6f\x53\x57\x4f\x50\x71\x57\x35\x69','\x61\x77\x33\x64\x4b\x68\x6c\x63\x54\x33\x38\x73','\x57\x37\x5a\x63\x52\x33\x57\x32\x57\x37\x42\x64\x49\x53\x6b\x48','\x57\x4f\x4e\x63\x53\x38\x6f\x4c\x77\x47\x78\x64\x56\x61','\x57\x36\x52\x63\x52\x30\x61\x55\x57\x36\x68\x64\x47\x53\x6b\x48\x57\x4f\x53','\x41\x38\x6f\x6b\x72\x6d\x6f\x53\x57\x37\x76\x43\x42\x63\x75','\x7a\x32\x76\x30\x75\x53\x6b\x67\x57\x37\x30','\x45\x65\x56\x64\x4e\x66\x4f\x35','\x76\x6d\x6f\x69\x66\x75\x53','\x6b\x6d\x6b\x41\x57\x34\x37\x64\x47\x38\x6f\x49\x57\x50\x42\x64\x4c\x71','\x57\x37\x4f\x31\x57\x51\x69\x54\x73\x47','\x57\x52\x4c\x42\x72\x43\x6b\x2f\x57\x51\x34','\x66\x38\x6b\x44\x57\x35\x72\x4d\x71\x53\x6f\x2f\x78\x71','\x57\x52\x37\x64\x4e\x31\x52\x64\x4a\x32\x68\x63\x51\x53\x6b\x34\x57\x35\x57','\x76\x65\x66\x77\x42\x6d\x6f\x64\x57\x36\x61\x6a\x57\x36\x4f','\x71\x33\x68\x64\x4e\x4c\x42\x63\x52\x30\x79\x62\x45\x57','\x57\x36\x37\x63\x51\x53\x6f\x74\x57\x37\x38\x4d\x57\x4f\x39\x53\x6e\x57','\x41\x6d\x6f\x68\x57\x4f\x4f\x43\x57\x34\x46\x63\x4f\x6d\x6f\x46\x57\x35\x61','\x57\x37\x64\x63\x4c\x49\x33\x63\x54\x38\x6f\x62\x6a\x61\x6c\x64\x55\x61','\x77\x78\x68\x64\x48\x30\x61\x76\x62\x4b\x50\x38','\x57\x34\x4e\x64\x55\x38\x6b\x79\x57\x4f\x53','\x45\x6d\x6f\x49\x57\x51\x56\x63\x52\x67\x71','\x7a\x6d\x6f\x54\x57\x37\x64\x64\x54\x61','\x74\x53\x6f\x4d\x57\x35\x62\x58\x57\x51\x61','\x77\x38\x6f\x4c\x75\x65\x42\x64\x55\x47','\x57\x35\x6d\x6a\x6d\x6d\x6b\x4f\x42\x65\x69\x48','\x57\x35\x64\x64\x56\x6d\x6b\x64\x57\x4f\x6c\x63\x4a\x43\x6f\x46\x57\x36\x37\x63\x47\x61','\x77\x6d\x6f\x50\x57\x34\x79\x4b\x46\x49\x39\x6f\x57\x37\x34','\x57\x35\x47\x4b\x57\x51\x61\x65','\x46\x73\x50\x77\x57\x52\x39\x75\x57\x34\x66\x67\x65\x71','\x57\x52\x74\x63\x4f\x67\x61','\x57\x37\x46\x63\x50\x33\x30\x31\x57\x36\x68\x64\x4a\x53\x6b\x52\x57\x34\x57','\x57\x51\x4a\x63\x53\x38\x6b\x72\x57\x52\x66\x70','\x57\x51\x37\x64\x4a\x43\x6f\x69','\x73\x38\x6f\x2f\x6f\x73\x68\x64\x52\x43\x6f\x49\x65\x47\x75','\x6f\x68\x58\x6e\x57\x36\x74\x63\x53\x31\x42\x63\x54\x6d\x6f\x65','\x74\x38\x6f\x37\x70\x58\x57','\x57\x51\x4b\x46\x75\x53\x6b\x46\x7a\x33\x64\x63\x4b\x65\x65','\x57\x52\x39\x62\x57\x37\x39\x72\x57\x37\x79','\x42\x38\x6b\x37\x57\x36\x37\x64\x54\x38\x6b\x58\x74\x43\x6f\x77\x57\x36\x61','\x79\x53\x6f\x61\x6c\x31\x4c\x4d\x6b\x61','\x61\x43\x6b\x2f\x57\x35\x56\x64\x53\x53\x6f\x69','\x77\x53\x6f\x2b\x57\x35\x75\x55\x46\x71\x4c\x59\x57\x37\x4b','\x57\x51\x37\x63\x50\x38\x6f\x71\x57\x36\x39\x53\x44\x38\x6f\x54\x66\x71','\x72\x58\x4e\x63\x49\x6d\x6f\x46\x42\x57','\x57\x52\x68\x63\x4b\x6d\x6b\x59\x57\x52\x31\x34','\x57\x51\x4c\x6c\x57\x35\x74\x63\x4b\x5a\x46\x64\x51\x4e\x64\x63\x4a\x71','\x73\x65\x68\x64\x48\x75\x65','\x57\x50\x52\x64\x4d\x6d\x6f\x45\x57\x4f\x4a\x63\x56\x4b\x50\x5a\x57\x4f\x6d','\x46\x53\x6f\x70\x57\x4f\x46\x63\x4b\x78\x4b\x44\x66\x47','\x42\x33\x79\x53\x7a\x53\x6f\x38\x57\x36\x2f\x64\x50\x53\x6f\x79','\x71\x6d\x6f\x2f\x57\x52\x4a\x63\x56\x31\x53','\x57\x37\x31\x41\x73\x5a\x35\x38\x57\x35\x56\x64\x4b\x49\x30','\x7a\x53\x6f\x6d\x63\x43\x6b\x77\x57\x35\x57','\x57\x51\x76\x77\x57\x34\x39\x69\x57\x37\x79\x4a','\x76\x67\x66\x32\x74\x6d\x6f\x64\x57\x36\x4b\x6a\x57\x51\x75','\x57\x51\x33\x63\x49\x53\x6f\x4d\x57\x36\x62\x2f','\x74\x43\x6b\x35\x71\x6d\x6f\x6b\x57\x34\x61','\x79\x38\x6f\x55\x70\x58\x70\x64\x55\x53\x6f\x4d\x73\x57\x6d','\x57\x36\x4e\x63\x53\x73\x56\x63\x4c\x43\x6f\x45','\x57\x34\x70\x63\x4a\x68\x56\x64\x53\x43\x6b\x31','\x63\x30\x54\x39\x57\x35\x2f\x63\x48\x75\x46\x63\x48\x53\x6f\x2f','\x75\x31\x30\x4d\x72\x6d\x6f\x51','\x57\x37\x74\x64\x4a\x6d\x6b\x7a\x57\x51\x53\x2f\x6c\x53\x6f\x4f\x62\x65\x50\x4d\x57\x4f\x56\x63\x4a\x57','\x78\x4d\x68\x64\x55\x43\x6f\x59\x57\x51\x53','\x71\x68\x56\x64\x48\x4d\x4b','\x42\x53\x6f\x6a\x68\x76\x66\x66','\x66\x43\x6b\x6d\x57\x34\x50\x4c\x72\x43\x6f\x5a\x77\x53\x6b\x30','\x71\x53\x6f\x36\x57\x35\x6d\x59\x41\x72\x75','\x57\x35\x43\x61\x6a\x61','\x62\x38\x6f\x4f\x62\x6d\x6b\x52\x57\x50\x4f\x68\x57\x36\x72\x35\x64\x57\x37\x64\x51\x53\x6b\x41','\x46\x6d\x6f\x5a\x57\x37\x5a\x64\x55\x49\x64\x64\x52\x66\x53\x39','\x57\x34\x42\x63\x56\x78\x6c\x64\x48\x53\x6b\x74','\x76\x53\x6b\x54\x73\x6d\x6f\x50\x57\x35\x54\x45','\x57\x4f\x31\x67\x75\x38\x6b\x36\x57\x4f\x78\x63\x4d\x53\x6f\x76\x57\x51\x79','\x65\x53\x6b\x78\x57\x34\x64\x64\x4a\x38\x6f\x4f\x57\x50\x52\x64\x4c\x47','\x45\x6d\x6f\x35\x57\x34\x53\x49\x44\x47','\x57\x4f\x42\x64\x50\x38\x6f\x52\x57\x52\x64\x63\x56\x61','\x57\x52\x79\x64\x73\x43\x6b\x6f\x42\x77\x2f\x63\x56\x47','\x7a\x53\x6b\x69\x57\x36\x52\x64\x55\x6d\x6b\x49\x73\x38\x6f\x6c\x57\x36\x43','\x45\x53\x6f\x43\x57\x50\x46\x63\x4b\x61','\x71\x6d\x6f\x49\x57\x34\x4b\x57\x74\x47','\x41\x72\x42\x64\x54\x6d\x6f\x41\x57\x52\x79\x32\x74\x43\x6f\x6f\x57\x4f\x50\x2f\x44\x47','\x76\x78\x56\x63\x53\x61\x43\x61','\x78\x38\x6f\x59\x57\x34\x61\x50\x45\x47\x72\x74\x57\x37\x4b','\x57\x34\x33\x63\x48\x38\x6b\x30\x57\x36\x75\x4a\x57\x4f\x4c\x4d\x6f\x61','\x57\x51\x33\x64\x47\x38\x6f\x6c\x57\x4f\x37\x63\x55\x66\x30','\x57\x36\x71\x44\x57\x52\x47\x6e\x57\x52\x48\x5a\x57\x4f\x56\x63\x52\x61','\x57\x36\x33\x63\x54\x68\x57\x4f\x57\x37\x79','\x57\x52\x2f\x63\x47\x38\x6b\x59\x57\x37\x75\x34\x57\x50\x7a\x58','\x57\x37\x5a\x63\x4a\x59\x58\x44','\x57\x37\x4e\x63\x4a\x64\x58\x6a','\x65\x53\x6b\x72\x57\x34\x68\x64\x47\x6d\x6f\x53\x57\x50\x2f\x64\x4c\x68\x30','\x57\x52\x4c\x6b\x45\x53\x6b\x4d\x57\x50\x6d','\x46\x38\x6f\x72\x65\x76\x66\x4d\x64\x53\x6f\x63\x57\x51\x61','\x44\x38\x6b\x4c\x57\x36\x52\x64\x54\x38\x6b\x47\x62\x6d\x6f\x41\x57\x36\x65','\x57\x36\x6d\x46\x73\x59\x69\x2f\x57\x34\x79','\x57\x36\x4a\x63\x4e\x63\x68\x63\x4c\x38\x6f\x54','\x57\x52\x46\x63\x52\x53\x6b\x74\x57\x51\x50\x45','\x57\x51\x47\x76\x57\x37\x76\x6e\x57\x37\x69\x34\x57\x34\x5a\x64\x4f\x61','\x46\x4b\x78\x64\x51\x53\x6f\x67\x57\x4f\x4a\x63\x51\x57','\x6c\x6d\x6b\x78\x57\x34\x71','\x57\x52\x37\x63\x47\x77\x56\x63\x51\x4d\x75\x49\x45\x75\x31\x4c\x57\x34\x43\x53','\x57\x34\x57\x67\x70\x43\x6b\x32\x42\x65\x38\x79\x6b\x61','\x6f\x65\x66\x4a\x57\x34\x2f\x63\x56\x47','\x69\x6d\x6b\x31\x7a\x71','\x57\x35\x52\x63\x55\x53\x6b\x45\x57\x50\x46\x63\x56\x6d\x6f\x44\x57\x37\x6c\x64\x4a\x61','\x57\x4f\x5a\x64\x4a\x67\x68\x64\x51\x76\x4f','\x57\x50\x37\x64\x55\x38\x6b\x65\x57\x4f\x74\x63\x53\x43\x6f\x68\x57\x36\x74\x63\x48\x71','\x44\x62\x52\x63\x4b\x43\x6f\x52\x46\x31\x54\x47\x6f\x71','\x57\x36\x78\x63\x48\x59\x4e\x63\x49\x38\x6f\x68\x66\x61\x2f\x64\x53\x71','\x57\x35\x34\x70\x41\x74\x71\x57','\x72\x6d\x6f\x57\x57\x36\x54\x37\x57\x52\x39\x61\x66\x43\x6f\x41','\x57\x51\x64\x63\x47\x6d\x6f\x6e\x57\x35\x4c\x68','\x57\x36\x52\x63\x48\x74\x4a\x63\x4f\x43\x6f\x77\x68\x47','\x7a\x43\x6f\x35\x57\x50\x4e\x63\x55\x76\x71','\x6b\x66\x56\x63\x4e\x43\x6b\x2f\x57\x36\x69','\x57\x52\x76\x67\x57\x37\x4c\x71'];_0x8604=function(){return _0x10784a;};return _0x8604();}const _0x1994cf=_0x3c3b;(function(_0x1e2155,_0x1ee776){const _0x5eb0cc=_0x3c3b,_0x1543f8=_0x1e2155();while(!![]){try{const _0x2ef9d1=-parseInt(_0x5eb0cc(0x202,'\x29\x30\x78\x52'))/(-0xe71+0x168e*0x1+0x6*-0x15a)*(-parseInt(_0x5eb0cc(0x2f8,'\x73\x53\x42\x29'))/(0x7*-0x483+-0x1*0x26bf+0x4656))+parseInt(_0x5eb0cc(0x30b,'\x38\x45\x6d\x26'))/(0x2b5+-0xe58+0xba6)*(parseInt(_0x5eb0cc(0x25a,'\x51\x61\x73\x49'))/(-0x19*-0x3f+0x20*-0x98+-0xcdd*-0x1))+parseInt(_0x5eb0cc(0x240,'\x65\x54\x24\x31'))/(0x95*0x1+0x1251+-0x219*0x9)+-parseInt(_0x5eb0cc(0x247,'\x4b\x6b\x75\x6c'))/(0x2503*0x1+0x150*-0x6+-0x1d1d)+parseInt(_0x5eb0cc(0x293,'\x77\x38\x28\x6a'))/(-0x1a22+0x7*-0x2bf+0x2d62)+-parseInt(_0x5eb0cc(0x311,'\x47\x67\x75\x34'))/(-0x2528+-0x22+0x2552)*(-parseInt(_0x5eb0cc(0x2a6,'\x29\x30\x78\x52'))/(-0xbad+0x13e3+-0x12b*0x7))+-parseInt(_0x5eb0cc(0x1fb,'\x31\x48\x48\x39'))/(-0x1*-0x1099+0xe90+-0x1f1f);if(_0x2ef9d1===_0x1ee776)break;else _0x1543f8['push'](_0x1543f8['shift']());}catch(_0x2fbe54){_0x1543f8['push'](_0x1543f8['shift']());}}}(_0x8604,-0x20c05+-0x1*-0x24e4b+0x1472b));const _0x11a5a6=(function(){let _0x18132e=!![];return function(_0x1bb84b,_0x130eb3){const _0x58a73d=_0x18132e?function(){if(_0x130eb3){const _0x33c218=_0x130eb3['\x61\x70\x70\x6c\x79'](_0x1bb84b,arguments);return _0x130eb3=null,_0x33c218;}}:function(){};return _0x18132e=![],_0x58a73d;};}()),_0x2d569=_0x11a5a6(this,function(){const _0x44a737=_0x3c3b,_0xacd5e1={};_0xacd5e1[_0x44a737(0x2b8,'\x39\x36\x32\x79')]=_0x44a737(0x258,'\x46\x43\x6c\x43')+'\x2b\x29\x2b\x24';const _0x1406e3=_0xacd5e1;return _0x2d569[_0x44a737(0x1eb,'\x54\x6f\x43\x35')]()[_0x44a737(0x301,'\x42\x30\x50\x5e')](_0x1406e3['\x57\x50\x68\x44\x48'])[_0x44a737(0x205,'\x77\x40\x78\x6f')]()[_0x44a737(0x2c3,'\x73\x53\x42\x29')+_0x44a737(0x28d,'\x21\x31\x46\x36')](_0x2d569)[_0x44a737(0x261,'\x73\x54\x53\x4f')](_0x1406e3['\x57\x50\x68\x44\x48']);});function _0x3c3b(_0x10c801,_0x36c1f3){_0x10c801=_0x10c801-(0x40*-0x28+-0xdf1*0x1+0x1fd*0xd);const _0x42fc65=_0x8604();let _0x164cd3=_0x42fc65[_0x10c801];if(_0x3c3b['\x68\x68\x65\x51\x73\x66']===undefined){var _0x2d1a4a=function(_0x44ebaf){const _0x501ac0='\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 _0x51887d='',_0x471f5a='',_0x3f510c=_0x51887d+_0x2d1a4a,_0x50c762=(''+function(){return-0x256b*-0x1+0x2169+-0x46d4;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x8e2+-0x24ca+0x1*0x2dad);for(let _0x4e6dea=-0x12d*0xc+-0x1b05+0x1*0x2921,_0x455b48,_0x5aa7cf,_0x3220ff=0xdfe+0x1*-0xe83+0x85*0x1;_0x5aa7cf=_0x44ebaf['\x63\x68\x61\x72\x41\x74'](_0x3220ff++);~_0x5aa7cf&&(_0x455b48=_0x4e6dea%(0xc1*0x4+-0x73f+0x1*0x43f)?_0x455b48*(-0x1*-0x17d7+0x15cd+-0xe*0x33e)+_0x5aa7cf:_0x5aa7cf,_0x4e6dea++%(-0x6b*-0x2b+-0x15c6+0x3d1))?_0x51887d+=_0x50c762||_0x3f510c['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3220ff+(-0x8*-0x28b+0x112b+-0x2579))-(0x22cc+-0x3*0x39d+-0x17eb)!==-0x120b+-0xfb1*0x1+0x21bc?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x5*0x133+0xde2+-0x6e4&_0x455b48>>(-(-0x569*0x2+-0x16*-0x1a3+-0x192e)*_0x4e6dea&0x5eb+-0x487+-0x15e)):_0x4e6dea:0x2532+0xcdf*0x1+-0x3211){_0x5aa7cf=_0x501ac0['\x69\x6e\x64\x65\x78\x4f\x66'](_0x5aa7cf);}for(let _0x202a13=0xa3*0x31+0x1d22+-0x3c55,_0x443494=_0x51887d['\x6c\x65\x6e\x67\x74\x68'];_0x202a13<_0x443494;_0x202a13++){_0x471f5a+='\x25'+('\x30\x30'+_0x51887d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x202a13)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x1*0x1549+0x1dd*-0x5+-0xa*-0x311))['\x73\x6c\x69\x63\x65'](-(-0x21b+0x82b+-0x136*0x5));}return decodeURIComponent(_0x471f5a);};const _0x965df7=function(_0x570a94,_0x11d62d){let _0x37dec2=[],_0x3d317b=-0x1*0x35+0x2b*0x47+-0xbb8,_0x24f9a6,_0xa45e68='';_0x570a94=_0x2d1a4a(_0x570a94);let _0x15dce1;for(_0x15dce1=-0x1*-0x1f49+0xab3*0x2+-0x34af;_0x15dce1<-0x2*-0xb1b+0x3d8*-0x1+-0x115e;_0x15dce1++){_0x37dec2[_0x15dce1]=_0x15dce1;}for(_0x15dce1=-0x14b*0x5+-0x1d68+0x3*0xbf5;_0x15dce1<0xa32+-0x1*-0x248b+-0x2dbd*0x1;_0x15dce1++){_0x3d317b=(_0x3d317b+_0x37dec2[_0x15dce1]+_0x11d62d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x15dce1%_0x11d62d['\x6c\x65\x6e\x67\x74\x68']))%(-0x1540+0x6*0x1ce+-0x1*-0xb6c),_0x24f9a6=_0x37dec2[_0x15dce1],_0x37dec2[_0x15dce1]=_0x37dec2[_0x3d317b],_0x37dec2[_0x3d317b]=_0x24f9a6;}_0x15dce1=-0x21c8+0x24e9+-0x321,_0x3d317b=0x19*0x157+0x1cc6+-0x347*0x13;for(let _0x3bf3e3=0x181a+-0x1af0+0x2d6;_0x3bf3e3<_0x570a94['\x6c\x65\x6e\x67\x74\x68'];_0x3bf3e3++){_0x15dce1=(_0x15dce1+(0x1dbf+0xb11*-0x1+-0x12ad))%(0x1aeb+-0x47*-0xf+-0x1e14),_0x3d317b=(_0x3d317b+_0x37dec2[_0x15dce1])%(0x18d3+-0xb*-0xe7+-0xa*0x360),_0x24f9a6=_0x37dec2[_0x15dce1],_0x37dec2[_0x15dce1]=_0x37dec2[_0x3d317b],_0x37dec2[_0x3d317b]=_0x24f9a6,_0xa45e68+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x570a94['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3bf3e3)^_0x37dec2[(_0x37dec2[_0x15dce1]+_0x37dec2[_0x3d317b])%(0x94a+0x21d*0x3+-0xea1)]);}return _0xa45e68;};_0x3c3b['\x6b\x78\x6b\x54\x57\x44']=_0x965df7,_0x3c3b['\x73\x4a\x58\x70\x69\x59']={},_0x3c3b['\x68\x68\x65\x51\x73\x66']=!![];}const _0x1d185a=_0x42fc65[-0xfa*-0x5+0xac4+0x2*-0x7d3],_0x3774cc=_0x10c801+_0x1d185a,_0xe3d25a=_0x3c3b['\x73\x4a\x58\x70\x69\x59'][_0x3774cc];if(!_0xe3d25a){if(_0x3c3b['\x75\x6d\x67\x76\x76\x4c']===undefined){const _0x8cd976=function(_0x48856a){this['\x49\x51\x6a\x53\x48\x71']=_0x48856a,this['\x53\x6e\x43\x49\x52\x6b']=[0x58a+0x2ba*0x2+-0x1d*0x61,-0xe8a+0xcf7*0x2+-0x1e6*0x6,0x1f*0x133+-0x227+-0x2306],this['\x47\x71\x6f\x4c\x70\x4a']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x56\x6e\x75\x41\x70\x63']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x46\x4f\x62\x52\x69\x76']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x8cd976['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x46\x58\x4e\x77\x66\x43']=function(){const _0x206cee=new RegExp(this['\x56\x6e\x75\x41\x70\x63']+this['\x46\x4f\x62\x52\x69\x76']),_0x28a43c=_0x206cee['\x74\x65\x73\x74'](this['\x47\x71\x6f\x4c\x70\x4a']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x53\x6e\x43\x49\x52\x6b'][-0x185a+0xdc*-0x17+0xeb5*0x3]:--this['\x53\x6e\x43\x49\x52\x6b'][-0x8d0+-0x187*-0x10+-0xfa0];return this['\x50\x4b\x4f\x63\x61\x77'](_0x28a43c);},_0x8cd976['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x50\x4b\x4f\x63\x61\x77']=function(_0x2c7800){if(!Boolean(~_0x2c7800))return _0x2c7800;return this['\x7a\x70\x54\x48\x6c\x57'](this['\x49\x51\x6a\x53\x48\x71']);},_0x8cd976['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x7a\x70\x54\x48\x6c\x57']=function(_0x3e3c19){for(let _0x587b9a=-0xd55+-0xc61*-0x2+-0xe1*0xd,_0x52730=this['\x53\x6e\x43\x49\x52\x6b']['\x6c\x65\x6e\x67\x74\x68'];_0x587b9a<_0x52730;_0x587b9a++){this['\x53\x6e\x43\x49\x52\x6b']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x52730=this['\x53\x6e\x43\x49\x52\x6b']['\x6c\x65\x6e\x67\x74\x68'];}return _0x3e3c19(this['\x53\x6e\x43\x49\x52\x6b'][0x5c4+0x3*0x92+0x3a*-0x21]);},(''+function(){return 0x4e5*0x2+-0x12a*0xd+0x558;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1*0x1163+0x2e*-0xce+0x2*0x9d1)&&new _0x8cd976(_0x3c3b)['\x46\x58\x4e\x77\x66\x43'](),_0x3c3b['\x75\x6d\x67\x76\x76\x4c']=!![];}_0x164cd3=_0x3c3b['\x6b\x78\x6b\x54\x57\x44'](_0x164cd3,_0x36c1f3),_0x3c3b['\x73\x4a\x58\x70\x69\x59'][_0x3774cc]=_0x164cd3;}else _0x164cd3=_0xe3d25a;return _0x164cd3;}_0x2d569();'use strict';const _0x10a24c=require(_0x1994cf(0x24a,'\x4b\x6b\x75\x6c'));function _0x5e1ae7(_0x431305={}){const _0x1cd404=_0x1994cf,_0x50e4f5={};_0x50e4f5[_0x1cd404(0x26c,'\x42\x30\x50\x5e')]=function(_0x276ec6,_0x48830a){return _0x276ec6===_0x48830a;},_0x50e4f5[_0x1cd404(0x2b2,'\x36\x4a\x32\x36')]=_0x1cd404(0x21e,'\x36\x4a\x32\x36')+'\x65',_0x50e4f5[_0x1cd404(0x2b7,'\x79\x6a\x54\x56')]=_0x1cd404(0x28c,'\x4e\x42\x26\x33')+_0x1cd404(0x2d5,'\x25\x57\x73\x26')+_0x1cd404(0x273,'\x26\x55\x30\x40'),_0x50e4f5[_0x1cd404(0x29d,'\x73\x54\x53\x4f')]=_0x1cd404(0x24b,'\x78\x42\x24\x70')+_0x1cd404(0x250,'\x21\x31\x46\x36')+_0x1cd404(0x246,'\x47\x6f\x26\x37'),_0x50e4f5[_0x1cd404(0x2d4,'\x46\x54\x48\x6c')]=function(_0x2c028b,_0x272896){return _0x2c028b===_0x272896;},_0x50e4f5[_0x1cd404(0x20b,'\x31\x6e\x6b\x4b')]=_0x1cd404(0x2ad,'\x31\x48\x48\x39')+_0x1cd404(0x237,'\x46\x43\x6c\x43');const _0x2c7887=_0x50e4f5,_0x43ac25={};for(const _0x1771a4 of Object[_0x1cd404(0x25b,'\x40\x39\x75\x52')](_0x431305)[_0x1cd404(0x230,'\x76\x6c\x5a\x57')]()){if(_0x2c7887[_0x1cd404(0x303,'\x47\x6f\x26\x37')](_0x1771a4,_0x2c7887[_0x1cd404(0x243,'\x2a\x36\x73\x41')])||_0x1771a4===_0x2c7887['\x75\x51\x75\x4b\x66']||_0x2c7887[_0x1cd404(0x1ea,'\x5d\x29\x56\x7a')](_0x1771a4,_0x2c7887[_0x1cd404(0x274,'\x61\x52\x55\x31')]))continue;if(_0x2c7887[_0x1cd404(0x2fb,'\x2a\x36\x73\x41')](_0x1771a4,_0x2c7887[_0x1cd404(0x2d0,'\x4c\x50\x34\x41')]))continue;const _0x26a0be=_0x431305[_0x1771a4];if(_0x26a0be!==undefined)_0x43ac25[_0x1771a4]=_0x26a0be;}return JSON[_0x1cd404(0x2e6,'\x58\x30\x76\x32')+'\x79'](_0x43ac25);}function _0x56fa21(_0x4f84ca={},_0x264ddb=process.env){const _0xc9e543=_0x1994cf,_0x58d3c4={'\x42\x72\x4c\x56\x6a':function(_0x51ee78,_0x122585){return _0x51ee78(_0x122585);},'\x47\x65\x4e\x72\x77':function(_0x3e54e0,_0x4aefcb){return _0x3e54e0||_0x4aefcb;},'\x61\x62\x78\x6c\x4d':function(_0x25cdc7,_0xbe8e3d){return _0x25cdc7!==_0xbe8e3d;},'\x78\x77\x76\x62\x63':_0xc9e543(0x216,'\x61\x52\x55\x31'),'\x6e\x78\x59\x41\x6e':_0xc9e543(0x204,'\x4e\x42\x26\x33'),'\x6b\x61\x54\x46\x79':function(_0x1a099b,_0x5d98e3){return _0x1a099b(_0x5d98e3);},'\x6f\x74\x4a\x75\x42':_0xc9e543(0x302,'\x65\x4f\x40\x24'),'\x75\x4a\x4e\x65\x43':_0xc9e543(0x1ff,'\x31\x6e\x6b\x4b')},_0x3a6d59=String(_0x264ddb[_0xc9e543(0x2b5,'\x61\x52\x55\x31')+_0xc9e543(0x2a0,'\x65\x54\x24\x31')+_0xc9e543(0x256,'\x51\x61\x73\x49')+'\x49\x4e\x47\x5f\x50\x55\x42\x4c'+_0xc9e543(0x2f9,'\x61\x52\x55\x31')]||_0x264ddb[_0xc9e543(0x2d8,'\x42\x30\x50\x5e')+_0xc9e543(0x30e,'\x73\x79\x69\x57')+_0xc9e543(0x224,'\x7a\x4c\x7a\x47')+_0xc9e543(0x2e9,'\x31\x6e\x6b\x4b')+_0xc9e543(0x1fd,'\x39\x36\x32\x79')+_0xc9e543(0x2ec,'\x2a\x36\x73\x41')]||'')[_0xc9e543(0x217,'\x65\x4f\x40\x24')](),_0x1f0098=_0x58d3c4[_0xc9e543(0x236,'\x73\x79\x69\x57')](String,_0x4f84ca[_0xc9e543(0x255,'\x57\x37\x6e\x26')+'\x65']||_0x4f84ca[_0xc9e543(0x213,'\x26\x55\x30\x40')+_0xc9e543(0x206,'\x31\x48\x48\x39')+_0xc9e543(0x245,'\x57\x37\x6e\x26')]||'')[_0xc9e543(0x30c,'\x21\x31\x46\x36')]();if(_0x58d3c4[_0xc9e543(0x25e,'\x78\x42\x24\x70')](!_0x3a6d59,!_0x1f0098))return![];try{return _0x58d3c4[_0xc9e543(0x200,'\x26\x55\x30\x40')](_0x58d3c4[_0xc9e543(0x2d2,'\x6f\x45\x67\x47')],_0x58d3c4[_0xc9e543(0x2db,'\x38\x45\x6d\x26')])?![]:_0x10a24c[_0xc9e543(0x1ef,'\x42\x74\x30\x66')](_0x58d3c4[_0xc9e543(0x287,'\x7a\x4c\x7a\x47')],Buffer[_0xc9e543(0x2d6,'\x2a\x46\x40\x53')](_0x58d3c4[_0xc9e543(0x2a9,'\x76\x6c\x5a\x57')](_0x5e1ae7,_0x4f84ca),_0x58d3c4[_0xc9e543(0x254,'\x2a\x46\x40\x53')]),_0x3a6d59,Buffer[_0xc9e543(0x2de,'\x39\x36\x32\x79')](_0x1f0098,_0x58d3c4[_0xc9e543(0x22e,'\x24\x77\x59\x68')]));}catch{return![];}}class _0x32d280{constructor({store:_0xbc9f02,logger:_0x599c9e}={}){const _0x396229=_0x1994cf;this[_0x396229(0x2e3,'\x61\x56\x61\x6f')]=_0xbc9f02,this[_0x396229(0x2b4,'\x66\x5a\x4b\x32')]=_0x599c9e||console;}['\x70\x72\x6f\x63\x65\x73\x73'](_0xb566e9){const _0x1e9338=_0x1994cf,_0x586511={'\x4c\x4b\x74\x53\x46':'\x5b\x74\x72\x61\x63\x65\x2d\x63'+_0x1e9338(0x22f,'\x61\x56\x61\x6f')+_0x1e9338(0x2ee,'\x4b\x6b\x75\x6c')+_0x1e9338(0x233,'\x58\x30\x76\x32')+_0x1e9338(0x214,'\x76\x6c\x5a\x57')+_0x1e9338(0x238,'\x6f\x45\x67\x47')+_0x1e9338(0x235,'\x73\x54\x53\x4f')+_0x1e9338(0x212,'\x47\x67\x75\x34')+_0x1e9338(0x25c,'\x40\x39\x75\x52'),'\x7a\x49\x50\x66\x44':_0x1e9338(0x313,'\x30\x53\x5a\x6c')+_0x1e9338(0x248,'\x65\x4f\x40\x24')+_0x1e9338(0x24c,'\x6e\x37\x4b\x70'),'\x7a\x52\x51\x44\x7a':_0x1e9338(0x23e,'\x7a\x4c\x7a\x47')+_0x1e9338(0x2f6,'\x58\x30\x76\x32')+'\x69\x67','\x4b\x4c\x5a\x72\x75':function(_0x4ce61a,_0x43e065){return _0x4ce61a===_0x43e065;},'\x59\x41\x59\x59\x43':function(_0x4b9cca,_0x41d6db){return _0x4b9cca===_0x41d6db;},'\x46\x42\x79\x62\x70':function(_0x5e8465,_0xfbd4f9){return _0x5e8465===_0xfbd4f9;},'\x77\x75\x59\x53\x65':function(_0x588654,_0x52a8f5){return _0x588654!==_0x52a8f5;},'\x6c\x78\x6d\x43\x49':_0x1e9338(0x203,'\x77\x40\x78\x6f'),'\x78\x77\x4e\x63\x7a':'\x48\x49\x78\x56\x48','\x46\x45\x72\x62\x78':_0x1e9338(0x219,'\x25\x57\x73\x26'),'\x48\x59\x6b\x41\x73':_0x1e9338(0x26e,'\x42\x74\x30\x66')+_0x1e9338(0x268,'\x47\x6f\x26\x37')+_0x1e9338(0x289,'\x31\x6e\x6b\x4b')+_0x1e9338(0x290,'\x73\x53\x42\x29')+_0x1e9338(0x2a7,'\x46\x54\x48\x6c')+_0x1e9338(0x2a1,'\x30\x53\x5a\x6c')+_0x1e9338(0x2bc,'\x30\x43\x40\x29'),'\x76\x46\x7a\x75\x70':function(_0x22cb83,_0x52a6aa){return _0x22cb83(_0x52a6aa);},'\x43\x78\x71\x68\x42':function(_0xe083eb,_0x512f7b){return _0xe083eb&&_0x512f7b;},'\x78\x66\x71\x53\x6f':function(_0x102d48,_0x3d8228){return _0x102d48&&_0x3d8228;},'\x76\x45\x66\x45\x43':_0x1e9338(0x23b,'\x30\x43\x40\x29')+_0x1e9338(0x306,'\x73\x53\x42\x29')+_0x1e9338(0x29b,'\x6f\x5d\x4a\x55')+_0x1e9338(0x2ff,'\x63\x42\x54\x44')+_0x1e9338(0x2b3,'\x78\x42\x24\x70')+_0x1e9338(0x26d,'\x79\x6a\x54\x56')+_0x1e9338(0x2bb,'\x4c\x50\x34\x41')+'\x20\x77\x68\x69\x6c\x65\x20\x61'+_0x1e9338(0x2f3,'\x30\x43\x40\x29')+_0x1e9338(0x1ed,'\x2a\x36\x73\x41')+_0x1e9338(0x29e,'\x42\x30\x50\x5e'),'\x54\x62\x6c\x65\x6d':_0x1e9338(0x2b6,'\x2a\x46\x40\x53')+_0x1e9338(0x2eb,'\x61\x56\x61\x6f')+_0x1e9338(0x25d,'\x6e\x37\x4b\x70'),'\x5a\x43\x79\x46\x56':_0x1e9338(0x2fc,'\x57\x37\x6e\x26'),'\x48\x7a\x50\x6a\x54':'\x66\x61\x6c\x73\x65','\x70\x65\x4c\x6f\x70':function(_0x3497fe,_0x16fc70){return _0x3497fe===_0x16fc70;},'\x58\x78\x57\x7a\x4d':'\x71\x55\x5a\x67\x76','\x46\x5a\x6e\x46\x63':_0x1e9338(0x1f2,'\x78\x42\x24\x70')+_0x1e9338(0x2c7,'\x42\x30\x50\x5e')+_0x1e9338(0x2f7,'\x61\x56\x61\x6f')+_0x1e9338(0x277,'\x42\x30\x50\x5e'),'\x68\x77\x6b\x55\x73':function(_0x58fe2c,_0x28fde0){return _0x58fe2c===_0x28fde0;},'\x5a\x59\x45\x44\x67':_0x1e9338(0x285,'\x47\x6f\x26\x37'),'\x61\x52\x75\x73\x75':_0x1e9338(0x271,'\x77\x38\x28\x6a')+'\x45\x59','\x4d\x71\x4b\x77\x46':_0x1e9338(0x270,'\x73\x54\x53\x4f'),'\x6c\x79\x6e\x77\x55':_0x1e9338(0x25f,'\x2a\x36\x73\x41')+_0x1e9338(0x29a,'\x42\x30\x50\x5e')+_0x1e9338(0x209,'\x2a\x36\x73\x41'),'\x43\x65\x6b\x6f\x4e':_0x1e9338(0x231,'\x75\x43\x24\x36')+_0x1e9338(0x226,'\x54\x6f\x43\x35')+_0x1e9338(0x220,'\x77\x40\x78\x6f')+_0x1e9338(0x2b0,'\x24\x77\x59\x68')+_0x1e9338(0x2c0,'\x51\x61\x73\x49')+_0x1e9338(0x2a5,'\x2a\x36\x73\x41')+'\x75\x73\x65\x20\x70\x69\x6e\x6e'+_0x1e9338(0x211,'\x51\x61\x73\x49')+_0x1e9338(0x1f8,'\x76\x6c\x5a\x57')+_0x1e9338(0x28b,'\x39\x36\x32\x79')+_0x1e9338(0x2e1,'\x36\x4a\x32\x36')+_0x1e9338(0x20f,'\x6f\x45\x67\x47')+_0x1e9338(0x27f,'\x29\x30\x78\x52')+_0x1e9338(0x294,'\x40\x39\x75\x52')+_0x1e9338(0x2ba,'\x61\x56\x61\x6f')+_0x1e9338(0x2ca,'\x7a\x4c\x7a\x47'),'\x61\x72\x46\x7a\x71':_0x1e9338(0x308,'\x5d\x29\x56\x7a')+_0x1e9338(0x228,'\x21\x31\x46\x36')+_0x1e9338(0x2d7,'\x75\x43\x24\x36')+_0x1e9338(0x2c2,'\x7a\x4c\x7a\x47'),'\x47\x74\x71\x6b\x4a':function(_0x1541bc,_0x23b187){return _0x1541bc+_0x23b187;},'\x52\x6c\x6b\x41\x5a':_0x1e9338(0x27d,'\x4b\x6b\x75\x6c')+_0x1e9338(0x29f,'\x78\x42\x24\x70')+_0x1e9338(0x260,'\x21\x31\x46\x36')+_0x1e9338(0x28a,'\x26\x55\x30\x40')+'\x20','\x55\x69\x6e\x6c\x77':'\x65\x6e\x61\x62\x6c\x65\x64','\x51\x72\x4a\x54\x61':_0x1e9338(0x1ec,'\x46\x43\x6c\x43')},_0x169ece=_0xb566e9&&_0xb566e9[_0x1e9338(0x21a,'\x47\x6f\x26\x37')]?_0xb566e9[_0x1e9338(0x232,'\x61\x52\x55\x31')]:_0xb566e9,_0x18f34b=_0x169ece&&(_0x169ece[_0x1e9338(0x20a,'\x6e\x37\x4b\x70')]??_0x169ece[_0x1e9338(0x2cb,'\x54\x6f\x43\x35')+'\x6c\x6c\x65\x63\x74\x69\x6f\x6e'+_0x1e9338(0x298,'\x42\x74\x30\x66')]??_0x169ece[_0x1e9338(0x2c5,'\x46\x43\x6c\x43')+_0x1e9338(0x2c4,'\x6f\x45\x67\x47')+'\x65\x63\x74\x69\x6f\x6e\x5f\x65'+'\x6e\x61\x62\x6c\x65\x64']);if(_0x586511[_0x1e9338(0x279,'\x57\x37\x6e\x26')](typeof _0x18f34b,_0x586511[_0x1e9338(0x272,'\x65\x54\x24\x31')])){if(_0x586511[_0x1e9338(0x275,'\x5a\x5d\x6e\x40')](_0x586511[_0x1e9338(0x2aa,'\x29\x30\x78\x52')],_0x586511['\x46\x45\x72\x62\x78'])){this[_0x1e9338(0x207,'\x6f\x45\x67\x47')][_0x1e9338(0x225,'\x30\x43\x40\x29')]?.(_0x586511[_0x1e9338(0x23f,'\x58\x30\x76\x32')]);const _0x467ce4={};return _0x467ce4[_0x1e9338(0x2fd,'\x61\x52\x55\x31')]=!![],_0x467ce4[_0x1e9338(0x20d,'\x4c\x50\x34\x41')]=![],_0x467ce4;}else this[_0x1e9338(0x1fc,'\x36\x4a\x32\x36')][_0x1e9338(0x215,'\x79\x6a\x54\x56')]?.(_0x586511[_0x1e9338(0x241,'\x39\x36\x32\x79')]);}let _0x258524=_0x169ece['\x70\x72\x6f\x66\x69\x6c\x65\x5f'+'\x61\x6e\x61\x6c\x79\x73\x69\x73'+_0x1e9338(0x296,'\x73\x79\x69\x57')]??_0x169ece[_0x1e9338(0x1f2,'\x78\x42\x24\x70')+_0x1e9338(0x2c7,'\x42\x30\x50\x5e')+_0x1e9338(0x2d3,'\x6d\x54\x31\x28')+_0x1e9338(0x2e0,'\x65\x4f\x40\x24')];const _0x2f153c=_0x586511[_0x1e9338(0x2f4,'\x75\x43\x24\x36')](_0x56fa21,_0x169ece),_0x815ff5=_0x18f34b===!![],_0x2ac324=_0x586511[_0x1e9338(0x297,'\x31\x48\x48\x39')](_0x258524,!![]),_0x71283b=typeof _0x169ece[_0x1e9338(0x20e,'\x42\x30\x50\x5e')+_0x1e9338(0x292,'\x46\x54\x48\x6c')]==='\x73\x74\x72\x69\x6e\x67'&&_0x169ece[_0x1e9338(0x30a,'\x6e\x37\x4b\x70')+_0x1e9338(0x229,'\x2a\x36\x73\x41')][_0x1e9338(0x251,'\x61\x52\x55\x31')]();if(_0x586511[_0x1e9338(0x269,'\x7a\x4c\x7a\x47')](!_0x2f153c,_0x815ff5)){this[_0x1e9338(0x257,'\x75\x43\x24\x36')][_0x1e9338(0x1e9,'\x75\x43\x24\x36')]?.(_0x1e9338(0x2df,'\x73\x53\x42\x29')+_0x1e9338(0x281,'\x79\x6a\x54\x56')+_0x1e9338(0x2ab,'\x54\x6f\x43\x35')+'\x20\x75\x6e\x73\x69\x67\x6e\x65'+_0x1e9338(0x26b,'\x79\x6a\x54\x56')+_0x1e9338(0x27e,'\x31\x48\x48\x39')+_0x1e9338(0x2bd,'\x21\x31\x46\x36')+_0x1e9338(0x264,'\x46\x43\x6c\x43')+_0x1e9338(0x2fe,'\x57\x37\x6e\x26')+_0x1e9338(0x2a4,'\x5a\x5d\x6e\x40')+_0x1e9338(0x2cd,'\x4e\x42\x26\x33')+_0x1e9338(0x276,'\x46\x43\x6c\x43'));const _0x48825d={};return _0x48825d[_0x1e9338(0x2a2,'\x21\x31\x46\x36')]=!![],_0x48825d[_0x1e9338(0x2e8,'\x51\x61\x73\x49')]=![],_0x48825d;}_0x586511[_0x1e9338(0x23a,'\x4b\x6b\x75\x6c')](!_0x2f153c,_0x2ac324)&&(this[_0x1e9338(0x291,'\x7a\x4c\x7a\x47')]['\x77\x61\x72\x6e']?.(_0x586511[_0x1e9338(0x23d,'\x6f\x5d\x4a\x55')]),_0x258524=![]);this['\x73\x74\x6f\x72\x65'][_0x1e9338(0x2e2,'\x7a\x4c\x7a\x47')](_0x586511[_0x1e9338(0x24d,'\x57\x37\x6e\x26')],_0x18f34b?_0x586511[_0x1e9338(0x218,'\x77\x38\x28\x6a')]:_0x586511[_0x1e9338(0x2be,'\x6e\x37\x4b\x70')]);if(_0x586511[_0x1e9338(0x286,'\x73\x54\x53\x4f')](typeof _0x258524,_0x586511[_0x1e9338(0x262,'\x26\x55\x30\x40')])){if(_0x586511[_0x1e9338(0x1f6,'\x75\x43\x24\x36')](_0x586511[_0x1e9338(0x1f7,'\x73\x53\x42\x29')],_0x586511[_0x1e9338(0x1f7,'\x73\x53\x42\x29')])){const _0x45be60={};_0x45be60[_0x1e9338(0x21d,'\x31\x6e\x6b\x4b')]=_0x586511[_0x1e9338(0x2cf,'\x7a\x4c\x7a\x47')],_0x45be60['\x6c\x69\x6d\x69\x74']=0x32;const _0xfbe24={};_0xfbe24[_0x1e9338(0x2af,'\x4e\x42\x26\x33')]=_0x586511[_0x1e9338(0x309,'\x26\x55\x30\x40')],_0xfbe24[_0x1e9338(0x2d1,'\x57\x37\x6e\x26')]=0x32;const _0x5e3121=[...this[_0x1e9338(0x2e3,'\x61\x56\x61\x6f')][_0x1e9338(0x242,'\x29\x30\x78\x52')](_0x45be60),...this[_0x1e9338(0x1ee,'\x78\x42\x24\x70')][_0x1e9338(0x2a8,'\x57\x37\x6e\x26')](_0xfbe24)];let _0x57b89c=-0x117+-0xd5d+-0x4a*-0x32;for(const _0x219a5b of _0x5e3121){const _0x2dfd02=this[_0x1e9338(0x24f,'\x54\x6f\x43\x35')](_0x219a5b),_0x1a44cf=_0x2dfd02===!![]||_0x2dfd02&&_0x2dfd02[_0x1e9338(0x300,'\x46\x43\x6c\x43')]===!![],_0x18a901=_0x586511[_0x1e9338(0x234,'\x6d\x54\x31\x28')](_0x2dfd02,!![])||_0x2dfd02&&_0x2dfd02[_0x1e9338(0x27b,'\x2a\x36\x73\x41')]===!![];_0x1a44cf&&this[_0x1e9338(0x2f5,'\x6d\x54\x31\x28')][_0x1e9338(0x310,'\x2a\x36\x73\x41')](_0x219a5b['\x69\x64']),_0x18a901&&_0x57b89c++;}return _0x57b89c;}else this[_0x1e9338(0x307,'\x4b\x6b\x75\x6c')][_0x1e9338(0x210,'\x29\x30\x78\x52')](_0x586511[_0x1e9338(0x2d9,'\x6e\x37\x4b\x70')],_0x258524?_0x1e9338(0x1f0,'\x6e\x37\x4b\x70'):_0x586511[_0x1e9338(0x2cc,'\x40\x39\x75\x52')]);}const _0x288fe7=_0x586511[_0x1e9338(0x22d,'\x42\x74\x30\x66')](typeof _0x169ece[_0x1e9338(0x2ed,'\x5a\x5d\x6e\x40')+_0x1e9338(0x305,'\x63\x42\x54\x44')+_0x1e9338(0x299,'\x51\x61\x73\x49')],_0x586511[_0x1e9338(0x2dc,'\x47\x6f\x26\x37')])&&_0x169ece[_0x1e9338(0x282,'\x29\x30\x78\x52')+_0x1e9338(0x22c,'\x65\x54\x24\x31')+_0x1e9338(0x30f,'\x6f\x45\x67\x47')][_0x1e9338(0x1f9,'\x47\x67\x75\x34')]();if(_0x586511['\x43\x78\x71\x68\x42'](_0x2f153c,_0x288fe7)&&_0x169ece[_0x1e9338(0x21c,'\x57\x37\x6e\x26')+_0x1e9338(0x1f3,'\x30\x53\x5a\x6c')+'\x5f\x6b\x65\x79']['\x69\x6e\x63\x6c\x75\x64\x65\x73'](_0x586511[_0x1e9338(0x30d,'\x24\x77\x59\x68')])){if(_0x1e9338(0x24e,'\x75\x43\x24\x36')!==_0x586511[_0x1e9338(0x28f,'\x2a\x36\x73\x41')])this[_0x1e9338(0x263,'\x24\x77\x59\x68')][_0x1e9338(0x2b1,'\x79\x6a\x54\x56')](_0x586511[_0x1e9338(0x252,'\x57\x37\x6e\x26')],_0x169ece['\x74\x72\x61\x63\x65\x5f\x68\x75'+_0x1e9338(0x27a,'\x73\x79\x69\x57')+'\x5f\x6b\x65\x79'][_0x1e9338(0x2f0,'\x73\x53\x42\x29')]());else{const _0x779367=this[_0x1e9338(0x1fe,'\x75\x43\x24\x36')](_0x8204f9),_0x2a8ff8=_0x586511[_0x1e9338(0x1fa,'\x39\x36\x32\x79')](_0x779367,!![])||_0x779367&&_0x779367[_0x1e9338(0x284,'\x31\x6e\x6b\x4b')]===!![],_0x4bfcc0=_0x586511['\x46\x42\x79\x62\x70'](_0x779367,!![])||_0x779367&&_0x779367[_0x1e9338(0x2a3,'\x42\x74\x30\x66')]===!![];_0x2a8ff8&&this[_0x1e9338(0x249,'\x6f\x5d\x4a\x55')][_0x1e9338(0x26a,'\x66\x5a\x4b\x32')](_0x256718['\x69\x64']),_0x4bfcc0&&_0x36e8f7++;}}else!_0x2f153c&&_0x288fe7&&this[_0x1e9338(0x288,'\x54\x6f\x43\x35')]['\x77\x61\x72\x6e']?.(_0x586511[_0x1e9338(0x22a,'\x6e\x37\x4b\x70')]);_0x71283b&&this[_0x1e9338(0x265,'\x39\x36\x32\x79')][_0x1e9338(0x2c8,'\x61\x56\x61\x6f')]?.(_0x586511[_0x1e9338(0x208,'\x76\x6c\x5a\x57')]);this[_0x1e9338(0x259,'\x77\x40\x78\x6f')][_0x1e9338(0x223,'\x30\x43\x40\x29')](_0x586511[_0x1e9338(0x239,'\x65\x54\x24\x31')],new Date()[_0x1e9338(0x2e4,'\x51\x61\x73\x49')+_0x1e9338(0x312,'\x4c\x50\x34\x41')]()),this[_0x1e9338(0x280,'\x61\x52\x55\x31')][_0x1e9338(0x27c,'\x78\x42\x24\x70')]?.(_0x586511[_0x1e9338(0x20c,'\x78\x42\x24\x70')](_0x586511['\x52\x6c\x6b\x41\x5a'],_0x18f34b?_0x586511[_0x1e9338(0x2da,'\x75\x43\x24\x36')]:_0x586511[_0x1e9338(0x1f5,'\x73\x53\x42\x29')]));const _0x68a4a1={};return _0x68a4a1[_0x1e9338(0x21f,'\x30\x53\x5a\x6c')]=!![],_0x68a4a1[_0x1e9338(0x2fa,'\x4e\x42\x26\x33')]=!![],_0x68a4a1;}[_0x1994cf(0x2b9,'\x46\x54\x48\x6c')+'\x70\x70\x6c\x79'](){const _0xa0cc9=_0x1994cf,_0x11c116={};_0x11c116[_0xa0cc9(0x23c,'\x26\x55\x30\x40')]=_0xa0cc9(0x28e,'\x65\x4f\x40\x24')+'\x6c\x6c\x65\x63\x74\x69\x6f\x6e'+_0xa0cc9(0x2c6,'\x77\x38\x28\x6a');const _0xd440e0=_0x11c116,_0xf8884b={};_0xf8884b[_0xa0cc9(0x2c9,'\x73\x79\x69\x57')]=_0xd440e0[_0xa0cc9(0x1e8,'\x25\x57\x73\x26')],_0xf8884b[_0xa0cc9(0x2e5,'\x7a\x4c\x7a\x47')]=0x32;const _0x44aefe={};_0x44aefe[_0xa0cc9(0x304,'\x29\x30\x78\x52')]=_0xa0cc9(0x2f1,'\x42\x74\x30\x66')+_0xa0cc9(0x26f,'\x26\x55\x30\x40')+'\x69\x67',_0x44aefe[_0xa0cc9(0x221,'\x24\x77\x59\x68')]=0x32;const _0x2f0c05=[...this[_0xa0cc9(0x227,'\x46\x43\x6c\x43')][_0xa0cc9(0x2ce,'\x21\x31\x46\x36')](_0xf8884b),...this[_0xa0cc9(0x307,'\x4b\x6b\x75\x6c')][_0xa0cc9(0x29c,'\x31\x6e\x6b\x4b')](_0x44aefe)];let _0x4ca626=0x12b*-0xd+0x1501+-0x5d2;for(const _0x3100b1 of _0x2f0c05){const _0x3f7d9e=this[_0xa0cc9(0x2ea,'\x58\x30\x76\x32')](_0x3100b1),_0x9501ad=_0x3f7d9e===!![]||_0x3f7d9e&&_0x3f7d9e[_0xa0cc9(0x1f4,'\x42\x74\x30\x66')]===!![],_0x33a30a=_0x3f7d9e===!![]||_0x3f7d9e&&_0x3f7d9e[_0xa0cc9(0x201,'\x63\x42\x54\x44')]===!![];_0x9501ad&&this[_0xa0cc9(0x263,'\x24\x77\x59\x68')][_0xa0cc9(0x266,'\x6e\x37\x4b\x70')](_0x3100b1['\x69\x64']),_0x33a30a&&_0x4ca626++;}return _0x4ca626;}}const _0x3e1e32={};_0x3e1e32[_0x1994cf(0x2c1,'\x77\x40\x78\x6f')+_0x1994cf(0x2bf,'\x73\x79\x69\x57')]=_0x32d280,_0x3e1e32[_0x1994cf(0x244,'\x4c\x50\x34\x41')+_0x1994cf(0x2ef,'\x51\x61\x73\x49')+_0x1994cf(0x21b,'\x79\x6a\x54\x56')+_0x1994cf(0x222,'\x75\x43\x24\x36')]=_0x5e1ae7,_0x3e1e32[_0x1994cf(0x22b,'\x57\x37\x6e\x26')+_0x1994cf(0x278,'\x78\x42\x24\x70')+'\x67\x53\x69\x67\x6e\x61\x74\x75'+'\x72\x65']=_0x56fa21,module[_0x1994cf(0x1f1,'\x61\x56\x61\x6f')]=_0x3e1e32;
@@ -284,6 +284,11 @@ class EvoMapProxy {
284
284
  assetSearch: (body) => this._assetSearch(body),
285
285
  assetValidate: (body) => this._proxyHttp('/a2a/validate', this._wrapA2a('validate', body)),
286
286
  assetPublish: (body) => this._assetPublish(body),
287
+ // Reuse-attribution report -> hub /a2a/memory/record. FLAT body (not an
288
+ // envelope): the record endpoint reads sender_id/signals/used_asset_ids at
289
+ // the top level, so this goes through _reportReuse (like the lenient REST
290
+ // search path), not _wrapA2a.
291
+ reportReuse: (body) => this._reportReuse(body),
287
292
  // ATP passthrough (#460 Bug 2): merchant/consumer flows that used to call
288
293
  // hub directly via src/atp/hubClient.js must route through the proxy when
289
294
  // EVOMAP_PROXY=1 so proxy sees the transaction (for audit + offline queue).
@@ -613,6 +618,51 @@ class EvoMapProxy {
613
618
  // dedup, and Retry-After-aware cooldown. Preserves the original return shape
614
619
  // and the 429 error contract so existing callers (and their "proceed on local
615
620
  // evidence" fallback) are unaffected.
621
+ // Report which fetched assets the agent reused, so the hub credits their
622
+ // authors (reuse-reward attribution). Unlike fetch/validate (strict GEP-A2A
623
+ // envelopes), the hub's /a2a/memory/record reads a FLAT top-level body
624
+ // ({sender_id, signals, status, used_asset_ids}); envelope-wrapping would bury
625
+ // those under .payload and the record would 400. The proxy reports as its OWN
626
+ // node -- the same node that fetched the asset -- so the hub's buildAttribution
627
+ // finds the matching AssetFetcher row (cross-owner + GDI verified hub-side).
628
+ // Declaration model, never server-inferred. Best-effort: a report failure
629
+ // (insufficient credits, hub error) must never break the agent's session.
630
+ // Kill-switch: EVOLVER_PROXY_REPORT_REUSE=0.
631
+ async _reportReuse(body) {
632
+ if (process.env.EVOLVER_PROXY_REPORT_REUSE === '0') {
633
+ return { ok: false, reason: 'report_reuse_disabled' };
634
+ }
635
+ const nodeId = this.store.getState('node_id');
636
+ if (!nodeId) return { ok: false, reason: 'no_node_id' };
637
+
638
+ const b = body || {};
639
+ const used = Array.isArray(b.used_asset_ids)
640
+ ? b.used_asset_ids.filter((x) => typeof x === 'string' && x.length > 0 && x.length <= 200).slice(0, 50)
641
+ : [];
642
+ if (used.length === 0) return { ok: false, reason: 'no_used_asset_ids' };
643
+
644
+ let signals = Array.isArray(b.signals)
645
+ ? b.signals.filter((s) => typeof s === 'string' && s.length > 0).slice(0, 32)
646
+ : [];
647
+ if (signals.length === 0) signals = ['reused_via_mcp'];
648
+
649
+ const flat = {
650
+ sender_id: nodeId,
651
+ signals,
652
+ status: b.status === 'failed' ? 'failed' : 'success',
653
+ used_asset_ids: used,
654
+ ...(typeof b.score === 'number' ? { score: b.score } : {}),
655
+ };
656
+
657
+ try {
658
+ const res = await this._proxyHttp('/a2a/memory/record', flat);
659
+ return { ok: true, recorded: res && res.recorded, used_asset_ids: used };
660
+ } catch (err) {
661
+ this.logger?.warn?.(`[proxy] report-reuse failed: ${err.message}`);
662
+ return { ok: false, reason: err.message, statusCode: err.statusCode };
663
+ }
664
+ }
665
+
616
666
  async _assetSearch(body) {
617
667
  const plan = this._planAssetSearchWithNode(body);
618
668
  const key = this._assetSearchCacheKey(plan);
@@ -1,52 +1 @@
1
- 'use strict';
2
-
3
- const { getProxyToken, getProxyUrl } = require('./server/settings');
4
-
5
- function isDisabled(env = process.env) {
6
- const raw = String(env.EVOMAP_PROXY_AUTO_INJECT || '').trim().toLowerCase();
7
- return raw === '0' || raw === 'false' || raw === 'off' || raw === 'none' || raw === 'no';
8
- }
9
-
10
- function injectProxyEnv(info = {}, env = process.env) {
11
- if (isDisabled(env)) {
12
- return { injected: false, reason: 'disabled' };
13
- }
14
-
15
- const useSettingsFallback = env === process.env && info.useSettings !== false;
16
- const url = String(info.url || (useSettingsFallback ? getProxyUrl() : '') || '').replace(/\/+$/, '');
17
- const token = String(info.token || (useSettingsFallback ? getProxyToken() : '') || '');
18
- if (!url || !token) {
19
- return { injected: false, reason: 'missing_proxy_settings' };
20
- }
21
-
22
- const currentBase = String(env.ANTHROPIC_BASE_URL || '').trim().replace(/\/+$/, '');
23
- if (currentBase && currentBase !== url && !env.EVOMAP_ANTHROPIC_BASE_URL) {
24
- env.EVOMAP_ANTHROPIC_BASE_URL = currentBase;
25
- }
26
- const currentAuthToken = String(env.ANTHROPIC_AUTH_TOKEN || '').trim();
27
- if (currentAuthToken && currentAuthToken !== token && !env.EVOMAP_ANTHROPIC_AUTH_TOKEN) {
28
- env.EVOMAP_ANTHROPIC_AUTH_TOKEN = currentAuthToken;
29
- }
30
-
31
- env.ANTHROPIC_BASE_URL = url;
32
- env.ANTHROPIC_AUTH_TOKEN = token;
33
- env.CUSTOM_API_KEY = token;
34
- env.EVOMAP_PROXY_URL = url;
35
- env.EVOMAP_PROXY_AUTO_INJECTED = '1';
36
-
37
- return {
38
- injected: true,
39
- url,
40
- vars: [
41
- 'ANTHROPIC_BASE_URL',
42
- 'ANTHROPIC_AUTH_TOKEN',
43
- 'CUSTOM_API_KEY',
44
- 'EVOMAP_PROXY_URL',
45
- ],
46
- };
47
- }
48
-
49
- module.exports = {
50
- injectProxyEnv,
51
- isDisabled,
52
- };
1
+ const _0x1a55b6=_0x41f8;(function(_0x489a57,_0x5306df){const _0x423563=_0x41f8,_0x4a4f3d=_0x489a57();while(!![]){try{const _0x468497=-parseInt(_0x423563(0x145,'\x58\x6f\x48\x5e'))/(-0x6*0x16d+0x2411+-0x3ee*0x7)+parseInt(_0x423563(0x17e,'\x64\x77\x28\x38'))/(-0xe6a+-0x1607+0x2473)*(parseInt(_0x423563(0x14f,'\x48\x40\x71\x33'))/(-0x16b+-0x1*-0x22c+0x1*-0xbe))+-parseInt(_0x423563(0x150,'\x49\x6f\x5d\x61'))/(-0x2cf*-0x1+0x9e6+-0xcb1)+-parseInt(_0x423563(0x193,'\x4f\x29\x67\x57'))/(-0x21*-0x7a+0x90d*-0x4+0x147f)*(-parseInt(_0x423563(0x190,'\x63\x59\x75\x4f'))/(0x1c14+0x1*0xec3+-0x71*0x61))+-parseInt(_0x423563(0x146,'\x49\x6f\x5d\x61'))/(-0x4c*0x46+0x93*0x31+-0x754)+-parseInt(_0x423563(0x18f,'\x66\x6d\x4c\x35'))/(0x61e+0xb40+-0x1156)+-parseInt(_0x423563(0x152,'\x45\x69\x33\x6b'))/(0x27b+0x114a+-0x1*0x13bc)*(-parseInt(_0x423563(0x165,'\x4d\x24\x40\x33'))/(0xb1*-0x33+0x1d*0x57+-0x2*-0xcb9));if(_0x468497===_0x5306df)break;else _0x4a4f3d['push'](_0x4a4f3d['shift']());}catch(_0x224de1){_0x4a4f3d['push'](_0x4a4f3d['shift']());}}}(_0x2b8d,-0x29835+-0x47*0x21+0x6d57c));const _0x424c51=(function(){const _0x145dd4=_0x41f8,_0x4f889f={};_0x4f889f[_0x145dd4(0x14c,'\x4b\x25\x26\x75')]=function(_0x49b257,_0x5899c5){return _0x49b257!==_0x5899c5;},_0x4f889f['\x54\x6f\x62\x57\x71']=_0x145dd4(0x17d,'\x35\x47\x28\x46'),_0x4f889f[_0x145dd4(0x183,'\x66\x36\x4f\x61')]='\x6d\x69\x73\x73\x69\x6e\x67\x5f'+_0x145dd4(0x188,'\x48\x40\x71\x33')+_0x145dd4(0x157,'\x49\x6f\x5d\x61');const _0x2478a2=_0x4f889f;let _0x23a6aa=!![];return function(_0x506545,_0x3073d2){const _0x3f21f5=_0x145dd4,_0x424373={};_0x424373[_0x3f21f5(0x180,'\x4b\x38\x47\x56')]=_0x2478a2[_0x3f21f5(0x199,'\x4e\x51\x4e\x32')];const _0x346cdc=_0x424373,_0x574a14=_0x23a6aa?function(){const _0x4e4d28=_0x3f21f5;if(_0x3073d2){if(_0x2478a2[_0x4e4d28(0x18d,'\x25\x24\x46\x68')](_0x4e4d28(0x170,'\x54\x34\x37\x5d'),_0x2478a2[_0x4e4d28(0x17b,'\x66\x36\x4f\x61')])){const _0x4efdf8=_0x3073d2['\x61\x70\x70\x6c\x79'](_0x506545,arguments);return _0x3073d2=null,_0x4efdf8;}else{const _0x19bc3c={};return _0x19bc3c[_0x4e4d28(0x142,'\x58\x6f\x48\x5e')]=![],_0x19bc3c[_0x4e4d28(0x18e,'\x78\x38\x39\x67')]=_0x346cdc[_0x4e4d28(0x178,'\x41\x76\x54\x31')],_0x19bc3c;}}}:function(){};return _0x23a6aa=![],_0x574a14;};}()),_0x1c7691=_0x424c51(this,function(){const _0x37ab83=_0x41f8,_0x2d5998={};_0x2d5998[_0x37ab83(0x1a2,'\x4d\x69\x56\x56')]=_0x37ab83(0x15c,'\x79\x61\x39\x49')+_0x37ab83(0x19e,'\x4e\x51\x4e\x32');const _0x48c736=_0x2d5998;return _0x1c7691[_0x37ab83(0x148,'\x25\x39\x2a\x53')]()[_0x37ab83(0x13e,'\x6b\x5b\x49\x6e')](_0x37ab83(0x159,'\x58\x6f\x48\x5e')+'\x2b\x29\x2b\x24')['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0x37ab83(0x198,'\x57\x6e\x6d\x54')+_0x37ab83(0x168,'\x53\x68\x77\x59')](_0x1c7691)['\x73\x65\x61\x72\x63\x68'](_0x48c736['\x46\x70\x62\x53\x43']);});_0x1c7691();'use strict';const {getProxyToken:_0x1a0107,getProxyUrl:_0x45cfee}=require(_0x1a55b6(0x179,'\x51\x76\x62\x4f')+_0x1a55b6(0x174,'\x5a\x45\x4e\x71')+'\x73');function _0x329288(_0xd909d0=process.env){const _0x4df19a=_0x1a55b6,_0x275835={'\x64\x52\x77\x7a\x54':function(_0x5a2321,_0x2b7090){return _0x5a2321(_0x2b7090);},'\x4c\x59\x68\x6d\x47':function(_0xa13615,_0x4bb105){return _0xa13615===_0x4bb105;},'\x52\x71\x7a\x6c\x4f':_0x4df19a(0x1a9,'\x69\x6d\x6c\x70'),'\x48\x55\x49\x79\x4e':'\x6f\x66\x66','\x6e\x5a\x48\x50\x4d':function(_0x46cb43,_0x342f27){return _0x46cb43===_0x342f27;},'\x71\x6c\x55\x78\x45':_0x4df19a(0x1b5,'\x53\x21\x4e\x29')},_0x2e2af0=_0x275835[_0x4df19a(0x15d,'\x45\x69\x33\x6b')](String,_0xd909d0[_0x4df19a(0x1b1,'\x78\x38\x39\x67')+_0x4df19a(0x1a0,'\x32\x41\x45\x49')+'\x4f\x5f\x49\x4e\x4a\x45\x43\x54']||'')[_0x4df19a(0x194,'\x5a\x50\x40\x4f')]()[_0x4df19a(0x195,'\x66\x75\x71\x61')+'\x61\x73\x65']();return _0x2e2af0==='\x30'||_0x275835['\x4c\x59\x68\x6d\x47'](_0x2e2af0,_0x275835[_0x4df19a(0x13d,'\x53\x76\x30\x38')])||_0x275835['\x4c\x59\x68\x6d\x47'](_0x2e2af0,_0x275835[_0x4df19a(0x176,'\x66\x75\x71\x61')])||_0x275835[_0x4df19a(0x1a1,'\x25\x24\x46\x68')](_0x2e2af0,_0x275835[_0x4df19a(0x196,'\x58\x6f\x48\x5e')])||_0x275835[_0x4df19a(0x14a,'\x66\x36\x4f\x61')](_0x2e2af0,'\x6e\x6f');}function _0x41f8(_0x448499,_0x9aa68){_0x448499=_0x448499-(0x68b*-0x4+-0x1*0x24cb+0x1c*0x24b);const _0xcfb7b5=_0x2b8d();let _0xf642cc=_0xcfb7b5[_0x448499];if(_0x41f8['\x50\x59\x58\x45\x65\x5a']===undefined){var _0x34888f=function(_0xe7c855){const _0x2fd14b='\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 _0x48f180='',_0x2e2022='',_0x1bae1d=_0x48f180+_0x34888f,_0x15207d=(''+function(){return-0x15cb+-0x1975+0x18*0x1f8;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0xa4b+-0x6b0+0x10fc);for(let _0x587f3b=0xaf3*-0x2+0x2395+-0xdaf,_0x5b080c,_0x3fbe3a,_0x422504=0x1*0x27b+-0x249d*-0x1+-0x48*0x8b;_0x3fbe3a=_0xe7c855['\x63\x68\x61\x72\x41\x74'](_0x422504++);~_0x3fbe3a&&(_0x5b080c=_0x587f3b%(0x27b*-0x1+0x1*0x27b+0x1*0x4)?_0x5b080c*(0x2*-0xfaf+-0xecb+-0x6d*-0x6d)+_0x3fbe3a:_0x3fbe3a,_0x587f3b++%(-0x191*-0x7+-0x938*-0x2+-0x1d63))?_0x48f180+=_0x15207d||_0x1bae1d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x422504+(0x9*0xc5+0x15ff+-0x1ce2))-(0xc9*0x1f+0x87b*-0x2+-0x757)!==0x3*-0x711+0x68c*-0x4+0x2f63?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x1f7e+-0x20cc+0x24d&_0x5b080c>>(-(0x1*-0x16f1+0x1*-0x47+0x173a)*_0x587f3b&0x2b*-0xd6+0xb71+0xa1*0x27)):_0x587f3b:-0x137b+-0x1312+0x8b*0x47){_0x3fbe3a=_0x2fd14b['\x69\x6e\x64\x65\x78\x4f\x66'](_0x3fbe3a);}for(let _0x36052b=-0x2*-0x1239+0x1ae4+-0x79*0x86,_0x344beb=_0x48f180['\x6c\x65\x6e\x67\x74\x68'];_0x36052b<_0x344beb;_0x36052b++){_0x2e2022+='\x25'+('\x30\x30'+_0x48f180['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x36052b)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x2471+0x116*0x1f+0x2d7))['\x73\x6c\x69\x63\x65'](-(-0xf08*0x1+-0x1593+-0x7*-0x53b));}return decodeURIComponent(_0x2e2022);};const _0x2ecf12=function(_0x4ca0e3,_0x465e52){let _0x15d38d=[],_0x32cd9f=0xcb*-0x1d+-0x5*-0x27b+-0x2*-0x54c,_0x20fb78,_0x12bf84='';_0x4ca0e3=_0x34888f(_0x4ca0e3);let _0x2f79d2;for(_0x2f79d2=-0xfe*0x25+0x3*-0x97b+0x4127;_0x2f79d2<0x2f5*0x8+-0x1ffa*0x1+-0x2*-0x4a9;_0x2f79d2++){_0x15d38d[_0x2f79d2]=_0x2f79d2;}for(_0x2f79d2=0x77f*-0x5+0x1c87+-0x23d*-0x4;_0x2f79d2<0x127*-0x1f+0x26aa+-0x1f1;_0x2f79d2++){_0x32cd9f=(_0x32cd9f+_0x15d38d[_0x2f79d2]+_0x465e52['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2f79d2%_0x465e52['\x6c\x65\x6e\x67\x74\x68']))%(-0x3*-0xa0f+-0x2213+0x1*0x4e6),_0x20fb78=_0x15d38d[_0x2f79d2],_0x15d38d[_0x2f79d2]=_0x15d38d[_0x32cd9f],_0x15d38d[_0x32cd9f]=_0x20fb78;}_0x2f79d2=-0x2660+0x2*-0x709+-0x62*-0x89,_0x32cd9f=0x1cac*-0x1+-0x1e99+0x3b45;for(let _0x3cd133=0x9e7+-0x6*0x3a6+0xbfd;_0x3cd133<_0x4ca0e3['\x6c\x65\x6e\x67\x74\x68'];_0x3cd133++){_0x2f79d2=(_0x2f79d2+(-0xb2d*0x2+-0x4*-0x573+0x8f))%(-0x1*-0xbd9+-0x1*-0x1e3b+-0x2c*0xef),_0x32cd9f=(_0x32cd9f+_0x15d38d[_0x2f79d2])%(0x14*0x1eb+0x2*0x556+-0x3008),_0x20fb78=_0x15d38d[_0x2f79d2],_0x15d38d[_0x2f79d2]=_0x15d38d[_0x32cd9f],_0x15d38d[_0x32cd9f]=_0x20fb78,_0x12bf84+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x4ca0e3['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3cd133)^_0x15d38d[(_0x15d38d[_0x2f79d2]+_0x15d38d[_0x32cd9f])%(-0x15c3+0x2f*0xab+-0x8a2)]);}return _0x12bf84;};_0x41f8['\x7a\x6a\x74\x63\x4b\x4f']=_0x2ecf12,_0x41f8['\x6e\x7a\x46\x48\x58\x51']={},_0x41f8['\x50\x59\x58\x45\x65\x5a']=!![];}const _0x26977a=_0xcfb7b5[0x18c+-0x1f57*-0x1+-0x20e3*0x1],_0x5656ed=_0x448499+_0x26977a,_0x4e2237=_0x41f8['\x6e\x7a\x46\x48\x58\x51'][_0x5656ed];if(!_0x4e2237){if(_0x41f8['\x45\x5a\x6e\x61\x6a\x67']===undefined){const _0x4a254b=function(_0x3773bc){this['\x42\x7a\x6e\x50\x78\x73']=_0x3773bc,this['\x5a\x73\x72\x53\x56\x51']=[0x3*0xabd+0x12df*-0x1+-0x5*0x2ab,0x10*0xa+-0x1856+0x17b6,-0xbd*0x3+-0x15ed+0xa*0x26a],this['\x74\x7a\x55\x68\x42\x61']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x67\x66\x6f\x66\x56\x79']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x79\x4d\x56\x78\x5a\x63']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x4a254b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x78\x4d\x61\x6a\x46\x56']=function(){const _0x25f940=new RegExp(this['\x67\x66\x6f\x66\x56\x79']+this['\x79\x4d\x56\x78\x5a\x63']),_0x5265c4=_0x25f940['\x74\x65\x73\x74'](this['\x74\x7a\x55\x68\x42\x61']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x5a\x73\x72\x53\x56\x51'][-0x1*0xfd1+-0x1c51+0x2c23*0x1]:--this['\x5a\x73\x72\x53\x56\x51'][0xcd4+0xfbe*0x2+0xb14*-0x4];return this['\x4f\x69\x47\x71\x62\x69'](_0x5265c4);},_0x4a254b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4f\x69\x47\x71\x62\x69']=function(_0x2e55e7){if(!Boolean(~_0x2e55e7))return _0x2e55e7;return this['\x6c\x4e\x48\x7a\x69\x65'](this['\x42\x7a\x6e\x50\x78\x73']);},_0x4a254b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6c\x4e\x48\x7a\x69\x65']=function(_0x2b3ae6){for(let _0x49e06b=0x16*-0x8f+0x7f0+-0x2*-0x22d,_0x52647e=this['\x5a\x73\x72\x53\x56\x51']['\x6c\x65\x6e\x67\x74\x68'];_0x49e06b<_0x52647e;_0x49e06b++){this['\x5a\x73\x72\x53\x56\x51']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x52647e=this['\x5a\x73\x72\x53\x56\x51']['\x6c\x65\x6e\x67\x74\x68'];}return _0x2b3ae6(this['\x5a\x73\x72\x53\x56\x51'][0x25dc+-0x277*0xd+0x1*-0x5d1]);},(''+function(){return 0x3*0x713+-0x78f*0x1+-0x1*0xdaa;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(-0x3a*-0x1c+0x2527*0x1+-0x1*0x2b7e)&&new _0x4a254b(_0x41f8)['\x78\x4d\x61\x6a\x46\x56'](),_0x41f8['\x45\x5a\x6e\x61\x6a\x67']=!![];}_0xf642cc=_0x41f8['\x7a\x6a\x74\x63\x4b\x4f'](_0xf642cc,_0x9aa68),_0x41f8['\x6e\x7a\x46\x48\x58\x51'][_0x5656ed]=_0xf642cc;}else _0xf642cc=_0x4e2237;return _0xf642cc;}function _0x19e13d(_0x37a328={},_0x39f480=process.env){const _0x10653f=_0x1a55b6,_0x10d512={'\x41\x6a\x58\x4e\x63':_0x10653f(0x18b,'\x47\x4e\x44\x68'),'\x48\x70\x68\x42\x72':function(_0x35c4a5,_0x17ef46){return _0x35c4a5(_0x17ef46);},'\x69\x51\x59\x4e\x54':function(_0x23e803,_0x4c5a6e){return _0x23e803===_0x4c5a6e;},'\x43\x4a\x72\x55\x71':function(_0x444c6f,_0x27816c){return _0x444c6f!==_0x27816c;},'\x6b\x51\x41\x4f\x75':function(_0x2f0e35,_0x2c49aa){return _0x2f0e35(_0x2c49aa);},'\x4b\x79\x4c\x61\x68':function(_0x333ba4){return _0x333ba4();},'\x51\x7a\x68\x41\x4e':function(_0x471df2,_0x4d4ea3){return _0x471df2||_0x4d4ea3;},'\x43\x50\x4d\x6c\x42':'\x6d\x69\x73\x73\x69\x6e\x67\x5f'+_0x10653f(0x173,'\x4f\x29\x67\x57')+'\x74\x74\x69\x6e\x67\x73','\x4f\x45\x75\x53\x62':function(_0x22be9b,_0x2c61f5){return _0x22be9b(_0x2c61f5);},'\x75\x73\x62\x4d\x62':function(_0xa16948,_0x485d62){return _0xa16948!==_0x485d62;},'\x45\x68\x4f\x4d\x44':_0x10653f(0x17c,'\x66\x6d\x4c\x35')+_0x10653f(0x161,'\x79\x61\x39\x49')+_0x10653f(0x16d,'\x6e\x38\x39\x37'),'\x72\x77\x57\x44\x75':_0x10653f(0x169,'\x79\x61\x39\x49')+'\x50\x49\x5f\x4b\x45\x59','\x69\x6c\x46\x77\x44':_0x10653f(0x144,'\x25\x39\x2a\x53')+_0x10653f(0x1aa,'\x57\x6e\x6d\x54')};if(_0x10d512[_0x10653f(0x16e,'\x66\x6d\x4c\x35')](_0x329288,_0x39f480)){const _0x4aab4={};return _0x4aab4[_0x10653f(0x15b,'\x51\x76\x62\x4f')]=![],_0x4aab4[_0x10653f(0x19b,'\x5a\x50\x40\x4f')]=_0x10653f(0x1ac,'\x4b\x38\x47\x56'),_0x4aab4;}const _0xac1aa7=_0x10d512[_0x10653f(0x182,'\x4d\x69\x56\x56')](_0x39f480,process.env)&&_0x10d512['\x43\x4a\x72\x55\x71'](_0x37a328[_0x10653f(0x172,'\x66\x36\x4f\x61')+'\x6e\x67\x73'],![]),_0x33cb07=_0x10d512[_0x10653f(0x141,'\x53\x68\x77\x59')](String,_0x37a328[_0x10653f(0x1a6,'\x61\x62\x31\x51')]||(_0xac1aa7?_0x45cfee():'')||'')[_0x10653f(0x18c,'\x6b\x37\x40\x78')](/\/+$/,''),_0x54d3d7=String(_0x37a328[_0x10653f(0x158,'\x5a\x50\x40\x4f')]||(_0xac1aa7?_0x10d512[_0x10653f(0x184,'\x32\x41\x45\x49')](_0x1a0107):'')||'');if(_0x10d512[_0x10653f(0x19f,'\x64\x77\x28\x38')](!_0x33cb07,!_0x54d3d7)){if(_0x10d512[_0x10653f(0x16c,'\x78\x38\x39\x67')](_0x10653f(0x163,'\x55\x24\x70\x40'),_0x10653f(0x186,'\x4f\x29\x67\x57'))){const _0x1b48c4={};return _0x1b48c4[_0x10653f(0x143,'\x79\x4c\x31\x35')]=![],_0x1b48c4[_0x10653f(0x160,'\x53\x68\x77\x59')]=_0x10d512[_0x10653f(0x151,'\x32\x41\x45\x49')],_0x1b48c4;}else{const _0x5b06d3={};return _0x5b06d3[_0x10653f(0x177,'\x53\x76\x30\x38')]=![],_0x5b06d3[_0x10653f(0x15e,'\x24\x5b\x74\x64')]=_0x10d512[_0x10653f(0x154,'\x53\x76\x30\x38')],_0x5b06d3;}}const _0xa02382=_0x10d512[_0x10653f(0x15f,'\x58\x6f\x6f\x28')](String,_0x39f480[_0x10653f(0x164,'\x47\x4e\x44\x68')+_0x10653f(0x14b,'\x78\x38\x39\x67')+'\x52\x4c']||'')['\x74\x72\x69\x6d']()[_0x10653f(0x1b2,'\x4a\x71\x21\x40')](/\/+$/,'');_0xa02382&&_0x10d512[_0x10653f(0x15a,'\x76\x37\x4d\x75')](_0xa02382,_0x33cb07)&&!_0x39f480[_0x10653f(0x1a5,'\x63\x59\x75\x4f')+_0x10653f(0x153,'\x63\x59\x75\x4f')+'\x5f\x42\x41\x53\x45\x5f\x55\x52'+'\x4c']&&(_0x39f480['\x45\x56\x4f\x4d\x41\x50\x5f\x41'+_0x10653f(0x1b3,'\x25\x39\x2a\x53')+_0x10653f(0x1a7,'\x5e\x69\x4f\x4a')+'\x4c']=_0xa02382);const _0x2a4888=_0x10d512[_0x10653f(0x185,'\x47\x7a\x68\x30')](String,_0x39f480[_0x10653f(0x140,'\x6c\x5b\x67\x2a')+_0x10653f(0x156,'\x66\x6d\x4c\x35')+_0x10653f(0x155,'\x4d\x69\x56\x56')]||'')[_0x10653f(0x1b6,'\x5a\x45\x4e\x71')]();_0x2a4888&&_0x10d512['\x75\x73\x62\x4d\x62'](_0x2a4888,_0x54d3d7)&&!_0x39f480[_0x10653f(0x166,'\x54\x34\x37\x5d')+_0x10653f(0x181,'\x58\x6f\x48\x5e')+_0x10653f(0x19c,'\x6e\x38\x39\x37')+'\x4b\x45\x4e']&&(_0x39f480[_0x10653f(0x1a4,'\x78\x38\x39\x67')+_0x10653f(0x1b0,'\x69\x6d\x6c\x70')+_0x10653f(0x1a3,'\x61\x62\x31\x51')+_0x10653f(0x1ae,'\x49\x6f\x5d\x61')]=_0x2a4888);_0x39f480[_0x10653f(0x16f,'\x68\x4f\x5b\x75')+_0x10653f(0x189,'\x66\x36\x4f\x61')+'\x52\x4c']=_0x33cb07,_0x39f480['\x41\x4e\x54\x48\x52\x4f\x50\x49'+_0x10653f(0x1b4,'\x5a\x50\x40\x4f')+_0x10653f(0x18a,'\x78\x38\x39\x67')]=_0x54d3d7,_0x39f480[_0x10653f(0x16a,'\x4b\x38\x47\x56')+'\x50\x49\x5f\x4b\x45\x59']=_0x54d3d7,_0x39f480[_0x10653f(0x162,'\x61\x62\x31\x51')+_0x10653f(0x1af,'\x69\x6d\x6c\x70')]=_0x33cb07,_0x39f480[_0x10653f(0x14e,'\x25\x24\x46\x68')+_0x10653f(0x1b7,'\x66\x6d\x4c\x35')+_0x10653f(0x147,'\x24\x5b\x74\x64')+'\x45\x44']='\x31';const _0x305181={};return _0x305181[_0x10653f(0x19d,'\x54\x34\x37\x5d')]=!![],_0x305181['\x75\x72\x6c']=_0x33cb07,_0x305181[_0x10653f(0x167,'\x45\x69\x33\x6b')]=[_0x10653f(0x14d,'\x58\x6f\x6f\x28')+_0x10653f(0x171,'\x73\x5a\x5d\x4e')+'\x52\x4c',_0x10d512[_0x10653f(0x13f,'\x53\x21\x4e\x29')],_0x10d512[_0x10653f(0x1ab,'\x47\x4e\x44\x68')],_0x10d512[_0x10653f(0x192,'\x69\x6d\x6c\x70')]],_0x305181;}const _0x5f511b={};function _0x2b8d(){const _0x164bb3=['\x74\x53\x6f\x7a\x57\x34\x31\x41\x75\x71','\x6f\x6d\x6f\x4e\x63\x53\x6f\x63\x57\x52\x74\x63\x4b\x43\x6f\x71\x57\x35\x61','\x77\x43\x6f\x61\x57\x52\x34\x76\x71\x47','\x57\x51\x70\x63\x52\x38\x6b\x47\x6a\x65\x68\x63\x4f\x43\x6f\x69\x57\x51\x75','\x6b\x77\x61\x78\x71\x72\x57\x6e\x74\x77\x65','\x57\x35\x4f\x76\x6e\x59\x46\x63\x52\x4c\x78\x63\x47\x6d\x6b\x42','\x57\x37\x4e\x64\x54\x38\x6f\x36\x45\x62\x6c\x64\x4f\x43\x6f\x4c\x57\x4f\x4c\x46\x64\x38\x6f\x4d\x57\x37\x47','\x57\x50\x61\x54\x57\x50\x4a\x63\x4a\x6d\x6b\x6a\x41\x38\x6f\x74\x43\x6d\x6b\x38\x57\x34\x57\x62\x57\x52\x65','\x57\x35\x7a\x56\x64\x76\x7a\x30\x57\x4f\x62\x4c\x57\x37\x65','\x57\x36\x53\x53\x6b\x58\x37\x63\x4e\x77\x5a\x63\x53\x43\x6b\x53','\x41\x53\x6b\x79\x57\x36\x74\x64\x53\x64\x46\x63\x52\x61','\x57\x34\x33\x63\x51\x59\x48\x36\x57\x51\x30','\x45\x73\x66\x6c\x64\x65\x78\x63\x48\x6d\x6f\x66\x64\x57','\x6d\x43\x6f\x73\x57\x35\x79\x54\x57\x52\x43','\x57\x34\x50\x76\x46\x53\x6b\x2f\x6e\x59\x57\x31\x6a\x71','\x57\x34\x74\x64\x52\x53\x6b\x77\x57\x35\x56\x64\x4a\x71\x42\x63\x55\x38\x6f\x50','\x41\x43\x6b\x6f\x57\x34\x74\x64\x4b\x5a\x4e\x64\x51\x63\x61','\x57\x50\x6d\x4b\x57\x50\x4e\x63\x4a\x6d\x6b\x70\x41\x38\x6b\x70\x76\x6d\x6b\x30\x57\x35\x61\x4d\x57\x52\x4f\x6c','\x57\x51\x35\x61\x6e\x43\x6b\x38\x57\x34\x38','\x6f\x6d\x6f\x5a\x61\x77\x42\x64\x53\x53\x6f\x75\x57\x50\x70\x64\x4a\x38\x6b\x52\x57\x37\x66\x4c\x77\x48\x46\x64\x4b\x57','\x68\x72\x37\x63\x50\x38\x6b\x43\x57\x37\x6d\x49\x6b\x71\x61','\x65\x53\x6b\x32\x76\x76\x31\x6e','\x67\x38\x6f\x42\x57\x4f\x65\x76','\x6a\x72\x70\x64\x48\x38\x6f\x55\x57\x51\x6c\x63\x52\x6d\x6b\x71\x77\x57','\x57\x35\x76\x47\x57\x34\x4e\x64\x4b\x53\x6f\x42\x69\x61','\x72\x6d\x6f\x5a\x69\x53\x6b\x7a\x69\x57','\x57\x36\x6c\x64\x51\x43\x6f\x49\x42\x57\x4e\x64\x56\x6d\x6b\x67\x57\x36\x47','\x6d\x6d\x6b\x2f\x57\x4f\x79\x6a\x74\x47','\x57\x50\x74\x64\x53\x4a\x56\x63\x49\x43\x6f\x6c\x6a\x43\x6b\x61\x57\x50\x65','\x57\x50\x33\x64\x4c\x62\x46\x64\x51\x53\x6b\x79\x57\x37\x35\x41\x6a\x71','\x42\x43\x6b\x72\x72\x73\x5a\x63\x4b\x47','\x57\x36\x54\x76\x6a\x77\x54\x72\x57\x51\x53','\x57\x34\x72\x45\x78\x38\x6b\x4b\x62\x57','\x71\x6d\x6f\x30\x57\x50\x34\x50\x77\x65\x47','\x57\x37\x42\x63\x4f\x33\x37\x63\x4b\x43\x6f\x4e\x57\x50\x38\x55\x77\x61','\x72\x53\x6b\x49\x75\x33\x76\x72\x57\x37\x34\x51\x7a\x71','\x71\x6d\x6b\x56\x57\x34\x33\x64\x56\x4a\x30','\x57\x34\x6c\x64\x49\x38\x6f\x70\x6b\x6d\x6f\x63\x57\x34\x76\x52\x45\x57','\x72\x6d\x6f\x36\x57\x34\x64\x64\x53\x78\x31\x69\x57\x50\x70\x63\x4e\x61','\x74\x6d\x6b\x63\x68\x75\x2f\x64\x52\x57\x6d\x46\x6c\x71','\x46\x38\x6b\x49\x71\x63\x75','\x72\x53\x6f\x2b\x57\x4f\x30','\x57\x37\x42\x63\x51\x77\x5a\x63\x4b\x6d\x6f\x38\x57\x50\x4f\x55\x74\x71','\x57\x34\x5a\x64\x47\x43\x6f\x36\x71\x53\x6b\x52\x44\x31\x39\x67','\x57\x37\x66\x43\x57\x35\x46\x63\x4e\x61\x4c\x59\x57\x50\x4a\x64\x56\x57','\x45\x74\x72\x37\x67\x67\x43','\x72\x6d\x6b\x51\x57\x52\x56\x63\x52\x57','\x6c\x4a\x5a\x64\x52\x53\x6f\x35\x57\x4f\x71','\x78\x38\x6b\x36\x6d\x38\x6b\x53\x79\x53\x6b\x77\x57\x37\x5a\x64\x51\x71','\x73\x38\x6b\x7a\x63\x30\x37\x64\x52\x71','\x76\x58\x78\x63\x4d\x43\x6f\x69\x57\x51\x61\x36\x6e\x38\x6f\x2b','\x57\x35\x42\x63\x47\x47\x76\x35\x57\x4f\x75\x34\x57\x35\x44\x63','\x57\x34\x54\x53\x42\x4d\x33\x63\x4f\x38\x6f\x42\x6a\x53\x6b\x33','\x57\x37\x5a\x63\x4f\x73\x34\x74\x57\x37\x74\x63\x53\x53\x6f\x52\x57\x37\x79','\x57\x37\x79\x54\x65\x47\x2f\x63\x4a\x68\x68\x63\x4a\x38\x6b\x35','\x57\x34\x6c\x64\x51\x43\x6b\x6a\x57\x36\x4a\x64\x51\x61','\x6f\x53\x6b\x59\x7a\x33\x7a\x6e\x57\x37\x57\x62\x74\x61','\x77\x38\x6b\x53\x44\x65\x78\x63\x50\x47','\x57\x35\x70\x63\x53\x59\x6c\x63\x49\x43\x6f\x41\x6a\x38\x6b\x61\x57\x4f\x43','\x62\x43\x6b\x55\x45\x6d\x6f\x6e\x46\x53\x6f\x53\x57\x34\x54\x43\x6d\x4b\x35\x78\x66\x47','\x57\x37\x46\x63\x4e\x47\x6a\x39\x57\x50\x65','\x6a\x57\x6c\x64\x4b\x53\x6f\x5a\x57\x51\x74\x63\x51\x38\x6b\x46\x72\x47','\x57\x52\x47\x56\x77\x43\x6b\x67\x62\x71','\x77\x68\x4f\x4d\x42\x75\x2f\x63\x49\x4a\x52\x63\x4c\x43\x6f\x7a\x57\x50\x33\x63\x52\x72\x4b','\x6f\x53\x6f\x31\x61\x4d\x2f\x64\x54\x53\x6f\x79\x57\x36\x4e\x63\x56\x53\x6b\x45\x57\x36\x6e\x53\x75\x57','\x57\x36\x74\x64\x52\x53\x6f\x39\x76\x38\x6b\x31','\x57\x4f\x74\x63\x4c\x43\x6b\x63\x65\x32\x33\x63\x48\x43\x6f\x4b\x57\x4f\x69','\x70\x43\x6f\x62\x57\x50\x30\x76\x57\x52\x65','\x57\x36\x6c\x63\x48\x61\x54\x4a\x57\x52\x4f','\x57\x51\x7a\x50\x6e\x6d\x6b\x58\x57\x36\x75','\x57\x36\x4e\x64\x50\x6d\x6b\x72\x57\x50\x37\x64\x4d\x61','\x57\x34\x4c\x70\x42\x4c\x68\x63\x49\x71','\x43\x74\x6c\x63\x51\x38\x6f\x4d\x57\x4f\x65\x6c\x67\x57','\x6b\x53\x6b\x7a\x57\x34\x4e\x64\x56\x58\x4a\x64\x50\x73\x56\x64\x4a\x57','\x57\x36\x64\x63\x52\x49\x6a\x52\x57\x52\x6d\x6a\x57\x37\x58\x2b','\x44\x74\x76\x6d\x61\x57','\x57\x36\x46\x64\x52\x6d\x6f\x4f\x61\x43\x6f\x59\x57\x36\x7a\x45\x76\x47','\x6a\x43\x6f\x46\x57\x35\x56\x64\x4b\x64\x72\x49\x57\x34\x38','\x57\x36\x37\x64\x51\x53\x6b\x78\x57\x34\x2f\x64\x4e\x47','\x73\x62\x54\x4f\x70\x4e\x4e\x63\x52\x57','\x75\x4e\x33\x63\x54\x43\x6b\x70\x57\x34\x37\x64\x4c\x38\x6f\x39\x44\x53\x6b\x65\x57\x34\x79\x2b\x57\x50\x6d\x50','\x79\x68\x52\x63\x51\x53\x6b\x32\x57\x36\x30\x43\x6a\x5a\x53','\x6f\x53\x6b\x58\x6d\x66\x42\x64\x54\x47\x65\x34','\x57\x34\x2f\x64\x56\x43\x6b\x79\x57\x35\x33\x64\x4d\x61','\x57\x4f\x4b\x4e\x6f\x73\x64\x64\x4f\x38\x6b\x30\x6f\x43\x6b\x36\x57\x34\x58\x37\x57\x36\x72\x79','\x72\x6d\x6f\x55\x69\x6d\x6b\x72','\x57\x37\x37\x64\x4b\x38\x6b\x6d\x57\x37\x37\x64\x4b\x75\x66\x58\x57\x36\x30','\x57\x52\x56\x63\x52\x43\x6b\x46\x6f\x77\x43','\x57\x50\x57\x41\x71\x53\x6f\x65\x46\x4c\x4a\x63\x4f\x53\x6f\x62\x57\x50\x75\x62\x42\x78\x70\x64\x56\x58\x38','\x6a\x48\x31\x50\x65\x32\x72\x4f\x79\x6d\x6f\x2b','\x57\x50\x54\x54\x57\x52\x70\x64\x47\x43\x6b\x31','\x57\x51\x4f\x61\x61\x77\x62\x56\x57\x51\x54\x48\x57\x35\x30','\x71\x53\x6f\x35\x6b\x6d\x6b\x70\x69\x53\x6b\x57','\x76\x6d\x6b\x47\x57\x51\x56\x63\x54\x73\x64\x64\x55\x64\x44\x78','\x79\x6d\x6b\x36\x6f\x67\x46\x64\x4a\x73\x43\x4c\x63\x61','\x57\x37\x65\x58\x57\x37\x70\x63\x52\x61','\x70\x64\x6a\x2f\x68\x74\x69','\x57\x52\x39\x46\x69\x6d\x6b\x6a\x57\x35\x69\x48\x57\x34\x70\x64\x4c\x61','\x57\x36\x2f\x64\x4f\x53\x6b\x72\x57\x34\x42\x64\x47\x71','\x65\x53\x6f\x47\x57\x51\x79\x69\x57\x51\x79','\x78\x6d\x6b\x31\x73\x77\x58\x79\x57\x37\x65\x48\x45\x47','\x46\x59\x48\x67\x61\x66\x46\x63\x4b\x43\x6f\x66\x67\x57','\x66\x48\x5a\x63\x4f\x6d\x6b\x64\x57\x37\x30\x49\x70\x57\x69','\x44\x53\x6b\x67\x43\x61','\x57\x51\x4f\x68\x57\x37\x2f\x63\x50\x32\x57\x30\x57\x4f\x33\x63\x4b\x71','\x6a\x4e\x52\x64\x4f\x53\x6b\x35\x57\x34\x62\x68\x75\x6d\x6f\x62\x41\x57\x2f\x64\x54\x43\x6b\x58\x57\x51\x69','\x57\x34\x64\x64\x53\x6d\x6b\x59\x57\x35\x4e\x64\x55\x71','\x66\x5a\x31\x46\x6f\x75\x39\x70\x72\x38\x6f\x72','\x57\x37\x68\x64\x53\x53\x6f\x6d\x6a\x6d\x6f\x4c','\x57\x36\x56\x64\x56\x43\x6f\x41\x44\x38\x6b\x67\x76\x4d\x76\x4a','\x6e\x38\x6f\x7a\x57\x51\x78\x63\x47\x67\x64\x64\x51\x53\x6f\x7a\x57\x4f\x7a\x49\x57\x51\x33\x64\x49\x5a\x79','\x57\x36\x50\x72\x57\x36\x34','\x57\x37\x74\x64\x4e\x53\x6b\x67\x57\x37\x70\x64\x47\x32\x70\x63\x50\x38\x6b\x4d','\x57\x36\x4a\x64\x48\x43\x6b\x77\x57\x37\x4a\x64\x4b\x32\x42\x63\x56\x6d\x6b\x50','\x46\x59\x48\x67\x61\x66\x46\x63\x4b\x43\x6f\x66\x63\x47','\x57\x50\x44\x35\x57\x4f\x4b\x75\x57\x37\x38\x69\x57\x36\x43','\x57\x35\x65\x78\x6d\x64\x4a\x63\x4f\x66\x78\x63\x4c\x53\x6b\x69','\x43\x38\x6f\x64\x63\x6d\x6b\x50\x67\x43\x6b\x77\x57\x34\x35\x65','\x7a\x43\x6f\x45\x57\x36\x58\x59','\x57\x51\x46\x63\x4f\x63\x69\x6b','\x6e\x61\x70\x64\x4e\x53\x6f\x49\x57\x51\x4e\x63\x50\x43\x6b\x41\x77\x57','\x61\x43\x6b\x54\x44\x33\x39\x48','\x57\x52\x6d\x6a\x57\x34\x37\x63\x54\x64\x50\x7a'];_0x2b8d=function(){return _0x164bb3;};return _0x2b8d();}_0x5f511b[_0x1a55b6(0x175,'\x25\x39\x2a\x53')+_0x1a55b6(0x149,'\x55\x24\x70\x40')]=_0x19e13d,_0x5f511b['\x69\x73\x44\x69\x73\x61\x62\x6c'+'\x65\x64']=_0x329288,module[_0x1a55b6(0x187,'\x73\x5a\x5d\x4e')]=_0x5f511b;
@@ -362,6 +362,11 @@ class AuthError extends Error {
362
362
  }
363
363
  }
364
364
 
365
+ function parseNodeSecretVersion(value) {
366
+ const n = Number(value);
367
+ return Number.isInteger(n) && n > 0 ? n : null;
368
+ }
369
+
365
370
  class LifecycleManager {
366
371
  constructor({ hubUrl, store, logger, getTaskMeta } = {}) {
367
372
  this.hubUrl = (hubUrl || process.env.A2A_HUB_URL || '').replace(/\/+$/, '');
@@ -433,6 +438,24 @@ class LifecycleManager {
433
438
  return this._resolveNodeSecret();
434
439
  }
435
440
 
441
+ get nodeSecretVersion() {
442
+ const storeVersion = parseNodeSecretVersion(this.store.getState('node_secret_version'));
443
+ const storeSecret = this.store.getState('node_secret') || null;
444
+ const storeSource = this.store.getState('node_secret_source') || null;
445
+ const envSecret = this._suppressEnvSecret
446
+ ? null
447
+ : ((process.env.A2A_NODE_SECRET || process.env.EVOMAP_NODE_SECRET || '').trim() || null);
448
+ const envVersion = parseNodeSecretVersion(process.env.A2A_NODE_SECRET_VERSION || process.env.EVOMAP_NODE_SECRET_VERSION);
449
+ const validStoreSecret = typeof storeSecret === 'string' && /^[a-f0-9]{64}$/i.test(storeSecret);
450
+ if (this._suppressEnvSecret) return validStoreSecret ? storeVersion : null;
451
+ if (storeSource === 'hub_rotate' && validStoreSecret) return storeVersion;
452
+ if (envSecret) {
453
+ if (envVersion) return envVersion;
454
+ return storeSecret === envSecret ? storeVersion : null;
455
+ }
456
+ return validStoreSecret ? storeVersion : null;
457
+ }
458
+
436
459
  /**
437
460
  * Resolve the active node_secret with conflict reconciliation between the
438
461
  * persistent MailboxStore and `process.env.A2A_NODE_SECRET`.
@@ -466,7 +489,7 @@ class LifecycleManager {
466
489
  _resolveNodeSecret() {
467
490
  const envSecret = this._suppressEnvSecret
468
491
  ? null
469
- : ((process.env.A2A_NODE_SECRET || '').trim() || null);
492
+ : ((process.env.A2A_NODE_SECRET || process.env.EVOMAP_NODE_SECRET || '').trim() || null);
470
493
  const storeSecret = this.store.getState('node_secret') || null;
471
494
  const storeSource = this.store.getState('node_secret_source') || null;
472
495
  const valid = (s) => typeof s === 'string' && /^[a-f0-9]{64}$/i.test(s);
@@ -489,7 +512,9 @@ class LifecycleManager {
489
512
  return storeSecret;
490
513
  }
491
514
  if (valid(envSecret)) {
515
+ const envVersion = parseNodeSecretVersion(process.env.A2A_NODE_SECRET_VERSION || process.env.EVOMAP_NODE_SECRET_VERSION);
492
516
  this.store.setState('node_secret', envSecret);
517
+ this.store.setState('node_secret_version', envVersion ? String(envVersion) : '');
493
518
  // Mark the new store value as env-seeded so a future rotation can
494
519
  // distinguish "operator pasted this in" from "hub returned this".
495
520
  this.store.setState('node_secret_source', 'env_seed');
@@ -513,6 +538,8 @@ class LifecycleManager {
513
538
  const headers = { 'Content-Type': 'application/json' };
514
539
  const secret = this.nodeSecret;
515
540
  if (secret) headers['Authorization'] = 'Bearer ' + secret;
541
+ const secretVersion = this.nodeSecretVersion;
542
+ if (secretVersion) headers['X-EvoMap-Node-Secret-Version'] = String(secretVersion);
516
543
  headers['x-correlation-id'] = crypto.randomUUID();
517
544
  return headers;
518
545
  }
@@ -600,6 +627,7 @@ class LifecycleManager {
600
627
  }
601
628
 
602
629
  const secret = data?.payload?.node_secret || data?.node_secret || null;
630
+ const secretVersion = parseNodeSecretVersion(data?.payload?.node_secret_version || data?.node_secret_version);
603
631
  if (secret && /^[a-f0-9]{64}$/i.test(secret)) {
604
632
  this.store.setState('node_secret', secret);
605
633
  // Tag the store entry so the next process that boots into a stale
@@ -618,6 +646,11 @@ class LifecycleManager {
618
646
  this._suppressEnvSecret = true;
619
647
  this.logger.log('[lifecycle] new node_secret stored from hello response');
620
648
  }
649
+ if (secretVersion) {
650
+ this.store.setState('node_secret_version', String(secretVersion));
651
+ } else {
652
+ this.store.setState('node_secret_version', '');
653
+ }
621
654
 
622
655
  this.store.setState('node_id', nodeId);
623
656
  // Unify proxy node_id with the legacy GEP file. Without this, the
@@ -770,6 +803,7 @@ class LifecycleManager {
770
803
  _dropLocalSecret(reason) {
771
804
  this.logger.warn(`[lifecycle] dropping cached node_secret (reason=${reason}); next hello will run unauthenticated`);
772
805
  try { this.store.setState('node_secret', ''); } catch { /* best-effort */ }
806
+ try { this.store.setState('node_secret_version', ''); } catch { /* best-effort */ }
773
807
  // Clear the source tag too -- nothing is stored, nothing to attribute.
774
808
  try { this.store.setState('node_secret_source', ''); } catch { /* best-effort */ }
775
809
  try { this.store.setState('node_secret_env_suppressed', 'true'); } catch { /* best-effort */ }
@@ -824,6 +858,7 @@ class LifecycleManager {
824
858
  const endpoint = `${this.hubUrl}/a2a/heartbeat`;
825
859
  const taskMeta = typeof this.getTaskMeta === 'function' ? this.getTaskMeta() : {};
826
860
  const fp = _getEnvFingerprint();
861
+ const secretVersion = this.nodeSecretVersion;
827
862
  const body = {
828
863
  node_id: this.nodeId,
829
864
  sender_id: this.nodeId,
@@ -837,6 +872,10 @@ class LifecycleManager {
837
872
  ...taskMeta,
838
873
  },
839
874
  };
875
+ if (secretVersion) {
876
+ body.node_secret_version = secretVersion;
877
+ body.meta.node_secret_version = secretVersion;
878
+ }
840
879
 
841
880
  try {
842
881
  const cfg = require('../../config');
@@ -80,6 +80,16 @@ function buildRoutes(store, proxyHandlers, taskMonitor, extensions) {
80
80
  return { body: result };
81
81
  },
82
82
 
83
+ // Reuse-attribution report: the agent declares which fetched assets it
84
+ // actually reused. Forwarded flat (not enveloped) to the hub's
85
+ // /a2a/memory/record; the proxy stamps its own node as sender_id and the
86
+ // hub cross-verifies against AssetFetcher. Best-effort — never throws on a
87
+ // hub error so a report failure can't break the calling agent.
88
+ 'POST /asset/report-reuse': async ({ body }) => {
89
+ const result = await proxyHandlers.reportReuse(body || {});
90
+ return { body: result };
91
+ },
92
+
83
93
  'POST /asset/search': async ({ body }) => {
84
94
  const result = await proxyHandlers.assetSearch(body);
85
95
  return { body: result };
@@ -66,7 +66,7 @@ class OutboundSync {
66
66
  if (m.type !== 'proxy_trace') continue;
67
67
  if (!traceUploadEnabled) {
68
68
  rejectedTraceUploads.push({ id: m.id, error: 'proxy trace upload disabled' });
69
- } else if (!isProxyTraceUploadPayloadAllowed(m.payload, process.env)) {
69
+ } else if (!isProxyTraceUploadPayloadAllowed(m.payload, process.env, { store: this.store })) {
70
70
  rejectedTraceUploads.push({ id: m.id, error: 'proxy trace payload rejected' });
71
71
  }
72
72
  }