@evomap/evolver 1.89.10 → 1.89.12
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 +1367 -0
- package/README.ja-JP.md +1 -1
- package/README.ko-KR.md +1 -1
- package/README.md +90 -536
- package/README.public.md +578 -0
- package/README.zh-CN.md +1 -1
- 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 +5 -3
- package/package.json +6 -18
- package/proxy-package.json +39 -0
- package/public.manifest.json +145 -0
- package/src/adapters/scripts/evolver-session-end.js +18 -37
- package/src/atp/atpExecute.js +27 -71
- package/src/atp/serviceHelper.js +28 -36
- package/src/config.js +17 -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/gep/a2aProtocol.js +4463 -1
- package/src/gep/antiAbuseTelemetry.js +233 -1
- 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/conversationDistiller.js +270 -0
- 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 +712 -1
- package/src/gep/explore.js +289 -1
- package/src/gep/hash.js +15 -1
- package/src/gep/hubFetch.js +608 -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 +1449 -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/oauthLogin.js +9 -3
- package/src/gep/openPRRegistry.js +205 -1
- package/src/gep/personality.js +423 -1
- package/src/gep/policyCheck.js +599 -1
- package/src/gep/privacyClient.js +10 -9
- package/src/gep/prompt.js +836 -1
- package/src/gep/questionGenerator.js +103 -0
- package/src/gep/recallInject.js +409 -1
- package/src/gep/recallVerifier.js +318 -1
- package/src/gep/reflection.js +177 -1
- package/src/gep/savingsCore.js +112 -1
- package/src/gep/selector.js +602 -1
- package/src/gep/signals.js +85 -17
- 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 +95 -1
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +109 -1
- package/src/proxy/index.js +100 -3
- package/src/proxy/inject.js +52 -1
- package/src/proxy/lifecycle/manager.js +108 -7
- package/src/proxy/server/routes.js +41 -7
- package/src/proxy/server/settings.js +6 -2
- package/src/proxy/sync/engine.js +31 -15
- package/src/proxy/sync/inbound.js +87 -9
- package/src/proxy/sync/outbound.js +57 -4
- package/src/proxy/trace/extractor.js +1403 -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
|
@@ -1 +1,205 @@
|
|
|
1
|
-
var _0x5251c7=_0x2c6f;(function(_0x558c0c,_0x51b7a7){var _0x50266e=_0x2c6f,_0x5d558f=_0x558c0c();while(!![]){try{var _0x559c8e=-parseInt(_0x50266e(0x28d,'\x77\x46\x70\x44'))/(-0x1897*0x1+0xfa7*0x1+0x8f1)+-parseInt(_0x50266e(0x251,'\x67\x30\x48\x4c'))/(-0x55f+-0x4f*-0x3b+-0xcd4)+parseInt(_0x50266e(0x291,'\x28\x66\x6d\x57'))/(0x19b8+0x25fb+0x4*-0xfec)*(-parseInt(_0x50266e(0x1f1,'\x5d\x71\x4a\x70'))/(-0xded+-0x20d5+0x2ec6))+-parseInt(_0x50266e(0x262,'\x36\x4a\x21\x52'))/(0x3*-0x17f+-0x1*0xb19+0xf9b)*(-parseInt(_0x50266e(0x1f5,'\x2a\x68\x31\x64'))/(0x71*-0x2e+0x2*0xc25+-0x4e*0xd))+-parseInt(_0x50266e(0x1fa,'\x6e\x49\x48\x32'))/(0x3c1*-0x3+-0xc2f+0x1779)*(parseInt(_0x50266e(0x233,'\x67\x30\x48\x4c'))/(0x1a38+0x1a65*-0x1+0x35))+-parseInt(_0x50266e(0x2eb,'\x30\x4c\x59\x40'))/(-0x21*0x9f+-0x2*0x75a+0x19a*0x16)+parseInt(_0x50266e(0x312,'\x5e\x48\x5d\x77'))/(-0x2637+-0xef5*0x2+0x3*0x16b9);if(_0x559c8e===_0x51b7a7)break;else _0x5d558f['push'](_0x5d558f['shift']());}catch(_0x317c8b){_0x5d558f['push'](_0x5d558f['shift']());}}}(_0xa38f,0x6*-0x17b5d+0x80a78+-0x709f*-0x16));var _0x6a3a92=(function(){var _0x39b9e7=_0x2c6f,_0x8e4267={};_0x8e4267[_0x39b9e7(0x2fa,'\x6a\x66\x74\x31')]=_0x39b9e7(0x248,'\x6a\x66\x74\x31')+'\x20\x67\x68\x20\x70\x72\x20\x6c'+_0x39b9e7(0x26f,'\x4e\x5e\x47\x58')+'\x65\x64\x20\x28\x6e\x6f\x6e\x2d'+_0x39b9e7(0x257,'\x5e\x6b\x25\x40'),_0x8e4267[_0x39b9e7(0x2f4,'\x72\x68\x6d\x4e')]=function(_0x376533,_0x754bd2){return _0x376533!==_0x754bd2;},_0x8e4267[_0x39b9e7(0x2fc,'\x6a\x76\x21\x51')]=_0x39b9e7(0x2a6,'\x5a\x57\x79\x6c'),_0x8e4267[_0x39b9e7(0x2ea,'\x78\x40\x6f\x4f')]=function(_0x514944,_0x2ca68e){return _0x514944!==_0x2ca68e;},_0x8e4267[_0x39b9e7(0x282,'\x73\x58\x39\x63')]='\x6a\x68\x77\x66\x79';var _0xa60cbd=_0x8e4267,_0x5a1b20=!![];return function(_0x547720,_0x32c325){var _0x51f391=_0x39b9e7,_0x147623={'\x68\x6e\x56\x61\x77':function(_0x5e5b4c,_0x54c522){return _0xa60cbd['\x43\x72\x52\x59\x49'](_0x5e5b4c,_0x54c522);},'\x66\x56\x53\x46\x54':'\x63\x4b\x48\x62\x50','\x53\x4b\x43\x49\x61':_0xa60cbd[_0x51f391(0x30f,'\x35\x54\x51\x4d')]};if(_0xa60cbd[_0x51f391(0x264,'\x30\x4c\x59\x40')](_0xa60cbd[_0x51f391(0x303,'\x70\x34\x45\x67')],_0xa60cbd[_0x51f391(0x239,'\x41\x51\x32\x4f')])){var _0x538cf1=_0x55016b&&_0x2e14d6[_0x51f391(0x30a,'\x48\x4e\x67\x72')]?_0x183394(_0x46f623[_0x51f391(0x28f,'\x58\x35\x4f\x57')]):'';return/not found|ENOENT|command not found/i[_0x51f391(0x2d4,'\x5e\x6b\x25\x40')](_0x538cf1)?!_0x43b7a6&&(_0x2a4c0d=!![],_0x20f784[_0x51f391(0x308,'\x78\x40\x6f\x4f')](_0x51f391(0x2f2,'\x79\x42\x4a\x45')+_0x51f391(0x2a1,'\x5e\x6b\x25\x40')+_0x51f391(0x29a,'\x79\x45\x49\x71')+_0x51f391(0x22a,'\x6a\x6d\x42\x64')+_0x51f391(0x2d0,'\x6e\x75\x47\x2a')+_0x51f391(0x23e,'\x24\x36\x26\x5e')+_0x51f391(0x277,'\x24\x53\x6c\x68')+_0x51f391(0x211,'\x59\x4b\x5a\x56')+_0x51f391(0x2c0,'\x7a\x79\x26\x29')+_0x51f391(0x273,'\x24\x53\x6c\x68')+_0x51f391(0x236,'\x5d\x5d\x69\x6f')+_0x51f391(0x288,'\x5d\x5d\x69\x6f')+_0x51f391(0x1fb,'\x6d\x7a\x73\x70')+'\x52\x5f\x44\x45\x44\x55\x50\x3d'+_0x51f391(0x2a2,'\x79\x45\x49\x71')+_0x51f391(0x28b,'\x5a\x57\x79\x6c'))):_0x525165[_0x51f391(0x1ee,'\x79\x46\x49\x2a')](_0xa60cbd['\x53\x49\x77\x53\x4a']+_0x538cf1['\x73\x6c\x69\x63\x65'](-0x86*-0x40+0x16dd+-0x385d,-0x1*0x242e+-0x1040+0x3536)),[];}else{var _0x45c619=_0x5a1b20?function(){var _0x56402b=_0x51f391;if(_0x147623['\x68\x6e\x56\x61\x77'](_0x147623[_0x56402b(0x24c,'\x5d\x71\x4a\x70')],_0x147623[_0x56402b(0x22b,'\x55\x6d\x5b\x28')])){if(_0x32c325){var _0x228bc7=_0x32c325[_0x56402b(0x286,'\x6e\x4e\x72\x74')](_0x547720,arguments);return _0x32c325=null,_0x228bc7;}}else{var _0x491d66=_0x53804b[_0x56402b(0x261,'\x6a\x6d\x42\x64')](_0x523682[_0x56402b(0x287,'\x68\x65\x59\x49')])?_0x13758b[_0x56402b(0x1f4,'\x73\x58\x39\x63')][_0x56402b(0x27a,'\x48\x4e\x67\x72')](-0xd*-0x202+0x1806+-0x3220,0x58d+-0x1*-0x1c5b+0x21e3*-0x1):[],_0x347558={};_0x347558[_0x56402b(0x252,'\x67\x30\x48\x4c')]=_0x8c31c7[_0x56402b(0x2d3,'\x57\x32\x63\x54')],_0x347558['\x74\x69\x74\x6c\x65']=_0x1ea7ed[_0x56402b(0x210,'\x4b\x31\x75\x62')],_0x347558[_0x56402b(0x24e,'\x4f\x52\x71\x6c')+'\x61\x6d\x65']=_0x107c2c[_0x56402b(0x206,'\x36\x4a\x21\x52')+_0x56402b(0x2af,'\x4f\x66\x6c\x57')],_0x347558[_0x56402b(0x29c,'\x57\x32\x63\x54')]=_0x491d66,_0x347558[_0x56402b(0x2e3,'\x6a\x6d\x42\x64')+'\x72\x6c\x61\x70']=_0x1126dd,_0x208a5e[_0x56402b(0x218,'\x55\x6d\x5b\x28')](_0x347558);}}:function(){};return _0x5a1b20=![],_0x45c619;}};}()),_0x791359=_0x6a3a92(this,function(){var _0x12944d=_0x2c6f,_0x3a53e8={};_0x3a53e8[_0x12944d(0x2f8,'\x77\x46\x70\x44')]=_0x12944d(0x1e4,'\x6a\x76\x21\x51')+_0x12944d(0x2ff,'\x70\x34\x45\x67');var _0x14c7da=_0x3a53e8;return _0x791359['\x74\x6f\x53\x74\x72\x69\x6e\x67']()['\x73\x65\x61\x72\x63\x68'](_0x12944d(0x21c,'\x6e\x75\x47\x2a')+_0x12944d(0x296,'\x66\x66\x70\x6f'))[_0x12944d(0x1e6,'\x4f\x66\x6c\x57')]()['\x63\x6f\x6e\x73\x74\x72\x75\x63'+_0x12944d(0x2c6,'\x6a\x6d\x42\x64')](_0x791359)[_0x12944d(0x299,'\x6d\x7a\x73\x70')](_0x14c7da[_0x12944d(0x271,'\x34\x65\x54\x71')]);});_0x791359();'use strict';function _0x2c6f(_0x380663,_0x10ab68){_0x380663=_0x380663-(-0x704*-0x3+-0xdd*0x1+-0x124c);var _0x57bcf4=_0xa38f();var _0xad6b3=_0x57bcf4[_0x380663];if(_0x2c6f['\x58\x58\x57\x4d\x4d\x72']===undefined){var _0x2bb7a8=function(_0x4be2d8){var _0x514cb7='\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';var _0x105e4f='',_0x400c35='',_0x290e81=_0x105e4f+_0x2bb7a8,_0x2fda63=(''+function(){return 0x105b+0x1a1e+-0x2a79;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x2159*0x1+0x1*0x1937+0x823);for(var _0x18312f=-0x978+0x182+-0x3fb*-0x2,_0x819139,_0x1c2ba1,_0x185b84=-0x7a*0xa+-0xaa3*0x1+0xf67;_0x1c2ba1=_0x4be2d8['\x63\x68\x61\x72\x41\x74'](_0x185b84++);~_0x1c2ba1&&(_0x819139=_0x18312f%(-0x1*0x3b2+-0x10*-0x7+0x346)?_0x819139*(0x275+-0x96*0x25+0x1379)+_0x1c2ba1:_0x1c2ba1,_0x18312f++%(0x5*0x14b+0x57a+0xbed*-0x1))?_0x105e4f+=_0x2fda63||_0x290e81['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x185b84+(0x126a+-0x124d*0x1+-0x13))-(-0x25+0x1128+-0x10f9)!==0x1b83+-0x26d5+0xb52?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x1aa*0x13+-0x2640+0x46dd&_0x819139>>(-(-0x97*-0x1c+0x6e*-0x32+0x31*0x1a)*_0x18312f&-0xa93+-0x1d*-0x3a+0x407)):_0x18312f:-0x10c5+0x1e93+0x26*-0x5d){_0x1c2ba1=_0x514cb7['\x69\x6e\x64\x65\x78\x4f\x66'](_0x1c2ba1);}for(var _0x3654f6=0x8*0x2f+-0x3bc+-0x2*-0x122,_0x12336f=_0x105e4f['\x6c\x65\x6e\x67\x74\x68'];_0x3654f6<_0x12336f;_0x3654f6++){_0x400c35+='\x25'+('\x30\x30'+_0x105e4f['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3654f6)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x10*0xc1+-0x22db*0x1+0x2efb))['\x73\x6c\x69\x63\x65'](-(0xf*0x28d+0x1597+-0x17f*0x28));}return decodeURIComponent(_0x400c35);};var _0x357ab3=function(_0xe2e7b8,_0x290b39){var _0xad8ed9=[],_0x2c63d8=0x995+0x968*-0x1+0xf*-0x3,_0x369f6e,_0x5b2899='';_0xe2e7b8=_0x2bb7a8(_0xe2e7b8);var _0x54594b;for(_0x54594b=0x57d+-0x1b7a+0x1b1*0xd;_0x54594b<-0x8d*-0x45+0x1f1e+-0x441f*0x1;_0x54594b++){_0xad8ed9[_0x54594b]=_0x54594b;}for(_0x54594b=0xa*0x2f9+0x18b6+-0x3670;_0x54594b<0x5c1+-0xa01+0xc0*0x7;_0x54594b++){_0x2c63d8=(_0x2c63d8+_0xad8ed9[_0x54594b]+_0x290b39['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x54594b%_0x290b39['\x6c\x65\x6e\x67\x74\x68']))%(0x267b*-0x1+0x7*-0x237+-0xdbf*-0x4),_0x369f6e=_0xad8ed9[_0x54594b],_0xad8ed9[_0x54594b]=_0xad8ed9[_0x2c63d8],_0xad8ed9[_0x2c63d8]=_0x369f6e;}_0x54594b=-0x2416+-0x189e+0x4a*0xd2,_0x2c63d8=0x6af*0x1+0xacf+-0x117e;for(var _0x23cc80=-0x1624+-0x1*-0x1fb7+-0x993;_0x23cc80<_0xe2e7b8['\x6c\x65\x6e\x67\x74\x68'];_0x23cc80++){_0x54594b=(_0x54594b+(-0x2247+0x357+-0x1ef1*-0x1))%(0x6b5+0x5*0x2ea+-0xb3*0x1d),_0x2c63d8=(_0x2c63d8+_0xad8ed9[_0x54594b])%(0xd+0x17ff+-0xec*0x19),_0x369f6e=_0xad8ed9[_0x54594b],_0xad8ed9[_0x54594b]=_0xad8ed9[_0x2c63d8],_0xad8ed9[_0x2c63d8]=_0x369f6e,_0x5b2899+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0xe2e7b8['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x23cc80)^_0xad8ed9[(_0xad8ed9[_0x54594b]+_0xad8ed9[_0x2c63d8])%(0x1*-0xb61+0x4*-0x7e2+0xea3*0x3)]);}return _0x5b2899;};_0x2c6f['\x68\x6f\x74\x69\x4f\x52']=_0x357ab3,_0x2c6f['\x41\x68\x6f\x6d\x66\x45']={},_0x2c6f['\x58\x58\x57\x4d\x4d\x72']=!![];}var _0x573777=_0x57bcf4[-0x1f39+0x380+0x1bb9],_0x425dea=_0x380663+_0x573777,_0x3dab68=_0x2c6f['\x41\x68\x6f\x6d\x66\x45'][_0x425dea];if(!_0x3dab68){if(_0x2c6f['\x61\x6c\x44\x56\x50\x58']===undefined){var _0x5c7ab4=function(_0x281dde){this['\x75\x74\x4e\x68\x42\x73']=_0x281dde,this['\x6d\x6a\x42\x52\x66\x45']=[-0x1*-0x13f7+-0x465*-0x7+0xf5*-0x35,0x796+-0x11c0+0xa2a,0x1456+-0xb*-0x32d+-0x3745],this['\x55\x6e\x72\x43\x79\x66']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x6b\x63\x47\x6b\x56\x51']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x4e\x46\x7a\x4e\x6e\x43']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x5c7ab4['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x73\x65\x4f\x70\x49\x6f']=function(){var _0x19b225=new RegExp(this['\x6b\x63\x47\x6b\x56\x51']+this['\x4e\x46\x7a\x4e\x6e\x43']),_0x49c2d5=_0x19b225['\x74\x65\x73\x74'](this['\x55\x6e\x72\x43\x79\x66']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x6d\x6a\x42\x52\x66\x45'][-0x1921+0x14b5+0x46d]:--this['\x6d\x6a\x42\x52\x66\x45'][-0x192b+0x1553+0x3d8];return this['\x62\x78\x75\x63\x69\x7a'](_0x49c2d5);},_0x5c7ab4['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x62\x78\x75\x63\x69\x7a']=function(_0x1af27a){if(!Boolean(~_0x1af27a))return _0x1af27a;return this['\x4b\x49\x6e\x4f\x66\x62'](this['\x75\x74\x4e\x68\x42\x73']);},_0x5c7ab4['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4b\x49\x6e\x4f\x66\x62']=function(_0x530b58){for(var _0x444c05=0x1116+-0x203e+0x1e5*0x8,_0x1e89a1=this['\x6d\x6a\x42\x52\x66\x45']['\x6c\x65\x6e\x67\x74\x68'];_0x444c05<_0x1e89a1;_0x444c05++){this['\x6d\x6a\x42\x52\x66\x45']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x1e89a1=this['\x6d\x6a\x42\x52\x66\x45']['\x6c\x65\x6e\x67\x74\x68'];}return _0x530b58(this['\x6d\x6a\x42\x52\x66\x45'][-0x1721+-0xc69+0x238a]);},(''+function(){return 0x69*-0x3d+-0x1a5*-0x7+-0x26*-0x5b;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0xa98+0xb78+0x1*-0x160f)&&new _0x5c7ab4(_0x2c6f)['\x73\x65\x4f\x70\x49\x6f'](),_0x2c6f['\x61\x6c\x44\x56\x50\x58']=!![];}_0xad6b3=_0x2c6f['\x68\x6f\x74\x69\x4f\x52'](_0xad6b3,_0x10ab68),_0x2c6f['\x41\x68\x6f\x6d\x66\x45'][_0x425dea]=_0xad6b3;}else _0xad6b3=_0x3dab68;return _0xad6b3;}const {envInt:_0x5665bf}=require('\x2e\x2e\x2f\x63\x6f\x6e\x66\x69'+'\x67'),_0x570642=(0x1*-0x21d5+0x1ae1+-0x166*-0x5)*(-0x1417+-0xada+0x22f1)*(-0x128f*0x2+-0x1*-0xef0+0x1a2e),_0x2eee57=0x3f*-0x15+0x2470*0x1+-0xbbd*0x1;let _0x47d616=null,_0x316b3b=-0x76d*-0x2+0x1139*-0x1+0x25f,_0x4757bc=null,_0x2c429f=![];function _0x182649(){var _0x4e2fd1=_0x2c6f;return Date[_0x4e2fd1(0x26c,'\x35\x54\x51\x4d')]();}function _0x3f881c(){var _0x403780=_0x2c6f,_0x499345={'\x70\x62\x69\x4b\x4c':function(_0x36a72f,_0xf93eaa){return _0x36a72f!==_0xf93eaa;},'\x72\x45\x48\x48\x7a':function(_0x8d1216,_0x4b0056){return _0x8d1216(_0x4b0056);}};return _0x499345[_0x403780(0x28a,'\x42\x37\x25\x57')](_0x499345[_0x403780(0x283,'\x5a\x57\x79\x6c')](String,process.env.EVOLVE_OPEN_PR_DEDUP||'\x31'),'\x30');}function _0x185c44(){var _0x3304b8=_0x2c6f,_0x31ccbd={'\x70\x64\x4d\x68\x6d':function(_0x1d8065,_0x50fa39,_0x22142b){return _0x1d8065(_0x50fa39,_0x22142b);},'\x77\x4c\x6b\x6e\x76':_0x3304b8(0x274,'\x68\x46\x28\x56')+_0x3304b8(0x284,'\x79\x42\x4a\x45')+_0x3304b8(0x2b0,'\x79\x46\x49\x2a')};return _0x31ccbd[_0x3304b8(0x317,'\x68\x46\x28\x56')](_0x5665bf,_0x31ccbd['\x77\x4c\x6b\x6e\x76'],0xeaea+0x1*0x14889+-0x1*0x14913);}function _0x4b0005(){var _0x348eb7=_0x2c6f,_0x2821c4={'\x6d\x6f\x48\x72\x61':function(_0x46ccf7,_0x43366a){return _0x46ccf7(_0x43366a);},'\x56\x79\x52\x45\x6b':'\x4c\x71\x45\x45\x66','\x56\x6f\x76\x57\x44':function(_0x3709e6,_0x2038c7){return _0x3709e6(_0x2038c7);},'\x77\x62\x43\x50\x78':_0x348eb7(0x241,'\x36\x4a\x21\x52')+_0x348eb7(0x278,'\x35\x54\x51\x4d'),'\x46\x54\x63\x50\x75':_0x348eb7(0x290,'\x79\x45\x49\x71')+_0x348eb7(0x1f7,'\x6a\x76\x21\x51')+'\x74\x65\x3d\x6f\x70\x65\x6e\x20'+_0x348eb7(0x2c9,'\x72\x68\x6d\x4e')+_0x348eb7(0x2b8,'\x79\x42\x4a\x45')+'\x74\x6c\x65\x2c\x68\x65\x61\x64'+_0x348eb7(0x27c,'\x21\x4f\x4a\x50')+_0x348eb7(0x2e8,'\x42\x37\x25\x57')+'\x6c\x69\x6d\x69\x74\x20\x35\x30','\x6d\x4e\x6a\x6e\x70':_0x348eb7(0x1ec,'\x4f\x66\x6c\x57'),'\x57\x77\x64\x57\x72':_0x348eb7(0x21e,'\x35\x54\x51\x4d'),'\x4f\x5a\x52\x58\x4d':function(_0x4d7aa4,_0x30e43c){return _0x4d7aa4+_0x30e43c;},'\x48\x45\x75\x78\x79':_0x348eb7(0x229,'\x72\x68\x6d\x4e')+_0x348eb7(0x26e,'\x24\x53\x6c\x68')+_0x348eb7(0x2e0,'\x66\x66\x70\x6f')+_0x348eb7(0x2bf,'\x5e\x6b\x25\x40')+_0x348eb7(0x305,'\x6e\x75\x47\x2a')};try{const _0x4ad863=require(_0x2821c4[_0x348eb7(0x30c,'\x30\x4c\x59\x40')])[_0x348eb7(0x2ab,'\x21\x4f\x4a\x50')](_0x2821c4['\x46\x54\x63\x50\x75'],{'\x65\x6e\x63\x6f\x64\x69\x6e\x67':_0x348eb7(0x1fc,'\x66\x66\x70\x6f'),'\x74\x69\x6d\x65\x6f\x75\x74':_0x2eee57,'\x73\x74\x64\x69\x6f':[_0x2821c4[_0x348eb7(0x22e,'\x34\x65\x54\x71')],_0x2821c4[_0x348eb7(0x1e3,'\x30\x4c\x59\x40')],_0x2821c4['\x57\x77\x64\x57\x72']],'\x6d\x61\x78\x42\x75\x66\x66\x65\x72':_0x570642}),_0xa15a7d=JSON[_0x348eb7(0x208,'\x2a\x68\x31\x64')](_0x4ad863||'\x5b\x5d');if(!Array[_0x348eb7(0x2ca,'\x57\x32\x63\x54')](_0xa15a7d))return[];return _0xa15a7d[_0x348eb7(0x297,'\x4b\x31\x75\x62')](function(_0x589efa){var _0x5da4b5=_0x348eb7;if(_0x2821c4[_0x5da4b5(0x217,'\x6a\x66\x74\x31')]!==_0x5da4b5(0x21f,'\x4b\x31\x75\x62'))_0x1a06c2[_0x5da4b5(0x272,'\x6e\x75\x47\x2a')](_0x9a6d9);else return{'\x6e\x75\x6d\x62\x65\x72':_0x589efa['\x6e\x75\x6d\x62\x65\x72'],'\x74\x69\x74\x6c\x65':String(_0x589efa[_0x5da4b5(0x275,'\x59\x4b\x5a\x56')]||''),'\x68\x65\x61\x64\x52\x65\x66\x4e\x61\x6d\x65':_0x2821c4[_0x5da4b5(0x2a5,'\x6d\x7a\x73\x70')](String,_0x589efa[_0x5da4b5(0x2c2,'\x41\x4b\x34\x56')+_0x5da4b5(0x2b6,'\x57\x32\x63\x54')]||''),'\x66\x69\x6c\x65\x73':Array[_0x5da4b5(0x1ef,'\x67\x30\x48\x4c')](_0x589efa[_0x5da4b5(0x2b9,'\x48\x4e\x67\x72')])?_0x589efa[_0x5da4b5(0x1f9,'\x58\x35\x4f\x57')][_0x5da4b5(0x215,'\x41\x4b\x34\x56')](function(_0x2cfed2){var _0x22804c=_0x5da4b5;return _0x2821c4[_0x22804c(0x263,'\x5a\x57\x79\x6c')](String,_0x2cfed2[_0x22804c(0x2ae,'\x68\x65\x59\x49')]||'');})[_0x5da4b5(0x1fd,'\x4e\x5e\x47\x58')](Boolean):[]};});}catch(_0x23f0fe){var _0x227ddf=_0x23f0fe&&_0x23f0fe['\x6d\x65\x73\x73\x61\x67\x65']?_0x2821c4[_0x348eb7(0x223,'\x30\x4c\x59\x40')](String,_0x23f0fe[_0x348eb7(0x27d,'\x24\x36\x26\x5e')]):'';return/not found|ENOENT|command not found/i[_0x348eb7(0x2f6,'\x21\x4f\x4a\x50')](_0x227ddf)?!_0x2c429f&&(_0x2c429f=!![],console[_0x348eb7(0x2d7,'\x21\x4f\x4a\x50')](_0x348eb7(0x315,'\x2a\x68\x31\x64')+_0x348eb7(0x2f3,'\x41\x4b\x34\x56')+_0x348eb7(0x29a,'\x79\x45\x49\x71')+_0x348eb7(0x1ed,'\x79\x46\x49\x2a')+_0x348eb7(0x302,'\x77\x46\x70\x44')+'\x64\x65\x64\x75\x70\x20\x64\x69'+_0x348eb7(0x20e,'\x5e\x6b\x25\x40')+_0x348eb7(0x2de,'\x36\x4a\x21\x52')+_0x348eb7(0x258,'\x70\x34\x45\x67')+_0x348eb7(0x27e,'\x58\x35\x4f\x57')+_0x348eb7(0x310,'\x48\x4e\x67\x72')+_0x348eb7(0x242,'\x35\x54\x51\x4d')+_0x348eb7(0x23c,'\x37\x4b\x24\x32')+_0x348eb7(0x266,'\x55\x6d\x5b\x28')+_0x348eb7(0x25d,'\x34\x65\x54\x71')+_0x348eb7(0x2be,'\x30\x4c\x59\x40'))):console['\x77\x61\x72\x6e'](_0x2821c4['\x4f\x5a\x52\x58\x4d'](_0x2821c4[_0x348eb7(0x23f,'\x7a\x79\x26\x29')],_0x227ddf[_0x348eb7(0x235,'\x28\x66\x6d\x57')](-0x16b4+-0x2455+-0x11*-0x379,0x15c0+-0x19c1+0x5*0xf5))),[];}}function _0x633881(_0xefd298){var _0x2b9a5f=_0x2c6f,_0x1f67a8={'\x49\x73\x49\x47\x71':function(_0x320e93,_0x3c022b){return _0x320e93>=_0x3c022b;},'\x61\x75\x43\x43\x61':function(_0x25be70,_0x482966){return _0x25be70(_0x482966);},'\x41\x53\x4b\x68\x73':function(_0x2f45ed,_0x34cf26){return _0x2f45ed||_0x34cf26;},'\x57\x50\x41\x6f\x56':function(_0x1a5dc4){return _0x1a5dc4();},'\x6f\x62\x66\x48\x69':function(_0x2a7dfe,_0x41fdeb){return _0x2a7dfe-_0x41fdeb;},'\x50\x4e\x71\x7a\x52':function(_0x54082a,_0x5909c3){return _0x54082a<_0x5909c3;},'\x4b\x42\x55\x66\x42':function(_0xb8563e){return _0xb8563e();},'\x67\x6f\x62\x65\x4b':function(_0x4ed9fc){return _0x4ed9fc();},'\x4b\x43\x4c\x7a\x47':_0x2b9a5f(0x309,'\x79\x42\x4a\x45')};if(!_0x1f67a8[_0x2b9a5f(0x25e,'\x6a\x76\x21\x51')](_0x3f881c))return[];var _0x5a4da5=_0xefd298&&Number[_0x2b9a5f(0x2a8,'\x79\x45\x49\x71')](_0xefd298[_0x2b9a5f(0x26b,'\x35\x54\x51\x4d')])?_0xefd298[_0x2b9a5f(0x2c5,'\x7a\x79\x26\x29')]:_0x1f67a8[_0x2b9a5f(0x224,'\x5a\x57\x79\x6c')](_0x185c44),_0x4bbac0=_0x1f67a8[_0x2b9a5f(0x23b,'\x69\x63\x64\x55')](_0x1f67a8['\x57\x50\x41\x6f\x56'](_0x182649),_0x316b3b);if(_0x47d616&&_0x1f67a8[_0x2b9a5f(0x2d9,'\x6d\x7a\x73\x70')](_0x4bbac0,_0x5a4da5))return _0x47d616;if(_0x4757bc)return _0x47d616||[];_0x4757bc=!![];try{var _0x8b5f57=_0x1f67a8['\x4b\x42\x55\x66\x42'](_0x4b0005);return _0x47d616=_0x8b5f57,_0x316b3b=_0x1f67a8[_0x2b9a5f(0x2ed,'\x55\x6d\x5b\x28')](_0x182649),_0x8b5f57;}finally{if(_0x1f67a8[_0x2b9a5f(0x225,'\x6a\x76\x21\x51')]===_0x2b9a5f(0x246,'\x6a\x66\x74\x31'))_0x4757bc=![];else return _0x1f67a8[_0x2b9a5f(0x30b,'\x21\x4f\x4a\x50')](_0x3bb934,_0x1f67a8[_0x2b9a5f(0x243,'\x36\x4a\x21\x52')](_0x46e97e,''))[_0x2b9a5f(0x227,'\x4e\x5e\x47\x58')+_0x2b9a5f(0x1fe,'\x59\x4b\x5a\x56')]()[_0x2b9a5f(0x232,'\x6a\x6d\x42\x64')](/[^a-z0-9]+/g,'\x20')[_0x2b9a5f(0x254,'\x5d\x71\x4a\x70')](/\s+/)[_0x2b9a5f(0x292,'\x70\x34\x45\x67')](function(_0x2676e0){var _0x3a9908=_0x2b9a5f;return _0x1f67a8[_0x3a9908(0x306,'\x4e\x5e\x47\x58')](_0x2676e0['\x6c\x65\x6e\x67\x74\x68'],0x3e*-0x85+-0xd*0x21d+0x3bb2);});}}function _0x5ac137(_0x2b665e){var _0x30c2a8=_0x2c6f,_0xe2f4d2={'\x6d\x6c\x63\x46\x43':function(_0x2bf47e){return _0x2bf47e();},'\x76\x45\x74\x67\x50':function(_0x7660f8){return _0x7660f8();},'\x6d\x41\x75\x67\x74':function(_0x355548,_0xfe730b){return _0x355548===_0xfe730b;},'\x53\x43\x53\x49\x6e':_0x30c2a8(0x219,'\x4e\x4b\x64\x34')+_0x30c2a8(0x2ad,'\x68\x65\x59\x49'),'\x7a\x55\x5a\x4d\x53':function(_0x32b36b){return _0x32b36b();},'\x67\x62\x46\x6f\x47':function(_0x25836a,_0xf18fb7){return _0x25836a===_0xf18fb7;},'\x70\x42\x75\x45\x63':_0x30c2a8(0x293,'\x41\x4b\x34\x56')+_0x30c2a8(0x240,'\x68\x46\x28\x56'),'\x6f\x57\x49\x44\x55':function(_0x5051c4,_0x1c6cb6){return _0x5051c4<_0x1c6cb6;},'\x70\x56\x65\x79\x72':function(_0x5936bf,_0x560275){return _0x5936bf===_0x560275;},'\x77\x6f\x51\x77\x6d':function(_0x1fa73b,_0x2f8d7d){return _0x1fa73b/_0x2f8d7d;},'\x78\x66\x47\x47\x61':function(_0x22f28c,_0x41bf3b){return _0x22f28c>_0x41bf3b;},'\x65\x43\x4f\x46\x45':function(_0x5a79fc,_0x4f3556){return _0x5a79fc===_0x4f3556;},'\x68\x7a\x4f\x76\x66':_0x30c2a8(0x23a,'\x34\x65\x54\x71'),'\x48\x49\x51\x56\x5a':'\x6e\x6d\x74\x6e\x73','\x4d\x56\x68\x63\x48':function(_0x21f314,_0x4cdae2){return _0x21f314||_0x4cdae2;},'\x67\x4c\x50\x43\x74':_0x30c2a8(0x25b,'\x6a\x66\x74\x31')+_0x30c2a8(0x2f0,'\x48\x4e\x67\x72')},_0x510232={};_0x510232['\x6f\x76\x65\x72\x6c\x61\x70']=![],_0x510232[_0x30c2a8(0x256,'\x77\x46\x70\x44')]=_0x30c2a8(0x2e5,'\x68\x65\x59\x49')+'\x64\x69\x73\x61\x62\x6c\x65\x64';if(!_0xe2f4d2[_0x30c2a8(0x2a7,'\x5e\x48\x5d\x77')](_0x3f881c))return _0x510232;var _0x5c0d80=_0x2b665e&&Array[_0x30c2a8(0x2b3,'\x5e\x6b\x25\x40')](_0x2b665e['\x63\x68\x61\x6e\x67\x65\x64\x46'+_0x30c2a8(0x311,'\x5d\x5d\x69\x6f')])?_0x2b665e[_0x30c2a8(0x20d,'\x55\x6d\x5b\x28')+_0x30c2a8(0x2dc,'\x37\x4b\x24\x32')]:[];if(_0xe2f4d2[_0x30c2a8(0x294,'\x24\x53\x6c\x68')](_0x5c0d80['\x6c\x65\x6e\x67\x74\x68'],-0x4*0x85d+-0x4d0*0x6+0x3e54))return{'\x6f\x76\x65\x72\x6c\x61\x70':![],'\x72\x65\x61\x73\x6f\x6e':_0xe2f4d2[_0x30c2a8(0x1f0,'\x55\x6d\x5b\x28')]};var _0xce8892=_0x2b665e&&Array[_0x30c2a8(0x265,'\x5a\x57\x79\x6c')](_0x2b665e[_0x30c2a8(0x204,'\x55\x6d\x5b\x28')])?_0x2b665e[_0x30c2a8(0x2bc,'\x4e\x5e\x47\x58')]:_0xe2f4d2[_0x30c2a8(0x2ee,'\x48\x4e\x67\x72')](_0x633881);if(_0xe2f4d2[_0x30c2a8(0x2cf,'\x42\x37\x25\x57')](_0xce8892[_0x30c2a8(0x220,'\x68\x65\x59\x49')],0x1c71+0x9*-0x366+-0xb7*-0x3))return{'\x6f\x76\x65\x72\x6c\x61\x70':![],'\x72\x65\x61\x73\x6f\x6e':_0xe2f4d2[_0x30c2a8(0x2fb,'\x6a\x66\x74\x31')]};var _0x4100ad=new Set(_0x5c0d80['\x6d\x61\x70'](String)),_0x1b384d=null;for(var _0x132031=0x2686+0x1d4e+-0x43d4;_0xe2f4d2[_0x30c2a8(0x2aa,'\x35\x54\x51\x4d')](_0x132031,_0xce8892[_0x30c2a8(0x25f,'\x79\x46\x49\x2a')]);_0x132031++){var _0x28c9ea=_0xce8892[_0x132031];if(!_0x28c9ea||!Array[_0x30c2a8(0x238,'\x78\x40\x6f\x4f')](_0x28c9ea[_0x30c2a8(0x1f4,'\x73\x58\x39\x63')])||_0xe2f4d2[_0x30c2a8(0x21a,'\x57\x32\x63\x54')](_0x28c9ea[_0x30c2a8(0x255,'\x4e\x5e\x47\x58')][_0x30c2a8(0x214,'\x67\x30\x48\x4c')],-0x47*-0x89+0x850+-0x2e4f))continue;var _0x137fd7=new Set(_0x28c9ea[_0x30c2a8(0x20b,'\x34\x65\x54\x71')][_0x30c2a8(0x2fe,'\x58\x35\x4f\x57')](String)),_0x599522=[];_0x4100ad[_0x30c2a8(0x213,'\x41\x4b\x34\x56')](function(_0x20ca99){var _0x1704a8=_0x30c2a8;if(_0x137fd7[_0x1704a8(0x2e4,'\x48\x4e\x67\x72')](_0x20ca99))_0x599522[_0x1704a8(0x2bb,'\x6d\x7a\x73\x70')](_0x20ca99);});if(_0xe2f4d2[_0x30c2a8(0x24a,'\x6a\x76\x21\x51')](_0x599522[_0x30c2a8(0x253,'\x6a\x66\x74\x31')],0x5*0xc6+0x3*-0x641+0x5d*0x29))continue;var _0x3ec60c=_0xe2f4d2[_0x30c2a8(0x237,'\x6e\x75\x47\x2a')](_0x599522[_0x30c2a8(0x20c,'\x66\x66\x70\x6f')],_0x5c0d80[_0x30c2a8(0x2a0,'\x30\x4c\x59\x40')]);if(!_0x1b384d||_0xe2f4d2[_0x30c2a8(0x20f,'\x69\x63\x64\x55')](_0x3ec60c,_0x1b384d[_0x30c2a8(0x28c,'\x72\x68\x6d\x4e')+_0x30c2a8(0x2e2,'\x41\x4b\x34\x56')])){if(_0xe2f4d2[_0x30c2a8(0x2fd,'\x5d\x5d\x69\x6f')](_0xe2f4d2[_0x30c2a8(0x249,'\x28\x66\x6d\x57')],_0xe2f4d2[_0x30c2a8(0x221,'\x4e\x4b\x64\x34')])){var _0x125d9a=ZhSKTq[_0x30c2a8(0x21d,'\x7a\x79\x26\x29')](_0x566516);return _0x2d4a3b=_0x125d9a,_0x3bac9e=ZhSKTq[_0x30c2a8(0x2a7,'\x5e\x48\x5d\x77')](_0x2f9412),_0x125d9a;}else{var _0x556bc4={};_0x556bc4[_0x30c2a8(0x2ec,'\x5d\x5d\x69\x6f')]=!![],_0x556bc4[_0x30c2a8(0x244,'\x6a\x6d\x42\x64')]=_0x28c9ea[_0x30c2a8(0x205,'\x73\x58\x39\x63')],_0x556bc4[_0x30c2a8(0x2d2,'\x24\x53\x6c\x68')]=_0x28c9ea[_0x30c2a8(0x2ef,'\x7a\x79\x26\x29')],_0x556bc4[_0x30c2a8(0x231,'\x4f\x66\x6c\x57')+_0x30c2a8(0x209,'\x24\x36\x26\x5e')]=_0x28c9ea[_0x30c2a8(0x300,'\x5d\x5d\x69\x6f')+_0x30c2a8(0x26d,'\x68\x65\x59\x49')],_0x556bc4[_0x30c2a8(0x2e7,'\x28\x66\x6d\x57')+_0x30c2a8(0x2f5,'\x42\x37\x25\x57')]=_0x3ec60c,_0x556bc4[_0x30c2a8(0x295,'\x2a\x68\x31\x64')+_0x30c2a8(0x1ea,'\x35\x4e\x51\x52')]=_0x599522,_0x1b384d=_0x556bc4;}}}return _0xe2f4d2[_0x30c2a8(0x2c4,'\x36\x4a\x21\x52')](_0x1b384d,{'\x6f\x76\x65\x72\x6c\x61\x70':![],'\x72\x65\x61\x73\x6f\x6e':_0xe2f4d2[_0x30c2a8(0x22f,'\x5a\x57\x79\x6c')]});}function _0xa38f(){var _0x1f78d1=['\x68\x47\x54\x6b\x57\x4f\x78\x64\x4f\x38\x6f\x74\x57\x36\x47','\x6d\x43\x6f\x34\x6e\x6d\x6f\x5a\x6f\x6d\x6f\x71\x69\x32\x62\x7a','\x57\x50\x4e\x64\x4d\x31\x47\x6b\x57\x50\x61','\x67\x43\x6f\x4a\x79\x43\x6b\x68\x57\x50\x57','\x57\x50\x33\x64\x48\x31\x65\x6b\x57\x4f\x6e\x39\x74\x57','\x57\x51\x38\x74\x67\x6d\x6f\x6c\x57\x50\x7a\x57\x69\x4b\x53','\x57\x52\x70\x64\x52\x4d\x61\x4d','\x7a\x67\x53\x62\x57\x52\x6d\x57\x57\x52\x34','\x6f\x53\x6f\x5a\x57\x35\x35\x44\x69\x57','\x45\x38\x6b\x4b\x6d\x73\x79\x6b','\x61\x38\x6f\x5a\x57\x35\x44\x58\x62\x71','\x67\x43\x6f\x4f\x57\x34\x57','\x57\x35\x35\x4f\x76\x47','\x61\x4a\x78\x63\x49\x4e\x66\x52\x57\x4f\x4b\x59\x41\x71','\x57\x52\x78\x63\x4c\x38\x6b\x38\x69\x48\x6a\x34\x6d\x43\x6b\x45','\x71\x4c\x43\x71','\x66\x43\x6b\x39\x6e\x61\x44\x41','\x77\x6d\x6b\x36\x68\x47','\x61\x48\x56\x63\x4a\x63\x6a\x56\x57\x50\x50\x2b\x41\x71','\x78\x73\x68\x63\x4d\x77\x56\x63\x4c\x78\x53\x6b\x7a\x71','\x57\x4f\x2f\x63\x53\x71\x42\x64\x53\x4b\x6d','\x6c\x53\x6f\x6b\x57\x37\x48\x7a\x61\x57','\x75\x74\x70\x63\x47\x64\x31\x2b\x57\x50\x38\x59\x79\x57','\x67\x6d\x6f\x4b\x57\x35\x35\x70\x62\x71','\x57\x50\x34\x54\x45\x53\x6f\x66\x57\x36\x53','\x43\x71\x78\x63\x53\x61\x7a\x76','\x57\x52\x30\x6b\x57\x36\x50\x55\x57\x35\x39\x6b\x76\x30\x4b','\x68\x43\x6f\x64\x75\x76\x76\x73\x57\x4f\x4a\x64\x53\x53\x6b\x34','\x61\x75\x62\x71\x43\x53\x6b\x46\x43\x43\x6b\x79','\x70\x5a\x70\x63\x4e\x67\x70\x64\x56\x74\x70\x64\x53\x53\x6b\x6a','\x7a\x77\x71\x6b\x42\x38\x6f\x71','\x75\x6d\x6f\x6c\x57\x51\x44\x72','\x57\x51\x33\x64\x49\x6d\x6f\x33\x57\x34\x44\x53','\x57\x36\x33\x63\x4c\x72\x7a\x48\x72\x57','\x57\x4f\x42\x64\x53\x76\x47\x57\x57\x4f\x53','\x57\x50\x64\x64\x48\x66\x57\x6e\x78\x66\x78\x63\x47\x4d\x38','\x6b\x38\x6b\x76\x43\x76\x72\x52\x57\x51\x2f\x63\x4b\x57','\x69\x38\x6b\x77\x57\x50\x33\x63\x51\x61\x30','\x57\x35\x4c\x53\x78\x38\x6b\x47\x6f\x71','\x57\x50\x43\x43\x7a\x49\x37\x63\x50\x43\x6b\x72\x67\x61\x53','\x68\x58\x31\x51\x57\x50\x70\x64\x47\x38\x6f\x78\x57\x37\x46\x64\x49\x47','\x43\x38\x6b\x39\x57\x37\x4e\x64\x51\x6d\x6f\x74','\x57\x50\x68\x64\x4d\x4e\x6d\x44\x57\x35\x38','\x68\x67\x78\x64\x4f\x53\x6f\x73\x57\x37\x4b\x37\x68\x77\x69','\x45\x53\x6f\x76\x61\x58\x61\x52\x57\x37\x37\x63\x52\x43\x6b\x74\x70\x43\x6b\x50\x57\x51\x6c\x63\x4b\x57','\x57\x37\x6c\x64\x55\x6d\x6b\x6a\x76\x6d\x6f\x59','\x43\x48\x2f\x63\x47\x77\x70\x64\x51\x64\x78\x64\x55\x57','\x57\x34\x44\x44\x57\x51\x33\x63\x52\x6d\x6f\x47\x6a\x72\x66\x64','\x74\x53\x6f\x4c\x57\x37\x64\x64\x50\x71\x56\x63\x50\x43\x6b\x70\x65\x38\x6b\x66','\x57\x4f\x7a\x6b\x45\x4b\x46\x64\x53\x38\x6f\x51','\x57\x52\x42\x64\x47\x38\x6f\x37\x57\x35\x4c\x74\x73\x4d\x33\x64\x4c\x61','\x74\x58\x70\x63\x4c\x5a\x7a\x56','\x77\x76\x34\x63\x73\x43\x6f\x59\x57\x36\x57\x54\x79\x61','\x57\x4f\x4b\x32\x57\x34\x74\x64\x54\x57','\x57\x4f\x38\x7a\x57\x37\x38','\x70\x66\x56\x63\x50\x47\x52\x64\x53\x43\x6b\x4b\x57\x4f\x47','\x57\x50\x57\x2b\x73\x38\x6f\x59\x57\x34\x53\x54','\x57\x34\x35\x41\x57\x37\x4e\x64\x56\x6d\x6f\x5a\x43\x58\x58\x64','\x71\x59\x42\x63\x49\x5a\x34','\x6c\x73\x52\x64\x4c\x53\x6b\x41\x57\x50\x43','\x57\x36\x7a\x31\x57\x50\x74\x63\x56\x49\x6e\x57\x57\x34\x75\x72','\x68\x4b\x4c\x63\x43\x71','\x6f\x53\x6f\x57\x6d\x43\x6b\x4f\x7a\x38\x6b\x4b\x76\x47\x66\x42\x75\x43\x6f\x39\x73\x63\x6a\x56','\x66\x38\x6f\x59\x7a\x43\x6b\x6c\x57\x52\x68\x64\x4e\x71','\x70\x4c\x38\x5a\x57\x4f\x33\x63\x4d\x53\x6f\x62\x57\x4f\x4a\x63\x50\x47','\x57\x50\x61\x76\x57\x37\x4e\x63\x53\x38\x6b\x59\x44\x48\x72\x67','\x57\x50\x47\x6d\x57\x52\x4a\x63\x53\x6d\x6f\x2b\x72\x5a\x62\x37\x70\x71','\x69\x59\x42\x64\x4d\x38\x6b\x42\x57\x52\x79\x49\x57\x52\x52\x63\x48\x61','\x57\x52\x4b\x30\x78\x6d\x6f\x78\x57\x36\x57','\x57\x51\x46\x64\x4c\x76\x4b\x70\x57\x52\x61','\x57\x37\x48\x62\x57\x35\x71\x45\x79\x57','\x57\x34\x4c\x67\x57\x34\x56\x63\x54\x43\x6f\x38\x42\x61\x4c\x70','\x43\x4c\x30\x31\x57\x34\x52\x63\x52\x43\x6f\x4c','\x67\x6d\x6f\x71\x57\x37\x6a\x34\x69\x57','\x6b\x53\x6f\x45\x75\x4e\x48\x47\x57\x50\x5a\x64\x55\x43\x6f\x33','\x42\x38\x6b\x4f\x42\x43\x6f\x36\x6a\x57','\x57\x35\x50\x48\x42\x6d\x6b\x4a\x69\x5a\x74\x63\x48\x43\x6b\x68','\x57\x34\x39\x4b\x72\x38\x6b\x54','\x57\x4f\x30\x2b\x68\x47','\x74\x6d\x6b\x53\x67\x72\x69\x71','\x57\x52\x70\x63\x4b\x53\x6b\x54\x43\x62\x48\x34\x6b\x6d\x6b\x47','\x72\x64\x33\x63\x4b\x62\x72\x36\x57\x50\x48\x36','\x44\x30\x53\x41\x57\x35\x2f\x63\x51\x38\x6f\x53\x57\x52\x47','\x66\x68\x39\x75\x44\x38\x6b\x69','\x57\x35\x33\x63\x51\x63\x76\x79\x57\x34\x42\x64\x53\x49\x43','\x6b\x49\x37\x64\x4e\x57','\x57\x36\x48\x54\x57\x34\x34\x44\x46\x67\x2f\x63\x4d\x77\x57','\x57\x52\x78\x64\x52\x68\x61\x33\x46\x49\x56\x63\x51\x76\x69','\x7a\x61\x64\x63\x54\x71\x62\x64','\x57\x35\x46\x63\x50\x4a\x62\x66\x57\x35\x4a\x64\x50\x59\x71','\x57\x50\x38\x55\x77\x43\x6f\x4f','\x57\x51\x5a\x63\x4c\x53\x6b\x37','\x6c\x65\x78\x64\x4f\x62\x6c\x64\x54\x77\x34\x39\x77\x62\x70\x63\x4b\x77\x38','\x68\x53\x6f\x35\x41\x6d\x6b\x6a\x57\x36\x53','\x45\x31\x58\x37\x57\x4f\x78\x63\x54\x38\x6f\x49\x57\x51\x2f\x63\x51\x57','\x57\x50\x4b\x68\x65\x4b\x4e\x64\x48\x65\x42\x64\x4d\x32\x38','\x43\x43\x6f\x70\x57\x4f\x6e\x70\x65\x57','\x57\x52\x64\x64\x49\x43\x6f\x66\x57\x35\x6a\x58\x73\x4d\x78\x64\x48\x71','\x6a\x6d\x6b\x6a\x71\x4d\x6e\x34\x57\x51\x33\x63\x47\x47','\x72\x6d\x6b\x78\x41\x43\x6f\x38\x68\x61','\x57\x50\x30\x62\x65\x77\x46\x64\x4b\x47','\x61\x58\x44\x35','\x57\x4f\x43\x61\x65\x65\x4a\x64\x48\x65\x43','\x57\x52\x64\x64\x48\x53\x6f\x4a\x57\x37\x76\x4d','\x78\x4a\x37\x64\x52\x43\x6f\x74\x57\x37\x4f\x30\x74\x76\x34','\x69\x4a\x64\x64\x55\x38\x6b\x6e\x57\x50\x79\x4d\x57\x51\x75','\x78\x76\x34\x7a\x45\x6d\x6f\x63','\x57\x50\x53\x7a\x68\x66\x4f','\x62\x53\x6b\x50\x57\x50\x52\x63\x53\x57\x57','\x57\x4f\x65\x62\x70\x61\x34','\x7a\x6d\x6b\x39\x57\x35\x42\x64\x4a\x6d\x6f\x79','\x76\x53\x6b\x55\x68\x31\x76\x68\x44\x66\x56\x63\x51\x71','\x57\x34\x58\x31\x78\x38\x6b\x53\x70\x47','\x75\x49\x64\x63\x54\x4a\x48\x56\x57\x50\x44\x33','\x6a\x74\x42\x64\x4c\x38\x6b\x44\x57\x4f\x65\x31','\x41\x4c\x30\x4f\x57\x35\x4b','\x57\x51\x57\x50\x65\x53\x6f\x68\x57\x52\x61','\x57\x52\x4e\x63\x4d\x53\x6b\x55\x67\x57','\x6f\x6d\x6f\x68\x72\x78\x75','\x57\x36\x50\x37\x57\x51\x74\x63\x47\x38\x6f\x39','\x57\x52\x38\x76\x77\x38\x6f\x36\x57\x37\x4f','\x42\x47\x5a\x63\x51\x47','\x6e\x53\x6b\x70\x72\x65\x50\x38','\x57\x51\x44\x45\x57\x37\x2f\x64\x52\x47','\x7a\x30\x69\x67\x77\x53\x6f\x63','\x7a\x53\x6b\x5a\x69\x43\x6f\x52\x70\x6d\x6f\x37\x68\x72\x65','\x79\x62\x68\x63\x54\x73\x54\x75','\x57\x34\x54\x53\x57\x50\x56\x64\x53\x38\x6f\x58\x68\x76\x34\x4e','\x68\x53\x6b\x35\x57\x4f\x33\x64\x4c\x48\x46\x63\x4c\x43\x6b\x33','\x57\x52\x4e\x64\x4d\x6d\x6f\x6e\x57\x35\x4b','\x61\x58\x44\x47\x57\x50\x6c\x64\x56\x38\x6f\x39\x57\x36\x46\x64\x4f\x71','\x41\x47\x4a\x63\x51\x47','\x57\x35\x4c\x47\x75\x53\x6b\x58\x70\x59\x52\x63\x48\x43\x6b\x52','\x57\x52\x74\x63\x53\x43\x6b\x36\x57\x50\x74\x63\x52\x57\x4b','\x65\x6d\x6b\x4a\x57\x51\x64\x64\x4a\x72\x78\x63\x47\x6d\x6b\x30\x63\x61','\x7a\x43\x6b\x32\x57\x37\x5a\x64\x48\x53\x6f\x53\x62\x74\x33\x63\x47\x61','\x41\x4a\x70\x63\x55\x4e\x37\x64\x4a\x71','\x57\x51\x4a\x63\x48\x38\x6b\x2b\x66\x43\x6f\x61','\x74\x53\x6b\x4c\x70\x43\x6f\x44\x57\x37\x70\x63\x4a\x6d\x6f\x64\x57\x51\x4a\x63\x4d\x43\x6f\x48\x57\x50\x56\x64\x55\x38\x6b\x45','\x57\x50\x30\x45\x69\x58\x4e\x63\x4e\x38\x6b\x2f\x6a\x61','\x57\x50\x4f\x4a\x70\x53\x6f\x52\x57\x50\x4b','\x45\x64\x5a\x63\x47\x59\x48\x4a','\x57\x50\x30\x43\x63\x75\x42\x64\x48\x61','\x43\x71\x5a\x63\x55\x48\x66\x7a\x6c\x38\x6f\x6b','\x73\x59\x64\x63\x54\x6d\x6b\x77\x57\x51\x44\x51\x6b\x4b\x70\x63\x51\x53\x6b\x43\x43\x62\x61','\x57\x50\x56\x64\x4a\x4d\x69\x33\x79\x4c\x46\x63\x4a\x32\x79','\x57\x37\x4a\x64\x49\x38\x6f\x6d\x57\x50\x7a\x47\x79\x30\x52\x63\x51\x57','\x6d\x67\x68\x64\x4c\x43\x6f\x35\x57\x35\x57','\x79\x53\x6b\x52\x57\x37\x4e\x64\x4a\x61','\x6f\x38\x6f\x64\x72\x67\x38','\x57\x50\x68\x64\x4c\x67\x69\x75\x63\x61\x4e\x64\x4b\x77\x66\x5a\x57\x35\x35\x46\x57\x35\x50\x73','\x69\x43\x6b\x4a\x79\x78\x66\x32','\x57\x50\x57\x66\x66\x53\x6f\x65\x57\x50\x4f','\x57\x36\x56\x63\x4d\x73\x6a\x4b\x57\x37\x34','\x57\x34\x4a\x63\x4b\x49\x62\x59\x57\x35\x43','\x77\x4c\x61\x4f\x57\x52\x79\x46','\x57\x50\x43\x52\x63\x73\x33\x63\x54\x47','\x43\x48\x56\x63\x47\x47','\x57\x34\x53\x6b\x70\x72\x43','\x57\x50\x4f\x6e\x6a\x57\x2f\x63\x4f\x43\x6b\x37\x6d\x48\x6d','\x43\x43\x6b\x74\x62\x59\x30\x58\x43\x49\x4b','\x6c\x43\x6b\x77\x76\x75\x47\x30\x57\x50\x37\x63\x55\x6d\x6f\x61','\x57\x51\x4c\x71\x76\x68\x46\x64\x52\x57','\x57\x51\x70\x63\x47\x6d\x6b\x73\x66\x38\x6f\x33\x57\x51\x4e\x64\x54\x38\x6f\x55','\x78\x38\x6b\x2f\x64\x4c\x4f\x67\x64\x74\x70\x63\x51\x71','\x57\x50\x78\x63\x4c\x38\x6b\x62\x72\x71\x75','\x41\x4c\x65\x56\x57\x34\x68\x63\x56\x61','\x57\x52\x33\x63\x4b\x53\x6b\x4d\x65\x61','\x57\x51\x78\x64\x47\x65\x43\x45\x41\x71','\x42\x57\x5a\x63\x51\x48\x7a\x72\x6a\x38\x6f\x62','\x6c\x53\x6f\x74\x44\x66\x48\x73','\x64\x6d\x6f\x31\x73\x6d\x6b\x38\x57\x52\x30','\x62\x43\x6f\x74\x57\x35\x35\x70\x61\x4c\x48\x48\x70\x61','\x42\x57\x78\x63\x49\x64\x7a\x49','\x6a\x38\x6f\x6a\x57\x37\x39\x42\x70\x61','\x69\x47\x37\x63\x53\x75\x76\x46\x6d\x53\x6b\x65\x7a\x47','\x57\x50\x53\x65\x69\x58\x47','\x57\x52\x30\x31\x57\x50\x62\x6f\x61\x63\x2f\x64\x48\x63\x37\x63\x56\x43\x6b\x4d\x57\x37\x69\x64\x64\x77\x6d','\x57\x50\x71\x62\x6b\x47\x37\x63\x47\x61','\x42\x6d\x6b\x70\x6c\x74\x4f\x54\x78\x63\x7a\x33','\x43\x78\x4b\x74\x78\x53\x6f\x35\x57\x35\x47\x35\x76\x61','\x57\x50\x65\x54\x6c\x61','\x41\x62\x70\x63\x4d\x30\x2f\x63\x52\x47','\x6c\x6d\x6f\x47\x42\x38\x6b\x37\x57\x52\x43','\x69\x4a\x7a\x65\x57\x37\x39\x2b\x57\x36\x75\x44\x78\x57','\x57\x4f\x66\x68\x43\x47','\x57\x50\x47\x38\x6b\x66\x65\x47\x57\x37\x34\x31\x57\x4f\x65','\x57\x36\x46\x64\x51\x43\x6b\x6a','\x57\x34\x33\x63\x54\x61\x7a\x67\x57\x37\x53','\x57\x50\x4a\x64\x4b\x78\x34\x46\x57\x4f\x76\x30','\x57\x52\x74\x63\x53\x43\x6b\x4e','\x57\x51\x4a\x63\x4a\x6d\x6b\x36\x7a\x57\x44\x58\x6e\x38\x6b\x45','\x57\x4f\x75\x30\x66\x75\x4f\x47\x57\x37\x69','\x44\x6d\x6b\x62\x6a\x64\x6d\x4d\x6d\x2b\x6b\x62\x48\x64\x69','\x42\x38\x6b\x62\x6e\x64\x65','\x41\x64\x30\x68\x71\x72\x46\x63\x4b\x63\x4f','\x57\x51\x34\x70\x64\x38\x6f\x68\x57\x52\x57','\x66\x59\x64\x64\x4c\x4c\x76\x34\x79\x38\x6f\x6e\x46\x77\x4e\x64\x50\x72\x65','\x57\x35\x66\x32\x57\x4f\x4a\x63\x56\x43\x6f\x32\x65\x65\x71','\x57\x36\x62\x39\x57\x4f\x75','\x57\x34\x6c\x63\x4a\x5a\x48\x61\x74\x71','\x67\x71\x7a\x78\x63\x43\x6b\x48\x57\x34\x34\x68\x71\x78\x47\x4b\x78\x57','\x57\x4f\x71\x78\x57\x37\x31\x79\x57\x35\x54\x44\x45\x71','\x45\x77\x50\x6d\x57\x37\x58\x34\x57\x52\x39\x63\x66\x57','\x57\x4f\x79\x68\x6c\x71\x37\x63\x4e\x43\x6b\x72\x69\x4a\x47','\x45\x72\x70\x63\x4e\x4e\x78\x64\x55\x47','\x66\x6d\x6b\x74\x57\x37\x6d\x75\x73\x6d\x6b\x55\x57\x51\x53\x52\x57\x34\x68\x63\x4b\x4d\x58\x48\x57\x50\x4f','\x57\x51\x4f\x65\x7a\x43\x6f\x71\x57\x36\x30\x6c\x70\x53\x6f\x73','\x57\x35\x44\x52\x57\x4f\x4e\x64\x51\x57','\x57\x52\x52\x63\x4a\x43\x6b\x4b\x44\x48\x66\x52','\x57\x50\x52\x63\x51\x58\x43','\x41\x61\x78\x63\x4d\x66\x6c\x63\x52\x4c\x57\x57\x77\x61','\x57\x4f\x34\x44\x57\x36\x66\x36\x57\x34\x35\x77','\x57\x4f\x61\x32\x66\x75\x69\x4d\x57\x37\x38','\x57\x50\x5a\x63\x47\x58\x66\x6a\x7a\x31\x37\x63\x52\x47','\x46\x53\x6b\x6a\x6b\x4a\x4f\x57','\x57\x4f\x30\x2b\x6c\x57','\x57\x34\x52\x63\x4b\x5a\x4c\x68\x77\x30\x69','\x79\x43\x6b\x4b\x79\x6d\x6f\x37\x62\x53\x6f\x33\x63\x68\x38','\x45\x76\x34\x4d\x76\x43\x6f\x34','\x77\x4c\x43\x72\x73\x6d\x6f\x59','\x64\x75\x48\x67','\x57\x36\x74\x64\x53\x38\x6b\x42\x43\x6d\x6f\x59\x57\x36\x44\x50\x57\x50\x79','\x65\x6d\x6b\x72\x63\x74\x76\x67','\x57\x34\x35\x36\x57\x4f\x68\x63\x54\x6d\x6f\x4a\x66\x61','\x57\x50\x34\x4b\x70\x43\x6f\x47\x57\x52\x76\x61\x66\x4a\x61','\x42\x76\x4b\x35\x57\x34\x68\x63\x56\x6d\x6f\x50\x57\x36\x68\x64\x4f\x61','\x6e\x31\x74\x63\x48\x49\x70\x64\x53\x71','\x57\x50\x79\x72\x57\x37\x54\x58\x57\x35\x38','\x57\x50\x74\x63\x51\x4c\x6c\x64\x51\x4b\x37\x63\x4b\x38\x6b\x4f\x65\x57','\x57\x34\x7a\x41\x57\x37\x2f\x63\x4d\x43\x6f\x5a\x7a\x48\x75','\x57\x52\x37\x64\x47\x38\x6f\x77\x57\x37\x6e\x63\x74\x67\x53','\x42\x73\x53\x4f\x76\x62\x68\x63\x4d\x71','\x57\x52\x78\x64\x4a\x43\x6f\x75','\x57\x34\x56\x63\x55\x73\x39\x73','\x57\x36\x37\x63\x51\x71\x44\x59\x57\x35\x38','\x57\x4f\x30\x35\x6c\x38\x6f\x4d','\x57\x36\x39\x2f\x57\x52\x2f\x63\x4b\x4a\x54\x30\x57\x34\x75\x4d','\x6c\x63\x68\x64\x56\x6d\x6b\x71\x57\x51\x6d','\x69\x38\x6b\x63\x57\x4f\x4b','\x65\x43\x6f\x32\x75\x48\x76\x62\x64\x73\x6c\x63\x4f\x61','\x57\x4f\x71\x7a\x68\x4d\x5a\x64\x4f\x47','\x62\x38\x6f\x55\x57\x34\x54\x7a','\x57\x51\x34\x6a\x57\x34\x50\x79\x57\x35\x57','\x57\x35\x6e\x47\x78\x43\x6b\x49\x70\x4a\x61','\x57\x34\x4c\x7a\x57\x52\x68\x63\x50\x57\x4b','\x57\x37\x50\x53\x57\x35\x69\x43\x71\x68\x68\x63\x4b\x33\x69','\x66\x53\x6f\x34\x71\x38\x6b\x45\x57\x51\x71','\x57\x51\x70\x64\x50\x66\x65\x78\x57\x51\x43','\x71\x76\x30\x47\x57\x51\x53\x73','\x72\x53\x6b\x33\x57\x4f\x35\x4d\x62\x68\x76\x65\x65\x53\x6f\x38','\x57\x51\x4a\x63\x49\x38\x6b\x65\x42\x71\x6e\x38\x6b\x53\x6b\x58','\x57\x4f\x42\x64\x4b\x77\x61\x75\x57\x50\x62\x2f\x75\x57','\x6b\x66\x5a\x64\x54\x38\x6f\x66\x57\x37\x53\x6b\x70\x32\x30','\x67\x58\x4c\x50\x57\x50\x56\x64\x54\x6d\x6b\x73\x34\x4f\x6b\x66\x57\x51\x71','\x57\x51\x34\x68\x68\x38\x6f\x68\x57\x52\x6d','\x57\x36\x74\x64\x54\x38\x6b\x74\x79\x43\x6f\x59','\x61\x32\x42\x64\x54\x6d\x6f\x69','\x67\x38\x6b\x32\x64\x5a\x35\x66','\x57\x50\x70\x64\x55\x65\x61\x37\x57\x4f\x75','\x6c\x57\x58\x56\x57\x50\x4a\x64\x52\x38\x6b\x36\x57\x37\x68\x64\x49\x62\x54\x78\x57\x35\x64\x64\x4b\x64\x69','\x57\x4f\x71\x32\x67\x4b\x65\x61\x57\x37\x69\x39\x57\x51\x47','\x62\x72\x31\x37\x57\x50\x56\x64\x53\x6d\x6f\x72\x57\x37\x71','\x6f\x73\x53\x64\x78\x5a\x5a\x63\x4e\x58\x53','\x57\x36\x6e\x53\x57\x34\x68\x63\x49\x38\x6f\x33','\x64\x6d\x6b\x35\x57\x51\x5a\x64\x4e\x62\x57','\x57\x35\x69\x70\x6c\x4b\x56\x63\x4e\x6d\x6b\x53\x44\x63\x34','\x74\x53\x6b\x58\x6b\x30\x57\x68','\x57\x51\x70\x63\x47\x6d\x6b\x76\x64\x6d\x6f\x52\x57\x51\x68\x64\x55\x47','\x57\x35\x37\x64\x51\x6d\x6b\x34\x72\x53\x6f\x55','\x6e\x43\x6b\x56\x6c\x57\x6e\x2f','\x69\x66\x64\x63\x50\x59\x5a\x64\x55\x71','\x57\x4f\x54\x54\x57\x35\x78\x64\x4a\x78\x56\x63\x4a\x66\x48\x6b','\x6c\x4c\x2f\x63\x50\x61','\x63\x65\x62\x68\x44\x6d\x6b\x6f\x6e\x53\x6b\x7a\x57\x37\x4b','\x57\x51\x65\x57\x63\x66\x6c\x64\x4d\x61','\x41\x61\x78\x63\x50\x71','\x41\x53\x6b\x50\x41\x6d\x6f\x5a\x6d\x6d\x6f\x6e\x68\x4b\x6d','\x65\x53\x6f\x5a\x57\x50\x54\x35\x69\x68\x35\x64\x64\x71','\x73\x6d\x6b\x73\x73\x53\x6f\x33\x6a\x57','\x62\x57\x50\x66\x57\x4f\x6c\x64\x56\x6d\x6f\x71\x57\x37\x74\x64\x54\x47','\x66\x43\x6b\x45\x6d\x72\x6e\x6e','\x57\x35\x33\x63\x4b\x71\x62\x37\x57\x35\x65','\x57\x4f\x74\x64\x48\x4b\x71\x72\x57\x4f\x76\x57\x75\x57','\x57\x36\x70\x63\x4e\x59\x76\x73\x57\x35\x52\x64\x4c\x47\x42\x64\x52\x71','\x66\x38\x6b\x56\x57\x4f\x52\x64\x49\x72\x38','\x45\x4b\x47\x6a\x57\x51\x47\x4e','\x61\x53\x6b\x78\x6b\x74\x39\x63\x70\x43\x6b\x62\x63\x47','\x72\x75\x74\x63\x53\x59\x79\x41','\x6b\x61\x58\x55\x57\x50\x4a\x64\x52\x43\x6b\x39\x57\x37\x42\x64\x51\x47\x35\x33\x57\x37\x74\x64\x50\x74\x71','\x61\x43\x6b\x75\x57\x51\x34\x68\x78\x74\x7a\x64\x57\x34\x71','\x67\x53\x6f\x4b\x42\x47','\x57\x51\x48\x42\x57\x37\x42\x64\x51\x76\x56\x63\x53\x61','\x6d\x68\x50\x59\x62\x4c\x70\x64\x48\x4d\x6d\x6d\x42\x38\x6f\x4a\x41\x6d\x6b\x56\x57\x52\x71','\x42\x5a\x53\x52\x75\x71\x64\x63\x47\x57','\x57\x35\x74\x63\x54\x74\x54\x71\x57\x34\x64\x64\x52\x47','\x75\x67\x6c\x63\x4a\x61\x4b\x36','\x57\x52\x52\x63\x4a\x43\x6b\x4b\x7a\x57\x43','\x6d\x6d\x6b\x64\x75\x76\x76\x32\x57\x51\x61','\x45\x66\x4b\x56\x57\x34\x5a\x63\x54\x43\x6b\x4b\x57\x37\x56\x63\x50\x47','\x57\x50\x62\x72\x45\x76\x64\x64\x53\x38\x6f\x52\x57\x35\x68\x63\x4e\x47','\x41\x38\x6b\x36\x57\x37\x68\x64\x48\x38\x6f\x6e\x71\x68\x42\x64\x4f\x57','\x42\x57\x4a\x63\x47\x71','\x57\x35\x42\x63\x56\x57\x50\x45\x57\x35\x52\x64\x53\x4a\x68\x64\x47\x47','\x57\x52\x50\x44\x57\x37\x68\x64\x55\x66\x64\x63\x4a\x78\x66\x2f','\x72\x53\x6f\x79\x65\x74\x38\x76\x6b\x38\x6b\x41\x6a\x71','\x78\x75\x34\x54\x57\x52\x34\x64','\x44\x6d\x6b\x66\x6b\x64\x47\x33\x45\x57','\x78\x38\x6b\x79\x70\x58\x4b\x33'];_0xa38f=function(){return _0x1f78d1;};return _0xa38f();}function _0x420740(_0x16900c){var _0x4e66cf=_0x2c6f,_0x3d2463={'\x59\x4d\x43\x65\x75':function(_0x3f5d43,_0x4e80f7){return _0x3f5d43>=_0x4e80f7;},'\x4f\x52\x69\x54\x47':'\x78\x5a\x77\x76\x76','\x45\x6c\x74\x5a\x52':function(_0xae35e9,_0x1f71da){return _0xae35e9||_0x1f71da;},'\x4b\x52\x4d\x43\x6c':function(_0x2d78e6,_0x352939){return _0x2d78e6!==_0x352939;},'\x63\x66\x54\x43\x78':function(_0x2c9554,_0x224f55){return _0x2c9554(_0x224f55);},'\x53\x68\x45\x6e\x6f':function(_0x169321,_0x3e3733){return _0x169321!==_0x3e3733;},'\x75\x49\x48\x6e\x44':_0x4e66cf(0x279,'\x6d\x7a\x73\x70'),'\x50\x44\x52\x50\x4e':_0x4e66cf(0x26a,'\x79\x46\x49\x2a'),'\x4d\x74\x65\x61\x55':_0x4e66cf(0x2d5,'\x55\x6d\x5b\x28'),'\x65\x63\x73\x56\x65':function(_0x2f6d92,_0x1fb8d5){return _0x2f6d92-_0x1fb8d5;},'\x73\x6f\x73\x79\x78':function(_0x335521){return _0x335521();},'\x77\x68\x7a\x43\x55':function(_0x5f28c7){return _0x5f28c7();},'\x75\x64\x53\x71\x4f':function(_0x387a3b,_0x32c1df){return _0x387a3b===_0x32c1df;},'\x68\x6a\x47\x43\x45':function(_0x35d0bd,_0x568515){return _0x35d0bd<_0x568515;},'\x47\x78\x79\x46\x74':function(_0x49eae4,_0x6dab04){return _0x49eae4(_0x6dab04);},'\x43\x59\x4c\x57\x65':function(_0x1da903,_0x389549){return _0x1da903===_0x389549;},'\x44\x4f\x77\x77\x78':_0x4e66cf(0x2df,'\x24\x53\x6c\x68'),'\x6d\x6c\x51\x53\x52':function(_0x1230a4,_0x4dcef4){return _0x1230a4/_0x4dcef4;},'\x61\x49\x4a\x4a\x48':function(_0x23ff01,_0x5079cb){return _0x23ff01>=_0x5079cb;}};if(!_0x3d2463['\x73\x6f\x73\x79\x78'](_0x3f881c))return[];var _0x5111ef=_0x16900c&&Array[_0x4e66cf(0x301,'\x79\x46\x49\x2a')](_0x16900c[_0x4e66cf(0x298,'\x69\x63\x64\x55')])?_0x16900c[_0x4e66cf(0x1f2,'\x66\x66\x70\x6f')]:[];if(_0x5111ef[_0x4e66cf(0x1e9,'\x5a\x57\x79\x6c')]===-0xce1+-0x3*-0x2e3+0x438)return[];var _0x26b307=_0x16900c&&Array[_0x4e66cf(0x285,'\x77\x46\x70\x44')](_0x16900c[_0x4e66cf(0x1e7,'\x41\x51\x32\x4f')])?_0x16900c[_0x4e66cf(0x25a,'\x58\x35\x4f\x57')]:_0x3d2463[_0x4e66cf(0x2cb,'\x2a\x68\x31\x64')](_0x633881);if(_0x3d2463[_0x4e66cf(0x1e8,'\x6a\x66\x74\x31')](_0x26b307[_0x4e66cf(0x2e6,'\x35\x4e\x51\x52')],0x2559+-0x17ac+-0x1*0xdad))return[];var _0x30ff05=_0x16900c&&Number[_0x4e66cf(0x304,'\x78\x40\x6f\x4f')](_0x16900c[_0x4e66cf(0x1eb,'\x4e\x5e\x47\x58')+'\x64'])?_0x16900c[_0x4e66cf(0x222,'\x5e\x48\x5d\x77')+'\x64']:-0xc98+0x1466+-0x36*0x25+0.5;function _0x27c038(_0x5a97e9){var _0x2f9baa=_0x4e66cf;if(_0x2f9baa(0x2b4,'\x24\x36\x26\x5e')===_0x3d2463[_0x2f9baa(0x27f,'\x2a\x68\x31\x64')])return String(_0x3d2463['\x45\x6c\x74\x5a\x52'](_0x5a97e9,''))[_0x2f9baa(0x24b,'\x34\x65\x54\x71')+_0x2f9baa(0x24f,'\x30\x4c\x59\x40')]()[_0x2f9baa(0x228,'\x5a\x57\x79\x6c')](/[^a-z0-9]+/g,'\x20')[_0x2f9baa(0x2d1,'\x68\x65\x59\x49')](/\s+/)[_0x2f9baa(0x250,'\x37\x4b\x24\x32')](function(_0x4e08ff){var _0x2224c0=_0x2f9baa;return _0x3d2463[_0x2224c0(0x276,'\x35\x54\x51\x4d')](_0x4e08ff[_0x2224c0(0x2a9,'\x5e\x6b\x25\x40')],0x1631+0x325+-0x1*0x1953);});else _0x20a271[_0x2f9baa(0x21b,'\x6e\x4e\x72\x74')](_0x2c97f7);}var _0xdd92d4=new Set();for(var _0x19a7ba=-0x1350+-0x1d9*-0x11+-0xc19;_0x3d2463['\x68\x6a\x47\x43\x45'](_0x19a7ba,_0x5111ef[_0x4e66cf(0x200,'\x4b\x31\x75\x62')]);_0x19a7ba++){_0x3d2463['\x47\x78\x79\x46\x74'](_0x27c038,_0x5111ef[_0x19a7ba])[_0x4e66cf(0x212,'\x79\x45\x49\x71')](function(_0x3044f6){var _0x3956e3=_0x4e66cf;_0xdd92d4[_0x3956e3(0x1e5,'\x70\x34\x45\x67')](_0x3044f6);});}if(_0x3d2463[_0x4e66cf(0x234,'\x79\x45\x49\x71')](_0xdd92d4[_0x4e66cf(0x216,'\x6a\x66\x74\x31')],0x8b4+0x1c79*-0x1+0x3*0x697))return[];var _0x23fa52=[];for(var _0x2323fa=0xa*0x67+0x23aa*0x1+-0x27b0;_0x3d2463[_0x4e66cf(0x2c8,'\x41\x4b\x34\x56')](_0x2323fa,_0x26b307[_0x4e66cf(0x201,'\x4f\x66\x6c\x57')]);_0x2323fa++){if(_0x4e66cf(0x2d8,'\x66\x66\x70\x6f')===_0x3d2463[_0x4e66cf(0x2cd,'\x6e\x4e\x72\x74')])return BQFWJa['\x4b\x52\x4d\x43\x6c'](BQFWJa['\x63\x66\x54\x43\x78'](_0x1cd9e8,_0x1cfc38.env.EVOLVE_OPEN_PR_DEDUP||'\x31'),'\x30');else{var _0x2191ea=_0x26b307[_0x2323fa];if(!_0x2191ea)continue;var _0xf4bb12=new Set();_0x3d2463[_0x4e66cf(0x245,'\x34\x65\x54\x71')](_0x27c038,_0x2191ea[_0x4e66cf(0x210,'\x4b\x31\x75\x62')])[_0x4e66cf(0x1f6,'\x4b\x31\x75\x62')](function(_0x2a5f29){var _0x2a561d=_0x4e66cf;_0x3d2463[_0x2a561d(0x207,'\x2a\x68\x31\x64')](_0x3d2463[_0x2a561d(0x2e9,'\x58\x35\x4f\x57')],_0x3d2463['\x50\x44\x52\x50\x4e'])?_0xf4bb12['\x61\x64\x64'](_0x2a5f29):_0x33c3cf=![];}),_0x3d2463[_0x4e66cf(0x260,'\x79\x46\x49\x2a')](_0x27c038,_0x2191ea[_0x4e66cf(0x300,'\x5d\x5d\x69\x6f')+_0x4e66cf(0x1f3,'\x4e\x4b\x64\x34')])[_0x4e66cf(0x2c3,'\x77\x46\x70\x44')](function(_0x4de4a1){var _0x1b2adf=_0x4e66cf;if(_0x3d2463[_0x1b2adf(0x2c1,'\x6e\x49\x48\x32')](_0x3d2463[_0x1b2adf(0x2dd,'\x2a\x68\x31\x64')],_0x3d2463[_0x1b2adf(0x269,'\x35\x54\x51\x4d')])){var _0x313057={};_0x313057[_0x1b2adf(0x2ba,'\x6a\x66\x74\x31')]=!![],_0x313057[_0x1b2adf(0x1ff,'\x68\x46\x28\x56')]=_0x3e939b[_0x1b2adf(0x2d3,'\x57\x32\x63\x54')],_0x313057[_0x1b2adf(0x247,'\x5a\x57\x79\x6c')]=_0x11318d[_0x1b2adf(0x307,'\x5e\x6b\x25\x40')],_0x313057[_0x1b2adf(0x289,'\x6a\x6d\x42\x64')+_0x1b2adf(0x209,'\x24\x36\x26\x5e')]=_0x21ccdb[_0x1b2adf(0x2a4,'\x57\x32\x63\x54')+_0x1b2adf(0x26d,'\x68\x65\x59\x49')],_0x313057[_0x1b2adf(0x2b1,'\x4e\x5e\x47\x58')+_0x1b2adf(0x29b,'\x24\x53\x6c\x68')]=_0x934989,_0x313057[_0x1b2adf(0x20a,'\x41\x51\x32\x4f')+_0x1b2adf(0x2da,'\x48\x4e\x67\x72')]=_0x4c49e5,_0x2bf33e=_0x313057;}else _0xf4bb12['\x61\x64\x64'](_0x4de4a1);});if(_0x3d2463[_0x4e66cf(0x281,'\x41\x4b\x34\x56')](_0xf4bb12[_0x4e66cf(0x2ce,'\x5d\x5d\x69\x6f')],0x25a2*0x1+0x149b+-0x3a3d))continue;var _0x113ced=-0xc45+-0x13f*0x1d+-0x4*-0xc1a;_0xdd92d4[_0x4e66cf(0x2b2,'\x24\x53\x6c\x68')](function(_0x38e6c6){var _0x4f1d24=_0x4e66cf;if(_0xf4bb12[_0x4f1d24(0x270,'\x2a\x68\x31\x64')](_0x38e6c6))_0x113ced++;});var _0x58b155=_0x3d2463[_0x4e66cf(0x30e,'\x48\x4e\x67\x72')](_0x113ced,_0xdd92d4[_0x4e66cf(0x2d6,'\x78\x40\x6f\x4f')]);if(_0x3d2463[_0x4e66cf(0x2f9,'\x55\x6d\x5b\x28')](_0x58b155,_0x30ff05)){var _0x169daf=Array['\x69\x73\x41\x72\x72\x61\x79'](_0x2191ea[_0x4e66cf(0x2ac,'\x36\x4a\x21\x52')])?_0x2191ea[_0x4e66cf(0x313,'\x5d\x5d\x69\x6f')][_0x4e66cf(0x22c,'\x41\x51\x32\x4f')](-0x1cce+0x16f5+0x5d9,-0xbc*0x2b+0x13e2+-0xbb7*-0x1):[],_0x5428f5={};_0x5428f5[_0x4e66cf(0x2c7,'\x7a\x79\x26\x29')]=_0x2191ea[_0x4e66cf(0x268,'\x6a\x76\x21\x51')],_0x5428f5['\x74\x69\x74\x6c\x65']=_0x2191ea[_0x4e66cf(0x2db,'\x77\x46\x70\x44')],_0x5428f5[_0x4e66cf(0x259,'\x42\x37\x25\x57')+_0x4e66cf(0x23d,'\x69\x63\x64\x55')]=_0x2191ea['\x68\x65\x61\x64\x52\x65\x66\x4e'+'\x61\x6d\x65'],_0x5428f5[_0x4e66cf(0x203,'\x79\x46\x49\x2a')]=_0x169daf,_0x5428f5[_0x4e66cf(0x25c,'\x37\x4b\x24\x32')+_0x4e66cf(0x280,'\x6e\x49\x48\x32')]=_0x58b155,_0x23fa52[_0x4e66cf(0x22d,'\x72\x68\x6d\x4e')](_0x5428f5);}}}return _0x23fa52[_0x4e66cf(0x267,'\x79\x42\x4a\x45')](function(_0x5af57d,_0x395210){var _0xe3e895=_0x4e66cf;return _0x3d2463[_0xe3e895(0x28e,'\x41\x51\x32\x4f')](_0x395210[_0xe3e895(0x1f8,'\x5d\x5d\x69\x6f')+_0xe3e895(0x29e,'\x24\x36\x26\x5e')],_0x5af57d[_0xe3e895(0x314,'\x79\x46\x49\x2a')+_0xe3e895(0x2cc,'\x7a\x79\x26\x29')]);}),_0x23fa52['\x73\x6c\x69\x63\x65'](-0x2b1*0x4+-0x1*0x1af8+-0x25bc*-0x1,-0x1*-0x1b06+-0x1dd*0xe+0xed*-0x1);}function _0x11a338(){_0x47d616=null,_0x316b3b=0x10b7+0x3*-0xaff+-0x823*-0x2,_0x4757bc=null,_0x2c429f=![];}var _0x44c95a={};_0x44c95a[_0x5251c7(0x29d,'\x4e\x4b\x64\x34')+'\x52\x73']=_0x633881,_0x44c95a[_0x5251c7(0x2b7,'\x5e\x48\x5d\x77')+_0x5251c7(0x316,'\x55\x6d\x5b\x28')]=_0x5ac137,_0x44c95a['\x66\x69\x6e\x64\x53\x69\x67\x6e'+_0x5251c7(0x2e1,'\x28\x66\x6d\x57')]=_0x420740,_0x44c95a[_0x5251c7(0x27b,'\x4b\x31\x75\x62')+_0x5251c7(0x30d,'\x35\x54\x51\x4d')]=_0x11a338,module[_0x5251c7(0x2b5,'\x6a\x66\x74\x31')]=_0x44c95a;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// openPRRegistry — fetch and cache the current repo's open PR list, and decide
|
|
5
|
+
// whether a daemon-driven cycle's planned changes overlap with any of them.
|
|
6
|
+
//
|
|
7
|
+
// Why this exists: evolver --loop has been observed to independently
|
|
8
|
+
// re-implement work that's already in flight on an open PR (PR #38's a2a
|
|
9
|
+
// integrity check, PR #43's rollback safety, both rebuilt from scratch by
|
|
10
|
+
// the daemon). This dirties the working tree and triggers downstream
|
|
11
|
+
// rollback risk (see feedback_evolver_solidify_rollback). The fix: at
|
|
12
|
+
// solidify time, before the cycle commits, check whether the changed files
|
|
13
|
+
// substantially overlap with an open PR — if yes, rollback this cycle.
|
|
14
|
+
//
|
|
15
|
+
// The module is graceful: if `gh` is missing, unauthenticated, or the API
|
|
16
|
+
// errors, getOpenPRs returns [] and findOverlap returns { overlap: false }.
|
|
17
|
+
// EVOLVE_OPEN_PR_DEDUP=0 short-circuits the whole feature.
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
|
|
20
|
+
// Note: do not destructure execSync at module load — tests stub
|
|
21
|
+
// child_process.execSync at call time via the live module reference.
|
|
22
|
+
const { envInt } = require('../config');
|
|
23
|
+
|
|
24
|
+
const MAX_EXEC_BUFFER = 10 * 1024 * 1024;
|
|
25
|
+
const GH_TIMEOUT_MS = 5000;
|
|
26
|
+
|
|
27
|
+
let _cache = null;
|
|
28
|
+
let _cacheAt = 0;
|
|
29
|
+
let _inflight = null;
|
|
30
|
+
let _ghMissingWarned = false;
|
|
31
|
+
|
|
32
|
+
function _now() { return Date.now(); }
|
|
33
|
+
|
|
34
|
+
function _isFeatureEnabled() {
|
|
35
|
+
return String(process.env.EVOLVE_OPEN_PR_DEDUP || '1') !== '0';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function _getTtlMs() {
|
|
39
|
+
return envInt('EVOLVE_OPEN_PR_TTL_MS', 60000);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Run `gh pr list ...` and parse JSON. Returns [] on any failure.
|
|
43
|
+
function _fetchOpenPRsSync() {
|
|
44
|
+
try {
|
|
45
|
+
const raw = require('child_process').execSync('gh pr list --state=open --json number,title,headRefName,files --limit 50', {
|
|
46
|
+
encoding: 'utf8',
|
|
47
|
+
timeout: GH_TIMEOUT_MS,
|
|
48
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
49
|
+
maxBuffer: MAX_EXEC_BUFFER,
|
|
50
|
+
});
|
|
51
|
+
const arr = JSON.parse(raw || '[]');
|
|
52
|
+
if (!Array.isArray(arr)) return [];
|
|
53
|
+
return arr.map(function (pr) {
|
|
54
|
+
return {
|
|
55
|
+
number: pr.number,
|
|
56
|
+
title: String(pr.title || ''),
|
|
57
|
+
headRefName: String(pr.headRefName || ''),
|
|
58
|
+
files: Array.isArray(pr.files) ? pr.files.map(function (f) { return String(f.path || ''); }).filter(Boolean) : [],
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
} catch (e) {
|
|
62
|
+
var msg = e && e.message ? String(e.message) : '';
|
|
63
|
+
if (/not found|ENOENT|command not found/i.test(msg)) {
|
|
64
|
+
if (!_ghMissingWarned) {
|
|
65
|
+
_ghMissingWarned = true;
|
|
66
|
+
console.warn('[OpenPR] gh CLI not available — open-PR dedup disabled for this process. Install gh or set EVOLVE_OPEN_PR_DEDUP=0 to silence.');
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
console.warn('[OpenPR] gh pr list failed (non-fatal): ' + msg.slice(0, 200));
|
|
70
|
+
}
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Public: get the current open-PR list, cached for EVOLVE_OPEN_PR_TTL_MS.
|
|
76
|
+
// Concurrent callers within the same TTL window share the same fetch.
|
|
77
|
+
function getOpenPRs(opts) {
|
|
78
|
+
if (!_isFeatureEnabled()) return [];
|
|
79
|
+
var ttlMs = (opts && Number.isFinite(opts.ttlMs)) ? opts.ttlMs : _getTtlMs();
|
|
80
|
+
var age = _now() - _cacheAt;
|
|
81
|
+
if (_cache && age < ttlMs) return _cache;
|
|
82
|
+
// Single-flight: if a fetch is already in progress, return the prior cache
|
|
83
|
+
// (or []) rather than spawning a second gh call.
|
|
84
|
+
if (_inflight) return _cache || [];
|
|
85
|
+
_inflight = true;
|
|
86
|
+
try {
|
|
87
|
+
var fresh = _fetchOpenPRsSync();
|
|
88
|
+
_cache = fresh;
|
|
89
|
+
_cacheAt = _now();
|
|
90
|
+
return fresh;
|
|
91
|
+
} finally {
|
|
92
|
+
_inflight = false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Compute overlap between this cycle's changed files and each open PR's files.
|
|
97
|
+
// Returns the strongest overlap by ratio. Ratio = |intersection| / |changedFiles|.
|
|
98
|
+
//
|
|
99
|
+
// Why we use changedFiles as the denominator (not the PR's files): we're asking
|
|
100
|
+
// "is this cycle re-doing work that the PR is already doing?" — the right
|
|
101
|
+
// question is "what fraction of MY changes are also in their PR?". If the daemon
|
|
102
|
+
// changes 4 files and 3 are also in PR #38's 11-file diff, that's 0.75 overlap
|
|
103
|
+
// from the daemon's POV (re-doing most of its own work) even though it's only
|
|
104
|
+
// 0.27 from the PR's POV.
|
|
105
|
+
function findOverlap(opts) {
|
|
106
|
+
if (!_isFeatureEnabled()) return { overlap: false, reason: 'feature_disabled' };
|
|
107
|
+
var changedFiles = (opts && Array.isArray(opts.changedFiles)) ? opts.changedFiles : [];
|
|
108
|
+
if (changedFiles.length === 0) return { overlap: false, reason: 'no_changed_files' };
|
|
109
|
+
var prs = (opts && Array.isArray(opts.prs)) ? opts.prs : getOpenPRs();
|
|
110
|
+
if (prs.length === 0) return { overlap: false, reason: 'no_open_prs' };
|
|
111
|
+
|
|
112
|
+
var changedSet = new Set(changedFiles.map(String));
|
|
113
|
+
var best = null;
|
|
114
|
+
for (var i = 0; i < prs.length; i++) {
|
|
115
|
+
var pr = prs[i];
|
|
116
|
+
if (!pr || !Array.isArray(pr.files) || pr.files.length === 0) continue;
|
|
117
|
+
var prSet = new Set(pr.files.map(String));
|
|
118
|
+
var shared = [];
|
|
119
|
+
changedSet.forEach(function (f) { if (prSet.has(f)) shared.push(f); });
|
|
120
|
+
if (shared.length === 0) continue;
|
|
121
|
+
var ratio = shared.length / changedFiles.length;
|
|
122
|
+
if (!best || ratio > best.overlapRatio) {
|
|
123
|
+
best = {
|
|
124
|
+
overlap: true,
|
|
125
|
+
prNumber: pr.number,
|
|
126
|
+
prTitle: pr.title,
|
|
127
|
+
headRefName: pr.headRefName,
|
|
128
|
+
overlapRatio: ratio,
|
|
129
|
+
sharedFiles: shared,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return best || { overlap: false, reason: 'no_intersection' };
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Token-overlap version for the select-stage hint (no file paths available).
|
|
137
|
+
// Compares a Gene's signals_match against a PR's title + headRefName tokens.
|
|
138
|
+
// Returns the top-N matches with ratio >= threshold (default 0.5).
|
|
139
|
+
function findSignalHints(opts) {
|
|
140
|
+
if (!_isFeatureEnabled()) return [];
|
|
141
|
+
var signals = (opts && Array.isArray(opts.signals)) ? opts.signals : [];
|
|
142
|
+
if (signals.length === 0) return [];
|
|
143
|
+
var prs = (opts && Array.isArray(opts.prs)) ? opts.prs : getOpenPRs();
|
|
144
|
+
if (prs.length === 0) return [];
|
|
145
|
+
var threshold = (opts && Number.isFinite(opts.threshold)) ? opts.threshold : 0.5;
|
|
146
|
+
|
|
147
|
+
function tokenize(s) {
|
|
148
|
+
return String(s || '')
|
|
149
|
+
.toLowerCase()
|
|
150
|
+
.replace(/[^a-z0-9]+/g, ' ')
|
|
151
|
+
.split(/\s+/)
|
|
152
|
+
.filter(function (t) { return t.length >= 3; });
|
|
153
|
+
}
|
|
154
|
+
var sigTokens = new Set();
|
|
155
|
+
for (var i = 0; i < signals.length; i++) {
|
|
156
|
+
tokenize(signals[i]).forEach(function (t) { sigTokens.add(t); });
|
|
157
|
+
}
|
|
158
|
+
if (sigTokens.size === 0) return [];
|
|
159
|
+
|
|
160
|
+
var hits = [];
|
|
161
|
+
for (var j = 0; j < prs.length; j++) {
|
|
162
|
+
var pr = prs[j];
|
|
163
|
+
if (!pr) continue;
|
|
164
|
+
var prTokens = new Set();
|
|
165
|
+
tokenize(pr.title).forEach(function (t) { prTokens.add(t); });
|
|
166
|
+
tokenize(pr.headRefName).forEach(function (t) { prTokens.add(t); });
|
|
167
|
+
if (prTokens.size === 0) continue;
|
|
168
|
+
var common = 0;
|
|
169
|
+
sigTokens.forEach(function (t) { if (prTokens.has(t)) common++; });
|
|
170
|
+
var ratio = common / sigTokens.size;
|
|
171
|
+
if (ratio >= threshold) {
|
|
172
|
+
// Guard against pr.files being missing/null — getOpenPRs always
|
|
173
|
+
// populates it, but tests and external callers may pass partial
|
|
174
|
+
// PR objects. Without this guard pr.files.slice would throw a
|
|
175
|
+
// TypeError, the try/catch in select.js would swallow it, and we
|
|
176
|
+
// would silently lose ALL hits for that invocation rather than
|
|
177
|
+
// just the malformed PR. (Bugbot review on PR #50.)
|
|
178
|
+
var fileSample = Array.isArray(pr.files) ? pr.files.slice(0, 5) : [];
|
|
179
|
+
hits.push({
|
|
180
|
+
number: pr.number,
|
|
181
|
+
title: pr.title,
|
|
182
|
+
headRefName: pr.headRefName,
|
|
183
|
+
files: fileSample,
|
|
184
|
+
tokenOverlap: ratio,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
hits.sort(function (a, b) { return b.tokenOverlap - a.tokenOverlap; });
|
|
189
|
+
return hits.slice(0, 3);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Internal: reset cache for tests.
|
|
193
|
+
function _resetForTesting() {
|
|
194
|
+
_cache = null;
|
|
195
|
+
_cacheAt = 0;
|
|
196
|
+
_inflight = null;
|
|
197
|
+
_ghMissingWarned = false;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
module.exports = {
|
|
201
|
+
getOpenPRs,
|
|
202
|
+
findOverlap,
|
|
203
|
+
findSignalHints,
|
|
204
|
+
_resetForTesting,
|
|
205
|
+
};
|