@evomap/evolver 1.89.3 → 1.89.4
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/.cursor/BUGBOT.md +182 -0
- package/.env.example +68 -0
- package/.git-commit-guard-token +1 -0
- package/.github/CODEOWNERS +63 -0
- package/.github/ISSUE_TEMPLATE/good_first_issue.md +23 -0
- package/.github/pull_request_template.md +45 -0
- package/.github/workflows/test.yml +75 -0
- package/CHANGELOG.md +1237 -0
- package/README.md +86 -528
- package/README.public.md +569 -0
- package/SECURITY.md +108 -0
- package/assets/gep/events.jsonl +3 -0
- package/examples/atp-consumer-quickstart.md +100 -0
- package/examples/hello-world.md +38 -0
- package/index.js +30 -1
- package/package.json +6 -17
- package/proxy-package.json +39 -0
- package/public.manifest.json +143 -0
- package/src/config.js +23 -0
- package/src/evolve/guards.js +721 -1
- package/src/evolve/pipeline/collect.js +1283 -1
- package/src/evolve/pipeline/dispatch.js +421 -1
- package/src/evolve/pipeline/enrich.js +440 -1
- package/src/evolve/pipeline/hub.js +319 -1
- package/src/evolve/pipeline/select.js +274 -1
- package/src/evolve/pipeline/signals.js +206 -1
- package/src/evolve/utils.js +264 -1
- package/src/evolve.js +350 -1
- package/src/experiment/agentRunner.js +229 -0
- package/src/experiment/cli.js +159 -0
- package/src/experiment/comparison.js +233 -0
- package/src/experiment/metrics.js +75 -0
- package/src/forceUpdate.js +147 -59
- package/src/gep/a2aProtocol.js +4455 -1
- package/src/gep/antiAbuseTelemetry.js +233 -0
- package/src/gep/autoDistillConv.js +205 -1
- package/src/gep/autoDistillLlm.js +315 -1
- package/src/gep/candidateEval.js +92 -1
- package/src/gep/candidates.js +198 -1
- package/src/gep/contentHash.js +30 -1
- package/src/gep/conversationSniffer.js +266 -1
- package/src/gep/crypto.js +89 -1
- package/src/gep/curriculum.js +163 -1
- package/src/gep/deviceId.js +218 -1
- package/src/gep/envFingerprint.js +118 -1
- package/src/gep/epigenetics.js +31 -1
- package/src/gep/execBridge.js +711 -1
- package/src/gep/explore.js +289 -1
- package/src/gep/hash.js +15 -1
- package/src/gep/hubFetch.js +359 -1
- package/src/gep/hubReview.js +207 -1
- package/src/gep/hubSearch.js +526 -1
- package/src/gep/hubVerify.js +306 -1
- package/src/gep/learningSignals.js +89 -1
- package/src/gep/memoryGraph.js +1374 -1
- package/src/gep/memoryGraphAdapter.js +203 -1
- package/src/gep/mutation.js +203 -1
- package/src/gep/narrativeMemory.js +108 -1
- package/src/gep/openPRRegistry.js +205 -1
- package/src/gep/personality.js +423 -1
- package/src/gep/policyCheck.js +599 -1
- package/src/gep/prompt.js +836 -1
- package/src/gep/recallInject.js +409 -1
- package/src/gep/recallVerifier.js +318 -1
- package/src/gep/reflection.js +177 -1
- package/src/gep/sanitize.js +9 -0
- package/src/gep/selector.js +602 -1
- package/src/gep/skillDistiller.js +1294 -1
- package/src/gep/solidify.js +1699 -1
- package/src/gep/strategy.js +136 -1
- package/src/gep/tokenSavings.js +88 -1
- package/src/gep/validator/sandboxExecutor.js +29 -1
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +99 -1
- package/src/proxy/index.js +10 -1
- package/src/proxy/inject.js +52 -1
- package/src/proxy/lifecycle/manager.js +19 -0
- package/src/proxy/mailbox/store.js +2 -1
- package/src/proxy/router/messages_route.js +5 -2
- package/src/proxy/trace/extractor.js +646 -1
- package/src/proxy/trace/usage.js +105 -1
- package/CONTRIBUTING.md +0 -19
- package/assets/cover.png +0 -0
- package/scripts/a2a_export.js +0 -63
- package/scripts/a2a_ingest.js +0 -79
- package/scripts/a2a_promote.js +0 -118
- package/scripts/analyze_by_skill.js +0 -121
- package/scripts/build_binaries.js +0 -479
- package/scripts/check-changelog.js +0 -166
- package/scripts/extract_log.js +0 -85
- package/scripts/generate_history.js +0 -75
- package/scripts/gep_append_event.js +0 -96
- package/scripts/gep_personality_report.js +0 -234
- package/scripts/human_report.js +0 -147
- package/scripts/recall-verify-report.js +0 -234
- package/scripts/recover_loop.js +0 -61
- package/scripts/refresh_stars_badge.js +0 -168
- package/scripts/seed-merchants.js +0 -91
- package/scripts/suggest_version.js +0 -89
- package/scripts/validate-modules.js +0 -38
- package/scripts/validate-suite.js +0 -78
- package/skills/index.json +0 -14
- /package/assets/gep/{genes.seed.json → genes.json} +0 -0
- /package/{skills → bundled-skills}/_meta/SKILL.md +0 -0
package/src/gep/hubVerify.js
CHANGED
|
@@ -1 +1,306 @@
|
|
|
1
|
-
const _0x269c9f=_0x5955;(function(_0x478bf3,_0x3d4757){const _0x3017b9=_0x5955,_0x50253c=_0x478bf3();while(!![]){try{const _0x5648bb=parseInt(_0x3017b9(0xc7,'\x44\x4e\x69\x6b'))/(-0x24b4+0x5b*0x13+0x1df4)+-parseInt(_0x3017b9(0x24e,'\x40\x6c\x4a\x6c'))/(0x11*0x33+0x2b*-0x4f+0x9e4)*(-parseInt(_0x3017b9(0x1e6,'\x2a\x76\x4a\x76'))/(-0x5*0xba+0x13e2+-0x103d))+-parseInt(_0x3017b9(0x1f1,'\x40\x5d\x56\x4c'))/(0x65*0x31+0x2298+-0x35e9)*(parseInt(_0x3017b9(0xca,'\x4f\x45\x33\x7a'))/(-0x14ba+-0x75b*-0x3+0x1*-0x152))+-parseInt(_0x3017b9(0x216,'\x25\x72\x62\x76'))/(0x1d72+0x18a3+-0x7*0x7b9)*(-parseInt(_0x3017b9(0xd0,'\x40\x5d\x56\x4c'))/(-0x749+0xe*0x20b+0x442*-0x5))+-parseInt(_0x3017b9(0x18b,'\x4a\x52\x69\x45'))/(-0x1a*-0x47+0x121b+-0x1949)+-parseInt(_0x3017b9(0x105,'\x64\x50\x61\x4a'))/(0x2*-0x9e+-0x7ff*0x2+0x1143)*(-parseInt(_0x3017b9(0xde,'\x32\x45\x4c\x30'))/(0x1f62+-0x68e+0x14e*-0x13))+-parseInt(_0x3017b9(0x236,'\x47\x63\x73\x4c'))/(-0x1*0x13ed+0x1*0xa4b+0x9ad*0x1)*(parseInt(_0x3017b9(0x285,'\x25\x61\x67\x40'))/(0xe2*-0x1e+-0x3*-0xa6b+-0x193*0x3));if(_0x5648bb===_0x3d4757)break;else _0x50253c['push'](_0x50253c['shift']());}catch(_0x330772){_0x50253c['push'](_0x50253c['shift']());}}}(_0x346d,-0x1e1*-0x12f+-0x73b22+-0xfa1*-0xcc));const _0x41e111=(function(){const _0x45ee29=_0x5955,_0x2157c3={'\x4b\x70\x66\x4b\x62':_0x45ee29(0x158,'\x4a\x52\x69\x45'),'\x6f\x6d\x66\x61\x66':'\x66\x55\x43\x59\x4a','\x72\x45\x4b\x77\x4f':_0x45ee29(0xcf,'\x2a\x76\x4a\x76'),'\x51\x58\x69\x70\x51':function(_0x26ac98){return _0x26ac98();},'\x68\x56\x47\x6a\x5a':function(_0x16ec9c,_0x56e8df,_0x25c253){return _0x16ec9c(_0x56e8df,_0x25c253);},'\x55\x4e\x54\x51\x50':function(_0x511e53){return _0x511e53();},'\x4c\x69\x4c\x4b\x74':_0x45ee29(0x1d8,'\x33\x46\x65\x4e'),'\x71\x73\x5a\x5a\x76':function(_0x4e14b4,_0x3d2d70){return _0x4e14b4>=_0x3d2d70;},'\x65\x61\x41\x4f\x6e':function(_0x1e8d12,_0xfec273){return _0x1e8d12+_0xfec273;},'\x54\x4a\x6e\x78\x59':'\x48\x54\x54\x50\x20','\x71\x56\x65\x56\x47':_0x45ee29(0x19d,'\x47\x63\x73\x4c'),'\x48\x48\x6a\x6b\x52':_0x45ee29(0x215,'\x25\x72\x62\x76')};let _0x2b85c2=!![];return function(_0x23985a,_0x222584){const _0x40588b=_0x45ee29,_0x6586b4={'\x6a\x71\x41\x64\x70':function(_0x2766c9){const _0x5145a4=_0x5955;return _0x2157c3[_0x5145a4(0x20c,'\x58\x52\x66\x51')](_0x2766c9);},'\x62\x5a\x6b\x6b\x75':function(_0x5d3b28,_0x1ec7a6,_0xe9a638){const _0x52b138=_0x5955;return _0x2157c3[_0x52b138(0x13c,'\x69\x66\x30\x32')](_0x5d3b28,_0x1ec7a6,_0xe9a638);},'\x4a\x68\x6d\x74\x4e':function(_0x5229f6){const _0x584a30=_0x5955;return _0x2157c3[_0x584a30(0x123,'\x4f\x45\x33\x7a')](_0x5229f6);},'\x56\x54\x47\x70\x6c':_0x2157c3[_0x40588b(0x28a,'\x71\x36\x6b\x6f')],'\x66\x49\x4c\x77\x57':function(_0x18a8fe,_0x941f4e){const _0xd50e56=_0x40588b;return _0x2157c3[_0xd50e56(0x134,'\x69\x6c\x63\x69')](_0x18a8fe,_0x941f4e);},'\x44\x65\x6b\x55\x54':function(_0x4d0fd3,_0x27e038){const _0x1e002f=_0x40588b;return _0x2157c3[_0x1e002f(0xc9,'\x79\x7a\x49\x68')](_0x4d0fd3,_0x27e038);},'\x71\x48\x43\x63\x44':_0x2157c3[_0x40588b(0xd5,'\x53\x56\x5b\x46')]};if(_0x2157c3[_0x40588b(0x16d,'\x72\x28\x69\x32')]===_0x2157c3['\x48\x48\x6a\x6b\x52'])try{if(!_0x5cdd00['\x65\x78\x69\x73\x74\x73\x53\x79'+'\x6e\x63'](_0x6586b4[_0x40588b(0x21d,'\x47\x63\x73\x4c')](_0x53690e)))return-0x1*0x1af9+-0x13e2+0x2edb;return _0x6586b4[_0x40588b(0x15b,'\x55\x49\x69\x29')](_0x530082,_0x1b5f9e[_0x40588b(0xe7,'\x52\x5b\x78\x2a')+_0x40588b(0xb0,'\x4a\x52\x69\x45')](_0x6586b4[_0x40588b(0x19c,'\x52\x5b\x78\x2a')](_0x48e4c4),_0x6586b4[_0x40588b(0x1a2,'\x4b\x38\x29\x76')]),0x1bda+0xbfe+0x13e7*-0x2)||-0x4*0x44f+0x2227*0x1+-0x1*0x10eb;}catch(_0x789db4){return 0x10*-0x248+0x1451*-0x1+0x38d1;}else{const _0xcdd259=_0x2b85c2?function(){const _0x2d1d8b=_0x40588b;if(_0x2157c3[_0x2d1d8b(0x101,'\x64\x50\x61\x4a')]!==_0x2157c3[_0x2d1d8b(0x1fa,'\x69\x6c\x63\x69')])_0x48ce92=_0xd81912[_0x2d1d8b(0x152,'\x61\x64\x65\x21')](_0x6586b4[_0x2d1d8b(0xe2,'\x34\x76\x68\x26')](_0xeb9e04),'\x2e\x6c\x76');else{if(_0x222584){if(_0x2157c3[_0x2d1d8b(0x24d,'\x4f\x45\x33\x7a')]!==_0x2157c3[_0x2d1d8b(0x1cf,'\x36\x29\x53\x76')]){const _0x4ec246=_0x222584[_0x2d1d8b(0x232,'\x25\x72\x62\x76')](_0x23985a,arguments);return _0x222584=null,_0x4ec246;}else{const _0x421355=_0x6586b4['\x66\x49\x4c\x77\x57'](_0x5043f4['\x73\x74\x61\x74\x75\x73'],0x3*-0xb65+-0x1*-0x125f+-0x5ec*-0x3);return{'\x6f\x6b':![],'\x65\x72\x72\x6f\x72':_0x6586b4[_0x2d1d8b(0x29c,'\x72\x28\x69\x32')](_0x6586b4[_0x2d1d8b(0x1b5,'\x41\x44\x65\x5b')],_0x12d34c[_0x2d1d8b(0x1f0,'\x6c\x41\x48\x4c')])+'\x3a\x20'+_0x21297a[_0x2d1d8b(0xc8,'\x4f\x59\x79\x30')](-0x15c3+-0x59e+0xa3*0x2b,-0x20ef*0x1+0x23d5+-0x21e),'\x6f\x66\x66\x6c\x69\x6e\x65':_0x421355};}}}}:function(){};return _0x2b85c2=![],_0xcdd259;}};}()),_0x5ee018=_0x41e111(this,function(){const _0x18ca6e=_0x5955,_0x3d3ab5={};_0x3d3ab5[_0x18ca6e(0x258,'\x52\x5b\x78\x2a')]=_0x18ca6e(0x266,'\x6d\x35\x76\x30')+_0x18ca6e(0x25c,'\x58\x52\x66\x51');const _0x54325b=_0x3d3ab5;return _0x5ee018[_0x18ca6e(0x280,'\x32\x45\x4c\x30')]()[_0x18ca6e(0x1e1,'\x67\x7a\x46\x46')](_0x18ca6e(0x286,'\x69\x66\x30\x32')+_0x18ca6e(0x15d,'\x4d\x59\x4e\x6e'))[_0x18ca6e(0x186,'\x67\x7a\x46\x46')]()[_0x18ca6e(0x125,'\x58\x52\x66\x51')+_0x18ca6e(0x160,'\x67\x51\x57\x6e')](_0x5ee018)[_0x18ca6e(0x1d6,'\x6c\x41\x48\x4c')](_0x54325b[_0x18ca6e(0x281,'\x6c\x41\x48\x4c')]);});_0x5ee018();const _0xb17910=require(_0x269c9f(0x11e,'\x2a\x76\x4a\x76')),_0x50574b=require('\x66\x73'),_0x37b60f=require('\x70\x61\x74\x68'),{hubFetch:_0x534dd5}=require(_0x269c9f(0xb2,'\x68\x56\x33\x38')+'\x63\x68'),{withFileLock:_0x42001}=require('\x2e\x2f\x61\x73\x73\x65\x74\x53'+_0x269c9f(0xf3,'\x67\x6a\x6e\x56'));function _0x46cb74(_0xb239b9,_0x109a4e){const _0x5a7a3c=_0x269c9f,_0x41ff1e={};_0x41ff1e[_0x5a7a3c(0xc1,'\x55\x55\x59\x6e')]=_0x5a7a3c(0x27e,'\x47\x63\x73\x4c');const _0x52094e=_0x41ff1e;return _0xb17910[_0x5a7a3c(0x1df,'\x6c\x41\x48\x4c')+'\x61\x63'](_0x52094e['\x44\x64\x6a\x61\x74'],_0xb239b9)[_0x5a7a3c(0x284,'\x67\x51\x57\x6e')](_0x109a4e)[_0x5a7a3c(0x26c,'\x34\x76\x68\x26')](_0x5a7a3c(0xcc,'\x68\x56\x33\x38'));}function _0x4cafd0(_0x59f1e4){const _0x33c463=_0x269c9f,_0x341913={'\x69\x43\x48\x48\x4d':_0x33c463(0x25e,'\x4d\x6d\x32\x57'),'\x70\x68\x62\x64\x6d':function(_0x3b4fbf,_0x275f6d){return _0x3b4fbf(_0x275f6d);},'\x78\x5a\x73\x6a\x74':_0x33c463(0x14b,'\x23\x6f\x54\x76')};return _0xb17910[_0x33c463(0x1aa,'\x6c\x41\x48\x4c')+'\x73\x68'](_0x341913[_0x33c463(0x27f,'\x67\x6a\x6e\x56')])[_0x33c463(0x136,'\x67\x7a\x46\x46')](_0x341913[_0x33c463(0x111,'\x25\x61\x67\x40')](String,_0x59f1e4||''))[_0x33c463(0x229,'\x33\x46\x65\x4e')](_0x341913[_0x33c463(0x203,'\x4d\x59\x4e\x6e')])[_0x33c463(0x25b,'\x2a\x76\x4a\x76')](-0xb42+0x59*-0x31+0x1c4b,-0x5cf*0x6+-0x2427+0x4711);}function _0x3e1a35({geneId:_0x11e733,signals:_0x51219e,mutation:_0x5e97dc}){const _0x475d53=_0x269c9f,_0x2649a1={'\x4a\x4d\x7a\x53\x5a':function(_0x210d9b,_0x2c086e){return _0x210d9b(_0x2c086e);},'\x54\x6f\x48\x71\x57':function(_0x770455,_0x36d65c){return _0x770455(_0x36d65c);},'\x43\x6f\x76\x7a\x72':function(_0x534797,_0x19f054){return _0x534797!==_0x19f054;},'\x58\x7a\x63\x70\x4e':_0x475d53(0x21e,'\x53\x56\x5b\x46')+_0x475d53(0x207,'\x34\x76\x68\x26'),'\x72\x59\x71\x74\x4f':'\x6f\x66\x66\x6c\x69\x6e\x65\x5f'+_0x475d53(0x15e,'\x64\x50\x61\x4a')+_0x475d53(0x175,'\x68\x56\x33\x38'),'\x77\x57\x67\x55\x71':_0x475d53(0x267,'\x64\x50\x61\x4a')+_0x475d53(0xba,'\x2a\x76\x4a\x76')+_0x475d53(0x145,'\x36\x29\x53\x76'),'\x4b\x59\x4b\x45\x50':function(_0x1ec690,_0x39270e){return _0x1ec690!==_0x39270e;},'\x71\x6e\x79\x56\x41':'\x54\x6c\x47\x4e\x58','\x54\x57\x41\x7a\x79':_0x475d53(0xbf,'\x36\x29\x53\x76'),'\x57\x45\x50\x71\x7a':function(_0x5b8808,_0x5502fd){return _0x5b8808(_0x5502fd);},'\x70\x77\x6e\x4e\x63':_0x475d53(0xdc,'\x23\x6f\x26\x54')+_0x475d53(0xf7,'\x68\x56\x33\x38'),'\x45\x4d\x42\x71\x48':function(_0x4c1216,_0x8d4d18){return _0x4c1216===_0x8d4d18;},'\x58\x6d\x50\x5a\x67':'\x75\x62\x55\x7a\x76','\x6f\x6a\x6c\x6f\x79':_0x475d53(0x183,'\x40\x5d\x56\x4c'),'\x58\x6d\x78\x65\x6d':'\x68\x65\x78','\x78\x77\x4f\x46\x66':function(_0x27de02,_0x102355){return _0x27de02(_0x102355);},'\x49\x71\x56\x7a\x6b':function(_0x18f9c5,_0x5b36a0){return _0x18f9c5(_0x5b36a0);},'\x5a\x58\x61\x73\x4d':function(_0x5b5134,_0x202a6f){return _0x5b5134||_0x202a6f;},'\x77\x73\x47\x45\x48':function(_0x2d9788,_0x342b28){return _0x2d9788||_0x342b28;},'\x63\x52\x57\x57\x4d':function(_0x2e8057,_0xe47b9c,_0x4613d4){return _0x2e8057(_0xe47b9c,_0x4613d4);},'\x65\x62\x79\x4c\x79':function(_0x19e587,_0x174ba0){return _0x19e587||_0x174ba0;}};let _0xb06d00=null;try{if(_0x2649a1[_0x475d53(0x1ef,'\x36\x29\x53\x76')](_0x2649a1[_0x475d53(0x1e9,'\x4f\x45\x33\x7a')],_0x2649a1[_0x475d53(0xdf,'\x25\x72\x62\x76')]))_0xb06d00=_0x2649a1[_0x475d53(0x140,'\x6d\x35\x76\x30')](require,_0x2649a1[_0x475d53(0x104,'\x72\x28\x69\x32')])[_0x475d53(0x238,'\x53\x56\x5b\x46')+_0x475d53(0x2a0,'\x69\x6c\x63\x69')]();else return _0x5c9942&&_0x1e281f['\x6f\x6b']&&_0x3833c8['\x6f\x66\x66\x6c\x69\x6e\x65\x5f'+_0x475d53(0x164,'\x58\x52\x66\x51')]&&_0x2649a1[_0x475d53(0x1a5,'\x23\x6f\x26\x54')](_0x2e536c,_0x100881[_0x475d53(0x1ab,'\x4d\x59\x4e\x6e')+'\x74\x6f\x6b\x65\x6e']),_0x4dbb62;}catch(_0x47a828){}if(!_0xb06d00)return null;let _0x5bfc5d=null;try{if(_0x2649a1[_0x475d53(0x27c,'\x79\x7a\x49\x68')](_0x475d53(0xc2,'\x58\x52\x66\x51'),_0x2649a1[_0x475d53(0x1ed,'\x55\x55\x59\x6e')]))_0x5bfc5d=_0x2649a1['\x4a\x4d\x7a\x53\x5a'](require,_0x2649a1[_0x475d53(0x20b,'\x40\x6c\x4a\x6c')])[_0x475d53(0x277,'\x4d\x59\x4e\x6e')+'\x64']();else{var _0x1bc7f6=_0x13e10f&&_0x3ab82d['\x6d\x65\x73\x73\x61\x67\x65']||_0x2649a1[_0x475d53(0x261,'\x58\x52\x66\x51')](_0xf90ec1,_0x31f8a2);if(_0x2649a1[_0x475d53(0x25d,'\x40\x6c\x4a\x6c')](_0x1bc7f6[_0x475d53(0xe8,'\x67\x7a\x46\x46')](_0x2649a1[_0x475d53(0xf1,'\x52\x5b\x78\x2a')]),-(-0x24d2+-0x1*0x22c6+0x4799))){const _0x9a0119={};return _0x9a0119['\x6f\x6b']=![],_0x9a0119['\x65\x72\x72\x6f\x72']=_0x2649a1[_0x475d53(0x254,'\x33\x46\x65\x4e')],_0x9a0119['\x6f\x66\x66\x6c\x69\x6e\x65']=!![],_0x9a0119;}return{'\x6f\x6b':![],'\x65\x72\x72\x6f\x72':_0x2649a1[_0x475d53(0x169,'\x67\x7a\x46\x46')],'\x6f\x66\x66\x6c\x69\x6e\x65':!![],'\x64\x65\x74\x61\x69\x6c':_0x1bc7f6[_0x475d53(0x199,'\x6e\x6d\x6b\x35')](-0xb2+-0xf2*-0x19+-0x16f0,-0x25c3+0x6af*-0x3+0x3a98)};}}catch(_0x375851){}if(!_0x5bfc5d)return null;const _0x3ed611=_0xb17910[_0x475d53(0x249,'\x72\x28\x69\x32')+'\x73\x68'](_0x2649a1['\x6f\x6a\x6c\x6f\x79'])['\x75\x70\x64\x61\x74\x65'](_0xb06d00)[_0x475d53(0x11f,'\x44\x5e\x71\x41')](_0x2649a1['\x58\x6d\x78\x65\x6d']),_0x13d2ba=Date[_0x475d53(0x195,'\x68\x56\x33\x38')](),_0x25419b=_0x2649a1[_0x475d53(0x283,'\x6c\x41\x48\x4c')](_0x4cafd0,JSON[_0x475d53(0xbb,'\x64\x50\x61\x4a')+'\x79'](Array[_0x475d53(0x156,'\x32\x45\x4c\x30')](_0x51219e)?_0x51219e[_0x475d53(0xe0,'\x40\x5d\x56\x4c')](-0x1f6a+-0x19e*0x17+-0x1*-0x449c,0x12e*-0x1d+0xc*0x17b+0x3*0x57e):[])),_0x330e7a=_0x2649a1['\x49\x71\x56\x7a\x6b'](_0x4cafd0,JSON[_0x475d53(0x297,'\x25\x2a\x2a\x62')+'\x79'](_0x2649a1[_0x475d53(0x28b,'\x79\x7a\x49\x68')](_0x5e97dc,{}))),_0x220de5=[_0x5bfc5d,_0x2649a1[_0x475d53(0x182,'\x7a\x48\x53\x5b')](_0x11e733,''),_0x25419b,_0x330e7a,String(_0x13d2ba)][_0x475d53(0x10f,'\x25\x61\x67\x40')]('\x7c'),_0xa08b33=_0x2649a1[_0x475d53(0xea,'\x71\x36\x6b\x6f')](_0x46cb74,_0x3ed611,_0x220de5);return{'\x6e\x6f\x64\x65\x49\x64':_0x5bfc5d,'\x6e\x6f\x64\x65\x53\x65\x63\x72\x65\x74':_0xb06d00,'\x62\x6f\x64\x79':{'\x73\x65\x6e\x64\x65\x72\x5f\x69\x64':_0x5bfc5d,'\x67\x65\x6e\x65\x5f\x69\x64':_0x2649a1[_0x475d53(0x13e,'\x79\x7a\x49\x68')](_0x11e733,''),'\x73\x69\x67\x6e\x61\x6c\x73\x5f\x68\x61\x73\x68':_0x25419b,'\x6d\x75\x74\x61\x74\x69\x6f\x6e\x5f\x68\x61\x73\x68':_0x330e7a,'\x74\x73':_0x13d2ba,'\x63\x6c\x69\x65\x6e\x74\x5f\x73\x69\x67\x6e\x61\x74\x75\x72\x65':_0xa08b33}};}function _0x10e9e6({geneId:_0x27fa34,signals:_0x3c1091,mutation:_0x1e80eb}){const _0x35c677=_0x269c9f,_0x1f5994={'\x78\x45\x6f\x4f\x4c':_0x35c677(0x1b0,'\x69\x66\x30\x32')+_0x35c677(0x1c0,'\x47\x63\x73\x4c')+'\x75\x73\x79','\x47\x77\x49\x48\x6c':function(_0x38e3ae,_0x3bd58c){return _0x38e3ae===_0x3bd58c;},'\x41\x68\x74\x4e\x48':_0x35c677(0x112,'\x4d\x59\x4e\x6e'),'\x6f\x6a\x66\x77\x76':_0x35c677(0xf4,'\x67\x51\x57\x6e'),'\x75\x54\x67\x66\x53':_0x35c677(0x226,'\x40\x5d\x56\x4c'),'\x76\x6f\x56\x4a\x71':function(_0x4cef36,_0x34ac43){return _0x4cef36>=_0x34ac43;},'\x70\x73\x77\x50\x69':function(_0x3e7f08,_0x3a1347){return _0x3e7f08+_0x3a1347;},'\x6f\x67\x44\x45\x69':function(_0x1a4976,_0x468d20){return _0x1a4976(_0x468d20);},'\x6f\x4a\x67\x4b\x75':function(_0x5aaf86,_0x57c46a){return _0x5aaf86<_0x57c46a;},'\x42\x49\x48\x42\x6c':function(_0x199582){return _0x199582();},'\x54\x41\x73\x6c\x48':_0x35c677(0x268,'\x4f\x45\x33\x7a'),'\x71\x47\x4e\x64\x70':_0x35c677(0x26d,'\x44\x4e\x69\x6b'),'\x45\x48\x6d\x6a\x49':_0x35c677(0x1e3,'\x71\x36\x6b\x6f')+'\x72\x6c','\x41\x52\x46\x6e\x63':_0x35c677(0x272,'\x55\x55\x59\x6e')+_0x35c677(0x1d2,'\x49\x6e\x58\x42')+_0x35c677(0x139,'\x45\x77\x63\x64'),'\x52\x64\x62\x77\x4c':_0x35c677(0x234,'\x64\x50\x61\x4a')+'\x67','\x58\x56\x47\x54\x72':_0x35c677(0x28e,'\x68\x56\x33\x38')+_0x35c677(0x21b,'\x23\x6f\x26\x54'),'\x6e\x44\x7a\x5a\x57':_0x35c677(0x17a,'\x44\x5e\x71\x41'),'\x41\x42\x4d\x59\x76':function(_0x354013,_0x410ee7,_0x2b1f98){return _0x354013(_0x410ee7,_0x2b1f98);},'\x66\x48\x63\x66\x44':_0x35c677(0x119,'\x25\x61\x67\x40')},_0x55c697=(process.env.A2A_HUB_URL||'')[_0x35c677(0x1b8,'\x58\x52\x66\x51')](/\/+$/,''),_0x5e19b1={};_0x5e19b1['\x6f\x6b']=![],_0x5e19b1['\x65\x72\x72\x6f\x72']=_0x1f5994[_0x35c677(0x162,'\x55\x55\x59\x6e')],_0x5e19b1['\x6f\x66\x66\x6c\x69\x6e\x65']=!![];if(!_0x55c697)return Promise[_0x35c677(0xce,'\x7a\x48\x53\x5b')](_0x5e19b1);const _0x46b491={};_0x46b491[_0x35c677(0x21a,'\x23\x6f\x26\x54')]=_0x27fa34,_0x46b491[_0x35c677(0x287,'\x52\x5b\x78\x2a')]=_0x3c1091,_0x46b491['\x6d\x75\x74\x61\x74\x69\x6f\x6e']=_0x1e80eb;const _0x51dec2=_0x1f5994[_0x35c677(0x17f,'\x23\x6f\x54\x76')](_0x3e1a35,_0x46b491),_0x203a9e={};_0x203a9e['\x6f\x6b']=![],_0x203a9e[_0x35c677(0x18c,'\x6d\x35\x76\x30')]=_0x35c677(0x275,'\x68\x56\x33\x38')+_0x35c677(0xfd,'\x7a\x48\x53\x5b'),_0x203a9e[_0x35c677(0x106,'\x4b\x38\x29\x76')]=!![];if(!_0x51dec2)return Promise['\x72\x65\x73\x6f\x6c\x76\x65'](_0x203a9e);const _0x204e51=_0x1f5994[_0x35c677(0x116,'\x33\x46\x65\x4e')](_0x55c697,_0x1f5994[_0x35c677(0x282,'\x4d\x6d\x32\x57')]),_0x343504=require(_0x1f5994[_0x35c677(0x23f,'\x4a\x52\x69\x45')])[_0x35c677(0xe1,'\x4f\x59\x79\x30')+_0x35c677(0x171,'\x6b\x65\x4e\x4d')+_0x35c677(0x13f,'\x6b\x65\x4e\x4d')+'\x53']||-0x2313+0xf44+-0x1*-0x3adf,_0x48160a={};_0x48160a[_0x35c677(0xee,'\x67\x7a\x46\x46')+_0x35c677(0xb7,'\x25\x72\x62\x76')]=_0x1f5994[_0x35c677(0x170,'\x2a\x76\x4a\x76')],_0x48160a[_0x35c677(0x154,'\x49\x6e\x58\x42')+_0x35c677(0xfe,'\x58\x52\x66\x51')]=_0x1f5994[_0x35c677(0x25f,'\x55\x55\x59\x6e')]+_0x51dec2[_0x35c677(0x109,'\x58\x52\x66\x51')+'\x65\x74'];const _0x37bb00=_0x48160a;return _0x1f5994[_0x35c677(0x1e8,'\x44\x53\x37\x76')](_0x534dd5,_0x204e51,{'\x6d\x65\x74\x68\x6f\x64':_0x1f5994['\x66\x48\x63\x66\x44'],'\x68\x65\x61\x64\x65\x72\x73':_0x37bb00,'\x62\x6f\x64\x79':JSON[_0x35c677(0x1c2,'\x34\x76\x68\x26')+'\x79'](_0x51dec2[_0x35c677(0x206,'\x52\x5b\x78\x2a')]),'\x73\x69\x67\x6e\x61\x6c':AbortSignal[_0x35c677(0x16c,'\x55\x49\x69\x29')](_0x343504)})['\x74\x68\x65\x6e'](function(_0x2997a6){const _0x56c2bb=_0x35c677,_0x4aa768={'\x45\x59\x4f\x78\x77':function(_0x21ab42,_0x41311b){const _0x34973e=_0x5955;return _0x1f5994[_0x34973e(0x1fc,'\x7a\x48\x53\x5b')](_0x21ab42,_0x41311b);},'\x77\x56\x6b\x6d\x56':_0x56c2bb(0x263,'\x71\x36\x6b\x6f'),'\x46\x45\x70\x6a\x76':_0x1f5994[_0x56c2bb(0x1b1,'\x44\x53\x37\x76')],'\x79\x6c\x53\x4e\x74':_0x1f5994[_0x56c2bb(0xef,'\x6e\x6d\x6b\x35')],'\x73\x56\x76\x67\x49':_0x1f5994[_0x56c2bb(0x256,'\x47\x63\x73\x4c')],'\x49\x66\x55\x7a\x5a':function(_0x414dfa,_0x496ad9){const _0x2238d9=_0x56c2bb;return _0x1f5994[_0x2238d9(0x18d,'\x64\x70\x37\x32')](_0x414dfa,_0x496ad9);},'\x4b\x5a\x64\x73\x74':function(_0x30bde0,_0x35a57e){const _0x397f95=_0x56c2bb;return _0x1f5994[_0x397f95(0x27a,'\x55\x55\x59\x6e')](_0x30bde0,_0x35a57e);},'\x72\x71\x57\x45\x6d':function(_0x2ce96b,_0x5e90ff){return _0x2ce96b+_0x5e90ff;},'\x53\x4c\x6c\x6c\x57':function(_0x59203c,_0x30c448){return _0x59203c+_0x30c448;},'\x6b\x6a\x69\x4b\x77':'\x48\x54\x54\x50\x20','\x49\x78\x4d\x50\x4d':function(_0x3db737,_0x889f17){const _0x4b87e0=_0x56c2bb;return _0x1f5994[_0x4b87e0(0x1ee,'\x58\x52\x66\x51')](_0x3db737,_0x889f17);}};_0x1f5994[_0x56c2bb(0x16e,'\x25\x2a\x2a\x62')](_0x2997a6[_0x56c2bb(0x1ba,'\x61\x64\x65\x21')],-0xc22+-0x1bc1+0x29d7)&&_0x1f5994[_0x56c2bb(0x1c9,'\x5e\x29\x44\x52')](_0x130282);if(!_0x2997a6['\x6f\x6b']){if(_0x1f5994[_0x56c2bb(0x22d,'\x6e\x6d\x6b\x35')](_0x56c2bb(0x250,'\x67\x7a\x46\x46'),_0x1f5994[_0x56c2bb(0xc4,'\x32\x45\x4c\x30')])){const _0x1f258f={};return _0x1f258f['\x6f\x6b']=![],_0x1f258f[_0x56c2bb(0xe6,'\x33\x46\x65\x4e')]=_0x1f5994[_0x56c2bb(0x17d,'\x67\x6a\x6e\x56')],_0x1f258f[_0x56c2bb(0xbc,'\x68\x56\x33\x38')]=!![],_0x1f258f;}else return _0x2997a6[_0x56c2bb(0x190,'\x6e\x6d\x6b\x35')]()['\x74\x68\x65\x6e'](function(_0x3b968f){const _0x39f77b=_0x56c2bb;if(_0x4aa768[_0x39f77b(0x19b,'\x49\x6e\x58\x42')]===_0x4aa768[_0x39f77b(0x191,'\x34\x76\x24\x59')]){var _0x377634=(_0x27eee2.env.EVOLVER_SOLIDIFY_VERIFY||'')[_0x39f77b(0x23b,'\x4d\x59\x4e\x6e')+'\x61\x73\x65']();if(_0x4aa768['\x45\x59\x4f\x78\x77'](_0x377634,_0x4aa768[_0x39f77b(0x29a,'\x25\x61\x67\x40')])||_0x4aa768['\x45\x59\x4f\x78\x77'](_0x377634,'\x30')||_0x377634===_0x4aa768[_0x39f77b(0x1b6,'\x4b\x38\x29\x76')])return![];}else{const _0x43a420=_0x4aa768[_0x39f77b(0x22c,'\x49\x6e\x58\x42')](_0x2997a6[_0x39f77b(0x2a2,'\x23\x6f\x54\x76')],-0x2f5*0x2+-0x74b*-0x4+-0x154e);return{'\x6f\x6b':![],'\x65\x72\x72\x6f\x72':_0x4aa768[_0x39f77b(0x1b2,'\x68\x56\x33\x38')](_0x4aa768[_0x39f77b(0x189,'\x71\x36\x6b\x6f')](_0x4aa768[_0x39f77b(0x225,'\x34\x76\x24\x59')](_0x4aa768[_0x39f77b(0x28f,'\x5e\x29\x44\x52')],_0x2997a6[_0x39f77b(0x172,'\x2a\x76\x4a\x76')]),'\x3a\x20'),_0x3b968f[_0x39f77b(0xc8,'\x4f\x59\x79\x30')](-0x206*-0x1+0xcd5*-0x3+0x2479,-0x24c9+-0x2f*0xd2+0x1*0x4c1f)),'\x6f\x66\x66\x6c\x69\x6e\x65':_0x43a420};}});}return _0x2997a6[_0x56c2bb(0x1c1,'\x7a\x48\x53\x5b')]()[_0x56c2bb(0x1d1,'\x33\x46\x65\x4e')](function(_0x3148eb){const _0x22badd=_0x56c2bb;return _0x3148eb&&_0x3148eb['\x6f\x6b']&&_0x3148eb[_0x22badd(0x2a3,'\x68\x56\x33\x38')+_0x22badd(0x296,'\x7a\x48\x53\x5b')]&&_0x4aa768['\x49\x78\x4d\x50\x4d'](_0x1ee074,_0x3148eb[_0x22badd(0x295,'\x32\x45\x4c\x30')+_0x22badd(0x1ce,'\x68\x56\x33\x38')]),_0x3148eb;});})[_0x35c677(0x16a,'\x44\x53\x37\x76')](function(_0x441e03){const _0x688039=_0x35c677;if(_0x1f5994[_0x688039(0x174,'\x6c\x41\x48\x4c')](_0x688039(0xf9,'\x25\x2a\x2a\x62'),_0x1f5994[_0x688039(0xd8,'\x79\x7a\x49\x68')]))return null;else{const _0xa6ba97={};return _0xa6ba97['\x6f\x6b']=![],_0xa6ba97[_0x688039(0x1ea,'\x4f\x45\x33\x7a')]=_0x441e03[_0x688039(0x2a1,'\x23\x6f\x54\x76')],_0xa6ba97[_0x688039(0x168,'\x25\x61\x67\x40')]=!![],_0xa6ba97;}});}var _0x35df53=null,_0x4c31d8=null;function _0x1ba3a3(){const _0x3b9430=_0x269c9f,_0x1959fc={'\x56\x75\x4e\x66\x4f':function(_0x2809a7){return _0x2809a7();},'\x4f\x4a\x45\x67\x5a':_0x3b9430(0x259,'\x41\x44\x65\x5b'),'\x49\x54\x43\x7a\x66':_0x3b9430(0x279,'\x64\x50\x61\x4a'),'\x47\x79\x4f\x4c\x57':_0x3b9430(0xcd,'\x58\x52\x66\x51'),'\x69\x6b\x4f\x55\x45':function(_0x50270d,_0x4b47aa){return _0x50270d!==_0x4b47aa;},'\x55\x5a\x4b\x64\x58':_0x3b9430(0x209,'\x69\x6c\x63\x69'),'\x6e\x4f\x70\x66\x49':_0x3b9430(0x10c,'\x44\x4e\x69\x6b'),'\x54\x47\x4d\x52\x4c':_0x3b9430(0x1c8,'\x36\x29\x53\x76'),'\x42\x59\x56\x79\x75':function(_0x33ec50,_0x5ddea8){return _0x33ec50(_0x5ddea8);},'\x46\x43\x41\x41\x4e':_0x3b9430(0x293,'\x34\x76\x68\x26')};try{if(_0x1959fc[_0x3b9430(0x114,'\x5e\x29\x44\x52')](_0x3b9430(0x204,'\x4d\x59\x4e\x6e'),_0x1959fc[_0x3b9430(0x121,'\x71\x36\x6b\x6f')]))_0xe5c8df();else return require(_0x1959fc[_0x3b9430(0x132,'\x69\x6c\x63\x69')])[_0x3b9430(0x28d,'\x6c\x41\x48\x4c')+_0x3b9430(0x202,'\x79\x7a\x49\x68')]();}catch(_0x114fac){if(_0x1959fc[_0x3b9430(0x144,'\x7a\x48\x53\x5b')](_0x1959fc[_0x3b9430(0x22a,'\x67\x6a\x6e\x56')],_0x1959fc[_0x3b9430(0x269,'\x58\x52\x66\x51')]))return!_0x427287&&(_0x56ca2e=_0x1a0baf[_0x3b9430(0x185,'\x4c\x34\x6a\x75')](_0x1959fc[_0x3b9430(0x14d,'\x55\x49\x69\x29')](_0x180427),_0x1959fc[_0x3b9430(0xd3,'\x44\x5e\x71\x41')])),_0x4488f9;else try{return _0x37b60f[_0x3b9430(0x161,'\x4f\x59\x79\x30')](_0x1959fc[_0x3b9430(0x1cb,'\x4f\x45\x33\x7a')](require,'\x2e\x2f\x70\x61\x74\x68\x73')[_0x3b9430(0x1b3,'\x55\x55\x59\x6e')+_0x3b9430(0x1cd,'\x61\x64\x65\x21')](),_0x1959fc[_0x3b9430(0x24a,'\x67\x6a\x6e\x56')],_0x1959fc['\x47\x79\x4f\x4c\x57']);}catch(_0x3245c3){return _0x1959fc[_0x3b9430(0x167,'\x4f\x45\x33\x7a')]!==_0x1959fc['\x46\x43\x41\x41\x4e']?_0x5c8e44['\x6a\x6f\x69\x6e'](_0x194cf2[_0x3b9430(0x1ac,'\x33\x46\x65\x4e')](),_0x1959fc[_0x3b9430(0x1a0,'\x25\x72\x62\x76')],_0x1959fc[_0x3b9430(0x208,'\x4f\x59\x79\x30')]):_0x37b60f[_0x3b9430(0x166,'\x4f\x45\x33\x7a')](process[_0x3b9430(0xf6,'\x44\x5e\x71\x41')](),'\x2e\x65\x76\x6f\x6c\x76\x65\x72',_0x1959fc[_0x3b9430(0x257,'\x67\x7a\x46\x46')]);}}}function _0x14a25b(){const _0x3c874d=_0x269c9f,_0x275940={'\x65\x6e\x48\x43\x73':function(_0x1a6750,_0x298252){return _0x1a6750(_0x298252);},'\x58\x69\x58\x57\x51':_0x3c874d(0x124,'\x40\x5d\x56\x4c'),'\x48\x4e\x76\x46\x50':_0x3c874d(0xc6,'\x72\x28\x69\x32'),'\x48\x4e\x59\x75\x4c':_0x3c874d(0x298,'\x4a\x52\x69\x45'),'\x6d\x48\x63\x62\x41':function(_0x459844,_0x1ecc44){return _0x459844===_0x1ecc44;},'\x5a\x41\x4c\x74\x57':_0x3c874d(0x165,'\x4b\x38\x29\x76'),'\x75\x43\x52\x73\x42':function(_0x27d3ee){return _0x27d3ee();},'\x58\x43\x43\x6c\x53':_0x3c874d(0x14c,'\x4b\x38\x29\x76')};if(!_0x35df53){if(_0x275940[_0x3c874d(0x12c,'\x34\x76\x68\x26')](_0x275940[_0x3c874d(0x200,'\x67\x7a\x46\x46')],_0x275940[_0x3c874d(0x12a,'\x40\x5d\x56\x4c')]))_0x35df53=_0x37b60f[_0x3c874d(0x217,'\x69\x6c\x63\x69')](_0x275940['\x75\x43\x52\x73\x42'](_0x1ba3a3),_0x275940[_0x3c874d(0x239,'\x23\x6f\x54\x76')]);else try{return _0x37ccc7[_0x3c874d(0x219,'\x47\x63\x73\x4c')](qkDPOk[_0x3c874d(0x141,'\x41\x44\x65\x5b')](_0x15cf8a,qkDPOk[_0x3c874d(0x27d,'\x4f\x45\x33\x7a')])[_0x3c874d(0x126,'\x4b\x38\x29\x76')+_0x3c874d(0x19f,'\x34\x76\x68\x26')](),qkDPOk[_0x3c874d(0x1a1,'\x25\x72\x62\x76')],qkDPOk[_0x3c874d(0x1c4,'\x6b\x65\x4e\x4d')]);}catch(_0x5907e5){return _0x51e397['\x6a\x6f\x69\x6e'](_0x5aa44b[_0x3c874d(0x108,'\x23\x6f\x26\x54')](),'\x2e\x65\x76\x6f\x6c\x76\x65\x72',qkDPOk[_0x3c874d(0x1da,'\x45\x77\x63\x64')]);}}return _0x35df53;}function _0x5955(_0x4a0020,_0x4d05ee){_0x4a0020=_0x4a0020-(-0xa3*-0x3+0x2117+0x1129*-0x2);const _0x1e6543=_0x346d();let _0x1ebc5e=_0x1e6543[_0x4a0020];if(_0x5955['\x6f\x59\x52\x49\x58\x49']===undefined){var _0x1f3542=function(_0x4779e6){const _0x454814='\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 _0x413334='',_0x5991fc='',_0x110843=_0x413334+_0x1f3542,_0x20d6e3=(''+function(){return-0x7*0x79+0x1b83+-0xc1a*0x2;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x20ef*0x1+0x2555+0x1*-0x465);for(let _0x3e24d7=0x1*-0x2441+-0x1f33*-0x1+0x50e,_0x226149,_0x292f95,_0x3e53aa=-0xa*-0x1c7+-0xb*0x301+0xf45;_0x292f95=_0x4779e6['\x63\x68\x61\x72\x41\x74'](_0x3e53aa++);~_0x292f95&&(_0x226149=_0x3e24d7%(0x2c9+-0x26aa+0x23e5)?_0x226149*(0xf60+0x32*0x1b+-0x1466)+_0x292f95:_0x292f95,_0x3e24d7++%(-0x1*0x1b59+-0x304*0x4+-0x276d*-0x1))?_0x413334+=_0x20d6e3||_0x110843['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3e53aa+(0x1*-0xbe7+0x2f*0x44+-0x8b))-(-0x1477+-0xc44*-0x3+0x61*-0x2b)!==-0x11e+-0x19f0+0xd87*0x2?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x24ff+0x1ec4+0x42c4*-0x1&_0x226149>>(-(0x134f*-0x2+-0x19b1+0x4051)*_0x3e24d7&0x6a5+0xec*-0x17+0xe95*0x1)):_0x3e24d7:0x2378+0x2135*-0x1+-0x243){_0x292f95=_0x454814['\x69\x6e\x64\x65\x78\x4f\x66'](_0x292f95);}for(let _0x546582=-0x24c3*-0x1+0x92c*-0x2+-0x126b,_0x51d979=_0x413334['\x6c\x65\x6e\x67\x74\x68'];_0x546582<_0x51d979;_0x546582++){_0x5991fc+='\x25'+('\x30\x30'+_0x413334['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x546582)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x1d8*-0xe+0x94d+0x1093))['\x73\x6c\x69\x63\x65'](-(0xa8d+0x512+0x23b*-0x7));}return decodeURIComponent(_0x5991fc);};const _0x436668=function(_0x2f7668,_0x5c1d16){let _0x197f20=[],_0x5a876e=-0x1*0xe56+-0x19d0*-0x1+0x1a*-0x71,_0x397bd4,_0x43ba70='';_0x2f7668=_0x1f3542(_0x2f7668);let _0x29db1e;for(_0x29db1e=0x4*-0x6df+-0x27*0x6b+0x2bc9;_0x29db1e<0x59*-0x20+-0x1768+0x2388;_0x29db1e++){_0x197f20[_0x29db1e]=_0x29db1e;}for(_0x29db1e=-0x509*0x4+0x26bc+-0x1298;_0x29db1e<-0xe24+0x1*0x7bb+0x769;_0x29db1e++){_0x5a876e=(_0x5a876e+_0x197f20[_0x29db1e]+_0x5c1d16['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x29db1e%_0x5c1d16['\x6c\x65\x6e\x67\x74\x68']))%(0x5*0xd9+-0x1ad7*0x1+0x179a),_0x397bd4=_0x197f20[_0x29db1e],_0x197f20[_0x29db1e]=_0x197f20[_0x5a876e],_0x197f20[_0x5a876e]=_0x397bd4;}_0x29db1e=-0x17dd+0x273+-0xab5*-0x2,_0x5a876e=0xe5f*0x2+0x5fd+-0x22bb;for(let _0x211ea4=-0x18c1+0x14b6+0x40b;_0x211ea4<_0x2f7668['\x6c\x65\x6e\x67\x74\x68'];_0x211ea4++){_0x29db1e=(_0x29db1e+(0xedb+0x24cd+-0x33a7))%(-0x1390+0x2*-0x7bd+-0x2*-0x1205),_0x5a876e=(_0x5a876e+_0x197f20[_0x29db1e])%(-0x731*-0x3+-0x3ca+0x1*-0x10c9),_0x397bd4=_0x197f20[_0x29db1e],_0x197f20[_0x29db1e]=_0x197f20[_0x5a876e],_0x197f20[_0x5a876e]=_0x397bd4,_0x43ba70+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x2f7668['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x211ea4)^_0x197f20[(_0x197f20[_0x29db1e]+_0x197f20[_0x5a876e])%(-0x2435+0x23ec+0x149)]);}return _0x43ba70;};_0x5955['\x6e\x6f\x78\x45\x63\x45']=_0x436668,_0x5955['\x51\x42\x48\x72\x42\x4e']={},_0x5955['\x6f\x59\x52\x49\x58\x49']=!![];}const _0x48367e=_0x1e6543[0x522+-0x25bf+-0x16b*-0x17],_0x3243fd=_0x4a0020+_0x48367e,_0x5c3743=_0x5955['\x51\x42\x48\x72\x42\x4e'][_0x3243fd];if(!_0x5c3743){if(_0x5955['\x6d\x61\x66\x4f\x6d\x73']===undefined){const _0x4db5fd=function(_0x40e420){this['\x75\x50\x75\x4f\x59\x6a']=_0x40e420,this['\x73\x74\x65\x52\x68\x49']=[-0x1d2a*0x1+0xe3a+-0xe1*-0x11,-0xe38+0x1be3+-0xdab,-0x26b7+-0x1fc7+0x467e],this['\x68\x70\x6f\x4e\x73\x56']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x56\x75\x6a\x45\x61\x48']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x6b\x6d\x53\x59\x71\x46']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x4db5fd['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x69\x4f\x4d\x70\x75\x75']=function(){const _0x4fdc66=new RegExp(this['\x56\x75\x6a\x45\x61\x48']+this['\x6b\x6d\x53\x59\x71\x46']),_0x48f7c2=_0x4fdc66['\x74\x65\x73\x74'](this['\x68\x70\x6f\x4e\x73\x56']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x73\x74\x65\x52\x68\x49'][0x167a+0x6a8+-0x1d21]:--this['\x73\x74\x65\x52\x68\x49'][-0x244a+0xd*-0xc5+0x2e4b];return this['\x45\x59\x4a\x71\x78\x6d'](_0x48f7c2);},_0x4db5fd['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x45\x59\x4a\x71\x78\x6d']=function(_0x4fd069){if(!Boolean(~_0x4fd069))return _0x4fd069;return this['\x51\x4b\x51\x7a\x50\x67'](this['\x75\x50\x75\x4f\x59\x6a']);},_0x4db5fd['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x51\x4b\x51\x7a\x50\x67']=function(_0x587422){for(let _0x5a504e=0xb*-0x35f+-0x2d9*-0x3+-0x119*-0x1a,_0xaa5be3=this['\x73\x74\x65\x52\x68\x49']['\x6c\x65\x6e\x67\x74\x68'];_0x5a504e<_0xaa5be3;_0x5a504e++){this['\x73\x74\x65\x52\x68\x49']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0xaa5be3=this['\x73\x74\x65\x52\x68\x49']['\x6c\x65\x6e\x67\x74\x68'];}return _0x587422(this['\x73\x74\x65\x52\x68\x49'][0x26eb+-0x2523*0x1+-0x39*0x8]);},(''+function(){return 0xb*-0x131+0x1011+-0x2f6;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(-0x2074+0x1c21+-0x454*-0x1)&&new _0x4db5fd(_0x5955)['\x69\x4f\x4d\x70\x75\x75'](),_0x5955['\x6d\x61\x66\x4f\x6d\x73']=!![];}_0x1ebc5e=_0x5955['\x6e\x6f\x78\x45\x63\x45'](_0x1ebc5e,_0x4d05ee),_0x5955['\x51\x42\x48\x72\x42\x4e'][_0x3243fd]=_0x1ebc5e;}else _0x1ebc5e=_0x5c3743;return _0x1ebc5e;}function _0x9df4b1(){const _0x5dc1a8=_0x269c9f,_0x5094fc={'\x55\x4e\x67\x6e\x54':function(_0x6389c){return _0x6389c();},'\x44\x49\x52\x6f\x47':'\x2e\x6c\x76'};return!_0x4c31d8&&(_0x4c31d8=_0x37b60f[_0x5dc1a8(0x1dc,'\x67\x6a\x6e\x56')](_0x5094fc[_0x5dc1a8(0x240,'\x40\x6c\x4a\x6c')](_0x1ba3a3),_0x5094fc[_0x5dc1a8(0xae,'\x23\x6f\x54\x76')])),_0x4c31d8;}function _0x346d(){const _0x3a6377=['\x57\x34\x56\x64\x51\x58\x78\x64\x4e\x63\x6d\x64\x57\x36\x57\x7a','\x57\x36\x7a\x61\x57\x50\x78\x64\x4f\x38\x6b\x33\x57\x34\x6d\x43\x57\x4f\x69','\x6d\x38\x6f\x6f\x6f\x53\x6b\x52\x57\x52\x64\x64\x53\x38\x6f\x49\x57\x4f\x6e\x62\x64\x6d\x6b\x51\x57\x36\x61','\x57\x50\x78\x64\x47\x31\x42\x64\x54\x6d\x6b\x4f','\x57\x34\x50\x59\x57\x35\x53\x54\x57\x4f\x71','\x57\x4f\x6d\x43\x57\x35\x4e\x64\x48\x43\x6f\x6e\x57\x35\x31\x73\x79\x38\x6b\x48\x57\x35\x56\x63\x53\x47','\x57\x4f\x70\x64\x49\x43\x6b\x42\x69\x38\x6f\x38\x78\x72\x6d','\x46\x43\x6f\x35\x57\x37\x71','\x57\x34\x54\x69\x74\x78\x74\x64\x50\x76\x61','\x71\x48\x64\x63\x49\x65\x52\x64\x47\x6d\x6f\x31\x57\x4f\x34','\x57\x50\x50\x78\x46\x38\x6f\x6a\x57\x37\x61','\x69\x64\x75\x6f\x57\x37\x7a\x53\x57\x34\x46\x64\x50\x38\x6b\x43\x71\x53\x6f\x79\x62\x38\x6f\x61\x78\x71','\x57\x52\x6c\x64\x55\x4e\x42\x64\x4b\x62\x2f\x63\x4c\x58\x37\x64\x48\x4e\x42\x63\x4d\x38\x6b\x6f','\x43\x47\x4e\x64\x47\x57\x6a\x4c\x7a\x43\x6b\x33','\x57\x37\x68\x63\x4f\x4d\x43\x31\x79\x47','\x57\x34\x33\x64\x4f\x72\x78\x64\x48\x4a\x30','\x57\x37\x4e\x64\x54\x32\x33\x64\x55\x74\x4b','\x57\x36\x54\x46\x44\x67\x70\x64\x51\x47','\x76\x58\x64\x63\x4a\x32\x33\x64\x4d\x43\x6f\x48\x57\x51\x75\x4d','\x57\x35\x35\x75\x57\x35\x71\x67\x57\x50\x4f','\x57\x51\x7a\x6f\x43\x43\x6f\x78\x57\x36\x38','\x69\x6d\x6f\x6f\x57\x4f\x44\x44\x6b\x47','\x41\x65\x68\x63\x48\x49\x71','\x67\x61\x56\x64\x53\x75\x52\x63\x56\x33\x4a\x63\x4a\x38\x6f\x61','\x74\x6d\x6f\x52\x45\x63\x42\x63\x53\x53\x6f\x77\x77\x6d\x6f\x44','\x62\x4d\x4e\x63\x50\x6d\x6b\x5a\x57\x52\x6c\x63\x4e\x53\x6b\x2b\x57\x35\x75\x4d\x77\x61','\x6f\x53\x6f\x72\x57\x34\x78\x64\x56\x48\x43','\x79\x77\x50\x71\x57\x51\x69\x39','\x57\x51\x37\x64\x55\x32\x56\x64\x48\x38\x6b\x73\x6c\x53\x6b\x46\x57\x34\x4f','\x57\x52\x4f\x59\x73\x74\x33\x63\x52\x71','\x57\x36\x78\x63\x53\x73\x33\x63\x4a\x61','\x57\x37\x54\x33\x57\x52\x4e\x64\x48\x61\x74\x63\x55\x6d\x6b\x62\x67\x47','\x41\x76\x4a\x63\x47\x49\x4f\x56\x67\x43\x6b\x5a','\x57\x51\x72\x65\x66\x4b\x75\x52','\x57\x35\x46\x64\x4f\x64\x43\x77\x78\x38\x6f\x54\x75\x4c\x4f','\x79\x6d\x6b\x32\x57\x34\x74\x64\x55\x43\x6b\x33\x57\x51\x74\x64\x49\x47','\x44\x58\x37\x64\x4f\x58\x6a\x4b\x79\x43\x6b\x74\x67\x57','\x57\x37\x4a\x64\x4f\x57\x71\x4d\x57\x52\x53','\x57\x36\x50\x65\x57\x51\x74\x64\x50\x58\x69','\x57\x50\x75\x4e\x41\x4d\x52\x63\x56\x53\x6b\x55\x57\x37\x38\x68','\x79\x6d\x6b\x7a\x57\x35\x6a\x41\x57\x34\x70\x64\x48\x43\x6f\x46\x6d\x71','\x73\x53\x6b\x33\x57\x34\x37\x64\x51\x6d\x6b\x51\x57\x4f\x78\x64\x4d\x66\x34','\x76\x31\x4b\x30\x6c\x68\x30','\x57\x35\x50\x70\x57\x50\x69','\x57\x37\x33\x64\x56\x5a\x75\x63\x76\x57','\x6a\x53\x6b\x53\x6c\x38\x6f\x75\x57\x35\x4f\x47\x57\x34\x69\x75','\x6c\x6d\x6f\x54\x57\x50\x54\x49','\x57\x35\x56\x64\x51\x43\x6b\x34\x6c\x61\x75','\x43\x6d\x6f\x4b\x57\x36\x75\x2b\x57\x50\x56\x64\x4e\x58\x47\x4d','\x57\x35\x33\x63\x4e\x30\x79','\x79\x43\x6f\x5a\x57\x36\x38\x49\x57\x4f\x6d','\x57\x36\x6e\x32\x57\x52\x79\x32\x72\x43\x6f\x61\x63\x6d\x6b\x30','\x57\x35\x47\x30\x57\x36\x2f\x64\x50\x6d\x6f\x68','\x72\x53\x6b\x44\x57\x35\x4e\x64\x48\x53\x6b\x41','\x57\x35\x64\x63\x55\x38\x6b\x6a\x57\x52\x61\x71','\x44\x38\x6b\x6f\x57\x34\x31\x75\x57\x35\x47','\x78\x47\x68\x63\x4b\x4b\x74\x64\x47\x6d\x6f\x57','\x57\x34\x44\x7a\x73\x78\x74\x64\x55\x71','\x77\x4c\x53\x56\x57\x37\x30','\x66\x49\x65\x45\x6d\x63\x4b','\x57\x37\x4b\x58\x68\x43\x6f\x59\x57\x4f\x79','\x78\x38\x6f\x48\x7a\x64\x52\x63\x4b\x47','\x70\x38\x6b\x33\x45\x43\x6f\x71\x57\x35\x65\x58\x57\x35\x53\x2b\x57\x4f\x76\x73','\x57\x52\x48\x73\x57\x4f\x33\x64\x47\x53\x6b\x34','\x57\x4f\x6e\x34\x74\x38\x6b\x69\x57\x35\x46\x64\x4a\x53\x6b\x4a\x6f\x6d\x6b\x4f\x57\x51\x5a\x64\x51\x71','\x57\x37\x62\x77\x43\x77\x64\x64\x52\x59\x4a\x64\x52\x57','\x42\x59\x76\x4b\x63\x64\x38','\x76\x76\x70\x64\x54\x61','\x57\x34\x48\x63\x72\x68\x37\x64\x48\x65\x5a\x64\x4c\x53\x6b\x4a','\x6b\x67\x58\x38\x42\x49\x31\x35\x46\x43\x6f\x71','\x57\x35\x42\x64\x51\x62\x64\x64\x48\x74\x47\x45\x57\x36\x61','\x6b\x53\x6f\x75\x45\x43\x6f\x37\x57\x37\x70\x63\x51\x38\x6f\x62','\x72\x72\x66\x55\x6d\x57\x47','\x57\x4f\x33\x63\x49\x38\x6f\x65\x57\x35\x4e\x63\x4c\x61','\x67\x43\x6b\x73\x75\x43\x6f\x72','\x62\x4d\x70\x63\x4f\x53\x6b\x5a\x57\x34\x46\x64\x56\x38\x6b\x68\x57\x34\x65\x73\x73\x43\x6f\x69\x57\x37\x69','\x61\x38\x6b\x76\x77\x53\x6f\x42\x57\x52\x34','\x78\x6d\x6b\x62\x57\x4f\x6d','\x57\x50\x70\x64\x4d\x31\x4e\x63\x52\x57','\x46\x71\x46\x64\x49\x73\x7a\x76','\x46\x32\x56\x64\x4b\x57\x64\x63\x4a\x61','\x57\x52\x66\x66\x65\x33\x4f\x57','\x57\x4f\x61\x58\x43\x74\x4a\x63\x49\x61','\x44\x67\x44\x76\x57\x52\x69\x39','\x69\x38\x6b\x59\x41\x38\x6f\x52','\x65\x67\x44\x67\x43\x6d\x6b\x61','\x57\x35\x78\x64\x4e\x6d\x6b\x52\x63\x57','\x57\x35\x79\x4f\x63\x43\x6f\x78\x57\x4f\x78\x64\x53\x6d\x6b\x61','\x6e\x75\x6e\x4b\x44\x53\x6b\x59','\x57\x4f\x58\x5a\x73\x38\x6f\x46\x57\x34\x4b\x48','\x57\x35\x52\x63\x47\x75\x75\x33\x73\x38\x6b\x41','\x57\x4f\x62\x4e\x76\x6d\x6f\x64\x57\x35\x71\x47\x45\x38\x6b\x34','\x57\x34\x37\x64\x51\x58\x47\x76\x57\x51\x34','\x57\x36\x5a\x64\x49\x48\x75\x6b\x73\x57','\x57\x36\x44\x4b\x57\x52\x37\x63\x4f\x43\x6b\x4f','\x70\x63\x4c\x6a\x57\x51\x61\x53\x57\x50\x37\x63\x4f\x57','\x57\x34\x76\x63\x74\x4d\x4a\x64\x4f\x31\x56\x64\x47\x6d\x6b\x59','\x57\x37\x48\x76\x79\x31\x37\x64\x4f\x5a\x42\x64\x50\x74\x4b','\x57\x51\x43\x58\x77\x43\x6f\x66\x74\x61','\x77\x53\x6b\x2b\x57\x36\x4e\x64\x4e\x38\x6b\x47','\x57\x35\x4e\x64\x4e\x6d\x6b\x51\x67\x72\x37\x64\x50\x65\x57','\x73\x65\x44\x31\x57\x52\x75\x70','\x57\x35\x6a\x69\x75\x32\x38','\x57\x52\x30\x6c\x41\x5a\x56\x63\x4e\x61','\x57\x34\x6c\x64\x4d\x48\x6c\x64\x4d\x78\x6c\x64\x56\x43\x6b\x47\x57\x35\x79','\x44\x53\x6b\x45\x41\x53\x6f\x56\x57\x37\x78\x63\x53\x6d\x6f\x42\x57\x51\x75','\x6c\x49\x57\x32\x6e\x73\x4f','\x6a\x6d\x6f\x4b\x57\x51\x64\x64\x4d\x43\x6f\x49','\x71\x43\x6f\x65\x63\x43\x6b\x68\x57\x36\x4f\x6e\x57\x36\x4e\x64\x50\x6d\x6f\x44\x74\x6d\x6b\x64\x57\x51\x57\x45','\x57\x34\x4e\x63\x48\x53\x6b\x58\x57\x52\x34\x6c','\x70\x6d\x6f\x52\x57\x50\x54\x50\x6f\x43\x6f\x43\x57\x51\x30','\x57\x35\x42\x63\x55\x53\x6b\x42\x57\x4f\x69\x30','\x57\x52\x50\x61\x57\x4f\x6c\x64\x51\x6d\x6b\x44\x57\x35\x57\x76\x57\x50\x75','\x46\x6d\x6b\x4f\x57\x34\x74\x64\x56\x43\x6b\x37\x57\x4f\x34','\x62\x53\x6f\x4a\x57\x37\x57','\x73\x61\x35\x4b\x63\x64\x30','\x57\x34\x70\x64\x49\x57\x74\x64\x49\x71','\x57\x51\x34\x41\x46\x32\x2f\x63\x50\x71','\x79\x5a\x54\x30\x6c\x5a\x48\x41\x78\x6d\x6f\x67','\x57\x52\x79\x52\x46\x6d\x6f\x34\x76\x71','\x6c\x6d\x6f\x2b\x57\x50\x2f\x64\x4f\x43\x6f\x34\x67\x43\x6b\x35\x64\x47','\x57\x34\x50\x58\x57\x36\x6d\x55\x57\x50\x6d','\x77\x38\x6b\x58\x57\x37\x50\x30\x57\x37\x2f\x64\x56\x38\x6f\x50\x65\x47','\x57\x35\x74\x63\x48\x48\x6c\x63\x4b\x66\x79','\x57\x35\x5a\x64\x4f\x64\x37\x64\x51\x49\x69','\x43\x53\x6b\x54\x57\x50\x44\x71\x57\x4f\x30','\x71\x38\x6b\x79\x57\x35\x35\x63\x57\x37\x6d','\x77\x72\x37\x63\x54\x68\x64\x64\x51\x71','\x76\x38\x6f\x38\x44\x71','\x6d\x72\x30\x59\x62\x63\x34','\x77\x53\x6b\x6c\x57\x35\x58\x44\x57\x34\x61','\x78\x75\x53\x37\x6b\x68\x38\x45\x45\x4b\x65','\x76\x75\x4a\x64\x56\x58\x56\x63\x54\x78\x46\x63\x4d\x43\x6f\x44','\x57\x36\x66\x37\x57\x52\x71\x5a\x78\x53\x6f\x39\x66\x6d\x6b\x66','\x57\x34\x2f\x64\x55\x43\x6f\x4e','\x57\x52\x66\x46\x79\x57','\x57\x35\x35\x32\x57\x4f\x78\x64\x49\x59\x75','\x41\x65\x4e\x63\x47\x63\x53\x38\x61\x6d\x6b\x4c','\x57\x35\x4a\x64\x56\x72\x6d','\x57\x4f\x34\x45\x45\x4b\x70\x63\x4b\x71','\x57\x35\x42\x63\x48\x75\x6d\x58','\x57\x4f\x4e\x63\x52\x53\x6f\x79\x57\x37\x4f','\x76\x53\x6b\x61\x46\x38\x6f\x31\x41\x4d\x5a\x63\x51\x43\x6f\x59','\x57\x34\x39\x4f\x57\x51\x79\x33\x77\x6d\x6f\x48\x67\x6d\x6b\x47','\x78\x75\x34\x2b\x57\x37\x47','\x78\x49\x70\x64\x4b\x43\x6f\x58\x57\x4f\x46\x63\x51\x43\x6b\x6a','\x79\x30\x4b\x2f\x57\x35\x43\x7a','\x71\x6d\x6b\x7a\x72\x43\x6f\x55\x45\x71','\x57\x35\x76\x44\x57\x34\x4f\x62\x57\x50\x38','\x66\x78\x6a\x73\x6f\x57','\x57\x36\x50\x7a\x57\x51\x64\x64\x48\x48\x38','\x57\x37\x62\x77\x43\x77\x64\x64\x52\x59\x4a\x64\x52\x5a\x71','\x67\x6d\x6f\x6f\x57\x34\x34\x66','\x57\x34\x69\x4b\x63\x43\x6f\x75\x57\x4f\x33\x64\x51\x43\x6b\x36\x63\x71','\x57\x34\x4a\x64\x48\x77\x52\x64\x53\x48\x74\x64\x4b\x4e\x6c\x63\x4c\x47','\x57\x34\x78\x64\x4b\x53\x6b\x54','\x57\x4f\x5a\x64\x47\x66\x42\x64\x55\x71','\x57\x51\x56\x64\x50\x6d\x6b\x66\x6f\x53\x6f\x75','\x79\x53\x6f\x47\x44\x4a\x37\x63\x48\x71','\x57\x35\x6a\x63\x73\x33\x37\x64\x55\x71','\x57\x37\x50\x51\x71\x4b\x52\x64\x49\x47','\x57\x35\x48\x66\x57\x4f\x70\x63\x4e\x47','\x57\x37\x72\x50\x57\x51\x56\x63\x53\x43\x6b\x32','\x68\x6d\x6b\x42\x78\x53\x6f\x74\x57\x52\x50\x74\x57\x52\x47','\x46\x53\x6b\x70\x57\x34\x46\x64\x49\x43\x6b\x2b','\x42\x30\x68\x63\x48\x49\x79\x31','\x72\x38\x6b\x39\x57\x4f\x54\x37\x57\x50\x57','\x57\x37\x58\x51\x57\x51\x42\x64\x49\x61\x78\x63\x51\x53\x6b\x43','\x57\x52\x4c\x5a\x57\x4f\x42\x64\x4d\x53\x6b\x43','\x57\x37\x6d\x6a\x57\x36\x74\x64\x51\x6d\x6f\x34','\x7a\x4b\x39\x45\x57\x52\x6d\x58','\x57\x52\x44\x78\x44\x43\x6f\x37\x57\x34\x38','\x78\x6d\x6b\x56\x57\x36\x39\x30\x57\x37\x4a\x64\x56\x38\x6f\x50\x63\x57','\x57\x50\x58\x31\x75\x38\x6f\x42\x57\x34\x47\x39','\x7a\x4d\x4c\x73\x57\x51\x71\x32\x57\x51\x4e\x63\x54\x43\x6b\x32','\x6a\x33\x66\x39\x73\x38\x6b\x6a','\x79\x6d\x6f\x56\x57\x37\x75','\x72\x72\x70\x64\x55\x38\x6f\x54\x57\x51\x43','\x57\x4f\x4b\x43\x75\x53\x6f\x49\x78\x71','\x78\x38\x6b\x47\x57\x50\x39\x65\x57\x52\x65','\x79\x43\x6b\x69\x57\x34\x31\x73\x57\x34\x74\x64\x4a\x6d\x6f\x46\x6f\x71','\x57\x37\x5a\x63\x4a\x75\x6d\x47\x78\x43\x6b\x43\x57\x35\x47','\x57\x37\x4e\x64\x55\x38\x6b\x77\x63\x61\x75','\x57\x36\x57\x51\x57\x37\x68\x64\x48\x53\x6f\x50','\x69\x6d\x6f\x68\x57\x4f\x7a\x69\x66\x61','\x76\x30\x61\x76\x57\x37\x79\x55\x57\x50\x71\x69\x57\x35\x71','\x57\x34\x4a\x64\x55\x38\x6f\x42\x57\x4f\x64\x64\x53\x71','\x75\x66\x42\x64\x56\x58\x75','\x44\x38\x6b\x70\x45\x38\x6f\x5a\x57\x36\x4e\x63\x50\x6d\x6f\x42\x57\x52\x75','\x72\x57\x42\x63\x56\x67\x64\x64\x50\x61','\x79\x77\x35\x79\x57\x37\x6e\x54\x57\x34\x61','\x78\x77\x61\x52\x6e\x77\x47','\x6e\x64\x4b\x75\x6f\x61','\x46\x43\x6b\x33\x57\x37\x70\x64\x51\x6d\x6b\x39\x57\x4f\x6c\x64\x47\x48\x71','\x78\x59\x33\x64\x54\x71\x54\x76','\x57\x37\x44\x65\x57\x4f\x56\x63\x4b\x53\x6b\x75\x57\x35\x39\x47','\x57\x36\x4e\x64\x47\x61\x71\x30\x57\x50\x53','\x57\x37\x50\x6a\x57\x51\x37\x64\x49\x64\x4f','\x65\x38\x6f\x6c\x6a\x38\x6b\x35\x6e\x48\x52\x64\x54\x6d\x6f\x4f\x57\x51\x46\x63\x4c\x4a\x46\x64\x4e\x48\x79','\x57\x36\x42\x63\x53\x74\x64\x63\x4a\x4c\x34','\x57\x50\x79\x37\x77\x75\x74\x63\x4a\x61','\x78\x53\x6b\x71\x57\x4f\x48\x32\x57\x52\x34','\x71\x47\x2f\x64\x54\x57\x6e\x62','\x74\x66\x79\x51\x6c\x57','\x44\x72\x76\x52\x6f\x57\x75','\x77\x75\x6c\x64\x54\x48\x74\x63\x54\x30\x42\x63\x4d\x61','\x44\x67\x6e\x38\x57\x52\x61\x54\x57\x50\x46\x63\x56\x61','\x42\x43\x6f\x58\x70\x6d\x6b\x6a\x57\x34\x4b','\x45\x38\x6f\x5a\x57\x37\x53','\x6d\x74\x61\x42\x6f\x49\x50\x37\x57\x52\x71','\x68\x53\x6f\x30\x57\x51\x78\x64\x48\x43\x6f\x36','\x57\x35\x79\x53\x57\x37\x56\x64\x48\x38\x6f\x61','\x73\x31\x38\x37\x6f\x67\x34','\x57\x35\x37\x64\x51\x53\x6b\x30\x63\x63\x38','\x57\x37\x44\x58\x57\x4f\x65\x72\x71\x57','\x57\x36\x2f\x64\x52\x74\x53\x67\x76\x57','\x73\x38\x6f\x32\x6e\x38\x6b\x6d\x57\x35\x38','\x74\x53\x6b\x44\x74\x38\x6f\x6f\x7a\x57','\x57\x52\x38\x53\x46\x61','\x6a\x38\x6f\x73\x57\x34\x46\x64\x56\x47\x47','\x6a\x53\x6f\x69\x57\x37\x6c\x64\x47\x4a\x34','\x57\x34\x4c\x4b\x75\x68\x5a\x64\x51\x47','\x44\x73\x39\x30\x70\x59\x4b','\x57\x35\x4e\x64\x4c\x67\x37\x64\x51\x61\x37\x64\x48\x4e\x6c\x63\x4a\x47','\x46\x67\x4e\x64\x51\x49\x56\x63\x48\x61','\x73\x6d\x6b\x6b\x57\x36\x74\x64\x4a\x53\x6b\x4a','\x67\x6d\x6f\x46\x57\x36\x46\x64\x54\x74\x71','\x41\x6d\x6b\x45\x42\x71','\x73\x38\x6f\x4a\x77\x4a\x68\x63\x56\x47','\x61\x33\x72\x72\x79\x53\x6b\x72\x66\x65\x42\x63\x4e\x61','\x78\x6d\x6b\x62\x57\x4f\x6e\x6e\x57\x52\x62\x55\x57\x4f\x6c\x64\x52\x57','\x57\x51\x6a\x62\x61\x61','\x57\x34\x70\x63\x4f\x6d\x6b\x4d\x57\x52\x30\x58\x41\x47','\x79\x43\x6b\x31\x57\x34\x68\x64\x56\x57','\x57\x4f\x56\x64\x48\x66\x56\x64\x56\x53\x6b\x2f\x6b\x43\x6b\x30\x57\x36\x75','\x57\x52\x65\x42\x78\x43\x6f\x2b\x7a\x53\x6f\x53\x57\x52\x34\x4c','\x74\x75\x4a\x63\x48\x47\x53\x76','\x78\x53\x6f\x67\x57\x36\x47\x2b\x57\x50\x53','\x57\x4f\x4e\x64\x49\x43\x6b\x43\x61\x53\x6f\x34\x73\x48\x4b\x33','\x57\x37\x4c\x32\x57\x51\x74\x64\x4d\x71\x56\x63\x47\x6d\x6b\x6e\x62\x61','\x57\x34\x4a\x64\x48\x4a\x78\x64\x49\x48\x75','\x57\x35\x4c\x31\x7a\x32\x42\x64\x53\x61','\x43\x43\x6f\x35\x57\x35\x38\x4f\x57\x4f\x5a\x64\x4e\x49\x34\x52','\x57\x35\x72\x69\x75\x68\x46\x64\x54\x4b\x52\x64\x4b\x61','\x57\x52\x79\x71\x77\x53\x6f\x58','\x57\x50\x64\x63\x54\x43\x6f\x71\x57\x36\x64\x63\x4a\x74\x53','\x57\x4f\x56\x64\x4e\x53\x6b\x41\x70\x38\x6f\x56','\x43\x72\x37\x64\x51\x58\x50\x4b','\x42\x32\x62\x6f\x79\x33\x7a\x59\x57\x4f\x46\x64\x4a\x53\x6f\x78\x63\x43\x6f\x67','\x57\x34\x62\x46\x74\x33\x79','\x57\x34\x66\x4b\x57\x50\x4a\x63\x51\x43\x6b\x4f','\x45\x6d\x6f\x4d\x70\x6d\x6b\x6c\x57\x35\x69\x65\x57\x36\x38\x7a','\x77\x47\x42\x63\x4c\x65\x53','\x57\x51\x6d\x33\x45\x4a\x64\x63\x53\x38\x6b\x46\x57\x4f\x54\x35','\x57\x34\x6c\x64\x49\x64\x71\x44\x57\x51\x71','\x77\x53\x6b\x59\x57\x36\x7a\x6f\x57\x36\x79','\x75\x47\x42\x64\x48\x53\x6f\x74\x57\x4f\x30','\x57\x37\x2f\x64\x48\x63\x65\x71\x57\x4f\x69\x30\x57\x34\x4b\x6c','\x57\x36\x66\x58\x57\x52\x53\x37\x78\x53\x6f\x31\x63\x6d\x6b\x6b','\x44\x38\x6f\x32\x77\x61\x42\x63\x4b\x47','\x76\x49\x78\x64\x4a\x4a\x66\x38','\x57\x37\x37\x64\x49\x74\x4f\x63\x57\x4f\x69\x55\x57\x37\x75\x43','\x57\x37\x62\x5a\x57\x52\x5a\x63\x49\x43\x6b\x6e','\x61\x38\x6b\x43\x73\x53\x6f\x6d\x57\x52\x79','\x57\x4f\x5a\x63\x52\x53\x6f\x66','\x79\x43\x6f\x5a\x57\x36\x43\x4f\x57\x4f\x65','\x73\x43\x6f\x43\x77\x49\x78\x63\x4d\x61','\x41\x63\x7a\x6f\x6d\x59\x62\x61\x41\x38\x6f\x77','\x57\x52\x76\x45\x61\x75\x71','\x57\x36\x44\x37\x57\x51\x54\x59\x72\x6d\x6f\x38\x68\x43\x6b\x5a','\x74\x43\x6b\x46\x57\x34\x42\x64\x51\x38\x6b\x4f','\x76\x30\x4f\x76\x57\x36\x30\x4e\x57\x50\x4b\x62\x57\x35\x6d','\x57\x52\x4b\x79\x74\x38\x6f\x45\x42\x53\x6f\x58\x57\x51\x38\x31','\x65\x32\x6e\x76\x43\x43\x6b\x67\x67\x71','\x57\x35\x4e\x64\x4d\x6d\x6b\x4e','\x57\x52\x72\x63\x61\x48\x69','\x61\x48\x42\x64\x49\x47\x4e\x63\x4b\x4e\x33\x63\x4c\x53\x6f\x64','\x57\x36\x2f\x64\x52\x64\x56\x64\x48\x75\x57','\x57\x36\x74\x63\x4a\x61\x4e\x63\x4c\x65\x43','\x6d\x53\x6f\x54\x57\x4f\x62\x50','\x76\x6d\x6f\x2f\x44\x5a\x37\x63\x56\x53\x6f\x2b\x76\x6d\x6f\x55','\x46\x47\x78\x63\x51\x32\x74\x64\x48\x61','\x61\x33\x72\x72\x79\x53\x6b\x72\x66\x65\x42\x63\x4b\x61','\x7a\x53\x6f\x53\x6f\x71','\x45\x53\x6b\x39\x57\x34\x68\x64\x52\x53\x6b\x53\x57\x4f\x6d','\x6c\x38\x6f\x57\x57\x4f\x62\x5a\x70\x43\x6f\x33\x57\x51\x66\x61','\x57\x37\x78\x64\x4e\x47\x57\x7a\x57\x4f\x6d\x2f\x57\x37\x4b\x71','\x62\x53\x6b\x6e\x78\x6d\x6f\x45\x57\x51\x44\x79','\x57\x50\x57\x53\x41\x5a\x6c\x64\x56\x43\x6b\x6d\x57\x4f\x54\x59','\x57\x35\x34\x59\x61\x6d\x6b\x46\x57\x4f\x39\x35\x41\x43\x6b\x52\x57\x37\x46\x63\x54\x78\x2f\x63\x56\x47','\x63\x77\x62\x61\x78\x6d\x6b\x62\x66\x68\x52\x63\x4d\x61','\x74\x77\x6c\x63\x56\x58\x57\x52','\x57\x34\x6e\x65\x57\x50\x70\x63\x50\x53\x6b\x35','\x57\x35\x44\x79\x57\x50\x4a\x63\x4e\x38\x6b\x6b','\x57\x51\x35\x43\x57\x52\x78\x64\x51\x43\x6b\x50\x57\x35\x57\x46\x57\x4f\x4b','\x57\x35\x6a\x63\x42\x68\x74\x64\x4f\x65\x5a\x64\x48\x38\x6b\x73','\x57\x52\x42\x64\x47\x43\x6b\x34\x63\x53\x6f\x36','\x57\x34\x4c\x6b\x7a\x66\x37\x64\x56\x47','\x43\x6d\x6f\x61\x77\x48\x46\x63\x48\x57','\x65\x33\x6a\x76\x44\x38\x6b\x71\x61\x47','\x6a\x74\x65\x6c\x57\x4f\x34\x4f\x57\x4f\x68\x63\x51\x43\x6b\x52\x44\x71','\x57\x52\x44\x4d\x77\x6d\x6f\x34\x57\x37\x47','\x43\x57\x4e\x64\x53\x4a\x31\x2f\x79\x6d\x6b\x2b\x6d\x57','\x78\x6d\x6b\x62\x57\x4f\x6e\x6e\x57\x52\x62\x55\x57\x4f\x69','\x57\x37\x39\x38\x74\x66\x4a\x64\x4f\x47','\x57\x34\x70\x64\x54\x43\x6f\x54\x57\x51\x56\x64\x55\x43\x6f\x51\x46\x47','\x66\x38\x6b\x43\x74\x6d\x6f\x45','\x61\x6d\x6b\x6a\x73\x53\x6f\x77\x57\x52\x31\x41\x57\x52\x74\x64\x54\x61','\x57\x36\x66\x37\x57\x52\x71\x5a\x78\x53\x6f\x39\x66\x61','\x57\x36\x5a\x63\x55\x43\x6b\x4e\x57\x50\x6d\x47','\x57\x35\x6c\x63\x4a\x75\x57\x31\x74\x6d\x6b\x67','\x44\x57\x6c\x63\x53\x4d\x33\x64\x47\x61','\x57\x36\x34\x6a\x57\x35\x4e\x64\x51\x53\x6f\x35','\x77\x38\x6f\x73\x57\x37\x57\x53\x57\x52\x43','\x79\x6d\x6b\x45\x57\x4f\x54\x63','\x75\x38\x6b\x7a\x57\x36\x5a\x64\x51\x6d\x6b\x79','\x71\x6d\x6b\x6c\x57\x4f\x58\x63\x57\x52\x57','\x57\x35\x7a\x78\x57\x37\x6d\x71','\x73\x38\x6b\x39\x57\x50\x7a\x6c\x57\x51\x30','\x71\x6d\x6b\x56\x57\x4f\x6e\x52\x57\x4f\x30','\x57\x36\x76\x4f\x57\x51\x2f\x64\x48\x62\x4a\x63\x4a\x6d\x6b\x72\x65\x47','\x57\x34\x46\x64\x51\x4a\x69\x6c','\x57\x52\x75\x53\x46\x73\x30','\x57\x51\x68\x64\x4c\x4e\x64\x64\x4d\x38\x6b\x41','\x57\x35\x74\x63\x47\x43\x6b\x4e\x57\x50\x69\x77','\x57\x34\x39\x56\x57\x50\x5a\x64\x51\x4a\x6d','\x73\x76\x47\x4b\x57\x35\x43\x52','\x57\x37\x44\x31\x73\x77\x56\x64\x48\x47','\x57\x51\x30\x6a\x73\x43\x6f\x37\x79\x43\x6f\x4c','\x57\x4f\x6c\x63\x47\x53\x6f\x50\x57\x34\x74\x63\x4c\x61','\x57\x36\x62\x44\x43\x76\x42\x64\x47\x71','\x57\x34\x78\x64\x4b\x67\x6c\x64\x4f\x47','\x57\x37\x46\x64\x4c\x64\x30\x77\x57\x4f\x69\x31','\x57\x51\x6c\x64\x47\x53\x6b\x56\x69\x38\x6f\x2b','\x6a\x6d\x6f\x54\x57\x50\x6c\x64\x55\x38\x6f\x2b\x6f\x43\x6b\x74\x67\x71','\x57\x35\x5a\x64\x56\x61\x74\x64\x48\x49\x6d','\x69\x43\x6f\x53\x57\x34\x2f\x64\x4e\x62\x47','\x78\x38\x6b\x30\x57\x35\x5a\x64\x4c\x61\x76\x63\x57\x50\x64\x64\x4c\x61','\x57\x34\x33\x63\x50\x53\x6b\x4f\x57\x52\x79','\x57\x35\x7a\x36\x57\x52\x47\x69\x43\x47','\x79\x53\x6f\x53\x6a\x38\x6b\x69','\x75\x75\x68\x64\x56\x48\x33\x63\x4c\x30\x57','\x78\x30\x56\x64\x56\x4c\x46\x63\x54\x66\x56\x63\x4b\x53\x6f\x62','\x42\x53\x6f\x6f\x69\x43\x6b\x5a\x57\x35\x47','\x79\x53\x6f\x59\x64\x38\x6b\x63\x57\x34\x53','\x57\x36\x68\x64\x4b\x4d\x64\x64\x51\x4b\x64\x64\x4c\x75\x4a\x63\x47\x47','\x57\x37\x2f\x64\x53\x38\x6b\x56\x63\x5a\x69','\x76\x71\x46\x63\x49\x75\x52\x64\x4e\x47','\x45\x75\x31\x38\x57\x50\x4b\x36','\x6c\x43\x6f\x32\x57\x4f\x38\x2f','\x57\x36\x48\x4a\x75\x68\x52\x64\x4a\x57','\x57\x50\x58\x31\x71\x6d\x6f\x67\x57\x35\x6d\x50\x44\x38\x6b\x62','\x76\x71\x39\x58\x6d\x62\x53','\x77\x30\x44\x50\x57\x50\x69\x51','\x45\x4d\x6e\x62','\x74\x72\x37\x64\x47\x6d\x6f\x47\x57\x4f\x61','\x57\x51\x76\x46\x61\x30\x38\x51\x70\x47','\x64\x6d\x6f\x66\x57\x51\x72\x76\x66\x61','\x57\x34\x54\x6d\x77\x66\x74\x64\x53\x75\x2f\x64\x4d\x43\x6b\x34','\x57\x34\x44\x37\x57\x4f\x43\x4c\x42\x71','\x46\x30\x71\x42\x65\x32\x43','\x61\x43\x6f\x47\x57\x36\x6c\x64\x51\x61\x44\x42\x57\x51\x75','\x57\x34\x33\x63\x4a\x74\x6c\x63\x47\x68\x71','\x79\x6d\x6b\x72\x57\x51\x31\x54\x57\x4f\x34','\x69\x6d\x6f\x6f\x57\x4f\x47\x63\x57\x50\x4a\x64\x4b\x38\x6f\x42\x64\x6d\x6f\x66\x57\x36\x4b\x72','\x64\x38\x6f\x32\x57\x37\x74\x64\x51\x62\x43','\x57\x36\x42\x64\x4a\x53\x6f\x42\x57\x50\x46\x64\x54\x61','\x57\x50\x58\x56\x76\x6d\x6f\x41\x57\x4f\x56\x64\x53\x38\x6b\x64\x61\x47','\x57\x36\x7a\x47\x57\x37\x30\x4e\x57\x51\x38','\x6f\x53\x6b\x58\x45\x43\x6f\x46\x57\x4f\x4b\x69\x57\x35\x30\x4f\x57\x51\x6a\x57\x42\x47','\x6c\x6d\x6f\x52\x57\x4f\x72\x55\x6e\x53\x6f\x77\x57\x50\x54\x6e','\x57\x34\x52\x64\x4d\x68\x46\x64\x49\x72\x78\x64\x47\x32\x2f\x63\x47\x61','\x57\x37\x2f\x64\x4e\x38\x6f\x43\x57\x51\x4e\x64\x49\x57','\x45\x6d\x6b\x30\x57\x51\x37\x64\x47\x53\x6f\x4e\x68\x43\x6b\x36\x65\x71','\x72\x38\x6b\x69\x57\x51\x4c\x6f\x57\x51\x35\x4c\x57\x50\x78\x64\x53\x57','\x57\x36\x46\x63\x4f\x4a\x42\x63\x47\x61','\x57\x37\x66\x4f\x71\x67\x4e\x64\x47\x61','\x57\x52\x31\x77\x57\x50\x4f','\x43\x38\x6b\x77\x44\x6d\x6f\x32\x71\x57','\x42\x67\x65\x54\x57\x37\x43\x43','\x57\x34\x7a\x66\x57\x4f\x4e\x63\x4e\x38\x6b\x75','\x71\x62\x74\x63\x4c\x4d\x64\x64\x4c\x71','\x45\x43\x6f\x5a\x57\x36\x38\x4d\x57\x52\x64\x64\x49\x49\x4f\x32','\x78\x67\x56\x64\x4e\x48\x2f\x63\x55\x57','\x57\x37\x74\x64\x4c\x5a\x75\x44\x57\x50\x38\x5a\x57\x34\x6d','\x42\x30\x57\x37\x57\x36\x4b\x7a','\x57\x34\x70\x64\x4d\x6d\x6b\x2b\x64\x49\x5a\x64\x51\x65\x71\x6d','\x72\x6d\x6f\x49\x63\x38\x6b\x66\x57\x36\x69','\x57\x51\x54\x78\x57\x4f\x42\x64\x52\x43\x6b\x56\x57\x35\x61\x58\x57\x50\x65','\x65\x43\x6f\x77\x57\x51\x50\x39\x70\x47','\x57\x35\x78\x64\x55\x53\x6b\x55\x64\x5a\x38','\x57\x50\x7a\x4c\x6c\x32\x61\x53','\x57\x35\x31\x68\x57\x4f\x5a\x63\x4b\x43\x6b\x45','\x64\x72\x30\x71\x57\x36\x47\x65\x57\x51\x43\x70\x57\x35\x65','\x6b\x38\x6f\x32\x57\x50\x54\x55\x6e\x53\x6f\x77','\x71\x43\x6b\x6a\x57\x36\x4e\x64\x54\x43\x6b\x6f','\x41\x49\x6a\x6c\x6f\x48\x71','\x6b\x68\x66\x78\x7a\x43\x6b\x70','\x57\x51\x76\x78\x65\x65\x53','\x57\x52\x6e\x56\x66\x76\x34\x77','\x57\x52\x53\x70\x73\x43\x6f\x39\x46\x71','\x46\x43\x6f\x78\x6b\x43\x6b\x61\x57\x36\x47','\x74\x53\x6b\x48\x57\x36\x2f\x64\x4b\x6d\x6b\x79','\x57\x37\x64\x64\x53\x72\x69\x35\x44\x47','\x57\x50\x46\x64\x4f\x47\x61','\x42\x66\x4b\x2f\x57\x34\x38\x37','\x57\x50\x58\x54\x77\x38\x6f\x6d\x57\x35\x47','\x57\x4f\x30\x65\x63\x5a\x38','\x45\x4b\x61\x38\x57\x36\x6d\x36','\x6f\x53\x6f\x55\x57\x50\x46\x63\x4f\x6d\x6b\x35\x78\x61','\x57\x4f\x64\x64\x51\x6d\x6b\x73\x63\x53\x6f\x6b','\x57\x37\x50\x57\x57\x52\x68\x64\x50\x49\x79','\x57\x37\x6a\x63\x41\x67\x52\x64\x47\x61','\x6e\x53\x6f\x54\x57\x50\x34','\x57\x37\x33\x64\x4b\x64\x38\x63\x57\x50\x6d','\x57\x36\x34\x55\x57\x36\x52\x64\x4c\x57','\x78\x31\x4e\x63\x4e\x63\x79','\x57\x51\x56\x64\x51\x32\x52\x64\x4a\x57\x46\x64\x52\x78\x70\x63\x56\x61','\x57\x35\x30\x4e\x68\x43\x6f\x76\x57\x4f\x33\x64\x53\x38\x6b\x61\x6e\x61','\x57\x37\x48\x34\x57\x52\x52\x63\x50\x38\x6b\x72','\x57\x37\x6a\x51\x42\x75\x4e\x64\x4d\x57','\x57\x35\x46\x64\x55\x43\x6f\x54\x57\x51\x4a\x64\x53\x43\x6f\x5a\x72\x6d\x6f\x6d','\x66\x43\x6b\x32\x79\x74\x70\x63\x4f\x38\x6f\x34\x71\x47','\x57\x52\x71\x51\x42\x5a\x5a\x63\x52\x53\x6b\x6d','\x72\x38\x6b\x45\x46\x43\x6f\x71\x57\x35\x75','\x57\x35\x52\x63\x4a\x78\x65\x33\x77\x38\x6b\x43\x57\x50\x31\x6d','\x57\x36\x74\x64\x4e\x6d\x6b\x77\x6a\x49\x4b','\x79\x53\x6b\x47\x57\x36\x78\x64\x50\x53\x6b\x6e','\x73\x61\x48\x6f\x6a\x61\x75','\x57\x34\x68\x64\x4a\x43\x6f\x41\x6d\x43\x6b\x59\x74\x62\x6d\x78','\x41\x63\x39\x30\x6d\x49\x4c\x2f\x41\x53\x6f\x6e','\x57\x35\x46\x64\x4c\x6d\x6b\x36\x67\x71','\x45\x38\x6f\x5a\x57\x35\x6d\x55\x57\x50\x33\x64\x49\x73\x38\x36','\x57\x4f\x4a\x63\x55\x43\x6f\x30\x57\x36\x37\x63\x55\x47','\x76\x6d\x6b\x63\x57\x50\x66\x56\x57\x52\x7a\x4b\x57\x4f\x6c\x64\x55\x71','\x57\x51\x57\x79\x77\x6d\x6f\x4e\x46\x43\x6f\x58\x57\x52\x69\x6d','\x57\x50\x57\x4b\x64\x43\x6f\x77\x57\x4f\x4a\x64\x51\x38\x6b\x61\x67\x71','\x57\x50\x37\x64\x4e\x38\x6b\x46\x61\x6d\x6f\x30','\x57\x37\x70\x64\x4b\x63\x79\x63\x57\x4f\x69\x34\x57\x34\x69','\x57\x36\x50\x45\x57\x35\x47\x74\x57\x51\x69','\x57\x36\x50\x64\x57\x52\x6c\x63\x50\x38\x6b\x50','\x45\x38\x6f\x52\x6c\x38\x6f\x75\x57\x4f\x35\x67','\x6d\x43\x6f\x62\x57\x51\x66\x70\x66\x71','\x71\x5a\x2f\x64\x47\x38\x6f\x33\x57\x4f\x46\x63\x4f\x43\x6b\x45\x57\x36\x4f','\x6e\x78\x6a\x57\x73\x6d\x6b\x6b','\x63\x6d\x6f\x75\x57\x52\x64\x64\x56\x6d\x6f\x56','\x67\x68\x66\x37\x72\x43\x6b\x64','\x57\x34\x74\x64\x4a\x43\x6b\x37\x63\x58\x37\x64\x50\x61','\x72\x6d\x6f\x6a\x64\x38\x6b\x6a\x57\x52\x4c\x38\x57\x52\x42\x64\x4c\x38\x6f\x4d\x79\x57','\x57\x37\x7a\x76\x65\x38\x6b\x38\x6a\x6d\x6b\x52\x57\x37\x62\x74','\x57\x35\x42\x64\x52\x64\x65\x43\x45\x6d\x6f\x4f\x74\x71','\x57\x34\x43\x59\x68\x53\x6f\x44\x57\x51\x46\x64\x53\x53\x6b\x71\x62\x71','\x6c\x64\x6d\x45\x69\x5a\x66\x4d\x57\x52\x4a\x64\x4f\x61','\x57\x35\x46\x64\x4d\x62\x38\x36\x57\x4f\x69','\x57\x37\x76\x6c\x57\x37\x53\x72\x57\x51\x43','\x42\x38\x6b\x2b\x57\x34\x5a\x64\x54\x43\x6b\x48\x57\x4f\x37\x64\x56\x62\x79','\x62\x32\x6e\x61\x74\x53\x6b\x61\x68\x67\x68\x63\x4a\x57','\x44\x6d\x6f\x53\x57\x37\x57\x48\x57\x4f\x42\x64\x4a\x59\x4f\x52','\x46\x57\x42\x64\x52\x5a\x48\x4e','\x63\x43\x6b\x52\x45\x38\x6f\x55\x57\x51\x43','\x57\x34\x62\x31\x57\x37\x57','\x57\x36\x52\x64\x56\x53\x6f\x31\x57\x51\x56\x64\x4f\x47','\x57\x50\x43\x42\x78\x64\x56\x63\x55\x47','\x46\x43\x6f\x58\x57\x36\x30\x55','\x77\x64\x42\x64\x54\x53\x6f\x56\x57\x50\x5a\x63\x50\x53\x6b\x76\x57\x35\x69','\x72\x62\x52\x63\x4b\x65\x64\x64\x47\x47','\x57\x36\x38\x33\x57\x37\x68\x64\x49\x53\x6f\x4a\x6c\x38\x6f\x4f\x57\x36\x47','\x74\x6d\x6b\x78\x45\x38\x6f\x55\x46\x76\x6d','\x42\x38\x6b\x33\x57\x35\x4f\x32\x42\x38\x6b\x62\x57\x50\x48\x38\x57\x37\x37\x63\x55\x63\x53\x4e','\x62\x6d\x6b\x52\x75\x38\x6f\x73\x57\x4f\x75','\x57\x36\x66\x57\x57\x50\x4a\x64\x47\x47\x42\x63\x54\x53\x6b\x6d\x66\x71','\x57\x4f\x58\x61\x57\x4f\x4a\x64\x4d\x43\x6b\x70','\x57\x4f\x62\x59\x74\x6d\x6b\x6f\x57\x35\x64\x63\x52\x6d\x6f\x73\x6f\x43\x6b\x44\x57\x4f\x64\x64\x4a\x53\x6f\x36\x64\x61','\x79\x30\x42\x63\x4c\x63\x4b\x30\x61\x38\x6b\x4c\x57\x52\x71','\x57\x51\x71\x4f\x42\x64\x74\x63\x55\x71','\x57\x34\x70\x63\x52\x6d\x6b\x73\x57\x52\x30\x48\x42\x6d\x6f\x74\x6d\x71','\x57\x34\x52\x64\x55\x43\x6f\x53\x57\x52\x42\x64\x55\x43\x6f\x47\x46\x47','\x57\x35\x74\x64\x51\x6d\x6f\x2b\x57\x52\x68\x64\x52\x43\x6f\x30','\x45\x53\x6f\x36\x57\x36\x4f\x48\x57\x4f\x42\x64\x47\x49\x34\x61','\x57\x36\x70\x64\x4c\x43\x6f\x6e\x57\x51\x52\x64\x4e\x57','\x57\x34\x61\x4b\x67\x53\x6f\x44\x57\x51\x6c\x64\x54\x6d\x6b\x6a\x64\x47','\x43\x53\x6b\x6c\x45\x6d\x6f\x49','\x46\x43\x6f\x57\x6b\x38\x6b\x63\x57\x37\x47\x46\x57\x34\x75\x76','\x6f\x38\x6b\x5a\x57\x36\x71\x34\x57\x4f\x33\x64\x51\x49\x34\x52','\x6f\x59\x34\x75\x6a\x74\x44\x4d\x57\x4f\x6c\x64\x52\x57','\x57\x37\x47\x49\x57\x37\x46\x64\x47\x47','\x57\x34\x70\x64\x4d\x6d\x6b\x55\x68\x57\x2f\x64\x53\x4c\x57\x36','\x57\x52\x38\x4c\x42\x4a\x78\x63\x54\x6d\x6b\x77\x57\x4f\x43','\x6f\x53\x6f\x2f\x57\x37\x74\x64\x4f\x71','\x44\x61\x52\x64\x48\x38\x6f\x73\x57\x52\x57','\x6d\x43\x6f\x78\x57\x4f\x6c\x64\x48\x38\x6f\x41','\x57\x4f\x6e\x55\x75\x43\x6f\x65\x57\x36\x69\x4f\x46\x38\x6b\x6f','\x57\x34\x65\x31\x63\x43\x6f\x71\x57\x4f\x52\x64\x55\x53\x6b\x6d\x64\x71','\x45\x53\x6f\x36\x57\x36\x4f\x48\x57\x4f\x42\x64\x47\x49\x34','\x46\x4c\x4f\x61\x68\x4e\x69','\x57\x4f\x4e\x64\x4e\x58\x61\x44\x73\x6d\x6b\x7a\x57\x4f\x66\x44\x57\x35\x79','\x76\x43\x6f\x38\x76\x59\x78\x63\x4e\x57','\x73\x4c\x53\x34\x57\x37\x61\x4d\x57\x50\x75\x6e\x57\x35\x53','\x57\x51\x52\x64\x49\x6d\x6b\x63\x6d\x43\x6f\x50','\x57\x35\x6e\x70\x44\x77\x68\x64\x4f\x71','\x57\x52\x6d\x79\x73\x6d\x6f\x48\x42\x53\x6f\x4c\x57\x52\x34','\x79\x58\x68\x64\x4f\x38\x6f\x56\x57\x52\x30'];_0x346d=function(){return _0x3a6377;};return _0x346d();}function _0x2351d4(){const _0x52f53e=_0x269c9f,_0x3c8bbb={'\x6c\x47\x7a\x65\x68':function(_0x3165ff,_0x262ad6){return _0x3165ff(_0x262ad6);},'\x6d\x62\x56\x4b\x6e':_0x52f53e(0xf2,'\x47\x63\x73\x4c')+_0x52f53e(0x241,'\x4f\x45\x33\x7a')};if(process.env.A2A_NODE_SECRET)return process.env.A2A_NODE_SECRET;try{return _0x3c8bbb[_0x52f53e(0x178,'\x4d\x59\x4e\x6e')](require,_0x3c8bbb[_0x52f53e(0x130,'\x4d\x6d\x32\x57')])[_0x52f53e(0xd7,'\x7a\x48\x53\x5b')+_0x52f53e(0x26e,'\x44\x5e\x71\x41')]()||null;}catch(_0x153a0d){return null;}}function _0x1ee074(_0x48ef5f){const _0x4c91c4=_0x269c9f,_0x4b102e={'\x55\x74\x55\x4e\x44':_0x4c91c4(0x26b,'\x36\x29\x53\x76'),'\x79\x4c\x62\x57\x43':function(_0x4245ff,_0x2e6819){return _0x4245ff===_0x2e6819;},'\x41\x4a\x72\x71\x54':'\x57\x66\x7a\x53\x55','\x46\x69\x52\x45\x79':_0x4c91c4(0xfb,'\x69\x6c\x63\x69'),'\x4d\x62\x6a\x6e\x7a':function(_0xb480c7){return _0xb480c7();},'\x57\x61\x69\x70\x52':function(_0x4fc913){return _0x4fc913();},'\x43\x5a\x57\x51\x49':function(_0x31344a,_0x2c079a,_0x31c93a){return _0x31344a(_0x2c079a,_0x31c93a);},'\x4e\x4b\x53\x78\x49':_0x4c91c4(0x15a,'\x6c\x41\x48\x4c')};try{if(_0x4b102e[_0x4c91c4(0x127,'\x69\x66\x30\x32')](_0x4b102e[_0x4c91c4(0x142,'\x4d\x59\x4e\x6e')],_0x4b102e[_0x4c91c4(0xbd,'\x6e\x6d\x6b\x35')]))return _0x2e4eb1(ensXOv['\x55\x74\x55\x4e\x44'])['\x67\x65\x74\x4d\x65\x6d\x6f\x72'+_0x4c91c4(0x202,'\x79\x7a\x49\x68')]();else{const _0x32d929=_0x4b102e['\x4d\x62\x6a\x6e\x7a'](_0x2351d4);if(!_0x32d929)return;const _0x4d1e8c=_0x37b60f[_0x4c91c4(0x11c,'\x64\x50\x61\x4a')](_0x4b102e[_0x4c91c4(0x177,'\x69\x66\x30\x32')](_0x14a25b)),_0x46d91a={};_0x46d91a[_0x4c91c4(0xc5,'\x41\x44\x65\x5b')+'\x65']=!![];if(!_0x50574b[_0x4c91c4(0x13d,'\x4d\x6d\x32\x57')+'\x6e\x63'](_0x4d1e8c))_0x50574b[_0x4c91c4(0x213,'\x4d\x6d\x32\x57')+'\x63'](_0x4d1e8c,_0x46d91a);const _0x32c928=JSON[_0x4c91c4(0x224,'\x2a\x76\x4a\x76')+'\x79'](_0x48ef5f),_0x35b080=_0x4b102e[_0x4c91c4(0xb8,'\x32\x45\x4c\x30')](_0x46cb74,_0x32d929,_0x32c928),_0x8fabeb={};_0x8fabeb[_0x4c91c4(0x11b,'\x67\x51\x57\x6e')]=_0x48ef5f,_0x8fabeb[_0x4c91c4(0x1ae,'\x67\x7a\x46\x46')]=_0x35b080,_0x50574b[_0x4c91c4(0xdd,'\x36\x29\x53\x76')+'\x65\x53\x79\x6e\x63'](_0x4b102e[_0x4c91c4(0x292,'\x23\x6f\x54\x76')](_0x14a25b),JSON[_0x4c91c4(0x1f8,'\x25\x61\x67\x40')+'\x79'](_0x8fabeb),_0x4b102e[_0x4c91c4(0x271,'\x34\x76\x24\x59')]);}}catch(_0x116583){}}function _0x1508f6(){const _0x49c7c0=_0x269c9f,_0x1bb79b={'\x74\x5a\x6e\x5a\x45':_0x49c7c0(0x27e,'\x47\x63\x73\x4c'),'\x41\x52\x44\x52\x6c':function(_0x57d112,_0xef51f2){return _0x57d112(_0xef51f2);},'\x61\x43\x58\x50\x6c':function(_0x4dc09e,_0x280d72){return _0x4dc09e||_0x280d72;},'\x49\x73\x67\x45\x45':_0x49c7c0(0xf0,'\x4f\x45\x33\x7a'),'\x76\x59\x63\x71\x5a':_0x49c7c0(0x10a,'\x34\x76\x24\x59')+_0x49c7c0(0xd6,'\x4b\x38\x29\x76'),'\x59\x79\x67\x6c\x52':function(_0x56f563,_0x53121b){return _0x56f563!==_0x53121b;},'\x73\x4e\x72\x59\x50':_0x49c7c0(0x26f,'\x67\x51\x57\x6e'),'\x70\x61\x6d\x45\x79':_0x49c7c0(0x187,'\x5e\x29\x44\x52'),'\x43\x78\x74\x67\x55':function(_0x29be4e){return _0x29be4e();},'\x55\x45\x50\x75\x57':function(_0x2f7ef3){return _0x2f7ef3();},'\x4a\x6f\x78\x64\x4d':function(_0x3cb10d,_0xe9f34e){return _0x3cb10d!==_0xe9f34e;},'\x4c\x61\x45\x63\x59':_0x49c7c0(0x20d,'\x69\x66\x30\x32'),'\x48\x4c\x7a\x57\x52':function(_0x5d6880){return _0x5d6880();},'\x72\x43\x6b\x6e\x52':function(_0x24b134,_0x14539f,_0x4aac8a){return _0x24b134(_0x14539f,_0x4aac8a);},'\x66\x4d\x6f\x55\x63':function(_0x11a5f7,_0x38cdab){return _0x11a5f7===_0x38cdab;},'\x6f\x6f\x59\x4f\x68':'\x74\x6b\x64\x6d\x64'};try{if(_0x1bb79b[_0x49c7c0(0x163,'\x36\x29\x53\x76')](_0x1bb79b[_0x49c7c0(0x1bf,'\x4f\x45\x33\x7a')],_0x1bb79b[_0x49c7c0(0x242,'\x7a\x48\x53\x5b')])){if(!_0x50574b[_0x49c7c0(0x1ca,'\x71\x36\x6b\x6f')+'\x6e\x63'](_0x1bb79b['\x43\x78\x74\x67\x55'](_0x14a25b)))return null;const _0x58ca4a=JSON[_0x49c7c0(0x11a,'\x6c\x41\x48\x4c')](_0x50574b[_0x49c7c0(0x135,'\x72\x28\x69\x32')+_0x49c7c0(0x1ff,'\x4d\x59\x4e\x6e')](_0x1bb79b[_0x49c7c0(0x11d,'\x6c\x41\x48\x4c')](_0x14a25b),_0x49c7c0(0x113,'\x4f\x59\x79\x30')));if(!_0x58ca4a||!_0x58ca4a['\x64\x61\x74\x61']||_0x1bb79b[_0x49c7c0(0x198,'\x25\x2a\x2a\x62')](typeof _0x58ca4a[_0x49c7c0(0x1ae,'\x67\x7a\x46\x46')],_0x1bb79b[_0x49c7c0(0x248,'\x47\x63\x73\x4c')]))return null;const _0x3d5ebd=_0x1bb79b['\x48\x4c\x7a\x57\x52'](_0x2351d4);if(!_0x3d5ebd)return null;const _0xa22ace=_0x1bb79b[_0x49c7c0(0x176,'\x32\x45\x4c\x30')](_0x46cb74,_0x3d5ebd,JSON[_0x49c7c0(0xc0,'\x40\x6c\x4a\x6c')+'\x79'](_0x58ca4a[_0x49c7c0(0x1f7,'\x25\x61\x67\x40')])),_0x28abd8=Buffer['\x66\x72\x6f\x6d'](_0xa22ace,_0x49c7c0(0x227,'\x40\x5d\x56\x4c')),_0x4057ce=Buffer[_0x49c7c0(0x1be,'\x58\x52\x66\x51')](_0x58ca4a[_0x49c7c0(0x210,'\x53\x56\x5b\x46')],_0x49c7c0(0x137,'\x25\x72\x62\x76'));if(_0x1bb79b[_0x49c7c0(0x1c3,'\x71\x36\x6b\x6f')](_0x28abd8['\x6c\x65\x6e\x67\x74\x68'],_0x4057ce[_0x49c7c0(0x211,'\x71\x36\x6b\x6f')])||!_0xb17910[_0x49c7c0(0x1a4,'\x53\x56\x5b\x46')+_0x49c7c0(0x193,'\x40\x5d\x56\x4c')](_0x28abd8,_0x4057ce))return null;return _0x58ca4a[_0x49c7c0(0x253,'\x33\x46\x65\x4e')];}else return _0x656220[_0x49c7c0(0xe9,'\x5e\x29\x44\x52')+'\x73\x68'](xvKWAr[_0x49c7c0(0x16b,'\x4d\x59\x4e\x6e')])[_0x49c7c0(0x1e4,'\x25\x61\x67\x40')](xvKWAr[_0x49c7c0(0x1a6,'\x67\x7a\x46\x46')](_0x1d0481,xvKWAr[_0x49c7c0(0x20e,'\x61\x64\x65\x21')](_0x456184,'')))[_0x49c7c0(0x1ad,'\x69\x6c\x63\x69')](xvKWAr[_0x49c7c0(0x235,'\x79\x7a\x49\x68')])[_0x49c7c0(0x1a3,'\x34\x76\x24\x59')](-0x1f8f*0x1+0x1963+0x62c*0x1,0x8db*0x3+0x2*0xcbf+-0x33ff);}catch(_0x2a6558){if(_0x1bb79b[_0x49c7c0(0x21c,'\x47\x63\x73\x4c')](_0x1bb79b[_0x49c7c0(0x19e,'\x4a\x52\x69\x45')],_0x49c7c0(0x29f,'\x34\x76\x68\x26')))return null;else _0x331710=xvKWAr[_0x49c7c0(0x233,'\x23\x6f\x54\x76')](_0x7f5d6,xvKWAr[_0x49c7c0(0x1a7,'\x25\x72\x62\x76')])[_0x49c7c0(0x1f3,'\x5e\x29\x44\x52')+'\x64']();}}function _0x130282(){const _0x4c4303=_0x269c9f,_0x246033={'\x6c\x61\x56\x66\x58':function(_0xfc363d,_0x16c319){return _0xfc363d(_0x16c319);},'\x51\x64\x61\x79\x59':_0x4c4303(0x10a,'\x34\x76\x24\x59')+_0x4c4303(0xd4,'\x41\x44\x65\x5b'),'\x79\x76\x66\x78\x6c':function(_0x26a689,_0x3e7472){return _0x26a689!==_0x3e7472;},'\x4d\x49\x46\x66\x4d':_0x4c4303(0x260,'\x55\x49\x69\x29'),'\x43\x52\x73\x6f\x44':function(_0x32cf7b){return _0x32cf7b();},'\x65\x56\x56\x50\x78':function(_0x464783,_0x5bf13e){return _0x464783(_0x5bf13e);}};try{if(_0x246033['\x79\x76\x66\x78\x6c'](_0x246033['\x4d\x49\x46\x66\x4d'],_0x246033['\x4d\x49\x46\x66\x4d'])){if(_0x11c582.env.A2A_NODE_SECRET)return _0x111536.env.A2A_NODE_SECRET;try{return hKAafh[_0x4c4303(0x251,'\x34\x76\x24\x59')](_0x1e6e48,hKAafh[_0x4c4303(0x143,'\x6b\x65\x4e\x4d')])['\x67\x65\x74\x48\x75\x62\x4e\x6f'+_0x4c4303(0x1b7,'\x68\x56\x33\x38')]()||null;}catch(_0x19371b){return null;}}else{const _0x1c15d7=_0x37b60f[_0x4c4303(0x133,'\x67\x6a\x6e\x56')](_0x246033[_0x4c4303(0x10d,'\x34\x76\x24\x59')](_0x9df4b1)),_0x3ac6b5={};_0x3ac6b5[_0x4c4303(0x12e,'\x44\x4e\x69\x6b')+'\x65']=!![];if(!_0x50574b[_0x4c4303(0xf5,'\x68\x56\x33\x38')+'\x6e\x63'](_0x1c15d7))_0x50574b[_0x4c4303(0x205,'\x55\x49\x69\x29')+'\x63'](_0x1c15d7,_0x3ac6b5);_0x50574b[_0x4c4303(0x1e2,'\x67\x6a\x6e\x56')+'\x65\x53\x79\x6e\x63'](_0x9df4b1(),_0x246033[_0x4c4303(0x1c5,'\x32\x45\x4c\x30')](String,Date[_0x4c4303(0x1e0,'\x47\x63\x73\x4c')]()),_0x4c4303(0x222,'\x67\x6a\x6e\x56'));}}catch(_0x439414){}}function _0xc230e5(){const _0x4552c3=_0x269c9f,_0x4875cf={'\x4e\x4e\x70\x61\x58':function(_0x4b9661){return _0x4b9661();},'\x49\x4f\x43\x78\x52':'\x75\x74\x66\x38','\x6b\x78\x45\x7a\x42':function(_0x28a5f4,_0x476ff4){return _0x28a5f4!==_0x476ff4;},'\x64\x78\x75\x68\x45':_0x4552c3(0x24f,'\x67\x6a\x6e\x56'),'\x56\x63\x71\x70\x51':_0x4552c3(0x1d7,'\x67\x51\x57\x6e'),'\x6e\x4a\x75\x4d\x6c':function(_0x4181d6,_0x7364fb,_0xcd7c75){return _0x4181d6(_0x7364fb,_0xcd7c75);},'\x4e\x4d\x79\x54\x71':function(_0x5362f1){return _0x5362f1();},'\x46\x70\x51\x4d\x56':function(_0x2fce18,_0x3505f3){return _0x2fce18===_0x3505f3;},'\x7a\x56\x43\x51\x74':_0x4552c3(0x19a,'\x67\x51\x57\x6e'),'\x57\x72\x53\x57\x76':_0x4552c3(0x1f5,'\x58\x52\x66\x51'),'\x72\x4a\x65\x65\x50':_0x4552c3(0xb9,'\x4d\x6d\x32\x57'),'\x6f\x4b\x4f\x52\x6d':_0x4552c3(0x24c,'\x33\x46\x65\x4e')};try{if(_0x4875cf[_0x4552c3(0x20f,'\x58\x52\x66\x51')](_0x4875cf[_0x4552c3(0x290,'\x25\x61\x67\x40')],_0x4875cf[_0x4552c3(0x197,'\x4d\x6d\x32\x57')])){if(!_0x436668[_0x4552c3(0x15f,'\x53\x56\x5b\x46')+'\x6e\x63'](aImJzU[_0x4552c3(0x1fe,'\x68\x56\x33\x38')](_0x4779e6)))return null;const _0x58557d=_0x454814[_0x4552c3(0x1cc,'\x25\x61\x67\x40')](_0x413334[_0x4552c3(0xaf,'\x64\x50\x61\x4a')+_0x4552c3(0x265,'\x44\x53\x37\x76')](aImJzU['\x4e\x4e\x70\x61\x58'](_0x5991fc),aImJzU[_0x4552c3(0x115,'\x23\x6f\x26\x54')]));if(!_0x58557d||!_0x58557d[_0x4552c3(0x155,'\x40\x6c\x4a\x6c')]||aImJzU[_0x4552c3(0x270,'\x67\x7a\x46\x46')](typeof _0x58557d[_0x4552c3(0x1b9,'\x69\x66\x30\x32')],aImJzU[_0x4552c3(0x102,'\x36\x29\x53\x76')]))return null;const _0x57b3d4=_0x110843();if(!_0x57b3d4)return null;const _0x8c35a1=_0x20d6e3(_0x57b3d4,_0x3e24d7[_0x4552c3(0xe4,'\x55\x49\x69\x29')+'\x79'](_0x58557d[_0x4552c3(0xdb,'\x44\x53\x37\x76')])),_0x11a9d5=_0x226149[_0x4552c3(0xe3,'\x6d\x35\x76\x30')](_0x8c35a1,aImJzU[_0x4552c3(0x18f,'\x5e\x29\x44\x52')]),_0x189f3c=_0x292f95[_0x4552c3(0x180,'\x23\x6f\x26\x54')](_0x58557d[_0x4552c3(0x151,'\x44\x5e\x71\x41')],aImJzU[_0x4552c3(0x246,'\x40\x6c\x4a\x6c')]);if(_0x11a9d5['\x6c\x65\x6e\x67\x74\x68']!==_0x189f3c[_0x4552c3(0x1fb,'\x44\x5e\x71\x41')]||!_0x3e53aa[_0x4552c3(0x237,'\x67\x6a\x6e\x56')+_0x4552c3(0xd2,'\x5e\x29\x44\x52')](_0x11a9d5,_0x189f3c))return null;return _0x58557d[_0x4552c3(0xb4,'\x25\x2a\x2a\x62')];}else{if(!_0x50574b[_0x4552c3(0xb3,'\x4c\x34\x6a\x75')+'\x6e\x63'](_0x4875cf[_0x4552c3(0x22f,'\x6d\x35\x76\x30')](_0x9df4b1)))return-0x20e2+0x6d*-0x1d+0x2d3b;return _0x4875cf[_0x4552c3(0x10e,'\x61\x64\x65\x21')](parseInt,_0x50574b[_0x4552c3(0x247,'\x67\x51\x57\x6e')+_0x4552c3(0xb0,'\x4a\x52\x69\x45')](_0x4875cf[_0x4552c3(0x21f,'\x67\x51\x57\x6e')](_0x9df4b1),_0x4875cf[_0x4552c3(0x122,'\x52\x5b\x78\x2a')]),0x188d+-0x1d1a*-0x1+0x11df*-0x3)||-0xc14+-0x41b*-0x2+0x3de;}}catch(_0x17bb0c){if(_0x4875cf[_0x4552c3(0x276,'\x61\x64\x65\x21')](_0x4875cf[_0x4552c3(0x18a,'\x55\x49\x69\x29')],_0x4875cf[_0x4552c3(0x146,'\x4c\x34\x6a\x75')]))return 0x7c+0x3*0xce3+-0x38f*0xb;else try{const _0x54bb49=aImJzU[_0x4552c3(0x13a,'\x64\x70\x37\x32')](_0xfad91e);if(!_0x54bb49)return;const _0x36c38c=_0x149f70[_0x4552c3(0x1f6,'\x23\x6f\x54\x76')](aImJzU[_0x4552c3(0x223,'\x58\x52\x66\x51')](_0x41d267)),_0x595ee3={};_0x595ee3[_0x4552c3(0x278,'\x69\x66\x30\x32')+'\x65']=!![];if(!_0x5c9a89[_0x4552c3(0x13b,'\x34\x76\x24\x59')+'\x6e\x63'](_0x36c38c))_0x1f60fe[_0x4552c3(0xf8,'\x49\x6e\x58\x42')+'\x63'](_0x36c38c,_0x595ee3);const _0x1694b2=_0x25c5d1[_0x4552c3(0x181,'\x44\x4e\x69\x6b')+'\x79'](_0x2e8254),_0x242c08=aImJzU[_0x4552c3(0x150,'\x64\x70\x37\x32')](_0x17cf78,_0x54bb49,_0x1694b2),_0x145090={};_0x145090[_0x4552c3(0x23c,'\x6d\x35\x76\x30')]=_0x39f9a8,_0x145090[_0x4552c3(0x294,'\x68\x56\x33\x38')]=_0x242c08,_0x1ccc2e[_0x4552c3(0x153,'\x4a\x52\x69\x45')+_0x4552c3(0x184,'\x6e\x6d\x6b\x35')](aImJzU[_0x4552c3(0x138,'\x34\x76\x24\x59')](_0x3583a8),_0x34da81[_0x4552c3(0x179,'\x6b\x65\x4e\x4d')+'\x79'](_0x145090),aImJzU[_0x4552c3(0xd9,'\x2a\x76\x4a\x76')]);}catch(_0x48e111){}}}var _0x125b2e=0x20e*0x11+-0x1640+-0x1*0xca4,_0x67de17=(-0xc80+0x1070*-0x1+0x1cf7)*(-0x14*-0x34+-0x5*0x504+0x151c)*(0x15ed+0x65b*-0x5+0xa16)*(-0x2598+0x97c+0x1c58)*(0x117a+0x4*0x796+-0x2bea),_0x257258=(0x20b*0x11+0x17a+-0x241d)*(0x1fdc+0x1*-0xf29+-0x1077)*(-0x1103+-0x6*0x593+0x1*0x32b1)*(-0x22*0xc5+0x1cb9+0x159);function _0x1299c(){const _0x2c3bd6=_0x269c9f,_0x248b69={'\x70\x7a\x4b\x63\x69':function(_0x12cb1b){return _0x12cb1b();},'\x5a\x66\x75\x4e\x51':_0x2c3bd6(0x17e,'\x40\x6c\x4a\x6c')+_0x2c3bd6(0x1d4,'\x40\x6c\x4a\x6c'),'\x50\x72\x79\x61\x55':function(_0x147cd4,_0x1f7ca7){return _0x147cd4<_0x1f7ca7;},'\x53\x76\x48\x4c\x57':function(_0x3dce8a,_0x53c369){return _0x3dce8a-_0x53c369;},'\x53\x66\x49\x43\x6f':_0x2c3bd6(0x149,'\x23\x6f\x26\x54')+_0x2c3bd6(0x1e7,'\x6c\x41\x48\x4c')+_0x2c3bd6(0xff,'\x40\x6c\x4a\x6c'),'\x50\x49\x49\x65\x76':function(_0x12a9de,_0x2b0856){return _0x12a9de>_0x2b0856;},'\x64\x47\x71\x65\x55':_0x2c3bd6(0x120,'\x2a\x76\x4a\x76')+_0x2c3bd6(0x173,'\x40\x5d\x56\x4c')+_0x2c3bd6(0x17c,'\x25\x2a\x2a\x62'),'\x74\x49\x67\x72\x69':function(_0x5185b9,_0x3388b7){return _0x5185b9>_0x3388b7;},'\x72\x4a\x5a\x49\x74':function(_0x48d00f,_0x3eb86b){return _0x48d00f-_0x3eb86b;},'\x6b\x4b\x45\x58\x62':function(_0x2e53da,_0xa46339){return _0x2e53da>=_0xa46339;},'\x4f\x45\x79\x5a\x55':function(_0x5c1929,_0x34bbb5){return _0x5c1929===_0x34bbb5;},'\x4f\x74\x58\x75\x56':_0x2c3bd6(0x1db,'\x6d\x35\x76\x30'),'\x6d\x77\x6d\x57\x67':function(_0x31575e,_0x415da3){return _0x31575e+_0x415da3;},'\x62\x47\x6f\x4a\x78':function(_0x36d6a4,_0x26110e){return _0x36d6a4(_0x26110e);},'\x78\x4c\x6e\x5a\x72':function(_0x59035e,_0x3d37ef,_0x1e2550){return _0x59035e(_0x3d37ef,_0x1e2550);},'\x6a\x4f\x4e\x67\x65':function(_0x196077,_0x17ca00){return _0x196077(_0x17ca00);},'\x6e\x58\x57\x65\x46':function(_0x3a8dff,_0x3d3dc3){return _0x3a8dff!==_0x3d3dc3;},'\x4e\x70\x50\x41\x68':_0x2c3bd6(0x1d3,'\x67\x7a\x46\x46'),'\x47\x6c\x57\x47\x59':_0x2c3bd6(0x14a,'\x49\x6e\x58\x42')+_0x2c3bd6(0x26a,'\x23\x6f\x54\x76')+_0x2c3bd6(0x23e,'\x72\x28\x69\x32'),'\x4c\x6e\x47\x73\x63':_0x2c3bd6(0x15c,'\x4b\x38\x29\x76')+_0x2c3bd6(0x243,'\x68\x56\x33\x38')+_0x2c3bd6(0x1a8,'\x44\x4e\x69\x6b')};try{var _0x1dc7c6=_0x37b60f[_0x2c3bd6(0x14e,'\x44\x53\x37\x76')](_0x14a25b());const _0x58d708={};_0x58d708[_0x2c3bd6(0x289,'\x4c\x34\x6a\x75')+'\x65']=!![];if(!_0x50574b[_0x2c3bd6(0x148,'\x6e\x6d\x6b\x35')+'\x6e\x63'](_0x1dc7c6))_0x50574b[_0x2c3bd6(0x1af,'\x4f\x59\x79\x30')+'\x63'](_0x1dc7c6,_0x58d708);}catch(_0x5d412f){}try{return _0x248b69[_0x2c3bd6(0xda,'\x67\x6a\x6e\x56')](_0x42001,_0x248b69[_0x2c3bd6(0x12f,'\x4c\x34\x6a\x75')](_0x14a25b),function(){const _0x24a193=_0x2c3bd6;var _0x79a2e7=_0x248b69[_0x24a193(0x1a9,'\x36\x29\x53\x76')](_0x1508f6);const _0x796f90={};_0x796f90['\x6f\x6b']=![],_0x796f90[_0x24a193(0x1bb,'\x55\x55\x59\x6e')]=_0x248b69[_0x24a193(0x157,'\x40\x6c\x4a\x6c')],_0x796f90[_0x24a193(0x1f4,'\x4d\x59\x4e\x6e')]=!![];if(!_0x79a2e7)return _0x796f90;var _0x50fdd9=_0x79a2e7[_0x24a193(0x22b,'\x58\x52\x66\x51')+_0x24a193(0x1d0,'\x34\x76\x24\x59')+_0x24a193(0x274,'\x67\x51\x57\x6e')]||_0x125b2e,_0x2d875a=_0x79a2e7[_0x24a193(0x12d,'\x45\x77\x63\x64')+'\x74']||-0x20a5*0x1+0x1*0x1d88+0x1*0x31d,_0xf2f7d=_0x79a2e7[_0x24a193(0xec,'\x64\x70\x37\x32')+'\x74']||0xa85+-0x47*-0x2e+-0x65*0x3b,_0x1a343c=Date[_0x24a193(0x262,'\x67\x6a\x6e\x56')](),_0x49ae04=_0xc230e5();if(_0x49ae04>-0x1979*-0x1+0x1d*-0xfe+0xd*0x41&&_0x248b69[_0x24a193(0x117,'\x34\x76\x68\x26')](_0x1a343c,_0x248b69[_0x24a193(0x230,'\x4d\x59\x4e\x6e')](_0x49ae04,_0x257258))){const _0x5db03c={};return _0x5db03c['\x6f\x6b']=![],_0x5db03c[_0x24a193(0x214,'\x41\x44\x65\x5b')]=_0x248b69[_0x24a193(0x128,'\x67\x7a\x46\x46')],_0x5db03c[_0x24a193(0x196,'\x4c\x34\x6a\x75')]=!![],_0x5db03c;}if(_0x248b69['\x50\x49\x49\x65\x76'](_0x2d875a,0x373*-0x9+0xbdb*0x3+0x6*-0xc1)&&_0x248b69['\x50\x49\x49\x65\x76'](_0x1a343c,_0x2d875a)){const _0x12d8b8={};return _0x12d8b8['\x6f\x6b']=![],_0x12d8b8[_0x24a193(0x220,'\x7a\x48\x53\x5b')]=_0x248b69[_0x24a193(0x24b,'\x67\x51\x57\x6e')],_0x12d8b8[_0x24a193(0xb6,'\x34\x76\x68\x26')]=!![],_0x12d8b8;}if(_0x248b69[_0x24a193(0x16f,'\x40\x5d\x56\x4c')](_0x49ae04,0x5*-0x639+-0x14f6+0x3413)&&_0x248b69[_0x24a193(0x1fd,'\x25\x2a\x2a\x62')](_0x1a343c,_0x49ae04)>_0x67de17){const _0x52c7e1={};return _0x52c7e1['\x6f\x6b']=![],_0x52c7e1['\x65\x72\x72\x6f\x72']=_0x24a193(0x1dd,'\x36\x29\x53\x76')+_0x24a193(0x1c6,'\x71\x36\x6b\x6f')+'\x5f\x65\x78\x63\x65\x65\x64\x65'+'\x64',_0x52c7e1[_0x24a193(0x245,'\x71\x36\x6b\x6f')]=!![],_0x52c7e1;}if(_0x248b69[_0x24a193(0x221,'\x40\x5d\x56\x4c')](_0xf2f7d,_0x50fdd9)){if(_0x248b69[_0x24a193(0xfa,'\x67\x7a\x46\x46')](_0x248b69['\x4f\x74\x58\x75\x56'],_0x24a193(0x17b,'\x67\x51\x57\x6e'))){const _0xc7372={};return _0xc7372['\x6f\x6b']=![],_0xc7372[_0x24a193(0x214,'\x41\x44\x65\x5b')]='\x6f\x66\x66\x6c\x69\x6e\x65\x5f'+'\x71\x75\x6f\x74\x61\x5f\x65\x78'+_0x24a193(0x27b,'\x71\x36\x6b\x6f'),_0xc7372[_0x24a193(0x1f9,'\x49\x6e\x58\x42')]=!![],_0xc7372;}else{const _0x152e99={};return _0x152e99['\x6f\x6b']=![],_0x152e99[_0x24a193(0xfc,'\x6b\x65\x4e\x4d')]=_0x24a193(0x29e,'\x44\x53\x37\x76')+_0x24a193(0x1b4,'\x55\x49\x69\x29')+_0x24a193(0x129,'\x67\x51\x57\x6e'),_0x152e99['\x6f\x66\x66\x6c\x69\x6e\x65']=!![],_0x152e99;}}_0x79a2e7[_0x24a193(0xb1,'\x47\x63\x73\x4c')+'\x74']=_0x248b69[_0x24a193(0x18e,'\x4d\x59\x4e\x6e')](_0xf2f7d,-0xee+0x2*-0xc22+0x1933*0x1),_0x248b69[_0x24a193(0xeb,'\x55\x49\x69\x29')](_0x1ee074,_0x79a2e7);const _0x4597da={};return _0x4597da['\x6f\x6b']=!![],_0x4597da[_0x24a193(0x192,'\x23\x6f\x26\x54')]=!![],_0x4597da[_0x24a193(0xed,'\x6b\x65\x4e\x4d')+'\x67']=_0x50fdd9-_0x79a2e7[_0x24a193(0x288,'\x64\x50\x61\x4a')+'\x74'],_0x4597da;});}catch(_0x197b86){var _0x281ca2=_0x197b86&&_0x197b86[_0x2c3bd6(0xcb,'\x55\x55\x59\x6e')]||_0x248b69[_0x2c3bd6(0x244,'\x23\x6f\x26\x54')](String,_0x197b86);if(_0x248b69[_0x2c3bd6(0x23d,'\x4b\x38\x29\x76')](_0x281ca2['\x69\x6e\x64\x65\x78\x4f\x66'](_0x2c3bd6(0x1e5,'\x34\x76\x68\x26')+'\x65\x6f\x75\x74'),-(0x21e*-0x2+-0xeef+0x199*0xc))){if(_0x248b69[_0x2c3bd6(0x1de,'\x7a\x48\x53\x5b')]===_0x2c3bd6(0x25a,'\x40\x6c\x4a\x6c')){const _0x35def7={};return _0x35def7['\x6f\x6b']=![],_0x35def7[_0x2c3bd6(0x194,'\x47\x63\x73\x4c')]=_0x553cf1[_0x2c3bd6(0xc3,'\x69\x66\x30\x32')],_0x35def7[_0x2c3bd6(0x10b,'\x41\x44\x65\x5b')]=!![],_0x35def7;}else{const _0x44f241={};return _0x44f241['\x6f\x6b']=![],_0x44f241[_0x2c3bd6(0x255,'\x69\x66\x30\x32')]=_0x248b69[_0x2c3bd6(0x20a,'\x55\x49\x69\x29')],_0x44f241[_0x2c3bd6(0x22e,'\x25\x72\x62\x76')]=!![],_0x44f241;}}return{'\x6f\x6b':![],'\x65\x72\x72\x6f\x72':_0x248b69[_0x2c3bd6(0x212,'\x55\x55\x59\x6e')],'\x6f\x66\x66\x6c\x69\x6e\x65':!![],'\x64\x65\x74\x61\x69\x6c':_0x281ca2[_0x2c3bd6(0x201,'\x4d\x59\x4e\x6e')](-0x2100+-0xeb6+0x2fb6,0xf*-0x6d+0x6*-0x29+0x821*0x1)};}}function _0x3e4d88(){const _0x24db63=_0x269c9f,_0x5a98ca={};_0x5a98ca[_0x24db63(0x100,'\x4c\x34\x6a\x75')]=function(_0x3bb95d,_0x3074ec){return _0x3bb95d===_0x3074ec;},_0x5a98ca['\x70\x49\x57\x64\x6b']=_0x24db63(0x12b,'\x58\x52\x66\x51'),_0x5a98ca['\x6b\x53\x7a\x7a\x79']=_0x24db63(0x118,'\x40\x5d\x56\x4c'),_0x5a98ca[_0x24db63(0x228,'\x32\x45\x4c\x30')]=function(_0xca4572,_0x52d246){return _0xca4572===_0x52d246;},_0x5a98ca[_0x24db63(0x218,'\x49\x6e\x58\x42')]=_0x24db63(0x291,'\x79\x7a\x49\x68');const _0x3c5031=_0x5a98ca;if(_0x3c5031[_0x24db63(0x252,'\x6c\x41\x48\x4c')](process.env.NODE_ENV,_0x3c5031['\x70\x49\x57\x64\x6b'])){var _0x499a45=(process.env.EVOLVER_SOLIDIFY_VERIFY||'')[_0x24db63(0x1ec,'\x58\x52\x66\x51')+_0x24db63(0x14f,'\x41\x44\x65\x5b')]();if(_0x3c5031[_0x24db63(0x147,'\x6b\x65\x4e\x4d')](_0x499a45,_0x3c5031['\x6b\x53\x7a\x7a\x79'])||_0x3c5031['\x48\x77\x63\x66\x6a'](_0x499a45,'\x30')||_0x3c5031[_0x24db63(0x159,'\x79\x7a\x49\x68')](_0x499a45,_0x3c5031[_0x24db63(0x1f2,'\x2a\x76\x4a\x76')]))return![];}var _0x5cd9d7=process.env.A2A_HUB_URL||'';return!!_0x5cd9d7;}const _0xad7cb1={};_0xad7cb1[_0x269c9f(0xb5,'\x67\x51\x57\x6e')+_0x269c9f(0x1c7,'\x49\x6e\x58\x42')+_0x269c9f(0x1bc,'\x5e\x29\x44\x52')]=_0x10e9e6,_0xad7cb1[_0x269c9f(0x29b,'\x55\x49\x69\x29')+_0x269c9f(0x1eb,'\x72\x28\x69\x32')+_0x269c9f(0x188,'\x4f\x45\x33\x7a')]=_0x3e4d88,_0xad7cb1['\x63\x6f\x6e\x73\x75\x6d\x65\x4f'+_0x269c9f(0x28c,'\x67\x7a\x46\x46')+_0x269c9f(0x264,'\x25\x2a\x2a\x62')]=_0x1299c,_0xad7cb1[_0x269c9f(0x1d5,'\x69\x66\x30\x32')+_0x269c9f(0x273,'\x34\x76\x24\x59')+_0x269c9f(0x107,'\x34\x76\x24\x59')]=_0xc230e5,module[_0x269c9f(0xe5,'\x44\x53\x37\x76')]=_0xad7cb1;
|
|
1
|
+
const crypto = require('crypto');
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const { hubFetch } = require('./hubFetch');
|
|
5
|
+
const { withFileLock } = require('./assetStore');
|
|
6
|
+
|
|
7
|
+
function hmacSha256(key, data) {
|
|
8
|
+
return crypto.createHmac('sha256', key).update(data).digest('hex');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function hashCompact(input) {
|
|
12
|
+
return crypto.createHash('sha256').update(String(input || '')).digest('hex').slice(0, 16);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function buildRequestPayload({ geneId, signals, mutation }) {
|
|
16
|
+
let nodeSecret = null;
|
|
17
|
+
try {
|
|
18
|
+
nodeSecret = require('./a2aProtocol').getHubNodeSecret();
|
|
19
|
+
} catch (e) {}
|
|
20
|
+
if (!nodeSecret) return null;
|
|
21
|
+
|
|
22
|
+
let nodeId = null;
|
|
23
|
+
try {
|
|
24
|
+
nodeId = require('./a2aProtocol').getNodeId();
|
|
25
|
+
} catch (e) {}
|
|
26
|
+
if (!nodeId) return null;
|
|
27
|
+
|
|
28
|
+
const secretHash = crypto.createHash('sha256').update(nodeSecret).digest('hex');
|
|
29
|
+
|
|
30
|
+
const ts = Date.now();
|
|
31
|
+
const signalsHash = hashCompact(JSON.stringify(Array.isArray(signals) ? signals.slice(0, 8) : []));
|
|
32
|
+
const mutationHash = hashCompact(JSON.stringify(mutation || {}));
|
|
33
|
+
|
|
34
|
+
const challengeData = [nodeId, geneId || '', signalsHash, mutationHash, String(ts)].join('|');
|
|
35
|
+
const clientSignature = hmacSha256(secretHash, challengeData);
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
nodeId,
|
|
39
|
+
nodeSecret,
|
|
40
|
+
body: {
|
|
41
|
+
sender_id: nodeId,
|
|
42
|
+
gene_id: geneId || '',
|
|
43
|
+
signals_hash: signalsHash,
|
|
44
|
+
mutation_hash: mutationHash,
|
|
45
|
+
ts: ts,
|
|
46
|
+
client_signature: clientSignature,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
function requestSolidifyPermit({ geneId, signals, mutation }) {
|
|
53
|
+
const hubUrl = (process.env.A2A_HUB_URL || '').replace(/\/+$/, '');
|
|
54
|
+
if (!hubUrl) return Promise.resolve({ ok: false, error: 'no_hub_url', offline: true });
|
|
55
|
+
|
|
56
|
+
const req = buildRequestPayload({ geneId, signals, mutation });
|
|
57
|
+
if (!req) return Promise.resolve({ ok: false, error: 'no_credentials', offline: true });
|
|
58
|
+
|
|
59
|
+
const endpoint = hubUrl + '/a2a/verify-solidify';
|
|
60
|
+
const timeoutMs = require('../config').HTTP_TRANSPORT_TIMEOUT_MS || 10000;
|
|
61
|
+
|
|
62
|
+
const headers = {
|
|
63
|
+
'Content-Type': 'application/json',
|
|
64
|
+
'Authorization': 'Bearer ' + req.nodeSecret,
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
return hubFetch(endpoint, {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
headers: headers,
|
|
70
|
+
body: JSON.stringify(req.body),
|
|
71
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
72
|
+
})
|
|
73
|
+
.then(function (res) {
|
|
74
|
+
// Any non-5xx response proves the hub's application layer answered, so
|
|
75
|
+
// the daemon is not actually offline — refresh lastOnlineVerify even on
|
|
76
|
+
// 4xx and on 2xx envelopes that report ok=false. Previously this only
|
|
77
|
+
// fired in the {ok:true} success branch, so a long streak of envelope
|
|
78
|
+
// errors (quota_exceeded, rate_limited, validation) or 4xx responses
|
|
79
|
+
// (bad auth, forbidden) would let the offline-duration counter run
|
|
80
|
+
// past MAX_OFFLINE_DURATION_MS (7d) and falsely block consumeOfflinePermit
|
|
81
|
+
// with offline_duration_exceeded. 5xx is left out — it can be a CDN /
|
|
82
|
+
// load balancer up while the hub itself is down, so the conservative
|
|
83
|
+
// "treat as offline" semantic is preserved there.
|
|
84
|
+
if (res.status < 500) {
|
|
85
|
+
recordLastOnlineVerify();
|
|
86
|
+
}
|
|
87
|
+
if (!res.ok) {
|
|
88
|
+
return res.text().then(function (t) {
|
|
89
|
+
// 5xx = hub/infra down → treat as offline so consumeOfflinePermit fires.
|
|
90
|
+
// 4xx = explicit rejection (bad auth, quota exceeded) → not offline.
|
|
91
|
+
const offline = res.status >= 500;
|
|
92
|
+
return { ok: false, error: 'HTTP ' + res.status + ': ' + t.slice(0, 200), offline };
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return res.json().then(function (result) {
|
|
96
|
+
if (result && result.ok && result.offline_token) {
|
|
97
|
+
cacheOfflineToken(result.offline_token);
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
});
|
|
101
|
+
})
|
|
102
|
+
.catch(function (err) {
|
|
103
|
+
return { ok: false, error: err.message, offline: true };
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// --- Offline token management ---
|
|
108
|
+
|
|
109
|
+
var _OFFLINE_TOKEN_FILE = null;
|
|
110
|
+
var _LAST_VERIFY_FILE = null;
|
|
111
|
+
|
|
112
|
+
function getMemDir() {
|
|
113
|
+
try {
|
|
114
|
+
return require('./paths').getMemoryDir();
|
|
115
|
+
} catch (e) {
|
|
116
|
+
try {
|
|
117
|
+
return path.join(require('./paths').getRepoRoot(), '.evolver', 'memory');
|
|
118
|
+
} catch (e2) {
|
|
119
|
+
return path.join(process.cwd(), '.evolver', 'memory');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function offlineTokenPath() {
|
|
125
|
+
if (!_OFFLINE_TOKEN_FILE) {
|
|
126
|
+
_OFFLINE_TOKEN_FILE = path.join(getMemDir(), '.ot');
|
|
127
|
+
}
|
|
128
|
+
return _OFFLINE_TOKEN_FILE;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function lastVerifyPath() {
|
|
132
|
+
if (!_LAST_VERIFY_FILE) {
|
|
133
|
+
_LAST_VERIFY_FILE = path.join(getMemDir(), '.lv');
|
|
134
|
+
}
|
|
135
|
+
return _LAST_VERIFY_FILE;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Offline token integrity (C2): the .ot file is an anti-tamper quota counter,
|
|
139
|
+
// not a credential — encryption is the wrong primitive. Sign the token with
|
|
140
|
+
// HMAC-SHA256 keyed off nodeSecret instead. A cloned install carries a stale
|
|
141
|
+
// secret-signed token; HMAC verification fails on the first offline read and
|
|
142
|
+
// the token is rejected. Online verification rotates the secret, so legit
|
|
143
|
+
// re-issuance is automatic.
|
|
144
|
+
function getNodeSecret() {
|
|
145
|
+
// Env var first — matches a2aProtocol.getHubNodeSecret() priority and lets
|
|
146
|
+
// the HMAC path work in environments where a2aProtocol can't be required.
|
|
147
|
+
if (process.env.A2A_NODE_SECRET) return process.env.A2A_NODE_SECRET;
|
|
148
|
+
try { return require('./a2aProtocol').getHubNodeSecret() || null; } catch (e) { return null; }
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function cacheOfflineToken(token) {
|
|
152
|
+
try {
|
|
153
|
+
const nodeSecret = getNodeSecret();
|
|
154
|
+
if (!nodeSecret) return;
|
|
155
|
+
const dir = path.dirname(offlineTokenPath());
|
|
156
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
157
|
+
// HMAC stability: token field names must NOT be integer-like strings.
|
|
158
|
+
// V8's JSON.stringify sorts integer-keyed properties numerically while
|
|
159
|
+
// preserving insertion order for non-integer keys; an all-digit field
|
|
160
|
+
// would re-order between cache and load and break verification.
|
|
161
|
+
const data = JSON.stringify(token);
|
|
162
|
+
const hmac = hmacSha256(nodeSecret, data);
|
|
163
|
+
fs.writeFileSync(offlineTokenPath(), JSON.stringify({ data: token, hmac }), 'utf8');
|
|
164
|
+
} catch (e) {}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function loadOfflineToken() {
|
|
168
|
+
try {
|
|
169
|
+
if (!fs.existsSync(offlineTokenPath())) return null;
|
|
170
|
+
const stored = JSON.parse(fs.readFileSync(offlineTokenPath(), 'utf8'));
|
|
171
|
+
if (!stored || !stored.data || typeof stored.hmac !== 'string') return null;
|
|
172
|
+
const nodeSecret = getNodeSecret();
|
|
173
|
+
if (!nodeSecret) return null;
|
|
174
|
+
const expected = hmacSha256(nodeSecret, JSON.stringify(stored.data));
|
|
175
|
+
// Hex-encode the HMAC bytes for comparison: 32-byte buffers, not 64-byte
|
|
176
|
+
// ASCII representations. Length pre-check guards timingSafeEqual which
|
|
177
|
+
// throws on mismatched lengths.
|
|
178
|
+
const expBuf = Buffer.from(expected, 'hex');
|
|
179
|
+
const gotBuf = Buffer.from(stored.hmac, 'hex');
|
|
180
|
+
if (expBuf.length !== gotBuf.length || !crypto.timingSafeEqual(expBuf, gotBuf)) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
return stored.data;
|
|
184
|
+
} catch (e) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function recordLastOnlineVerify() {
|
|
190
|
+
try {
|
|
191
|
+
const dir = path.dirname(lastVerifyPath());
|
|
192
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
193
|
+
fs.writeFileSync(lastVerifyPath(), String(Date.now()), 'utf8');
|
|
194
|
+
} catch (e) {}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function getLastOnlineVerifyTs() {
|
|
198
|
+
try {
|
|
199
|
+
if (!fs.existsSync(lastVerifyPath())) return 0;
|
|
200
|
+
return parseInt(fs.readFileSync(lastVerifyPath(), 'utf8'), 10) || 0;
|
|
201
|
+
} catch (e) {
|
|
202
|
+
return 0;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
var MAX_OFFLINE_SOLIDIFIES = 10;
|
|
207
|
+
var MAX_OFFLINE_DURATION_MS = 7 * 24 * 60 * 60 * 1000;
|
|
208
|
+
var MAX_CLOCK_DRIFT_MS = 24 * 60 * 60 * 1000;
|
|
209
|
+
|
|
210
|
+
// The offline-permit pipeline is `loadOfflineToken → check cap →
|
|
211
|
+
// cacheOfflineToken` (read → check → write). Within a single Node process
|
|
212
|
+
// the chain is synchronous so no intra-process race, but two cooperating
|
|
213
|
+
// processes (daemon + CLI `evolver solidify`) hitting the path at the same
|
|
214
|
+
// moment could both read the same `usedCount`, both pass the cap check,
|
|
215
|
+
// and both increment-and-write — the local counter then trailed reality
|
|
216
|
+
// and the offline quota could be exceeded by N for N concurrent callers.
|
|
217
|
+
// Hub-side enforcement catches this on the next online verify, but the
|
|
218
|
+
// audit posture is wrong locally.
|
|
219
|
+
//
|
|
220
|
+
// Reuse `withFileLock` from assetStore.js — same `src/gep/` directory,
|
|
221
|
+
// already battle-tested for multi-process read-modify-write of memory-dir
|
|
222
|
+
// files, and uses PID-liveness (`process.kill(pid, 0)`) for stale
|
|
223
|
+
// detection plus an Atomics-or-busy-wait fallback for the retry sleep.
|
|
224
|
+
// withFileLock throws on acquire timeout; we map that to a specific
|
|
225
|
+
// `offline_permit_busy` result so callers (daemon heartbeat / CLI
|
|
226
|
+
// solidify) can distinguish "contended" from "permit denied" and retry
|
|
227
|
+
// next cycle.
|
|
228
|
+
function consumeOfflinePermit() {
|
|
229
|
+
// Ensure the memory directory exists before withFileLock tries to
|
|
230
|
+
// create `<memDir>/.ot.lock`. Pre-refactor, the function always
|
|
231
|
+
// returned a structured envelope (loadOfflineToken / cacheOfflineToken
|
|
232
|
+
// both swallow errors internally); after the refactor a fresh install
|
|
233
|
+
// without the memory dir would throw ENOENT from _acquireLock and
|
|
234
|
+
// bubble past the Lock-timeout catch below, breaking the never-throw
|
|
235
|
+
// contract (Bugbot PR #157 R2 Low).
|
|
236
|
+
try {
|
|
237
|
+
var dir = path.dirname(offlineTokenPath());
|
|
238
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
239
|
+
} catch (_) { /* fall through — caught by the wrapper below */ }
|
|
240
|
+
|
|
241
|
+
try {
|
|
242
|
+
return withFileLock(offlineTokenPath(), function () {
|
|
243
|
+
var token = loadOfflineToken();
|
|
244
|
+
if (!token) return { ok: false, error: 'no_offline_token', offline: true };
|
|
245
|
+
|
|
246
|
+
var maxSolidifies = token.maxOfflineSolidifies || MAX_OFFLINE_SOLIDIFIES;
|
|
247
|
+
var expiresAt = token.expiresAt || 0;
|
|
248
|
+
var usedCount = token.usedCount || 0;
|
|
249
|
+
var now = Date.now();
|
|
250
|
+
|
|
251
|
+
var lastOnline = getLastOnlineVerifyTs();
|
|
252
|
+
if (lastOnline > 0 && now < lastOnline - MAX_CLOCK_DRIFT_MS) {
|
|
253
|
+
return { ok: false, error: 'clock_drift_detected', offline: true };
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if (expiresAt > 0 && now > expiresAt) {
|
|
257
|
+
return { ok: false, error: 'offline_token_expired', offline: true };
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
if (lastOnline > 0 && (now - lastOnline) > MAX_OFFLINE_DURATION_MS) {
|
|
261
|
+
return { ok: false, error: 'offline_duration_exceeded', offline: true };
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
if (usedCount >= maxSolidifies) {
|
|
265
|
+
return { ok: false, error: 'offline_quota_exhausted', offline: true };
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
token.usedCount = usedCount + 1;
|
|
269
|
+
cacheOfflineToken(token);
|
|
270
|
+
return { ok: true, offline: true, remaining: maxSolidifies - token.usedCount };
|
|
271
|
+
});
|
|
272
|
+
} catch (e) {
|
|
273
|
+
// Preserve the "always returns a structured envelope" contract that
|
|
274
|
+
// the pre-refactor consumeOfflinePermit had (loadOfflineToken and
|
|
275
|
+
// cacheOfflineToken both swallowed FS errors internally).
|
|
276
|
+
//
|
|
277
|
+
// - "Lock timeout" → another process holds the lock past the
|
|
278
|
+
// acquire deadline. Surface as busy so the caller's heartbeat
|
|
279
|
+
// loop can retry on the next cycle.
|
|
280
|
+
// - Any other error (ENOENT/EACCES on the lock file, FS misconfig)
|
|
281
|
+
// → report as offline_lock_failed with the original message
|
|
282
|
+
// truncated. The daemon's solidify.js call site treats !ok as
|
|
283
|
+
// a recoverable hint, not a crash trigger.
|
|
284
|
+
var msg = (e && e.message) || String(e);
|
|
285
|
+
if (msg.indexOf('Lock timeout') !== -1) {
|
|
286
|
+
return { ok: false, error: 'offline_permit_busy', offline: true };
|
|
287
|
+
}
|
|
288
|
+
return { ok: false, error: 'offline_lock_failed', offline: true, detail: msg.slice(0, 200) };
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function isSolidifyVerifyEnabled() {
|
|
293
|
+
if (process.env.NODE_ENV === 'test') {
|
|
294
|
+
var v = (process.env.EVOLVER_SOLIDIFY_VERIFY || '').toLowerCase();
|
|
295
|
+
if (v === 'false' || v === '0' || v === 'off') return false;
|
|
296
|
+
}
|
|
297
|
+
var hubUrl = process.env.A2A_HUB_URL || '';
|
|
298
|
+
return !!hubUrl;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
module.exports = {
|
|
302
|
+
requestSolidifyPermit,
|
|
303
|
+
isSolidifyVerifyEnabled,
|
|
304
|
+
consumeOfflinePermit,
|
|
305
|
+
getLastOnlineVerifyTs,
|
|
306
|
+
};
|