diff --git a/_worker.src.js b/_worker.src.js index b1d0a2da1..c22e19ad1 100644 --- a/_worker.src.js +++ b/_worker.src.js @@ -1,952 +1 @@ - -// 部署完成后在网址后面加上这个,获取订阅器默认节点,/auto - -let mytoken= ['auto'];//快速订阅访问入口, 留空则不启动快速订阅 - -// 设置优选地址,不带端口号默认443,TLS订阅生成 -let addresses = [ - 'icook.tw:2053#官方优选域名', - 'cloudflare.cfgo.cc#优选官方线路', -]; - -// 设置优选地址api接口 -let addressesapi = [ - 'https://raw.githubusercontent.com/cmliu/WorkerVless2sub/main/addressesapi.txt?proxyip=true', //可参考内容格式 自行搭建。 - //'https://raw.githubusercontent.com/cmliu/WorkerVless2sub/main/addressesipv6api.txt', //IPv6优选内容格式 自行搭建。 -]; - -// 设置优选地址,不带端口号默认80,noTLS订阅生成 -let addressesnotls = [ - 'www.visa.com.sg#官方优选域名', - 'www.wto.org:8080#官方优选域名', - 'www.who.int:8880#官方优选域名', -]; - -// 设置优选noTLS地址api接口 -let addressesnotlsapi = [ - 'https://raw.githubusercontent.com/cmliu/CFcdnVmess2sub/main/addressesapi.txt', //可参考内容格式 自行搭建。 -]; - -let DLS = 8;//速度下限 -let addressescsv = [ - //'https://raw.githubusercontent.com/cmliu/WorkerVless2sub/main/addressescsv.csv', //iptest测速结果文件。 -]; - -let subconverter = "SUBAPI.fxxk.dedyn.io"; //在线订阅转换后端,目前使用CM的订阅转换功能。支持自建psub 可自行搭建https://github.com/bulianglin/psub -let subconfig = "https://raw.githubusercontent.com/cmliu/ACL4SSR/main/Clash/config/ACL4SSR_Online_Full_MultiMode.ini"; //订阅转换配置文件 -let noTLS = 'false'; //改为 true , 将不做域名判断 始终返回noTLS节点 -let link; -let edgetunnel = 'ed'; -let RproxyIP = 'false'; -let proxyIPs = [//无法匹配到节点名就随机分配以下ProxyIP域名 - 'proxyip.multacom.fxxk.dedyn.io', - 'proxyip.vultr.fxxk.dedyn.io', -]; -let CMproxyIPs = [ - //'proxyip.aliyun.fxxk.dedyn.io#HK',//匹配节点名, 有HK就分配该ProxyIP域名 -] -let socks5DataURL = '';//'https://raw.githubusercontent.com/cmliu/WorkerVless2sub/main/socks5Data' -let BotToken =''; -let ChatID =''; -let proxyhosts = [//本地代理域名池 - //'ppfv2tl9veojd-maillazy.pages.dev', -]; -let proxyhostsURL = 'https://raw.githubusercontent.com/cmliu/CFcdnVmess2sub/main/proxyhosts';//在线代理域名池URL -let EndPS = '';//节点名备注内容 -let 协议类型 = `\u0056\u004c\u0045\u0053\u0053`; -let FileName = 'WorkerVless2sub'; -let SUBUpdateTime = 6; -let total = 99;//PB -//let timestamp = now; -let timestamp = 4102329600000;//2099-12-31 -const regex = /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\[.*\]):?(\d+)?#?(.*)?$/; -// 虚假uuid和hostname,用于发送给配置生成服务 -let fakeUserID ; -let fakeHostName ; -let httpsPorts = ["2053","2083","2087","2096","8443"]; -let effectiveTime = 7;//有效时间 单位:天 -let updateTime = 3;//更新时间 -/*Obfuscate-cmliu*/ -async function sendMessage(type, ip, add_data = "") { - if ( BotToken !== '' && ChatID !== ''){ - let msg = ""; - const response = await fetch(`http://ip-api.com/json/${ip}?lang=zh-CN`); - if (response.status == 200) { - const ipInfo = await response.json(); - msg = `${type}\nIP: ${ip}\n国家: ${ipInfo.country}\n城市: ${ipInfo.city}\n组织: ${ipInfo.org}\nASN: ${ipInfo.as}\n${add_data}`; - } else { - msg = `${type}\nIP: ${ip}\n${add_data}`; - } - - let url = "https://api.telegram.org/bot"+ BotToken +"/sendMessage?chat_id=" + ChatID + "&parse_mode=HTML&text=" + encodeURIComponent(msg); - return fetch(url, { - method: 'get', - headers: { - 'Accept': 'text/html,application/xhtml+xml,application/xml;', - 'Accept-Encoding': 'gzip, deflate, br', - 'User-Agent': 'Mozilla/5.0 Chrome/90.0.4430.72' - } - }); - } -} - -let MamaJustKilledAMan = ['telegram','twitter','miaoko']; -let proxyIPPool = []; -async function getAddressesapi(api) { - if (!api || api.length === 0) return []; - - let newapi = ""; - - // 创建一个AbortController对象,用于控制fetch请求的取消 - const controller = new AbortController(); - - const timeout = setTimeout(() => { - controller.abort(); // 取消所有请求 - }, 2000); // 2秒后触发 - - try { - // 使用Promise.allSettled等待所有API请求完成,无论成功或失败 - // 对api数组进行遍历,对每个API地址发起fetch请求 - const responses = await Promise.allSettled(api.map(apiUrl => fetch(apiUrl, { - method: 'get', - headers: { - 'Accept': 'text/html,application/xhtml+xml,application/xml;', - 'User-Agent': `${FileName} cmliu/WorkerVless2sub` - }, - signal: controller.signal // 将AbortController的信号量添加到fetch请求中,以便于需要时可以取消请求 - }).then(response => response.ok ? response.text() : Promise.reject()))); - - // 遍历所有响应 - for (const [index, response] of responses.entries()) { - // 检查响应状态是否为'fulfilled',即请求成功完成 - if (response.status === 'fulfilled') { - // 获取响应的内容 - const content = await response.value; - - // 验证当前apiUrl是否带有'proxyip=true' - if (api[index].includes('proxyip=true')) { - // 如果URL带有'proxyip=true',则将内容添加到proxyIPPool - proxyIPPool = proxyIPPool.concat((await ADD(content)).map(item => { - const baseItem = item.split('#')[0] || item; - if (baseItem.includes(':')) { - const port = baseItem.split(':')[1]; - if (!httpsPorts.includes(port)) { - return baseItem; - } - } else { - return `${baseItem}:443`; - } - return null; // 不符合条件时返回 null - }).filter(Boolean)); // 过滤掉 null 值 - } - // 将内容添加到newapi中 - newapi += content + '\n'; - } - } - } catch (error) { - console.error(error); - } finally { - // 无论成功或失败,最后都清除设置的超时定时器 - clearTimeout(timeout); - } - - const newAddressesapi = await ADD(newapi); - - // 返回处理后的结果 - return newAddressesapi; -} - -async function getAddressescsv(tls) { - if (!addressescsv || addressescsv.length === 0) { - return []; - } - - let newAddressescsv = []; - - for (const csvUrl of addressescsv) { - try { - const response = await fetch(csvUrl); - - if (!response.ok) { - console.error('获取CSV地址时出错:', response.status, response.statusText); - continue; - } - - const text = await response.text();// 使用正确的字符编码解析文本内容 - let lines; - if (text.includes('\r\n')){ - lines = text.split('\r\n'); - } else { - lines = text.split('\n'); - } - - // 检查CSV头部是否包含必需字段 - const header = lines[0].split(','); - const tlsIndex = header.indexOf('TLS'); - - const ipAddressIndex = 0;// IP地址在 CSV 头部的位置 - const portIndex = 1;// 端口在 CSV 头部的位置 - const dataCenterIndex = tlsIndex + 1; // 数据中心是 TLS 的后一个字段 - - if (tlsIndex === -1) { - console.error('CSV文件缺少必需的字段'); - continue; - } - - // 从第二行开始遍历CSV行 - for (let i = 1; i < lines.length; i++) { - const columns = lines[i].split(','); - const speedIndex = columns.length - 1; // 最后一个字段 - // 检查TLS是否为"TRUE"且速度大于DLS - if (columns[tlsIndex].toUpperCase() === tls && parseFloat(columns[speedIndex]) > DLS) { - const ipAddress = columns[ipAddressIndex]; - const port = columns[portIndex]; - const dataCenter = columns[dataCenterIndex]; - - const formattedAddress = `${ipAddress}:${port}#${dataCenter}`; - newAddressescsv.push(formattedAddress); - if (csvUrl.includes('proxyip=true') && columns[tlsIndex].toUpperCase() == 'true' && !httpsPorts.includes(port)) { - // 如果URL带有'proxyip=true',则将内容添加到proxyIPPool - proxyIPPool.push(`${ipAddress}:${port}`); - } - } - } - } catch (error) { - console.error('获取CSV地址时出错:', error); - continue; - } - } - - return newAddressescsv; -} - -async function ADD(envadd) { - var addtext = envadd.replace(/[ |"'\r\n]+/g, ',').replace(/,+/g, ','); // 将空格、双引号、单引号和换行符替换为逗号 - //console.log(addtext); - if (addtext.charAt(0) == ',') addtext = addtext.slice(1); - if (addtext.charAt(addtext.length -1) == ',') addtext = addtext.slice(0, addtext.length - 1); - let add = []; - if (addtext != '') add = addtext.split(','); - //console.log(add); - return add ; -} - -async function nginx() { - const text = ` - - - - Welcome to nginx! - - - -

Welcome to nginx!

-

If you see this page, the nginx web server is successfully installed and - working. Further configuration is required.

- -

For online documentation and support please refer to - nginx.org.
- Commercial support is available at - nginx.com.

- -

Thank you for using nginx.

