@evomap/evolver 1.91.1 → 1.91.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +1 -1
- package/package.json +1 -1
- package/src/evolve/guards.js +1 -1
- package/src/evolve/pipeline/collect.js +1 -1
- package/src/evolve/pipeline/dispatch.js +1 -1
- package/src/evolve/pipeline/enrich.js +1 -1
- package/src/evolve/pipeline/hub.js +1 -1
- package/src/evolve/pipeline/select.js +1 -1
- package/src/evolve/pipeline/signals.js +1 -1
- package/src/evolve/utils.js +1 -1
- package/src/evolve.js +1 -1
- package/src/gep/a2aProtocol.js +5175 -1
- package/src/gep/antiAbuseTelemetry.js +233 -1
- package/src/gep/assetStore.js +3 -2
- 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 +1 -1
- package/src/gep/contentHash.js +30 -1
- package/src/gep/conversationDistiller.js +270 -1
- package/src/gep/conversationSniffer.js +266 -1
- package/src/gep/crypto.js +93 -1
- package/src/gep/curriculum.js +1 -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 +672 -1
- package/src/gep/hubReview.js +212 -1
- package/src/gep/hubSearch.js +544 -1
- package/src/gep/hubVerify.js +306 -1
- package/src/gep/learningSignals.js +1 -1
- package/src/gep/memoryGraph.js +1449 -1
- package/src/gep/memoryGraphAdapter.js +203 -1
- package/src/gep/mutation.js +1 -1
- package/src/gep/narrativeMemory.js +1 -1
- package/src/gep/openPRRegistry.js +205 -1
- package/src/gep/personality.js +1 -1
- package/src/gep/policyCheck.js +599 -1
- package/src/gep/prompt.js +1 -1
- package/src/gep/recallInject.js +409 -1
- package/src/gep/recallVerifier.js +318 -1
- package/src/gep/reflection.js +1 -1
- package/src/gep/savingsCore.js +1 -1
- package/src/gep/selector.js +1 -1
- package/src/gep/skillDistiller.js +1294 -1
- package/src/gep/solidify.js +1 -1
- package/src/gep/strategy.js +136 -1
- package/src/gep/tokenSavings.js +1 -1
- package/src/gep/trajectoryExport.js +3841 -1
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +123 -1
- package/src/proxy/inject.js +52 -1
- package/src/proxy/trace/extractor.js +2355 -1
- package/src/proxy/trace/usage.js +105 -1
- package/src/webui/client/clientJs/bootstrap.js +6 -0
- package/src/webui/client/clientJs/github.js +225 -0
- package/src/webui/client/clientJs/i18n.js +14 -0
- package/src/webui/client/clientJs/index.js +3 -0
- package/src/webui/client/clientJs/pipelines.js +3 -1
- package/src/webui/client/indexHtml.js +10 -0
- package/src/webui/client/stylesCss.js +61 -0
- package/src/webui/observer/github.js +340 -0
- package/src/webui/observer/index.js +4 -0
- package/src/webui/server/routes.js +11 -0
package/src/gep/hubFetch.js
CHANGED
|
@@ -1 +1,672 @@
|
|
|
1
|
-
const _0x5b7a59=_0x5ed0;(function(_0x197da9,_0x203ae3){const _0x24af71=_0x5ed0,_0x69bf40=_0x197da9();while(!![]){try{const _0x512243=-parseInt(_0x24af71(0x290,'\x6b\x63\x59\x43'))/(0x3*0x11e+-0x3*-0x56d+-0x13a0)+parseInt(_0x24af71(0x229,'\x45\x2a\x45\x73'))/(-0x1566+0x696+0xed2)*(-parseInt(_0x24af71(0x1dc,'\x75\x34\x4b\x4d'))/(-0x2*0x12b2+0x15ee+0xf79))+parseInt(_0x24af71(0x3b5,'\x32\x6d\x73\x6a'))/(0x1e69+0x171b+-0x4*0xd60)*(parseInt(_0x24af71(0x22a,'\x64\x44\x59\x6b'))/(0xec6+0x955*0x3+-0x2ac0))+-parseInt(_0x24af71(0x216,'\x33\x4a\x21\x49'))/(-0x7e*-0x45+0x1*0x1917+0x45*-0xdb)+-parseInt(_0x24af71(0x41e,'\x73\x48\x4f\x37'))/(0xe*0xb2+-0x22c3+0x42d*0x6)*(parseInt(_0x24af71(0x257,'\x65\x75\x72\x37'))/(0x1a05+0x1fe1+-0x39de))+parseInt(_0x24af71(0x1c7,'\x6b\x63\x59\x43'))/(-0xde9+-0xcaa+-0xd*-0x20c)*(-parseInt(_0x24af71(0x201,'\x49\x54\x24\x64'))/(-0x170c+0x602+0x1114))+parseInt(_0x24af71(0x3bb,'\x33\x48\x73\x42'))/(0x61*0x1+-0x1744+0x1*0x16ee)*(parseInt(_0x24af71(0x24b,'\x72\x5a\x51\x55'))/(0x17*0x6d+-0xb*-0x1bb+-0x1cc8));if(_0x512243===_0x203ae3)break;else _0x69bf40['push'](_0x69bf40['shift']());}catch(_0x3499fa){_0x69bf40['push'](_0x69bf40['shift']());}}}(_0x4743,0xc673c+0x17b9a+-0x1*0xee3c));const _0x5eacaf=require(_0x5b7a59(0x2ed,'\x62\x4c\x54\x37')),{TextDecoder:_0x282437}=require('\x75\x74\x69\x6c'),{Agent:_0x14b411,fetch:_0xadd344,buildConnector:_0x15105b}=require(_0x5b7a59(0x292,'\x33\x48\x73\x42')),{redactString:_0x5f042e}=require(_0x5b7a59(0x325,'\x45\x2a\x45\x73')+'\x7a\x65'),_0x2c2551=(0xf91+-0x54*-0x44+-0x25d9)*(0x56e+-0x87f+0x711),_0x30edbf=(0x1fd7+-0x969+-0x166a)*(0x541+-0x1b3f+-0x2*-0xcff)*(-0x1b5+0x1*0x1cf1+-0x173c),_0x2d4fb8=0x1526+0x6a0+-0x1*0x17c6,_0x2eda98=-0x172a2+-0x1*0x117db+-0x11*-0x340d,_0x88dbc6=(-0x25f+-0x958+0xbc1)*(0x3836*-0x2+0xed*-0xe2+0x22c06),_0x44f564=_0x5b7a59(0x32d,'\x72\x5a\x51\x55')+'\x44\x5d',_0x7de7d8=/(?:secret|token|api[_-]?key|authorization|password|env|credential)/i;class _0x240f4f extends Error{constructor(_0x1bce3f,_0x582b6c={}){const _0x1f7190=_0x5b7a59,_0x51ee8e={};_0x51ee8e[_0x1f7190(0x2ca,'\x45\x75\x41\x63')]=_0x1f7190(0x29c,'\x65\x75\x72\x37')+_0x1f7190(0x40f,'\x75\x34\x4b\x4d');const _0x3d03f5=_0x51ee8e,_0x4ac873=(_0x1f7190(0x1c5,'\x74\x4a\x35\x54')+_0x1f7190(0x361,'\x33\x48\x73\x42'))[_0x1f7190(0x34f,'\x49\x36\x71\x54')]('\x7c');let _0x40373e=0x19fd+-0x1f*-0x86+-0x2a37;while(!![]){switch(_0x4ac873[_0x40373e++]){case'\x30':this[_0x1f7190(0x443,'\x33\x33\x56\x47')+_0x1f7190(0x306,'\x6a\x58\x37\x23')]=_0x582b6c[_0x1f7190(0x3d1,'\x73\x48\x4f\x37')+_0x1f7190(0x2f7,'\x49\x54\x24\x64')]||'';continue;case'\x31':this[_0x1f7190(0x440,'\x72\x5a\x51\x55')]=_0x582b6c[_0x1f7190(0x421,'\x50\x41\x52\x2a')]||'';continue;case'\x32':this[_0x1f7190(0x462,'\x6c\x34\x7a\x62')]=_0x3d03f5[_0x1f7190(0x249,'\x31\x5e\x46\x72')];continue;case'\x33':super(_0x1bce3f);continue;case'\x34':this[_0x1f7190(0x40a,'\x32\x6d\x73\x6a')+_0x1f7190(0x37f,'\x28\x33\x56\x50')]=_0x582b6c[_0x1f7190(0x34a,'\x45\x2a\x45\x73')+_0x1f7190(0x3e3,'\x72\x5a\x51\x55')]||'';continue;case'\x35':this[_0x1f7190(0x23b,'\x51\x67\x52\x62')]=_0x1f7190(0x2f8,'\x62\x4c\x54\x37')+_0x1f7190(0x3b3,'\x5d\x47\x69\x63')+_0x1f7190(0x3f7,'\x73\x38\x47\x33');continue;case'\x36':this[_0x1f7190(0x255,'\x70\x52\x5b\x51')+'\x64\x65']=_0x582b6c[_0x1f7190(0x451,'\x42\x45\x72\x34')+'\x64\x65']||null;continue;}break;}}}function _0x2710e9(){const _0x1e45bd=_0x5b7a59,_0x743294={'\x65\x67\x68\x49\x4d':'\x63\x6f\x6e\x74\x65\x6e\x74\x2d'+_0x1e45bd(0x1d1,'\x33\x33\x56\x47'),'\x4e\x62\x44\x4c\x6c':_0x1e45bd(0x207,'\x45\x2a\x45\x73')+_0x1e45bd(0x239,'\x75\x34\x4b\x4d'),'\x78\x4c\x54\x78\x4b':function(_0x188182,_0x2f00f6){return _0x188182!==_0x2f00f6;},'\x63\x77\x59\x78\x70':'\x48\x65\x48\x71\x49','\x66\x44\x62\x6e\x44':function(_0x3b0902,_0x5b6ed4){return _0x3b0902===_0x5b6ed4;},'\x75\x6f\x52\x62\x71':_0x1e45bd(0x1f5,'\x64\x44\x59\x6b'),'\x64\x4e\x55\x5a\x64':_0x1e45bd(0x322,'\x5d\x47\x69\x63'),'\x54\x54\x64\x4f\x74':_0x1e45bd(0x1d9,'\x73\x48\x4f\x37'),'\x66\x4e\x67\x6d\x65':_0x1e45bd(0x304,'\x26\x5e\x53\x67')+_0x1e45bd(0x1e7,'\x65\x75\x72\x37'),'\x78\x76\x47\x75\x4c':function(_0x41ce9c){return _0x41ce9c();},'\x75\x68\x75\x65\x6a':function(_0x4fba8c,_0x2ad673){return _0x4fba8c(_0x2ad673);},'\x4d\x78\x51\x6d\x49':_0x1e45bd(0x3fa,'\x55\x37\x77\x49')+'\x74','\x75\x74\x46\x56\x6b':function(_0x3f072d,_0x35c6ba){return _0x3f072d===_0x35c6ba;},'\x6d\x46\x53\x61\x6d':function(_0x2dae3e,_0x4880e4){return _0x2dae3e===_0x4880e4;},'\x69\x6c\x63\x7a\x79':function(_0xe8b5f4,_0x6c33a4){return _0xe8b5f4===_0x6c33a4;},'\x5a\x65\x69\x6f\x6d':function(_0x15c986,_0x56abe3){return _0x15c986===_0x56abe3;},'\x47\x6f\x47\x69\x56':function(_0x11c201,_0x3c22e5){return _0x11c201===_0x3c22e5;},'\x4a\x43\x58\x5a\x67':_0x1e45bd(0x3e1,'\x46\x35\x35\x4b')+'\x73\x74','\x42\x4e\x46\x4f\x79':_0x1e45bd(0x293,'\x64\x39\x5d\x64'),'\x6c\x59\x63\x70\x6f':function(_0x3d4091,_0x18f711){return _0x3d4091===_0x18f711;},'\x59\x48\x4a\x6a\x73':_0x1e45bd(0x3bc,'\x25\x75\x48\x29')+'\x79','\x46\x70\x77\x69\x50':_0x1e45bd(0x1da,'\x74\x59\x46\x78'),'\x7a\x6e\x74\x48\x46':function(_0x52dc6f,_0x734c83){return _0x52dc6f===_0x734c83;},'\x4d\x6b\x52\x4c\x79':_0x1e45bd(0x1f9,'\x6d\x72\x4b\x6f')+'\x6b','\x68\x79\x4c\x72\x45':function(_0x325fe9,_0x2026f3){return _0x325fe9===_0x2026f3;},'\x46\x49\x61\x52\x45':'\x64\x75\x61\x6c\x2d\x73\x74\x61'+'\x63\x6b','\x64\x58\x75\x69\x70':function(_0x41b003,_0x15117c){return _0x41b003+_0x15117c;},'\x76\x51\x4d\x68\x76':'\x5b\x68\x75\x62\x46\x65\x74\x63'+_0x1e45bd(0x217,'\x5d\x47\x69\x63')+_0x1e45bd(0x466,'\x65\x75\x72\x37')+_0x1e45bd(0x2ff,'\x45\x75\x41\x63')+'\x6d\x75\x73\x74\x20\x62\x65\x20'+_0x1e45bd(0x418,'\x74\x4a\x35\x54')+_0x1e45bd(0x3ba,'\x45\x75\x41\x63')+_0x1e45bd(0x252,'\x25\x75\x48\x29')+_0x1e45bd(0x205,'\x33\x39\x47\x50')+_0x1e45bd(0x474,'\x64\x44\x59\x6b')},_0xcbaa5=(function(){const _0x52f902=_0x1e45bd,_0x42eec8={};_0x42eec8[_0x52f902(0x408,'\x45\x2a\x45\x73')]=_0x52f902(0x1e6,'\x78\x53\x59\x39')+_0x52f902(0x3af,'\x72\x5a\x51\x55')+'\x4c\x4c\x4f\x57\x5f\x49\x4e\x53'+_0x52f902(0x3a9,'\x50\x41\x52\x2a')+_0x52f902(0x339,'\x5e\x37\x65\x73')+_0x52f902(0x475,'\x58\x6b\x79\x58')+_0x52f902(0x26f,'\x5e\x37\x65\x73')+_0x52f902(0x1b4,'\x25\x75\x48\x29')+_0x52f902(0x219,'\x73\x48\x4f\x37'),_0x42eec8[_0x52f902(0x44d,'\x62\x4c\x54\x37')]=function(_0x3f9524,_0x129318){return _0x3f9524===_0x129318;},_0x42eec8[_0x52f902(0x1c0,'\x50\x41\x52\x2a')]=_0x52f902(0x340,'\x33\x39\x47\x50');const _0x11548b=_0x42eec8;if(_0x743294['\x66\x44\x62\x6e\x44'](_0x52f902(0x45c,'\x26\x5e\x53\x67'),_0x743294[_0x52f902(0x2b8,'\x51\x67\x52\x62')]))_0x414a41=_0x1de73b[_0x743294[_0x52f902(0x3d4,'\x32\x78\x4b\x44')]]||_0xcb5f7e[_0x743294[_0x52f902(0x39b,'\x35\x44\x64\x72')]]||'';else{let _0x5a98b0=!![];return function(_0x15bbd2,_0x1e3b4e){const _0x2b3d5e=_0x52f902;if(_0x743294[_0x2b3d5e(0x20b,'\x58\x77\x41\x6e')](_0x2b3d5e(0x390,'\x32\x42\x55\x6c'),_0x743294['\x63\x77\x59\x78\x70'])){const _0x127a8d={};return _0x127a8d['\x63\x6f\x6e\x6e\x65\x63\x74']=_0x18c2a3,_0x127a8d[_0x2b3d5e(0x317,'\x50\x41\x52\x2a')+_0x2b3d5e(0x3f0,'\x78\x53\x59\x39')]=0x2710,_0x127a8d['\x6b\x65\x65\x70\x41\x6c\x69\x76'+_0x2b3d5e(0x2a9,'\x72\x5a\x51\x55')+_0x2b3d5e(0x1e0,'\x42\x45\x72\x34')]=0xea60,_0x127a8d[_0x2b3d5e(0x1bd,'\x42\x45\x72\x34')+_0x2b3d5e(0x25c,'\x49\x54\x24\x64')]=0x7530,_0x127a8d[_0x2b3d5e(0x3ee,'\x45\x2a\x45\x73')+_0x2b3d5e(0x41a,'\x65\x75\x72\x37')]=0x7530,_0x127a8d[_0x2b3d5e(0x301,'\x65\x75\x72\x37')+'\x6e\x67']=0x1,new _0x229c0f(_0x127a8d);}else{const _0x2791d9=_0x5a98b0?function(){const _0x1a2acd=_0x2b3d5e,_0x17e526={};_0x17e526[_0x1a2acd(0x424,'\x64\x44\x59\x6b')]=_0x1a2acd(0x400,'\x49\x36\x71\x54')+_0x1a2acd(0x47a,'\x32\x42\x55\x6c')+_0x1a2acd(0x227,'\x51\x5d\x36\x64')+_0x1a2acd(0x3e8,'\x33\x48\x73\x42')+_0x1a2acd(0x3dc,'\x55\x37\x77\x49'),_0x17e526[_0x1a2acd(0x44c,'\x33\x4a\x21\x49')]=_0x11548b[_0x1a2acd(0x1dd,'\x70\x52\x5b\x51')];const _0x42558f=_0x17e526;if(_0x1e3b4e){if(_0x11548b[_0x1a2acd(0x247,'\x45\x2a\x45\x73')](_0x11548b[_0x1a2acd(0x370,'\x32\x78\x4b\x44')],_0x1a2acd(0x3ef,'\x33\x39\x47\x50')))throw new _0x3d44b0(_0x42558f[_0x1a2acd(0x458,'\x42\x45\x72\x34')]+_0x36644e[_0x1a2acd(0x3d2,'\x28\x33\x56\x50')+'\x79'](_0x4f9396)+'\x2e\x20'+_0x42558f['\x71\x70\x4f\x4b\x59']);else{const _0x407121=_0x1e3b4e[_0x1a2acd(0x43f,'\x73\x48\x4f\x37')](_0x15bbd2,arguments);return _0x1e3b4e=null,_0x407121;}}}:function(){};return _0x5a98b0=![],_0x2791d9;}};}}()),_0x45abc8=_0xcbaa5(this,function(){const _0x20e0d3=_0x1e45bd,_0x8f5da0={};_0x8f5da0[_0x20e0d3(0x46d,'\x28\x33\x56\x50')]=_0x743294[_0x20e0d3(0x364,'\x28\x33\x56\x50')];const _0x4c26cc=_0x8f5da0;if(_0x743294[_0x20e0d3(0x231,'\x5e\x37\x65\x73')](_0x743294['\x54\x54\x64\x4f\x74'],_0x20e0d3(0x40e,'\x74\x59\x46\x78'))){const _0x39fc11=_0x5b9c31(_0x5c66ff);if(!_0x39fc11)return!![];return _0x39fc11[_0x20e0d3(0x2ef,'\x62\x4c\x54\x37')](_0x4c26cc[_0x20e0d3(0x2a8,'\x58\x77\x41\x6e')]);}else return _0x45abc8['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0x20e0d3(0x341,'\x28\x33\x56\x50')](_0x743294[_0x20e0d3(0x27f,'\x70\x52\x5b\x51')])[_0x20e0d3(0x1c8,'\x50\x5e\x68\x48')]()[_0x20e0d3(0x24a,'\x45\x2a\x45\x73')+_0x20e0d3(0x1bb,'\x33\x33\x56\x47')](_0x45abc8)[_0x20e0d3(0x22e,'\x74\x59\x46\x78')](_0x743294[_0x20e0d3(0x1fc,'\x62\x4c\x54\x37')]);});_0x743294[_0x1e45bd(0x1df,'\x32\x78\x4b\x44')](_0x45abc8);const _0x4521f4=_0x743294['\x75\x68\x75\x65\x6a'](String,process.env.EVOMAP_HUB_IP_FAMILY||_0x743294[_0x1e45bd(0x3d3,'\x31\x5e\x46\x72')])['\x74\x72\x69\x6d']()[_0x1e45bd(0x473,'\x46\x35\x35\x4b')+_0x1e45bd(0x383,'\x42\x45\x72\x34')]();if(_0x743294[_0x1e45bd(0x46a,'\x28\x33\x56\x50')](_0x4521f4,_0x1e45bd(0x371,'\x50\x5e\x68\x48'))||_0x743294[_0x1e45bd(0x28b,'\x35\x44\x64\x72')](_0x4521f4,'\x76\x34')||_0x743294[_0x1e45bd(0x1ba,'\x6b\x23\x5b\x25')](_0x4521f4,'\x34')||_0x743294[_0x1e45bd(0x430,'\x32\x6d\x73\x6a')](_0x4521f4,_0x743294[_0x1e45bd(0x1ee,'\x5e\x37\x65\x73')])||_0x743294[_0x1e45bd(0x358,'\x6a\x58\x37\x23')](_0x4521f4,_0x743294[_0x1e45bd(0x30b,'\x70\x52\x5b\x51')]))return _0x743294[_0x1e45bd(0x387,'\x70\x52\x5b\x51')];if(_0x743294[_0x1e45bd(0x365,'\x78\x53\x59\x39')](_0x4521f4,_0x743294[_0x1e45bd(0x276,'\x6b\x23\x5b\x25')])||_0x743294[_0x1e45bd(0x2c9,'\x58\x77\x41\x6e')](_0x4521f4,_0x743294[_0x1e45bd(0x3b7,'\x6c\x34\x7a\x62')]))return _0x743294[_0x1e45bd(0x38e,'\x51\x5d\x36\x64')];if(_0x743294[_0x1e45bd(0x327,'\x6b\x23\x5b\x25')](_0x4521f4,_0x743294[_0x1e45bd(0x28d,'\x78\x53\x59\x39')])||_0x743294[_0x1e45bd(0x331,'\x62\x4c\x54\x37')](_0x4521f4,_0x743294[_0x1e45bd(0x263,'\x5d\x47\x69\x63')])||_0x743294[_0x1e45bd(0x24c,'\x28\x76\x4a\x4d')](_0x4521f4,_0x743294['\x46\x49\x61\x52\x45']))return _0x743294[_0x1e45bd(0x215,'\x32\x78\x4b\x44')];throw new Error(_0x743294[_0x1e45bd(0x1f3,'\x64\x39\x5d\x64')](_0x743294[_0x1e45bd(0x2e9,'\x50\x5e\x68\x48')],JSON[_0x1e45bd(0x1b3,'\x46\x35\x35\x4b')+'\x79'](process.env.EVOMAP_HUB_IP_FAMILY)));}const _0x30229c=_0x2710e9(),_0x45db6d=0x11d2*-0x3+-0x31*-0xca+0x35dc,_0x3d86ea=0xb3e*-0x2+0x16e7+0x959,_0x5ed59f={};_0x5ed59f[_0x5b7a59(0x21f,'\x28\x71\x55\x70')+_0x5b7a59(0x450,'\x50\x41\x52\x2a')+'\x65\x64']=!![],_0x5ed59f[_0x5b7a59(0x2a3,'\x73\x48\x4f\x37')]=_0x45db6d;const _0x3e58e6=_0x5ed59f,_0x47ae4a={..._0x3e58e6};_0x47ae4a[_0x5b7a59(0x25f,'\x6a\x58\x37\x23')]=0x4,_0x47ae4a[_0x5b7a59(0x1d4,'\x65\x75\x72\x37')+_0x5b7a59(0x3c4,'\x28\x76\x4a\x4d')]=![];const _0x303873=_0x47ae4a,_0x1c830={..._0x303873};_0x1c830[_0x5b7a59(0x375,'\x35\x44\x64\x72')]=_0x3d86ea;const _0x336dd6=_0x1c830,_0x1581ff={..._0x3e58e6};_0x1581ff[_0x5b7a59(0x232,'\x55\x37\x77\x49')+'\x63\x74\x46\x61\x6d\x69\x6c\x79']=!![],_0x1581ff[_0x5b7a59(0x24e,'\x58\x6b\x79\x58')+_0x5b7a59(0x402,'\x58\x53\x37\x59')+_0x5b7a59(0x34d,'\x72\x5a\x51\x55')+_0x5b7a59(0x3a6,'\x58\x77\x41\x6e')]=0xfa;const _0x1cd153=_0x1581ff,_0x171fa3=_0x30229c===_0x5b7a59(0x3a4,'\x42\x45\x72\x34')?_0x1cd153:_0x30229c===_0x5b7a59(0x2a2,'\x35\x44\x64\x72')?_0x303873:_0x336dd6,_0x2a19ac=new Set([_0x5b7a59(0x348,'\x73\x38\x47\x33')+_0x5b7a59(0x398,'\x75\x34\x4b\x4d'),_0x5b7a59(0x2a5,'\x75\x34\x4b\x4d')+'\x4e',_0x5b7a59(0x2bd,'\x45\x75\x41\x63')+_0x5b7a59(0x3f1,'\x74\x4a\x35\x54'),_0x5b7a59(0x282,'\x33\x39\x47\x50')+'\x54',_0x5b7a59(0x41d,'\x51\x5d\x36\x64')+_0x5b7a59(0x33c,'\x5e\x37\x65\x73'),_0x5b7a59(0x2a6,'\x72\x5a\x51\x55')+_0x5b7a59(0x3cf,'\x64\x44\x59\x6b'),_0x5b7a59(0x310,'\x50\x5e\x68\x48')+'\x44',_0x5b7a59(0x2a1,'\x45\x2a\x45\x73')+_0x5b7a59(0x2b5,'\x6b\x63\x59\x43')+_0x5b7a59(0x228,'\x58\x77\x41\x6e')]);function _0x4fc961(_0x5b2b09){const _0x42c5f4=_0x5b7a59,_0x3ad2c8={};_0x3ad2c8[_0x42c5f4(0x206,'\x28\x33\x56\x50')]=function(_0x700c88,_0x3a635c){return _0x700c88!==_0x3a635c;};const _0x3a87d6=_0x3ad2c8;if(_0x3a87d6[_0x42c5f4(0x448,'\x28\x71\x55\x70')](_0x30229c,_0x42c5f4(0x333,'\x64\x44\x59\x6b')+'\x74'))return![];const _0x2b8dbd=_0x5b2b09&&(_0x5b2b09[_0x42c5f4(0x2ea,'\x25\x75\x48\x29')]||_0x5b2b09[_0x42c5f4(0x28c,'\x73\x48\x4f\x37')]&&_0x5b2b09[_0x42c5f4(0x37d,'\x72\x5a\x51\x55')]['\x63\x6f\x64\x65']);return _0x2a19ac[_0x42c5f4(0x1ae,'\x5d\x47\x69\x63')](_0x2b8dbd);}const _0x3fd5f1=_0x15105b(_0x171fa3),_0xe5343a=_0x30229c===_0x5b7a59(0x2b0,'\x46\x35\x35\x4b')+'\x74'?_0x15105b(_0x1cd153):null;function _0x4743(){const _0x5f229e=['\x57\x50\x52\x63\x53\x4a\x33\x63\x4e\x58\x34\x68\x68\x68\x61','\x46\x4a\x46\x63\x51\x77\x52\x64\x56\x68\x6c\x64\x50\x68\x65','\x57\x51\x76\x30\x57\x35\x54\x72\x57\x52\x7a\x70','\x57\x37\x30\x72\x75\x53\x6b\x79\x57\x50\x37\x63\x4e\x38\x6f\x6b\x57\x37\x53','\x57\x36\x38\x69\x57\x51\x56\x64\x49\x38\x6f\x55\x57\x4f\x6c\x64\x4f\x43\x6f\x4f','\x71\x6d\x6f\x68\x68\x74\x64\x63\x56\x4e\x6c\x63\x48\x57','\x46\x30\x64\x64\x4e\x53\x6b\x68\x57\x35\x47\x4d\x57\x4f\x66\x52','\x63\x38\x6b\x4a\x6e\x5a\x68\x64\x53\x59\x68\x63\x49\x43\x6f\x77','\x6d\x71\x6e\x4a\x6f\x6d\x6f\x50\x41\x53\x6b\x4b\x57\x51\x4b','\x57\x51\x4e\x63\x53\x57\x42\x63\x4b\x58\x69','\x71\x38\x6f\x31\x63\x43\x6f\x50\x57\x36\x61','\x65\x71\x7a\x6e\x65\x38\x6f\x50\x76\x53\x6b\x68\x57\x50\x34','\x69\x43\x6b\x69\x57\x52\x7a\x6a\x57\x50\x4a\x63\x4c\x6d\x6f\x76\x7a\x61','\x66\x32\x44\x32\x45\x73\x6a\x56\x41\x53\x6f\x79','\x46\x64\x74\x64\x56\x49\x4f','\x57\x4f\x39\x51\x74\x68\x38\x31\x6b\x77\x61\x51','\x43\x62\x39\x65\x46\x58\x4b\x43\x57\x34\x78\x64\x4c\x47','\x57\x51\x4e\x63\x47\x53\x6f\x47','\x66\x66\x53\x4b\x57\x51\x70\x64\x54\x48\x42\x63\x48\x43\x6b\x53','\x57\x50\x2f\x63\x52\x53\x6b\x76\x46\x38\x6b\x4a','\x57\x35\x34\x72\x75\x43\x6f\x33\x79\x71','\x57\x50\x2f\x64\x53\x43\x6f\x69\x65\x74\x52\x63\x4b\x6d\x6f\x4b\x57\x35\x4f','\x69\x38\x6f\x4f\x6d\x59\x34\x6a\x57\x4f\x46\x63\x4e\x53\x6b\x62','\x6f\x43\x6b\x4c\x57\x50\x44\x4a\x57\x51\x74\x64\x54\x38\x6f\x5a\x78\x47','\x68\x4b\x4f\x4e\x57\x36\x74\x64\x54\x71','\x57\x4f\x37\x64\x4f\x67\x74\x64\x51\x6d\x6f\x56\x57\x37\x4e\x63\x4f\x47\x47','\x57\x51\x5a\x63\x53\x47\x68\x63\x49\x71\x4f','\x77\x49\x52\x63\x47\x74\x6c\x64\x4f\x67\x37\x64\x51\x5a\x71','\x57\x36\x75\x6f\x72\x53\x6b\x73\x57\x50\x79','\x57\x36\x33\x64\x50\x61\x2f\x63\x51\x57','\x57\x34\x64\x63\x4f\x62\x74\x63\x4f\x43\x6b\x58','\x6e\x4b\x4f\x4b\x79\x38\x6f\x2f\x79\x43\x6b\x58\x57\x34\x30','\x62\x47\x39\x32\x67\x6d\x6f\x6b','\x43\x77\x33\x64\x4e\x6d\x6b\x51\x57\x36\x53','\x57\x50\x69\x41\x69\x4a\x66\x47','\x69\x76\x33\x63\x4a\x61','\x57\x50\x42\x63\x51\x49\x72\x31\x71\x62\x44\x6f\x79\x57','\x44\x53\x6f\x39\x6a\x53\x6f\x48\x57\x34\x65','\x76\x71\x54\x32\x57\x52\x4f\x45\x6d\x6d\x6b\x31\x79\x61','\x67\x38\x6f\x54\x75\x6d\x6f\x35\x57\x50\x33\x63\x50\x32\x66\x55','\x57\x34\x4f\x69\x57\x50\x5a\x63\x52\x53\x6f\x78','\x69\x30\x74\x63\x4f\x53\x6b\x6a\x57\x50\x69','\x57\x50\x46\x63\x4a\x53\x6f\x36\x57\x51\x50\x79\x57\x52\x6d\x65\x57\x36\x30','\x46\x6d\x6f\x70\x68\x43\x6f\x54\x57\x37\x38','\x6d\x65\x57\x51\x44\x43\x6f\x33','\x73\x53\x6f\x79\x6c\x43\x6f\x6d\x57\x34\x6d','\x6d\x4b\x75\x55\x7a\x53\x6f\x71','\x57\x35\x79\x72\x79\x43\x6b\x31\x57\x4f\x78\x63\x4a\x63\x53\x6a','\x78\x58\x6a\x4c\x71\x63\x47','\x57\x4f\x52\x63\x4e\x53\x6b\x2b\x72\x53\x6b\x43\x68\x53\x6b\x75\x57\x37\x6d','\x67\x67\x50\x33\x44\x77\x48\x55\x41\x38\x6b\x62','\x72\x43\x6f\x79\x6f\x53\x6f\x63\x57\x35\x76\x31\x57\x52\x65\x51','\x41\x53\x6f\x30\x57\x52\x47\x32','\x57\x51\x7a\x48\x57\x34\x48\x77\x57\x51\x79','\x57\x52\x65\x30\x57\x52\x44\x4d\x57\x35\x57','\x57\x51\x4f\x5a\x6b\x71','\x6e\x66\x56\x63\x4d\x53\x6b\x50\x57\x51\x47','\x57\x34\x6a\x75\x57\x4f\x50\x39\x46\x71','\x45\x43\x6f\x2b\x57\x34\x47\x67\x57\x36\x43','\x57\x50\x35\x49\x79\x58\x6a\x76\x6e\x61','\x57\x34\x56\x64\x49\x63\x74\x63\x47\x6d\x6f\x37\x73\x6d\x6f\x35\x44\x57','\x6d\x30\x4e\x64\x56\x75\x6c\x63\x48\x71','\x57\x50\x43\x49\x57\x52\x50\x72','\x74\x47\x56\x63\x51\x75\x6c\x64\x4f\x47','\x57\x37\x52\x64\x54\x4d\x75\x32','\x77\x31\x2f\x64\x4b\x62\x74\x64\x53\x47','\x57\x35\x61\x72\x44\x43\x6f\x4b','\x57\x34\x34\x51\x45\x6d\x6b\x4b\x57\x51\x2f\x63\x50\x6d\x6f\x33\x57\x34\x4f','\x57\x52\x70\x64\x49\x38\x6f\x59','\x70\x71\x52\x63\x4d\x31\x64\x63\x49\x62\x64\x63\x56\x53\x6b\x44','\x57\x36\x2f\x64\x55\x62\x4a\x63\x50\x38\x6f\x73\x44\x61','\x57\x35\x78\x63\x51\x5a\x70\x63\x4c\x38\x6b\x6a','\x46\x59\x42\x64\x4f\x71\x4e\x63\x51\x6d\x6f\x63\x57\x4f\x68\x64\x4b\x57','\x70\x57\x66\x47\x70\x38\x6f\x38','\x63\x32\x58\x50\x7a\x67\x66\x50\x43\x43\x6f\x66','\x57\x35\x57\x69\x43\x43\x6f\x5a\x74\x57','\x74\x6d\x6f\x41\x57\x50\x38\x42','\x6b\x53\x6b\x6e\x65\x61\x53','\x46\x64\x2f\x64\x50\x5a\x43\x66\x44\x5a\x34\x72','\x57\x52\x4f\x7a\x57\x50\x54\x31\x57\x36\x47','\x72\x78\x33\x64\x4f\x74\x6c\x64\x4a\x47','\x57\x52\x53\x64\x57\x4f\x58\x50\x57\x36\x34\x4e\x67\x4b\x6d','\x57\x36\x52\x64\x55\x71\x52\x63\x50\x38\x6f\x42\x73\x53\x6f\x74\x73\x57','\x57\x37\x78\x64\x4e\x6d\x6f\x61\x57\x52\x74\x64\x49\x71','\x57\x52\x30\x6c\x71\x6d\x6f\x47\x57\x37\x64\x64\x50\x43\x6b\x30\x57\x4f\x43','\x67\x30\x34\x4d\x57\x37\x74\x64\x55\x61','\x6a\x6d\x6b\x64\x62\x77\x4f\x54','\x61\x67\x57\x46\x7a\x53\x6f\x75\x76\x53\x6b\x65\x57\x34\x4f','\x57\x51\x68\x64\x4a\x75\x78\x64\x4e\x6d\x6f\x76\x57\x35\x57','\x57\x50\x74\x63\x47\x53\x6f\x71','\x57\x50\x4f\x79\x57\x4f\x31\x71\x57\x37\x75\x58\x67\x4c\x65','\x57\x51\x4b\x31\x61\x49\x35\x34','\x6e\x6d\x6b\x50\x70\x67\x30\x41\x57\x4f\x4f','\x46\x5a\x37\x64\x48\x4a\x2f\x63\x4d\x61','\x57\x34\x53\x57\x45\x6d\x6b\x50\x57\x52\x37\x63\x52\x53\x6f\x53','\x6d\x30\x44\x58\x74\x30\x69','\x65\x33\x66\x54\x43\x78\x34\x36','\x6c\x65\x38\x51\x79\x6d\x6f\x34\x46\x38\x6b\x54\x57\x51\x53','\x7a\x33\x70\x64\x54\x6d\x6b\x66\x57\x36\x71','\x57\x52\x43\x37\x69\x72\x50\x4b\x6c\x58\x70\x63\x48\x61','\x57\x4f\x4b\x42\x6b\x53\x6f\x42\x57\x52\x4e\x63\x4d\x6d\x6b\x4c\x41\x57','\x42\x43\x6f\x71\x69\x43\x6f\x58','\x57\x37\x74\x63\x4c\x53\x6b\x55\x43\x76\x74\x64\x55\x53\x6b\x42\x57\x51\x57','\x57\x4f\x54\x70\x45\x38\x6b\x34\x44\x57','\x45\x30\x5a\x64\x48\x71','\x6e\x65\x53\x72\x57\x36\x74\x63\x4a\x71','\x57\x34\x58\x2f\x71\x38\x6b\x76\x57\x50\x46\x64\x54\x38\x6b\x34','\x44\x47\x64\x63\x49\x30\x70\x64\x50\x47','\x57\x51\x69\x69\x69\x4a\x58\x49','\x70\x53\x6f\x6e\x79\x38\x6b\x64\x57\x50\x69','\x70\x38\x6b\x50\x6d\x67\x69\x41\x57\x52\x74\x63\x4c\x38\x6b\x42','\x57\x52\x37\x64\x4b\x43\x6f\x49\x6a\x47','\x73\x4e\x4e\x64\x52\x53\x6b\x48\x57\x34\x47\x77\x57\x51\x58\x66','\x44\x59\x48\x2f\x57\x50\x53\x71','\x57\x36\x38\x78\x43\x38\x6f\x70\x46\x38\x6b\x32\x57\x36\x4a\x63\x55\x71','\x79\x32\x2f\x64\x50\x38\x6b\x72\x57\x37\x38','\x57\x51\x38\x33\x6d\x62\x54\x54\x6e\x61\x37\x63\x55\x71','\x73\x59\x58\x64\x79\x64\x53','\x61\x4e\x2f\x64\x54\x72\x46\x64\x4c\x38\x6f\x6a\x57\x36\x69','\x57\x34\x53\x77\x44\x53\x6b\x46\x57\x4f\x4e\x63\x4c\x48\x43\x79','\x42\x4c\x68\x64\x47\x43\x6b\x67\x57\x36\x38\x47\x57\x4f\x61','\x6f\x57\x37\x63\x48\x4d\x6c\x63\x53\x61\x4a\x63\x53\x53\x6b\x79','\x76\x58\x39\x73','\x57\x51\x52\x63\x52\x53\x6f\x56\x57\x36\x66\x56','\x57\x51\x2f\x64\x49\x38\x6f\x4b\x70\x47\x33\x63\x4f\x43\x6f\x72\x57\x37\x57','\x71\x30\x2f\x64\x54\x30\x6c\x64\x51\x43\x6f\x6e\x57\x35\x2f\x63\x4a\x71','\x79\x4a\x6c\x64\x52\x47\x30','\x43\x4d\x74\x64\x4c\x5a\x64\x64\x4f\x47','\x57\x4f\x35\x65\x77\x48\x48\x36','\x57\x34\x53\x2b\x79\x38\x6b\x30\x57\x52\x34','\x73\x43\x6f\x61\x57\x50\x75\x44\x45\x4e\x48\x61\x6e\x61','\x57\x34\x69\x53\x45\x43\x6b\x50','\x70\x43\x6b\x37\x70\x77\x61','\x57\x34\x61\x44\x7a\x57','\x57\x52\x74\x64\x56\x43\x6f\x63\x63\x48\x34','\x57\x4f\x7a\x57\x7a\x43\x6b\x4d\x57\x52\x78\x63\x50\x6d\x6f\x53\x57\x34\x30','\x57\x52\x70\x63\x55\x53\x6f\x53\x57\x36\x39\x6f','\x57\x51\x6e\x30\x57\x37\x58\x5a\x57\x51\x47','\x6f\x47\x70\x63\x48\x33\x5a\x63\x4d\x61','\x57\x52\x5a\x63\x4b\x38\x6f\x4d\x57\x35\x53\x77','\x57\x52\x76\x48\x57\x34\x39\x77\x57\x51\x79','\x57\x52\x66\x59\x57\x36\x6e\x49\x57\x52\x61','\x71\x6d\x6f\x55\x57\x35\x71\x58\x57\x35\x35\x2b\x57\x36\x33\x63\x56\x57','\x6c\x58\x4c\x50\x6c\x38\x6f\x38\x46\x6d\x6b\x2b\x57\x52\x34','\x62\x49\x35\x46\x67\x38\x6f\x73\x75\x43\x6b\x7a\x57\x50\x34','\x57\x51\x4a\x64\x4b\x43\x6f\x30','\x7a\x61\x4e\x64\x53\x72\x4a\x63\x4c\x71','\x57\x51\x47\x64\x57\x50\x54\x6e\x57\x35\x30','\x57\x51\x30\x4d\x77\x38\x6f\x67\x57\x36\x57','\x43\x47\x52\x63\x56\x49\x42\x64\x4a\x4e\x6c\x64\x55\x32\x43','\x62\x62\x6c\x63\x4b\x33\x43','\x57\x4f\x34\x56\x41\x6d\x6f\x62\x57\x35\x65','\x57\x37\x6a\x79\x57\x52\x5a\x64\x4e\x38\x6f\x33\x57\x4f\x33\x64\x4f\x43\x6f\x34','\x7a\x71\x48\x74\x57\x50\x30\x70\x63\x38\x6b\x6b\x77\x47','\x41\x38\x6f\x68\x61\x58\x56\x63\x54\x68\x70\x63\x48\x67\x61','\x6d\x78\x5a\x63\x51\x75\x4a\x63\x48\x65\x74\x64\x55\x53\x6b\x56','\x57\x35\x70\x63\x4f\x62\x74\x63\x51\x53\x6b\x33\x57\x34\x75\x54\x57\x52\x38','\x57\x4f\x56\x63\x4b\x78\x70\x63\x47\x47\x48\x6a\x62\x4a\x69','\x62\x66\x64\x64\x47\x71','\x6b\x66\x4f\x39\x57\x34\x46\x63\x51\x57','\x69\x38\x6b\x64\x64\x47','\x57\x50\x34\x41\x6a\x43\x6f\x6d','\x57\x36\x6c\x63\x52\x47\x2f\x63\x4b\x6d\x6b\x48','\x57\x37\x50\x57\x57\x4f\x50\x44\x72\x38\x6b\x70','\x66\x58\x6a\x30\x63\x6d\x6f\x36','\x6d\x78\x6d\x5a\x57\x34\x78\x63\x49\x61','\x57\x37\x37\x64\x50\x38\x6f\x75\x57\x52\x2f\x64\x54\x61','\x57\x50\x35\x52\x73\x64\x79\x5a\x66\x77\x65\x34','\x66\x67\x42\x63\x51\x38\x6b\x36\x57\x4f\x30','\x57\x34\x56\x64\x55\x64\x56\x64\x47\x43\x6b\x67\x57\x35\x31\x75\x57\x50\x6d','\x43\x33\x33\x64\x4c\x49\x42\x64\x4b\x38\x6f\x33\x57\x36\x74\x63\x51\x71','\x42\x48\x58\x47\x78\x74\x6d','\x57\x34\x53\x57\x45\x6d\x6b\x5a\x57\x52\x37\x63\x4f\x38\x6f\x53\x57\x37\x61','\x6f\x32\x4b\x4b\x57\x36\x4a\x63\x4e\x47','\x57\x36\x6a\x67\x57\x51\x4c\x78\x46\x71','\x6e\x74\x39\x79\x64\x53\x6f\x71\x74\x38\x6b\x45\x57\x51\x38','\x57\x4f\x53\x39\x6b\x53\x6f\x57\x57\x51\x71','\x71\x5a\x7a\x37\x57\x51\x53\x2b','\x44\x43\x6f\x33\x68\x43\x6f\x31\x57\x37\x66\x66\x57\x4f\x38\x71','\x57\x51\x30\x62\x72\x43\x6f\x39\x57\x36\x5a\x64\x55\x43\x6b\x37\x57\x52\x61','\x66\x32\x44\x32\x45\x73\x6a\x50\x43\x43\x6f\x6f','\x78\x72\x64\x64\x4e\x4a\x50\x71','\x57\x37\x56\x64\x4f\x78\x34','\x70\x58\x2f\x64\x47\x57','\x41\x73\x64\x64\x53\x57\x46\x63\x54\x6d\x6f\x64\x57\x4f\x78\x64\x56\x47','\x57\x52\x6e\x75\x57\x35\x6e\x69\x57\x51\x7a\x74\x45\x33\x71','\x74\x65\x42\x64\x54\x53\x6b\x61\x57\x34\x53','\x7a\x38\x6f\x47\x57\x37\x4b\x55\x57\x34\x30','\x6b\x33\x42\x64\x48\x66\x37\x63\x54\x61','\x57\x35\x6a\x39\x57\x50\x35\x6e\x79\x53\x6b\x63\x57\x36\x4f\x49','\x69\x43\x6b\x78\x63\x47','\x57\x4f\x2f\x63\x4f\x43\x6f\x67\x57\x35\x75\x2f','\x57\x36\x57\x4f\x75\x38\x6f\x6c\x43\x61','\x62\x53\x6f\x31\x57\x4f\x42\x64\x52\x6d\x6f\x44\x57\x35\x6c\x64\x53\x71','\x77\x30\x42\x64\x4b\x74\x70\x64\x4a\x57','\x68\x38\x6f\x33\x57\x4f\x65\x39\x57\x51\x34','\x57\x52\x7a\x59\x79\x74\x61\x70','\x76\x6d\x6f\x45\x66\x53\x6f\x6e\x57\x34\x65','\x57\x36\x31\x42\x57\x52\x35\x31\x71\x61','\x74\x6d\x6f\x62\x66\x6d\x6f\x74\x57\x35\x4f','\x79\x33\x33\x63\x4f\x63\x6e\x66\x45\x59\x4f\x6a','\x57\x50\x35\x56\x79\x47\x6a\x76','\x57\x52\x64\x64\x48\x66\x70\x64\x48\x43\x6f\x45','\x75\x53\x6f\x5a\x6d\x6d\x6f\x59\x57\x37\x79','\x57\x37\x56\x64\x51\x74\x4a\x63\x52\x43\x6f\x44\x46\x38\x6f\x72\x71\x71','\x44\x59\x6c\x63\x53\x72\x70\x63\x52\x68\x6c\x64\x4a\x6d\x6b\x56\x63\x62\x53','\x6f\x43\x6b\x36\x6f\x47\x70\x64\x55\x61','\x72\x48\x37\x63\x52\x48\x70\x64\x49\x6d\x6b\x4a\x76\x6d\x6b\x4f','\x72\x66\x4e\x64\x4f\x47\x37\x64\x4f\x6d\x6f\x41\x57\x34\x34','\x57\x37\x2f\x64\x55\x47\x78\x63\x4d\x38\x6f\x65','\x57\x50\x79\x4c\x75\x6d\x6f\x5a\x57\x36\x38','\x57\x34\x6d\x50\x73\x53\x6b\x56','\x45\x65\x78\x64\x4d\x6d\x6b\x6b\x57\x37\x47','\x66\x38\x6f\x37\x57\x4f\x70\x64\x52\x38\x6f\x79\x57\x36\x56\x64\x4c\x5a\x47','\x46\x53\x6f\x33\x65\x38\x6f\x34','\x57\x37\x69\x72\x57\x52\x64\x63\x4d\x53\x6f\x55\x57\x50\x4e\x64\x55\x71','\x6e\x59\x6a\x35\x6c\x53\x6f\x6e','\x41\x53\x6f\x73\x65\x38\x6f\x45\x57\x36\x79','\x57\x37\x5a\x64\x50\x62\x4b','\x57\x4f\x57\x75\x73\x53\x6f\x66\x57\x35\x57','\x65\x71\x6e\x56\x65\x53\x6f\x68','\x57\x35\x78\x64\x4e\x75\x4b\x2f\x75\x57','\x67\x59\x4c\x67\x64\x53\x6f\x45\x73\x57','\x66\x59\x50\x7a\x67\x6d\x6f\x79','\x75\x43\x6f\x74\x68\x38\x6f\x53\x57\x35\x43','\x57\x37\x62\x4c\x57\x4f\x34','\x77\x38\x6f\x51\x57\x34\x75\x50\x57\x37\x66\x5a\x57\x36\x4e\x63\x52\x61','\x43\x73\x66\x59\x57\x51\x57\x2b','\x57\x51\x69\x66\x7a\x43\x6f\x6d\x57\x34\x47','\x43\x73\x37\x64\x52\x71','\x46\x64\x52\x64\x53\x57\x33\x63\x54\x53\x6f\x7a\x57\x4f\x37\x64\x47\x57','\x79\x4c\x52\x64\x55\x43\x6b\x43\x57\x37\x38\x62\x57\x50\x31\x32','\x57\x37\x79\x62\x7a\x43\x6b\x4b\x57\x4f\x61','\x6f\x43\x6f\x32\x41\x53\x6b\x30\x57\x52\x57','\x57\x37\x6c\x64\x4c\x77\x65\x49\x77\x71','\x42\x64\x6c\x63\x4f\x31\x46\x64\x4d\x47','\x57\x37\x69\x6b\x57\x52\x74\x63\x4b\x47','\x57\x35\x31\x79\x57\x50\x50\x76\x74\x61','\x57\x52\x53\x61\x57\x4f\x50\x51\x57\x36\x34\x33','\x57\x52\x71\x7a\x6a\x5a\x7a\x2f','\x6f\x75\x54\x46\x74\x4e\x71','\x42\x4c\x52\x64\x47\x43\x6b\x67\x57\x37\x6d\x4e\x57\x50\x7a\x6f','\x57\x52\x71\x71\x63\x43\x6f\x65\x57\x50\x38','\x57\x52\x2f\x64\x4c\x53\x6f\x4e\x70\x72\x70\x63\x54\x53\x6f\x59\x57\x36\x71','\x57\x35\x53\x57\x46\x53\x6f\x58\x44\x61','\x57\x37\x5a\x64\x4f\x58\x70\x63\x54\x6d\x6f\x42','\x57\x51\x43\x70\x75\x47','\x63\x30\x69\x46\x76\x38\x6f\x64','\x57\x35\x65\x6b\x6d\x38\x6b\x2b\x57\x50\x2f\x63\x49\x61\x69\x6f','\x57\x51\x52\x64\x53\x71\x56\x64\x54\x38\x6f\x66\x57\x35\x6c\x64\x4a\x61\x34','\x64\x38\x6b\x30\x70\x59\x46\x64\x56\x47','\x79\x74\x6c\x64\x55\x59\x52\x63\x4f\x38\x6f\x65\x57\x4f\x78\x64\x4d\x71','\x6d\x6d\x6f\x59\x67\x38\x6f\x52\x57\x52\x61\x69\x57\x34\x6d\x79','\x57\x34\x47\x41\x57\x50\x4e\x63\x53\x38\x6f\x54','\x78\x4a\x6a\x4b\x57\x36\x30\x36\x6e\x53\x6b\x30\x41\x71','\x6b\x65\x2f\x63\x54\x6d\x6b\x72\x57\x4f\x47','\x7a\x38\x6f\x46\x57\x51\x4f\x65\x76\x57','\x70\x78\x34\x6b\x71\x6d\x6f\x32','\x57\x34\x43\x78\x57\x52\x6c\x63\x53\x43\x6f\x78','\x61\x53\x6b\x55\x6d\x74\x4e\x64\x52\x73\x2f\x63\x48\x53\x6f\x6d','\x78\x48\x39\x69\x74\x47\x47\x67\x57\x35\x52\x64\x4c\x57','\x6e\x53\x6f\x62\x46\x38\x6b\x61\x57\x51\x52\x63\x48\x4b\x4f\x64','\x43\x73\x4a\x64\x56\x63\x61','\x57\x37\x50\x34\x57\x51\x35\x34\x7a\x47','\x45\x43\x6f\x37\x67\x38\x6f\x59\x57\x36\x76\x74','\x57\x52\x65\x62\x57\x4f\x62\x32\x57\x37\x34','\x57\x51\x54\x42\x75\x6d\x6b\x57\x45\x61','\x66\x73\x4a\x63\x54\x4b\x64\x63\x54\x66\x4e\x64\x51\x53\x6f\x6f','\x57\x37\x78\x64\x56\x53\x6b\x41\x57\x51\x68\x64\x49\x4a\x43\x4d\x66\x57','\x57\x51\x46\x63\x49\x53\x6f\x47\x57\x36\x4c\x34\x57\x4f\x4b','\x57\x34\x48\x66\x57\x52\x72\x4e\x43\x43\x6b\x4c\x57\x34\x65\x61','\x57\x51\x56\x63\x4c\x48\x78\x63\x47\x62\x34','\x57\x34\x43\x52\x6e\x47','\x6e\x72\x54\x5a\x69\x38\x6f\x4f\x46\x43\x6b\x31\x57\x52\x4f','\x41\x4d\x68\x64\x51\x43\x6b\x67\x57\x36\x4f','\x6c\x38\x6b\x78\x63\x47\x42\x64\x4e\x72\x74\x63\x4f\x43\x6f\x4c','\x57\x37\x52\x64\x53\x48\x56\x63\x51\x57','\x6e\x6d\x6b\x47\x6d\x32\x57\x74\x57\x4f\x70\x63\x54\x38\x6b\x41','\x72\x6d\x6f\x71\x57\x50\x34\x6f\x74\x33\x31\x67\x6c\x61','\x57\x52\x37\x64\x55\x72\x70\x64\x50\x53\x6b\x65\x57\x37\x6a\x79','\x42\x38\x6f\x67\x62\x74\x46\x63\x4c\x32\x6c\x63\x48\x32\x57','\x70\x6d\x6f\x77\x57\x51\x70\x64\x4f\x6d\x6f\x69','\x74\x48\x31\x4b\x57\x51\x2f\x64\x4d\x5a\x5a\x63\x53\x53\x6b\x35\x57\x36\x61\x70','\x57\x50\x7a\x4d\x41\x61\x66\x58\x6e\x62\x71\x52','\x75\x77\x61\x42\x77\x38\x6b\x66\x68\x53\x6b\x42\x57\x36\x75','\x67\x43\x6b\x36\x57\x4f\x4c\x34\x57\x34\x35\x75\x57\x35\x70\x63\x55\x4a\x6a\x77','\x72\x53\x6f\x66\x57\x4f\x31\x6b\x69\x33\x35\x62\x6e\x47','\x63\x30\x4f\x2b\x57\x36\x6c\x64\x54\x71','\x57\x50\x6d\x61\x6e\x71','\x57\x34\x53\x57\x45\x6d\x6b\x50\x57\x52\x37\x63\x52\x53\x6f\x53\x57\x36\x53','\x69\x43\x6f\x61\x46\x38\x6b\x67\x57\x52\x64\x63\x47\x66\x65\x72','\x63\x47\x4a\x63\x4c\x4e\x68\x63\x47\x57','\x57\x34\x42\x63\x4c\x71\x4e\x63\x52\x38\x6b\x38\x57\x34\x53\x31\x57\x51\x34','\x68\x6d\x6b\x59\x6f\x78\x38\x73','\x57\x51\x68\x64\x4d\x67\x33\x64\x4e\x53\x6f\x44\x57\x35\x4e\x63\x47\x63\x69','\x57\x37\x52\x64\x4d\x57\x42\x64\x4f\x6d\x6b\x33','\x57\x52\x56\x63\x53\x4a\x46\x63\x4b\x47','\x78\x38\x6f\x61\x70\x6d\x6f\x4d\x57\x34\x75\x4b\x77\x72\x53','\x61\x38\x6b\x42\x71\x4d\x64\x64\x50\x4a\x70\x63\x47\x78\x78\x64\x55\x43\x6b\x33\x41\x38\x6f\x69','\x70\x5a\x5a\x63\x55\x49\x34\x66\x44\x73\x4f\x6d','\x57\x51\x46\x63\x51\x38\x6b\x65','\x42\x53\x6f\x35\x57\x34\x6d\x55\x57\x36\x30','\x57\x50\x4c\x32\x72\x59\x53\x34\x6d\x32\x62\x33','\x57\x52\x2f\x63\x55\x6d\x6b\x45\x7a\x53\x6b\x34\x6b\x6d\x6b\x49\x57\x36\x75','\x57\x52\x39\x64\x41\x47\x4f\x6b','\x78\x4a\x56\x63\x49\x31\x4f','\x57\x51\x64\x64\x47\x30\x2f\x64\x48\x47','\x76\x53\x6f\x62\x66\x63\x5a\x63\x47\x4d\x4e\x63\x4d\x4e\x38','\x57\x37\x50\x48\x57\x50\x4c\x67\x73\x53\x6b\x61\x57\x37\x43\x4e','\x57\x4f\x4e\x63\x4b\x38\x6f\x46\x57\x36\x44\x75','\x57\x51\x4f\x6a\x73\x43\x6f\x6e\x57\x37\x75','\x43\x38\x6f\x6e\x68\x6d\x6f\x43\x57\x37\x79','\x62\x4e\x61\x48\x57\x37\x54\x37\x41\x38\x6f\x55\x78\x6d\x6b\x50\x57\x36\x44\x34\x77\x6d\x6b\x71','\x73\x4a\x43\x55\x6f\x64\x75\x57\x6c\x6d\x6b\x41\x57\x35\x58\x51\x79\x43\x6b\x65\x6a\x72\x38','\x76\x61\x39\x69\x73\x47\x47\x68','\x46\x62\x7a\x48\x57\x50\x6d\x49','\x57\x34\x74\x63\x50\x62\x71','\x57\x36\x38\x78\x45\x43\x6f\x70\x46\x43\x6b\x32\x57\x36\x52\x63\x55\x71','\x57\x34\x66\x66\x72\x53\x6b\x6f\x57\x51\x52\x64\x47\x4b\x6d','\x42\x6d\x6f\x68\x62\x73\x46\x63\x4e\x57','\x57\x4f\x4f\x54\x44\x6d\x6f\x77\x57\x37\x33\x63\x52\x43\x6f\x4e\x57\x37\x75','\x57\x4f\x61\x63\x41\x53\x6f\x78\x57\x34\x57','\x57\x50\x35\x49\x45\x61\x6a\x76','\x66\x66\x53\x4b\x57\x51\x70\x63\x56\x72\x4e\x63\x4e\x53\x6b\x54','\x57\x51\x5a\x63\x4e\x53\x6f\x53\x57\x34\x6e\x54\x57\x51\x6d\x51\x57\x34\x30','\x64\x74\x54\x6a','\x77\x53\x6f\x75\x6a\x53\x6f\x4d\x57\x35\x4b','\x57\x34\x61\x6c\x7a\x38\x6b\x55\x57\x4f\x2f\x63\x4e\x72\x61','\x6e\x58\x4e\x63\x55\x4c\x78\x63\x47\x47','\x6e\x53\x6f\x37\x57\x50\x33\x63\x51\x53\x6f\x2b\x57\x34\x4e\x64\x4a\x72\x53','\x78\x38\x6b\x52\x57\x35\x62\x48\x57\x36\x4c\x5a\x57\x36\x4a\x63\x4f\x61','\x57\x36\x46\x64\x50\x47\x37\x63\x4f\x43\x6f\x61\x42\x53\x6f\x58\x76\x57','\x6e\x4b\x47\x49\x43\x53\x6f\x57\x44\x6d\x6b\x31\x57\x34\x69','\x57\x36\x61\x70\x65\x38\x6f\x4c\x57\x50\x46\x64\x54\x43\x6b\x47\x57\x52\x61','\x45\x53\x6f\x78\x57\x4f\x4b\x67\x71\x71','\x69\x76\x33\x63\x4c\x53\x6b\x70','\x57\x34\x4f\x57\x43\x53\x6b\x2b\x57\x4f\x2f\x63\x50\x6d\x6f\x31\x57\x34\x65','\x57\x35\x46\x63\x54\x47\x46\x63\x48\x43\x6b\x2f','\x78\x6d\x6f\x48\x6f\x38\x6f\x4f\x57\x35\x71\x49\x71\x57\x65','\x57\x34\x4e\x64\x4c\x30\x38\x46','\x57\x51\x68\x63\x50\x53\x6f\x56\x57\x37\x6a\x6a\x57\x4f\x57\x4d\x57\x34\x75','\x6e\x76\x34\x57\x57\x34\x6c\x64\x56\x47\x33\x63\x4b\x53\x6b\x2b','\x44\x71\x4e\x63\x52\x76\x74\x64\x48\x32\x4e\x64\x48\x78\x53','\x57\x51\x6a\x58\x6f\x6d\x6f\x50\x57\x4f\x64\x63\x55\x43\x6f\x51\x57\x35\x65','\x57\x34\x62\x49\x57\x50\x58\x46\x41\x71','\x72\x66\x70\x64\x4f\x61','\x57\x50\x37\x63\x4f\x53\x6b\x31\x74\x6d\x6b\x6a','\x76\x63\x39\x6a\x68\x43\x6b\x44\x65\x6d\x6f\x6b\x57\x50\x79','\x57\x34\x57\x76\x7a\x43\x6f\x4f\x57\x4f\x64\x63\x4b\x72\x65\x6f','\x76\x6d\x6f\x75\x68\x38\x6f\x51\x57\x37\x69','\x57\x50\x64\x64\x49\x76\x4a\x64\x4a\x38\x6f\x46\x57\x35\x37\x63\x4e\x5a\x34','\x42\x53\x6f\x32\x57\x52\x6d','\x6f\x4b\x75\x35\x45\x53\x6f\x31','\x57\x51\x34\x2f\x6e\x62\x62\x39\x6d\x47','\x41\x59\x35\x49\x57\x51\x61\x6d\x70\x6d\x6b\x53\x7a\x47','\x74\x6d\x6f\x7a\x57\x50\x71\x6e\x41\x57','\x57\x34\x74\x64\x48\x53\x6f\x38\x57\x51\x33\x64\x4b\x49\x30\x2b\x74\x47','\x57\x52\x5a\x63\x50\x38\x6f\x45\x57\x36\x35\x66','\x57\x34\x69\x65\x68\x6d\x6f\x74\x74\x6d\x6b\x42\x57\x50\x33\x63\x4f\x47','\x57\x34\x47\x65\x41\x38\x6b\x46\x57\x4f\x37\x63\x4d\x72\x65\x6f','\x66\x38\x6f\x37\x57\x4f\x4a\x64\x52\x47','\x77\x74\x7a\x48\x57\x37\x79\x6d\x6d\x6d\x6b\x51\x44\x47','\x57\x34\x6d\x32\x74\x38\x6b\x64\x57\x4f\x65','\x57\x36\x2f\x64\x53\x68\x47\x59\x44\x71\x72\x76\x43\x61','\x57\x36\x4e\x64\x4c\x72\x52\x64\x50\x38\x6b\x33\x57\x36\x58\x4c\x57\x50\x75','\x57\x36\x7a\x39\x57\x51\x44\x32\x74\x47','\x57\x52\x6e\x30\x57\x35\x4c\x6e\x57\x4f\x62\x74\x79\x67\x79','\x57\x37\x69\x78\x57\x37\x33\x63\x4e\x43\x6f\x34\x57\x50\x5a\x64\x52\x6d\x6f\x49','\x65\x31\x75\x4a\x57\x37\x70\x63\x53\x47','\x64\x38\x6b\x48\x6e\x49\x2f\x64\x53\x63\x52\x63\x4a\x71','\x74\x43\x6f\x41\x57\x50\x38\x68\x77\x4e\x48\x63\x70\x57','\x57\x52\x6c\x63\x52\x38\x6f\x56\x57\x36\x53\x73','\x57\x50\x64\x63\x4c\x38\x6f\x78\x57\x36\x6d\x46\x70\x65\x53\x47','\x63\x30\x38\x4a\x57\x35\x37\x64\x4c\x47','\x61\x68\x30\x7a\x72\x6d\x6f\x46\x76\x6d\x6b\x44\x57\x36\x30','\x46\x58\x46\x64\x48\x61\x6c\x63\x4d\x61','\x79\x47\x78\x63\x52\x61\x6c\x64\x49\x6d\x6b\x31\x74\x38\x6b\x62','\x57\x37\x78\x63\x49\x71\x5a\x63\x52\x53\x6b\x38','\x57\x52\x37\x64\x52\x78\x4f\x54\x6c\x30\x65\x71\x6e\x47','\x6c\x43\x6b\x77\x64\x58\x33\x64\x56\x61','\x57\x51\x47\x4e\x6a\x71','\x57\x4f\x50\x34\x78\x74\x43\x5a\x70\x68\x4b\x2f','\x57\x50\x56\x63\x47\x38\x6b\x36\x74\x53\x6b\x77\x64\x38\x6b\x70','\x70\x4b\x54\x43\x76\x76\x48\x6f\x74\x43\x6f\x50','\x62\x38\x6b\x79\x72\x4d\x33\x63\x4d\x4b\x74\x63\x54\x4d\x4e\x64\x4c\x53\x6b\x44','\x57\x35\x64\x63\x54\x72\x6c\x63\x51\x38\x6b\x33\x57\x34\x6d\x50\x57\x52\x57','\x57\x37\x4c\x30\x57\x50\x39\x68\x73\x53\x6b\x67\x57\x37\x6d\x4b','\x6d\x57\x74\x63\x4a\x77\x42\x63\x4c\x62\x5a\x63\x52\x57','\x6d\x43\x6f\x4e\x57\x50\x4e\x64\x52\x57','\x70\x47\x4a\x63\x47\x4d\x42\x63\x4c\x61\x64\x63\x48\x47','\x43\x58\x5a\x63\x4d\x68\x46\x64\x48\x61','\x6c\x43\x6b\x6e\x67\x47\x53','\x57\x37\x38\x5a\x45\x6d\x6f\x36\x77\x61','\x79\x38\x6f\x49\x64\x6d\x6f\x30\x57\x37\x35\x61\x57\x4f\x4f\x74','\x7a\x43\x6f\x4c\x66\x43\x6f\x77\x57\x37\x43','\x57\x35\x74\x64\x54\x43\x6f\x54\x57\x51\x78\x64\x54\x71','\x61\x6d\x6f\x33\x73\x38\x6b\x38','\x45\x53\x6f\x67\x57\x4f\x4b\x74\x71\x71','\x57\x50\x78\x63\x48\x6d\x6f\x52\x57\x36\x4f\x78','\x73\x53\x6f\x48\x57\x50\x69\x74\x41\x33\x35\x41\x6c\x47','\x66\x67\x7a\x59\x69\x77\x76\x31\x46\x43\x6b\x6d','\x57\x52\x6c\x64\x4a\x76\x2f\x64\x4c\x38\x6f\x45\x57\x35\x68\x63\x47\x74\x34','\x57\x35\x64\x64\x4e\x58\x33\x64\x56\x6d\x6b\x2f','\x72\x4c\x78\x64\x4f\x47\x46\x64\x52\x43\x6f\x71\x57\x34\x78\x63\x4c\x61','\x57\x51\x35\x71\x57\x37\x78\x64\x4b\x43\x6b\x51\x57\x34\x78\x63\x50\x53\x6b\x34','\x57\x52\x33\x64\x4d\x53\x6b\x4d\x6f\x72\x37\x63\x55\x53\x6f\x43\x57\x36\x61','\x70\x4b\x46\x63\x4c\x53\x6b\x79\x57\x52\x53','\x57\x51\x5a\x64\x49\x53\x6f\x31','\x57\x36\x39\x47\x57\x4f\x76\x6d\x75\x6d\x6b\x6f\x57\x37\x65\x56','\x70\x4b\x7a\x6d\x75\x30\x47\x39\x6c\x53\x6b\x6d','\x77\x38\x6f\x71\x57\x4f\x6d\x6b','\x57\x34\x38\x72\x73\x43\x6f\x35\x42\x6d\x6b\x6c\x57\x35\x65','\x79\x5a\x4e\x63\x48\x77\x52\x64\x4a\x71','\x57\x34\x4e\x64\x4c\x72\x52\x64\x50\x38\x6b\x33\x57\x36\x58\x4c\x57\x36\x57','\x57\x51\x39\x70\x6c\x72\x48\x64\x45\x62\x6d\x59','\x57\x37\x4e\x64\x4a\x47\x42\x64\x55\x53\x6b\x38\x57\x36\x76\x34\x57\x51\x43','\x57\x34\x4f\x78\x42\x6d\x6b\x66\x57\x4f\x38','\x76\x43\x6f\x45\x61\x64\x4e\x63\x51\x61','\x66\x59\x72\x63\x68\x38\x6f\x79\x72\x38\x6b\x45','\x57\x35\x6c\x63\x51\x72\x70\x63\x51\x53\x6b\x61','\x45\x6d\x6f\x4b\x62\x53\x6f\x4e\x57\x36\x61','\x43\x62\x4a\x63\x50\x57\x2f\x64\x54\x6d\x6b\x34\x73\x43\x6b\x44','\x74\x71\x70\x63\x4a\x65\x4a\x64\x4f\x47','\x6a\x66\x71\x34\x57\x35\x37\x63\x4a\x43\x6b\x70\x57\x4f\x52\x64\x4a\x57','\x57\x36\x72\x68\x63\x53\x6b\x47','\x78\x67\x4a\x64\x47\x6d\x6b\x4f\x57\x35\x75','\x44\x4a\x31\x31\x7a\x63\x38','\x57\x51\x46\x63\x49\x6d\x6f\x6b\x57\x34\x57\x44\x6f\x4c\x65\x42','\x57\x37\x2f\x64\x4f\x47\x37\x64\x4b\x43\x6b\x77','\x42\x49\x52\x64\x54\x57\x33\x63\x4c\x53\x6f\x76\x57\x4f\x37\x64\x4a\x71','\x70\x31\x4a\x63\x54\x38\x6b\x47\x57\x4f\x43','\x57\x52\x61\x56\x57\x50\x54\x38\x57\x35\x6d','\x75\x49\x35\x58\x57\x4f\x4b\x45','\x57\x51\x46\x63\x48\x6d\x6f\x47\x57\x36\x72\x34\x57\x4f\x79\x2f\x57\x37\x71','\x6d\x72\x37\x63\x4c\x33\x52\x63\x4e\x48\x42\x63\x53\x53\x6b\x75','\x79\x59\x4e\x64\x51\x74\x54\x46\x41\x57\x47\x6b','\x57\x52\x76\x74\x46\x62\x79\x59','\x6a\x4e\x56\x64\x51\x65\x4a\x63\x4b\x76\x68\x64\x4e\x53\x6b\x55','\x45\x49\x52\x63\x48\x66\x33\x64\x48\x47','\x57\x37\x6e\x4a\x79\x75\x34\x35\x43\x48\x4e\x63\x47\x4d\x31\x4a\x57\x37\x31\x6f','\x57\x34\x4a\x64\x56\x74\x70\x63\x52\x43\x6f\x74','\x57\x51\x74\x64\x4d\x75\x78\x64\x4e\x6d\x6f\x65\x57\x35\x4e\x63\x47\x5a\x75','\x45\x64\x56\x64\x4d\x63\x50\x67','\x57\x51\x61\x42\x76\x71','\x68\x38\x6b\x6b\x70\x63\x4e\x64\x4f\x47','\x57\x51\x52\x63\x51\x74\x6c\x63\x4e\x57\x34\x41','\x57\x50\x4e\x64\x51\x38\x6f\x4a\x6b\x4a\x6d','\x61\x53\x6b\x42\x66\x30\x4f','\x57\x51\x53\x68\x75\x53\x6f\x30\x57\x35\x4e\x64\x50\x6d\x6b\x31\x57\x52\x30','\x57\x52\x30\x64\x57\x4f\x6e\x38\x57\x52\x6a\x54','\x62\x4e\x52\x64\x4e\x67\x2f\x63\x4a\x71','\x57\x51\x4e\x64\x4e\x6d\x6f\x74\x6d\x71\x33\x63\x54\x53\x6f\x72\x57\x36\x79','\x62\x53\x6f\x58\x57\x4f\x33\x64\x52\x57','\x57\x37\x62\x68\x57\x52\x6a\x53\x76\x71','\x57\x34\x5a\x64\x4c\x73\x5a\x64\x49\x53\x6b\x39','\x43\x72\x42\x63\x54\x47\x78\x64\x47\x47','\x57\x50\x43\x6e\x67\x73\x50\x6b\x67\x74\x74\x63\x56\x71','\x62\x68\x69\x4d\x57\x36\x2f\x63\x53\x6d\x6b\x5a\x57\x52\x61','\x57\x36\x4e\x64\x4d\x57\x64\x64\x53\x6d\x6b\x36','\x57\x50\x71\x38\x6c\x6d\x6f\x66\x57\x52\x52\x63\x51\x43\x6b\x4b\x6f\x71','\x57\x37\x58\x48\x57\x51\x31\x35\x74\x57','\x69\x30\x34\x6a\x57\x34\x56\x63\x4a\x43\x6b\x75\x57\x4f\x78\x64\x4b\x71','\x6e\x31\x34\x46\x57\x37\x4a\x63\x4d\x53\x6b\x68\x57\x4f\x64\x64\x4a\x71','\x57\x35\x50\x32\x57\x50\x58\x42\x76\x61','\x6a\x32\x75\x62\x57\x34\x42\x64\x47\x57','\x57\x50\x76\x4d\x42\x62\x76\x76\x6b\x47\x34','\x57\x50\x31\x55\x77\x6d\x6b\x71\x76\x61','\x6c\x43\x6b\x37\x6a\x47\x33\x64\x54\x71','\x78\x38\x6f\x75\x70\x53\x6f\x50\x57\x35\x6d\x53\x76\x72\x34','\x63\x75\x71\x45\x57\x37\x4a\x64\x50\x58\x52\x63\x48\x43\x6b\x43','\x6f\x58\x33\x63\x50\x32\x42\x63\x49\x61','\x46\x33\x70\x63\x51\x57\x74\x63\x54\x43\x6f\x74\x57\x4f\x68\x64\x48\x47','\x64\x6d\x6f\x54\x57\x51\x4a\x64\x55\x6d\x6f\x6a\x57\x37\x37\x64\x55\x57','\x57\x52\x48\x48\x57\x35\x44\x61','\x42\x4a\x5a\x64\x50\x58\x68\x63\x4a\x53\x6f\x7a\x57\x4f\x33\x64\x4a\x57','\x72\x38\x6b\x6f\x77\x64\x4e\x63\x56\x4d\x74\x63\x4b\x4d\x6d','\x57\x50\x71\x4f\x79\x43\x6f\x39\x57\x51\x70\x63\x4a\x43\x6f\x52\x68\x47','\x57\x50\x35\x49\x45\x72\x6a\x79','\x70\x38\x6b\x50\x69\x71','\x66\x6d\x6f\x43\x66\x73\x68\x63\x50\x68\x78\x63\x4e\x77\x4f','\x57\x51\x7a\x56\x57\x34\x30','\x57\x36\x75\x37\x46\x53\x6b\x52\x57\x4f\x30','\x57\x52\x78\x64\x4b\x38\x6f\x4a\x6d\x61\x52\x63\x50\x38\x6f\x39\x57\x37\x79','\x64\x4c\x38\x47\x57\x37\x37\x64\x56\x48\x4a\x63\x4e\x53\x6b\x35','\x71\x6d\x6f\x77\x57\x50\x62\x45\x7a\x4d\x72\x6e\x45\x47','\x6f\x38\x6b\x6c\x57\x51\x39\x6d\x57\x50\x53','\x57\x36\x4a\x64\x4c\x71\x68\x64\x56\x43\x6b\x32','\x57\x4f\x4e\x63\x55\x57\x42\x63\x4e\x74\x75','\x78\x6d\x6b\x70\x57\x35\x72\x72\x6c\x55\x6b\x61\x48\x71\x38\x39','\x57\x34\x4b\x51\x79\x53\x6b\x56\x57\x52\x74\x63\x56\x38\x6f\x58\x57\x35\x34','\x57\x52\x39\x53\x57\x35\x4c\x46\x57\x52\x4f','\x7a\x48\x4a\x63\x53\x71','\x57\x51\x5a\x63\x4e\x53\x6f\x53\x57\x35\x39\x5a\x57\x50\x43\x55\x57\x34\x65','\x45\x64\x4a\x64\x51\x73\x54\x70\x41\x4a\x47\x58','\x69\x38\x6b\x7a\x62\x4d\x69\x39','\x57\x35\x74\x64\x48\x53\x6f\x69\x57\x51\x78\x64\x4b\x73\x6d\x37\x75\x71','\x63\x73\x64\x63\x4b\x4d\x78\x63\x50\x47','\x57\x52\x79\x44\x57\x50\x76\x6c\x57\x36\x4b','\x57\x52\x68\x64\x47\x77\x37\x64\x51\x6d\x6f\x59','\x57\x36\x78\x64\x4c\x62\x4a\x64\x51\x53\x6f\x37\x57\x51\x57','\x6c\x78\x6c\x64\x55\x47','\x57\x51\x2f\x64\x55\x64\x38\x4e\x6b\x72\x38\x6b\x41\x47','\x57\x50\x74\x63\x4a\x47\x74\x63\x52\x71\x6d','\x73\x38\x6f\x79\x57\x36\x34\x75\x57\x35\x4e\x63\x48\x6d\x6b\x75\x6e\x33\x37\x63\x50\x6d\x6b\x5a\x71\x62\x52\x63\x4e\x71','\x57\x35\x34\x32\x42\x38\x6f\x56\x73\x38\x6b\x71\x57\x35\x70\x63\x4b\x61','\x67\x6d\x6f\x52\x76\x43\x6b\x2b\x57\x4f\x68\x63\x55\x47','\x57\x50\x43\x4a\x57\x51\x62\x72\x57\x35\x30\x6d\x6b\x4e\x34','\x57\x35\x75\x52\x6a\x76\x38\x42\x43\x76\x7a\x30','\x45\x72\x6c\x63\x50\x47\x42\x64\x50\x53\x6b\x36\x73\x43\x6b\x42','\x69\x65\x56\x63\x4d\x43\x6b\x46\x57\x52\x56\x64\x4e\x4d\x4b','\x57\x50\x4b\x48\x6b\x6d\x6f\x79\x57\x52\x70\x63\x47\x6d\x6b\x2b\x70\x57','\x72\x53\x6f\x42\x57\x50\x47\x73\x45\x33\x76\x6b\x6b\x71','\x57\x4f\x53\x2b\x64\x53\x6f\x2b\x57\x50\x38','\x7a\x47\x37\x63\x53\x58\x6d','\x57\x51\x43\x44\x6e\x6d\x6f\x78\x57\x50\x64\x63\x49\x53\x6b\x2f\x6b\x61','\x66\x4d\x7a\x42\x44\x33\x34','\x57\x51\x79\x4e\x6a\x72\x62\x42\x69\x58\x68\x63\x49\x61','\x74\x43\x6f\x41\x57\x4f\x34\x71\x41\x47','\x69\x57\x37\x63\x47\x4d\x64\x63\x4b\x47\x57','\x57\x35\x65\x6e\x43\x43\x6b\x30\x57\x50\x69','\x78\x43\x6f\x67\x67\x6d\x6f\x48\x57\x35\x69','\x44\x38\x6f\x61\x6f\x61\x5a\x63\x4e\x61','\x6d\x75\x34\x46\x57\x34\x75','\x57\x52\x5a\x64\x51\x53\x6f\x46\x7a\x38\x6b\x32\x6f\x43\x6b\x36\x57\x34\x4f','\x45\x43\x6f\x78\x74\x66\x56\x63\x48\x76\x6c\x63\x55\x53\x6f\x4c\x65\x53\x6f\x46\x6d\x6d\x6f\x75','\x68\x38\x6f\x4e\x79\x53\x6b\x44\x57\x51\x38','\x57\x51\x65\x79\x6a\x72\x54\x4e','\x57\x52\x43\x79\x7a\x53\x6f\x58\x57\x37\x71','\x46\x59\x4a\x64\x56\x61','\x57\x4f\x5a\x63\x47\x53\x6f\x66\x57\x34\x79\x44\x6b\x31\x79\x61','\x57\x4f\x52\x64\x54\x53\x6f\x51\x6d\x58\x4f','\x62\x43\x6b\x45\x67\x48\x68\x63\x4d\x75\x6c\x63\x55\x77\x65','\x79\x32\x46\x63\x50\x32\x61\x6b\x34\x4f\x63\x6d\x41\x57\x69','\x42\x65\x4e\x64\x4e\x5a\x64\x64\x50\x61','\x41\x53\x6f\x71\x6a\x53\x6b\x4c\x57\x37\x71\x42\x45\x74\x47','\x57\x36\x58\x37\x45\x4c\x53','\x57\x52\x6c\x64\x48\x76\x56\x64\x4d\x53\x6f\x43\x57\x35\x4e\x63\x47\x4a\x69','\x6a\x31\x56\x63\x53\x6d\x6b\x45\x57\x52\x5a\x64\x55\x30\x74\x64\x4f\x71','\x57\x50\x43\x55\x57\x51\x62\x6c\x57\x35\x75\x72\x6f\x4e\x79','\x6f\x65\x38\x46\x57\x35\x52\x63\x4a\x6d\x6f\x43','\x65\x6d\x6f\x52\x77\x6d\x6b\x32\x57\x50\x68\x63\x54\x57','\x57\x50\x38\x75\x6e\x43\x6f\x77\x57\x52\x34','\x63\x67\x56\x64\x4d\x65\x46\x63\x54\x61','\x57\x51\x6c\x63\x49\x6d\x6f\x38\x57\x37\x53\x78','\x74\x43\x6f\x39\x70\x38\x6f\x50\x57\x36\x4b','\x73\x74\x79\x53\x6e\x64\x57\x59\x75\x6d\x6f\x2b\x57\x34\x44\x53\x76\x43\x6b\x38','\x68\x4b\x71\x32\x57\x37\x69','\x57\x4f\x6e\x59\x71\x6d\x6b\x36\x75\x47','\x57\x52\x52\x63\x53\x4a\x33\x63\x48\x72\x34\x6b\x68\x61','\x77\x64\x42\x63\x48\x31\x56\x64\x52\x71','\x43\x61\x37\x63\x54\x58\x70\x64\x51\x38\x6b\x5a\x74\x53\x6b\x6b','\x44\x74\x70\x64\x52\x49\x62\x79\x45\x59\x34\x54','\x69\x4e\x38\x58\x57\x35\x4e\x63\x49\x61','\x57\x36\x52\x64\x56\x47\x52\x63\x4f\x53\x6f\x67\x42\x53\x6f\x44\x72\x57','\x57\x34\x4e\x64\x49\x4b\x34\x65\x78\x4a\x66\x55\x73\x71','\x46\x5a\x50\x63\x76\x58\x34','\x57\x52\x71\x4a\x57\x4f\x48\x4f\x57\x37\x34','\x6f\x4c\x76\x67\x73\x76\x48\x63\x71\x6d\x6f\x54','\x57\x52\x6d\x66\x57\x4f\x6e\x4f\x57\x37\x69','\x45\x65\x4a\x64\x4e\x38\x6b\x61\x57\x36\x4b\x39\x57\x4f\x4c\x48','\x62\x38\x6f\x52\x77\x53\x6b\x52\x57\x50\x42\x63\x55\x47','\x57\x35\x78\x64\x4c\x38\x6f\x6f\x57\x36\x79\x57\x68\x67\x38\x36','\x78\x59\x48\x35\x57\x51\x43\x50\x6c\x43\x6b\x78\x44\x71','\x57\x34\x75\x2b\x42\x53\x6b\x65\x57\x52\x70\x63\x52\x6d\x6f\x51\x57\x35\x43','\x57\x51\x57\x70\x76\x43\x6f\x4e\x57\x35\x61','\x57\x4f\x68\x63\x4f\x62\x78\x63\x54\x53\x6b\x32\x57\x4f\x7a\x47\x34\x4f\x6f\x6f','\x57\x34\x44\x63\x57\x52\x48\x4d\x44\x57','\x57\x36\x53\x57\x45\x6d\x6b\x5a\x57\x52\x37\x63\x4f\x38\x6f\x53\x57\x4f\x4b','\x57\x34\x69\x6c\x77\x38\x6b\x65\x57\x51\x43','\x74\x38\x6f\x6b\x57\x37\x47\x61\x57\x35\x79','\x41\x72\x66\x41\x57\x50\x4f\x48','\x41\x6d\x6f\x41\x6b\x53\x6f\x4c\x57\x35\x53','\x57\x51\x79\x6a\x7a\x38\x6f\x52\x57\x34\x52\x64\x48\x6d\x6b\x5a\x57\x51\x79','\x57\x51\x39\x56\x44\x6d\x6b\x78\x7a\x59\x2f\x63\x51\x74\x71','\x6a\x53\x6f\x52\x73\x6d\x6b\x50\x57\x50\x52\x63\x56\x68\x61\x52','\x57\x4f\x62\x70\x71\x71','\x44\x5a\x4a\x64\x56\x62\x31\x70\x45\x73\x38\x61','\x6a\x43\x6b\x6e\x57\x52\x58\x7a\x57\x51\x4e\x64\x47\x43\x6f\x66\x72\x57','\x71\x64\x6e\x4b\x57\x51\x4f','\x57\x50\x4e\x64\x48\x66\x37\x64\x4e\x43\x6f\x32\x57\x35\x78\x63\x4d\x64\x47','\x57\x51\x71\x34\x63\x53\x6f\x2b\x57\x4f\x38','\x57\x4f\x4b\x45\x76\x53\x6f\x54\x57\x36\x47','\x45\x62\x37\x64\x4a\x53\x6f\x73\x57\x36\x2f\x63\x49\x61\x6c\x64\x4b\x43\x6f\x35\x57\x52\x4e\x63\x50\x43\x6b\x38\x57\x35\x6d','\x70\x38\x6b\x76\x43\x4b\x53\x50\x57\x51\x4e\x63\x56\x38\x6b\x50','\x76\x47\x4c\x68\x77\x72\x4b\x6c\x57\x36\x47','\x77\x38\x6f\x61\x68\x63\x5a\x64\x55\x63\x4b','\x75\x6d\x6f\x67\x66\x6d\x6f\x53\x57\x35\x38\x4b\x71\x48\x61','\x57\x36\x4a\x64\x51\x31\x4b\x56\x41\x71\x50\x73\x43\x71','\x78\x57\x72\x55\x44\x74\x30','\x57\x36\x53\x71\x41\x43\x6b\x7a\x57\x52\x71','\x6e\x62\x56\x63\x4d\x76\x5a\x63\x47\x57','\x73\x47\x39\x6d\x73\x62\x38\x42\x57\x36\x64\x64\x4c\x57','\x44\x75\x37\x64\x4c\x73\x68\x64\x47\x61','\x69\x78\x6d\x4b\x74\x38\x6f\x59','\x6e\x66\x68\x64\x47\x57','\x57\x51\x52\x63\x48\x38\x6b\x77\x43\x38\x6b\x6e\x6d\x38\x6b\x32\x57\x34\x6d','\x57\x34\x56\x63\x4e\x65\x64\x63\x49\x53\x6b\x53\x57\x34\x7a\x47\x57\x4f\x38','\x64\x77\x72\x31\x44\x67\x47','\x70\x57\x4a\x63\x49\x64\x6c\x63\x4d\x72\x68\x63\x55\x43\x6f\x6f','\x6b\x75\x4b\x35\x41\x68\x34\x47\x43\x43\x6f\x64','\x72\x6d\x6f\x46\x6d\x38\x6f\x79\x57\x35\x39\x59\x57\x52\x43','\x57\x50\x57\x4e\x7a\x38\x6b\x53\x57\x4f\x6c\x63\x4e\x43\x6f\x6d','\x6b\x75\x6c\x64\x55\x49\x70\x63\x4b\x63\x37\x63\x56\x66\x39\x44\x66\x4d\x6c\x64\x4e\x68\x65','\x57\x37\x54\x68\x57\x50\x66\x36\x72\x47','\x45\x74\x64\x64\x52\x73\x62\x46\x42\x61','\x57\x34\x70\x64\x50\x47\x4a\x63\x51\x43\x6f\x2b','\x69\x31\x34\x6b\x57\x35\x4a\x63\x4e\x6d\x6b\x6f','\x57\x50\x76\x4d\x42\x62\x76\x76\x6b\x47\x34\x6a','\x45\x4a\x6c\x64\x52\x58\x33\x63\x56\x57','\x70\x76\x2f\x64\x4e\x76\x6c\x63\x54\x47','\x57\x34\x71\x71\x7a\x38\x6b\x5a\x57\x52\x78\x63\x4e\x71\x38\x79','\x57\x37\x30\x72\x75\x43\x6b\x4c\x57\x4f\x47','\x57\x52\x78\x63\x55\x53\x6f\x46\x57\x36\x54\x65','\x57\x35\x57\x72\x6a\x6d\x6f\x64\x57\x37\x42\x64\x47\x6d\x6f\x52\x6a\x47','\x57\x51\x50\x2f\x46\x63\x4b\x74','\x66\x43\x6b\x69\x57\x52\x6e\x69\x57\x4f\x6c\x64\x47\x61','\x57\x50\x31\x34\x75\x71\x4b\x41','\x67\x53\x6b\x42\x64\x47\x53','\x74\x4d\x46\x64\x56\x53\x6b\x39\x57\x35\x34\x42\x57\x52\x31\x6b','\x57\x52\x46\x63\x56\x64\x37\x63\x4a\x47','\x57\x34\x58\x77\x57\x52\x35\x39\x79\x43\x6f\x41\x57\x51\x39\x48','\x57\x51\x31\x78\x71\x71\x48\x4f','\x57\x36\x4b\x49\x57\x4f\x2f\x63\x50\x43\x6f\x76','\x68\x38\x6b\x59\x57\x52\x7a\x2b\x57\x4f\x75','\x76\x65\x78\x64\x50\x47\x46\x64\x4a\x43\x6f\x43\x57\x34\x78\x63\x4d\x47','\x67\x5a\x33\x63\x4b\x76\x33\x63\x47\x47','\x57\x4f\x42\x63\x49\x6d\x6b\x4d\x79\x6d\x6b\x6c','\x66\x6d\x6f\x6b\x66\x73\x70\x64\x53\x73\x4a\x64\x4b\x32\x69','\x43\x72\x42\x63\x54\x58\x78\x64\x4a\x57','\x65\x67\x79\x66\x74\x53\x6f\x71\x72\x57','\x57\x51\x64\x63\x56\x53\x6f\x78','\x57\x34\x4f\x44\x79\x53\x6b\x2b\x57\x50\x6d','\x6f\x38\x6b\x36\x57\x4f\x7a\x4c\x57\x52\x74\x64\x54\x53\x6f\x34\x71\x61','\x57\x4f\x46\x63\x52\x53\x6f\x70\x57\x35\x6a\x42','\x57\x34\x53\x57\x45\x6d\x6b\x30\x57\x51\x2f\x63\x56\x38\x6f\x54\x57\x34\x43','\x72\x4e\x47\x7a\x78\x53\x6b\x6d\x64\x43\x6b\x4c\x57\x51\x4c\x54\x57\x35\x46\x64\x4b\x31\x6d','\x57\x51\x52\x64\x4c\x77\x46\x64\x4a\x43\x6f\x31','\x57\x4f\x58\x78\x78\x72\x61\x6e','\x42\x73\x42\x64\x54\x57\x46\x63\x49\x43\x6f\x76\x57\x4f\x5a\x64\x4a\x57','\x57\x37\x57\x36\x57\x52\x70\x63\x4e\x43\x6f\x58','\x6e\x77\x42\x64\x55\x4b\x69','\x57\x52\x72\x4f\x57\x35\x58\x55\x57\x50\x43','\x71\x38\x6f\x6d\x57\x35\x4c\x73\x6c\x4e\x35\x44\x45\x47','\x42\x47\x4e\x63\x52\x74\x6c\x64\x47\x67\x2f\x64\x56\x77\x71','\x57\x4f\x78\x63\x51\x6d\x6f\x67\x57\x34\x54\x46\x57\x51\x4b\x6f','\x62\x38\x6f\x36\x77\x53\x6b\x54\x57\x4f\x64\x63\x4f\x75\x61\x48','\x57\x51\x4b\x4d\x62\x71\x7a\x34\x69\x57','\x57\x37\x76\x4b\x41\x75\x39\x59\x65\x73\x2f\x63\x4f\x76\x6e\x6e','\x73\x53\x6b\x70\x46\x43\x6b\x51\x57\x50\x68\x49\x47\x7a\x4b\x77\x65\x47','\x6f\x4d\x47\x35\x57\x36\x57\x72\x6c\x43\x6b\x51\x43\x61','\x78\x57\x2f\x63\x53\x77\x52\x64\x51\x71','\x71\x5a\x33\x63\x4e\x4c\x4a\x64\x53\x71','\x57\x4f\x33\x63\x49\x53\x6f\x62\x57\x34\x30\x6e\x6c\x71','\x6e\x38\x6f\x37\x57\x50\x52\x64\x55\x53\x6f\x75\x57\x37\x68\x64\x53\x74\x6d','\x57\x51\x71\x6c\x72\x6d\x6f\x30\x57\x37\x4e\x64\x56\x6d\x6b\x2f\x57\x51\x6d','\x42\x75\x4a\x64\x4e\x6d\x6b\x61\x57\x37\x65\x54','\x75\x31\x33\x64\x53\x71\x52\x64\x4f\x6d\x6f\x42\x57\x34\x46\x63\x4d\x61','\x41\x63\x6e\x58\x42\x62\x6d','\x57\x36\x78\x64\x4d\x72\x38','\x67\x53\x6b\x4a\x61\x65\x69\x67','\x78\x38\x6f\x75\x57\x4f\x4b\x6e\x41\x57','\x57\x52\x74\x63\x55\x53\x6f\x75\x57\x36\x35\x7a','\x71\x38\x6f\x2b\x57\x35\x6d','\x57\x37\x53\x72\x46\x38\x6b\x2f\x57\x52\x6d','\x75\x49\x4c\x5a\x57\x52\x53\x45\x6d\x6d\x6b\x31\x79\x61','\x57\x52\x38\x41\x75\x47','\x57\x34\x78\x64\x53\x59\x5a\x64\x54\x6d\x6b\x42','\x57\x36\x42\x63\x4a\x59\x78\x63\x4c\x53\x6b\x6d\x57\x36\x4f\x73\x57\x50\x38','\x66\x78\x64\x64\x50\x4e\x37\x63\x52\x61','\x6d\x53\x6f\x65\x43\x53\x6b\x2b\x57\x4f\x79','\x67\x43\x6b\x66\x57\x52\x44\x45\x57\x50\x78\x64\x48\x53\x6f\x73\x79\x47','\x7a\x78\x46\x64\x52\x66\x5a\x64\x4e\x72\x56\x63\x55\x38\x6b\x58','\x61\x53\x6f\x2f\x57\x52\x4a\x64\x56\x6d\x6f\x6e','\x79\x64\x42\x64\x4a\x71\x70\x63\x4a\x57','\x57\x35\x50\x57\x57\x50\x38\x70\x79\x43\x6b\x58\x57\x35\x65\x6d','\x69\x38\x6b\x47\x69\x67\x65\x69\x57\x51\x2f\x63\x4c\x6d\x6b\x47','\x43\x62\x4a\x63\x50\x57\x38','\x65\x43\x6f\x58\x57\x34\x4e\x64\x51\x6d\x6f\x63\x57\x36\x2f\x64\x4f\x59\x75','\x57\x50\x72\x6f\x57\x37\x58\x51\x57\x52\x4f','\x70\x4c\x56\x63\x56\x43\x6b\x42\x57\x52\x65','\x71\x4c\x4e\x64\x4f\x72\x79','\x72\x38\x6f\x6c\x62\x62\x37\x63\x54\x67\x6c\x63\x47\x30\x34','\x57\x34\x56\x64\x47\x59\x74\x63\x4e\x43\x6f\x48\x74\x38\x6f\x59\x44\x47','\x57\x52\x52\x64\x52\x32\x42\x64\x48\x38\x6f\x76','\x63\x53\x6f\x57\x57\x4f\x78\x64\x53\x38\x6b\x73\x57\x52\x65','\x68\x59\x76\x6d\x75\x30\x65\x36\x70\x57','\x57\x34\x75\x2b\x77\x38\x6b\x4f\x57\x50\x47','\x65\x53\x6f\x61\x78\x6d\x6b\x30\x57\x50\x61','\x45\x4c\x64\x64\x4f\x43\x6b\x6c\x57\x35\x71','\x63\x4c\x53\x55\x46\x43\x6f\x4c','\x57\x36\x42\x63\x4c\x73\x4e\x63\x4a\x38\x6b\x43\x57\x36\x61\x70\x57\x4f\x38','\x71\x72\x6c\x63\x54\x31\x42\x64\x4f\x53\x6b\x61\x42\x38\x6b\x47','\x76\x66\x52\x64\x4c\x6d\x6b\x44\x57\x35\x53\x58\x57\x4f\x44\x4e','\x6d\x57\x74\x63\x4a\x78\x5a\x63\x4c\x61\x46\x63\x52\x57','\x6f\x61\x44\x4a\x70\x6d\x6f\x49\x44\x53\x6b\x4b\x57\x51\x47','\x57\x37\x75\x78\x57\x52\x6d','\x57\x52\x2f\x63\x55\x63\x46\x63\x49\x62\x6d','\x43\x6d\x6f\x65\x57\x37\x43\x64\x57\x52\x52\x64\x47\x6d\x6f\x76\x44\x61','\x67\x64\x37\x63\x4f\x75\x33\x63\x50\x63\x52\x63\x49\x43\x6b\x52','\x57\x36\x53\x2b\x57\x4f\x37\x63\x4e\x53\x6f\x53','\x76\x38\x6f\x70\x62\x73\x42\x63\x54\x61','\x46\x38\x6f\x66\x6a\x43\x6f\x53\x57\x36\x65','\x57\x34\x4a\x64\x47\x73\x6c\x63\x51\x43\x6f\x67','\x57\x51\x5a\x63\x4f\x53\x6f\x6a\x57\x34\x54\x56','\x74\x53\x6f\x42\x57\x36\x4b\x43\x57\x35\x64\x63\x47\x6d\x6f\x64\x42\x4d\x6c\x63\x47\x6d\x6b\x41\x78\x57','\x71\x4c\x70\x64\x47\x72\x42\x64\x53\x38\x6f\x71\x57\x34\x78\x63\x4d\x47','\x78\x53\x6f\x4c\x57\x35\x75\x4f\x57\x37\x58\x37','\x57\x4f\x35\x41\x71\x38\x6f\x4e\x74\x72\x70\x63\x4c\x48\x69','\x57\x51\x35\x6a\x7a\x73\x53\x6f','\x71\x64\x6e\x44\x61\x6d\x6f\x4b\x42\x38\x6b\x2b','\x57\x51\x64\x63\x50\x6d\x6b\x42\x43\x53\x6f\x57\x44\x61','\x78\x74\x37\x63\x4f\x62\x78\x64\x54\x57','\x64\x75\x39\x39\x41\x67\x38','\x57\x51\x69\x46\x57\x4f\x62\x58\x57\x37\x71\x47\x65\x66\x57','\x57\x52\x6d\x33\x6b\x71\x53','\x57\x52\x38\x70\x75\x38\x6f\x33\x57\x35\x30','\x57\x4f\x38\x68\x65\x59\x62\x44\x63\x63\x2f\x63\x51\x61','\x66\x38\x6f\x48\x78\x38\x6b\x38'];_0x4743=function(){return _0x5f229e;};return _0x4743();}function _0x2ba36c(_0x355223,_0x8257e){const _0x11d77f=_0x5b7a59,_0x4a0c62={'\x66\x67\x4c\x7a\x56':function(_0x3efda8,_0x20f796){return _0x3efda8===_0x20f796;},'\x71\x68\x73\x68\x59':_0x11d77f(0x436,'\x28\x33\x56\x50'),'\x43\x69\x55\x45\x70':function(_0x2b5be8,_0xa3413a,_0x195ed5){return _0x2b5be8(_0xa3413a,_0x195ed5);},'\x78\x4c\x50\x64\x58':function(_0x3eb16c,_0x198a28){return _0x3eb16c(_0x198a28);},'\x68\x5a\x72\x70\x4f':function(_0x313c1f,_0x215c84){return _0x313c1f===_0x215c84;},'\x56\x76\x46\x70\x4f':_0x11d77f(0x27b,'\x28\x76\x4a\x4d'),'\x43\x50\x54\x58\x4f':function(_0x18da61,_0x530476,_0x55a01b){return _0x18da61(_0x530476,_0x55a01b);},'\x47\x6e\x68\x59\x5a':function(_0x34a044,_0x38b93f,_0x554c06){return _0x34a044(_0x38b93f,_0x554c06);}};function _0x558b63(_0x4ebfeb,_0x3fe2ef){const _0xc6b13b=_0x11d77f;if(_0x4ebfeb)return _0x8257e(_0x4ebfeb,_0x3fe2ef);try{_0x3fe2ef&&_0x4a0c62[_0xc6b13b(0x39d,'\x33\x4a\x21\x49')](typeof _0x3fe2ef[_0xc6b13b(0x2f5,'\x45\x75\x41\x63')+_0xc6b13b(0x2ac,'\x42\x45\x72\x34')],_0x4a0c62[_0xc6b13b(0x441,'\x33\x39\x47\x50')])&&_0x3fe2ef[_0xc6b13b(0x279,'\x73\x48\x4f\x37')+'\x6c\x69\x76\x65'](!![],0x3*-0x1b23+-0x15b0+-0x35*-0x30d);}catch(_0x1bec59){}_0x4a0c62[_0xc6b13b(0x460,'\x5e\x37\x65\x73')](_0x8257e,null,_0x3fe2ef);}return _0x4a0c62[_0x11d77f(0x376,'\x72\x5a\x51\x55')](_0x3fd5f1,_0x355223,function(_0x480661,_0x12fbb4){const _0x4e7f1d=_0x11d77f;if(_0x480661&&_0xe5343a&&_0x4a0c62[_0x4e7f1d(0x403,'\x31\x5e\x46\x72')](_0x4fc961,_0x480661)){if(_0x4a0c62[_0x4e7f1d(0x330,'\x58\x6b\x79\x58')](_0x4a0c62[_0x4e7f1d(0x349,'\x28\x71\x55\x70')],_0x4e7f1d(0x43a,'\x64\x44\x59\x6b')))return _0x4a0c62['\x43\x50\x54\x58\x4f'](_0xe5343a,_0x355223,_0x558b63);else{const _0xae9866={};return _0xae9866[_0x4e7f1d(0x285,'\x50\x41\x52\x2a')]=_0x5877b0,_0xae9866[_0x4e7f1d(0x25e,'\x32\x78\x4b\x44')+_0x4e7f1d(0x42d,'\x25\x75\x48\x29')]=0x2710,_0xae9866['\x6b\x65\x65\x70\x41\x6c\x69\x76'+_0x4e7f1d(0x2c4,'\x49\x36\x71\x54')+_0x4e7f1d(0x318,'\x28\x71\x55\x70')]=0xea60,_0xae9866[_0x4e7f1d(0x312,'\x65\x75\x72\x37')+_0x4e7f1d(0x38c,'\x62\x4c\x54\x37')]=0xfde8,_0xae9866[_0x4e7f1d(0x410,'\x25\x75\x48\x29')+_0x4e7f1d(0x459,'\x32\x78\x4b\x44')]=0xfde8,_0xae9866[_0x4e7f1d(0x1e8,'\x28\x76\x4a\x4d')+'\x6e\x67']=0x1,new _0x53552a(_0xae9866);}}return _0x4a0c62[_0x4e7f1d(0x30f,'\x49\x36\x71\x54')](_0x558b63,_0x480661,_0x12fbb4);});}_0x2ba36c['\x72\x65\x6a\x65\x63\x74\x55\x6e'+_0x5b7a59(0x1b9,'\x45\x2a\x45\x73')+'\x65\x64']=!![];function _0x3d7292(){const _0x498a96=_0x5b7a59,_0x1839e6={};return _0x1839e6[_0x498a96(0x2fc,'\x45\x2a\x45\x73')]=_0x2ba36c,_0x1839e6[_0x498a96(0x32c,'\x33\x48\x73\x42')+_0x498a96(0x3c2,'\x33\x39\x47\x50')]=0x2710,_0x1839e6[_0x498a96(0x1cc,'\x33\x33\x56\x47')+_0x498a96(0x223,'\x6b\x61\x69\x47')+'\x6f\x75\x74']=0xea60,_0x1839e6[_0x498a96(0x1e1,'\x49\x54\x24\x64')+'\x69\x6d\x65\x6f\x75\x74']=0x7530,_0x1839e6[_0x498a96(0x351,'\x32\x78\x4b\x44')+_0x498a96(0x2e2,'\x26\x5e\x53\x67')]=0x7530,_0x1839e6[_0x498a96(0x431,'\x73\x38\x47\x33')+'\x6e\x67']=0x1,new _0x14b411(_0x1839e6);}function _0x2475da(){const _0x33933c=_0x5b7a59,_0xa1c652={};return _0xa1c652['\x63\x6f\x6e\x6e\x65\x63\x74']=_0x2ba36c,_0xa1c652['\x6b\x65\x65\x70\x41\x6c\x69\x76'+_0x33933c(0x1ce,'\x32\x42\x55\x6c')]=0x2710,_0xa1c652[_0x33933c(0x3b9,'\x5a\x78\x52\x4b')+_0x33933c(0x3f2,'\x31\x5e\x46\x72')+'\x6f\x75\x74']=0xea60,_0xa1c652['\x68\x65\x61\x64\x65\x72\x73\x54'+_0x33933c(0x3ff,'\x65\x75\x72\x37')]=0xfde8,_0xa1c652[_0x33933c(0x478,'\x58\x6b\x79\x58')+_0x33933c(0x35c,'\x75\x34\x4b\x4d')]=0xfde8,_0xa1c652[_0x33933c(0x384,'\x58\x6b\x79\x58')+'\x6e\x67']=0x1,new _0x14b411(_0xa1c652);}function _0x5a09e3(){const _0x2931ba=_0x5b7a59,_0x89a712={};return _0x89a712[_0x2931ba(0x1f4,'\x51\x67\x52\x62')]=_0x2ba36c,_0x89a712[_0x2931ba(0x317,'\x50\x41\x52\x2a')+_0x2931ba(0x357,'\x6b\x23\x5b\x25')]=0x2710,_0x89a712[_0x2931ba(0x3b4,'\x25\x75\x48\x29')+_0x2931ba(0x29f,'\x64\x44\x59\x6b')+_0x2931ba(0x2c1,'\x33\x4a\x21\x49')]=0xea60,_0x89a712[_0x2931ba(0x22f,'\x5a\x78\x52\x4b')+_0x2931ba(0x22c,'\x42\x45\x72\x34')]=0xafc8,_0x89a712[_0x2931ba(0x268,'\x49\x36\x71\x54')+_0x2931ba(0x3be,'\x32\x42\x55\x6c')]=0xafc8,_0x89a712[_0x2931ba(0x2e8,'\x51\x5d\x36\x64')+'\x6e\x67']=0x1,new _0x14b411(_0x89a712);}function _0x232f41(){const _0x53c797=_0x5b7a59,_0x4f6800={..._0x171fa3},_0x4d147a={..._0x171fa3},_0x2ecfcf={..._0x1cd153},_0x55252d={};return _0x55252d[_0x53c797(0x3e2,'\x31\x5e\x46\x72')+'\x69\x6c\x79']=_0x30229c,_0x55252d[_0x53c797(0x44f,'\x31\x5e\x46\x72')+_0x53c797(0x3e9,'\x6d\x72\x4b\x6f')]=_0x45db6d,_0x55252d[_0x53c797(0x407,'\x49\x36\x71\x54')+'\x74\x50\x72\x69\x6d\x61\x72\x79'+'\x43\x6f\x6e\x6e\x65\x63\x74\x54'+_0x53c797(0x1b2,'\x26\x5e\x53\x67')]=_0x3d86ea,_0x55252d[_0x53c797(0x3bf,'\x45\x2a\x45\x73')+_0x53c797(0x269,'\x32\x78\x4b\x44')]=_0x4f6800,_0x55252d[_0x53c797(0x3cd,'\x6b\x61\x69\x47')+_0x53c797(0x202,'\x49\x36\x71\x54')+'\x74\x73']=_0x4d147a,_0x55252d[_0x53c797(0x472,'\x78\x53\x59\x39')+_0x53c797(0x449,'\x49\x54\x24\x64')+_0x53c797(0x435,'\x26\x5e\x53\x67')]=_0xe5343a?_0x2ecfcf:null,_0x55252d;}const _0x5e01a5={};_0x5e01a5[_0x5b7a59(0x373,'\x6c\x34\x7a\x62')+_0x5b7a59(0x3b1,'\x75\x34\x4b\x4d')+'\x65\x64']=!![];const _0x3e843b=new _0x5eacaf[(_0x5b7a59(0x381,'\x49\x36\x71\x54'))](_0x5e01a5);let _0x21c093=_0x3d7292(),_0x3b37af=_0x2475da(),_0x691928=_0x5a09e3();function _0x4296bb(){const _0x237aa8=_0x5b7a59,_0x144415={'\x6b\x53\x42\x78\x59':function(_0x21781b,_0x300ffb){return _0x21781b(_0x300ffb);},'\x76\x5a\x74\x68\x78':function(_0x1699c7,_0x3d58ad){return _0x1699c7||_0x3d58ad;},'\x55\x6a\x44\x61\x61':function(_0x5aa697,_0xfa74cb){return _0x5aa697<=_0xfa74cb;},'\x77\x58\x44\x6d\x4a':function(_0x2f5587,_0xd9e1e4){return _0x2f5587+_0xd9e1e4;},'\x67\x61\x78\x56\x47':_0x237aa8(0x289,'\x6b\x63\x59\x43')+_0x237aa8(0x423,'\x50\x41\x52\x2a'),'\x58\x74\x42\x79\x6e':function(_0x424ee9){return _0x424ee9();},'\x55\x45\x4c\x50\x4b':function(_0x31fcc9){return _0x31fcc9();},'\x49\x77\x77\x70\x4d':_0x237aa8(0x419,'\x75\x34\x4b\x4d'),'\x71\x71\x6e\x55\x71':_0x237aa8(0x2f9,'\x65\x75\x72\x37'),'\x52\x6e\x7a\x78\x76':function(_0x2852c6,_0x4ae07d){return _0x2852c6===_0x4ae07d;},'\x57\x41\x71\x41\x48':_0x237aa8(0x457,'\x28\x76\x4a\x4d')},_0x19fb64=[_0x21c093,_0x3b37af,_0x691928];_0x21c093=_0x144415[_0x237aa8(0x233,'\x55\x37\x77\x49')](_0x3d7292),_0x3b37af=_0x144415[_0x237aa8(0x329,'\x49\x54\x24\x64')](_0x2475da),_0x691928=_0x144415['\x55\x45\x4c\x50\x4b'](_0x5a09e3);for(const _0x41c1a9 of _0x19fb64){if(_0x144415[_0x237aa8(0x3f6,'\x28\x33\x56\x50')]!==_0x144415[_0x237aa8(0x36f,'\x6d\x72\x4b\x6f')])try{const _0x4c2711=_0x41c1a9[_0x237aa8(0x401,'\x25\x75\x48\x29')]();if(_0x4c2711&&_0x144415[_0x237aa8(0x2f1,'\x58\x53\x37\x59')](typeof _0x4c2711[_0x237aa8(0x204,'\x32\x78\x4b\x44')],_0x144415[_0x237aa8(0x447,'\x6a\x58\x37\x23')]))_0x4c2711[_0x237aa8(0x3e4,'\x78\x53\x59\x39')](()=>{});}catch(_0x3392ee){}else{const _0x1dbcbf=_0x144415[_0x237aa8(0x34c,'\x28\x33\x56\x50')](_0x460348,_0x144415[_0x237aa8(0x2db,'\x5e\x37\x65\x73')](_0x464c43,''));if(_0x144415[_0x237aa8(0x426,'\x50\x5e\x68\x48')](_0x1dbcbf[_0x237aa8(0x1c9,'\x70\x52\x5b\x51')],_0x34eec1))return _0x1dbcbf;return _0x144415[_0x237aa8(0x36c,'\x75\x34\x4b\x4d')](_0x1dbcbf['\x73\x6c\x69\x63\x65'](-0x6a0+-0xa*-0x334+-0x21e*0xc,_0x467c8d),_0x144415[_0x237aa8(0x238,'\x42\x59\x37\x75')]);}}}function _0x1729da(_0x2c0801){const _0x12bc38=_0x5b7a59,_0x2efaf3={'\x72\x44\x5a\x73\x77':function(_0x45031d,_0x2e3c65){return _0x45031d(_0x2e3c65);},'\x4a\x78\x4e\x59\x47':function(_0x27f5bb,_0x281eec){return _0x27f5bb>=_0x281eec;},'\x76\x4a\x64\x69\x62':function(_0x4b6539,_0x4fbfa8){return _0x4b6539<_0x4fbfa8;},'\x47\x4a\x5a\x69\x4f':function(_0x5b4773,_0x4032e6){return _0x5b4773===_0x4032e6;},'\x68\x72\x78\x7a\x70':function(_0x5143ef,_0x34a1bf){return _0x5143ef===_0x34a1bf;},'\x57\x4d\x4d\x49\x65':function(_0x1a8041,_0x140fbb){return _0x1a8041===_0x140fbb;},'\x54\x4d\x71\x7a\x68':function(_0x30c39d,_0x100dcc){return _0x30c39d!==_0x100dcc;},'\x78\x4b\x74\x7a\x72':_0x12bc38(0x452,'\x42\x59\x37\x75'),'\x64\x41\x49\x41\x49':'\x77\x4e\x77\x65\x56','\x78\x61\x56\x6d\x54':_0x12bc38(0x3c9,'\x42\x45\x72\x34')+_0x12bc38(0x352,'\x51\x5d\x36\x64')+_0x12bc38(0x3ed,'\x33\x4a\x21\x49'),'\x71\x69\x42\x6a\x4d':function(_0x16d2e3,_0x4192ac){return _0x16d2e3===_0x4192ac;},'\x45\x5a\x43\x55\x57':'\x2f\x61\x32\x61\x2f\x6d\x61\x69'+_0x12bc38(0x2ec,'\x42\x45\x72\x34')+_0x12bc38(0x1b6,'\x32\x6d\x73\x6a')},_0x4d7003=process.env.EVOLVER_LONG_POLL_PATH||_0x12bc38(0x3eb,'\x32\x78\x4b\x44')+_0x12bc38(0x39c,'\x49\x36\x71\x54');try{const _0x5bb0c2=new URL(_0x2c0801);if(_0x5bb0c2[_0x12bc38(0x380,'\x33\x48\x73\x42')]===_0x4d7003){if(_0x2efaf3[_0x12bc38(0x38b,'\x28\x33\x56\x50')](_0x2efaf3[_0x12bc38(0x395,'\x45\x75\x41\x63')],_0x2efaf3[_0x12bc38(0x209,'\x33\x48\x73\x42')]))return _0x3b37af;else{if(!_0x568fc6)return![];const _0x5502da=_0x2efaf3[_0x12bc38(0x2be,'\x72\x5a\x51\x55')](_0x41c313,_0x21177b[_0x12bc38(0x45b,'\x51\x67\x52\x62')]||-0xaba+0x1e2+0x8d8),_0x2fad70=_0x2efaf3[_0x12bc38(0x1f8,'\x74\x59\x46\x78')](_0x42b7c7,_0x11b6cd);if(!_0x2fad70)return![];if(_0x1aa913(_0x4fdc28))return![];if(_0x2efaf3['\x4a\x78\x4e\x59\x47'](_0x5502da,0x2*0x8b2+-0x1*-0x48b+-0x1527)&&_0x2efaf3[_0x12bc38(0x298,'\x51\x5d\x36\x64')](_0x5502da,-0x1c8f+0x2*-0x6a3+-0x2b01*-0x1))return!![];return _0x2efaf3['\x47\x4a\x5a\x69\x4f'](_0x5502da,0x20db+-0x255c+-0x3*-0x206)||_0x2efaf3[_0x12bc38(0x442,'\x58\x77\x41\x6e')](_0x5502da,0xa93*0x1+0xac+-0x4*0x26b)||_0x2efaf3['\x57\x4d\x4d\x49\x65'](_0x5502da,-0x327*-0xb+0x1f5f+-0x4074)||_0x5502da===0x1246+0x1*0x1b25+-0x2bbe||_0x2efaf3[_0x12bc38(0x3d5,'\x78\x53\x59\x39')](_0x5502da,-0x1494+-0x5f0+0x8*0x38f);}}if(_0x5bb0c2[_0x12bc38(0x420,'\x28\x33\x56\x50')]===_0x2efaf3[_0x12bc38(0x33d,'\x74\x59\x46\x78')]||_0x2efaf3[_0x12bc38(0x392,'\x50\x5e\x68\x48')](_0x5bb0c2[_0x12bc38(0x33a,'\x33\x39\x47\x50')],_0x2efaf3[_0x12bc38(0x3ce,'\x42\x59\x37\x75')]))return _0x691928;}catch{}return _0x21c093;}let _0x10bdc4=_0xadd344;function _0x3e60d2(_0x239af3){_0x10bdc4=_0x239af3||_0xadd344;}const _0x5494f3=new Set([_0x5b7a59(0x2da,'\x6d\x72\x4b\x6f')+'\x45\x54',_0x5b7a59(0x1ea,'\x62\x4c\x54\x37')+_0x5b7a59(0x45d,'\x5d\x47\x69\x63'),_0x5b7a59(0x3db,'\x50\x5e\x68\x48'),_0x5b7a59(0x26b,'\x33\x39\x47\x50')+_0x5b7a59(0x3fd,'\x25\x75\x48\x29'),_0x5b7a59(0x27a,'\x6d\x72\x4b\x6f')+_0x5b7a59(0x2d2,'\x25\x75\x48\x29'),_0x5b7a59(0x3ea,'\x45\x75\x41\x63')+'\x4e',_0x5b7a59(0x1ca,'\x62\x4c\x54\x37')+'\x44',_0x5b7a59(0x23a,'\x6a\x58\x37\x23'),_0x5b7a59(0x2cf,'\x6b\x61\x69\x47')+'\x54',_0x5b7a59(0x347,'\x32\x6d\x73\x6a')+'\x52',_0x5b7a59(0x1fa,'\x74\x4a\x35\x54')+'\x53\x4f\x43\x4b\x45\x54',_0x5b7a59(0x3c0,'\x70\x52\x5b\x51')+_0x5b7a59(0x2b3,'\x26\x5e\x53\x67')+_0x5b7a59(0x467,'\x74\x59\x46\x78'),_0x5b7a59(0x337,'\x49\x36\x71\x54')+_0x5b7a59(0x20d,'\x64\x39\x5d\x64')+_0x5b7a59(0x41c,'\x6b\x61\x69\x47'),_0x5b7a59(0x2d1,'\x58\x77\x41\x6e')+_0x5b7a59(0x3a3,'\x70\x52\x5b\x51')+_0x5b7a59(0x2dc,'\x62\x4c\x54\x37')]);function _0x1884e5(_0x245c23){const _0x3908e3=_0x5b7a59;if(!_0x245c23)return![];if(_0x5494f3[_0x3908e3(0x1c4,'\x5e\x37\x65\x73')](_0x245c23[_0x3908e3(0x29d,'\x70\x52\x5b\x51')]))return!![];if(_0x245c23[_0x3908e3(0x31f,'\x45\x2a\x45\x73')]&&_0x5494f3[_0x3908e3(0x394,'\x32\x78\x4b\x44')](_0x245c23[_0x3908e3(0x32a,'\x6b\x23\x5b\x25')][_0x3908e3(0x2bb,'\x6d\x72\x4b\x6f')]))return!![];return![];}function _0x42f614(_0x2c18dc){const _0x2ed541=_0x5b7a59,_0x1cad66={'\x6b\x52\x4f\x42\x61':function(_0x5a37d7,_0x5d13cc){return _0x5a37d7 instanceof _0x5d13cc;},'\x46\x4a\x49\x67\x73':function(_0x1f7e02,_0x21bd1b){return _0x1f7e02===_0x21bd1b;},'\x56\x79\x44\x5a\x4a':_0x2ed541(0x28a,'\x50\x41\x52\x2a')+_0x2ed541(0x254,'\x31\x5e\x46\x72'),'\x52\x7a\x4f\x62\x43':function(_0x4ea77a,_0x22c9b7){return _0x4ea77a(_0x22c9b7);},'\x41\x41\x49\x45\x69':'\x41\x62\x6f\x72\x74\x45\x72\x72'+'\x6f\x72','\x56\x48\x6c\x6c\x65':_0x2ed541(0x36d,'\x33\x33\x56\x47')+'\x72\x72\x6f\x72','\x59\x56\x41\x54\x79':function(_0x42b1ab,_0x2d0e36){return _0x42b1ab===_0x2d0e36;}};if(!_0x2c18dc)return![];if(_0x1cad66[_0x2ed541(0x34b,'\x74\x59\x46\x78')](_0x2c18dc,_0x240f4f)||_0x1cad66[_0x2ed541(0x28e,'\x6d\x72\x4b\x6f')](_0x2c18dc[_0x2ed541(0x1f2,'\x46\x35\x35\x4b')],_0x1cad66[_0x2ed541(0x444,'\x64\x44\x59\x6b')]))return!![];if(_0x1cad66[_0x2ed541(0x221,'\x45\x75\x41\x63')](_0x1884e5,_0x2c18dc))return!![];if(_0x1cad66[_0x2ed541(0x26d,'\x70\x52\x5b\x51')](_0x2c18dc[_0x2ed541(0x31c,'\x58\x6b\x79\x58')],_0x1cad66['\x41\x41\x49\x45\x69'])||_0x2c18dc['\x6e\x61\x6d\x65']===_0x1cad66[_0x2ed541(0x417,'\x33\x39\x47\x50')])return!![];if(_0x2c18dc[_0x2ed541(0x28c,'\x73\x48\x4f\x37')]&&(_0x1cad66['\x59\x56\x41\x54\x79'](_0x2c18dc[_0x2ed541(0x2b6,'\x46\x35\x35\x4b')][_0x2ed541(0x477,'\x6b\x23\x5b\x25')],_0x1cad66[_0x2ed541(0x335,'\x32\x78\x4b\x44')])||_0x2c18dc[_0x2ed541(0x31f,'\x45\x2a\x45\x73')][_0x2ed541(0x374,'\x58\x77\x41\x6e')]===_0x1cad66[_0x2ed541(0x1e2,'\x26\x5e\x53\x67')]))return!![];return![];}function _0x3b97e1(_0x4cdb94){const _0x3c2e97=_0x5b7a59,_0x47b57e={};_0x47b57e[_0x3c2e97(0x369,'\x78\x53\x59\x39')]=function(_0x12dc57,_0x26f479){return _0x12dc57-_0x26f479;};const _0x130f4b=_0x47b57e,_0x1a8903=Math[_0x3c2e97(0x2d5,'\x65\x75\x72\x37')](-0x2239+-0x13c1*0x1+0xd*0x427,Number(_0x4cdb94)||-0x4cd*-0x1+0x1*-0x10ba+0x2*0x5f7);return Math[_0x3c2e97(0x2af,'\x31\x5e\x46\x72')](_0x2eda98*Math[_0x3c2e97(0x1b0,'\x6b\x23\x5b\x25')](0x884+-0x1*-0x315+0xb97*-0x1,_0x130f4b[_0x3c2e97(0x35d,'\x49\x54\x24\x64')](_0x1a8903,0x26be+-0x1b0*-0x6+-0x30dd)),_0x88dbc6);}function _0x587a13(_0x4ffd10){const _0x2797d5=_0x5b7a59,_0x483153={'\x7a\x44\x6d\x43\x76':function(_0x56daa0,_0x4a94af){return _0x56daa0+_0x4a94af;},'\x7a\x42\x6e\x62\x70':_0x2797d5(0x35b,'\x28\x33\x56\x50')+'\x68\x5d\x20\x48\x75\x62\x20\x55'+_0x2797d5(0x43c,'\x5a\x78\x52\x4b')+_0x2797d5(0x2b4,'\x5d\x47\x69\x63')+_0x2797d5(0x27d,'\x51\x5d\x36\x64'),'\x50\x66\x55\x76\x4e':_0x2797d5(0x283,'\x33\x33\x56\x47')+_0x2797d5(0x30e,'\x6a\x58\x37\x23')+'\x4c\x4c\x4f\x57\x5f\x49\x4e\x53'+_0x2797d5(0x23c,'\x28\x33\x56\x50')+_0x2797d5(0x275,'\x6c\x34\x7a\x62')+_0x2797d5(0x479,'\x73\x48\x4f\x37')+_0x2797d5(0x3f9,'\x72\x5a\x51\x55')+_0x2797d5(0x2c5,'\x70\x52\x5b\x51')+_0x2797d5(0x45f,'\x62\x4c\x54\x37'),'\x4b\x4a\x4c\x54\x41':function(_0x2aa411,_0x3e7761){return _0x2aa411!==_0x3e7761;},'\x5a\x63\x75\x63\x72':_0x2797d5(0x2fe,'\x51\x5d\x36\x64'),'\x4c\x70\x41\x51\x56':function(_0x64b781,_0x435e30){return _0x64b781+_0x435e30;},'\x49\x59\x43\x64\x48':function(_0x2844c5,_0x3f7b7c){return _0x2844c5+_0x3f7b7c;},'\x52\x75\x79\x47\x78':'\x5b\x68\x75\x62\x46\x65\x74\x63'+_0x2797d5(0x397,'\x28\x76\x4a\x4d')+'\x52\x4c\x20\x6d\x75\x73\x74\x20'+_0x2797d5(0x253,'\x64\x44\x59\x6b')+_0x2797d5(0x1b8,'\x25\x75\x48\x29')+_0x2797d5(0x3ae,'\x45\x2a\x45\x73'),'\x58\x4d\x4b\x4b\x59':function(_0x312339,_0x4f11ef){return _0x312339!==_0x4f11ef;},'\x70\x51\x5a\x64\x44':function(_0x189c06,_0x1b334a,_0x5405f4){return _0x189c06(_0x1b334a,_0x5405f4);},'\x5a\x75\x4d\x52\x65':_0x2797d5(0x3f8,'\x6b\x61\x69\x47'),'\x59\x57\x4d\x58\x6b':function(_0x3e889e,_0x121d19){return _0x3e889e===_0x121d19;},'\x48\x42\x68\x4e\x4f':_0x2797d5(0x2e1,'\x45\x2a\x45\x73'),'\x61\x50\x4c\x4f\x6e':_0x2797d5(0x3df,'\x32\x78\x4b\x44'),'\x74\x51\x54\x6c\x42':_0x2797d5(0x242,'\x6b\x61\x69\x47'),'\x74\x48\x6d\x6c\x58':_0x2797d5(0x3cc,'\x42\x59\x37\x75')+_0x2797d5(0x3b2,'\x6d\x72\x4b\x6f'),'\x45\x6c\x76\x53\x44':_0x2797d5(0x43b,'\x32\x6d\x73\x6a')+_0x2797d5(0x334,'\x50\x41\x52\x2a'),'\x44\x75\x79\x78\x41':function(_0x2ebe36,_0x1da909){return _0x2ebe36===_0x1da909;},'\x4f\x49\x58\x67\x49':_0x2797d5(0x237,'\x6b\x63\x59\x43'),'\x56\x48\x4b\x49\x6a':_0x2797d5(0x300,'\x6a\x58\x37\x23'),'\x71\x63\x4f\x48\x6f':function(_0x482b40,_0x80c55c){return _0x482b40(_0x80c55c);},'\x58\x47\x56\x4a\x59':function(_0x12a8f7,_0x19452a){return _0x12a8f7||_0x19452a;}},_0x4769ce=_0x4ffd10&&_0x4ffd10[_0x2797d5(0x46f,'\x5a\x78\x52\x4b')];if(!_0x4769ce)return'';let _0x143307='';try{if(_0x483153['\x58\x4d\x4b\x4b\x59'](_0x2797d5(0x45a,'\x75\x34\x4b\x4d'),_0x483153[_0x2797d5(0x1e5,'\x73\x38\x47\x33')]))_0x676af7[_0x148b2e]=_0x56c88c;else{if(_0x483153[_0x2797d5(0x20a,'\x49\x36\x71\x54')](typeof _0x4769ce[_0x2797d5(0x354,'\x74\x4a\x35\x54')],_0x483153[_0x2797d5(0x2fd,'\x51\x5d\x36\x64')])){if(_0x483153[_0x2797d5(0x454,'\x64\x44\x59\x6b')]===_0x483153[_0x2797d5(0x1be,'\x5d\x47\x69\x63')]){let _0x1a1ccc;try{_0x1a1ccc=new _0x315189(_0x52ecdf);}catch{throw new _0x432c6d(_0x483153['\x7a\x44\x6d\x43\x76'](_0x483153[_0x2797d5(0x470,'\x64\x39\x5d\x64')](_0x483153[_0x2797d5(0x377,'\x58\x77\x41\x6e')](_0x483153[_0x2797d5(0x24f,'\x35\x44\x64\x72')],_0x40a921[_0x2797d5(0x43d,'\x32\x6d\x73\x6a')+'\x79'](_0x521952)),'\x2e\x20'),_0x483153[_0x2797d5(0x1b7,'\x51\x67\x52\x62')]));}if(_0x483153[_0x2797d5(0x2e7,'\x72\x5a\x51\x55')](_0x1a1ccc[_0x2797d5(0x299,'\x62\x4c\x54\x37')],_0x483153[_0x2797d5(0x3c1,'\x50\x41\x52\x2a')]))throw new _0x563402(_0x483153[_0x2797d5(0x2bf,'\x6a\x58\x37\x23')](_0x483153[_0x2797d5(0x2c6,'\x35\x44\x64\x72')](_0x483153[_0x2797d5(0x37b,'\x74\x4a\x35\x54')](_0x483153[_0x2797d5(0x2d8,'\x33\x48\x73\x42')],_0x367e60[_0x2797d5(0x1bf,'\x58\x53\x37\x59')+'\x79'](_0xa758ba)),'\x2e\x20'),_0x483153[_0x2797d5(0x236,'\x42\x59\x37\x75')]));}else _0x143307=_0x4769ce[_0x2797d5(0x3da,'\x33\x39\x47\x50')](_0x483153[_0x2797d5(0x1f0,'\x78\x53\x59\x39')])||_0x4769ce[_0x2797d5(0x20f,'\x64\x39\x5d\x64')](_0x483153['\x45\x6c\x76\x53\x44'])||'';}else{if(_0x483153[_0x2797d5(0x25a,'\x64\x44\x59\x6b')](typeof _0x4769ce,_0x483153[_0x2797d5(0x26a,'\x32\x6d\x73\x6a')])){if(_0x483153['\x56\x48\x4b\x49\x6a']!==_0x483153[_0x2797d5(0x411,'\x49\x54\x24\x64')]){const _0x316f3d=_0x483153[_0x2797d5(0x214,'\x32\x42\x55\x6c')](_0x4aad84,_0xfe570f)?_0x13a8e4:_0x17bed9[_0x2797d5(0x2f3,'\x46\x35\x35\x4b')];return _0x483153[_0x2797d5(0x265,'\x31\x5e\x46\x72')](_0x316f3d,_0x109b64,_0x14d142);}else _0x143307=_0x4769ce[_0x483153[_0x2797d5(0x2b2,'\x50\x5e\x68\x48')]]||_0x4769ce[_0x2797d5(0x29e,'\x51\x67\x52\x62')+_0x2797d5(0x422,'\x6c\x34\x7a\x62')]||'';}}}}catch(_0xb4e074){_0x143307='';}return _0x483153[_0x2797d5(0x42c,'\x49\x54\x24\x64')](String,_0x483153[_0x2797d5(0x25b,'\x64\x44\x59\x6b')](_0x143307,''))['\x74\x6f\x4c\x6f\x77\x65\x72\x43'+'\x61\x73\x65']();}function _0x3d9220(_0x1add0e){const _0x112515=_0x5b7a59,_0x16c03b={'\x6f\x68\x4c\x59\x6a':function(_0x4ba3bf,_0x53bfcb){return _0x4ba3bf(_0x53bfcb);}},_0x38ad28=_0x16c03b[_0x112515(0x40b,'\x28\x33\x56\x50')](_0x587a13,_0x1add0e);if(!_0x38ad28)return!![];return _0x38ad28[_0x112515(0x1cf,'\x25\x75\x48\x29')](_0x112515(0x321,'\x45\x2a\x45\x73'));}function _0x46ac3b(_0x16117c){const _0xf56ce8=_0x5b7a59,_0x1d97a0={'\x43\x7a\x6b\x41\x64':function(_0x563d7e,_0x213e5b){return _0x563d7e(_0x213e5b);},'\x55\x62\x72\x78\x4f':function(_0x3314e8,_0x37886b){return _0x3314e8(_0x37886b);},'\x6e\x45\x61\x6b\x72':function(_0x1ff724,_0x4ca683){return _0x1ff724>=_0x4ca683;},'\x50\x54\x4c\x79\x58':function(_0x3d3f76,_0x17cc23){return _0x3d3f76<_0x17cc23;},'\x63\x59\x58\x63\x47':function(_0x2beb55,_0x22011e){return _0x2beb55===_0x22011e;},'\x4f\x49\x63\x63\x50':function(_0x2792c1,_0x5c650a){return _0x2792c1===_0x5c650a;},'\x71\x79\x50\x62\x49':function(_0x4ccfbf,_0x1c891e){return _0x4ccfbf>=_0x1c891e;}};if(!_0x16117c)return![];const _0x257842=_0x1d97a0[_0xf56ce8(0x379,'\x32\x78\x4b\x44')](Number,_0x16117c[_0xf56ce8(0x2a0,'\x6b\x23\x5b\x25')]||-0x6d3+-0x1ddf+0x24b2),_0x265f75=_0x1d97a0[_0xf56ce8(0x3ec,'\x25\x75\x48\x29')](_0x587a13,_0x16117c);if(!_0x265f75)return![];if(_0x3d9220(_0x16117c))return![];if(_0x1d97a0[_0xf56ce8(0x319,'\x31\x5e\x46\x72')](_0x257842,-0x14ae+-0xf6f+0x24e5)&&_0x1d97a0[_0xf56ce8(0x23d,'\x5a\x78\x52\x4b')](_0x257842,-0x19*-0xf7+0x1*-0x238f+-0x21a*-0x6))return!![];return _0x1d97a0[_0xf56ce8(0x342,'\x72\x5a\x51\x55')](_0x257842,0x20cf+0x2ab*0xb+0x3c97*-0x1)||_0x1d97a0[_0xf56ce8(0x471,'\x75\x34\x4b\x4d')](_0x257842,-0x1*0x2129+0xe06+0x14b6*0x1)||_0x1d97a0[_0xf56ce8(0x297,'\x33\x33\x56\x47')](_0x257842,-0x25c0+-0x4*0x15d+0x2ccc)||_0x1d97a0[_0xf56ce8(0x2d4,'\x62\x4c\x54\x37')](_0x257842,-0x172a+-0xb06+0x23dd)||_0x1d97a0[_0xf56ce8(0x280,'\x6a\x58\x37\x23')](_0x257842,-0x1*0x19a9+0x2*-0x10c1+-0x3d1f*-0x1);}async function _0xc3269d(_0x1d9019){const _0x39a979=_0x5b7a59,_0x442775={};_0x442775[_0x39a979(0x368,'\x28\x76\x4a\x4d')]=function(_0x5e7220,_0x1ee8f7){return _0x5e7220===_0x1ee8f7;};const _0x21b2a0=_0x442775;try{_0x1d9019&&_0x1d9019[_0x39a979(0x3d0,'\x28\x76\x4a\x4d')]&&_0x21b2a0[_0x39a979(0x393,'\x6d\x72\x4b\x6f')](typeof _0x1d9019['\x62\x6f\x64\x79'][_0x39a979(0x3ab,'\x31\x5e\x46\x72')],_0x39a979(0x436,'\x28\x33\x56\x50'))&&await _0x1d9019[_0x39a979(0x30d,'\x26\x5e\x53\x67')][_0x39a979(0x2f6,'\x28\x76\x4a\x4d')]()[_0x39a979(0x1ed,'\x32\x42\x55\x6c')](()=>{});}catch(_0x10aa69){}}function _0x121766(_0x21ec36,_0x1386d0){const _0x19c733=_0x5b7a59,_0x298548={'\x46\x6f\x58\x59\x6f':function(_0x396828,_0xb9c295){return _0x396828||_0xb9c295;},'\x53\x4e\x69\x78\x68':_0x19c733(0x2e0,'\x55\x37\x77\x49'),'\x5a\x58\x41\x72\x7a':function(_0x4d3896,_0x4fc742){return _0x4d3896(_0x4fc742);},'\x4d\x51\x50\x55\x4d':_0x19c733(0x259,'\x49\x36\x71\x54')+'\x6e\x63\x61\x74\x65\x64\x5d'},_0x12f262=Buffer['\x66\x72\x6f\x6d'](String(_0x298548[_0x19c733(0x1ef,'\x49\x54\x24\x64')](_0x21ec36,'')),_0x298548['\x53\x4e\x69\x78\x68']);if(_0x12f262['\x6c\x65\x6e\x67\x74\x68']<=_0x1386d0)return _0x298548['\x5a\x58\x41\x72\x7a'](String,_0x298548[_0x19c733(0x464,'\x32\x6d\x73\x6a')](_0x21ec36,''));return _0x12f262[_0x19c733(0x46b,'\x74\x59\x46\x78')](0x28a+-0x1*0x492+0x1a*0x14,_0x1386d0)[_0x19c733(0x445,'\x74\x59\x46\x78')](_0x298548[_0x19c733(0x267,'\x45\x2a\x45\x73')])+_0x298548[_0x19c733(0x2ba,'\x45\x2a\x45\x73')];}function _0x4fa99c(_0x3292bd,_0x153294){const _0x2befbd=_0x5b7a59,_0x2669ac={'\x48\x6a\x51\x7a\x59':function(_0x5713a2,_0x4605a9){return _0x5713a2(_0x4605a9);},'\x76\x6a\x53\x55\x50':function(_0x5e97f1,_0x48b37a){return _0x5e97f1||_0x48b37a;},'\x4b\x41\x61\x52\x59':function(_0x4694da,_0x23e6ca){return _0x4694da<=_0x23e6ca;},'\x65\x48\x43\x79\x7a':_0x2befbd(0x3f5,'\x45\x2a\x45\x73')+_0x2befbd(0x218,'\x28\x71\x55\x70')},_0x5015e5=_0x2669ac[_0x2befbd(0x39e,'\x25\x75\x48\x29')](String,_0x2669ac[_0x2befbd(0x2e5,'\x33\x39\x47\x50')](_0x3292bd,''));if(_0x2669ac[_0x2befbd(0x2d7,'\x28\x33\x56\x50')](_0x5015e5[_0x2befbd(0x3d8,'\x28\x71\x55\x70')],_0x153294))return _0x5015e5;return _0x5015e5[_0x2befbd(0x372,'\x6a\x58\x37\x23')](0x102b+-0x24c8+-0x1*-0x149d,_0x153294)+_0x2669ac[_0x2befbd(0x37a,'\x72\x5a\x51\x55')];}function _0x2a7baf(_0x2c5f21){const _0x271ea6=_0x5b7a59,_0x2c4c14={'\x73\x4b\x76\x49\x77':function(_0x4eb43e,_0x3f7294){return _0x4eb43e===_0x3f7294;},'\x4e\x75\x7a\x45\x52':function(_0x5cc2a7,_0x157967){return _0x5cc2a7===_0x157967;},'\x46\x76\x58\x63\x66':_0x271ea6(0x35a,'\x5e\x37\x65\x73'),'\x77\x51\x62\x65\x53':_0x271ea6(0x415,'\x58\x6b\x79\x58'),'\x65\x4e\x61\x75\x64':function(_0x5d6ec1,_0x43773d){return _0x5d6ec1===_0x43773d;},'\x6d\x6b\x44\x48\x70':_0x271ea6(0x39f,'\x45\x75\x41\x63'),'\x79\x52\x59\x43\x71':function(_0x314cd3,_0xcc373d){return _0x314cd3!==_0xcc373d;},'\x67\x6e\x48\x58\x41':_0x271ea6(0x37e,'\x78\x53\x59\x39'),'\x76\x64\x71\x49\x46':function(_0x3c2580,_0xea5e42){return _0x3c2580!==_0xea5e42;},'\x65\x6c\x6e\x62\x42':_0x271ea6(0x1d8,'\x78\x53\x59\x39'),'\x41\x61\x76\x61\x7a':function(_0x369f16,_0x4a9c34){return _0x369f16(_0x4a9c34);}};if(Array[_0x271ea6(0x476,'\x6c\x34\x7a\x62')](_0x2c5f21))return _0x2c4c14['\x65\x4e\x61\x75\x64'](_0x2c4c14[_0x271ea6(0x382,'\x32\x78\x4b\x44')],_0x2c4c14[_0x271ea6(0x363,'\x78\x53\x59\x39')])?_0x2c5f21[_0x271ea6(0x33e,'\x75\x34\x4b\x4d')](function(_0x42be59){const _0x2acc88=_0x271ea6;if(_0x2c4c14[_0x2acc88(0x21d,'\x55\x37\x77\x49')](_0x2c4c14[_0x2acc88(0x456,'\x6d\x72\x4b\x6f')],_0x2c4c14[_0x2acc88(0x326,'\x31\x5e\x46\x72')])){const _0x369312=_0xe03008[_0x2acc88(0x367,'\x5a\x78\x52\x4b')]();if(_0x369312&&mgJigq[_0x2acc88(0x38d,'\x65\x75\x72\x37')](typeof _0x369312[_0x2acc88(0x1ad,'\x5a\x78\x52\x4b')],_0x2acc88(0x320,'\x25\x75\x48\x29')))_0x369312[_0x2acc88(0x244,'\x33\x33\x56\x47')](()=>{});}else return _0x2a7baf(_0x42be59);}):_0xfa115a;if(!_0x2c5f21||_0x2c4c14[_0x271ea6(0x463,'\x28\x33\x56\x50')](typeof _0x2c5f21,_0x271ea6(0x37c,'\x72\x5a\x51\x55')))return _0x2c5f21;const _0x23a374={};for(const [_0x348bdc,_0x336c94]of Object[_0x271ea6(0x3e5,'\x55\x37\x77\x49')](_0x2c5f21)){if(_0x2c4c14[_0x271ea6(0x208,'\x55\x37\x77\x49')]!==_0x2c4c14[_0x271ea6(0x21c,'\x28\x71\x55\x70')])_0x451936=new _0x9d9cde(_0x441e11);else{if(_0x7de7d8[_0x271ea6(0x278,'\x73\x38\x47\x33')](_0x348bdc)){if(_0x2c4c14[_0x271ea6(0x413,'\x46\x35\x35\x4b')](_0x2c4c14['\x65\x6c\x6e\x62\x42'],_0x271ea6(0x3fe,'\x45\x75\x41\x63')))_0x23a374[_0x348bdc]=_0x44f564;else{const _0x5e09d5=_0x4dd52c[_0x271ea6(0x2e6,'\x58\x6b\x79\x58')](0xb17+-0x7*-0xb5+-0x100a*0x1,_0x1761bf);_0x28b051[_0x271ea6(0x250,'\x5e\x37\x65\x73')](_0x5e09d5),_0x3b40c6+=_0x5e09d5[_0x271ea6(0x240,'\x73\x38\x47\x33')+'\x74\x68'];}}else _0x23a374[_0x348bdc]=_0x2c4c14[_0x271ea6(0x1b5,'\x6b\x63\x59\x43')](_0x2a7baf,_0x336c94);}}return _0x23a374;}function _0x301546(_0x3fc217,_0x1265ec={}){const _0x41f3ec=_0x5b7a59,_0x317e42={'\x65\x58\x6f\x53\x64':function(_0x5d6b90,_0x1c6a3c){return _0x5d6b90(_0x1c6a3c);},'\x55\x73\x72\x6d\x4f':function(_0x5d8034,_0x3c993d){return _0x5d8034||_0x3c993d;},'\x59\x55\x6e\x73\x4b':function(_0x235cef,_0x55b936){return _0x235cef(_0x55b936);},'\x7a\x73\x62\x42\x76':function(_0x11acf7,_0x47867c){return _0x11acf7>=_0x47867c;},'\x67\x61\x51\x76\x76':function(_0x256329,_0x49090f){return _0x256329(_0x49090f);},'\x4c\x50\x76\x51\x68':function(_0x508881,_0x2631b5){return _0x508881(_0x2631b5);},'\x6a\x68\x64\x6e\x69':function(_0x61e9a0,_0x457990,_0x2b67b9){return _0x61e9a0(_0x457990,_0x2b67b9);}};let _0x416013=_0x317e42[_0x41f3ec(0x23f,'\x6b\x63\x59\x43')](String,_0x317e42[_0x41f3ec(0x42b,'\x25\x75\x48\x29')](_0x3fc217,''));const _0x1d2617=_0x317e42[_0x41f3ec(0x344,'\x58\x53\x37\x59')](Number,_0x1265ec[_0x41f3ec(0x203,'\x45\x2a\x45\x73')]),_0x5cadff=Number['\x69\x73\x46\x69\x6e\x69\x74\x65'](_0x1d2617)&&_0x317e42[_0x41f3ec(0x2d6,'\x33\x4a\x21\x49')](_0x1d2617,-0x4c*-0x2+-0x15*-0x123+-0x1877)?_0x1d2617:_0x2d4fb8;try{_0x416013=JSON[_0x41f3ec(0x409,'\x74\x4a\x35\x54')+'\x79'](_0x317e42[_0x41f3ec(0x270,'\x6c\x34\x7a\x62')](_0x2a7baf,JSON[_0x41f3ec(0x29b,'\x32\x78\x4b\x44')](_0x416013)));}catch(_0x5a9079){}return _0x416013=_0x317e42[_0x41f3ec(0x3d9,'\x49\x36\x71\x54')](_0x5f042e,_0x416013),_0x317e42[_0x41f3ec(0x328,'\x50\x41\x52\x2a')](_0x4fa99c,_0x416013,_0x5cadff);}function _0x5ed0(_0x460348,_0x464c43){_0x460348=_0x460348-(0x1bcc+-0xd55+-0xcca);const _0x34eec1=_0x4743();let _0x467c8d=_0x34eec1[_0x460348];if(_0x5ed0['\x46\x47\x45\x73\x4b\x72']===undefined){var _0x214645=function(_0xc774e7){const _0x4a031a='\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 _0x4f592f='',_0x4c9bcb='',_0x2fbfca=_0x4f592f+_0x214645,_0x2a899b=(''+function(){return 0xd7*0x17+0x269c+-0x1*0x39ed;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0x1*0x20c8+-0x49*0x7+0x18a*-0x14);for(let _0x2f5e54=-0x9*-0xbd+0x1613+-0x1cb8,_0x5cfc53,_0x14d1b6,_0xa35394=0x1636+-0x863+-0xdd3;_0x14d1b6=_0xc774e7['\x63\x68\x61\x72\x41\x74'](_0xa35394++);~_0x14d1b6&&(_0x5cfc53=_0x2f5e54%(0x92b+0x1*-0x13d9+-0x4a*-0x25)?_0x5cfc53*(0x2028+-0x1*-0x20b5+-0x409d)+_0x14d1b6:_0x14d1b6,_0x2f5e54++%(0x4c1*0x4+-0x1*-0x3c9+0x16c9*-0x1))?_0x4f592f+=_0x2a899b||_0x2fbfca['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xa35394+(-0xff2+0x1746+0x6*-0x137))-(0x2*0x6fd+0x876+-0x1666*0x1)!==-0x29*0x5d+-0x74c*0x1+0x1631?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x118*-0x4+-0x1c78+0x1917&_0x5cfc53>>(-(0x18c2+-0x16e*0x6+-0x102c)*_0x2f5e54&0x181+-0x25ab+-0x1218*-0x2)):_0x2f5e54:-0x4*0x5c6+0xbab+0xb6d){_0x14d1b6=_0x4a031a['\x69\x6e\x64\x65\x78\x4f\x66'](_0x14d1b6);}for(let _0xeca15d=-0x16*-0x40+0x1d34+-0x8ad*0x4,_0x55d4b9=_0x4f592f['\x6c\x65\x6e\x67\x74\x68'];_0xeca15d<_0x55d4b9;_0xeca15d++){_0x4c9bcb+='\x25'+('\x30\x30'+_0x4f592f['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xeca15d)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x14a3+0x3f*0x91+-0xefc))['\x73\x6c\x69\x63\x65'](-(0x174b+-0x1110+-0x639*0x1));}return decodeURIComponent(_0x4c9bcb);};const _0x320c5c=function(_0x123d90,_0x205be7){let _0xd07c07=[],_0x5b0ab0=0x1e73*0x1+0x1d*-0xfb+0x2b*-0xc,_0x27584e,_0x506749='';_0x123d90=_0x214645(_0x123d90);let _0xee8bd3;for(_0xee8bd3=-0x1b98+-0xa66+0x6*0x655;_0xee8bd3<0x31*0x76+-0xb4d+0x1*-0xa49;_0xee8bd3++){_0xd07c07[_0xee8bd3]=_0xee8bd3;}for(_0xee8bd3=-0x304*-0x8+-0x1*0x5f3+-0x122d;_0xee8bd3<0x3b0*-0x2+0x1*-0x12c7+-0x14b*-0x15;_0xee8bd3++){_0x5b0ab0=(_0x5b0ab0+_0xd07c07[_0xee8bd3]+_0x205be7['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xee8bd3%_0x205be7['\x6c\x65\x6e\x67\x74\x68']))%(-0x223b+-0x4*0x73c+0x402b),_0x27584e=_0xd07c07[_0xee8bd3],_0xd07c07[_0xee8bd3]=_0xd07c07[_0x5b0ab0],_0xd07c07[_0x5b0ab0]=_0x27584e;}_0xee8bd3=0x15d1+-0x132f+-0x1*0x2a2,_0x5b0ab0=0x1*0x17da+-0x2b*0x6e+0x560*-0x1;for(let _0x560905=-0xad1+-0x1d*0x107+0x289c;_0x560905<_0x123d90['\x6c\x65\x6e\x67\x74\x68'];_0x560905++){_0xee8bd3=(_0xee8bd3+(-0x2650+-0x322*0xa+0x7bd*0x9))%(0x140+-0x17fb+0x17bb),_0x5b0ab0=(_0x5b0ab0+_0xd07c07[_0xee8bd3])%(0xa0+0x2*0xee7+-0x1d6e),_0x27584e=_0xd07c07[_0xee8bd3],_0xd07c07[_0xee8bd3]=_0xd07c07[_0x5b0ab0],_0xd07c07[_0x5b0ab0]=_0x27584e,_0x506749+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x123d90['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x560905)^_0xd07c07[(_0xd07c07[_0xee8bd3]+_0xd07c07[_0x5b0ab0])%(-0x2591*-0x1+0xde8+-0x3b*0xdb)]);}return _0x506749;};_0x5ed0['\x4b\x77\x46\x6c\x6c\x70']=_0x320c5c,_0x5ed0['\x4e\x55\x4f\x65\x4a\x4d']={},_0x5ed0['\x46\x47\x45\x73\x4b\x72']=!![];}const _0xf89289=_0x34eec1[0x9e+0x1*-0x5db+0x1*0x53d],_0x2f5812=_0x460348+_0xf89289,_0xbf2fce=_0x5ed0['\x4e\x55\x4f\x65\x4a\x4d'][_0x2f5812];if(!_0xbf2fce){if(_0x5ed0['\x78\x47\x6a\x72\x50\x61']===undefined){const _0x1a7bad=function(_0x2e8d7e){this['\x64\x63\x6e\x45\x52\x46']=_0x2e8d7e,this['\x4a\x56\x43\x65\x51\x6d']=[-0x1*-0x166b+0x1e46+-0x34b0,-0x207*0x1+0x53*0x47+-0x2*0xa7f,0x18*-0xda+0xe*-0x146+0x2644],this['\x65\x7a\x67\x65\x50\x6e']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x6a\x6d\x5a\x52\x56\x77']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x6f\x4c\x53\x48\x78\x4b']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x1a7bad['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x62\x48\x66\x6f\x67\x59']=function(){const _0x4db5d3=new RegExp(this['\x6a\x6d\x5a\x52\x56\x77']+this['\x6f\x4c\x53\x48\x78\x4b']),_0x151496=_0x4db5d3['\x74\x65\x73\x74'](this['\x65\x7a\x67\x65\x50\x6e']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x4a\x56\x43\x65\x51\x6d'][0x72a*-0x4+0x5d6+0x16d3*0x1]:--this['\x4a\x56\x43\x65\x51\x6d'][-0x46c*-0x4+0x2342*0x1+0x8d3*-0x6];return this['\x44\x57\x73\x53\x63\x44'](_0x151496);},_0x1a7bad['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x44\x57\x73\x53\x63\x44']=function(_0x2c1213){if(!Boolean(~_0x2c1213))return _0x2c1213;return this['\x54\x71\x74\x53\x6f\x54'](this['\x64\x63\x6e\x45\x52\x46']);},_0x1a7bad['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x54\x71\x74\x53\x6f\x54']=function(_0x5d39af){for(let _0x2974be=0x1fda+-0xdf*-0x11+-0x2ea9,_0x1e6539=this['\x4a\x56\x43\x65\x51\x6d']['\x6c\x65\x6e\x67\x74\x68'];_0x2974be<_0x1e6539;_0x2974be++){this['\x4a\x56\x43\x65\x51\x6d']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x1e6539=this['\x4a\x56\x43\x65\x51\x6d']['\x6c\x65\x6e\x67\x74\x68'];}return _0x5d39af(this['\x4a\x56\x43\x65\x51\x6d'][0x1a5c+-0x28c+0x10*-0x17d]);},(''+function(){return 0x2*-0xc72+-0x3*-0xc7+0xa5*0x23;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x82*0x46+0x5f*0x20+0x1*-0x2f6b)&&new _0x1a7bad(_0x5ed0)['\x62\x48\x66\x6f\x67\x59'](),_0x5ed0['\x78\x47\x6a\x72\x50\x61']=!![];}_0x467c8d=_0x5ed0['\x4b\x77\x46\x6c\x6c\x70'](_0x467c8d,_0x464c43),_0x5ed0['\x4e\x55\x4f\x65\x4a\x4d'][_0x2f5812]=_0x467c8d;}else _0x467c8d=_0xbf2fce;return _0x467c8d;}async function _0x9ff529(_0x493744,_0x525670={}){const _0x1a0fbf=_0x5b7a59,_0x47b29f={'\x76\x69\x72\x57\x77':function(_0x246c0e,_0x2779d1){return _0x246c0e(_0x2779d1);},'\x73\x46\x65\x4d\x47':function(_0x1cf99c,_0x397167){return _0x1cf99c||_0x397167;},'\x61\x48\x58\x6f\x77':function(_0x3deca2,_0x844e66){return _0x3deca2(_0x844e66);},'\x73\x47\x57\x69\x4a':function(_0x44dfee,_0x17acea){return _0x44dfee(_0x17acea);},'\x68\x43\x44\x55\x61':_0x1a0fbf(0x432,'\x35\x44\x64\x72')+_0x1a0fbf(0x446,'\x32\x78\x4b\x44'),'\x73\x6d\x45\x57\x42':function(_0x25349a,_0x1abb98){return _0x25349a+_0x1abb98;},'\x75\x58\x7a\x42\x44':_0x1a0fbf(0x213,'\x28\x76\x4a\x4d')+_0x1a0fbf(0x224,'\x33\x39\x47\x50')+_0x1a0fbf(0x3aa,'\x58\x53\x37\x59')+_0x1a0fbf(0x31b,'\x73\x38\x47\x33')+_0x1a0fbf(0x1e4,'\x42\x45\x72\x34')+_0x1a0fbf(0x355,'\x50\x41\x52\x2a'),'\x4f\x48\x74\x64\x70':_0x1a0fbf(0x2c8,'\x31\x5e\x46\x72')+_0x1a0fbf(0x3ac,'\x28\x33\x56\x50')+_0x1a0fbf(0x286,'\x72\x5a\x51\x55')+_0x1a0fbf(0x3de,'\x32\x78\x4b\x44')+'\x74\x6f\x20\x62\x79\x70\x61\x73'+_0x1a0fbf(0x1db,'\x6b\x61\x69\x47')+_0x1a0fbf(0x39a,'\x58\x77\x41\x6e')+_0x1a0fbf(0x226,'\x50\x41\x52\x2a')+_0x1a0fbf(0x27c,'\x6c\x34\x7a\x62'),'\x43\x73\x41\x69\x73':function(_0x2f3063,_0x1c50e9){return _0x2f3063(_0x1c50e9);},'\x67\x72\x59\x47\x73':function(_0x504fe8,_0x2779fb){return _0x504fe8===_0x2779fb;},'\x62\x68\x66\x4b\x54':_0x1a0fbf(0x3a2,'\x28\x71\x55\x70'),'\x4a\x65\x4b\x48\x58':function(_0x192beb,_0x5b5576){return _0x192beb instanceof _0x5b5576;},'\x41\x4c\x45\x4b\x61':function(_0x5ef7e0,_0x3a2f73){return _0x5ef7e0-_0x3a2f73;},'\x76\x4e\x74\x4f\x50':_0x1a0fbf(0x35e,'\x50\x5e\x68\x48'),'\x4d\x53\x57\x46\x78':function(_0x373f4e,_0x3ef6af){return _0x373f4e>_0x3ef6af;},'\x77\x4b\x4f\x4b\x49':function(_0x4db53f,_0x3dcc7a){return _0x4db53f!==_0x3dcc7a;},'\x4b\x56\x72\x4f\x73':_0x1a0fbf(0x3a0,'\x35\x44\x64\x72'),'\x54\x50\x4c\x74\x53':function(_0x14aeeb,_0x3db789){return _0x14aeeb===_0x3db789;},'\x50\x49\x57\x41\x6f':'\x43\x72\x47\x43\x41','\x4b\x7a\x6b\x71\x6d':_0x1a0fbf(0x2c2,'\x74\x4a\x35\x54')+_0x1a0fbf(0x1cd,'\x33\x4a\x21\x49'),'\x72\x4b\x46\x6b\x65':_0x1a0fbf(0x2dd,'\x64\x44\x59\x6b'),'\x70\x6e\x55\x78\x69':_0x1a0fbf(0x428,'\x58\x77\x41\x6e'),'\x4d\x64\x68\x6c\x56':function(_0x50d5c0,_0x56f2f0,_0x52e661){return _0x50d5c0(_0x56f2f0,_0x52e661);},'\x65\x5a\x73\x43\x6a':function(_0x49aa78,_0x3d1954){return _0x49aa78(_0x3d1954);}};if(!_0x493744)return'';const _0x20c5c0=Math[_0x1a0fbf(0x2d5,'\x65\x75\x72\x37')](-0x2095+0x194*0x1+0x1*0x1f01,_0x47b29f['\x43\x73\x41\x69\x73'](Number,_0x525670['\x6d\x61\x78\x42\x79\x74\x65\x73'])||_0x2c2551);if(_0x493744[_0x1a0fbf(0x33f,'\x32\x42\x55\x6c')]&&_0x47b29f[_0x1a0fbf(0x3e6,'\x50\x41\x52\x2a')](typeof _0x493744[_0x1a0fbf(0x274,'\x33\x33\x56\x47')][_0x1a0fbf(0x210,'\x42\x45\x72\x34')+'\x72'],_0x47b29f[_0x1a0fbf(0x251,'\x6b\x23\x5b\x25')])){const _0xe2c2d0=_0x493744[_0x1a0fbf(0x3c6,'\x51\x67\x52\x62')][_0x1a0fbf(0x46c,'\x74\x59\x46\x78')+'\x72'](),_0x4bb276=new _0x282437(),_0x3e1d13=[];let _0x18e4ce=-0xc71+0x356+-0x15*-0x6f,_0xf12b3b=![];try{while(!![]){const _0x540bd4=await _0xe2c2d0[_0x1a0fbf(0x406,'\x6c\x34\x7a\x62')]();if(_0x540bd4[_0x1a0fbf(0x2eb,'\x75\x34\x4b\x4d')])break;const _0x28128a=_0x47b29f['\x4a\x65\x4b\x48\x58'](_0x540bd4[_0x1a0fbf(0x230,'\x58\x6b\x79\x58')],Uint8Array)?_0x540bd4[_0x1a0fbf(0x225,'\x51\x5d\x36\x64')]:Buffer[_0x1a0fbf(0x2de,'\x74\x4a\x35\x54')](_0x540bd4[_0x1a0fbf(0x3bd,'\x46\x35\x35\x4b')]||''),_0x393606=_0x47b29f[_0x1a0fbf(0x2cc,'\x45\x75\x41\x63')](_0x20c5c0,_0x18e4ce);if(_0x393606>-0x269*-0x1+0x1*0x1eb9+-0x2122){if(_0x47b29f[_0x1a0fbf(0x32b,'\x6b\x23\x5b\x25')]('\x46\x71\x6f\x50\x49',_0x47b29f[_0x1a0fbf(0x24d,'\x42\x59\x37\x75')])){const _0x5aac4=_0x28128a[_0x1a0fbf(0x31a,'\x26\x5e\x53\x67')](0x1878+0x16*0x187+0x3a12*-0x1,_0x393606);_0x3e1d13[_0x1a0fbf(0x212,'\x49\x36\x71\x54')](_0x5aac4),_0x18e4ce+=_0x5aac4[_0x1a0fbf(0x44b,'\x58\x6b\x79\x58')+'\x74\x68'];}else{let _0x3fda5e=XbInFU['\x76\x69\x72\x57\x77'](_0x39a03a,XbInFU[_0x1a0fbf(0x313,'\x28\x71\x55\x70')](_0x568066,''));const _0x333537=XbInFU[_0x1a0fbf(0x343,'\x74\x59\x46\x78')](_0x3baab7,_0x39d6a8[_0x1a0fbf(0x405,'\x55\x37\x77\x49')]),_0x1720f6=_0x36a4cd[_0x1a0fbf(0x21a,'\x78\x53\x59\x39')](_0x333537)&&_0x333537>=-0x3*-0x1be+0x1f78+-0x24b2?_0x333537:_0x224225;try{_0x3fda5e=_0x5d12c7[_0x1a0fbf(0x1bf,'\x58\x53\x37\x59')+'\x79'](XbInFU[_0x1a0fbf(0x31e,'\x5a\x78\x52\x4b')](_0x3d8b0b,_0xfe8e52[_0x1a0fbf(0x2d3,'\x6b\x23\x5b\x25')](_0x3fda5e)));}catch(_0x54582f){}return _0x3fda5e=XbInFU[_0x1a0fbf(0x3b0,'\x6a\x58\x37\x23')](_0x2818b8,_0x3fda5e),_0x7688f0(_0x3fda5e,_0x1720f6);}}if(_0x47b29f[_0x1a0fbf(0x1c6,'\x51\x67\x52\x62')](_0x28128a[_0x1a0fbf(0x1f6,'\x33\x33\x56\x47')+'\x74\x68'],_0x393606)){if(_0x47b29f[_0x1a0fbf(0x1d0,'\x32\x42\x55\x6c')](_0x47b29f[_0x1a0fbf(0x241,'\x50\x41\x52\x2a')],'\x41\x6f\x6f\x4e\x56'))return _0x33bc32[_0x1a0fbf(0x21b,'\x74\x4a\x35\x54')]()[_0x1a0fbf(0x200,'\x70\x52\x5b\x51')](_0x1a0fbf(0x1cb,'\x5a\x78\x52\x4b')+'\x2b\x29\x2b\x24')[_0x1a0fbf(0x291,'\x73\x38\x47\x33')]()[_0x1a0fbf(0x26e,'\x6b\x63\x59\x43')+_0x1a0fbf(0x32f,'\x26\x5e\x53\x67')](_0x583d60)[_0x1a0fbf(0x1d6,'\x50\x41\x52\x2a')](XbInFU[_0x1a0fbf(0x324,'\x26\x5e\x53\x67')]);else{_0xf12b3b=!![];try{_0x47b29f[_0x1a0fbf(0x294,'\x42\x59\x37\x75')](_0x47b29f[_0x1a0fbf(0x261,'\x28\x71\x55\x70')],_0x1a0fbf(0x220,'\x73\x38\x47\x33'))?await _0xe2c2d0[_0x1a0fbf(0x2fa,'\x5d\x47\x69\x63')]():_0x3096cf='';}catch(_0x4550c8){}break;}}}}catch(_0x5306f5){try{await _0xe2c2d0[_0x1a0fbf(0x2d9,'\x5a\x78\x52\x4b')]();}catch(_0x37472c){}throw _0x5306f5;}finally{try{_0xe2c2d0['\x72\x65\x6c\x65\x61\x73\x65\x4c'+_0x1a0fbf(0x262,'\x32\x6d\x73\x6a')]();}catch(_0x3ed821){}}const _0x34cae5=_0x4bb276[_0x1a0fbf(0x1ec,'\x70\x52\x5b\x51')](Buffer[_0x1a0fbf(0x245,'\x45\x75\x41\x63')](_0x3e1d13,_0x18e4ce));return _0xf12b3b?_0x34cae5+_0x47b29f[_0x1a0fbf(0x3c3,'\x5d\x47\x69\x63')]:_0x34cae5;}if(typeof _0x493744[_0x1a0fbf(0x29a,'\x65\x75\x72\x37')]===_0x47b29f[_0x1a0fbf(0x44e,'\x49\x36\x71\x54')])try{if(_0x47b29f[_0x1a0fbf(0x3ad,'\x51\x67\x52\x62')]!==_0x47b29f[_0x1a0fbf(0x2a7,'\x51\x67\x52\x62')])return _0x47b29f[_0x1a0fbf(0x1b1,'\x45\x2a\x45\x73')](_0x121766,await _0x493744[_0x1a0fbf(0x438,'\x25\x75\x48\x29')](),_0x20c5c0);else throw new _0x3764e5(_0x47b29f[_0x1a0fbf(0x1c2,'\x28\x76\x4a\x4d')](_0x47b29f[_0x1a0fbf(0x2fb,'\x58\x6b\x79\x58')](_0x47b29f[_0x1a0fbf(0x3a5,'\x28\x33\x56\x50')](_0x47b29f[_0x1a0fbf(0x44a,'\x32\x6d\x73\x6a')],_0x90a321[_0x1a0fbf(0x414,'\x45\x75\x41\x63')+'\x79'](_0x31395a)),'\x2e\x20'),_0x47b29f[_0x1a0fbf(0x2c3,'\x78\x53\x59\x39')]));}catch(_0x292998){await _0x47b29f[_0x1a0fbf(0x30a,'\x65\x75\x72\x37')](_0xc3269d,_0x493744);throw _0x292998;}return await _0x47b29f[_0x1a0fbf(0x429,'\x58\x53\x37\x59')](_0xc3269d,_0x493744),'';}async function _0x525e1a(_0x10ce8c,_0x1c9bdb={}){const _0x123557=_0x5b7a59,_0x4c719d={};_0x4c719d[_0x123557(0x399,'\x58\x6b\x79\x58')]=_0x1c9bdb['\x6d\x61\x78\x42\x79\x74\x65\x73']||_0x30edbf;const _0x64fba5=await _0x9ff529(_0x10ce8c,_0x4c719d);return JSON[_0x123557(0x264,'\x25\x75\x48\x29')](_0x64fba5);}async function _0x1407ec(_0x4ab8af,_0x27c65f=_0x5b7a59(0x266,'\x33\x48\x73\x42')){const _0x47dd37=_0x5b7a59,_0x10430d={'\x5a\x4e\x53\x51\x53':function(_0x3d5939,_0x1113cc){return _0x3d5939(_0x1113cc);},'\x6e\x51\x6b\x79\x42':function(_0x37a752,_0x22fff1,_0x122ee6){return _0x37a752(_0x22fff1,_0x122ee6);},'\x64\x70\x7a\x4e\x72':function(_0xea6fa1,_0x48a71b){return _0xea6fa1||_0x48a71b;},'\x68\x49\x47\x41\x72':function(_0x3eec3f,_0x1be613){return _0x3eec3f(_0x1be613);},'\x50\x63\x6f\x54\x51':_0x47dd37(0x302,'\x32\x42\x55\x6c')+_0x47dd37(0x2a0,'\x6b\x23\x5b\x25')};if(!_0x10430d[_0x47dd37(0x46e,'\x46\x35\x35\x4b')](_0x46ac3b,_0x4ab8af))return;const _0x529165=_0x10430d[_0x47dd37(0x2cb,'\x58\x77\x41\x6e')](_0x587a13,_0x4ab8af);let _0x187778='';try{const _0x282906={};_0x282906[_0x47dd37(0x2e3,'\x50\x41\x52\x2a')]=_0x2c2551,_0x187778=await _0x10430d[_0x47dd37(0x388,'\x74\x4a\x35\x54')](_0x9ff529,_0x4ab8af,_0x282906);}catch(_0x1f7a86){_0x187778=_0x47dd37(0x2aa,'\x6b\x63\x59\x43')+_0x47dd37(0x433,'\x26\x5e\x53\x67')+_0x47dd37(0x222,'\x50\x41\x52\x2a')+(_0x1f7a86&&_0x1f7a86['\x6d\x65\x73\x73\x61\x67\x65']||_0x1f7a86)+'\x5d';}const _0x34fbd7=_0x121766(_0x10430d[_0x47dd37(0x346,'\x33\x4a\x21\x49')](String,_0x10430d[_0x47dd37(0x1c1,'\x62\x4c\x54\x37')](_0x187778,''))[_0x47dd37(0x36e,'\x73\x38\x47\x33')](/\s+/g,'\x20')[_0x47dd37(0x38a,'\x35\x44\x64\x72')](),-0x2*-0x12c5+0xdaa+-0x86*0x5e),_0xb7443f=_0x10430d[_0x47dd37(0x28f,'\x31\x5e\x46\x72')](Number,_0x4ab8af['\x73\x74\x61\x74\x75\x73']||-0x1*-0xa8a+-0x1d3e+0x12b4)||null,_0x3f0d7d=_0x10430d[_0x47dd37(0x307,'\x74\x59\x46\x78')](_0x529165,'\x75\x6e\x6b\x6e\x6f\x77\x6e\x20'+_0x47dd37(0x2d0,'\x51\x5d\x36\x64')+_0x47dd37(0x42a,'\x70\x52\x5b\x51'));throw new _0x240f4f(_0x27c65f+(_0x47dd37(0x1af,'\x73\x48\x4f\x37')+'\x64\x20\x61\x20\x6e\x6f\x6e\x2d'+_0x47dd37(0x2b9,'\x64\x44\x59\x6b')+_0x47dd37(0x32e,'\x72\x5a\x51\x55')+'\x20\x28')+_0x10430d[_0x47dd37(0x21e,'\x50\x41\x52\x2a')](_0xb7443f,_0x10430d[_0x47dd37(0x26c,'\x5e\x37\x65\x73')])+'\x2c\x20'+_0x3f0d7d+'\x29',{'\x73\x74\x61\x74\x75\x73\x43\x6f\x64\x65':_0xb7443f,'\x63\x6f\x6e\x74\x65\x6e\x74\x54\x79\x70\x65':_0x529165,'\x62\x6f\x64\x79\x53\x6e\x69\x70\x70\x65\x74':_0x34fbd7,'\x63\x6f\x6e\x74\x65\x78\x74':_0x27c65f});}function _0x4a6150(_0x3ee309){const _0x12fd67=_0x5b7a59,_0x125952={'\x71\x51\x51\x61\x59':function(_0x30b4cb,_0x384f46){return _0x30b4cb(_0x384f46);},'\x6d\x61\x4d\x6f\x43':function(_0xbd0fd5,_0x373da0){return _0xbd0fd5+_0x373da0;},'\x62\x48\x7a\x42\x54':function(_0x55d338,_0x4e459c){return _0x55d338+_0x4e459c;},'\x50\x64\x62\x74\x7a':_0x12fd67(0x1d2,'\x32\x42\x55\x6c')+'\x68\x5d\x20\x48\x75\x62\x20\x55'+_0x12fd67(0x33b,'\x51\x67\x52\x62')+_0x12fd67(0x336,'\x35\x44\x64\x72')+_0x12fd67(0x308,'\x45\x2a\x45\x73'),'\x53\x64\x76\x78\x66':function(_0x2ea8f3,_0x2fbaae){return _0x2ea8f3!==_0x2fbaae;},'\x68\x46\x56\x78\x62':_0x12fd67(0x1eb,'\x74\x59\x46\x78'),'\x4d\x4d\x56\x75\x7a':function(_0x1dd195,_0x551ea0){return _0x1dd195===_0x551ea0;},'\x67\x72\x6d\x44\x5a':_0x12fd67(0x1de,'\x65\x75\x72\x37'),'\x6e\x63\x45\x43\x45':_0x12fd67(0x22b,'\x28\x33\x56\x50'),'\x47\x50\x64\x7a\x62':function(_0x92623c,_0x317beb){return _0x92623c+_0x317beb;},'\x70\x73\x45\x70\x6f':_0x12fd67(0x3b6,'\x73\x48\x4f\x37')+_0x12fd67(0x404,'\x50\x5e\x68\x48')+'\x52\x4c\x20\x6d\x75\x73\x74\x20'+_0x12fd67(0x2ad,'\x42\x59\x37\x75')+_0x12fd67(0x258,'\x78\x53\x59\x39')+_0x12fd67(0x246,'\x6b\x61\x69\x47'),'\x74\x68\x62\x68\x74':_0x12fd67(0x272,'\x28\x33\x56\x50')+_0x12fd67(0x248,'\x6b\x63\x59\x43')+_0x12fd67(0x2b7,'\x28\x76\x4a\x4d')+'\x45\x43\x55\x52\x45\x3d\x31\x20'+_0x12fd67(0x396,'\x55\x37\x77\x49')+_0x12fd67(0x366,'\x42\x45\x72\x34')+_0x12fd67(0x243,'\x73\x48\x4f\x37')+'\x6f\x63\x6b\x20\x68\x75\x62\x20'+_0x12fd67(0x1c3,'\x32\x6d\x73\x6a')};let _0x3c3441;try{_0x3c3441=new URL(_0x3ee309);}catch{throw new Error(_0x125952[_0x12fd67(0x3fb,'\x78\x53\x59\x39')](_0x125952[_0x12fd67(0x27e,'\x45\x2a\x45\x73')](_0x125952[_0x12fd67(0x43e,'\x45\x2a\x45\x73')](_0x125952[_0x12fd67(0x2b1,'\x6b\x61\x69\x47')],JSON[_0x12fd67(0x41f,'\x33\x39\x47\x50')+'\x79'](_0x3ee309)),'\x2e\x20'),_0x12fd67(0x3e7,'\x6c\x34\x7a\x62')+_0x12fd67(0x1fd,'\x51\x5d\x36\x64')+_0x12fd67(0x3a1,'\x75\x34\x4b\x4d')+_0x12fd67(0x437,'\x51\x5d\x36\x64')+_0x12fd67(0x40d,'\x35\x44\x64\x72')+'\x73\x20\x28\x6c\x6f\x63\x61\x6c'+_0x12fd67(0x235,'\x32\x42\x55\x6c')+_0x12fd67(0x42e,'\x51\x5d\x36\x64')+_0x12fd67(0x296,'\x6b\x61\x69\x47')));}if(_0x125952[_0x12fd67(0x386,'\x55\x37\x77\x49')](_0x3c3441[_0x12fd67(0x416,'\x33\x33\x56\x47')],_0x125952[_0x12fd67(0x311,'\x6a\x58\x37\x23')])){if(_0x125952[_0x12fd67(0x353,'\x42\x45\x72\x34')](_0x125952['\x67\x72\x6d\x44\x5a'],_0x125952['\x6e\x63\x45\x43\x45']))_0xefa90b=_0x119735[_0x12fd67(0x414,'\x45\x75\x41\x63')+'\x79'](MyHjvV[_0x12fd67(0x234,'\x31\x5e\x46\x72')](_0x41b92c,_0x3a84fc[_0x12fd67(0x3c5,'\x32\x6d\x73\x6a')](_0x1dcd83)));else throw new Error(_0x125952[_0x12fd67(0x332,'\x32\x78\x4b\x44')](_0x125952['\x6d\x61\x4d\x6f\x43'](_0x125952[_0x12fd67(0x1fb,'\x28\x71\x55\x70')](_0x125952[_0x12fd67(0x277,'\x33\x4a\x21\x49')],JSON[_0x12fd67(0x427,'\x58\x77\x41\x6e')+'\x79'](_0x3ee309)),'\x2e\x20'),_0x125952[_0x12fd67(0x1d7,'\x55\x37\x77\x49')]));}}function _0x30a608(_0x45403f){const _0x5ab587=_0x5b7a59,_0x212713={};_0x212713[_0x5ab587(0x362,'\x42\x59\x37\x75')]=function(_0x3396dd,_0xca1d99){return _0x3396dd===_0xca1d99;};const _0x159578=_0x212713;if(_0x159578[_0x5ab587(0x359,'\x33\x48\x73\x42')](process.env.EVOMAP_HUB_ALLOW_INSECURE,'\x31'))return;_0x4a6150(_0x45403f);}async function _0x500b03(_0x54ee96,_0x32fd59){const _0x171d44=_0x5b7a59,_0x40a92b={'\x77\x48\x6b\x45\x72':function(_0x5c0848,_0x1d59d9){return _0x5c0848===_0x1d59d9;},'\x4c\x71\x65\x63\x5a':'\x2f\x61\x32\x61\x2f\x6d\x61\x69'+_0x171d44(0x2ab,'\x51\x5d\x36\x64')+_0x171d44(0x1d5,'\x25\x75\x48\x29'),'\x58\x69\x75\x72\x4e':function(_0x51c066,_0x21e64c){return _0x51c066===_0x21e64c;},'\x58\x76\x5a\x4b\x54':_0x171d44(0x3c7,'\x78\x53\x59\x39'),'\x73\x4b\x57\x64\x52':_0x171d44(0x309,'\x64\x44\x59\x6b'),'\x6c\x65\x4e\x6b\x55':function(_0x1bbcd7,_0x37fca0){return _0x1bbcd7!==_0x37fca0;},'\x6f\x5a\x52\x5a\x54':function(_0xb1bb55,_0x3ea5a1,_0x3d0bad){return _0xb1bb55(_0x3ea5a1,_0x3d0bad);},'\x67\x78\x43\x6d\x54':function(_0x143225,_0x8487f9){return _0x143225(_0x8487f9);},'\x6d\x63\x42\x76\x73':function(_0x5bc6b3,_0x22ea0c){return _0x5bc6b3(_0x22ea0c);},'\x61\x68\x6c\x6d\x69':_0x171d44(0x31d,'\x73\x38\x47\x33'),'\x4d\x6d\x63\x67\x4b':_0x171d44(0x2c7,'\x33\x4a\x21\x49'),'\x73\x41\x73\x50\x4f':'\x55\x48\x73\x4e\x68','\x79\x52\x45\x50\x54':function(_0x36a2a8){return _0x36a2a8();}};if(process.env.EVOMAP_HUB_ALLOW_INSECURE==='\x31'){if(_0x40a92b[_0x171d44(0x2f4,'\x5d\x47\x69\x63')]===_0x171d44(0x360,'\x73\x38\x47\x33')){const _0x269ea8=_0x40a92b[_0x171d44(0x305,'\x64\x39\x5d\x64')](_0x10bdc4,_0xadd344)?_0x10bdc4:global[_0x171d44(0x288,'\x51\x67\x52\x62')];return _0x40a92b[_0x171d44(0x23e,'\x35\x44\x64\x72')](_0x269ea8,_0x54ee96,_0x32fd59);}else{const _0x366a10=new _0x21e51c(_0x5dbfa2);if(FoftuP['\x77\x48\x6b\x45\x72'](_0x366a10[_0x171d44(0x41b,'\x42\x59\x37\x75')],_0x40383c))return _0x3d225c;if(FoftuP[_0x171d44(0x34e,'\x32\x42\x55\x6c')](_0x366a10[_0x171d44(0x380,'\x33\x48\x73\x42')],'\x2f\x61\x32\x61\x2f\x6d\x61\x69'+'\x6c\x62\x6f\x78\x2f\x69\x6e\x62'+'\x6f\x75\x6e\x64')||FoftuP[_0x171d44(0x389,'\x64\x44\x59\x6b')](_0x366a10[_0x171d44(0x42f,'\x28\x76\x4a\x4d')],FoftuP[_0x171d44(0x3a8,'\x64\x39\x5d\x64')]))return _0x4d2279;}}_0x40a92b[_0x171d44(0x2ce,'\x28\x71\x55\x70')](_0x4a6150,_0x54ee96);const _0x2830ad=_0x40a92b[_0x171d44(0x1d3,'\x51\x5d\x36\x64')](_0x1729da,_0x54ee96);try{if(_0x40a92b[_0x171d44(0x1fe,'\x62\x4c\x54\x37')]===_0x40a92b[_0x171d44(0x22d,'\x6d\x72\x4b\x6f')])try{const _0x38cf11=_0x38f36c[_0x171d44(0x3a7,'\x62\x4c\x54\x37')]();if(_0x38cf11&&FoftuP[_0x171d44(0x3dd,'\x73\x48\x4f\x37')](typeof _0x38cf11[_0x171d44(0x2bc,'\x33\x39\x47\x50')],FoftuP['\x58\x76\x5a\x4b\x54']))_0x38cf11[_0x171d44(0x468,'\x32\x6d\x73\x6a')](()=>{});}catch(_0x262d1b){}else{const _0x324338={};return _0x324338[_0x171d44(0x45e,'\x32\x78\x4b\x44')+'\x65\x72']=_0x2830ad,await _0x10bdc4(_0x54ee96,Object[_0x171d44(0x2e4,'\x6d\x72\x4b\x6f')]({},_0x32fd59,_0x324338));}}catch(_0x41c5fb){if(_0x40a92b[_0x171d44(0x271,'\x58\x6b\x79\x58')](_0x171d44(0x2c0,'\x65\x75\x72\x37'),_0x40a92b[_0x171d44(0x2ee,'\x73\x38\x47\x33')])){if(!_0x31e18d)return![];if(_0x2370cc[_0x171d44(0x3ca,'\x6b\x61\x69\x47')](_0x3b2fe5['\x63\x6f\x64\x65']))return!![];if(_0x4a511d[_0x171d44(0x465,'\x33\x33\x56\x47')]&&_0x184627[_0x171d44(0x1ae,'\x5d\x47\x69\x63')](_0x1a4c70[_0x171d44(0x3e0,'\x5a\x78\x52\x4b')][_0x171d44(0x425,'\x75\x34\x4b\x4d')]))return!![];return![];}else{if(_0x40a92b[_0x171d44(0x2df,'\x73\x38\x47\x33')](_0x42f614,_0x41c5fb))try{_0x40a92b[_0x171d44(0x281,'\x45\x75\x41\x63')](_0x4296bb);}catch(_0x24f756){}throw _0x41c5fb;}}}const _0x3d3012={};_0x3d3012['\x68\x75\x62\x46\x65\x74\x63\x68']=_0x500b03,_0x3d3012[_0x5b7a59(0x2f0,'\x6d\x72\x4b\x6f')+'\x6c']=_0x4296bb,_0x3d3012[_0x5b7a59(0x3f3,'\x46\x35\x35\x4b')+_0x5b7a59(0x453,'\x5e\x37\x65\x73')+_0x5b7a59(0x378,'\x6d\x72\x4b\x6f')]=_0x240f4f,_0x3d3012[_0x5b7a59(0x345,'\x42\x59\x37\x75')+_0x5b7a59(0x20e,'\x70\x52\x5b\x51')]=_0xc3269d,_0x3d3012['\x68\x75\x62\x52\x65\x73\x70\x6f'+_0x5b7a59(0x315,'\x55\x37\x77\x49')+_0x5b7a59(0x256,'\x65\x75\x72\x37')]=_0x587a13,_0x3d3012[_0x5b7a59(0x1bc,'\x31\x5e\x46\x72')+_0x5b7a59(0x391,'\x26\x5e\x53\x67')+_0x5b7a59(0x35f,'\x6c\x34\x7a\x62')]=_0x3b97e1,_0x3d3012[_0x5b7a59(0x1e9,'\x33\x4a\x21\x49')+_0x5b7a59(0x25d,'\x6c\x34\x7a\x62')]=_0x3d9220,_0x3d3012['\x69\x73\x48\x75\x62\x55\x6e\x72'+_0x5b7a59(0x260,'\x73\x38\x47\x33')+_0x5b7a59(0x3cb,'\x33\x48\x73\x42')]=_0x42f614,_0x3d3012[_0x5b7a59(0x385,'\x6a\x58\x37\x23')+_0x5b7a59(0x350,'\x58\x77\x41\x6e')+_0x5b7a59(0x3fc,'\x28\x76\x4a\x4d')]=_0x46ac3b,_0x3d3012[_0x5b7a59(0x2f2,'\x32\x78\x4b\x44')+_0x5b7a59(0x38f,'\x6a\x58\x37\x23')+_0x5b7a59(0x287,'\x35\x44\x64\x72')]=_0x525e1a,_0x3d3012['\x72\x65\x61\x64\x48\x75\x62\x52'+_0x5b7a59(0x356,'\x58\x6b\x79\x58')+_0x5b7a59(0x323,'\x55\x37\x77\x49')]=_0x9ff529,_0x3d3012[_0x5b7a59(0x1ff,'\x6a\x58\x37\x23')+_0x5b7a59(0x2ae,'\x28\x71\x55\x70')+_0x5b7a59(0x3f4,'\x64\x44\x59\x6b')+'\x67']=_0x301546,_0x3d3012[_0x5b7a59(0x273,'\x5d\x47\x69\x63')+_0x5b7a59(0x461,'\x26\x5e\x53\x67')+_0x5b7a59(0x30c,'\x5d\x47\x69\x63')+_0x5b7a59(0x434,'\x33\x4a\x21\x49')]=_0x1407ec,_0x3d3012[_0x5b7a59(0x338,'\x73\x48\x4f\x37')+'\x72\x6b\x44\x69\x73\x72\x75\x70'+_0x5b7a59(0x2a4,'\x6a\x58\x37\x23')+'\x72']=_0x1884e5,_0x3d3012['\x5f\x76\x61\x6c\x69\x64\x61\x74'+_0x5b7a59(0x439,'\x50\x5e\x68\x48')]=_0x4a6150,_0x3d3012[_0x5b7a59(0x1f7,'\x42\x45\x72\x34')+_0x5b7a59(0x36a,'\x6d\x72\x4b\x6f')]=_0x30a608,_0x3d3012[_0x5b7a59(0x2cd,'\x55\x37\x77\x49')+_0x5b7a59(0x412,'\x49\x54\x24\x64')]=_0x3e843b,_0x3d3012[_0x5b7a59(0x211,'\x6b\x63\x59\x43')+_0x5b7a59(0x40c,'\x6b\x23\x5b\x25')+_0x5b7a59(0x20c,'\x32\x78\x4b\x44')+'\x74']=_0x232f41,_0x3d3012[_0x5b7a59(0x284,'\x6a\x58\x37\x23')+_0x5b7a59(0x469,'\x32\x42\x55\x6c')+_0x5b7a59(0x303,'\x78\x53\x59\x39')]=_0x3e60d2,module[_0x5b7a59(0x316,'\x6a\x58\x37\x23')]=_0x3d3012;
|
|
1
|
+
// hubFetch -- single chokepoint for every Hub-facing HTTP call.
|
|
2
|
+
//
|
|
3
|
+
// Two protections, both bypassable only via EVOMAP_HUB_ALLOW_INSECURE=1:
|
|
4
|
+
//
|
|
5
|
+
// 1. URL schema check. Rejects anything that does not parse as https://.
|
|
6
|
+
// This catches every misconfigured / attacker-supplied env var even
|
|
7
|
+
// when the caller bypassed resolveHubUrl() and read process.env
|
|
8
|
+
// directly (httpTransportSend / getHubUrl() / per-call opts.hubUrl /
|
|
9
|
+
// proxy this.hubUrl all reach here).
|
|
10
|
+
//
|
|
11
|
+
// 2. TLS verification. Built-in fetch validates certificates by default,
|
|
12
|
+
// but NODE_TLS_REJECT_UNAUTHORIZED=0 disables that globally. Passing
|
|
13
|
+
// an explicit undici.Agent with connect.rejectUnauthorized:true as
|
|
14
|
+
// the dispatcher makes Hub traffic immune to that env var.
|
|
15
|
+
//
|
|
16
|
+
// Escape hatch: EVOMAP_HUB_ALLOW_INSECURE=1 disables BOTH protections (used
|
|
17
|
+
// for local dev / mock hubs on http:// or with self-signed certs). Any
|
|
18
|
+
// value other than exactly "1" is treated as absent.
|
|
19
|
+
|
|
20
|
+
// Use BOTH Agent and fetch from the same undici package. Node's global
|
|
21
|
+
// fetch is built on an internal undici, and an Agent created from the
|
|
22
|
+
// installed `undici` package is not interface-compatible with it — mixing
|
|
23
|
+
// them yields `UND_ERR_INVALID_ARG: invalid onRequestStart method` at
|
|
24
|
+
// request time. Pulling fetch from the same package keeps them in sync.
|
|
25
|
+
const https = require('https');
|
|
26
|
+
const { TextDecoder } = require('util');
|
|
27
|
+
const { Agent, fetch: undiciFetch, buildConnector } = require('undici');
|
|
28
|
+
const { redactString } = require('./sanitize');
|
|
29
|
+
|
|
30
|
+
const HUB_ERROR_TEXT_MAX_BYTES = 8 * 1024;
|
|
31
|
+
const HUB_JSON_TEXT_MAX_BYTES = 4 * 1024 * 1024;
|
|
32
|
+
const HUB_LOG_TEXT_MAX_CHARS = 1024;
|
|
33
|
+
const HUB_UNREACHABLE_BACKOFF_BASE_MS = 60_000;
|
|
34
|
+
const HUB_UNREACHABLE_BACKOFF_MAX_MS = 10 * 60_000;
|
|
35
|
+
const HUB_LOG_REDACTED = '[REDACTED]';
|
|
36
|
+
const HUB_LOG_SENSITIVE_KEY_RE = /(?:secret|token|api[_-]?key|authorization|password|env|credential)/i;
|
|
37
|
+
|
|
38
|
+
class HubUnreachableError extends Error {
|
|
39
|
+
constructor(message, details = {}) {
|
|
40
|
+
super(message);
|
|
41
|
+
this.name = 'HubUnreachableError';
|
|
42
|
+
this.code = 'HUB_UNREACHABLE';
|
|
43
|
+
this.statusCode = details.statusCode || null;
|
|
44
|
+
this.contentType = details.contentType || '';
|
|
45
|
+
this.bodySnippet = details.bodySnippet || '';
|
|
46
|
+
this.context = details.context || '';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Cap idle keep-alive well below consumer-router NAT eviction (typically
|
|
51
|
+
// 60-300s). undici's default keepAliveTimeout is 600s, which means after an
|
|
52
|
+
// idle period the next request reuses a socket the NAT has already silently
|
|
53
|
+
// dropped and only fails after AbortSignal timeout — a major contributor to
|
|
54
|
+
// post-idle heartbeat death. headers/bodyTimeout are bounded so a wedged
|
|
55
|
+
// socket cannot stall the heartbeat indefinitely.
|
|
56
|
+
// Connect options shared between agents.
|
|
57
|
+
// - rejectUnauthorized: TLS verification, immune to NODE_TLS_REJECT_UNAUTHORIZED=0.
|
|
58
|
+
// - timeout: TCP+TLS handshake deadline.
|
|
59
|
+
// - Hub traffic defaults to IPv4-first: try an IPv4 socket first, then fall
|
|
60
|
+
// back to dual-stack Happy Eyeballs if IPv4 cannot connect. Real-world
|
|
61
|
+
// VPN/TUN setups often route IPv4 through the intended exit while leaving
|
|
62
|
+
// IPv6 on the local ISP path; Cloudflare country rules then see a CN IPv6
|
|
63
|
+
// and block otherwise valid Hub calls. Set EVOMAP_HUB_IP_FAMILY=auto to
|
|
64
|
+
// restore dual-stack Happy Eyeballs as the primary path, or ipv4-only to
|
|
65
|
+
// disable fallback for controlled networks.
|
|
66
|
+
function _resolveHubIpFamily() {
|
|
67
|
+
const raw = String(process.env.EVOMAP_HUB_IP_FAMILY || 'ipv4first').trim().toLowerCase();
|
|
68
|
+
if (raw === 'ipv4' || raw === 'v4' || raw === '4' || raw === 'ipv4first' || raw === 'ipv4-first') return 'ipv4first';
|
|
69
|
+
if (raw === 'ipv4only' || raw === 'ipv4-only') return 'ipv4only';
|
|
70
|
+
if (raw === 'auto' || raw === 'dualstack' || raw === 'dual-stack') return 'auto';
|
|
71
|
+
throw new Error('[hubFetch] EVOMAP_HUB_IP_FAMILY must be "ipv4", "ipv4-only", or "auto" — got ' + JSON.stringify(process.env.EVOMAP_HUB_IP_FAMILY));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const _hubIpFamily = _resolveHubIpFamily();
|
|
75
|
+
const _CONNECT_TIMEOUT_MS = 10_000;
|
|
76
|
+
const _IPV4FIRST_PRIMARY_CONNECT_TIMEOUT_MS = 2_500;
|
|
77
|
+
const _baseConnectOpts = {
|
|
78
|
+
rejectUnauthorized: true,
|
|
79
|
+
timeout: _CONNECT_TIMEOUT_MS,
|
|
80
|
+
};
|
|
81
|
+
const _ipv4OnlyConnectOpts = {
|
|
82
|
+
..._baseConnectOpts,
|
|
83
|
+
family: 4,
|
|
84
|
+
autoSelectFamily: false,
|
|
85
|
+
};
|
|
86
|
+
// In ipv4first mode the IPv4-only connector is a probe, not the whole
|
|
87
|
+
// heartbeat budget. Keep it short so fallback Happy Eyeballs still has
|
|
88
|
+
// time to connect before the 10s application-layer deadline fires.
|
|
89
|
+
const _ipv4FirstPrimaryConnectOpts = {
|
|
90
|
+
..._ipv4OnlyConnectOpts,
|
|
91
|
+
timeout: _IPV4FIRST_PRIMARY_CONNECT_TIMEOUT_MS,
|
|
92
|
+
};
|
|
93
|
+
const _autoConnectOpts = {
|
|
94
|
+
..._baseConnectOpts,
|
|
95
|
+
autoSelectFamily: true,
|
|
96
|
+
autoSelectFamilyAttemptTimeout: 250,
|
|
97
|
+
};
|
|
98
|
+
const _connectOpts = _hubIpFamily === 'auto'
|
|
99
|
+
? _autoConnectOpts
|
|
100
|
+
: (_hubIpFamily === 'ipv4only' ? _ipv4OnlyConnectOpts : _ipv4FirstPrimaryConnectOpts);
|
|
101
|
+
|
|
102
|
+
const _IPV4_FALLBACK_CODES = new Set([
|
|
103
|
+
'EADDRNOTAVAIL',
|
|
104
|
+
'EAI_AGAIN',
|
|
105
|
+
'ECONNREFUSED',
|
|
106
|
+
'ETIMEDOUT',
|
|
107
|
+
'ENETUNREACH',
|
|
108
|
+
'EHOSTUNREACH',
|
|
109
|
+
'ENOTFOUND',
|
|
110
|
+
'UND_ERR_CONNECT_TIMEOUT',
|
|
111
|
+
]);
|
|
112
|
+
|
|
113
|
+
function _shouldFallbackFromIpv4(err) {
|
|
114
|
+
if (_hubIpFamily !== 'ipv4first') return false;
|
|
115
|
+
const code = err && (err.code || (err.cause && err.cause.code));
|
|
116
|
+
return _IPV4_FALLBACK_CODES.has(code);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Round-8 (§21.6): wrap undici's built-in connector so we can enable
|
|
120
|
+
// OS-level TCP keepalive on the underlying socket. macOS default
|
|
121
|
+
// TCP_KEEPIDLE is 7200s -- way too long for our 10s heartbeat
|
|
122
|
+
// AbortSignal to ever benefit from kernel-level dead-socket detection.
|
|
123
|
+
// undici's keepAliveTimeout (10s above) trims sockets that have been
|
|
124
|
+
// idle in our pool, but a socket that is freshly idle (1-9s) and gets
|
|
125
|
+
// silently NAT-evicted during the macOS sleep window is reused on
|
|
126
|
+
// wake, the next request hangs until the AbortSignal trips, and the
|
|
127
|
+
// dispatcher pool fills with "destroying" sockets that pin capacity.
|
|
128
|
+
// With setKeepAlive(true, 15_000) the kernel fires TCP keepalive
|
|
129
|
+
// probes after 15s of socket idle, sees the silent drop within a few
|
|
130
|
+
// probe intervals, and surfaces ECONNRESET to the next read -- so
|
|
131
|
+
// reuse of a dead socket fails fast instead of hanging until app-
|
|
132
|
+
// layer timeout. rejectUnauthorized, connect.timeout, and the selected
|
|
133
|
+
// IP-family policy all still apply because we delegate to buildConnector(opts).
|
|
134
|
+
const _primaryConnect = buildConnector(_connectOpts);
|
|
135
|
+
const _fallbackConnect = _hubIpFamily === 'ipv4first' ? buildConnector(_autoConnectOpts) : null;
|
|
136
|
+
function _connectWithKeepAlive(opts, cb) {
|
|
137
|
+
function done(err, socket) {
|
|
138
|
+
if (err) return cb(err, socket);
|
|
139
|
+
try {
|
|
140
|
+
if (socket && typeof socket.setKeepAlive === 'function') {
|
|
141
|
+
socket.setKeepAlive(true, 15_000);
|
|
142
|
+
}
|
|
143
|
+
} catch (_) { /* never block connect on a setKeepAlive failure */ }
|
|
144
|
+
cb(null, socket);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return _primaryConnect(opts, function (err, socket) {
|
|
148
|
+
if (err && _fallbackConnect && _shouldFallbackFromIpv4(err)) {
|
|
149
|
+
return _fallbackConnect(opts, done);
|
|
150
|
+
}
|
|
151
|
+
return done(err, socket);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
// Marker so the #160 TLS-pinning contract (dispatcher.options.connect
|
|
155
|
+
// .rejectUnauthorized === true) remains introspectable now that
|
|
156
|
+
// `connect` is a function wrapping buildConnector(_connectOpts) instead
|
|
157
|
+
// of a plain options object. The actual TLS pinning is enforced by
|
|
158
|
+
// _connectOpts above; this property only mirrors that intent for tests
|
|
159
|
+
// and readers.
|
|
160
|
+
_connectWithKeepAlive.rejectUnauthorized = true;
|
|
161
|
+
|
|
162
|
+
function _makeStrictAgent() {
|
|
163
|
+
return new Agent({
|
|
164
|
+
connect: _connectWithKeepAlive,
|
|
165
|
+
keepAliveTimeout: 10_000,
|
|
166
|
+
keepAliveMaxTimeout: 60_000,
|
|
167
|
+
headersTimeout: 30_000,
|
|
168
|
+
bodyTimeout: 30_000,
|
|
169
|
+
pipelining: 1,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function _makeLongPollAgent() {
|
|
174
|
+
return new Agent({
|
|
175
|
+
connect: _connectWithKeepAlive,
|
|
176
|
+
keepAliveTimeout: 10_000,
|
|
177
|
+
keepAliveMaxTimeout: 60_000,
|
|
178
|
+
headersTimeout: 65_000,
|
|
179
|
+
bodyTimeout: 65_000,
|
|
180
|
+
pipelining: 1,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function _makeEventStreamAgent() {
|
|
185
|
+
return new Agent({
|
|
186
|
+
connect: _connectWithKeepAlive,
|
|
187
|
+
keepAliveTimeout: 10_000,
|
|
188
|
+
keepAliveMaxTimeout: 60_000,
|
|
189
|
+
headersTimeout: 30_000,
|
|
190
|
+
bodyTimeout: 0,
|
|
191
|
+
pipelining: 1,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
function _makeMailboxAgent() {
|
|
196
|
+
return new Agent({
|
|
197
|
+
connect: _connectWithKeepAlive,
|
|
198
|
+
keepAliveTimeout: 10_000,
|
|
199
|
+
keepAliveMaxTimeout: 60_000,
|
|
200
|
+
// Sits just above the highest mailbox AbortSignal (inbound=35s) so the
|
|
201
|
+
// app-layer signal is the authority on cancellation, while still
|
|
202
|
+
// bounding wedged-socket lifetime well below "forever".
|
|
203
|
+
headersTimeout: 45_000,
|
|
204
|
+
bodyTimeout: 45_000,
|
|
205
|
+
pipelining: 1,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
function _getHubFetchConfigForTest() {
|
|
210
|
+
return {
|
|
211
|
+
hubIpFamily: _hubIpFamily,
|
|
212
|
+
connectTimeoutMs: _CONNECT_TIMEOUT_MS,
|
|
213
|
+
ipv4FirstPrimaryConnectTimeoutMs: _IPV4FIRST_PRIMARY_CONNECT_TIMEOUT_MS,
|
|
214
|
+
connectOpts: { ..._connectOpts },
|
|
215
|
+
primaryConnectOpts: { ..._connectOpts },
|
|
216
|
+
fallbackConnectOpts: _fallbackConnect ? { ..._autoConnectOpts } : null,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Default agent for short hub calls (heartbeat, hello, transport, publish).
|
|
221
|
+
// Header/body timeouts (30s) are bounded so a wedged socket cannot stall
|
|
222
|
+
// the heartbeat loop (HEARTBEAT_TIMEOUT_MS=10s leaves a 3x margin).
|
|
223
|
+
// keepAliveTimeout is well below consumer-router NAT eviction (typically
|
|
224
|
+
// 60-300s) so the next call after an idle period gets a fresh socket
|
|
225
|
+
// rather than reusing one the NAT has silently dropped.
|
|
226
|
+
// Backward-compatible Node native `https.Agent` export for callers that still
|
|
227
|
+
// build their own `https.request(...)` transport. New Hub clients should route
|
|
228
|
+
// through hubFetch so TLS and IP-family policy stay centralized.
|
|
229
|
+
const _strictHttpsAgent = new https.Agent({ rejectUnauthorized: true });
|
|
230
|
+
|
|
231
|
+
// Long-poll agent for /a2a/events/poll. The application-layer
|
|
232
|
+
// AbortSignal.timeout for that path is 60s (EVENT_POLL_TIMEOUT_MS), but
|
|
233
|
+
// _strictAgent's headersTimeout=30s would otherwise fire first and abort
|
|
234
|
+
// every long poll at 30s -- the hub gets no chance to deliver an event
|
|
235
|
+
// that arrives in the 30-55s window. Headers/body timeouts here sit just
|
|
236
|
+
// above the app-layer 60s ceiling so the AbortSignal is the visible
|
|
237
|
+
// timeout signal.
|
|
238
|
+
// Event-stream agent for /a2a/events/stream. SSE may sit idle for minutes
|
|
239
|
+
// between messages, so bodyTimeout is disabled and lifecycle is owned by
|
|
240
|
+
// the caller's AbortController / close() path.
|
|
241
|
+
// Mailbox agent for /a2a/mailbox/inbound (35s AbortSignal) and
|
|
242
|
+
// /a2a/mailbox/outbound (30s AbortSignal). _strictAgent's 30s
|
|
243
|
+
// headers/bodyTimeout would fire AT OR BEFORE those app signals,
|
|
244
|
+
// silently capping inbound at 30s (regression vs main where _strictAgent
|
|
245
|
+
// had undici defaults ~300s) and racing with outbound's identical 30s
|
|
246
|
+
// signal. The 45s ceiling here keeps the app-layer AbortSignal as the
|
|
247
|
+
// authority while still bounding a wedged socket.
|
|
248
|
+
let _strictAgent = _makeStrictAgent();
|
|
249
|
+
let _longPollAgent = _makeLongPollAgent();
|
|
250
|
+
let _eventStreamAgent = _makeEventStreamAgent();
|
|
251
|
+
let _mailboxAgent = _makeMailboxAgent();
|
|
252
|
+
|
|
253
|
+
// Drain and rebuild both undici agents. Called from the index.js SIGCONT
|
|
254
|
+
// handler on macOS resume: undici's keepAliveTimeout is measured from
|
|
255
|
+
// "socket goes idle" on libuv's monotonic clock, which freezes through
|
|
256
|
+
// sleep. The next post-wake request can therefore reuse a socket the
|
|
257
|
+
// NAT silently dropped during the suspend window and only fail after the
|
|
258
|
+
// 30s headersTimeout -- well above HEARTBEAT_TIMEOUT_MS (10s). The
|
|
259
|
+
// AbortSignal trips first but the socket may linger in the pool's
|
|
260
|
+
// "destroying" state, pinning capacity. Closing both agents forces all
|
|
261
|
+
// idle sockets shut and frees the per-host autoSelectFamily cache so a
|
|
262
|
+
// stale "v6 wins" decision from before sleep does not stick when v6 is
|
|
263
|
+
// now black-holed. In-flight requests still finish on their existing
|
|
264
|
+
// socket (close() does not abort them). Cheap to call -- safe to invoke
|
|
265
|
+
// even if nothing changed.
|
|
266
|
+
function drainPool() {
|
|
267
|
+
const old = [_strictAgent, _longPollAgent, _eventStreamAgent, _mailboxAgent];
|
|
268
|
+
_strictAgent = _makeStrictAgent();
|
|
269
|
+
_longPollAgent = _makeLongPollAgent();
|
|
270
|
+
_eventStreamAgent = _makeEventStreamAgent();
|
|
271
|
+
_mailboxAgent = _makeMailboxAgent();
|
|
272
|
+
for (const agent of old) {
|
|
273
|
+
try {
|
|
274
|
+
// Agent.close() returns a Promise that resolves when all in-flight
|
|
275
|
+
// requests finish. We do not await it -- the new agents already
|
|
276
|
+
// serve fresh calls, and the old ones drain naturally.
|
|
277
|
+
const p = agent.close();
|
|
278
|
+
if (p && typeof p.catch === 'function') p.catch(() => {});
|
|
279
|
+
} catch (_) {}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
function _pickDispatcher(url) {
|
|
284
|
+
// Four dispatcher pools, picked by exact path match:
|
|
285
|
+
// - /a2a/events/poll -> _longPollAgent (65s timeouts)
|
|
286
|
+
// - /a2a/events/stream -> _eventStreamAgent (stream body timeout disabled)
|
|
287
|
+
// - /a2a/mailbox/{inbound,outbound} -> _mailboxAgent (45s timeouts)
|
|
288
|
+
// - everything else -> _strictAgent (30s timeouts)
|
|
289
|
+
//
|
|
290
|
+
// The split exists because each path has a different app-layer
|
|
291
|
+
// AbortSignal ceiling: event poll = 60s, event stream = minutes,
|
|
292
|
+
// mailbox inbound = 35s, mailbox outbound = 30s (racy against strict's
|
|
293
|
+
// 30s), heartbeat / hello / transport = <= 10s. The strict agent's 30s
|
|
294
|
+
// headers/bodyTimeout would otherwise fire BEFORE the longer app signals,
|
|
295
|
+
// silently capping those paths and making AbortSignal cosmetic. Mailbox /
|
|
296
|
+
// event dispatchers keep the app-layer signal as the visible timeout
|
|
297
|
+
// while still bounding wedged-socket lifetime.
|
|
298
|
+
//
|
|
299
|
+
// Match on path (not host) to avoid coupling to a specific hub URL.
|
|
300
|
+
//
|
|
301
|
+
// Round-6 (§19.8): previously the matcher accepted both
|
|
302
|
+
// `pathname === '/a2a/events/poll'` AND `pathname.endsWith('/a2a/events/poll')`.
|
|
303
|
+
// The endsWith branch was a needless widening that also caught
|
|
304
|
+
// unrelated paths such as `/admin/a2a/events/poll`, `/v2/a2a/events/poll`,
|
|
305
|
+
// or any future hub path that happens to end with the same suffix --
|
|
306
|
+
// those would silently inherit the 65s long-poll timeout when they
|
|
307
|
+
// should fail fast on the 30s strict timeout. Use exact match only.
|
|
308
|
+
// For hub deployments mounted under a base path (rare; not in the
|
|
309
|
+
// current hub repo), set EVOLVER_LONG_POLL_PATH to override.
|
|
310
|
+
const longPollPath = process.env.EVOLVER_LONG_POLL_PATH || '/a2a/events/poll';
|
|
311
|
+
const eventStreamPath = process.env.EVOLVER_EVENT_STREAM_PATH || '/a2a/events/stream';
|
|
312
|
+
try {
|
|
313
|
+
const u = new URL(url);
|
|
314
|
+
if (u.pathname === longPollPath) {
|
|
315
|
+
return _longPollAgent;
|
|
316
|
+
}
|
|
317
|
+
if (u.pathname === eventStreamPath) {
|
|
318
|
+
return _eventStreamAgent;
|
|
319
|
+
}
|
|
320
|
+
if (u.pathname === '/a2a/mailbox/inbound' || u.pathname === '/a2a/mailbox/outbound') {
|
|
321
|
+
return _mailboxAgent;
|
|
322
|
+
}
|
|
323
|
+
} catch {
|
|
324
|
+
// fall through to strict
|
|
325
|
+
}
|
|
326
|
+
return _strictAgent;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// Test seam: lets unit tests swap in a mock fetch without forking the call
|
|
330
|
+
// path. Production code must NEVER reassign this from outside the module.
|
|
331
|
+
let _fetchImpl = undiciFetch;
|
|
332
|
+
function _setFetchImplForTest(fn) { _fetchImpl = fn || undiciFetch; }
|
|
333
|
+
|
|
334
|
+
// Error codes that indicate a network-layer disruption rather than an
|
|
335
|
+
// application-layer error. On Linux, a NetworkManager reconnect, VPN
|
|
336
|
+
// re-establishment, or WiFi hand-off invalidates the 5-tuples of all
|
|
337
|
+
// existing TCP connections in the undici pool. The kernel surfaces the
|
|
338
|
+
// break as one of these codes on the next read/write; undici wraps them
|
|
339
|
+
// in Error objects but preserves the original .code property.
|
|
340
|
+
//
|
|
341
|
+
// When we see one of these we call drainPool() so the *next* request
|
|
342
|
+
// gets a freshly connected socket instead of reusing a dead one, then
|
|
343
|
+
// re-throw so the caller's existing error path still fires normally.
|
|
344
|
+
// ECONNRESET -- TCP RST received (NM reconnect, VPN teardown)
|
|
345
|
+
// ENETDOWN -- network interface went offline
|
|
346
|
+
// ENETUNREACH -- no route to host (transient during re-IP)
|
|
347
|
+
// EHOSTUNREACH-- host unreachable (routing table flush)
|
|
348
|
+
// ENOTCONN -- socket not connected (rare but seen on interface bounce)
|
|
349
|
+
// UND_ERR_SOCKET -- undici's own wrapper for abrupt socket closure
|
|
350
|
+
const _NETWORK_DISRUPTION_CODES = new Set([
|
|
351
|
+
'ECONNRESET',
|
|
352
|
+
'ECONNREFUSED',
|
|
353
|
+
'ENETDOWN',
|
|
354
|
+
'ENETUNREACH',
|
|
355
|
+
'EHOSTUNREACH',
|
|
356
|
+
'EAI_AGAIN',
|
|
357
|
+
'ENOTFOUND',
|
|
358
|
+
'ENOTCONN',
|
|
359
|
+
'ETIMEDOUT',
|
|
360
|
+
'ABORT_ERR',
|
|
361
|
+
'UND_ERR_SOCKET',
|
|
362
|
+
'UND_ERR_CONNECT_TIMEOUT',
|
|
363
|
+
'UND_ERR_HEADERS_TIMEOUT',
|
|
364
|
+
'UND_ERR_BODY_TIMEOUT',
|
|
365
|
+
]);
|
|
366
|
+
|
|
367
|
+
function _isNetworkDisruptionError(err) {
|
|
368
|
+
if (!err) return false;
|
|
369
|
+
// undici may carry the original code either on err.code or on err.cause.code
|
|
370
|
+
if (_NETWORK_DISRUPTION_CODES.has(err.code)) return true;
|
|
371
|
+
if (err.cause && _NETWORK_DISRUPTION_CODES.has(err.cause.code)) return true;
|
|
372
|
+
return false;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
function isHubUnreachableError(err) {
|
|
376
|
+
if (!err) return false;
|
|
377
|
+
if (err instanceof HubUnreachableError || err.code === 'HUB_UNREACHABLE') return true;
|
|
378
|
+
if (_isNetworkDisruptionError(err)) return true;
|
|
379
|
+
if (err.name === 'AbortError' || err.name === 'TimeoutError') return true;
|
|
380
|
+
if (err.cause && (err.cause.name === 'AbortError' || err.cause.name === 'TimeoutError')) return true;
|
|
381
|
+
return false;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
function hubUnreachableBackoffMs(failureCount) {
|
|
385
|
+
const n = Math.max(1, Number(failureCount) || 1);
|
|
386
|
+
return Math.min(
|
|
387
|
+
HUB_UNREACHABLE_BACKOFF_BASE_MS * Math.pow(2, n - 1),
|
|
388
|
+
HUB_UNREACHABLE_BACKOFF_MAX_MS
|
|
389
|
+
);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
function hubResponseContentType(res) {
|
|
393
|
+
const headers = res && res.headers;
|
|
394
|
+
if (!headers) return '';
|
|
395
|
+
let value = '';
|
|
396
|
+
try {
|
|
397
|
+
if (typeof headers.get === 'function') {
|
|
398
|
+
value = headers.get('content-type') || headers.get('Content-Type') || '';
|
|
399
|
+
} else if (typeof headers === 'object') {
|
|
400
|
+
value = headers['content-type'] || headers['Content-Type'] || '';
|
|
401
|
+
}
|
|
402
|
+
} catch (_) {
|
|
403
|
+
value = '';
|
|
404
|
+
}
|
|
405
|
+
return String(value || '').toLowerCase();
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
function isHubApiResponse(res) {
|
|
409
|
+
const contentType = hubResponseContentType(res);
|
|
410
|
+
if (!contentType) return true;
|
|
411
|
+
return contentType.includes('json');
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
function isHubUnreachableResponse(res) {
|
|
415
|
+
if (!res) return false;
|
|
416
|
+
const status = Number(res.status || 0);
|
|
417
|
+
const contentType = hubResponseContentType(res);
|
|
418
|
+
if (!contentType) return false;
|
|
419
|
+
if (isHubApiResponse(res)) return false;
|
|
420
|
+
if (status >= 200 && status < 300) return true;
|
|
421
|
+
return status === 401 || status === 403 || status === 408 || status === 429 || status >= 500;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
async function drainHubResponse(res) {
|
|
425
|
+
try {
|
|
426
|
+
if (res && res.body && typeof res.body.cancel === 'function') {
|
|
427
|
+
await res.body.cancel().catch(() => {});
|
|
428
|
+
}
|
|
429
|
+
} catch (_) {
|
|
430
|
+
// Best-effort cleanup only; never turn body cleanup into a caller error.
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
function _truncateUtf8(text, maxBytes) {
|
|
435
|
+
const buf = Buffer.from(String(text || ''), 'utf8');
|
|
436
|
+
if (buf.length <= maxBytes) return String(text || '');
|
|
437
|
+
return buf.subarray(0, maxBytes).toString('utf8') + '\n...[truncated]';
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
function _truncateLogText(text, maxChars) {
|
|
441
|
+
const s = String(text || '');
|
|
442
|
+
if (s.length <= maxChars) return s;
|
|
443
|
+
return s.slice(0, maxChars) + '\n...[truncated]';
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
function _sanitizeJsonForHubLog(value) {
|
|
447
|
+
if (Array.isArray(value)) {
|
|
448
|
+
return value.map(function (item) { return _sanitizeJsonForHubLog(item); });
|
|
449
|
+
}
|
|
450
|
+
if (!value || typeof value !== 'object') return value;
|
|
451
|
+
|
|
452
|
+
const clean = {};
|
|
453
|
+
for (const [key, child] of Object.entries(value)) {
|
|
454
|
+
if (HUB_LOG_SENSITIVE_KEY_RE.test(key)) {
|
|
455
|
+
clean[key] = HUB_LOG_REDACTED;
|
|
456
|
+
} else {
|
|
457
|
+
clean[key] = _sanitizeJsonForHubLog(child);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
return clean;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
function sanitizeHubResponseForLog(text, options = {}) {
|
|
464
|
+
let safeText = String(text || '');
|
|
465
|
+
const n = Number(options.maxChars);
|
|
466
|
+
const maxChars = Number.isFinite(n) && n >= 0 ? n : HUB_LOG_TEXT_MAX_CHARS;
|
|
467
|
+
|
|
468
|
+
try {
|
|
469
|
+
safeText = JSON.stringify(_sanitizeJsonForHubLog(JSON.parse(safeText)));
|
|
470
|
+
} catch (_) {
|
|
471
|
+
// Non-JSON hub responses still pass through redactString below.
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
safeText = redactString(safeText);
|
|
475
|
+
return _truncateLogText(safeText, maxChars);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
async function readHubResponseText(res, options = {}) {
|
|
479
|
+
if (!res) return '';
|
|
480
|
+
const maxBytes = Math.max(0, Number(options.maxBytes) || HUB_ERROR_TEXT_MAX_BYTES);
|
|
481
|
+
|
|
482
|
+
if (res.body && typeof res.body.getReader === 'function') {
|
|
483
|
+
const reader = res.body.getReader();
|
|
484
|
+
const decoder = new TextDecoder();
|
|
485
|
+
const chunks = [];
|
|
486
|
+
let total = 0;
|
|
487
|
+
let truncated = false;
|
|
488
|
+
try {
|
|
489
|
+
while (true) {
|
|
490
|
+
const part = await reader.read();
|
|
491
|
+
if (part.done) break;
|
|
492
|
+
const value = part.value instanceof Uint8Array
|
|
493
|
+
? part.value
|
|
494
|
+
: Buffer.from(part.value || '');
|
|
495
|
+
const remaining = maxBytes - total;
|
|
496
|
+
if (remaining > 0) {
|
|
497
|
+
const slice = value.subarray(0, remaining);
|
|
498
|
+
chunks.push(slice);
|
|
499
|
+
total += slice.byteLength;
|
|
500
|
+
}
|
|
501
|
+
// Only truncate when a chunk genuinely OVERFLOWS the remaining
|
|
502
|
+
// capacity. A chunk that fills the buffer exactly (byteLength ===
|
|
503
|
+
// remaining, total === maxBytes) must NOT be flagged truncated: the
|
|
504
|
+
// stream may end cleanly on the next read. Flagging it appended
|
|
505
|
+
// `...[truncated]` to a complete body, which broke JSON.parse for a
|
|
506
|
+
// response sitting exactly on the 4MB cap. When remaining hits 0, any
|
|
507
|
+
// subsequent non-empty chunk (byteLength > 0 > remaining 0) trips this.
|
|
508
|
+
if (value.byteLength > remaining) {
|
|
509
|
+
truncated = true;
|
|
510
|
+
try { await reader.cancel(); } catch (_) {}
|
|
511
|
+
break;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
} catch (err) {
|
|
515
|
+
try { await reader.cancel(); } catch (_) {}
|
|
516
|
+
throw err;
|
|
517
|
+
} finally {
|
|
518
|
+
try { reader.releaseLock(); } catch (_) {}
|
|
519
|
+
}
|
|
520
|
+
const text = decoder.decode(Buffer.concat(chunks, total));
|
|
521
|
+
return truncated ? text + '\n...[truncated]' : text;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
if (typeof res.text === 'function') {
|
|
525
|
+
try {
|
|
526
|
+
return _truncateUtf8(await res.text(), maxBytes);
|
|
527
|
+
} catch (err) {
|
|
528
|
+
await drainHubResponse(res);
|
|
529
|
+
throw err;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
await drainHubResponse(res);
|
|
534
|
+
return '';
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
async function readHubResponseJson(res, options = {}) {
|
|
538
|
+
const text = await readHubResponseText(res, {
|
|
539
|
+
maxBytes: options.maxBytes || HUB_JSON_TEXT_MAX_BYTES,
|
|
540
|
+
});
|
|
541
|
+
return JSON.parse(text);
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
async function throwIfHubUnreachableResponse(res, context = 'hub') {
|
|
545
|
+
if (!isHubUnreachableResponse(res)) return;
|
|
546
|
+
const contentType = hubResponseContentType(res);
|
|
547
|
+
let bodyText = '';
|
|
548
|
+
try {
|
|
549
|
+
bodyText = await readHubResponseText(res, { maxBytes: HUB_ERROR_TEXT_MAX_BYTES });
|
|
550
|
+
} catch (err) {
|
|
551
|
+
bodyText = `[body read failed: ${err && err.message || err}]`;
|
|
552
|
+
}
|
|
553
|
+
const bodySnippet = _truncateUtf8(String(bodyText || '').replace(/\s+/g, ' ').trim(), 512);
|
|
554
|
+
const statusCode = Number(res.status || 0) || null;
|
|
555
|
+
const label = contentType || 'unknown content-type';
|
|
556
|
+
throw new HubUnreachableError(
|
|
557
|
+
`${context} returned a non-API Hub response (${statusCode || 'unknown status'}, ${label})`,
|
|
558
|
+
{ statusCode, contentType, bodySnippet, context }
|
|
559
|
+
);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
function _validateHubUrl(url) {
|
|
563
|
+
let parsed;
|
|
564
|
+
try {
|
|
565
|
+
parsed = new URL(url);
|
|
566
|
+
} catch {
|
|
567
|
+
throw new Error(
|
|
568
|
+
'[hubFetch] Hub URL is not a valid URL: ' + JSON.stringify(url) + '. ' +
|
|
569
|
+
'Set EVOMAP_HUB_ALLOW_INSECURE=1 to bypass (local dev / mock hub only).'
|
|
570
|
+
);
|
|
571
|
+
}
|
|
572
|
+
if (parsed.protocol !== 'https:') {
|
|
573
|
+
throw new Error(
|
|
574
|
+
'[hubFetch] Hub URL must use https:// — got ' + JSON.stringify(url) + '. ' +
|
|
575
|
+
'Set EVOMAP_HUB_ALLOW_INSECURE=1 to bypass (local dev / mock hub only).'
|
|
576
|
+
);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
// Public scheme-only guard for callers that already manage their own HTTP
|
|
581
|
+
// transport (Node's `http`/`https` modules, the platform `fetch`, etc.) and
|
|
582
|
+
// just want to honour the same "https-only unless EVOMAP_HUB_ALLOW_INSECURE=1"
|
|
583
|
+
// posture hubFetch enforces. Throws synchronously on bad input — match
|
|
584
|
+
// _validateHubUrl's throw semantics so call sites can wrap in try/catch.
|
|
585
|
+
//
|
|
586
|
+
// Use this instead of bare URL/fetch when you cannot route through hubFetch
|
|
587
|
+
// (e.g. the existing src/atp/atpExecute.js and src/atp/hubClient.js paths
|
|
588
|
+
// that use http.request / native fetch directly).
|
|
589
|
+
function enforceHubScheme(url) {
|
|
590
|
+
if (process.env.EVOMAP_HUB_ALLOW_INSECURE === '1') return;
|
|
591
|
+
_validateHubUrl(url);
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
// async so synchronous validation throws become Promise rejections — every
|
|
595
|
+
// caller already awaits / .then()s the result, and this makes the function
|
|
596
|
+
// behave uniformly for `assert.rejects(...)` in tests.
|
|
597
|
+
async function hubFetch(url, options) {
|
|
598
|
+
if (process.env.EVOMAP_HUB_ALLOW_INSECURE === '1') {
|
|
599
|
+
// Insecure mode is documented as "local dev / mock hub on http:// or
|
|
600
|
+
// self-signed cert". In that mode use the platform fetch — Node's
|
|
601
|
+
// built-in global.fetch is identical engine to undici, but keeping it
|
|
602
|
+
// as the platform lookup lets tests that stub `global.fetch = mockImpl`
|
|
603
|
+
// intercept the call without forking through _setFetchImplForTest. If
|
|
604
|
+
// a test has explicitly installed the seam, honor that — the explicit
|
|
605
|
+
// override wins over the implicit global lookup.
|
|
606
|
+
const insecureFetch = (_fetchImpl !== undiciFetch) ? _fetchImpl : global.fetch;
|
|
607
|
+
return insecureFetch(url, options);
|
|
608
|
+
}
|
|
609
|
+
_validateHubUrl(url);
|
|
610
|
+
// Object.assign last-wins is intentional: a caller-supplied dispatcher
|
|
611
|
+
// would defeat the TLS guard, so we always force ours. No current caller
|
|
612
|
+
// passes one; revisit if that changes.
|
|
613
|
+
const dispatcher = _pickDispatcher(url);
|
|
614
|
+
try {
|
|
615
|
+
return await _fetchImpl(url, Object.assign({}, options, { dispatcher }));
|
|
616
|
+
} catch (err) {
|
|
617
|
+
// On Linux a NetworkManager reconnect, VPN re-establishment, or WiFi
|
|
618
|
+
// hand-off silently invalidates all existing TCP sockets in the undici
|
|
619
|
+
// pool. The kernel surfaces the break as a network-disruption error
|
|
620
|
+
// code on the next read/write. Without drainPool() the next request
|
|
621
|
+
// reuses another dead socket from the same pool and suffers the same
|
|
622
|
+
// error again. Draining here lets the *next* call open a fresh
|
|
623
|
+
// connection immediately without waiting for the heartbeat's normal
|
|
624
|
+
// interval or the drift-detector's 2*interval poke window.
|
|
625
|
+
//
|
|
626
|
+
// We call drainPool() synchronously before re-throwing so the caller's
|
|
627
|
+
// existing error path (heartbeat .catch, poll .catch, etc.) fires as
|
|
628
|
+
// normal -- this is purely a pool-hygiene side-effect, not a retry.
|
|
629
|
+
if (isHubUnreachableError(err)) {
|
|
630
|
+
try {
|
|
631
|
+
drainPool();
|
|
632
|
+
} catch (_) { /* never block the throw on a pool-drain failure */ }
|
|
633
|
+
}
|
|
634
|
+
throw err;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
module.exports = {
|
|
639
|
+
hubFetch,
|
|
640
|
+
drainPool,
|
|
641
|
+
HubUnreachableError,
|
|
642
|
+
drainHubResponse,
|
|
643
|
+
hubResponseContentType,
|
|
644
|
+
hubUnreachableBackoffMs,
|
|
645
|
+
isHubApiResponse,
|
|
646
|
+
isHubUnreachableError,
|
|
647
|
+
isHubUnreachableResponse,
|
|
648
|
+
readHubResponseJson,
|
|
649
|
+
readHubResponseText,
|
|
650
|
+
sanitizeHubResponseForLog,
|
|
651
|
+
throwIfHubUnreachableResponse,
|
|
652
|
+
_isNetworkDisruptionError,
|
|
653
|
+
_validateHubUrl,
|
|
654
|
+
enforceHubScheme,
|
|
655
|
+
// For callers that must build their own HTTP transport. The Node
|
|
656
|
+
// native case (`https.request(...)`) needs an Agent pinned to
|
|
657
|
+
// rejectUnauthorized:true so a global `NODE_TLS_REJECT_UNAUTHORIZED=0`
|
|
658
|
+
// cannot weaken the Hub channel; pass `strictHttpsAgent` as
|
|
659
|
+
// `options.agent`. Skip when `EVOMAP_HUB_ALLOW_INSECURE=1`, matching
|
|
660
|
+
// hubFetch's own escape-hatch behaviour.
|
|
661
|
+
//
|
|
662
|
+
// For fetch-based callers do NOT pair a hand-rolled Agent with
|
|
663
|
+
// `global.fetch`: `global.fetch` is backed by Node's *internal*
|
|
664
|
+
// undici, and an Agent from the installed `undici` package crashes
|
|
665
|
+
// it with `UND_ERR_INVALID_ARG: invalid onRequestStart method`
|
|
666
|
+
// (see the warning at the top of this file). Route through
|
|
667
|
+
// `hubFetch()` itself instead — it already applies the dispatcher
|
|
668
|
+
// from the right undici copy.
|
|
669
|
+
strictHttpsAgent: _strictHttpsAgent,
|
|
670
|
+
_getHubFetchConfigForTest,
|
|
671
|
+
_setFetchImplForTest,
|
|
672
|
+
};
|