/* * 蓝基因医学 * 解锁全题库 * 日期 2025-01-26 * 不支持Shadowrocket * 其他代理工具可用 [rewrite_local] ^https?:\/\/(?:edu|user)\.lezaitizhong\.com url script-response-body https://raw.githubusercontent.com/Yu9191/Rewrite/main/lanjiyin.js [mitm] hostname = *.lezaitizhong.com */ const $ = new Env("蓝基因"); (function(a,b){var aA=a0d,az=a0e,c=a();while(!![]){try{var d=parseInt(az(0x562))/0x1+parseInt(az(0x3a1))/0x2*(parseInt(az(0x134))/0x3)+parseInt(az(0x14b))/0x4*(-parseInt(aA(0x195,'\x67\x4e\x52\x61'))/0x5)+-parseInt(az(0x1cb))/0x6+parseInt(aA(0x426,'\x4a\x73\x33\x65'))/0x7*(parseInt(az(0x454))/0x8)+-parseInt(aA(0x610,'\x46\x64\x73\x77'))/0x9+-parseInt(az(0x4c1))/0xa;if(d===b)break;else c['push'](c['shift']());}catch(e){c['push'](c['shift']());}}}(a0c,0xa6937));function a0d(a,b){var c=a0c();return a0d=function(d,e){d=d-0x87;var f=c[d];if(a0d['\x4b\x78\x4f\x4f\x62\x56']===undefined){var g=function(l){var m='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';var n='',o='',p=n+g;for(var q=0x0,r,s,t=0x0;s=l['\x63\x68\x61\x72\x41\x74'](t++);~s&&(r=q%0x4?r*0x40+s:s,q++%0x4)?n+=p['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](t+0xa)-0xa!==0x0?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0xff&r>>(-0x2*q&0x6)):q:0x0){s=m['\x69\x6e\x64\x65\x78\x4f\x66'](s);}for(var u=0x0,v=n['\x6c\x65\x6e\x67\x74\x68'];u>(-0x2*q&0x6)):q:0x0){s=m['\x69\x6e\x64\x65\x78\x4f\x66'](s);}for(var u=0x0,v=n['\x6c\x65\x6e\x67\x74\x68'];u{var aL=a0e,aK=a0d,a={'\x45\x44\x55\x63\x4e':function(j,k){return j===k;},'\x73\x75\x69\x66\x71':aK(0x2f3,'\x6b\x62\x54\x6b'),'\x73\x62\x41\x6a\x61':aK(0x162,'\x26\x43\x53\x37'),'\x75\x72\x51\x47\x54':function(j,k){return j==k;},'\x6a\x42\x76\x4d\x65':aL(0x4ce),'\x63\x4d\x46\x51\x6d':function(j,k){return j!==k;},'\x43\x44\x6f\x6e\x53':aK(0x187,'\x4f\x57\x42\x28'),'\x59\x54\x72\x52\x49':aK(0x3a2,'\x78\x6c\x65\x45'),'\x56\x73\x76\x58\x4b':function(j,k){return j=k;},'\x58\x56\x70\x77\x4f':function(j,k){return j===k;},'\x62\x61\x73\x58\x64':aL(0x3f5),'\x5a\x4d\x6c\x6f\x4f':aK(0x3bd,'\x21\x34\x77\x55'),'\x6d\x51\x63\x78\x46':aL(0xad),'\x56\x6b\x53\x48\x71':function(j,k){return j&&k;},'\x6c\x47\x68\x42\x70':aK(0x9d,'\x55\x6e\x78\x62'),'\x6c\x45\x65\x48\x77':function(j,k,l){return j(k,l);},'\x48\x73\x71\x4b\x70':aL(0x34e),'\x45\x55\x54\x71\x69':function(j,k){return j=k;},'\x66\x62\x77\x51\x58':aL(0x2a6),'\x59\x6b\x64\x6b\x70':function(j,k){return j<=k;},'\x63\x61\x52\x78\x6a':function(j,k){return j=0x0;--av){var aw=this[cV(0x38b)][av];if(aw[cV(0x92)]===V)return this[cV(0x3fe)](aw[cU(0x570,'\x4d\x56\x77\x6d')],aw[cU(0x313,'\x67\x4e\x52\x61')]),al[cU(0x234,'\x6b\x54\x25\x51')](Q,aw),aj;}else{var ao=q[cV(0x334)](a6,an,ag);if(ao){if(q[cU(0x441,'\x46\x64\x73\x77')](q[cU(0xf7,'\x78\x26\x70\x47')],q[cU(0x3b4,'\x48\x6e\x5a\x58')]))return Z[cU(0x3d9,'\x59\x4b\x25\x62')](this,arguments);else{if(ao===V)continue;return ao;}}}}if(q[cV(0x318)]===ag[cV(0x144)])ag[cU(0x12a,'\x2a\x44\x38\x5b')]=ag[cV(0x251)]=ag[cU(0x3b6,'\x4f\x30\x41\x32')];else{if(q[cV(0xf3)](q[cV(0x290)],ag[cV(0x144)])){if(q[cU(0x2f6,'\x70\x30\x50\x71')](cV(0x1de),q[cU(0xf6,'\x49\x4e\x50\x78')]))return this[cU(0x110,'\x6a\x70\x21\x29')](an,T);else{if(ai===P)throw ai=T,ag[cU(0x550,'\x39\x4e\x4b\x47')];ag[cV(0x5b4)+cV(0xd1)](ag[cV(0x189)]);}}else q[cV(0x10d)](q[cU(0x28f,'\x5e\x38\x72\x73')],ag[cV(0x144)])&&ag[cV(0x38c)](q[cV(0x498)],ag[cU(0x316,'\x68\x30\x6c\x5e')]);}ai=R;var ap=N(ae,af,ag);if(q[cU(0x3f1,'\x55\x6e\x78\x62')](q[cU(0x4c2,'\x2a\x75\x78\x6a')],ap[cV(0x609)])){if(q[cU(0x15f,'\x74\x79\x47\x62')](q[cU(0x137,'\x6e\x32\x4a\x25')],q[cV(0x535)])){if(ai=ag[cV(0x2cf)]?T:Q,q[cU(0x453,'\x73\x29\x37\x65')](ap[cU(0x4d0,'\x6a\x70\x21\x29')],V))continue;var aq={};return aq[cU(0x5b5,'\x33\x21\x39\x52')]=ap[cU(0xcf,'\x78\x56\x62\x4d')],aq[cV(0x2cf)]=ag[cU(0x133,'\x4a\x73\x33\x65')],aq;}else{if(e){var ay=i[cU(0x340,'\x21\x34\x77\x55')](j,arguments);return k=null,ay;}}}q[cV(0x49b)](q[cU(0xeb,'\x53\x25\x4e\x5e')],ap[cV(0x609)])&&(ai=T,ag[cU(0x2ea,'\x5e\x30\x65\x76')]=q[cU(0x2b1,'\x6e\x32\x4a\x25')],ag[cV(0x189)]=ap[cV(0x189)]);}}}};}else var ak=T[ae](N),al=ak[cT(0x268)];}function a6(ae,af){var cX=aX,cW=aY,ag={};ag[cW(0x161)]=a[cX(0x1c9,'\x59\x49\x74\x26')];var ah=ag;if(a[cW(0x4b1)](cX(0x393,'\x68\x30\x6c\x5e'),cX(0x1c7,'\x7a\x71\x44\x75'))){var ai=a[cW(0x452)][cX(0xd8,'\x6c\x24\x4f\x36')]('\x7c'),aj=0x0;while(!![]){switch(ai[aj++]){case'\x30':var ak=a[cX(0x48d,'\x6b\x54\x25\x51')](N,am,ae[cX(0x32b,'\x59\x4b\x25\x62')],af[cX(0x1b1,'\x78\x6c\x65\x45')]);continue;case'\x31':if(a[cX(0x4e0,'\x26\x43\x53\x37')](am,z))return af[cX(0x21f,'\x75\x25\x35\x4f')]=null,a[cX(0x15d,'\x46\x64\x73\x77')](cX(0x3e5,'\x48\x46\x4c\x6f'),al)&&ae[cW(0x404)][cW(0x542)]&&(af[cW(0x144)]=cW(0x542),af[cW(0x189)]=z,a6(ae,af),a[cX(0x3ca,'\x33\x21\x39\x52')](a[cW(0x1c8)],af[cW(0x144)]))||a[cX(0x339,'\x53\x25\x4e\x5e')](a[cX(0x5f1,'\x6c\x24\x4f\x36')],al)&&(af[cW(0x144)]=a[cX(0x49e,'\x39\x4e\x4b\x47')],af[cW(0x189)]=new TypeError(a[cX(0x39d,'\x2a\x44\x38\x5b')](a[cW(0x4f3)],al)+a[cW(0x2b8)])),V;continue;case'\x32':if(a[cX(0x532,'\x32\x6a\x38\x31')](a[cX(0x388,'\x39\x74\x69\x77')],ak[cW(0x609)]))return af[cX(0x31d,'\x6f\x76\x73\x64')]=a[cX(0x10c,'\x5e\x30\x65\x76')],af[cX(0x4af,'\x47\x62\x55\x67')]=ak[cW(0x189)],af[cX(0x186,'\x6f\x76\x73\x64')]=null,V;continue;case'\x33':var al=af[cW(0x144)],am=ae[cW(0x404)][al];continue;case'\x34':return an?an[cX(0x468,'\x7a\x71\x44\x75')]?(af[ae[cW(0x185)]]=an[cW(0x268)],af[cW(0x227)]=ae[cW(0x3c1)],a[cX(0x2d5,'\x4f\x30\x41\x32')](cW(0x542),af[cX(0x2ea,'\x5e\x30\x65\x76')])&&(af[cX(0x47f,'\x4a\x73\x33\x65')]=a[cX(0x27f,'\x4f\x57\x42\x28')],af[cX(0xc4,'\x49\x4e\x50\x78')]=z),af[cX(0x1e0,'\x59\x49\x74\x26')]=null,V):an:(af[cX(0x2fa,'\x44\x44\x4a\x68')]=a[cW(0x1c8)],af[cX(0x5b8,'\x4f\x48\x57\x42')]=new TypeError(a[cW(0x4a3)]),af[cW(0x55b)]=null,V);case'\x35':var an=ak[cX(0x613,'\x5e\x30\x65\x76')];continue;}break;}}else{var ap={};ap[cW(0x1c4)]=ah[cW(0x161)],(this[cX(0x5f4,'\x6e\x32\x4a\x25')]=[ap],I[cW(0x3f7)](T,this),this[cX(0x249,'\x6c\x24\x4f\x36')](!0x0));}}function a7(ae){var cZ=aX,cY=aY;if(q[cY(0x329)]!==cZ(0x598,'\x4d\x56\x77\x6d')){var af={};af[cY(0x1c4)]=ae[0x0];var ag=af;q[cY(0x4cc)](0x1,ae)&&(ag[cZ(0x262,'\x5e\x38\x72\x73')]=ae[0x1]),q[cY(0x487)](0x2,ae)&&(ag[cY(0x92)]=ae[0x2],ag[cZ(0x368,'\x26\x43\x53\x37')]=ae[0x3]),this[cY(0x38b)][cZ(0x2f7,'\x69\x26\x25\x6c')](ag);}else{for(var ai=q[cY(0x1fe)](this[cY(0x38b)][cZ(0x462,'\x59\x49\x74\x26')],0x1);q[cZ(0x345,'\x41\x73\x62\x72')](ai,0x0);--ai){var aj=this[cY(0x38b)][ai];if(q[cY(0x2a2)](aj[cY(0x1c4)],V)){var ak=aj[cZ(0x58d,'\x32\x6a\x38\x31')];if(q[cY(0xc2)](q[cY(0x290)],ak[cY(0x609)])){var al=ak[cZ(0x450,'\x33\x21\x39\x52')];q[cY(0x614)](a8,aj);}return al;}}throw N(q[cY(0x4e3)]);}}function a8(ae){var d2=aX,d1=aY,af={'\x47\x57\x69\x5a\x73':function(ah,ai){var d0=a0e;return q[d0(0x5a7)](ah,ai);}};if(q[d1(0xe3)](q[d2(0x3ec,'\x67\x4e\x52\x61')],q[d2(0x232,'\x6c\x24\x4f\x36')])){if(af[d1(0x2ce)](Q,G))throw a8=a2,M[d2(0x4d0,'\x6a\x70\x21\x29')];Y[d2(0x5d1,'\x28\x4a\x6b\x69')+d1(0xd1)](D[d1(0x189)]);}else{var ag=ae[d2(0x22f,'\x41\x73\x62\x72')]||{};ag[d1(0x609)]=q[d2(0x4cb,'\x48\x46\x4c\x6f')],delete ag[d1(0x189)],ae[d1(0x3bf)]=ag;}}function a9(ae){var d6=aY,d5=aX,af={'\x76\x41\x73\x4a\x69':function(ah,ai){var d3=a0e;return q[d3(0x545)](ah,ai);},'\x5a\x51\x64\x58\x65':function(ah,ai){var d4=a0e;return q[d4(0x1a6)](ah,ai);},'\x45\x4b\x57\x50\x64':d5(0x1c5,'\x68\x30\x6c\x5e'),'\x53\x74\x6b\x50\x50':function(ah,ai){return ah(ai);}};if(q[d5(0x4c9,'\x6b\x62\x54\x6b')](d6(0x1bb),d6(0x1bb))){var ai=Y[D];if(ai)return ai[d5(0x4d7,'\x49\x4e\x50\x78')](aj);if(af[d5(0x302,'\x46\x64\x73\x77')](af[d6(0x49c)],typeof P[d6(0x227)]))return ag;if(!af[d5(0x104,'\x78\x6c\x65\x45')](ai,J[d6(0x310)])){var aj=-0x1,ak=function al(){var d8=d5,d7=d6;for(;af[d7(0x183)](++aj,ai[d7(0x310)]);)if(aj[d7(0xb3)](ak,aj))return al[d7(0x268)]=al[aj],al[d8(0x468,'\x7a\x71\x44\x75')]=!0x1,al;return al[d7(0x268)]=M,al[d8(0x41b,'\x4d\x56\x77\x6d')]=!0x0,al;};return ak[d6(0x227)]=ak;}}else{var ag={};ag[d5(0x2ee,'\x4f\x30\x41\x32')]=d6(0x2e9),(this[d5(0xcb,'\x50\x35\x6e\x5a')]=[ag],ae[d5(0x2df,'\x48\x6e\x5a\x58')](a7,this),this[d5(0x20d,'\x6e\x32\x4a\x25')](!0x0));}}function aa(ae){var db=aX,da=aY,af={'\x5a\x45\x6b\x72\x6b':function(aj,ak){var d9=a0e;return a[d9(0x50e)](aj,ak);},'\x55\x41\x77\x6d\x79':function(aj,ak){return aj===ak;},'\x51\x46\x4e\x4f\x54':a[da(0x337)]};if(a[db(0x2cc,'\x2a\x75\x78\x6a')](db(0x292,'\x4a\x73\x33\x65'),a[db(0x2e5,'\x6e\x32\x4a\x25')])){var ak=q[da(0x1a6)](q[db(0x4fc,'\x48\x6e\x5a\x58')],typeof T)&&ak[db(0x413,'\x2a\x75\x78\x6a')+'\x72'];return!!ak&&(ak===N||q[db(0x151,'\x6f\x76\x73\x64')](q[db(0x2f4,'\x21\x34\x77\x55')],ak[da(0x285)+'\x65']||ak[db(0x158,'\x47\x62\x55\x67')]));}else{if(ae||a[da(0x4b1)]('',ae)){if(a[da(0x3bc)](a[da(0x5dc)],a[db(0x164,'\x6c\x24\x4f\x36')])){var al=a2[da(0x204)][db(0x264,'\x50\x35\x6e\x5a')][db(0x30d,'\x21\x34\x77\x55')](M),am=Y[da(0x2aa)][da(0x26e)]({'\x63\x69\x70\x68\x65\x72\x74\x65\x78\x74':al},D[db(0x620,'\x6b\x54\x25\x51')][db(0x1ed,'\x5e\x38\x72\x73')][db(0x3c5,'\x39\x4e\x4b\x47')](al),{'\x69\x76':P[da(0x204)][db(0x157,'\x28\x4a\x6b\x69')][da(0x273)](q),'\x6d\x6f\x64\x65':ag[db(0x27e,'\x6c\x24\x4f\x36')][da(0x5ac)],'\x70\x61\x64\x64\x69\x6e\x67':J[da(0x105)][db(0x427,'\x6e\x32\x4a\x25')]});return am[da(0x1ac)](z[db(0x4ea,'\x4d\x56\x77\x6d')][da(0x59d)]);}else{var ag=ae[H];if(ag)return ag[da(0xb3)](ae);if(a[da(0x10b)](a[da(0xa8)],typeof ae[db(0x315,'\x4a\x73\x33\x65')]))return ae;if(!a[da(0xd3)](isNaN,ae[da(0x310)])){if(a[da(0x60f)](da(0x480),a[da(0x1fa)])){var am=T[da(0x3bf)];if(q[db(0x3e0,'\x6f\x76\x73\x64')](q[da(0x290)],am[db(0x17e,'\x77\x46\x69\x50')])){var an=am[db(0x3b6,'\x4f\x30\x41\x32')];q[db(0x317,'\x39\x74\x69\x77')](V,Q);}return an;}else{var ah=-0x1,ai=function am(){var dd=db,dc=da;if(af[dc(0x5da)](af[dc(0x583)],dc(0x254))){for(;++ah { s.call(this, t, (t, s, r) => { t ? a(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.encoding = "utf-8", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } getEnv() { return "undefined" != typeof $environment && $environment["surge-version"] ? "Surge" : "undefined" != typeof $environment && $environment["stash-version"] ? "Stash" : "undefined" != typeof module && module.exports ? "Node.js" : "undefined" != typeof $task ? "Quantumult X" : "undefined" != typeof $loon ? "Loon" : "undefined" != typeof $rocket ? "Shadowrocket" : void 0 } isNode() { return "Node.js" === this.getEnv() } isQuanX() { return "Quantumult X" === this.getEnv() } isSurge() { return "Surge" === this.getEnv() } isLoon() { return "Loon" === this.getEnv() } isShadowrocket() { return "Shadowrocket" === this.getEnv() } isStash() { return "Stash" === this.getEnv() } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const a = this.getdata(t); if (a) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, a) => e(a)) }) } runScript(t, e) { return new Promise(s => { let a = this.getdata("@chavy_boxjs_userCfgs.httpapi"); a = a ? a.replace(/\n/g, "").trim() : a; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [i, o] = a.split("@"), n = { url: `http://${o}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": i, Accept: "*/*" }, timeout: r }; this.post(n, (t, e, a) => s(a)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), a = !s && this.fs.existsSync(e); if (!s && !a) return {}; { const a = s ? t : e; try { return JSON.parse(this.fs.readFileSync(a)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), a = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : a ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const a = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of a) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, a) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[a + 1]) >> 0 == +e[a + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, a] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, a, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, a, r] = /^@(.*?)\.(.*?)$/.exec(e), i = this.getval(a), o = a ? "null" === i ? null : i || "{}" : "{}"; try { const e = JSON.parse(o); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), a) } catch (e) { const i = {}; this.lodash_set(i, r, t), s = this.setval(JSON.stringify(i), a) } } else s = this.setval(t, e); return s } getval(t) { switch (this.getEnv()) { case "Surge": case "Loon": case "Stash": case "Shadowrocket": return $persistentStore.read(t); case "Quantumult X": return $prefs.valueForKey(t); case "Node.js": return this.data = this.loaddata(), this.data[t]; default: return this.data && this.data[t] || null } } setval(t, e) { switch (this.getEnv()) { case "Surge": case "Loon": case "Stash": case "Shadowrocket": return $persistentStore.write(t, e); case "Quantumult X": return $prefs.setValueForKey(t, e); case "Node.js": return this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0; default: return this.data && this.data[e] || null } } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { switch (t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"], delete t.headers["content-type"], delete t.headers["content-length"]), t.params && (t.url += "?" + this.queryStr(t.params)), this.getEnv()) { case "Surge": case "Loon": case "Stash": case "Shadowrocket": default: this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, a) => { !t && s && (s.body = a, s.statusCode = s.status ? s.status : s.statusCode, s.status = s.statusCode), e(t, s, a) }); break; case "Quantumult X": this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: a, headers: r, body: i, bodyBytes: o } = t; e(null, { status: s, statusCode: a, headers: r, body: i, bodyBytes: o }, i, o) }, t => e(t && t.error || "UndefinedError")); break; case "Node.js": let s = require("iconv-lite"); this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: a, statusCode: r, headers: i, rawBody: o } = t, n = s.decode(o, this.encoding); e(null, { status: a, statusCode: r, headers: i, rawBody: o, body: n }, n) }, t => { const { message: a, response: r } = t; e(a, r, r && s.decode(r.rawBody, this.encoding)) }) } } post(t, e = (() => { })) { const s = t.method ? t.method.toLocaleLowerCase() : "post"; switch (t.body && t.headers && !t.headers["Content-Type"] && !t.headers["content-type"] && (t.headers["content-type"] = "application/x-www-form-urlencoded"), t.headers && (delete t.headers["Content-Length"], delete t.headers["content-length"]), this.getEnv()) { case "Surge": case "Loon": case "Stash": case "Shadowrocket": default: this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient[s](t, (t, s, a) => { !t && s && (s.body = a, s.statusCode = s.status ? s.status : s.statusCode, s.status = s.statusCode), e(t, s, a) }); break; case "Quantumult X": t.method = s, this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: a, headers: r, body: i, bodyBytes: o } = t; e(null, { status: s, statusCode: a, headers: r, body: i, bodyBytes: o }, i, o) }, t => e(t && t.error || "UndefinedError")); break; case "Node.js": let a = require("iconv-lite"); this.initGotEnv(t); const { url: r, ...i } = t; this.got[s](r, i).then(t => { const { statusCode: s, statusCode: r, headers: i, rawBody: o } = t, n = a.decode(o, this.encoding); e(null, { status: s, statusCode: r, headers: i, rawBody: o, body: n }, n) }, t => { const { message: s, response: r } = t; e(s, r, r && a.decode(r.rawBody, this.encoding)) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let a = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in a) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? a[e] : ("00" + a[e]).substr(("" + a[e]).length))); return t } queryStr(t) { let e = ""; for (const s in t) { let a = t[s]; null != a && "" !== a && ("object" == typeof a && (a = JSON.stringify(a)), e += `${s}=${a}&`) } return e = e.substring(0, e.length - 1), e } msg(e = t, s = "", a = "", r) { const i = t => { switch (typeof t) { case void 0: return t; case "string": switch (this.getEnv()) { case "Surge": case "Stash": default: return { url: t }; case "Loon": case "Shadowrocket": return t; case "Quantumult X": return { "open-url": t }; case "Node.js": return }case "object": switch (this.getEnv()) { case "Surge": case "Stash": case "Shadowrocket": default: { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } case "Loon": { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } case "Quantumult X": { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl, a = t["update-pasteboard"] || t.updatePasteboard; return { "open-url": e, "media-url": s, "update-pasteboard": a } } case "Node.js": return }default: return } }; if (!this.isMute) switch (this.getEnv()) { case "Surge": case "Loon": case "Stash": case "Shadowrocket": default: $notification.post(e, s, a, i(r)); break; case "Quantumult X": $notify(e, s, a, i(r)); break; case "Node.js": }if (!this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), a && t.push(a), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { switch (this.getEnv()) { case "Surge": case "Loon": case "Stash": case "Shadowrocket": case "Quantumult X": default: this.log("", `❗️${this.name}, 错误!`, t); break; case "Node.js": this.log("", `❗️${this.name}, 错误!`, t.stack) } } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; switch (this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), this.getEnv()) { case "Surge": case "Loon": case "Stash": case "Shadowrocket": case "Quantumult X": default: $done(t); break; case "Node.js": process.exit(1) } } }(t, e) }