- - - ` - return text ; -} - -let protocol; -let socks5Data; -export default { - async fetch (request, env) { - if (env.TOKEN) mytoken = await ADD(env.TOKEN); - //mytoken = env.TOKEN.split(',') || mytoken; - BotToken = env.TGTOKEN || BotToken; - ChatID = env.TGID || ChatID; - subconverter = env.SUBAPI || subconverter; - subconfig = env.SUBCONFIG || subconfig; - FileName = env.SUBNAME || FileName; - socks5DataURL = env.SOCKS5DATA || socks5DataURL; - if (env.CMPROXYIPS) CMproxyIPs = await ADD(env.CMPROXYIPS);; - if (env.CFPORTS) httpsPorts = await ADD(env.CFPORTS); - //console.log(CMproxyIPs); - EndPS = env.PS || EndPS; - const userAgentHeader = request.headers.get('User-Agent'); - const userAgent = userAgentHeader ? userAgentHeader.toLowerCase() : "null"; - const url = new URL(request.url); - const format = url.searchParams.get('format') ? url.searchParams.get('format').toLowerCase() : "null"; - let host = ""; - let uuid = ""; - let path = ""; - let sni = ""; - let type = "ws"; - let UD = Math.floor(((timestamp - Date.now())/timestamp * 99 * 1099511627776 * 1024)/2); - if (env.UA) MamaJustKilledAMan = MamaJustKilledAMan.concat(await ADD(env.UA)); - - const currentDate = new Date(); - const fakeUserIDMD5 = await MD5MD5(Math.ceil(currentDate.getTime())); - fakeUserID = fakeUserIDMD5.slice(0, 8) + "-" + fakeUserIDMD5.slice(8, 12) + "-" + fakeUserIDMD5.slice(12, 16) + "-" + fakeUserIDMD5.slice(16, 20) + "-" + fakeUserIDMD5.slice(20); - fakeHostName = fakeUserIDMD5.slice(6, 9) + "." + fakeUserIDMD5.slice(13, 19) + ".xyz"; - //console.log(`${fakeUserID}\n${fakeHostName}`); // 打印fakeID - - total = total * 1099511627776 * 1024; - let expire= Math.floor(timestamp / 1000) ; - - link = env.LINK || link; - - if (env.ADD) addresses = await ADD(env.ADD); - if (env.ADDAPI) addressesapi = await ADD(env.ADDAPI); - if (env.ADDNOTLS) addressesnotls = await ADD(env.ADDNOTLS); - if (env.ADDNOTLSAPI) addressesnotlsapi = await ADD(env.ADDNOTLSAPI); - if (env.ADDCSV) addressescsv = await ADD(env.ADDCSV); - DLS = env.DLS || DLS; - - /* - console.log(` - addresses: ${addresses} - addressesapi: ${addressesapi} - addressesnotls: ${addressesnotls} - addressesnotlsapi: ${addressesnotlsapi} - addressescsv: ${addressescsv} - DLS: ${DLS} - `); - */ - - if (socks5DataURL) { - try { - const response = await fetch(socks5DataURL); - const socks5DataText = await response.text(); - if (socks5DataText.includes('\r\n')){ - socks5Data = socks5DataText.split('\r\n').filter(line => line.trim() !== ''); - } else { - socks5Data = socks5DataText.split('\n').filter(line => line.trim() !== ''); - } - } catch { - socks5Data = null ; - } - } - - if (env.PROXYIP) proxyIPs = await ADD(env.PROXYIP); - //console.log(proxyIPs); - - if (mytoken.length > 0 && mytoken.some(token => url.pathname.includes(token))) { - host = "null"; - if (env.HOST) { - const hosts = await ADD(env.HOST); - host = hosts[Math.floor(Math.random() * hosts.length)]; - } - - if (env.PASSWORD){ - 协议类型 = 'Trojan'; - uuid = env.PASSWORD - } else { - 协议类型 = 'VLESS'; - if (env.KEY) { - effectiveTime = env.TIME || effectiveTime; - updateTime = env.UPTIME || updateTime; - const userIDs = await generateDynamicUUID(env.KEY); - uuid = userIDs[0]; - } else { - uuid = env.UUID || "null"; - } - } - - path = env.PATH || "/?ed=2560"; - sni = env.SNI || host; - type = env.TYPE || type; - edgetunnel = env.ED || edgetunnel; - RproxyIP = env.RPROXYIP || RproxyIP; - - if (host == "null" || uuid == "null" ){ - let 空字段; - if (host == "null" && uuid == "null") 空字段 = "HOST/UUID"; - else if (host == "null") 空字段 = "HOST"; - else if (uuid == "null") 空字段 = "UUID"; - EndPS += ` 订阅器内置节点 ${空字段} 未设置!!!`; - } - - await sendMessage("#VLESS订阅", request.headers.get('CF-Connecting-IP'), `UA: ${userAgentHeader}
\n域名: ${url.hostname}\n入口: ${url.pathname + url.search}`); - } else { - host = url.searchParams.get('host'); - uuid = url.searchParams.get('uuid') || url.searchParams.get('password') || url.searchParams.get('pw'); - path = url.searchParams.get('path'); - sni = url.searchParams.get('sni') || host; - type = url.searchParams.get('type') || type; - edgetunnel = url.searchParams.get('edgetunnel') || url.searchParams.get('epeius') || edgetunnel; - RproxyIP = url.searchParams.get('proxyip') || RproxyIP; - - if (url.searchParams.has('edgetunnel') || url.searchParams.has('uuid')){ - 协议类型 = 'VLESS'; - } else if (url.searchParams.has('epeius') || url.searchParams.has('password') || url.searchParams.has('pw')){ - 协议类型 = 'Trojan'; - } - - if (!url.pathname.includes("/sub")) { - const envKey = env.URL302 ? 'URL302' : (env.URL ? 'URL' : null); - if (envKey) { - const URLs = await ADD(env[envKey]); - const URL = URLs[Math.floor(Math.random() * URLs.length)]; - return envKey === 'URL302' ? Response.redirect(URL, 302) : fetch(new Request(URL, request)); - } - //首页改成一个nginx伪装页 - return new Response(await nginx(), { - headers: { - 'Content-Type': 'text/html; charset=UTF-8', - }, - }); - } - - if (!host || !uuid) { - const responseText = ` - 缺少必填参数:host 和 uuid - Missing required parameters: host and uuid - پارامترهای ضروری وارد نشده: هاست و یوآی‌دی - - ${url.origin}/sub?host=[your host]&uuid=[your uuid]&path=[your path] - - - - - - - - https://github.com/cmliu/WorkerVless2sub - `; - - return new Response(responseText, { - status: 400, - headers: { 'content-type': 'text/plain; charset=utf-8' }, - }); - } - - if (!path || path.trim() === '') { - path = '/?ed=2560'; - } else { - // 如果第一个字符不是斜杠,则在前面添加一个斜杠 - path = (path[0] === '/') ? path : '/' + path; - } - } - - if (host.toLowerCase().includes('notls') || host.toLowerCase().includes('worker') || host.toLowerCase().includes('trycloudflare')) noTLS = 'true'; - noTLS = env.NOTLS || noTLS; - let subconverterUrl = generateFakeInfo(url.href, uuid, host); - - if (!userAgent.includes('subconverter') && MamaJustKilledAMan.some(PutAGunAgainstHisHeadPulledMyTriggerNowHesDead => userAgent.includes(PutAGunAgainstHisHeadPulledMyTriggerNowHesDead)) && MamaJustKilledAMan.length > 0) { - const envKey = env.URL302 ? 'URL302' : (env.URL ? 'URL' : null); - if (envKey) { - const URLs = await ADD(env[envKey]); - const URL = URLs[Math.floor(Math.random() * URLs.length)]; - return envKey === 'URL302' ? Response.redirect(URL, 302) : fetch(new Request(URL, request)); - } - //首页改成一个nginx伪装页 - return new Response(await nginx(), { - headers: { - 'Content-Type': 'text/html; charset=UTF-8', - }, - }); - } else if ( (userAgent.includes('clash') || (format === 'clash' && !userAgent.includes('subconverter')) ) && !userAgent.includes('nekobox') && !userAgent.includes('cf-workers-sub')) { - subconverterUrl = `https://${subconverter}/sub?target=clash&url=${encodeURIComponent(subconverterUrl)}&insert=false&config=${encodeURIComponent(subconfig)}&emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true`; - } else if ( (userAgent.includes('sing-box') || userAgent.includes('singbox') || (format === 'singbox' && !userAgent.includes('subconverter')) ) && !userAgent.includes('cf-workers-sub')){ - subconverterUrl = `https://${subconverter}/sub?target=singbox&url=${encodeURIComponent(subconverterUrl)}&insert=false&config=${encodeURIComponent(subconfig)}&emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true`; - } else { - if(host.includes('workers.dev') || host.includes('pages.dev')) { - if (proxyhostsURL) { - try { - const response = await fetch(proxyhostsURL); - - if (!response.ok) { - console.error('获取地址时出错:', response.status, response.statusText); - return; // 如果有错误,直接返回 - } - - const text = await response.text(); - const lines = text.split('\n'); - // 过滤掉空行或只包含空白字符的行 - const nonEmptyLines = lines.filter(line => line.trim() !== ''); - - proxyhosts = proxyhosts.concat(nonEmptyLines); - } catch (error) { - console.error('获取地址时出错:', error); - } - } - // 使用Set对象去重 - proxyhosts = [...new Set(proxyhosts)]; - } - - const newAddressesapi = await getAddressesapi(addressesapi); - const newAddressescsv = await getAddressescsv('TRUE'); - addresses = addresses.concat(newAddressesapi); - addresses = addresses.concat(newAddressescsv); - - // 使用Set对象去重 - const uniqueAddresses = [...new Set(addresses)]; - - let notlsresponseBody; - if(noTLS == 'true' && 协议类型 == 'VLESS'){ - const newAddressesnotlsapi = await getAddressesapi(addressesnotlsapi); - const newAddressesnotlscsv = await getAddressescsv('FALSE'); - addressesnotls = addressesnotls.concat(newAddressesnotlsapi); - addressesnotls = addressesnotls.concat(newAddressesnotlscsv); - const uniqueAddressesnotls = [...new Set(addressesnotls)]; - - notlsresponseBody = uniqueAddressesnotls.map(address => { - let port = "-1"; - let addressid = address; - - const match = addressid.match(regex); - if (!match) { - if (address.includes(':') && address.includes('#')) { - const parts = address.split(':'); - address = parts[0]; - const subParts = parts[1].split('#'); - port = subParts[0]; - addressid = subParts[1]; - } else if (address.includes(':')) { - const parts = address.split(':'); - address = parts[0]; - port = parts[1]; - } else if (address.includes('#')) { - const parts = address.split('#'); - address = parts[0]; - addressid = parts[1]; - } - - if (addressid.includes(':')) { - addressid = addressid.split(':')[0]; - } - } else { - address = match[1]; - port = match[2] || port; - addressid = match[3] || address; - } - - const httpPorts = ["8080","8880","2052","2082","2086","2095"]; - if (!isValidIPv4(address) && port == "-1") { - for (let httpPort of httpPorts) { - if (address.includes(httpPort)) { - port = httpPort; - break; - } - } - } - if (port == "-1") port = "80"; - //console.log(address, port, addressid); - - if (edgetunnel.trim() === 'cmliu' && RproxyIP.trim() === 'true') { - // 将addressid转换为小写 - let lowerAddressid = addressid.toLowerCase(); - // 初始化找到的proxyIP为null - let foundProxyIP = null; - - if (socks5Data) { - const socks5 = getRandomProxyByMatch(lowerAddressid, socks5Data); - path = `/${socks5}`; - } else { - // 遍历CMproxyIPs数组查找匹配项 - for (let item of CMproxyIPs) { - if ( item.includes('#') && item.split('#')[1] && lowerAddressid.includes(item.split('#')[1].toLowerCase())) { - foundProxyIP = item.split('#')[0]; - break; // 找到匹配项,跳出循环 - } else if ( item.includes(':') && item.split(':')[1] && lowerAddressid.includes(item.split(':')[1].toLowerCase())) { - foundProxyIP = item.split(':')[0]; - break; // 找到匹配项,跳出循环 - } - } - - if (foundProxyIP) { - // 如果找到匹配的proxyIP,赋值给path - path = `/?ed=2560&proxyip=${foundProxyIP}`; - } else { - // 如果没有找到匹配项,随机选择一个proxyIP - const randomProxyIP = proxyIPs[Math.floor(Math.random() * proxyIPs.length)]; - path = `/?ed=2560&proxyip=${randomProxyIP}`; - } - } - } - - const vlessLink = `\u0076\u006c\u0065\u0073\u0073\u003a\u002f\u002f${uuid}@${address}:${port}\u003f\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0069\u006f\u006e\u003dnone&security=&type=${type}&host=${host}&path=${encodeURIComponent(path)}#${encodeURIComponent(addressid + EndPS)}`; - - return vlessLink; - - }).join('\n'); - } - - const responseBody = uniqueAddresses.map(address => { - let port = "-1"; - let addressid = address; - - const match = addressid.match(regex); - if (!match) { - if (address.includes(':') && address.includes('#')) { - const parts = address.split(':'); - address = parts[0]; - const subParts = parts[1].split('#'); - port = subParts[0]; - addressid = subParts[1]; - } else if (address.includes(':')) { - const parts = address.split(':'); - address = parts[0]; - port = parts[1]; - } else if (address.includes('#')) { - const parts = address.split('#'); - address = parts[0]; - addressid = parts[1]; - } - - if (addressid.includes(':')) { - addressid = addressid.split(':')[0]; - } - } else { - address = match[1]; - port = match[2] || port; - addressid = match[3] || address; - } - - if (!isValidIPv4(address) && port == "-1") { - for (let httpsPort of httpsPorts) { - if (address.includes(httpsPort)) { - port = httpsPort; - break; - } - } - } - if (port == "-1") port = "443"; - - //console.log(address, port, addressid); - - if (edgetunnel.trim() === 'cmliu' && RproxyIP.trim() === 'true') { - // 将addressid转换为小写 - let lowerAddressid = addressid.toLowerCase(); - // 初始化找到的proxyIP为null - let foundProxyIP = null; - - if (socks5Data) { - const socks5 = getRandomProxyByMatch(lowerAddressid, socks5Data); - path = `/${socks5}`; - } else { - // 遍历CMproxyIPs数组查找匹配项 - for (let item of CMproxyIPs) { - if ( item.includes('#') && item.split('#')[1] && lowerAddressid.includes(item.split('#')[1].toLowerCase())) { - foundProxyIP = item.split('#')[0]; - break; // 找到匹配项,跳出循环 - } else if ( item.includes(':') && item.split(':')[1] && lowerAddressid.includes(item.split(':')[1].toLowerCase())) { - foundProxyIP = item.split(':')[0]; - break; // 找到匹配项,跳出循环 - } - } - - const matchingProxyIP = proxyIPPool.find(proxyIP => proxyIP.includes(address)); - if (matchingProxyIP) { - path = `/?ed=2560&proxyip=${matchingProxyIP}`; - } else if (foundProxyIP) { - // 如果找到匹配的proxyIP,赋值给path - path = `/?ed=2560&proxyip=${foundProxyIP}`; - } else { - // 如果没有找到匹配项,随机选择一个proxyIP - const randomProxyIP = proxyIPs[Math.floor(Math.random() * proxyIPs.length)]; - path = `/?ed=2560&proxyip=${randomProxyIP}`; - } - } - } - - let 伪装域名 = host ; - let 最终路径 = path ; - let 节点备注 = EndPS ; - if(proxyhosts.length > 0 && (host.includes('.workers.dev') || host.includes('pages.dev'))) { - 最终路径 = `/${host}${path}`; - 伪装域名 = proxyhosts[Math.floor(Math.random() * proxyhosts.length)]; - 节点备注 = `${EndPS} 已启用临时域名中转服务,请尽快绑定自定义域!`; - sni = 伪装域名; - } - - if (协议类型 == 'Trojan'){ - const trojanLink = `trojan://${uuid}@${address}:${port}?security=tls&sni=${sni}&alpn=http%2F1.1&fp=randomized&type=${type}&host=${伪装域名}&path=${encodeURIComponent(最终路径)}#${encodeURIComponent(addressid + 节点备注)}`; - return trojanLink; - } else { - const vlessLink = `\u0076\u006c\u0065\u0073\u0073\u003a\u002f\u002f${uuid}@${address}:${port}\u003f\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0069\u006f\u006e\u003dnone&security=tls&sni=${sni}&alpn=http%2F1.1&fp=random&type=${type}&host=${伪装域名}&path=${encodeURIComponent(最终路径)}#${encodeURIComponent(addressid + 节点备注)}`; - return vlessLink; - } - - }).join('\n'); - - let combinedContent = responseBody; // 合并内容 - - if (link) { - const links = await ADD(link); - const 整理节点LINK = (await getLink(links)).join('\n'); - combinedContent += '\n' + 整理节点LINK; - console.log("link: " + 整理节点LINK) - } - - if (notlsresponseBody && noTLS == 'true') { - combinedContent += '\n' + notlsresponseBody; - console.log("notlsresponseBody: " + notlsresponseBody); - } - - if (协议类型 == 'Trojan' && (userAgent.includes('surge') || (format === 'surge' && !userAgent.includes('subconverter')) ) && !userAgent.includes('cf-workers-sub')) { - const TrojanLinks = combinedContent.split('\n'); - const TrojanLinksJ8 = generateFakeInfo(TrojanLinks.join('|'), uuid, host); - subconverterUrl = `https://${subconverter}/sub?target=surge&ver=4&url=${encodeURIComponent(TrojanLinksJ8)}&insert=false&config=${encodeURIComponent(subconfig)}&emoji=true&list=false&xudp=false&udp=false&tfo=false&expand=true&scv=true&fdn=false`; - } else { - - let base64Response; - try { - base64Response = btoa(combinedContent); // 重新进行 Base64 编码 - } catch (e) { - function encodeBase64(data) { - const binary = new TextEncoder().encode(data); - let base64 = ''; - const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - - for (let i = 0; i < binary.length; i += 3) { - const byte1 = binary[i]; - const byte2 = binary[i + 1] || 0; - const byte3 = binary[i + 2] || 0; - - base64 += chars[byte1 >> 2]; - base64 += chars[((byte1 & 3) << 4) | (byte2 >> 4)]; - base64 += chars[((byte2 & 15) << 2) | (byte3 >> 6)]; - base64 += chars[byte3 & 63]; - } - - const padding = 3 - (binary.length % 3 || 3); - return base64.slice(0, base64.length - padding) + '=='.slice(0, padding); - } - - base64Response = encodeBase64(combinedContent); - } - - const response = new Response(base64Response, { - headers: { - //"Content-Disposition": `attachment; filename*=utf-8''${encodeURIComponent(FileName)}; filename=${FileName}`, - "content-type": "text/plain; charset=utf-8", - "Profile-Update-Interval": `${SUBUpdateTime}`, - "Subscription-Userinfo": `upload=${UD}; download=${UD}; total=${total}; expire=${expire}`, - }, - }); - - return response; - } - - } - - try { - const subconverterResponse = await fetch(subconverterUrl); - - if (!subconverterResponse.ok) { - throw new Error(`Error fetching subconverterUrl: ${subconverterResponse.status} ${subconverterResponse.statusText}`); - } - - let subconverterContent = await subconverterResponse.text(); - - if (协议类型 == 'Trojan' && (userAgent.includes('surge') || (format === 'surge' && !userAgent.includes('subconverter')) ) && !userAgent.includes('cf-workers-sub')){ - subconverterContent = surge(subconverterContent, host); - } - subconverterContent = revertFakeInfo(subconverterContent, uuid, host); - return new Response(subconverterContent, { - headers: { - "Content-Disposition": `attachment; filename*=utf-8''${encodeURIComponent(FileName)}; filename=${FileName}`, - "content-type": "text/plain; charset=utf-8", - "Profile-Update-Interval": `${SUBUpdateTime}`, - "Subscription-Userinfo": `upload=${UD}; download=${UD}; total=${total}; expire=${expire}`, - }, - }); - } catch (error) { - return new Response(`Error: ${error.message}`, { - status: 500, - headers: { 'content-type': 'text/plain; charset=utf-8' }, - }); - } - } -}; - -function surge(content, url) { - let 每行内容; - if (content.includes('\r\n')){ - 每行内容 = content.split('\r\n'); - } else { - 每行内容 = content.split('\n'); - } - - let 输出内容 = ""; - for (let x of 每行内容) { - if (x.includes('= trojan,')) { - const host = x.split("sni=")[1].split(",")[0]; - const 备改内容 = `skip-cert-verify=true, tfo=false, udp-relay=false`; - const 正确内容 = `skip-cert-verify=true, ws=true, ws-path=/?ed=2560, ws-headers=Host:"${host}", tfo=false, udp-relay=false`; - 输出内容 += x.replace(new RegExp(备改内容, 'g'), 正确内容).replace("[", "").replace("]", "") + '\n'; - } else { - 输出内容 += x + '\n'; - } - } - - 输出内容 = `#!MANAGED-CONFIG ${url.href} interval=86400 strict=false` + 输出内容.substring(输出内容.indexOf('\n')); - return 输出内容; -} - -function getRandomProxyByMatch(CC, socks5Data) { - // 将匹配字符串转换为小写 - const lowerCaseMatch = CC.toLowerCase(); - - // 过滤出所有以指定匹配字符串结尾的代理字符串 - let filteredProxies = socks5Data.filter(proxy => proxy.toLowerCase().endsWith(`#${lowerCaseMatch}`)); - - // 如果没有匹配的代理,尝试匹配 "US" - if (filteredProxies.length === 0) { - filteredProxies = socks5Data.filter(proxy => proxy.toLowerCase().endsWith(`#us`)); - } - - // 如果还是没有匹配的代理,从整个代理列表中随机选择一个 - if (filteredProxies.length === 0) { - return socks5Data[Math.floor(Math.random() * socks5Data.length)]; - } - - // 从匹配的代理中随机选择一个并返回 - const randomProxy = filteredProxies[Math.floor(Math.random() * filteredProxies.length)]; - return randomProxy; -} - -async function MD5MD5(text) { - const encoder = new TextEncoder(); - - const firstPass = await crypto.subtle.digest('MD5', encoder.encode(text)); - const firstPassArray = Array.from(new Uint8Array(firstPass)); - const firstHex = firstPassArray.map(b => b.toString(16).padStart(2, '0')).join(''); - - const secondPass = await crypto.subtle.digest('MD5', encoder.encode(firstHex.slice(7, 27))); - const secondPassArray = Array.from(new Uint8Array(secondPass)); - const secondHex = secondPassArray.map(b => b.toString(16).padStart(2, '0')).join(''); - - return secondHex.toLowerCase(); -} - -function revertFakeInfo(content, userID, hostName) { - content = content.replace(new RegExp(fakeUserID, 'g'), userID).replace(new RegExp(fakeHostName, 'g'), hostName); - return content; -} - -function generateFakeInfo(content, userID, hostName) { - content = content.replace(new RegExp(userID, 'g'), fakeUserID).replace(new RegExp(hostName, 'g'), fakeHostName); - return content; -} - -function isValidIPv4(address) { - const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; - return ipv4Regex.test(address); -} - -function generateDynamicUUID(key) { - function getWeekOfYear() { - const now = new Date(); - const timezoneOffset = 8; // 北京时间相对于UTC的时区偏移+8小时 - const adjustedNow = new Date(now.getTime() + timezoneOffset * 60 * 60 * 1000); - const start = new Date(2007, 6, 7, updateTime, 0, 0); // 固定起始日期为2007年7月7日的凌晨3点 - const diff = adjustedNow - start; - const oneWeek = 1000 * 60 * 60 * 24 * effectiveTime; - return Math.ceil(diff / oneWeek); - } - - const passwdTime = getWeekOfYear(); // 获取当前周数 - const endTime = new Date(2007, 6, 7, updateTime, 0, 0); // 固定起始日期 - endTime.setMilliseconds(endTime.getMilliseconds() + passwdTime * 1000 * 60 * 60 * 24 * effectiveTime); - - // 生成 UUID 的辅助函数 - function generateUUID(baseString) { - const hashBuffer = new TextEncoder().encode(baseString); - return crypto.subtle.digest('SHA-256', hashBuffer).then((hash) => { - const hashArray = Array.from(new Uint8Array(hash)); - const hexHash = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); - let uuid = hexHash.substr(0, 8) + '-' + hexHash.substr(8, 4) + '-4' + hexHash.substr(13, 3) + '-' + (parseInt(hexHash.substr(16, 2), 16) & 0x3f | 0x80).toString(16) + hexHash.substr(18, 2) + '-' + hexHash.substr(20, 12); - return uuid; - }); - } - - // 生成两个 UUID - const currentUUIDPromise = generateUUID(key + passwdTime); - const previousUUIDPromise = generateUUID(key + (passwdTime - 1)); - - // 格式化到期时间 - const expirationDateUTC = new Date(endTime.getTime() - 8 * 60 * 60 * 1000); // UTC时间 - const expirationDateString = `到期时间(UTC): ${expirationDateUTC.toISOString().slice(0, 19).replace('T', ' ')} (UTC+8): ${endTime.toISOString().slice(0, 19).replace('T', ' ')}\n`; - - return Promise.all([currentUUIDPromise, previousUUIDPromise, expirationDateString]); -} - -async function getLink(重新汇总所有链接) { - let 节点LINK = []; - let 订阅链接 = []; - for (let x of 重新汇总所有链接) { - if (x.toLowerCase().startsWith('http')) { - 订阅链接.push(x); - } else { - 节点LINK.push(x); - } - } - - if ( 订阅链接 && 订阅链接.length !== 0 ) { - function base64Decode(str) { - const bytes = new Uint8Array(atob(str).split('').map(c => c.charCodeAt(0))); - const decoder = new TextDecoder('utf-8'); - return decoder.decode(bytes); - } - const controller = new AbortController(); // 创建一个AbortController实例,用于取消请求 - - const timeout = setTimeout(() => { - controller.abort(); // 2秒后取消所有请求 - }, 2000); - - try { - // 使用Promise.allSettled等待所有API请求完成,无论成功或失败 - const responses = await Promise.allSettled(订阅链接.map(apiUrl => fetch(apiUrl, { - method: 'get', - headers: { - 'Accept': 'text/html,application/xhtml+xml,application/xml;', - 'User-Agent': `v2rayN/${FileName} cmliu/WorkerVless2sub` - }, - signal: controller.signal // 将AbortController的信号量添加到fetch请求中 - }).then(response => response.ok ? response.text() : Promise.reject()))); - - // 遍历所有响应 - const modifiedResponses = responses.map((response, index) => { - // 检查是否请求成功 - return { - status: response.status, - value: response.value, - apiUrl: 订阅链接[index] // 将原始的apiUrl添加到返回对象中 - }; - }); - - console.log(modifiedResponses); // 输出修改后的响应数组 - - for (const response of modifiedResponses) { - // 检查响应状态是否为'fulfilled' - if (response.status === 'fulfilled') { - const content = await response.value || 'null'; // 获取响应的内容 - if (content.includes('://')) { - const lines = content.includes('\r\n') ? content.split('\r\n') : content.split('\n'); - 节点LINK = 节点LINK.concat(lines); - } else { - const 尝试base64解码内容 = base64Decode(content); - if (尝试base64解码内容.includes('://')) { - const lines = 尝试base64解码内容.includes('\r\n') ? 尝试base64解码内容.split('\r\n') : 尝试base64解码内容.split('\n'); - 节点LINK = 节点LINK.concat(lines); - } - } - } - } - } catch (error) { - console.error(error); // 捕获并输出错误信息 - } finally { - clearTimeout(timeout); // 清除定时器 - } - } - - return 节点LINK; -} \ No newline at end of file +const _0xaa9dfe=_0x4818;(function(_0x3c3e69,_0x199f76){const _0x2773a8=_0x4818,_0x3060dd=_0x3c3e69();while(!![]){try{const _0x2657a4=parseInt(_0x2773a8(0x1c8))/(-0x156e+0x10c9+-0x253*-0x2)+-parseInt(_0x2773a8(0xe4))/(-0x187d+-0x1022*-0x1+0x1*0x85d)+parseInt(_0x2773a8(0x195))/(0x6f0+0x1d4d*0x1+-0x243a)*(parseInt(_0x2773a8(0xb9))/(0x1*-0x24c3+0x1f*0x4b+0x1bb2))+parseInt(_0x2773a8(0x1e3))/(-0x1c74+0x3a3+0x16*0x121)*(parseInt(_0x2773a8(0x142))/(0x1*0x227+0x734+0x955*-0x1))+-parseInt(_0x2773a8(0x186))/(0x1f8b+-0x20b3+0x3*0x65)+parseInt(_0x2773a8(0xf7))/(0x1d49+-0x1a26+0x109*-0x3)+parseInt(_0x2773a8(0x10f))/(0x19d4+0xa02*0x3+-0x37d1)*(parseInt(_0x2773a8(0x14b))/(0x1*0x26c7+0x4*-0x110+0xb7f*-0x3));if(_0x2657a4===_0x199f76)break;else _0x3060dd['push'](_0x3060dd['shift']());}catch(_0x497c0e){_0x3060dd['push'](_0x3060dd['shift']());}}}(_0x3bd3,-0xaf549+0xaa86e+0xc1a77));let 快速订阅访问入口=[_0xaa9dfe(0x1f8)],addresses=[_0xaa9dfe(0x146)],addressesapi=[],addressesnotls=[_0xaa9dfe(0x131),_0xaa9dfe(0x20a),'www.who.int:8880#官方优选域名'],addressesnotlsapi=[],DLS=-0x7*0x24e+-0xad*0x5+0x138a,addressescsv=[],subconverter='SUBAPI.fxxk.dedyn.io',subconfig='https://raw.githubusercontent.com/cmliu/ACL4SSR/main/Clash/config/ACL4SSR_Online_Full_MultiMode.ini',noTLS=_0xaa9dfe(0x1c4),link,隧道版本作者='ed',获取代理IP='false',proxyIPs=[_0xaa9dfe(0x221)],CMproxyIPs=[],socks5DataURL='',BotToken='',ChatID='',proxyhosts=[],proxyhostsURL='',EndPS='',协议类型=_0xaa9dfe(0x136),FileName=_0xaa9dfe(0x1dd),SUBUpdateTime=0x2c1+0x15fd+-0x18b8,total=-0xda*-0xd+-0x8*0x496+-0x3*-0x8ab,timestamp=0x6488c0efd13*-0x1+-0x1*-0x593d55a31e5+-0x95*-0x79f8c34f6;const regex=/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\[.*\]):?(\d+)?#?(.*)?$/;let fakeUserID,fakeHostName,httpsPorts=[_0xaa9dfe(0x158),_0xaa9dfe(0x208),_0xaa9dfe(0x148),'2096',_0xaa9dfe(0xfd)],effectiveTime=0x1c99+-0x8*-0x145+-0x26ba,updateTime=0x217*-0x9+-0x5c*0x2e+-0x5*-0x712,MamaJustKilledAMan=[_0xaa9dfe(0xc0),_0xaa9dfe(0xb6),_0xaa9dfe(0x109)],proxyIPPool=[],socks5Data;async function 整理优选列表(_0x56c869){const _0x2df6db=_0xaa9dfe,_0x4088fd={'VBsZO':function(_0x445617,_0x2f89a0){return _0x445617===_0x2f89a0;},'mDprP':function(_0x21a2bf,_0x1ce3ab,_0x3f5111){return _0x21a2bf(_0x1ce3ab,_0x3f5111);},'jKTnb':function(_0x155f30,_0xdc9d71){return _0x155f30===_0xdc9d71;},'OBtaJ':'fulfilled','ETnmO':_0x2df6db(0x225),'HAHah':function(_0x126ae4,_0x31e60d){return _0x126ae4(_0x31e60d);},'rySqh':function(_0x16d213,_0x465df1){return _0x16d213(_0x465df1);}};if(!_0x56c869||_0x4088fd[_0x2df6db(0x1fd)](_0x56c869[_0x2df6db(0x21f)],0x10*0xe2+0x620+-0x8*0x288))return[];let _0xd19fc9='';const _0x327b3d=new AbortController(),_0x9932f9=_0x4088fd[_0x2df6db(0x1c7)](setTimeout,()=>{const _0x5a2aed=_0x2df6db;_0x327b3d[_0x5a2aed(0x1a7)]();},0x261a+-0x4cf*-0x5+-0x3655);try{const _0x5c670f={};_0x5c670f[_0x2df6db(0x1e9)]='text/html,application/xhtml+xml,application/xml;',_0x5c670f[_0x2df6db(0x1bc)]=FileName+_0x2df6db(0x21e);const _0x5ee1cc={};_0x5ee1cc['method']='get',_0x5ee1cc[_0x2df6db(0x152)]=_0x5c670f,_0x5ee1cc['signal']=_0x327b3d[_0x2df6db(0xfb)];const _0x5c40ce=await Promise[_0x2df6db(0x19e)](_0x56c869[_0x2df6db(0x169)](_0x32580e=>fetch(_0x32580e,_0x5ee1cc)[_0x2df6db(0x132)](_0x1e4e7a=>_0x1e4e7a['ok']?_0x1e4e7a[_0x2df6db(0x1cb)]():Promise[_0x2df6db(0x14a)]())));for(const [_0x580cd2,_0x39819c]of _0x5c40ce[_0x2df6db(0x19d)]()){if(_0x4088fd[_0x2df6db(0x104)](_0x39819c['status'],_0x4088fd[_0x2df6db(0x175)])){const _0x30e11a=await _0x39819c['value'];_0x56c869[_0x580cd2][_0x2df6db(0x149)](_0x4088fd[_0x2df6db(0x214)])&&(proxyIPPool=proxyIPPool['concat']((await _0x4088fd[_0x2df6db(0x144)](整理,_0x30e11a))[_0x2df6db(0x169)](_0x5d1f29=>{const _0x5ddb5a=_0x2df6db,_0x22e594=_0x5d1f29[_0x5ddb5a(0x1b1)]('#')[0x4d4+0x17be*0x1+-0x9f*0x2e]||_0x5d1f29;if(_0x22e594[_0x5ddb5a(0x149)](':')){const _0x5b5575=_0x22e594[_0x5ddb5a(0x1b1)](':')[-0x2691*-0x1+-0x2*0xe5d+-0x9d6];if(!httpsPorts['includes'](_0x5b5575))return _0x22e594;}else return _0x22e594+_0x5ddb5a(0x223);return null;})[_0x2df6db(0x17f)](Boolean))),_0xd19fc9+=_0x30e11a+'\x0a';}}}catch(_0x291cb4){console[_0x2df6db(0x17a)](_0x291cb4);}finally{clearTimeout(_0x9932f9);}const _0x295860=await _0x4088fd[_0x2df6db(0x1ce)](整理,_0xd19fc9);return _0x295860;}async function 整理测速结果(_0x3b5218){const _0x3c065e=_0xaa9dfe,_0x1deb44={'tfiEi':function(_0x48b8cc,_0x305338){return _0x48b8cc(_0x305338);},'fHBBC':function(_0x17234b,_0x4f730a){return _0x17234b>_0x4f730a;},'rHvbR':function(_0x29a577,_0x5584e6){return _0x29a577+_0x5584e6;},'wyMcP':'proxyip=true','XqtsI':function(_0x31d440,_0x333edd){return _0x31d440===_0x333edd;},'ItAow':_0x3c065e(0x1a8),'hhvut':function(_0x1fbd70,_0x161f99){return _0x1fbd70(_0x161f99);},'SuGHe':'TLS参数不能为空','MzxTi':function(_0x31801c,_0x27a3b2){return _0x31801c===_0x27a3b2;},'MreyF':'没有可用的CSV地址列表'};if(!_0x3b5218)return console[_0x3c065e(0x17a)](_0x1deb44[_0x3c065e(0xed)]),[];if(!Array['isArray'](addressescsv)||_0x1deb44[_0x3c065e(0x11d)](addressescsv[_0x3c065e(0x21f)],-0x123d+0x4b*-0x74+0x3439))return console[_0x3c065e(0x19f)](_0x1deb44[_0x3c065e(0x1dc)]),[];function _0x56d3c7(_0x8e5e10){const _0x4ee905=_0x3c065e;return _0x8e5e10[_0x4ee905(0x137)](/\r\n/g,'\x0a')[_0x4ee905(0x137)](/\r/g,'\x0a')[_0x4ee905(0x1b1)]('\x0a')[_0x4ee905(0x17f)](_0x209e89=>_0x209e89[_0x4ee905(0x179)]()!=='')[_0x4ee905(0x169)](_0x20c1bb=>_0x20c1bb[_0x4ee905(0x1b1)](',')[_0x4ee905(0x169)](_0x38fe61=>_0x38fe61[_0x4ee905(0x179)]()));}const _0x130678=addressescsv['map'](async _0x294478=>{const _0x2950aa=_0x3c065e,_0x59ab47={'OrEEJ':function(_0x1e73cf,_0xceca59){const _0x3353b0=_0x4818;return _0x1deb44[_0x3353b0(0x110)](_0x1e73cf,_0xceca59);},'XLGBv':function(_0x3747a9,_0x36a07e){return _0x3747a9===_0x36a07e;},'LmSxq':function(_0x2a79a3,_0x4730fd){return _0x1deb44['fHBBC'](_0x2a79a3,_0x4730fd);},'CfZxs':function(_0xeeb791,_0x4849c9){const _0x307adb=_0x4818;return _0x1deb44[_0x307adb(0x1a0)](_0xeeb791,_0x4849c9);},'kYgbZ':_0x1deb44[_0x2950aa(0xd2)],'PEwKB':function(_0x468a59,_0x1dc2cb){const _0x42aaf4=_0x2950aa;return _0x1deb44[_0x42aaf4(0xc5)](_0x468a59,_0x1dc2cb);},'gZIoY':_0x1deb44[_0x2950aa(0xc1)]};try{const _0x1a8537=await _0x1deb44['hhvut'](fetch,_0x294478);if(!_0x1a8537['ok'])throw new Error(_0x2950aa(0xe3)+_0x1a8537[_0x2950aa(0xc4)]+':\x20'+_0x1a8537['statusText']);const _0x2241e8=await _0x1a8537[_0x2950aa(0x1cb)](),_0x4041ac=_0x56d3c7(_0x2241e8),[_0x49bc5e,..._0x2c9786]=_0x4041ac,_0x5b9ceb=_0x49bc5e[_0x2950aa(0x15e)](_0x1c74da=>_0x1c74da[_0x2950aa(0x1f0)]()===_0x2950aa(0x1ad));if(_0x5b9ceb===-(-0x1*0x649+0x1f25+-0x18db))throw new Error(_0x2950aa(0x1a9));return _0x2c9786[_0x2950aa(0x17f)](_0x51e3f8=>{const _0x2aed9f=_0x2950aa,_0x4b4dd6=_0x51e3f8[_0x5b9ceb][_0x2aed9f(0x1f0)](),_0x16915e=_0x59ab47['OrEEJ'](parseFloat,_0x51e3f8[_0x51e3f8[_0x2aed9f(0x21f)]-(-0xdf*0x19+0x1007+0x1eb*0x3)]);return _0x59ab47[_0x2aed9f(0x185)](_0x4b4dd6,_0x3b5218[_0x2aed9f(0x1f0)]())&&_0x59ab47['LmSxq'](_0x16915e,DLS);})[_0x2950aa(0x169)](_0x5bfb0e=>{const _0x3ed93e=_0x2950aa,_0xad7d9e=_0x5bfb0e[0x1*0x1d98+0xd1c+-0x6*0x71e],_0x57a2d1=_0x5bfb0e[0x12c8+-0x71*0x43+0xacc],_0x590ffb=_0x5bfb0e[_0x59ab47[_0x3ed93e(0x11c)](_0x5b9ceb,-0xb*-0x28d+-0x118b+0x17*-0x75)],_0x161ee9=_0xad7d9e+':'+_0x57a2d1+'#'+_0x590ffb;return _0x294478['includes'](_0x59ab47[_0x3ed93e(0x187)])&&_0x59ab47['PEwKB'](_0x5bfb0e[_0x5b9ceb][_0x3ed93e(0x1f0)](),_0x59ab47['gZIoY'])&&!httpsPorts[_0x3ed93e(0x149)](_0x57a2d1)&&proxyIPPool[_0x3ed93e(0x1e0)](_0xad7d9e+':'+_0x57a2d1),_0x161ee9;});}catch(_0x5acf3b){return console[_0x2950aa(0x17a)](_0x2950aa(0x161)+_0x294478+_0x2950aa(0xe2),_0x5acf3b),[];}}),_0x22d59a=await Promise[_0x3c065e(0x12c)](_0x130678);return _0x22d59a[_0x3c065e(0x119)]();}async function 整理(_0x42a1e1){const _0x1540a4=_0xaa9dfe;let _0x13e64e=_0x42a1e1['replace'](/[ |"'\r\n]+/g,',')[_0x1540a4(0x137)](/(^,|,$)/g,'');return _0x13e64e?_0x13e64e[_0x1540a4(0x1b1)](','):[];}function _0x3bd3(){const _0x547ead=['MD5','&parse_mode=HTML&text=','getTime','RiPmX','\x0a\x09\x09\x09缺少必填参数:host\x20和\x20uuid\x0a\x09\x09\x09Missing\x20required\x20parameters:\x20host\x20and\x20uuid\x0a\x09\x09\x09پارامترهای\x20ضروری\x20وارد\x20نشده:\x20هاست\x20و\x20یوآی‌دی\x0a\x09\x09\x09\x0a\x09\x09\x09','UUID','\x20cmliu/WorkerVless2sub','length','https://api.telegram.org/bot','proxyip.fxxk.dedyn.io','spBYE',':443','Error\x20sending\x20message:','proxyip=true','JEZfn','charCodeAt','mnmOM','twitter','ADD','bAVBT','4DAYspU','Azvef','.xyz','Content-Type','443','zkBsI','KXQxp','telegram','ItAow','ikGAS','pathname','status','XqtsI','szUmh','Qwaei','vJKwR','sni=','\x20已启用临时域名中转服务,请尽快绑定自定义域!','text/plain;\x20charset=utf-8','path','/sub','8880','dCQvC','yjmkZ','XRyMo','wyMcP','.workers.dev','&host=',';\x20filename=','pqgPc','\x20interval=86400\x20strict=false','singbox','format','ADDNOTLS','uPbvk','alTru','MicyE','获取地址时出错:','kwOJV','ojVyE','zXjNJ','\x20时出错:','HTTP错误\x20','2026132SgCmjb','Ovnwa','method','tyxhu','dBetJ','concat','toISOString','DLS','PASSWORD','SuGHe','trycloudflare','jkWNb','toString','JLUKt','true','proxyip','xltnQ','://','NpaMi','664712IiSxOR','notls','encode','FLhZd','signal','NujVk','8443','NRSNL','searchParams','hostname','XivMD','zxsLx','HOST','jKTnb','jJDEa','href','foOfj','IcWcs','miaoko','kmoLp','match','subtle','country','\x0aIP:\x20','12024297EzedmR','tfiEi','worker','yVTdB','QuFsq','text/html;\x20charset=UTF-8','&path=','getMilliseconds','yeYQQ','nYuBu','flat','wTCIL','LwKBf','CfZxs','MzxTi','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','FHszZ','#!MANAGED-CONFIG\x20','test','oLXZN',';\x20download=','DQDPu','yDjym','digest','OerbS','iGZHe','skip-cert-verify=true,\x20tfo=false,\x20udp-relay=false','\x20订阅器内置节点\x20','utf-8','all','QppZI','qqVnk','etkLw','pxMDk','www.visa.com.sg#官方优选域名','then','tZxBd','2086','/sub?target=singbox&url=','VLESS','replace','#us','\x0a国家:\x20','origin','host','?security=tls&sni=','CMPROXYIPS','azwmV','ewxJj','AhTJY','FJcbv','7278zqgYXI','/sub?host=[your\x20host]&uuid=[your\x20uuid]&path=[your\x20path]\x0a\x09\x09\x09\x0a\x09\x09\x09\x0a\x09\x09\x09\x0a\x09\x09\x09\x0a\x09\x09\x09\x0a\x09\x09\x09\x0a\x09\x09\x09\x09\x0a\x09\x09\x09\x09https://github.com/cmliu/Worker#VLESS订阅2sub\x0a\x09\x09\x09\x09','HAHah','JRyAl','icook.tw:2053#官方优选域名','hpzjR','2087','includes','reject','10kcGctm','type','clash','fulfilled','XriFV','apiUrl','city','headers','SUBNAME','TYPE','CgZyv','tFgKx','link:\x20','2053','TfTIM','uePCL','LVSnq','XfzkW','yPwDm','findIndex','VpzYO','/sendMessage?chat_id=','处理CSV\x20','ADDCSV','DTSKi','JOnrm','NOTLS','TbAYB','trojan://','log','map','GgNIn','?lang=zh-CN','UPTIME','
','password','sUqJV','statusText','Subscription-Userinfo','ADDNOTLSAPI','PswwN','surge','OBtaJ','POKsY','GET','btpYc','trim','error','qInqw','UhORO','ZMafk','slice','filter','/sub?target=clash&url=','?encryption=none&security=tls&sni=','\x0aASN:\x20','#VLESS订阅','fDwVM','XLGBv','10155187JBUVUs','kYgbZ','qPpIi','cGakP','2052','oCWHE','\x22,\x20tfo=false,\x20udp-relay=false','skip-cert-verify=true,\x20ws=true,\x20ws-path=/?ed=2560,\x20ws-headers=Host:\x22','setMilliseconds','text/html,application/xhtml+xml,application/xml;','url','epeius','wcUbM','GdHdo','lzzBb','41439QnWjwa','ERobk','from','now','EGHgZ','bzUHt','get','wQcey','entries','allSettled','warn','rHvbR','padStart','content-type','cf-workers-sub','TGTOKEN','obRKR','XjWNm','abort','TRUE','CSV文件缺少必需的字段','substring','workers.dev','pGmwd','TLS','nekobox','ioBql','decode','split','HOST/UUID','SYFlW','value','upload=','&alpn=http%2F1.1&fp=random&type=','到期时间(UTC):\x20','CF-Connecting-IP','\x0a域名:\x20','HovwY','JnvVv','User-Agent','toLowerCase','vDfPB','SUBAPI','notlsresponseBody:\x20','IWpnA','SUBCONFIG','attachment;\x20filename*=utf-8\x27\x27','false','wiZQx','SOCKS5DATA','mDprP','573209vqllms','iYxWp','URL302','text','CFPORTS','dGOBG','rySqh','uuid','https://','&alpn=http%2F1.1&fp=randomized&type=','Mozilla/5.0\x20Chrome/90.0.4430.72','bmEQq','vless://','mvvpj','HEnIh','\x0a组织:\x20','TIME','GnRAJ','yRcNo','random','MreyF','优选订阅生成器','hLPrC','rWyyA','push','\x0a城市:\x20','SNI','5075JUpAbu','some','substr','/?ed=2560&proxyip=','KEY','TOKEN','Accept','oQMjf','edgetunnel','eiGHc','SHA-256','json','XTxcV','toUpperCase','ufTDS','&emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true','ADDAPI','gzip,\x20deflate,\x20br','startsWith','FALSE',';\x20expire=','auto','yEjTc','DQxpn','FvuUv','dWejS','VBsZO','&insert=false&config=',';\x20total=','org','null','has','http','Trojan','cmliu','tXqJK','find','2083','FgUJX','www.wto.org:8080#官方优选域名','floor','\x0a入口:\x20','UA:\x20','ZRyNt','sni','join','ceil','2082','xkkFi','ETnmO','GsAVe','nrFwl','URL'];_0x3bd3=function(){return _0x547ead;};return _0x3bd3();}function _0x4818(_0x58acdc,_0x2467fd){const _0x1cd7b8=_0x3bd3();return _0x4818=function(_0x3a5bf8,_0x461200){_0x3a5bf8=_0x3a5bf8-(0x71*0x3c+-0xac4+-0xf05);let _0x24aadf=_0x1cd7b8[_0x3a5bf8];return _0x24aadf;},_0x4818(_0x58acdc,_0x2467fd);}async function sendMessage(_0x42a5ec,_0xdb4668,_0x1a9191=''){const _0x4e0346=_0xaa9dfe,_0x4cc2fe={'yeYQQ':function(_0x48e560,_0x18717f){return _0x48e560||_0x18717f;},'rLJqb':function(_0x37e1e8,_0x1e1148){return _0x37e1e8(_0x1e1148);},'eiGHc':function(_0x6686bd,_0x4bf585,_0x4d13c8){return _0x6686bd(_0x4bf585,_0x4d13c8);},'joELb':_0x4e0346(0x177),'isdrQ':_0x4e0346(0x18f),'hLPrC':_0x4e0346(0x1f4)};if(_0x4cc2fe[_0x4e0346(0x117)](!BotToken,!ChatID))return;try{let _0xcbfd68='';const _0x27e0d1=await _0x4cc2fe['rLJqb'](fetch,'http://ip-api.com/json/'+_0xdb4668+_0x4e0346(0x16b));if(_0x27e0d1['ok']){const _0x96227b=await _0x27e0d1[_0x4e0346(0x1ee)]();_0xcbfd68=_0x42a5ec+_0x4e0346(0x10e)+_0xdb4668+_0x4e0346(0x139)+_0x96227b[_0x4e0346(0x10d)]+_0x4e0346(0x1e1)+_0x96227b[_0x4e0346(0x151)]+_0x4e0346(0x1d7)+_0x96227b[_0x4e0346(0x200)]+_0x4e0346(0x182)+_0x96227b['as']+'\x0a'+_0x1a9191;}else _0xcbfd68=_0x42a5ec+_0x4e0346(0x10e)+_0xdb4668+'\x0a'+_0x1a9191;const _0x495dee=_0x4e0346(0x220)+BotToken+_0x4e0346(0x160)+ChatID+_0x4e0346(0x219)+encodeURIComponent(_0xcbfd68);return _0x4cc2fe[_0x4e0346(0x1ec)](fetch,_0x495dee,{'method':_0x4cc2fe['joELb'],'headers':{'Accept':_0x4cc2fe['isdrQ'],'Accept-Encoding':_0x4cc2fe[_0x4e0346(0x1de)],'User-Agent':_0x4e0346(0x1d2)}});}catch(_0x517e07){console[_0x4e0346(0x17a)](_0x4e0346(0x224),_0x517e07);}}async function nginx(){const _0x294ea9='\x0a\x09\x0a\x09\x0a\x09\x0a\x09Welcome\x20to\x20nginx!\x0a\x09\x0a\x09\x0a\x09\x0a\x09

Welcome\x20to\x20nginx!

\x0a\x09

If\x20you\x20see\x20this\x20page,\x20the\x20nginx\x20web\x20server\x20is\x20successfully\x20installed\x20and\x0a\x09working.\x20Further\x20configuration\x20is\x20required.

\x0a\x09\x0a\x09

For\x20online\x20documentation\x20and\x20support\x20please\x20refer\x20to\x0a\x09nginx.org.
\x0a\x09Commercial\x20support\x20is\x20available\x20at\x0a\x09nginx.com.

\x0a\x09\x0a\x09

Thank\x20you\x20for\x20using\x20nginx.

\x0a\x09\x0a\x09\x0a\x09';return _0x294ea9;}function surge(_0x3e16d4,_0xe4c5cd){const _0xeacef2=_0xaa9dfe,_0x376ad3={};_0x376ad3['tXqJK']='=\x20trojan,',_0x376ad3['SPzqS']=_0xeacef2(0xc9),_0x376ad3[_0xeacef2(0x1af)]=function(_0x5963c3,_0x280ed9){return _0x5963c3+_0x280ed9;},_0x376ad3['JRyAl']=function(_0x14874e,_0x2111d2){return _0x14874e+_0x2111d2;};const _0x301553=_0x376ad3;let _0x5551d6;_0x3e16d4['includes']('\x0d\x0a')?_0x5551d6=_0x3e16d4[_0xeacef2(0x1b1)]('\x0d\x0a'):_0x5551d6=_0x3e16d4[_0xeacef2(0x1b1)]('\x0a');let _0x2d134f='';for(let _0x3f2883 of _0x5551d6){if(_0x3f2883[_0xeacef2(0x149)](_0x301553[_0xeacef2(0x206)])){const _0x1d9883=_0x3f2883['split'](_0x301553['SPzqS'])[0x26cc+0x1*-0x671+-0x2*0x102d][_0xeacef2(0x1b1)](',')[0xe94+0x24*0xab+-0x26a0],_0x59ecdd=_0xeacef2(0x129),_0x14d545=_0xeacef2(0x18d)+_0x1d9883+_0xeacef2(0x18c);_0x2d134f+=_0x301553[_0xeacef2(0x1af)](_0x3f2883['replace'](new RegExp(_0x59ecdd,'g'),_0x14d545)[_0xeacef2(0x137)]('[','')[_0xeacef2(0x137)](']',''),'\x0a');}else _0x2d134f+=_0x301553[_0xeacef2(0x145)](_0x3f2883,'\x0a');}return _0x2d134f=_0xeacef2(0x120)+_0xe4c5cd[_0xeacef2(0x106)]+_0xeacef2(0xd7)+_0x2d134f[_0xeacef2(0x1aa)](_0x2d134f['indexOf']('\x0a')),_0x2d134f;}function getRandomProxyByMatch(_0x1dd7c2,_0x2e7fba){const _0xd254b8=_0xaa9dfe,_0x2e1c6e={};_0x2e1c6e[_0xd254b8(0x125)]=function(_0x2466c2,_0x455072){return _0x2466c2===_0x455072;},_0x2e1c6e[_0xd254b8(0x1d6)]=function(_0x516813,_0x14b9ef){return _0x516813*_0x14b9ef;},_0x2e1c6e[_0xd254b8(0x156)]=function(_0x165ce1,_0x5cfee5){return _0x165ce1*_0x5cfee5;};const _0x4c30c7=_0x2e1c6e,_0x4fd86c=_0x1dd7c2['toLowerCase']();let _0x25394c=_0x2e7fba[_0xd254b8(0x17f)](_0x1f0f7b=>_0x1f0f7b[_0xd254b8(0x1bd)]()['endsWith']('#'+_0x4fd86c));_0x25394c[_0xd254b8(0x21f)]===0xbc4+0x232d+0xc5*-0x3d&&(_0x25394c=_0x2e7fba['filter'](_0x5a5082=>_0x5a5082[_0xd254b8(0x1bd)]()['endsWith'](_0xd254b8(0x138))));if(_0x4c30c7[_0xd254b8(0x125)](_0x25394c[_0xd254b8(0x21f)],-0x925+-0x128d+0x1bb2))return _0x2e7fba[Math[_0xd254b8(0x20b)](_0x4c30c7[_0xd254b8(0x1d6)](Math[_0xd254b8(0x1db)](),_0x2e7fba[_0xd254b8(0x21f)]))];const _0x58c8ca=_0x25394c[Math[_0xd254b8(0x20b)](_0x4c30c7[_0xd254b8(0x156)](Math[_0xd254b8(0x1db)](),_0x25394c[_0xd254b8(0x21f)]))];return _0x58c8ca;}async function MD5MD5(_0x2eb96e){const _0x571cf8=_0xaa9dfe,_0x30dd6e={};_0x30dd6e['ufTDS']=_0x571cf8(0x218);const _0x52a0d9=_0x30dd6e,_0x435f92=new TextEncoder(),_0x553fa0=await crypto[_0x571cf8(0x10c)][_0x571cf8(0x126)](_0x52a0d9[_0x571cf8(0x1f1)],_0x435f92[_0x571cf8(0xf9)](_0x2eb96e)),_0x2f84cc=Array[_0x571cf8(0x197)](new Uint8Array(_0x553fa0)),_0x991f5b=_0x2f84cc[_0x571cf8(0x169)](_0x520a53=>_0x520a53[_0x571cf8(0xf0)](-0x1f*-0x139+-0x499+-0x213e)['padStart'](0xbe9+0x1065+0x713*-0x4,'0'))[_0x571cf8(0x210)](''),_0x13978b=await crypto[_0x571cf8(0x10c)][_0x571cf8(0x126)](_0x52a0d9[_0x571cf8(0x1f1)],_0x435f92[_0x571cf8(0xf9)](_0x991f5b[_0x571cf8(0x17e)](-0x1a28+-0xc28+0x2657,-0x52f*0x1+-0x9c1+0xf0b*0x1))),_0x4bee70=Array[_0x571cf8(0x197)](new Uint8Array(_0x13978b)),_0x4c8edb=_0x4bee70[_0x571cf8(0x169)](_0x2d172f=>_0x2d172f['toString'](-0x189f+0x1d07+-0x458*0x1)['padStart'](0x81b*0x4+0x2706+-0x4770,'0'))[_0x571cf8(0x210)]('');return _0x4c8edb[_0x571cf8(0x1bd)]();}function revertFakeInfo(_0x557c8b,_0x142907,_0x1f6acd){const _0x76c44=_0xaa9dfe;return _0x557c8b=_0x557c8b['replace'](new RegExp(fakeUserID,'g'),_0x142907)[_0x76c44(0x137)](new RegExp(fakeHostName,'g'),_0x1f6acd),_0x557c8b;}function generateFakeInfo(_0x1b7324,_0x1370fe,_0xd77985){const _0x42139b=_0xaa9dfe;return _0x1b7324=_0x1b7324[_0x42139b(0x137)](new RegExp(_0x1370fe,'g'),fakeUserID)[_0x42139b(0x137)](new RegExp(_0xd77985,'g'),fakeHostName),_0x1b7324;}function isValidIPv4(_0x3bbe8a){const _0x48a8e3=_0xaa9dfe,_0x5f5bb8=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;return _0x5f5bb8[_0x48a8e3(0x121)](_0x3bbe8a);}function generateDynamicUUID(_0x4d9caa){const _0x12e0ae=_0xaa9dfe,_0x4350bd={'qqVnk':function(_0x377f64,_0x1966e9){return _0x377f64+_0x1966e9;},'CNXLN':function(_0x225eac,_0x5bbd36){return _0x225eac*_0x5bbd36;},'kwOJV':function(_0x10c70c,_0x4ea838){return _0x10c70c-_0x4ea838;},'sUqJV':function(_0x523549,_0x4cf798){return _0x523549*_0x4cf798;},'DQDPu':function(_0x55839e,_0x587e0e){return _0x55839e/_0x587e0e;},'iYxWp':function(_0x1c236d,_0x4ec47c){return _0x1c236d+_0x4ec47c;},'GgNIn':function(_0x4674b3,_0x305490){return _0x4674b3|_0x305490;},'FyYWQ':function(_0x3a7666,_0x5c7a6a){return _0x3a7666&_0x5c7a6a;},'BHoam':function(_0x2f0c24,_0x14ba97,_0x4aca44){return _0x2f0c24(_0x14ba97,_0x4aca44);},'DhVpl':_0x12e0ae(0x1ed),'ZRyNt':function(_0x258796){return _0x258796();},'XRyMo':function(_0x46a1e5,_0x2ed9e4){return _0x46a1e5*_0x2ed9e4;},'azwmV':function(_0x5defec,_0x18c43a){return _0x5defec*_0x18c43a;},'zxsLx':function(_0x565d83,_0x16da2b){return _0x565d83*_0x16da2b;},'bmEQq':function(_0x4b667a,_0x27ff71){return _0x4b667a(_0x27ff71);},'ObuoA':function(_0x3bf25c,_0x49acc3){return _0x3bf25c+_0x49acc3;},'uePCL':function(_0x5b2601,_0x3739cd){return _0x5b2601(_0x3739cd);},'lzzBb':function(_0x3fdda2,_0x432046){return _0x3fdda2-_0x432046;}};function _0x25ac6a(){const _0x19e83c=_0x12e0ae,_0x347b08=new Date(),_0x1ce506=-0x59f+-0x25fe+0x2ba5,_0x1dcca4=new Date(_0x4350bd[_0x19e83c(0x12e)](_0x347b08['getTime'](),_0x4350bd['CNXLN'](_0x4350bd['CNXLN'](_0x1ce506,0xc*-0x7b+-0x1*0x4a3+0xaa3)*(0x1299+-0x2*-0x12c3+-0x37e3),-0x29*-0xef+-0x1ef4+-0x23*0x19))),_0x1c7be2=new Date(0x2616+0x477+-0x22b6,0x2f*0x19+-0xbc6+0x735,-0x5*-0x307+-0x1f79+0x105d,updateTime,-0x1adc*-0x1+-0x2458+0x97c,-0x26d3+-0x9f3*-0x1+-0xe7*-0x20),_0x399cb7=_0x4350bd[_0x19e83c(0xdf)](_0x1dcca4,_0x1c7be2),_0x1fe57e=_0x4350bd[_0x19e83c(0x16f)]((-0x1fb5+0x1*-0x482+-0x1*-0x281f)*(-0x174f*-0x1+-0xe9*-0x24+-0x37d7)*(0x11c2+-0x254+-0xf32),-0x2182+-0x258+0x23f2)*effectiveTime;return Math[_0x19e83c(0x211)](_0x4350bd[_0x19e83c(0x124)](_0x399cb7,_0x1fe57e));}const _0x1dd378=_0x4350bd[_0x12e0ae(0x20e)](_0x25ac6a),_0x4732de=new Date(-0x14db+0xa*0x387+0x4*-0x1a5,0x1*-0xf92+-0x1*-0x21aa+0x1*-0x1212,0x167*0x1+-0x104+-0x5c,updateTime,0x186a+-0x2*-0x26+-0x2*0xc5b,-0xed1+0x2*-0x8f9+0x20c3);_0x4732de[_0x12e0ae(0x18e)](_0x4732de[_0x12e0ae(0x116)]()+_0x4350bd[_0x12e0ae(0xd1)](_0x4350bd['CNXLN'](_0x4350bd[_0x12e0ae(0x13e)](_0x4350bd[_0x12e0ae(0x102)](_0x1dd378,-0x56a+0xdc+0x876),0x6e8+-0xb0a+-0x2*-0x22f),0x7f1*-0x2+0x12a3+-0x285),-0x26b8+-0x1*-0xc56+0x2*0xd3d)*effectiveTime);function _0x207b7c(_0x1b0355){const _0x136afe=_0x12e0ae,_0x5f0f3e={'ZMafk':function(_0x23ce62,_0x19ac9d){return _0x23ce62+_0x19ac9d;},'pGmwd':function(_0x4b7ecc,_0x3f46e7){const _0x2a9268=_0x4818;return _0x4350bd[_0x2a9268(0x1c9)](_0x4b7ecc,_0x3f46e7);},'PswwN':function(_0x2e0f9f,_0x349262){return _0x2e0f9f+_0x349262;},'wOVGW':function(_0x589273,_0x4e42dd){const _0xf07c5a=_0x4818;return _0x4350bd[_0xf07c5a(0x16a)](_0x589273,_0x4e42dd);},'jJDEa':function(_0x46ec0e,_0x36dfdd){return _0x4350bd['FyYWQ'](_0x46ec0e,_0x36dfdd);},'eyIyb':function(_0x5322f0,_0x89524b,_0x42975c){return _0x4350bd['BHoam'](_0x5322f0,_0x89524b,_0x42975c);}},_0x64b79e=new TextEncoder()[_0x136afe(0xf9)](_0x1b0355);return crypto[_0x136afe(0x10c)][_0x136afe(0x126)](_0x4350bd['DhVpl'],_0x64b79e)[_0x136afe(0x132)](_0x1c90ba=>{const _0x26ba02=_0x136afe,_0x2f64dc=Array[_0x26ba02(0x197)](new Uint8Array(_0x1c90ba)),_0x166b5b=_0x2f64dc[_0x26ba02(0x169)](_0xd62dd5=>_0xd62dd5[_0x26ba02(0xf0)](-0x6cd*-0x5+0xc35*-0x3+0x2ae)[_0x26ba02(0x1a1)](-0x1e9*-0xd+0x1f*0x11+-0x1ae2,'0'))[_0x26ba02(0x210)]('');let _0x424321=_0x5f0f3e[_0x26ba02(0x17d)](_0x5f0f3e['ZMafk'](_0x5f0f3e[_0x26ba02(0x17d)](_0x5f0f3e[_0x26ba02(0x1ac)](_0x5f0f3e[_0x26ba02(0x1ac)](_0x5f0f3e[_0x26ba02(0x173)](_0x166b5b[_0x26ba02(0x1e5)](0x546+0x20b3+-0x25f9,-0xc11+0x957*-0x2+0x1ec7*0x1)+'-',_0x166b5b['substr'](0xd30+-0x1a27+0xcff,0x12f8+-0x477+0x1*-0xe7d)),'-4'),_0x166b5b[_0x26ba02(0x1e5)](-0x1*0xb+-0x11*-0xe8+-0xf50,0x687+0xba0+-0x1224)),'-'),_0x5f0f3e['wOVGW'](_0x5f0f3e[_0x26ba02(0x105)](_0x5f0f3e['eyIyb'](parseInt,_0x166b5b['substr'](0xaa1+-0x1*0x9d1+-0x60*0x2,-0x2639+0x3fa*-0x3+0x3229),0x177*0xb+0xf37+-0x1f44),0x3*0x1be+-0x1*-0x17d5+-0x1cd*0x10),-0xe9b+0xf*-0x199+0x3*0xd06)[_0x26ba02(0xf0)](-0x133e+-0x2568+0x38b6))+_0x166b5b[_0x26ba02(0x1e5)](-0x1e15+-0x836+0x265d,0x1f*-0x5f+0x1fd*-0x11+-0x1d*-0x190)+'-',_0x166b5b['substr'](-0x22ba+-0x4*0x9a4+0x495e,0x3*-0x9b5+0x1*-0xbd6+-0x2901*-0x1));return _0x424321;});}const _0x2b94a2=_0x4350bd[_0x12e0ae(0x1d3)](_0x207b7c,_0x4350bd['ObuoA'](_0x4d9caa,_0x1dd378)),_0x39ac7c=_0x4350bd[_0x12e0ae(0x15a)](_0x207b7c,_0x4d9caa+_0x4350bd[_0x12e0ae(0x194)](_0x1dd378,-0x1df9*-0x1+0x1*-0x21e2+0x3ea)),_0x3dd823=new Date(_0x4350bd[_0x12e0ae(0x194)](_0x4732de[_0x12e0ae(0x21a)](),_0x4350bd['XRyMo'](_0x4350bd['XRyMo'](-0xb2*-0x34+0x2133+-0x4553,-0x20b2+0x1b6*0x2+0x1d82)*(0x1a2d+-0x1*-0x1c19+-0x360a),-0x45*0x60+-0x1656+0x2*0x1a0f))),_0x9eb776=_0x12e0ae(0x1b7)+_0x3dd823[_0x12e0ae(0xea)]()[_0x12e0ae(0x17e)](0x7*0x13f+-0x2341+0x1a88,0x25*0x7+-0x1129+0x1039)[_0x12e0ae(0x137)]('T','\x20')+'\x20(UTC+8):\x20'+_0x4732de[_0x12e0ae(0xea)]()['slice'](0x4a*0x5e+0x4*-0x50a+0x2*-0x382,-0x1695+0x11*0x1f9+-0x1*0xae1)[_0x12e0ae(0x137)]('T','\x20')+'\x0a';return Promise['all']([_0x2b94a2,_0x39ac7c,_0x9eb776]);}async function getLink(_0x3cbd4a){const _0x1de02e=_0xaa9dfe,_0x3c0ad7={'FgUJX':function(_0x2fad04,_0x46ab45){return _0x2fad04(_0x46ab45);},'oCWHE':_0x1de02e(0x12b),'GdHdo':_0x1de02e(0x203),'QdrvC':function(_0x156faa,_0x3d41df){return _0x156faa!==_0x3d41df;},'POKsY':function(_0x218b17,_0x741b86){return _0x218b17===_0x741b86;},'MfiHx':_0x1de02e(0x14e),'HovwY':_0x1de02e(0x201),'AnaMt':_0x1de02e(0xf5),'tQOrz':function(_0x512c2c,_0x31e8bb){return _0x512c2c(_0x31e8bb);}};let _0x1d143c=[],_0x450544=[];for(let _0x48809b of _0x3cbd4a){_0x48809b[_0x1de02e(0x1bd)]()[_0x1de02e(0x1f5)](_0x3c0ad7[_0x1de02e(0x193)])?_0x450544[_0x1de02e(0x1e0)](_0x48809b):_0x1d143c[_0x1de02e(0x1e0)](_0x48809b);}if(_0x450544&&_0x3c0ad7['QdrvC'](_0x450544[_0x1de02e(0x21f)],-0xff5+0x1*-0xe03+0x1df8)){function _0x39cd20(_0x34d7e8){const _0x3d8696=_0x1de02e,_0x36a3e3=new Uint8Array(_0x3c0ad7[_0x3d8696(0x209)](atob,_0x34d7e8)['split']('')[_0x3d8696(0x169)](_0x40a4b3=>_0x40a4b3[_0x3d8696(0xb4)](0xffe*-0x1+0x2*0x905+0x83*-0x4))),_0xba6800=new TextDecoder(_0x3c0ad7[_0x3d8696(0x18b)]);return _0xba6800[_0x3d8696(0x1b0)](_0x36a3e3);}const _0x572b6d=new AbortController(),_0x5a3f68=setTimeout(()=>{const _0x127ada=_0x1de02e;_0x572b6d[_0x127ada(0x1a7)]();},-0x1839+0xb51*0x3+-0x1ea);try{const _0x403a54={};_0x403a54['Accept']=_0x1de02e(0x18f),_0x403a54[_0x1de02e(0x1bc)]='v2rayN/'+FileName+_0x1de02e(0x21e);const _0x5a66d0={};_0x5a66d0[_0x1de02e(0xe6)]=_0x1de02e(0x19b),_0x5a66d0['headers']=_0x403a54,_0x5a66d0[_0x1de02e(0xfb)]=_0x572b6d[_0x1de02e(0xfb)];const _0x2b5d7a=await Promise[_0x1de02e(0x19e)](_0x450544[_0x1de02e(0x169)](_0x38eedb=>fetch(_0x38eedb,_0x5a66d0)['then'](_0x4a98bc=>_0x4a98bc['ok']?_0x4a98bc[_0x1de02e(0x1cb)]():Promise[_0x1de02e(0x14a)]()))),_0x37dc81=_0x2b5d7a['map']((_0xacffe3,_0xf6485c)=>{const _0x12a811=_0x1de02e,_0x199b71={};return _0x199b71['status']=_0xacffe3[_0x12a811(0xc4)],_0x199b71[_0x12a811(0x1b4)]=_0xacffe3['value'],_0x199b71[_0x12a811(0x150)]=_0x450544[_0xf6485c],_0x199b71;});console[_0x1de02e(0x168)](_0x37dc81);for(const _0x4603c8 of _0x37dc81){if(_0x3c0ad7[_0x1de02e(0x176)](_0x4603c8[_0x1de02e(0xc4)],_0x3c0ad7['MfiHx'])){const _0x43172d=await _0x4603c8[_0x1de02e(0x1b4)]||_0x3c0ad7[_0x1de02e(0x1ba)];if(_0x43172d[_0x1de02e(0x149)](_0x3c0ad7['AnaMt'])){const _0x483aa3=_0x43172d[_0x1de02e(0x149)]('\x0d\x0a')?_0x43172d[_0x1de02e(0x1b1)]('\x0d\x0a'):_0x43172d[_0x1de02e(0x1b1)]('\x0a');_0x1d143c=_0x1d143c[_0x1de02e(0xe9)](_0x483aa3);}else{const _0x3abddf=_0x39cd20(_0x43172d);if(_0x3abddf['includes'](_0x3c0ad7['AnaMt'])){const _0x285f54=_0x3abddf['includes']('\x0d\x0a')?_0x3abddf[_0x1de02e(0x1b1)]('\x0d\x0a'):_0x3abddf['split']('\x0a');_0x1d143c=_0x1d143c[_0x1de02e(0xe9)](_0x285f54);}}}}}catch(_0x3ee4c7){console[_0x1de02e(0x17a)](_0x3ee4c7);}finally{_0x3c0ad7['tQOrz'](clearTimeout,_0x5a3f68);}}return _0x1d143c;}export default{async 'fetch'(_0x59bbe6,_0x497c39){const _0x4b1166=_0xaa9dfe,_0x34e2ec={'AhTJY':_0x4b1166(0xce),'wcUbM':_0x4b1166(0x18a),'LwKBf':_0x4b1166(0x212),'FHszZ':_0x4b1166(0x134),'SYFlW':'2095','qPpIi':function(_0x53bbc0,_0x355d56){return _0x53bbc0(_0x355d56);},'yjmkZ':function(_0x26ebe9,_0x198914){return _0x26ebe9==_0x198914;},'rWyyA':function(_0x3fef6e,_0x35382d){return _0x3fef6e===_0x35382d;},'pxMDk':'true','zkBsI':function(_0x16a802,_0x1a8676,_0x176e2b){return _0x16a802(_0x1a8676,_0x176e2b);},'VpzYO':function(_0x2f58c0,_0x3e9f61){return _0x2f58c0*_0x3e9f61;},'GnRAJ':function(_0x7e22e3,_0x386804){return _0x7e22e3(_0x386804);},'fDwVM':function(_0x453170,_0x38881f){return _0x453170(_0x38881f);},'mvvpj':function(_0x2f26f4,_0x8ad513){return _0x2f26f4+_0x8ad513;},'mnmOM':function(_0x3928bc,_0x349a77){return _0x3928bc(_0x349a77);},'ZuQmk':_0x4b1166(0xbd),'DTSKi':function(_0x2f8e80,_0x1d9984){return _0x2f8e80===_0x1d9984;},'Azvef':function(_0x25a1e5,_0x16eb66){return _0x25a1e5===_0x16eb66;},'JOnrm':function(_0x44a1b6,_0x1c9ab0){return _0x44a1b6>_0x1c9ab0;},'btpYc':_0x4b1166(0xd3),'IlOnm':function(_0x124a2a,_0x398e28){return _0x124a2a*_0x398e28;},'xkkFi':function(_0x5151f3,_0x171961){return _0x5151f3==_0x171961;},'XriFV':_0x4b1166(0x204),'cGakP':function(_0x3d4608,_0x476175){return _0x3d4608(_0x476175);},'nYuBu':_0x4b1166(0x11e),'TfTIM':function(_0x3ed646,_0x119e3f){return _0x3ed646+_0x119e3f;},'dWejS':function(_0x4740c2,_0x748b5e){return _0x4740c2>>_0x748b5e;},'ewxJj':function(_0x2dc759,_0x590bea){return _0x2dc759<<_0x590bea;},'obRKR':function(_0x5278d4,_0x5ae52e){return _0x5278d4&_0x5ae52e;},'ousPi':function(_0x29d39e,_0x1cc16f){return _0x29d39e>>_0x1cc16f;},'alTru':function(_0x336c45,_0x291ecd){return _0x336c45|_0x291ecd;},'PPznf':function(_0x135777,_0x168d19){return _0x135777>>_0x168d19;},'oLXZN':function(_0x37bdf7,_0x3fe745){return _0x37bdf7&_0x3fe745;},'UhORO':function(_0x116f56,_0x192246){return _0x116f56-_0x192246;},'Whbsm':function(_0x15b4d2,_0x41a885){return _0x15b4d2%_0x41a885;},'IWpnA':function(_0x56772f,_0x102375){return _0x56772f(_0x102375);},'JEZfn':'User-Agent','CgZyv':_0x4b1166(0x201),'spBYE':function(_0x1cc393,_0x4f75de){return _0x1cc393*_0x4f75de;},'yVTdB':function(_0x3d22b8,_0xa670f1){return _0x3d22b8*_0xa670f1;},'vJKwR':function(_0x137268,_0x5d9a2a){return _0x137268/_0x5d9a2a;},'pqgPc':function(_0x559cba,_0x1bc165){return _0x559cba(_0x1bc165);},'MicyE':function(_0x4c4ed6,_0x540395){return _0x4c4ed6+_0x540395;},'DQxpn':function(_0x401b25,_0x5dc170){return _0x401b25+_0x5dc170;},'OerbS':function(_0xdb019b,_0x2605c8){return _0xdb019b+_0x2605c8;},'lfSao':function(_0x5849ac,_0x7f66c){return _0x5849ac+_0x7f66c;},'kmoLp':_0x4b1166(0xbb),'TbAYB':function(_0x333b7a,_0x3d903b){return _0x333b7a*_0x3d903b;},'FLhZd':function(_0x4a7a0e,_0xafa81b){return _0x4a7a0e*_0xafa81b;},'XTxcV':function(_0x40301c,_0x48f37e){return _0x40301c(_0x48f37e);},'iGZHe':function(_0x111fbd,_0x5716de){return _0x111fbd(_0x5716de);},'Ovnwa':function(_0x1d033b,_0x2177a9){return _0x1d033b>_0x2177a9;},'hpzjR':'/?ed=2560','yPwDm':function(_0xd0cdc3,_0x2cdb72){return _0xd0cdc3==_0x2cdb72;},'uPbvk':_0x4b1166(0x1b2),'XfzkW':function(_0x1eb23d,_0x339ffd,_0x1b34d3,_0x1304ec){return _0x1eb23d(_0x339ffd,_0x1b34d3,_0x1304ec);},'LVSnq':_0x4b1166(0x13b),'GsAVe':_0x4b1166(0x1cf),'QppZI':_0x4b1166(0x16e),'NRSNL':_0x4b1166(0xcc),'wQcey':_0x4b1166(0x20f),'PxeLL':_0x4b1166(0x191),'zXjNJ':_0x4b1166(0x1ca),'RiPmX':_0x4b1166(0x217),'ikGAS':function(_0x53f599){return _0x53f599();},'XivMD':_0x4b1166(0x114),'jkWNb':_0x4b1166(0xcb),'jAhLp':function(_0x54928c,_0x12c007){return _0x54928c===_0x12c007;},'QuFsq':function(_0x1487b1,_0x2cf84f){return _0x1487b1+_0x2cf84f;},'kLcet':_0x4b1166(0xf8),'yEjTc':_0x4b1166(0x111),'dCQvC':_0x4b1166(0xee),'KXQxp':'subconverter','tZxBd':function(_0x2aa4ca,_0x356fef){return _0x2aa4ca(_0x356fef);},'yRcNo':function(_0x4f14de,_0x26bdae){return _0x4f14de*_0x26bdae;},'dBetJ':function(_0x4a1496,_0x4f8b9c){return _0x4a1496(_0x4f8b9c);},'wTCIL':_0x4b1166(0x14d),'NpaMi':function(_0x1dbdca,_0x3f3239){return _0x1dbdca===_0x3f3239;},'oUGtr':_0x4b1166(0x1ae),'xltnQ':_0x4b1166(0x1a3),'oQMjf':function(_0x448569,_0x53c913){return _0x448569(_0x53c913);},'tyxhu':'sing-box','etkLw':_0x4b1166(0xd8),'FvuUv':function(_0x5a4279,_0x1d84c9){return _0x5a4279===_0x1d84c9;},'wiZQx':_0x4b1166(0x1ab),'JnvVv':'pages.dev','ERobk':function(_0x540ab0,_0x3f002a){return _0x540ab0(_0x3f002a);},'dGOBG':_0x4b1166(0xde),'vDfPB':function(_0x576611,_0x522f29){return _0x576611(_0x522f29);},'XjWNm':_0x4b1166(0x1a8),'bAVBT':function(_0x44b8ce,_0x753c99){return _0x44b8ce==_0x753c99;},'ojVyE':function(_0x5eddf8,_0xd822b8){return _0x5eddf8(_0xd822b8);},'foOfj':function(_0x5c3508,_0x432d1c){return _0x5c3508(_0x432d1c);},'FJcbv':_0x4b1166(0x1f6),'Qwaei':function(_0x49ff6f,_0x3be420){return _0x49ff6f(_0x3be420);},'apIoH':function(_0x5eb043,_0xe5dee6){return _0x5eb043+_0xe5dee6;},'nGPDs':_0x4b1166(0x157),'bzUHt':function(_0x5c952e,_0x36bf52){return _0x5c952e==_0x36bf52;},'nrFwl':_0x4b1166(0x1c0),'qInqw':'surge','NujVk':function(_0x5885e1,_0xa414e1){return _0x5885e1(_0xa414e1);},'EGHgZ':function(_0x566a5c,_0x284393){return _0x566a5c(_0x284393);},'JLUKt':function(_0x23619d,_0x387bd2,_0x370fda){return _0x23619d(_0x387bd2,_0x370fda);},'szUmh':function(_0x3704f7,_0x3def40,_0xc6c831,_0x39cf8d){return _0x3704f7(_0x3def40,_0xc6c831,_0x39cf8d);},'IcWcs':function(_0x2bca57,_0x5c7834){return _0x2bca57(_0x5c7834);}};if(_0x497c39[_0x4b1166(0x1e8)])快速订阅访问入口=await _0x34e2ec[_0x4b1166(0x189)](整理,_0x497c39['TOKEN']);BotToken=_0x497c39[_0x4b1166(0x1a4)]||BotToken,ChatID=_0x497c39['TGID']||ChatID,subconverter=_0x497c39[_0x4b1166(0x1bf)]||subconverter,subconfig=_0x497c39[_0x4b1166(0x1c2)]||subconfig,FileName=_0x497c39[_0x4b1166(0x153)]||FileName,socks5DataURL=_0x497c39[_0x4b1166(0x1c6)]||socks5DataURL;if(_0x497c39[_0x4b1166(0x13d)])CMproxyIPs=await _0x34e2ec[_0x4b1166(0x1c1)](整理,_0x497c39[_0x4b1166(0x13d)]);;if(_0x497c39[_0x4b1166(0x1cc)])httpsPorts=await 整理(_0x497c39['CFPORTS']);EndPS=_0x497c39['PS']||EndPS;const _0x306753=_0x59bbe6['headers']['get'](_0x34e2ec[_0x4b1166(0xb3)]),_0x56d36b=_0x306753?_0x306753[_0x4b1166(0x1bd)]():_0x34e2ec[_0x4b1166(0x155)],_0x571d5b=new URL(_0x59bbe6[_0x4b1166(0x190)]),_0x1bfbf3=_0x571d5b[_0x4b1166(0xff)][_0x4b1166(0x19b)](_0x4b1166(0xd9))?_0x571d5b[_0x4b1166(0xff)][_0x4b1166(0x19b)](_0x4b1166(0xd9))[_0x4b1166(0x1bd)]():_0x34e2ec[_0x4b1166(0x155)];let _0x4b0e52='',_0x309391='',_0x34ebd1='',_0x11a502='',_0x5132bc='ws',_0x11c41e=Math[_0x4b1166(0x20b)](_0x34e2ec[_0x4b1166(0x15f)](_0x34e2ec[_0x4b1166(0x222)](_0x34e2ec['yVTdB'](_0x34e2ec[_0x4b1166(0xc8)](timestamp-Date[_0x4b1166(0x198)](),timestamp),-0x3f*0x33+-0x13*0x2d+0x1*0x1047),-0x1273a80*0x4570+-0xa472a7c0*-0x110+0x200*0x50ad0dee),0x9bd+-0x4*0xa9+0xd*-0x3d)/(0x2028+-0x1*-0xd40+-0x2d66));if(_0x497c39['UA'])MamaJustKilledAMan=MamaJustKilledAMan['concat'](await _0x34e2ec[_0x4b1166(0xd6)](整理,_0x497c39['UA']));const _0x4a2bf1=new Date(),_0x1529e5=await MD5MD5(Math['ceil'](_0x4a2bf1[_0x4b1166(0x21a)]()));fakeUserID=_0x34e2ec[_0x4b1166(0x159)](_0x34e2ec[_0x4b1166(0xdd)](_0x34e2ec[_0x4b1166(0x1fa)](_0x34e2ec[_0x4b1166(0x127)](_0x34e2ec['OerbS'](_0x34e2ec['lfSao'](_0x1529e5[_0x4b1166(0x17e)](-0x233c+0xd7d+-0x15bf*-0x1,0x858*0x2+-0x1ea7+0xdff),'-'),_0x1529e5[_0x4b1166(0x17e)](0x1e84+-0x1*-0x182+-0x1ffe,-0x920+0x1*0x2ac+0x680)),'-'),_0x1529e5[_0x4b1166(0x17e)](-0x56*-0x3e+-0x1aa8*-0x1+0x1fa*-0x18,-0x1be4+0x104c+-0x1*-0xba8))+'-',_0x1529e5[_0x4b1166(0x17e)](-0x15d1+-0x1506+-0xe4d*-0x3,-0x28*-0x17+-0xdf8+-0x4*-0x29d)),'-')+_0x1529e5['slice'](0x1*0x3be+-0x9*0x1df+-0xd2d*-0x1),fakeHostName=_0x34e2ec['lfSao'](_0x1529e5[_0x4b1166(0x17e)](0x1*0x258a+-0x4*0xca+-0x225c,-0x4*-0x89b+0xe75*0x2+-0x3f4d)+'.',_0x1529e5[_0x4b1166(0x17e)](-0x2209+-0x2b3*0xe+-0x4*-0x11f8,0x1e07*-0x1+0x7*-0x1f5+0x2bcd))+_0x34e2ec[_0x4b1166(0x10a)],total=_0x34e2ec[_0x4b1166(0x166)](_0x34e2ec[_0x4b1166(0xfa)](total,0x3680*-0x32d5b28+-0xcc*-0xbe75900+0x14fbc70e00*0x14),-0x21d7+0x3*0xca4+-0x15);let _0x26ba55=Math[_0x4b1166(0x20b)](_0x34e2ec['vJKwR'](timestamp,-0x955+0x15cc+-0x88f*0x1));link=_0x497c39['LINK']||link;if(_0x497c39[_0x4b1166(0xb7)])addresses=await _0x34e2ec[_0x4b1166(0x1c1)](整理,_0x497c39[_0x4b1166(0xb7)]);if(_0x497c39[_0x4b1166(0x1f3)])addressesapi=await _0x34e2ec['qPpIi'](整理,_0x497c39['ADDAPI']);if(_0x497c39[_0x4b1166(0xda)])addressesnotls=await _0x34e2ec[_0x4b1166(0x1c1)](整理,_0x497c39['ADDNOTLS']);if(_0x497c39['ADDNOTLSAPI'])addressesnotlsapi=await _0x34e2ec[_0x4b1166(0x1ef)](整理,_0x497c39[_0x4b1166(0x172)]);if(_0x497c39[_0x4b1166(0x162)])addressescsv=await _0x34e2ec[_0x4b1166(0x1c1)](整理,_0x497c39[_0x4b1166(0x162)]);DLS=_0x497c39[_0x4b1166(0xeb)]||DLS;if(socks5DataURL)try{const _0x4575ab=await _0x34e2ec['IWpnA'](fetch,socks5DataURL),_0x3648e6=await _0x4575ab['text']();_0x3648e6['includes']('\x0d\x0a')?socks5Data=_0x3648e6[_0x4b1166(0x1b1)]('\x0d\x0a')[_0x4b1166(0x17f)](_0x43705e=>_0x43705e[_0x4b1166(0x179)]()!==''):socks5Data=_0x3648e6[_0x4b1166(0x1b1)]('\x0a')[_0x4b1166(0x17f)](_0x1a5cbb=>_0x1a5cbb[_0x4b1166(0x179)]()!=='');}catch{socks5Data=null;}if(_0x497c39['PROXYIP'])proxyIPs=await _0x34e2ec[_0x4b1166(0x128)](整理,_0x497c39['PROXYIP']);if(_0x34e2ec[_0x4b1166(0xe5)](快速订阅访问入口['length'],-0xd8c+0x11*-0x199+0x28b5)&&快速订阅访问入口['some'](_0x329114=>_0x571d5b[_0x4b1166(0xc3)][_0x4b1166(0x149)](_0x329114))){_0x4b0e52=_0x34e2ec['CgZyv'];if(_0x497c39[_0x4b1166(0x103)]){const _0x1db219=await _0x34e2ec[_0x4b1166(0x1c1)](整理,_0x497c39[_0x4b1166(0x103)]);_0x4b0e52=_0x1db219[Math[_0x4b1166(0x20b)](_0x34e2ec[_0x4b1166(0x112)](Math[_0x4b1166(0x1db)](),_0x1db219[_0x4b1166(0x21f)]))];}if(_0x497c39[_0x4b1166(0xec)])协议类型=_0x34e2ec[_0x4b1166(0x14f)],_0x309391=_0x497c39[_0x4b1166(0xec)];else{协议类型=_0x4b1166(0x136);if(_0x497c39[_0x4b1166(0x1e7)]){effectiveTime=_0x497c39[_0x4b1166(0x1d8)]||effectiveTime,updateTime=_0x497c39[_0x4b1166(0x16c)]||updateTime;const _0x465cd4=await _0x34e2ec[_0x4b1166(0x1ef)](generateDynamicUUID,_0x497c39[_0x4b1166(0x1e7)]);_0x309391=_0x465cd4[-0x2250+-0xa91+0x2ce1];}else _0x309391=_0x497c39[_0x4b1166(0x21d)]||_0x34e2ec[_0x4b1166(0x155)];}_0x34ebd1=_0x497c39['PATH']||_0x34e2ec[_0x4b1166(0x147)],_0x11a502=_0x497c39[_0x4b1166(0x1e2)]||_0x4b0e52,_0x5132bc=_0x497c39[_0x4b1166(0x154)]||_0x5132bc,隧道版本作者=_0x497c39['ED']||隧道版本作者,获取代理IP=_0x497c39['RPROXYIP']||获取代理IP;if(_0x34e2ec[_0x4b1166(0x15d)](_0x4b0e52,_0x34e2ec[_0x4b1166(0x155)])||_0x34e2ec[_0x4b1166(0x213)](_0x309391,'null')){let _0x3c6fbd;if(_0x4b0e52==_0x34e2ec[_0x4b1166(0x155)]&&_0x34e2ec[_0x4b1166(0x213)](_0x309391,_0x4b1166(0x201)))_0x3c6fbd=_0x34e2ec[_0x4b1166(0xdb)];else{if(_0x34e2ec[_0x4b1166(0x15d)](_0x4b0e52,_0x34e2ec['CgZyv']))_0x3c6fbd='HOST';else{if(_0x34e2ec[_0x4b1166(0xd0)](_0x309391,_0x34e2ec[_0x4b1166(0x155)]))_0x3c6fbd=_0x4b1166(0x21d);}}EndPS+=_0x4b1166(0x12a)+_0x3c6fbd+'\x20未设置!!!';}await _0x34e2ec[_0x4b1166(0x15c)](sendMessage,_0x4b1166(0x183),_0x59bbe6[_0x4b1166(0x152)][_0x4b1166(0x19b)](_0x4b1166(0x1b8)),_0x4b1166(0x20d)+_0x306753+_0x4b1166(0x1b9)+_0x571d5b[_0x4b1166(0x100)]+_0x4b1166(0x20c)+_0x34e2ec['DQxpn'](_0x571d5b[_0x4b1166(0xc3)],_0x571d5b['search'])+_0x4b1166(0x16d));}else{_0x4b0e52=_0x571d5b['searchParams'][_0x4b1166(0x19b)](_0x34e2ec[_0x4b1166(0x15b)]),_0x309391=_0x571d5b[_0x4b1166(0xff)][_0x4b1166(0x19b)](_0x34e2ec[_0x4b1166(0x215)])||_0x571d5b['searchParams'][_0x4b1166(0x19b)](_0x34e2ec[_0x4b1166(0x12d)])||_0x571d5b['searchParams'][_0x4b1166(0x19b)]('pw'),_0x34ebd1=_0x571d5b[_0x4b1166(0xff)][_0x4b1166(0x19b)](_0x34e2ec[_0x4b1166(0xfe)]),_0x11a502=_0x571d5b[_0x4b1166(0xff)][_0x4b1166(0x19b)](_0x34e2ec[_0x4b1166(0x19c)])||_0x4b0e52,_0x5132bc=_0x571d5b[_0x4b1166(0xff)][_0x4b1166(0x19b)](_0x4b1166(0x14c))||_0x5132bc,隧道版本作者=_0x571d5b['searchParams'][_0x4b1166(0x19b)](_0x4b1166(0x1eb))||_0x571d5b[_0x4b1166(0xff)]['get'](_0x4b1166(0x191))||隧道版本作者,获取代理IP=_0x571d5b[_0x4b1166(0xff)]['get'](_0x4b1166(0xf3))||获取代理IP;if(_0x571d5b[_0x4b1166(0xff)][_0x4b1166(0x202)](_0x4b1166(0x1eb))||_0x571d5b[_0x4b1166(0xff)]['has'](_0x4b1166(0x1cf)))协议类型=_0x4b1166(0x136);else(_0x571d5b['searchParams'][_0x4b1166(0x202)](_0x34e2ec['PxeLL'])||_0x571d5b['searchParams'][_0x4b1166(0x202)](_0x34e2ec[_0x4b1166(0x12d)])||_0x571d5b['searchParams'][_0x4b1166(0x202)]('pw'))&&(协议类型=_0x4b1166(0x204));if(!_0x571d5b[_0x4b1166(0xc3)]['includes'](_0x4b1166(0xcd))){const _0x151676=_0x497c39[_0x4b1166(0x1ca)]?_0x34e2ec[_0x4b1166(0xe1)]:_0x497c39[_0x4b1166(0x217)]?_0x34e2ec[_0x4b1166(0x21b)]:null;if(_0x151676){const _0x4e5d9c=await 整理(_0x497c39[_0x151676]),_0x4b2311=_0x4e5d9c[Math[_0x4b1166(0x20b)](_0x34e2ec[_0x4b1166(0xfa)](Math['random'](),_0x4e5d9c[_0x4b1166(0x21f)]))];return _0x34e2ec[_0x4b1166(0x1df)](_0x151676,_0x34e2ec[_0x4b1166(0xe1)])?Response['redirect'](_0x4b2311,-0x2e*-0x41+-0x1*0x1867+0xde7):_0x34e2ec[_0x4b1166(0xd6)](fetch,new Request(_0x4b2311,_0x59bbe6));}return new Response(await _0x34e2ec[_0x4b1166(0xc2)](nginx),{'headers':{'Content-Type':_0x34e2ec[_0x4b1166(0x101)]}});}if(!_0x4b0e52||!_0x309391){const _0x5b4222=_0x4b1166(0x21c)+_0x571d5b[_0x4b1166(0x13a)]+_0x4b1166(0x143),_0x39f913={};_0x39f913[_0x4b1166(0x1a2)]=_0x34e2ec['jkWNb'];const _0x7b447f={};return _0x7b447f[_0x4b1166(0xc4)]=0x190,_0x7b447f[_0x4b1166(0x152)]=_0x39f913,new Response(_0x5b4222,_0x7b447f);}!_0x34ebd1||_0x34ebd1[_0x4b1166(0x179)]()===''?_0x34ebd1=_0x34e2ec[_0x4b1166(0x147)]:_0x34ebd1=_0x34e2ec['jAhLp'](_0x34ebd1[0x4*0x70b+0x12db*-0x1+-0x951],'/')?_0x34ebd1:_0x34e2ec[_0x4b1166(0x113)]('/',_0x34ebd1);}if(_0x4b0e52['toLowerCase']()[_0x4b1166(0x149)](_0x34e2ec['kLcet'])||_0x4b0e52[_0x4b1166(0x1bd)]()[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0x1f9)])||_0x4b0e52[_0x4b1166(0x1bd)]()[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0xcf)]))noTLS=_0x4b1166(0xf2);noTLS=_0x497c39[_0x4b1166(0x165)]||noTLS;let _0x5a1d0f=generateFakeInfo(_0x571d5b[_0x4b1166(0x106)],_0x309391,_0x4b0e52);if(!_0x56d36b[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0xbf)])&&MamaJustKilledAMan[_0x4b1166(0x1e4)](_0x3feee8=>_0x56d36b[_0x4b1166(0x149)](_0x3feee8))&&MamaJustKilledAMan[_0x4b1166(0x21f)]>0x161*-0x7+-0x1*0x6f1+0x1098){const _0x312458=_0x497c39['URL302']?_0x34e2ec[_0x4b1166(0xe1)]:_0x497c39[_0x4b1166(0x217)]?_0x34e2ec[_0x4b1166(0x21b)]:null;if(_0x312458){const _0x46c9c9=await _0x34e2ec[_0x4b1166(0x133)](整理,_0x497c39[_0x312458]),_0x1c96eb=_0x46c9c9[Math[_0x4b1166(0x20b)](_0x34e2ec[_0x4b1166(0x1da)](Math[_0x4b1166(0x1db)](),_0x46c9c9['length']))];return _0x312458===_0x34e2ec[_0x4b1166(0xe1)]?Response['redirect'](_0x1c96eb,-0x1a5e+-0x20b1+-0x7*-0x89b):_0x34e2ec[_0x4b1166(0xe8)](fetch,new Request(_0x1c96eb,_0x59bbe6));}const _0x4ddf40={};_0x4ddf40[_0x4b1166(0xbc)]=_0x4b1166(0x114);const _0x368e52={};return _0x368e52[_0x4b1166(0x152)]=_0x4ddf40,new Response(await nginx(),_0x368e52);}else{if((_0x56d36b[_0x4b1166(0x149)](_0x34e2ec['wTCIL'])||_0x34e2ec[_0x4b1166(0xf6)](_0x1bfbf3,_0x34e2ec[_0x4b1166(0x11a)])&&!_0x56d36b[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0xbf)]))&&!_0x56d36b['includes'](_0x34e2ec['oUGtr'])&&!_0x56d36b[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0xf4)]))_0x5a1d0f=_0x4b1166(0x1d0)+subconverter+_0x4b1166(0x180)+encodeURIComponent(_0x5a1d0f)+_0x4b1166(0x1fe)+_0x34e2ec[_0x4b1166(0x1ea)](encodeURIComponent,subconfig)+'&emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true';else{if((_0x56d36b[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0xe7)])||_0x56d36b[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0x12f)])||_0x34e2ec[_0x4b1166(0x1fb)](_0x1bfbf3,_0x34e2ec[_0x4b1166(0x12f)])&&!_0x56d36b[_0x4b1166(0x149)](_0x34e2ec['KXQxp']))&&!_0x56d36b[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0xf4)]))_0x5a1d0f=_0x4b1166(0x1d0)+subconverter+_0x4b1166(0x135)+encodeURIComponent(_0x5a1d0f)+_0x4b1166(0x1fe)+_0x34e2ec['pqgPc'](encodeURIComponent,subconfig)+_0x4b1166(0x1f2);else{if(_0x4b0e52[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0x1c5)])||_0x4b0e52[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0x1bb)])){if(proxyhostsURL)try{const _0x5c30ad=await _0x34e2ec[_0x4b1166(0x196)](fetch,proxyhostsURL);if(!_0x5c30ad['ok']){console[_0x4b1166(0x17a)](_0x34e2ec[_0x4b1166(0x1cd)],_0x5c30ad['status'],_0x5c30ad['statusText']);return;}const _0x592eba=await _0x5c30ad[_0x4b1166(0x1cb)](),_0x462bff=_0x592eba[_0x4b1166(0x1b1)]('\x0a'),_0x35a71b=_0x462bff[_0x4b1166(0x17f)](_0x27d187=>_0x27d187[_0x4b1166(0x179)]()!=='');proxyhosts=proxyhosts[_0x4b1166(0xe9)](_0x35a71b);}catch(_0x10b637){console[_0x4b1166(0x17a)](_0x34e2ec[_0x4b1166(0x1cd)],_0x10b637);}proxyhosts=[...new Set(proxyhosts)];}const _0x56fc5c=await _0x34e2ec[_0x4b1166(0x1be)](整理优选列表,addressesapi),_0x3ead69=await _0x34e2ec[_0x4b1166(0x1d9)](整理测速结果,_0x34e2ec[_0x4b1166(0x1a6)]);addresses=addresses[_0x4b1166(0xe9)](_0x56fc5c),addresses=addresses['concat'](_0x3ead69);const _0x1e190b=[...new Set(addresses)];let _0xf0c284;if(_0x34e2ec[_0x4b1166(0xb8)](noTLS,_0x34e2ec['pxMDk'])&&_0x34e2ec[_0x4b1166(0x15d)](协议类型,_0x4b1166(0x136))){const _0x2f8825=await _0x34e2ec[_0x4b1166(0xe0)](整理优选列表,addressesnotlsapi),_0x5f4107=await _0x34e2ec[_0x4b1166(0x107)](整理测速结果,_0x34e2ec[_0x4b1166(0x141)]);addressesnotls=addressesnotls['concat'](_0x2f8825),addressesnotls=addressesnotls['concat'](_0x5f4107);const _0x46e749=[...new Set(addressesnotls)];_0xf0c284=_0x46e749[_0x4b1166(0x169)](_0xceee95=>{const _0x434824=_0x4b1166;let _0x3c1f68='-1',_0x5bcf0b=_0xceee95;const _0x261633=_0x5bcf0b[_0x434824(0x10b)](regex);if(!_0x261633){if(_0xceee95['includes'](':')&&_0xceee95[_0x434824(0x149)]('#')){const _0x4380e7=_0xceee95['split'](':');_0xceee95=_0x4380e7[0x1a09+0xce2*0x3+0x1*-0x40af];const _0x4a9c58=_0x4380e7[-0x3a*-0x1d+-0x2470+0x1ddf]['split']('#');_0x3c1f68=_0x4a9c58[-0x1*-0x561+-0xad*-0x1c+-0x184d],_0x5bcf0b=_0x4a9c58[-0x114c+0x24eb+-0x1*0x139e];}else{if(_0xceee95[_0x434824(0x149)](':')){const _0x2d978f=_0xceee95[_0x434824(0x1b1)](':');_0xceee95=_0x2d978f[-0x1257+0x116f+-0x74*-0x2],_0x3c1f68=_0x2d978f[-0x22e2+-0x251*0xd+0x4100];}else{if(_0xceee95[_0x434824(0x149)]('#')){const _0x465624=_0xceee95[_0x434824(0x1b1)]('#');_0xceee95=_0x465624[0x18b7+0x19ac+-0x3263],_0x5bcf0b=_0x465624[-0x1632+0x1111+0x522];}}}_0x5bcf0b[_0x434824(0x149)](':')&&(_0x5bcf0b=_0x5bcf0b[_0x434824(0x1b1)](':')[-0x1ef8+0x22f*0x1+-0x1cc9*-0x1]);}else _0xceee95=_0x261633[0x1*-0x223a+-0x971*0x1+0x2bac],_0x3c1f68=_0x261633[0xd*-0x9f+-0x148f*0x1+0x1ca4]||_0x3c1f68,_0x5bcf0b=_0x261633[0x76f+-0x237d+-0x95b*-0x3]||_0xceee95;const _0xbda299=['8080',_0x34e2ec[_0x434824(0x140)],_0x34e2ec[_0x434824(0x192)],_0x34e2ec[_0x434824(0x11b)],_0x34e2ec[_0x434824(0x11f)],_0x34e2ec[_0x434824(0x1b3)]];if(!_0x34e2ec[_0x434824(0x188)](isValidIPv4,_0xceee95)&&_0x34e2ec[_0x434824(0xd0)](_0x3c1f68,'-1'))for(let _0x336fa6 of _0xbda299){if(_0xceee95[_0x434824(0x149)](_0x336fa6)){_0x3c1f68=_0x336fa6;break;}}if(_0x34e2ec[_0x434824(0xd0)](_0x3c1f68,'-1'))_0x3c1f68='80';if(隧道版本作者['trim']()===_0x434824(0x205)&&_0x34e2ec['rWyyA'](获取代理IP[_0x434824(0x179)](),_0x34e2ec[_0x434824(0x130)])){let _0x4fe2f8=_0x5bcf0b['toLowerCase'](),_0x5039d3=null;if(socks5Data){const _0x425e3d=_0x34e2ec['zkBsI'](getRandomProxyByMatch,_0x4fe2f8,socks5Data);_0x34ebd1='/'+_0x425e3d;}else{for(let _0x4bdc5b of CMproxyIPs){if(_0x4bdc5b['includes']('#')&&_0x4bdc5b[_0x434824(0x1b1)]('#')[-0x1*0x1f01+-0x1*0x26dd+-0x1f*-0x241]&&_0x4fe2f8['includes'](_0x4bdc5b[_0x434824(0x1b1)]('#')[0x2*-0xb82+-0xbfc+0x2301][_0x434824(0x1bd)]())){_0x5039d3=_0x4bdc5b['split']('#')[-0x619+0x5*0x3+0x60a];break;}else{if(_0x4bdc5b[_0x434824(0x149)](':')&&_0x4bdc5b[_0x434824(0x1b1)](':')[-0xca9+-0x210b*-0x1+0x8d*-0x25]&&_0x4fe2f8['includes'](_0x4bdc5b['split'](':')[0x1b9+-0x12d7+-0x1e7*-0x9]['toLowerCase']())){_0x5039d3=_0x4bdc5b[_0x434824(0x1b1)](':')[-0x12*-0x3b+-0x25c+-0x1ca*0x1];break;}}}if(_0x5039d3)_0x34ebd1=_0x434824(0x1e6)+_0x5039d3;else{const _0x448bc4=proxyIPs[Math[_0x434824(0x20b)](_0x34e2ec[_0x434824(0x15f)](Math[_0x434824(0x1db)](),proxyIPs[_0x434824(0x21f)]))];_0x34ebd1=_0x434824(0x1e6)+_0x448bc4;}}}const _0x5c5f0b=_0x434824(0x1d4)+_0x309391+'@'+_0xceee95+':'+_0x3c1f68+'?encryption=none&security=&type='+_0x5132bc+_0x434824(0xd4)+_0x4b0e52+_0x434824(0x115)+_0x34e2ec['GnRAJ'](encodeURIComponent,_0x34ebd1)+'#'+_0x34e2ec[_0x434824(0x184)](encodeURIComponent,_0x34e2ec['mvvpj'](_0x5bcf0b,EndPS));return _0x5c5f0b;})[_0x4b1166(0x210)]('\x0a');}const _0x929560=_0x1e190b['map'](_0xaa6112=>{const _0x3e13aa=_0x4b1166;let _0x5b540a='-1',_0x43f2cb=_0xaa6112;const _0x184ec2=_0x43f2cb[_0x3e13aa(0x10b)](regex);if(!_0x184ec2){if(_0xaa6112[_0x3e13aa(0x149)](':')&&_0xaa6112[_0x3e13aa(0x149)]('#')){const _0x10c343=_0xaa6112[_0x3e13aa(0x1b1)](':');_0xaa6112=_0x10c343[-0x49*-0x38+0xe0b+-0x24f*0xd];const _0x51d110=_0x10c343[-0x2*-0xc9c+-0x6ef*-0x2+-0x2715][_0x3e13aa(0x1b1)]('#');_0x5b540a=_0x51d110[-0x1fda+-0x781+-0x145*-0x1f],_0x43f2cb=_0x51d110[0x2fe*0x8+-0xf2*-0x18+-0x2e9f];}else{if(_0xaa6112[_0x3e13aa(0x149)](':')){const _0x401057=_0xaa6112[_0x3e13aa(0x1b1)](':');_0xaa6112=_0x401057[-0x1426+-0x78b+0x1bb1],_0x5b540a=_0x401057[0xbc*-0x8+0x1be7*-0x1+-0x21c8*-0x1];}else{if(_0xaa6112[_0x3e13aa(0x149)]('#')){const _0x5b9f6c=_0xaa6112[_0x3e13aa(0x1b1)]('#');_0xaa6112=_0x5b9f6c[-0x1a30+0x1063+-0xd*-0xc1],_0x43f2cb=_0x5b9f6c[0x1f*0xd9+-0x43*-0x2+-0x1acc];}}}_0x43f2cb['includes'](':')&&(_0x43f2cb=_0x43f2cb['split'](':')[-0x451+0x15bb+0x6*-0x2e7]);}else _0xaa6112=_0x184ec2[0x1155+0x6de+-0x1832],_0x5b540a=_0x184ec2[0x1371+-0x23a5+-0x5*-0x33e]||_0x5b540a,_0x43f2cb=_0x184ec2[-0x1*-0x8eb+0x10dc+-0x19c4]||_0xaa6112;if(!_0x34e2ec[_0x3e13aa(0xb5)](isValidIPv4,_0xaa6112)&&_0x5b540a=='-1')for(let _0x7d8d73 of httpsPorts){if(_0xaa6112[_0x3e13aa(0x149)](_0x7d8d73)){_0x5b540a=_0x7d8d73;break;}}if(_0x34e2ec[_0x3e13aa(0xd0)](_0x5b540a,'-1'))_0x5b540a=_0x34e2ec['ZuQmk'];if(_0x34e2ec[_0x3e13aa(0x163)](隧道版本作者[_0x3e13aa(0x179)](),_0x3e13aa(0x205))&&_0x34e2ec[_0x3e13aa(0xba)](获取代理IP[_0x3e13aa(0x179)](),_0x3e13aa(0xf2))){let _0x11124f=_0x43f2cb[_0x3e13aa(0x1bd)](),_0x79093c=null;if(socks5Data){const _0x438fdc=_0x34e2ec[_0x3e13aa(0xbe)](getRandomProxyByMatch,_0x11124f,socks5Data);_0x34ebd1='/'+_0x438fdc;}else{for(let _0x37f0e3 of CMproxyIPs){if(_0x37f0e3[_0x3e13aa(0x149)]('#')&&_0x37f0e3[_0x3e13aa(0x1b1)]('#')[0x2546*-0x1+0x1f6d+0x7*0xd6]&&_0x11124f[_0x3e13aa(0x149)](_0x37f0e3[_0x3e13aa(0x1b1)]('#')[-0x106*-0x25+-0xa5b+-0x1b82][_0x3e13aa(0x1bd)]())){_0x79093c=_0x37f0e3[_0x3e13aa(0x1b1)]('#')[-0x1287+-0x49d+0x1724];break;}else{if(_0x37f0e3['includes'](':')&&_0x37f0e3['split'](':')[-0x1951+-0x1b5+-0x1*-0x1b07]&&_0x11124f[_0x3e13aa(0x149)](_0x37f0e3[_0x3e13aa(0x1b1)](':')[0xf*0x1f5+-0x1633*0x1+0x1*-0x727]['toLowerCase']())){_0x79093c=_0x37f0e3[_0x3e13aa(0x1b1)](':')[-0x1*-0x12af+-0x22b8+0x1009];break;}}}const _0x455248=proxyIPPool[_0x3e13aa(0x207)](_0x435738=>_0x435738[_0x3e13aa(0x149)](_0xaa6112));if(_0x455248)_0x34ebd1='/?ed=2560&proxyip='+_0x455248;else{if(_0x79093c)_0x34ebd1=_0x3e13aa(0x1e6)+_0x79093c;else{const _0x2f016c=proxyIPs[Math[_0x3e13aa(0x20b)](_0x34e2ec['VpzYO'](Math[_0x3e13aa(0x1db)](),proxyIPs[_0x3e13aa(0x21f)]))];_0x34ebd1='/?ed=2560&proxyip='+_0x2f016c;}}}}let _0x50a859=_0x4b0e52,_0x3fcb4a=_0x34ebd1,_0x2bf738=EndPS;_0x34e2ec[_0x3e13aa(0x164)](proxyhosts[_0x3e13aa(0x21f)],-0x1a39+-0x247e+0x3eb7)&&_0x4b0e52['includes'](_0x34e2ec[_0x3e13aa(0x178)])&&(_0x3fcb4a='/'+_0x4b0e52+_0x34ebd1,_0x50a859=proxyhosts[Math[_0x3e13aa(0x20b)](_0x34e2ec['IlOnm'](Math[_0x3e13aa(0x1db)](),proxyhosts[_0x3e13aa(0x21f)]))],_0x2bf738=EndPS+_0x3e13aa(0xca),_0x11a502=_0x50a859);if(_0x34e2ec[_0x3e13aa(0x213)](协议类型,_0x34e2ec[_0x3e13aa(0x14f)])){const _0x57a3d6=_0x3e13aa(0x167)+_0x309391+'@'+_0xaa6112+':'+_0x5b540a+_0x3e13aa(0x13c)+_0x11a502+_0x3e13aa(0x1d1)+_0x5132bc+_0x3e13aa(0xd4)+_0x50a859+'&path='+encodeURIComponent(_0x3fcb4a)+'#'+_0x34e2ec[_0x3e13aa(0x189)](encodeURIComponent,_0x34e2ec[_0x3e13aa(0x1d5)](_0x43f2cb,_0x2bf738));return _0x57a3d6;}else{const _0x38ec83=_0x3e13aa(0x1d4)+_0x309391+'@'+_0xaa6112+':'+_0x5b540a+_0x3e13aa(0x181)+_0x11a502+_0x3e13aa(0x1b6)+_0x5132bc+'&host='+_0x50a859+_0x3e13aa(0x115)+_0x34e2ec[_0x3e13aa(0x1d9)](encodeURIComponent,_0x3fcb4a)+'#'+encodeURIComponent(_0x34e2ec['mvvpj'](_0x43f2cb,_0x2bf738));return _0x38ec83;}})['join']('\x0a');let _0x344a2c=_0x929560;if(link){const _0x210901=await 整理(link),_0x1b9515=(await _0x34e2ec[_0x4b1166(0xc7)](getLink,_0x210901))[_0x4b1166(0x210)]('\x0a');_0x344a2c+='\x0a'+_0x1b9515,console[_0x4b1166(0x168)](_0x34e2ec['apIoH'](_0x34e2ec['nGPDs'],_0x1b9515));}_0xf0c284&&_0x34e2ec[_0x4b1166(0x19a)](noTLS,_0x34e2ec[_0x4b1166(0x130)])&&(_0x344a2c+='\x0a'+_0xf0c284,console[_0x4b1166(0x168)](_0x34e2ec[_0x4b1166(0x216)]+_0xf0c284));if(协议类型=='Trojan'&&(_0x56d36b[_0x4b1166(0x149)](_0x34e2ec['qInqw'])||_0x1bfbf3===_0x34e2ec[_0x4b1166(0x17b)]&&!_0x56d36b[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0xbf)]))&&!_0x56d36b[_0x4b1166(0x149)](_0x34e2ec['xltnQ'])){const _0x30773d=_0x344a2c[_0x4b1166(0x1b1)]('\x0a'),_0x4e2e9d=_0x34e2ec[_0x4b1166(0x15c)](generateFakeInfo,_0x30773d[_0x4b1166(0x210)]('|'),_0x309391,_0x4b0e52);_0x5a1d0f='https://'+subconverter+'/sub?target=surge&ver=4&url='+_0x34e2ec[_0x4b1166(0xfc)](encodeURIComponent,_0x4e2e9d)+_0x4b1166(0x1fe)+encodeURIComponent(subconfig)+'&emoji=true&list=false&xudp=false&udp=false&tfo=false&expand=true&scv=true&fdn=false';}else{let _0x5d50ee;try{_0x5d50ee=_0x34e2ec['IWpnA'](btoa,_0x344a2c);}catch(_0x56c84e){function _0x18201c(_0x36d2ba){const _0x235e6=_0x4b1166,_0x22fdc5=new TextEncoder()['encode'](_0x36d2ba);let _0xbde123='';const _0x2a768f=_0x34e2ec[_0x235e6(0x118)];for(let _0x53dc9b=0x12*-0x74+0x7c1+0x67;_0x53dc9b<_0x22fdc5[_0x235e6(0x21f)];_0x53dc9b+=0xedd*0x1+0x1f*0x9b+-0x219f){const _0x3e106e=_0x22fdc5[_0x53dc9b],_0x337600=_0x22fdc5[_0x34e2ec[_0x235e6(0x1d5)](_0x53dc9b,-0x74c+0x435*0x3+-0x6*0xe3)]||-0x4*-0x509+0xa53*-0x1+-0x9d1,_0x30f7a5=_0x22fdc5[_0x34e2ec[_0x235e6(0x159)](_0x53dc9b,0x821+-0x1*-0x1fab+0x39e*-0xb)]||0x3c0*0x1+-0x104+0x4*-0xaf;_0xbde123+=_0x2a768f[_0x34e2ec[_0x235e6(0x1fc)](_0x3e106e,0x15d*0x7+0x101a+-0x19a3)],_0xbde123+=_0x2a768f[_0x34e2ec[_0x235e6(0x13f)](_0x34e2ec[_0x235e6(0x1a5)](_0x3e106e,0x17ed+-0x15*-0x117+-0x2ecd),-0x1c*-0x1+-0x212e+0x2116)|_0x34e2ec['ousPi'](_0x337600,0x846*0x1+0x18*-0x5c+0x5e)],_0xbde123+=_0x2a768f[_0x34e2ec[_0x235e6(0xdc)](_0x34e2ec['ewxJj'](_0x34e2ec['obRKR'](_0x337600,-0x35f*-0x7+-0x937*-0x1+0xd*-0x285),-0x6*-0x1f5+0xcf7*-0x1+0x15*0xf),_0x34e2ec['PPznf'](_0x30f7a5,-0x2e1+-0x26e+0x555))],_0xbde123+=_0x2a768f[_0x34e2ec[_0x235e6(0x122)](_0x30f7a5,0x2*0x7be+-0x67*0x4b+0xef0)];}const _0x20462b=_0x34e2ec[_0x235e6(0x17c)](-0x7*-0x415+-0x1*-0x2054+0x1e72*-0x2,_0x34e2ec['Whbsm'](_0x22fdc5[_0x235e6(0x21f)],0xe36+-0xcbd+-0x176)||0x235*-0xb+-0x1*-0x20d5+-0x88b);return _0xbde123[_0x235e6(0x17e)](-0x54b+0x2*-0x5c9+0x10dd,_0x34e2ec['UhORO'](_0xbde123[_0x235e6(0x21f)],_0x20462b))+'=='[_0x235e6(0x17e)](-0x15fe+0x1*0x1373+0x28b,_0x20462b);}_0x5d50ee=_0x34e2ec['IWpnA'](_0x18201c,_0x344a2c);}const _0x57c96c={};_0x57c96c[_0x4b1166(0x1a2)]=_0x4b1166(0xcb),_0x57c96c['Profile-Update-Interval']=''+SUBUpdateTime,_0x57c96c[_0x4b1166(0x171)]=_0x4b1166(0x1b5)+_0x11c41e+_0x4b1166(0x123)+_0x11c41e+_0x4b1166(0x1ff)+total+_0x4b1166(0x1f7)+_0x26ba55;const _0x422786={};_0x422786[_0x4b1166(0x152)]=_0x57c96c;const _0x2d2e99=new Response(_0x5d50ee,_0x422786);return _0x2d2e99;}}}}try{const _0x357095=await _0x34e2ec[_0x4b1166(0x199)](fetch,_0x5a1d0f);if(!_0x357095['ok'])throw new Error('Error\x20fetching\x20subconverterUrl:\x20'+_0x357095[_0x4b1166(0xc4)]+'\x20'+_0x357095[_0x4b1166(0x170)]);let _0x160c93=await _0x357095[_0x4b1166(0x1cb)]();return _0x34e2ec[_0x4b1166(0xb8)](协议类型,_0x4b1166(0x204))&&(_0x56d36b[_0x4b1166(0x149)](_0x4b1166(0x174))||_0x1bfbf3===_0x4b1166(0x174)&&!_0x56d36b[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0xbf)]))&&!_0x56d36b[_0x4b1166(0x149)](_0x34e2ec[_0x4b1166(0xf4)])&&(_0x160c93=_0x34e2ec[_0x4b1166(0xf1)](surge,_0x160c93,_0x4b0e52)),_0x160c93=_0x34e2ec[_0x4b1166(0xc6)](revertFakeInfo,_0x160c93,_0x309391,_0x4b0e52),new Response(_0x160c93,{'headers':{'Content-Disposition':_0x4b1166(0x1c3)+_0x34e2ec[_0x4b1166(0x108)](encodeURIComponent,FileName)+_0x4b1166(0xd5)+FileName,'content-type':_0x34e2ec[_0x4b1166(0xef)],'Profile-Update-Interval':''+SUBUpdateTime,'Subscription-Userinfo':_0x4b1166(0x1b5)+_0x11c41e+';\x20download='+_0x11c41e+_0x4b1166(0x1ff)+total+_0x4b1166(0x1f7)+_0x26ba55}});}catch(_0x267505){const _0x4d0649={};_0x4d0649[_0x4b1166(0x1a2)]=_0x34e2ec[_0x4b1166(0xef)];const _0x1c3608={};return _0x1c3608[_0x4b1166(0xc4)]=0x1f4,_0x1c3608[_0x4b1166(0x152)]=_0x4d0649,new Response('Error:\x20'+_0x267505['message'],_0x1c3608);}}}; \ No newline at end of file