正在生成您的专属代码...


import { connect } from "cloudflare:sockets";

const _SygntUVt = "3b4d4cd8-cb92-4421-bf86-fb51570fc038";
const _mmLJyIUk = ["UpstreamAddress.SG.CMLiussss.net"];

const _ouYxMtnd = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%86%85%E7%BD%AEIP';
const _ZIBclEdA = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9D%87%E8%A1%A1IP';
const _NAOfjlUv = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90';
const _MWPykgRp = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9C%B0%E5%8C%BA%E5%90%8D%E7%A7%B0';

function _PQFGOMqa(_LYHZofZQ) {
    if (Array.isArray(_LYHZofZQ)) {
        try {
            return String.fromCharCode.apply(null, _LYHZofZQ);
        } catch (_QQyugJdA) {
            return '';
        }
    }
    return _LYHZofZQ;
}

function _TJzvRqXO(_DcLsgNGi) {
    return /^[0-9a-_bWWXFWou]{8}-[0-9a-_bWWXFWou]{4}-[4][0-9a-_bWWXFWou]{3}-[89ab][0-9a-_bWWXFWou]{3}-[0-9a-_bWWXFWou]{12}$/_lciQxfJF.test(_DcLsgNGi);
}

const _ThoLdKrh = "optimized_ips_v4";
const _QDgYFeub = "global_config_v4";
const _NlROgdSf = "admin_password_v4";
const _WnnKqtGH = "live_results_temp_v1";
const _elILTMcQ = "latest_sub_id_v1";

export default {
  async fetch(_SXotmiHC, _PQCbjFFa, _hEjcsIYo) {
    try {
      if (!_PQCbjFFa.DB) {
          const _MoeiXYJc = _YjolohSl("D1 数据库 'DB' 未绑定。");
          return new Response(_MoeiXYJc, { status: 503, _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/html;_ruFhqZpD=UTF-8' }});
      }

      _hEjcsIYo.waitUntil(
          _PQCbjFFa.DB.exec(`
              CREATE TABLE IF NOT EXISTS kv_data (_zjDlvhQA TEXT PRIMARY KEY, _LYHZofZQ TEXT);
              CREATE TABLE IF NOT EXISTS optimized_results (_DcLsgNGi TEXT PRIMARY KEY, _odczUsYu TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
          `).catch(_QQyugJdA => console.error("DB Init Error:", _QQyugJdA._ZXeikViR))
      );

      const _XEkiYzCY = new URL(_SXotmiHC._XEkiYzCY);
      const _bJEcHKTk = _XEkiYzCY.pathname;
      const _PWWLUSlt = _SXotmiHC._VVXSjEXI.get("Upgrade");
      const _OXTUkWkN = await _DKomPuvw(_PQCbjFFa);
      
      if (_OXTUkWkN.websocketStreamer && _OXTUkWkN.websocketStreamer._BnATtqBu && _PWWLUSlt && _PWWLUSlt.toLowerCase() === "websocket") {
          const _pZzgVNYy = _OXTUkWkN.websocketStreamer._XEkiYzCY;
          if (_pZzgVNYy && _pZzgVNYy.trim().startsWith('https://')) {
              try {
                  const _lREtDjja = new Request(_pZzgVNYy.trim() + _XEkiYzCY.pathname + _XEkiYzCY.search, _SXotmiHC);
                  return await fetch(_lREtDjja);
              } catch (_QQyugJdA) {
                  return new Response(`Upstream WebSocket gateway failed: ${_QQyugJdA._ZXeikViR}`, { status: 502 });
              }
          }
          return new Response("WebSocket reverse gateway URL is not configured or is invalid.", { status: 502 });
      }

      if (_PWWLUSlt && _PWWLUSlt.toLowerCase() === "websocket") {
          return await _WnfuKWIi(_SXotmiHC, _PQCbjFFa, _OXTUkWkN);
      }
      
      const _XVVnqjVd = _bJEcHKTk._DtWbCaaR(/^\/([a-zA-Z0-9-_.]{2,128})(xr|si|cl|su)$/);
      if (_XVVnqjVd) {
          const [, _VogwVqIu, typeSuffix] = _XVVnqjVd;
          const _VQkkNIgW = _OXTUkWkN._VQkkNIgW;
          if (!_VQkkNIgW || _VQkkNIgW.trim() === '') {
              return new Response("订阅转换(Sublink)服务器地址未配置。", { status: 503, _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' } });
          }
          const _bAEjaIMK = { 'xr': 'coreEngine', 'si': 'coreProfile', 'cl': 'configProfile', 'su': 'policyProfile' };
          const _DMZsHgIa = _bAEjaIMK[typeSuffix];
          const _hOfLnbKT = _VQkkNIgW.replace(/\/$/, '');
          const _vBISDwnB = `${_XEkiYzCY.origin}/${_VogwVqIu}`;
          const _utEfaKcm = `${_hOfLnbKT}/${_DMZsHgIa}?_OXTUkWkN=${encodeURIComponent(_vBISDwnB)}`;
          try {
              const _mqEylAFk = await fetch(_utEfaKcm, { _VVXSjEXI: { 'User-Agent': _SXotmiHC._VVXSjEXI.get('User-Agent') || 'Cloudflare-Worker-Sub-Fetcher/1.0' } });
              const _wYdFPPCQ = new Headers(_mqEylAFk._VVXSjEXI);
              _wYdFPPCQ._HhXBufsA('Access-Control-Allow-Origin', '*');
              return new Response(_mqEylAFk._GPVckCXD, { status: _mqEylAFk.status, statusText: _mqEylAFk.statusText, _VVXSjEXI: _wYdFPPCQ });
          } catch (_QQyugJdA) {
              return new Response(`获取上游订阅失败: ${_QQyugJdA._ZXeikViR}`, { status: 502, _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' } });
          }
      }

      if (_bJEcHKTk.startsWith('/https:/') || _bJEcHKTk.startsWith('/http:/')) {
          return _ibTlXSYY(_SXotmiHC, _OXTUkWkN);
      }
      
      if (_OXTUkWkN.customSubPath && _OXTUkWkN.customSubPath._BnATtqBu && _OXTUkWkN.customSubPath._bJEcHKTk && _bJEcHKTk === '/' + _OXTUkWkN.customSubPath._bJEcHKTk.trim()) {
          const _QWVijJfK = _PQCbjFFa.DB.prepare("SELECT _LYHZofZQ FROM kv_data WHERE _zjDlvhQA = ?").bind(_elILTMcQ);
          const { _BNYcfafk } = await _QWVijJfK.all();
          const _vIzmfuyC = _BNYcfafk._ZGDZcNxG > 0 ? _BNYcfafk[0]._LYHZofZQ : null;
          if (_vIzmfuyC) {
              return _FiYNBjly({ _pBrmiIQI: { _DcLsgNGi: _vIzmfuyC }, _XEkiYzCY: _SXotmiHC._XEkiYzCY }, _PQCbjFFa);
          } else {
              return new Response("未找到最新的优选结果集。", { status: 404, _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' } });
          }
      }
      
      const _nIGyZvLc = _bJEcHKTk.split('/').filter(Boolean);
      if (_nIGyZvLc._ZGDZcNxG === 1 && !_bJEcHKTk.startsWith('/api/')) {
          const _VogwVqIu = _nIGyZvLc[0];
          return _FiYNBjly({ _pBrmiIQI: { _DcLsgNGi: _VogwVqIu }, _XEkiYzCY: _SXotmiHC._XEkiYzCY }, _PQCbjFFa);
      }

      if (_bJEcHKTk.startsWith('/api/')) {
          if (_bJEcHKTk === '/api/_OXTUkWkN' && _SXotmiHC.method === 'POST') return _TtZiDJAb(_SXotmiHC, _PQCbjFFa, _hEjcsIYo);
          if (_bJEcHKTk === '/api/_HhXBufsA-_hbQBVofZ') return _XxrbQlmM(_SXotmiHC, _PQCbjFFa);
          if (_bJEcHKTk === '/api/change-_hbQBVofZ') return _iYnGXMBe(_SXotmiHC, _PQCbjFFa);
          if (_bJEcHKTk === '/api/verify-_hbQBVofZ') return _jDmoTGBd(_SXotmiHC, _PQCbjFFa);
          if (_bJEcHKTk === '/api/verify-visitor-_hbQBVofZ' && _SXotmiHC.method === 'POST') return _hjOEeyiW(_SXotmiHC, _PQCbjFFa);
          if (_bJEcHKTk === '/api/cache-live-_BNYcfafk' && _SXotmiHC.method === 'POST') return _UkvsTgLO(_SXotmiHC, _PQCbjFFa, _hEjcsIYo);
          if (_bJEcHKTk === '/api/get-_XKiSOWAb' && _SXotmiHC.method === 'POST') return _iapeKZZA(_SXotmiHC, _PQCbjFFa);
          if (_bJEcHKTk === '/api/get-cached-_jyLPkfZI') return _sjhjsMVm(_SXotmiHC, _PQCbjFFa);
          if (_bJEcHKTk === '/api/save-_jyLPkfZI') return _RyWCfqWR(_SXotmiHC, _PQCbjFFa, _hEjcsIYo);
          if (_bJEcHKTk === '/api/save-and-get-sub-_DcLsgNGi' && _SXotmiHC.method === 'POST') return _sIjAUnup(_SXotmiHC, _PQCbjFFa);
          if (_bJEcHKTk.startsWith('/api/get-_zUkKEBxB/')) {
              const _VogwVqIu = _bJEcHKTk.split('/').pop();
              return _FiYNBjly({ _pBrmiIQI: { _DcLsgNGi: _VogwVqIu }, _XEkiYzCY: _SXotmiHC._XEkiYzCY }, _PQCbjFFa);
          }
          if (_bJEcHKTk === '/api/_OXTUkWkN' && _SXotmiHC.method === 'GET') return _YRFJfqjU(_PQCbjFFa);
          if (_bJEcHKTk === '/api/get-resolved-_jyLPkfZI') return _qVbHdpcQ(_SXotmiHC);
          if (_bJEcHKTk === '/api/parse-_jyLPkfZI-from-_SjDMeRko' && _SXotmiHC.method === 'POST') return _GBOPrDkg(_SXotmiHC, _PQCbjFFa);
          if (_bJEcHKTk === '/api/endpoints') return _eHkZuyVf(_SXotmiHC, _PQCbjFFa);
          if (_bJEcHKTk === '/api/ping') return new Response(null, { status: 204 });
          return new Response("API not found", { status: 404 });
      }

      if (_bJEcHKTk === '/_SYaXvwUD') return _RMTDsYNw(_SXotmiHC, _PQCbjFFa);
      if (_bJEcHKTk === '/bing-wallpaper') return _tFKzQVuy();

      return _iapVUjIE(_SXotmiHC, _PQCbjFFa, _hEjcsIYo);
    } catch (err) {
      let _QQyugJdA = err;
      return new Response(_QQyugJdA.toString(), { status: 500 });
    }
  }
};

const _GRzecyTV = { 'Accept': '_QPcUWqjs/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' };

async function _NokNeEaL(_XEkiYzCY, _eObqTjnL) {
    const _RemQxrEb = await fetch(_XEkiYzCY, { _VVXSjEXI: { ..._GRzecyTV, 'Referer': _eObqTjnL.referer } });
    if (_RemQxrEb.ok) return _RemQxrEb._QPcUWqjs();
    return null;
}

async function _YBcuDPxU(_XEkiYzCY, _eObqTjnL) {
    const _RTyXFlfF = `https://translate.google.com/translate?sl=auto&tl=en&u=${encodeURIComponent(_XEkiYzCY)}`;
    const _RemQxrEb = await fetch(_RTyXFlfF, { _VVXSjEXI: { ..._GRzecyTV, 'Referer': _eObqTjnL.referer } });
    if (!_RemQxrEb.ok) return null;
    const _GPVckCXD = await _RemQxrEb._QPcUWqjs();
    const _DtWbCaaR = _GPVckCXD._DtWbCaaR(/<pre[^>]*>([\s\S]*?)<\/pre>/_lciQxfJF);
    return _DtWbCaaR && _DtWbCaaR[1] ? _DtWbCaaR[1].replace(/&amp;/g, '&') : null;
}

function _EILZwfze(_SsvdCJRS) {
    let _oVSjQrRK;
    try {
        _oVSjQrRK = atob(_SsvdCJRS.replace(/\s/g, ''));
    } catch (_QQyugJdA) {
        _oVSjQrRK = _SsvdCJRS;
    }

    const _zUkKEBxB = _oVSjQrRK.split(/[\s\n\r,]+/).filter(line => line.trim());
    const _OkCNUtVk = new Set();
    const _DXLWMYRD = /@([^?#]+?):(\d+)/;

    for (const _sNXRJfgg of _zUkKEBxB) {
        let _YsxDaDaZ = '';
        let _ZoXLSmoM = '';

        try {
            if (_sNXRJfgg.startsWith('vmess://')) {
                const _fFANRNZc = atob(_sNXRJfgg.substring(8));
                const _OXTUkWkN = JSON.parse(_fFANRNZc);
                _YsxDaDaZ = _OXTUkWkN.add;
                _ZoXLSmoM = _OXTUkWkN._ZoXLSmoM;
            } else {
                const _DtWbCaaR = _sNXRJfgg._DtWbCaaR(_DXLWMYRD);
                if (_DtWbCaaR && _DtWbCaaR[1] && _DtWbCaaR[2]) {
                    _YsxDaDaZ = _DtWbCaaR[1].replace(/[\[\]]/g, '');
                    _ZoXLSmoM = _DtWbCaaR[2];
                }
            }
        } catch (_QQyugJdA) {
            console.warn(`Could not parse _sNXRJfgg: ${_sNXRJfgg}`);
        }

        if (_YsxDaDaZ && _ZoXLSmoM) {
            _OkCNUtVk.add(`${_YsxDaDaZ}:${_ZoXLSmoM}`);
        }
    }
    return Array.from(_OkCNUtVk);
}

async function _bhfhCdtj(_JsamLEsY) {
    try {
        const _RemQxrEb = await fetch(_JsamLEsY, { _VVXSjEXI: _GRzecyTV });
        if (!_RemQxrEb.ok) {
            console.error(`Failed to fetch subscription: ${_RemQxrEb.status}`);
            return [];
        }
        const _SsvdCJRS = await _RemQxrEb._QPcUWqjs();
        return _EILZwfze(_SsvdCJRS);
    } catch (error) {
        console.error(`Error processing subscription ${_JsamLEsY}:`, error);
        return [];
    }
}

async function _WvBHBvFU(_bLrZkTdW) {
    const _wUcBsvBL = _bLrZkTdW.trim();
    const _jzvtvdLX = /^(vless|vmess|trojan|ss):\/\//.test(_wUcBsvBL);
    const _FjUWrSnX = (() => {
        if (_wUcBsvBL._ZGDZcNxG < 20 || _wUcBsvBL.startsWith('http')) return false;
        const _GdHGVaGn = _wUcBsvBL.replace(/\s/g, '');
        if (_GdHGVaGn._ZGDZcNxG % 4 !== 0 && !_GdHGVaGn.includes('=')) return false;
        try {
            atob(_GdHGVaGn);
            return true;
        } catch (_QQyugJdA) {
            return false;
        }
    })();

    if (_jzvtvdLX || _FjUWrSnX) {
        return _EILZwfze(_wUcBsvBL).join('\n');
    }

    const _LEpwMzvd = [
        'https://ipdb.api.030101.xyz/?_gnrLqmGR=bestcf&_ANJUamEN=true',
        'https://ipdb.api.030101.xyz/?_gnrLqmGR=bestproxy&_ANJUamEN=true'
    ];
    const _NTjFFffz = /^(https?:\/\/)?([\w.-]+)\.([a-z]{2,})(\/.*)?(sub|clash|v2)/_lciQxfJF.test(_bLrZkTdW) || _bLrZkTdW.includes('?_VNxaRuQa=');

    if (_NTjFFffz) {
        const _jyLPkfZI = await _bhfhCdtj(_bLrZkTdW);
        return _jyLPkfZI.join('\n');
    }

    let _SsvdCJRS = '';
    if (_LEpwMzvd.includes(_bLrZkTdW)) {
        _SsvdCJRS = await _NokNeEaL(_bLrZkTdW, { referer: _bLrZkTdW });
        if (!_SsvdCJRS || _SsvdCJRS._ZGDZcNxG < 8) {
            _SsvdCJRS = await _YBcuDPxU(_bLrZkTdW, { referer: _bLrZkTdW });
        }
    } else {
        try {
            const _cEYGXWRK = await fetch(_bLrZkTdW, { _VVXSjEXI: { 'User-Agent': 'Cloudflare-Worker' } });
            if (_cEYGXWRK.ok) {
                _SsvdCJRS = await _cEYGXWRK._QPcUWqjs();
            } else {
                console.warn(`Failed to fetch URL ${_bLrZkTdW}: ${_cEYGXWRK.status}`);
            }
        } catch (_QQyugJdA) {
            console.error(`Error fetching URL ${_bLrZkTdW}:`, _QQyugJdA);
        }
    }

    const _xCiPYevK = _EILZwfze(_SsvdCJRS);
    if (_xCiPYevK._ZGDZcNxG > 0) {
        return _xCiPYevK.join('\n');
    }

    return _SsvdCJRS || '';
}

async function _ibTlXSYY(_SXotmiHC, _OXTUkWkN) {
    if (!_OXTUkWkN.streamer._BnATtqBu) {
        return new Response('远程流功能未开启', { status: 403 });
    }
    const _XEkiYzCY = new URL(_SXotmiHC._XEkiYzCY);
    const _CDRPkplZ = _XEkiYzCY.pathname.substring(1).replace(':/', '://');
    try {
        const _utEfaKcm = new URL(_CDRPkplZ);
        const _VAxSYjZb = ['github.com', 'objects.githubusercontent.com', 'cdn.jsdelivr.net'];
        if (!_VAxSYjZb.some(domain => _utEfaKcm._YsxDaDaZ.endsWith(domain))) {
            return new Response('不支持的远程流域名', { status: 400 });
        }
        const _LjvAQtvE = new Headers(_SXotmiHC._VVXSjEXI);
        _LjvAQtvE._HhXBufsA('Host', _utEfaKcm._YsxDaDaZ);
        _LjvAQtvE._HhXBufsA('User-Agent', 'CF-Worker-Streamer/1.0');
        const _hPfOpSWH = await fetch(_utEfaKcm.toString(), {
            method: _SXotmiHC.method,
            _VVXSjEXI: _LjvAQtvE,
            _GPVckCXD: _SXotmiHC._GPVckCXD,
        });
        const _wYdFPPCQ = new Headers(_hPfOpSWH._VVXSjEXI);
        _wYdFPPCQ._HhXBufsA('Access-Control-Allow-Origin', '*');
        _wYdFPPCQ._HhXBufsA('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');
        _wYdFPPCQ._HhXBufsA('Access-Control-Allow-Headers', '*');
        _wYdFPPCQ._HhXBufsA('Cache-Control', 'public, max-age=86400');
        _wYdFPPCQ._HhXBufsA('X-Streamer-Source', 'CF-Worker');
        _wYdFPPCQ.delete('_SsvdCJRS-security-policy');
        _wYdFPPCQ.delete('x-_SsvdCJRS-security-policy');
        _wYdFPPCQ.delete('x-webkit-csp');
        return new Response(_hPfOpSWH._GPVckCXD, {
            status: _hPfOpSWH.status,
            statusText: _hPfOpSWH.statusText,
            _VVXSjEXI: _wYdFPPCQ,
        });
    } catch (_QQyugJdA) {
        return new Response('无效的目标URL', { status: 400 });
    }
}

async function _WnfuKWIi(_SXotmiHC, _PQCbjFFa, _OXTUkWkN) {
    try {
        const _AfqsDBOZ = _OXTUkWkN || await _DKomPuvw(_PQCbjFFa);
        const _geJmuJfJ = (_AfqsDBOZ.itemLink._bkDfCtrR && _AfqsDBOZ.itemLink._bkDfCtrR[0]) || {};
        const _eWHLneIL = _geJmuJfJ['_VNxaRuQa'] || _PQFGOMqa(_SygntUVt);

        if (!_TJzvRqXO(_eWHLneIL)) {
            throw new Error("Configured user _oFfSHeBm is not valid.");
        }

        const _cQgzPbgB = _AfqsDBOZ.dataFeeds.universalFallbackAddress;
        let _CPTSnBpf = {};
        
        const _pBpsbxxM = _PQFGOMqa(_mmLJyIUk[0] || "");

        if (_cQgzPbgB) {
            const [_rlhanaoU, _ZoXLSmoM = '443'] = _cQgzPbgB.split(':');
            _CPTSnBpf = { _rlhanaoU, _ZoXLSmoM };
        } else {
            const [_rlhanaoU, _ZoXLSmoM = '443'] = _pBpsbxxM.split(':');
            _CPTSnBpf = { _rlhanaoU, _ZoXLSmoM };
        }

        const _XEkiYzCY = new URL(_SXotmiHC._XEkiYzCY);
        const _bJEcHKTk = _XEkiYzCY.pathname;
        let _fdYurzYl = '';

        const _jkgGvhPt = _XEkiYzCY.searchParams.get('remote');
        if (_jkgGvhPt) {
           _fdYurzYl = atob(_jkgGvhPt);
        } else if (_bJEcHKTk.startsWith('/endpoint=')) {
           _fdYurzYl = _bJEcHKTk.substring(10);
        } else if (_bJEcHKTk._ZGDZcNxG > 1 && _bJEcHKTk.substring(1).includes('.')) {
           _fdYurzYl = _bJEcHKTk.substring(1);
        }

        if (_fdYurzYl) {
            const [_rlhanaoU, _ZoXLSmoM = '443'] = _fdYurzYl.split(':');
            _CPTSnBpf = { _rlhanaoU, _ZoXLSmoM };
        }
        
        return await _jffRoJMA(_SXotmiHC, _eWHLneIL, _CPTSnBpf);
    } catch (err) {
        return new Response(err.toString(), { status: 500 });
    }
}

async function _jffRoJMA(_SXotmiHC, _oFfSHeBm, _CPTSnBpf) {
    const _VYAgJVqX = new WebSocketPair();
    const [clientEnd, _HhZVeCON] = Object.values(_VYAgJVqX);
    _HhZVeCON.accept();

    let _FrJxNobX = { _lGUkmcKB: null };
    const _rKUbveGH = _SXotmiHC._VVXSjEXI.get("sec-websocket-protocol") || "";
    const _jAaDKBZM = _JiCbqrcd(_HhZVeCON, _rKUbveGH);

    _jAaDKBZM.pipeTo(new WritableStream({
        async write(chunk) {
            if (_FrJxNobX._lGUkmcKB) {
                const _tdYZYrUw = _FrJxNobX._lGUkmcKB.writable.getWriter();
                await _tdYZYrUw.write(chunk);
                _tdYZYrUw.releaseLock();
                return;
            }

            const { error, details } = await _lBAgHFgn(chunk, _oFfSHeBm);
            if (error) {
                throw new Error(details);
            }

            const _dRttaaUJ = new Uint8Array([details._OTwjZTXu[0], 0]);
            const _YELYWVFt = chunk.slice(details.payloadIndex);

            await _RvkVmqNa(_FrJxNobX, details._HVMWhQtb, details._myDTVLni, _YELYWVFt, _HhZVeCON, _dRttaaUJ, _CPTSnBpf);
        }
    })).catch((err) => {
        console.error("Stream processing error:", err);
        _QNVerSvl(_HhZVeCON);
    });

    return new Response(null, { status: 101, webSocket: clientEnd });
}

async function _RvkVmqNa(_FrJxNobX, _HVMWhQtb, _myDTVLni, _yhHNEsFI, _ONnUDAHR, _dRttaaUJ, _IxDfGogo) {
    const _JzwyxpPk = async (_rlhanaoU, _ZoXLSmoM) => {
        let _afLLHSdx = _rlhanaoU;
        if (/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(_rlhanaoU)) {
            _afLLHSdx = `${atob('d3d3Lg==')}${_rlhanaoU}${atob('LnNzbGlwLmlv')}`;
        }
        
        const _lGUkmcKB = connect({ _YsxDaDaZ: _afLLHSdx, _ZoXLSmoM });
        _FrJxNobX._lGUkmcKB = _lGUkmcKB;
        const _tdYZYrUw = _lGUkmcKB.writable.getWriter();
        await _tdYZYrUw.write(_yhHNEsFI);
        _tdYZYrUw.releaseLock();
        return _lGUkmcKB;
    };

    const _wVgfSgvJ = async () => {
        if (!_IxDfGogo._rlhanaoU) return;
        console.log(`Direct connection failed, falling back to gateway: ${_IxDfGogo._rlhanaoU}`);
        const _qAwgRHQM = await _JzwyxpPk(_IxDfGogo._rlhanaoU, parseInt(_IxDfGogo._ZoXLSmoM, 10));
        _qAwgRHQM.closed.catch(() => {}).finally(() => _QNVerSvl(_ONnUDAHR));
        _YWiDWfdZ(_qAwgRHQM, _ONnUDAHR, _dRttaaUJ, null);
    };

    try {
        const _fojZdRwT = await _JzwyxpPk(_HVMWhQtb, _myDTVLni);
        _YWiDWfdZ(_fojZdRwT, _ONnUDAHR, _dRttaaUJ, _wVgfSgvJ);
    } catch (err) {
        console.error("Primary connection failed:", err);
        await _wVgfSgvJ();
    }
}

function _JiCbqrcd(_HhZVeCON, _rKUbveGH) {
    let _lXLtwJmH = false;
    return new ReadableStream({
        start(_bUCsDNzc) {
            _HhZVeCON.addEventListener("_ZXeikViR", (event) => { if (_lXLtwJmH) return; _bUCsDNzc.enqueue(event._odczUsYu); });
            _HhZVeCON.addEventListener("close", () => { _QNVerSvl(_HhZVeCON); if (_lXLtwJmH) return; _bUCsDNzc.close(); });
            _HhZVeCON.addEventListener("error", (err) => _bUCsDNzc.error(err));
            if (_rKUbveGH) {
                try {
                    const _edkrDGnQ = atob(_rKUbveGH.replace(/-/g, "+").replace(/_/g, "/"));
                    _bUCsDNzc.enqueue(Uint8Array.from(_edkrDGnQ, c => c.charCodeAt(0))._mAezrjXd);
                } catch (_QQyugJdA) { console.error("Failed to decode early _odczUsYu:", _QQyugJdA); }
            }
        },
        cancel() { _lXLtwJmH = true; _QNVerSvl(_HhZVeCON); },
    });
}

async function _lBAgHFgn(_mAezrjXd, _oFfSHeBm) {
    if (_mAezrjXd.byteLength < 24) return { error: true, details: "Invalid packet size" };
    const _OTwjZTXu = new Uint8Array(_mAezrjXd.slice(0, 1));
    const _WPaXMaEm = _drHqXjeX(new Uint8Array(_mAezrjXd.slice(1, 17)));
    if (_WPaXMaEm !== _oFfSHeBm) return { error: true, details: "Invalid _oFfSHeBm" };
    const _TLNczLzX = new Uint8Array(_mAezrjXd.slice(17, 18))[0];
    const _zKaSEAjm = new Uint8Array(_mAezrjXd.slice(18 + _TLNczLzX, 19 + _TLNczLzX))[0];
    if (_zKaSEAjm !== 1) return { error: true, details: `Unsupported _zKaSEAjm: ${_zKaSEAjm}` };
    const _ytVQMJhx = 19 + _TLNczLzX;
    const _myDTVLni = new DataView(_mAezrjXd.slice(_ytVQMJhx, _ytVQMJhx + 2)).getUint16(0);
    let _uZpkWuYB = _ytVQMJhx + 2;
    const _yGKTkLfi = new Uint8Array(_mAezrjXd.slice(_uZpkWuYB, _uZpkWuYB + 1))[0];
    let _nHyxlNZf = 0;
    let _xWKeQvcp = _uZpkWuYB + 1;
    let _HVMWhQtb = "";
    switch (_yGKTkLfi) {
        case 1: _nHyxlNZf = 4; _HVMWhQtb = new Uint8Array(_mAezrjXd.slice(_xWKeQvcp, _xWKeQvcp + _nHyxlNZf)).join("."); break;
        case 2: _nHyxlNZf = new Uint8Array(_mAezrjXd.slice(_xWKeQvcp, _xWKeQvcp + 1))[0]; _xWKeQvcp++; _HVMWhQtb = new TextDecoder().decode(_mAezrjXd.slice(_xWKeQvcp, _xWKeQvcp + _nHyxlNZf)); break;
        case 3: _nHyxlNZf = 16; const _mrzNBzKe = new DataView(_mAezrjXd.slice(_xWKeQvcp, _xWKeQvcp + _nHyxlNZf)); const _RQfNgTIz = []; for (let _lciQxfJF = 0; _lciQxfJF < 8; _lciQxfJF++) _RQfNgTIz.push(_mrzNBzKe.getUint16(_lciQxfJF * 2).toString(16)); _HVMWhQtb = _RQfNgTIz.join(":"); break;
        default: return { error: true, details: `Invalid _LcirszwF _gnrLqmGR: ${_yGKTkLfi}` };
    }
    if (!_HVMWhQtb) return { error: true, details: "Target _rlhanaoU is empty" };
    return { error: false, details: { _HVMWhQtb, _myDTVLni, _OTwjZTXu, payloadIndex: _xWKeQvcp + _nHyxlNZf } };
}

async function _YWiDWfdZ(_lGUkmcKB, _ONnUDAHR, _pkdgfJhP, _CJlxlikF) {
    let _cfGxmRob = _pkdgfJhP;
    let _LjmjiQhF = false;
    let _Oyosgfet = _lGUkmcKB._jAaDKBZM.pipeTo(new WritableStream({
        write(chunk) {
            _LjmjiQhF = true;
            if (_ONnUDAHR.readyState !== 1) throw new Error("Channel is not open");
            if (_cfGxmRob) {
                const _PiquIYZj = new Uint8Array(_cfGxmRob.byteLength + chunk.byteLength);
                _PiquIYZj._HhXBufsA(new Uint8Array(_cfGxmRob));
                _PiquIYZj._HhXBufsA(new Uint8Array(chunk), _cfGxmRob.byteLength);
                _ONnUDAHR.send(_PiquIYZj._mAezrjXd);
                _cfGxmRob = null;
            } else {
                _ONnUDAHR.send(chunk);
            }
        },
        close() {}
    }), { signal: new AbortController().signal }).catch((err) => {
        console.error("Pipe to _ONnUDAHR error:", err._ZXeikViR);
    });

    await _Oyosgfet;
    if (!_LjmjiQhF && _CJlxlikF) {
        _CJlxlikF();
    }
}

function _QNVerSvl(_ONnUDAHR) {
    try { if (_ONnUDAHR.readyState === 1 || _ONnUDAHR.readyState === 2) _ONnUDAHR.close(); } catch (_QQyugJdA) {}
}

const _YNhjucRe = Array.from({ _ZGDZcNxG: 256 }, (_, _lciQxfJF) => (_lciQxfJF + 256).toString(16).slice(1));
function _drHqXjeX(_AflzSFNW, offset = 0) {
    return (
        _YNhjucRe[_AflzSFNW[offset]] + _YNhjucRe[_AflzSFNW[offset + 1]] + _YNhjucRe[_AflzSFNW[offset + 2]] + _YNhjucRe[_AflzSFNW[offset + 3]] + "-" +
        _YNhjucRe[_AflzSFNW[offset + 4]] + _YNhjucRe[_AflzSFNW[offset + 5]] + "-" +
        _YNhjucRe[_AflzSFNW[offset + 6]] + _YNhjucRe[_AflzSFNW[offset + 7]] + "-" +
        _YNhjucRe[_AflzSFNW[offset + 8]] + _YNhjucRe[_AflzSFNW[offset + 9]] + "-" +
        _YNhjucRe[_AflzSFNW[offset + 10]] + _YNhjucRe[_AflzSFNW[offset + 11]] +
        _YNhjucRe[_AflzSFNW[offset + 12]] + _YNhjucRe[_AflzSFNW[offset + 13]] +
        _YNhjucRe[_AflzSFNW[offset + 14]] + _YNhjucRe[_AflzSFNW[offset + 15]]
    ).toLowerCase();
}

let _PgMQxtOI = { "N/A":"未知" };

async function _cWcAOKXV(_XEkiYzCY, _aTSkWhgW, _CJlxlikF) {
    try {
        const _RemQxrEb = await fetch(_XEkiYzCY, {
            _VVXSjEXI: { 'User-Agent': 'Cloudflare-Worker-IP-Scanner' }
        });
        if (!_RemQxrEb.ok) {
            console.error(`获取 ${_XEkiYzCY} 失败: HTTP ${_RemQxrEb.status}`);
            return _CJlxlikF;
        }
        const _QPcUWqjs = await _RemQxrEb._QPcUWqjs();
        return _aTSkWhgW(_QPcUWqjs);
    } catch (error) {
        console.error(`获取或解析 ${_XEkiYzCY} 时发生网络错误: ${error._ZXeikViR}`);
        return _CJlxlikF;
    }
}

function _CEVlVZXr(_QPcUWqjs) {
    if (!_QPcUWqjs) return [];
    const _aCVjTpGv = /^(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}|[0-9a-fA-F:]+\/\d{1,3})$/;
    const _uWvBjErP = _QPcUWqjs.split(/[\s,;#|]+/);
    const _tJsRRLLs = [];
    for (const _oiGFSJAy of _uWvBjErP) {
        const _NWtJckpX = _oiGFSJAy.trim();
        if (!_NWtJckpX) continue;
        const _OdtUsuMZ = _NWtJckpX.lastIndexOf(':');
        let _hagLqTLu = _NWtJckpX;
        if(_OdtUsuMZ > _NWtJckpX.lastIndexOf(']')) {
             const _zvAOscdW = _NWtJckpX.substring(_OdtUsuMZ + 1);
             if(!isNaN(_zvAOscdW) && _zvAOscdW._ZGDZcNxG > 0) {
                _hagLqTLu = _NWtJckpX.substring(0, _OdtUsuMZ);
             }
        }
        if (_GdxOlvXs.isValid(_hagLqTLu.replace(/[\[\]]/g, '')) || _aCVjTpGv.test(_NWtJckpX)) {
            _tJsRRLLs.push(_NWtJckpX);
        }
    }
    return _tJsRRLLs;
}

function _PVXYkJHg(_QPcUWqjs) {
    if (!_QPcUWqjs) return [];
    return _QPcUWqjs.split(/\s+/).filter(d => d.trim() !== '');
}

function _QgBvWZsd(_QPcUWqjs) {
    if (!_QPcUWqjs) return { "N/A": "未知" };
    try {
        return JSON.parse(`{${_QPcUWqjs}}`);
    } catch (_QQyugJdA) {
        console.error("解析 _PgMQxtOI 失败:", _QQyugJdA);
        return { "N/A": "未知" };
    }
}

const _GdxOlvXs = {
    isValid: (_SYaXvwUD) => _GdxOlvXs.isIPv4(_SYaXvwUD) || _GdxOlvXs.isIPv6(_SYaXvwUD),
    isIPv4: (_SYaXvwUD) => {
        if (typeof _SYaXvwUD !== 'string') return false;
        const _RQfNgTIz = _SYaXvwUD.split('.');
        if (_RQfNgTIz._ZGDZcNxG !== 4) return false;
        return _RQfNgTIz.every(_UmwfftGd => {
            const _VthylwOD = parseInt(_UmwfftGd, 10);
            return !isNaN(_VthylwOD) && _VthylwOD >= 0 && _VthylwOD <= 255 && String(_VthylwOD) === _UmwfftGd;
        });
    },
    isIPv6: (_SYaXvwUD) => {
        if (typeof _SYaXvwUD !== 'string') return false;
        return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/_lciQxfJF.test(_SYaXvwUD);
    },
    toLong4: (_SYaXvwUD) => _SYaXvwUD.split('.').reduce((acc, octet, _lciQxfJF) => acc + (parseInt(octet) << (8*(3-_lciQxfJF))),0)>>>0,
    fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
    toBigInt6: (_SYaXvwUD) => {
        try {
            const _lYJcYkGn = _SYaXvwUD.split('/')[0];
            const _RQfNgTIz = _lYJcYkGn.split('::');
            if (_RQfNgTIz._ZGDZcNxG > 2) return 0n;
            let _kKrwmlAQ = [];
            if (_RQfNgTIz[0]) {
                _kKrwmlAQ = _RQfNgTIz[0].split(':');
            }
            let _vinHCBBr = [];
            if (_RQfNgTIz._ZGDZcNxG > 1 && _RQfNgTIz[1]) {
                _vinHCBBr = _RQfNgTIz[1].split(':');
            }
            if (_kKrwmlAQ._ZGDZcNxG + _vinHCBBr._ZGDZcNxG > 8) return 0n;
            const _dxxCfxJF = 8 - (_kKrwmlAQ._ZGDZcNxG + _vinHCBBr._ZGDZcNxG);
            const _HnVOfKdq = [
                ..._kKrwmlAQ,
                ...Array(_dxxCfxJF).fill('0'),
                ..._vinHCBBr
            ].map(_UmwfftGd => _UmwfftGd || '0');
            while(_HnVOfKdq._ZGDZcNxG < 8) {
                _HnVOfKdq.push('0');
            }
            let _dYiVvVpP = 0n;
            for (const _UmwfftGd of _HnVOfKdq) {
                if (_UmwfftGd._ZGDZcNxG > 4) return 0n;
                const _LYHZofZQ = BigInt('0x' + _UmwfftGd);
                _dYiVvVpP = (_dYiVvVpP << 16n) | _LYHZofZQ;
            }
            return _dYiVvVpP;
        } catch(_QQyugJdA) {
            return 0n;
        }
    },
    fromBigInt6: (_dYiVvVpP) => {
        if (typeof _dYiVvVpP !== '_dYiVvVpP' || _dYiVvVpP < 0n) return null;
        const _RQfNgTIz = [];
        for (let _lciQxfJF = 0; _lciQxfJF < 8; _lciQxfJF++) {
            _RQfNgTIz.unshift((_dYiVvVpP & 0xFFFFn).toString(16));
            _dYiVvVpP >>= 16n;
        }
        let _FbKnTlpv = { start: -1, _edOUVKYR: 0 };
        let _tnYvRFZG = { start: -1, _edOUVKYR: 0 };
        for (let _lciQxfJF = 0; _lciQxfJF < 8; _lciQxfJF++) {
            if (_RQfNgTIz[_lciQxfJF] === '0') {
                if (_tnYvRFZG.start === -1) _tnYvRFZG.start = _lciQxfJF;
                _tnYvRFZG._edOUVKYR++;
            } else {
                if (_tnYvRFZG._edOUVKYR > _FbKnTlpv._edOUVKYR) _FbKnTlpv = { ..._tnYvRFZG };
                _tnYvRFZG = { start: -1, _edOUVKYR: 0 };
            }
        }
        if (_tnYvRFZG._edOUVKYR > _FbKnTlpv._edOUVKYR) _FbKnTlpv = { ..._tnYvRFZG };
        if (_FbKnTlpv._edOUVKYR > 1) {
            _RQfNgTIz.splice(_FbKnTlpv.start, _FbKnTlpv._edOUVKYR, '');
            if (_FbKnTlpv.start === 0) _RQfNgTIz.unshift('');
            if (_FbKnTlpv.start + _FbKnTlpv._edOUVKYR === 8) _RQfNgTIz.push('');
        }
        return _RQfNgTIz.join(':');
    },
    cidrToRange: (cidr, _TsJebgAC = 1) => {
        try {
            const [range, bitsStr] = cidr.split('/');
            const _jCjxpFZw = parseInt(bitsStr, 10);
            const _jyLPkfZI = new Set();
            if (_GdxOlvXs.isIPv4(range)) {
                if (isNaN(_jCjxpFZw) || _jCjxpFZw < 8 || _jCjxpFZw > 32) return [];
                if (_jCjxpFZw === 32) return [range];
                const _ioiTMKrj = _GdxOlvXs.toLong4(range);
                const _qpZmjfyQ = (0xFFFFFFFF << (32 - _jCjxpFZw)) >>> 0;
                const _sObxeFNm = _ioiTMKrj & _qpZmjfyQ;
                const _OSEgLULz = 1 << (32 - _jCjxpFZw);
                if (_OSEgLULz <= 2) return [];
                const _yoOMoMQu = Math.min(_TsJebgAC, _OSEgLULz - 2);
                let _aBrlPpcT = 0;
                while (_jyLPkfZI.size < _yoOMoMQu && _aBrlPpcT < _yoOMoMQu * 5) {
                    const _ItZGmnAJ = Math.floor(Math.random() * (_OSEgLULz - 2)) + 1;
                    _jyLPkfZI.add(_GdxOlvXs.fromLong4((_sObxeFNm + _ItZGmnAJ) >>> 0));
                    _aBrlPpcT++;
                }
                return Array.from(_jyLPkfZI);
            } else if (_GdxOlvXs.isIPv6(range)) {
                if (isNaN(_jCjxpFZw) || _jCjxpFZw < 16 || _jCjxpFZw > 128) return [];
                 if (_jCjxpFZw === 128) return [range];
                const _dBpibuMF = _GdxOlvXs.toBigInt6(range);
                const _qpZmjfyQ = (2n ** BigInt(128 - _jCjxpFZw) - 1n);
                const _sObxeFNm = _dBpibuMF & ~_qpZmjfyQ;
                const _weTYKOtE = 2n ** BigInt(128 - _jCjxpFZw);
                if (_weTYKOtE <= 2n) return [];
                let _aBrlPpcT = 0;
                while (_jyLPkfZI.size < _TsJebgAC && _aBrlPpcT < _TsJebgAC * 5) {
                     const _Bswrezuw = new Uint8Array(16);
                     (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_Bswrezuw);
                     let _OHthUHoA = 0n;
                     for (const _OiiIYvnl of _Bswrezuw) {
                         _OHthUHoA = (_OHthUHoA << 8n) | BigInt(_OiiIYvnl);
                     }
                     const _ItZGmnAJ = _OHthUHoA % (_weTYKOtE - 2n) + 1n;
                     _jyLPkfZI.add(_GdxOlvXs.fromBigInt6(_sObxeFNm + _ItZGmnAJ));
                     _aBrlPpcT++;
                }
                return Array.from(_jyLPkfZI);
            }
            return [];
        } catch(_QQyugJdA) {
            console.error(`CIDR to range failed for ${cidr}:`, _QQyugJdA);
            return [];
        }
    }
};

function _DhfHGaLL(_dAKlgFwo, _EOZWCAFD) {
    const _JtydJCAS = {};
    const _OiYnzKXQ = Object._OiYnzKXQ(_EOZWCAFD);
    const _RQfNgTIz = _OiYnzKXQ.map(_zjDlvhQA => {
        const _stRYcQsO = _dAKlgFwo * (_EOZWCAFD[_zjDlvhQA] / 100);
        return { _zjDlvhQA, _TsJebgAC: Math.floor(_stRYcQsO), remainder: _stRYcQsO - Math.floor(_stRYcQsO) };
    });
    let _EoNjtmZY = _RQfNgTIz.reduce((acc, _UmwfftGd) => acc + _UmwfftGd._TsJebgAC, 0);
    _RQfNgTIz.sort((a, b) => b.remainder - a.remainder);
    let _jqhDDzaY = _dAKlgFwo - _EoNjtmZY;
    for (let _lciQxfJF = 0; _lciQxfJF < _jqhDDzaY; _lciQxfJF++) {
        _RQfNgTIz[_lciQxfJF % _RQfNgTIz._ZGDZcNxG]._TsJebgAC++;
    }
    for (const _UmwfftGd of _RQfNgTIz) {
        _JtydJCAS[_UmwfftGd._zjDlvhQA] = _UmwfftGd._TsJebgAC;
    }
    return _JtydJCAS;
}

async function _fwnYGopk(_PQCbjFFa) {
    const _QWVijJfK = _PQCbjFFa.DB.prepare("SELECT _LYHZofZQ FROM kv_data WHERE _zjDlvhQA = ?").bind(_NlROgdSf);
    const { _BNYcfafk } = await _QWVijJfK.all();
    return _BNYcfafk._ZGDZcNxG > 0 ? _BNYcfafk[0]._LYHZofZQ : null;
}

async function _MUDQGxfn(_PQCbjFFa, _hbQBVofZ) {
    const _QWVijJfK = _PQCbjFFa.DB.prepare(
        "INSERT INTO kv_data (_zjDlvhQA, _LYHZofZQ) VALUES (?, ?) ON CONFLICT(_zjDlvhQA) DO UPDATE SET _LYHZofZQ = excluded._LYHZofZQ"
    );
    await _QWVijJfK.bind(_NlROgdSf, _hbQBVofZ).run();
}

async function _jDmoTGBd(_SXotmiHC, _PQCbjFFa) {
    const { _hbQBVofZ } = await _SXotmiHC.json();
    const _qbpBJLwF = await _fwnYGopk(_PQCbjFFa);
    if (_qbpBJLwF === _hbQBVofZ) {
        return _gswMUrbt({ success: true });
    }
    return _gswMUrbt({ success: false, _ZXeikViR: '密码错误' }, 401);
}

async function _hjOEeyiW(_SXotmiHC, _PQCbjFFa) {
    const _xxuYDtkf = await _DKomPuvw(_PQCbjFFa);
    if (!_xxuYDtkf.visitorPassword || !_xxuYDtkf.visitorPassword._BnATtqBu) {
        return _gswMUrbt({ success: true });
    }
    try {
        const { _hbQBVofZ } = await _SXotmiHC.json();
        const _AodEYPtx = _xxuYDtkf.visitorPassword._hbQBVofZ;
        if (_AodEYPtx && _hbQBVofZ === _AodEYPtx) {
            return _gswMUrbt({ success: true });
        }
        return _gswMUrbt({ success: false, _ZXeikViR: '访客密码错误' }, 401);
    } catch (_QQyugJdA) {
        return _gswMUrbt({ success: false, _ZXeikViR: '无效请求' }, 400);
    }
}

async function _XxrbQlmM(_SXotmiHC, _PQCbjFFa) {
    const _ptnGmVQm = await _fwnYGopk(_PQCbjFFa);
    if (_ptnGmVQm) {
        return _gswMUrbt({ success: false, _ZXeikViR: "密码已设置,无法重复初始化。" }, 403);
    }
    const { _hbQBVofZ } = await _SXotmiHC.json();
    if (!_hbQBVofZ || _hbQBVofZ._ZGDZcNxG < 6) {
        return _gswMUrbt({ success: false, _ZXeikViR: "密码长度不能少于6位。" }, 400);
    }
    await _MUDQGxfn(_PQCbjFFa, _hbQBVofZ);
    return _gswMUrbt({ success: true, _ZXeikViR: "初始密码设置成功!请刷新页面并登录。" });
}

async function _iYnGXMBe(_SXotmiHC, _PQCbjFFa) {
    const { _LSUlvcvF, _uavGeMXD } = await _SXotmiHC.json();
    const _qbpBJLwF = await _fwnYGopk(_PQCbjFFa);
    if (_qbpBJLwF !== _LSUlvcvF) {
        return _gswMUrbt({ success: false, _ZXeikViR: "旧密码错误。" }, 403);
    }
    if (!_uavGeMXD || _uavGeMXD._ZGDZcNxG < 6) {
        return _gswMUrbt({ success: false, _ZXeikViR: "新密码长度不能少于6位。" }, 400);
    }
    await _MUDQGxfn(_PQCbjFFa, _uavGeMXD);
    return _gswMUrbt({ success: true, _ZXeikViR: "密码修改成功!" });
}

function _IIGJYihY() {
    return {
        theme: 'theme-aurora-glass',
        primaryColor: '#00A0FF',
        particleColor: '#FFFFFF',
        useResolvedDomains: false,
        resolvedDomains: '',
        sampleSize: 150,
        topN: 10,
        rttRandomMin: 79,
        rttRandomMax: 179,
        _VQkkNIgW: '',
        api: {
            _BnATtqBu: true,
            _ZXeikViR: '维护中...',
        },
        ispFilter: { _BnATtqBu: true },
        geoLocation: {
            retries: 1,
            filterUnknown: false,
        },
        streamer: {
            _BnATtqBu: true
        },
        websocketStreamer: {
            _BnATtqBu: true,
            _XEkiYzCY: 'https://snippets.neib.cn'
        },
        cloudStorage: {
            _BnATtqBu: true
        },
        visitorPassword: {
            _BnATtqBu: false,
            _hbQBVofZ: '',
        },
        customSubPath: {
            _BnATtqBu: false,
            _bJEcHKTk: 'latest',
        },
        subscriptionId: {
            _ZGDZcNxG: 8,
            _ruFhqZpD: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        },
        itemLink: {
            _BnATtqBu: true,
            template: 'vless://{_VNxaRuQa}@{_SYaXvwUD}:{_ZoXLSmoM}?encryption=none&security=tls&sni={_rlhanaoU}&fp=random&_gnrLqmGR=ws&_rlhanaoU={_rlhanaoU}&_bJEcHKTk={_bJEcHKTk}#{_lVEfmLNt}',
            selectionMode: 'first',
            _bkDfCtrR: [
                { _lVEfmLNt: '默认配置', _rlhanaoU: '', '_VNxaRuQa': '3b4d4cd8-cb92-4421-bf86-fb51570fc038', _bJEcHKTk: '/?ed=2560' }
            ],
            _PUoeVmcb: [],
        },
        dataFeeds: {
            universalFallbackAddress: '',
        },
        announcement: {
            popup: {
                _BnATtqBu: false,
                _QPcUWqjs: '',
                _GdftYABY: 5
            },
            marquee: {
                _BnATtqBu: false,
                _QPcUWqjs: ''
            }
        },
        subscriptionUrl: {
            prefixEnabled: false,
            prefixUrl: '',
            suffixEnabled: false,
            suffixUrl: ''
        },
        fineGrained: {
            _BnATtqBu: true,
            sources: [
                { _WdCxAvPT: 'CF官方IPV4', _jyLPkfZI: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV4', _PvXhwbqX: false, _BnATtqBu: true, _zXIXaqAi: 20 },
                { _WdCxAvPT: 'CF官方IPV6', _jyLPkfZI: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV6', _PvXhwbqX: false, _BnATtqBu: true, _zXIXaqAi: 20 },
                { _WdCxAvPT: '反代优选0', _jyLPkfZI: 'https://wvs.sosorg.nyc.mn/sub?_VNxaRuQa=adb14576-6588-40da-99fd-b9894cd779b0&encryption=none&security=tls&sni=ss.nzvrn.com&_gnrLqmGR=ws&_rlhanaoU=ss.nzvrn.com&_bJEcHKTk=%2Fsnippets%3Fip%3DendpointAddress%3Aport%28443%29%26nat64%3D6to4', _PvXhwbqX: false, _BnATtqBu: true, _zXIXaqAi: 30 },
                { _WdCxAvPT: '官方优选1', _jyLPkfZI: 'https://ipdb.api.030101.xyz/?_gnrLqmGR=bestcf&_ANJUamEN=true', _PvXhwbqX: false, _BnATtqBu: true, _zXIXaqAi: 10 },
                { _WdCxAvPT: '反代优选2', _jyLPkfZI: 'https://ipdb.api.030101.xyz/?_gnrLqmGR=bestproxy&_ANJUamEN=true', _PvXhwbqX: false, _BnATtqBu: true, _zXIXaqAi: 5 },
                { _WdCxAvPT: '官方优选2', _jyLPkfZI: 'https://addressesapi.090227.xyz/_SYaXvwUD.164746.xyz', _PvXhwbqX: false, _BnATtqBu: true, _zXIXaqAi: 10 },
				{ _WdCxAvPT: '官方优选3', _jyLPkfZI: 'https://cfxr.eu.org/getSub?_rlhanaoU=snipaste.huggy.qzz.io', _PvXhwbqX: false, _BnATtqBu: true, _zXIXaqAi: 5 },
                { _WdCxAvPT: '官方优选4', _jyLPkfZI: 'https://addressesapi.090227.xyz/CloudFlareYes', _PvXhwbqX: false, _BnATtqBu: true, _zXIXaqAi: 10 }
            ]
        },
        customNodes: {
            _BnATtqBu: false,
            list: ''
        },
        texts: {
            title: 'Cloudflare IP',
            loginButton: '登录',
            loginButtonSuccess: '修改参数',
            appDownloadTitle: 'APP 下载',
            liveTitle: '本次优选结果',
            cachedTitle: '上次优选结果',
            tableHeader1: '排名',
            tableHeader2: 'IP地址',
            tableHeader3: '端口',
            tableHeader4: '延迟(ms)',
            tableHeader5: '归属地',
            tableHeader6: '运营商',
            tableHeader7: '操作',
            pingInProgress: '测试中',
        },
        colors: {
            title: '#FFFFFF',
            loginButton: '#E0E0E0',
            liveTitle: '#E0E0E0',
            cachedTitle: '#E0E0E0',
            tableHeader: '#B0B0B0',
        },
        telegram: {
            bot_token: '',
            chat_id: '',
        },
    };
}

function _PPUjKtbg(_sxXtGtct, _kLeHXYrF) {
    if (!_sxXtGtct) return _kLeHXYrF;
    const _QWGjJVFj = { ..._kLeHXYrF };
    for (const _zjDlvhQA in _kLeHXYrF) {
        if (_sxXtGtct.hasOwnProperty(_zjDlvhQA)) {
             if (typeof _sxXtGtct[_zjDlvhQA] === 'object' && _sxXtGtct[_zjDlvhQA] !== null && !Array.isArray(_sxXtGtct[_zjDlvhQA]) && typeof _kLeHXYrF[_zjDlvhQA] === 'object' && _kLeHXYrF[_zjDlvhQA] !== null && !Array.isArray(_kLeHXYrF[_zjDlvhQA])) {
                _QWGjJVFj[_zjDlvhQA] = _PPUjKtbg(_sxXtGtct[_zjDlvhQA], _kLeHXYrF[_zjDlvhQA]);
            } else {
                _QWGjJVFj[_zjDlvhQA] = _sxXtGtct[_zjDlvhQA];
            }
        }
    }
    return _QWGjJVFj;
}

async function _DKomPuvw(_PQCbjFFa) {
    try {
        const _QWVijJfK = _PQCbjFFa.DB.prepare("SELECT _LYHZofZQ FROM kv_data WHERE _zjDlvhQA = ?").bind(_QDgYFeub);
        const { _BNYcfafk } = await _QWVijJfK.all();
        const _qSsHblSn = _BNYcfafk._ZGDZcNxG > 0 ? _BNYcfafk[0]._LYHZofZQ : null;
        const _mThHqQfg = _qSsHblSn ? JSON.parse(_qSsHblSn) : {};
        return _PPUjKtbg(_mThHqQfg, _IIGJYihY());
    } catch (_QQyugJdA) {
        console.error("无法从D1获取或解析全局配置:", _QQyugJdA);
        return _IIGJYihY();
    }
}

async function _YRFJfqjU(_PQCbjFFa) {
    const _OXTUkWkN = await _DKomPuvw(_PQCbjFFa);
    return _gswMUrbt(_OXTUkWkN);
}

async function _TtZiDJAb(_SXotmiHC, _PQCbjFFa, _hEjcsIYo) {
    try {
        const { _OXTUkWkN, adminPassword } = await _SXotmiHC.json();
        const _qbpBJLwF = await _fwnYGopk(_PQCbjFFa);
        if (_qbpBJLwF !== adminPassword) {
            return _gswMUrbt({ success: false, _ZXeikViR: "管理员密码错误" }, 403);
        }
        const _QWVijJfK = _PQCbjFFa.DB.prepare(
          "INSERT INTO kv_data (_zjDlvhQA, _LYHZofZQ) VALUES (?, ?) ON CONFLICT(_zjDlvhQA) DO UPDATE SET _LYHZofZQ = excluded._LYHZofZQ"
        );
        const _dcRAtDyN = _QWVijJfK.bind(_QDgYFeub, JSON.stringify(_OXTUkWkN)).run();
        _hEjcsIYo.waitUntil(_dcRAtDyN);
        return _gswMUrbt({ success: true, _ZXeikViR: "配置已成功保存!" });
    } catch (_QQyugJdA) {
        return _gswMUrbt({ success: false, _ZXeikViR: `保存失败: ${_QQyugJdA._ZXeikViR}` }, 500);
    }
}

async function _tFKzQVuy() {
    const _UcbXGaxR = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN';
    try {
        const _LUJHPruS = await fetch(_UcbXGaxR);
        const _yBEdfASt = await _LUJHPruS.json();
        const _MkNclEIQ = 'https://www.bing.com' + _yBEdfASt.images[0]._XEkiYzCY;
        return fetch(_MkNclEIQ);
    } catch (_QQyugJdA) {
        return new Response('获取壁纸失败', { status: 502 });
    }
}

async function _bwjiDjgz(_SYaXvwUD) {
    try {
        const _RemQxrEb = await fetch(`http://_SYaXvwUD-api.com/json/${_SYaXvwUD}?fields=status,_ANJUamEN,countryCode,_JnJDyPjM&lang=zh-CN`);
        if (_RemQxrEb.ok) {
            const _odczUsYu = await _RemQxrEb.json();
            if (_odczUsYu.status === 'success' && (_odczUsYu.countryCode || _odczUsYu._ANJUamEN)) {
                let _JnJDyPjM = _odczUsYu._JnJDyPjM || '未知';
                if (_JnJDyPjM.toLowerCase().includes('cloudflare')) {
                    _JnJDyPjM = 'CloudFlare';
                }
                return {
                    _WdCxAvPT: _PgMQxtOI[_odczUsYu.countryCode] || _odczUsYu._ANJUamEN || _odczUsYu.countryCode,
                    _JnJDyPjM: _JnJDyPjM
                };
            }
        }
    } catch (_QQyugJdA) {}

    try {
        const _RemQxrEb = await fetch(`https://api._SYaXvwUD.sb/geoip/${_SYaXvwUD}`);
        if (_RemQxrEb.ok) {
            const _odczUsYu = await _RemQxrEb.json();
            if (_odczUsYu.country_code || _odczUsYu._ANJUamEN) {
                let _JnJDyPjM = _odczUsYu._JnJDyPjM || '未知';
                if (_JnJDyPjM.toLowerCase().includes('cloudflare')) {
                    _JnJDyPjM = 'CloudFlare';
                }
                return {
                    _WdCxAvPT: _PgMQxtOI[_odczUsYu.country_code] || _odczUsYu._ANJUamEN || _odczUsYu.country_code,
                    _JnJDyPjM: _JnJDyPjM
                };
            }
        }
    } catch (_QQyugJdA) {}
    
    return { _WdCxAvPT: '未知', _JnJDyPjM: '未知' };
}

async function _iapeKZZA(_SXotmiHC, _PQCbjFFa) {
    try {
        const { _jyLPkfZI } = await _SXotmiHC.json();
        if (!Array.isArray(_jyLPkfZI)) {
            return _gswMUrbt({ error: "输入无效,需要一个IP数组。" }, 400);
        }
        const _HnEwsYeN = _jyLPkfZI.map(_SYaXvwUD => _bwjiDjgz(_SYaXvwUD).then(_XKiSOWAb => ({ _SYaXvwUD, ..._XKiSOWAb })));
        const _BNYcfafk = await Promise.all(_HnEwsYeN);
        return _gswMUrbt(_BNYcfafk);
    } catch (_QQyugJdA) {
        return _gswMUrbt({ error: `获取地理位置失败: ${_QQyugJdA._ZXeikViR}` }, 500);
    }
}

async function _sjhjsMVm(_SXotmiHC, _PQCbjFFa) {
    const _OXTUkWkN = await _DKomPuvw(_PQCbjFFa);
    if (!_OXTUkWkN.cloudStorage._BnATtqBu) {
        return _gswMUrbt({ _BNYcfafk: [], generatedBy: null });
    }
    try {
        const _QWVijJfK = _PQCbjFFa.DB.prepare("SELECT _LYHZofZQ FROM kv_data WHERE _zjDlvhQA = ?").bind(_ThoLdKrh);
        const { _BNYcfafk } = await _QWVijJfK.all();
        const _zDHzMyYZ = _BNYcfafk._ZGDZcNxG > 0 ? _BNYcfafk[0]._LYHZofZQ : null;
        const _HRvDbvUx = _zDHzMyYZ ? JSON.parse(_zDHzMyYZ) : null;
        return _gswMUrbt(_HRvDbvUx || { _BNYcfafk: [], generatedBy: null });
    } catch (_QQyugJdA) {
        console.error("从D1读取缓存IP失败:", _QQyugJdA);
        return _gswMUrbt({ _BNYcfafk: [], generatedBy: null });
    }
}

async function _RyWCfqWR(_SXotmiHC, _PQCbjFFa, _hEjcsIYo) {
    const _OXTUkWkN = await _DKomPuvw(_PQCbjFFa);
    if (!_OXTUkWkN.cloudStorage._BnATtqBu) {
        return _gswMUrbt({ success: true, _ZXeikViR: "云端存储已禁用,不保存结果。" });
    }
    const _gffVdXLT = _SXotmiHC._VVXSjEXI.get('CF-Connecting-IP') || "未知IP";
    const _ANJUamEN = _SXotmiHC.cf?._ANJUamEN || "未知";
    const _DYbmbOAb = _SXotmiHC.cf?._DYbmbOAb || "";
    let _wrgGVjrI = _PgMQxtOI[_ANJUamEN] || _ANJUamEN;
    if (_DYbmbOAb && _DYbmbOAb !== "未知城市" && _DYbmbOAb !== _ANJUamEN) _wrgGVjrI = `${_wrgGVjrI} ${_PgMQxtOI[_DYbmbOAb] || _DYbmbOAb}`;
    const _WTyForcS = {
        _SYaXvwUD: _teRyUdGO(_gffVdXLT),
        _WdCxAvPT: _wrgGVjrI.trim(),
        time: _CeYetUDF()
    };
    try {
        const _PGwFYKXD = await _SXotmiHC.json();
        if (!Array.isArray(_PGwFYKXD)) return _gswMUrbt({ error: "无效数据格式" }, 400);
        const _vxZIXIJX = _PGwFYKXD.map(_UAQceGMY => ({
            _SYaXvwUD: String(_UAQceGMY._SYaXvwUD || ''),
            _ZoXLSmoM: _UAQceGMY._ZoXLSmoM ? parseInt(_UAQceGMY._ZoXLSmoM, 10) : undefined,
            _LelRELXn: parseInt(_UAQceGMY._LelRELXn, 10),
            _WdCxAvPT: typeof _UAQceGMY._WdCxAvPT === 'string' ? _UAQceGMY._WdCxAvPT.substring(0, 50) : 'N/A',
            _JnJDyPjM: typeof _UAQceGMY._JnJDyPjM === 'string' ? _UAQceGMY._JnJDyPjM.substring(0, 100) : 'N/A'
        }));
        const _xWoVPdNz = {
            generatedBy: _WTyForcS,
            _BNYcfafk: _vxZIXIJX
        };
        const _lMzIHOFe = _PQCbjFFa.DB.prepare(
          "INSERT INTO kv_data (_zjDlvhQA, _LYHZofZQ) VALUES (?, ?) ON CONFLICT(_zjDlvhQA) DO UPDATE SET _LYHZofZQ = excluded._LYHZofZQ"
        ).bind(_ThoLdKrh, JSON.stringify(_xWoVPdNz)).run();
        if (_OXTUkWkN.telegram.bot_token && _OXTUkWkN.telegram.chat_id) {
            const _TtPybdZV = _vxZIXIJX.map(r => `${r._SYaXvwUD} ~ ${r._WdCxAvPT}`).join('\n');
            const _ELadfWhL = `优选完成!\n来源: ${_WTyForcS._SYaXvwUD} (${_WTyForcS._WdCxAvPT})\n时间: ${_WTyForcS.time}\n\n结果:\n${_TtPybdZV}`;
            const _iBvnfnMG = `https://api.telegram.org/bot${_OXTUkWkN.telegram.bot_token}/sendMessage?chat_id=${_OXTUkWkN.telegram.chat_id}&_QPcUWqjs=${encodeURIComponent(_ELadfWhL)}`;
            const _itozHpRw = fetch(_iBvnfnMG).catch(_QQyugJdA => console.error("Telegram结果通知失败:", _QQyugJdA));
            _hEjcsIYo.waitUntil(Promise.all([_lMzIHOFe, _itozHpRw]));
        } else {
             _hEjcsIYo.waitUntil(_lMzIHOFe);
        }
        return _gswMUrbt({ success: true, _ZXeikViR: "结果已保存" });
    } catch (_QQyugJdA) {
        return _gswMUrbt({ error: "D1写入失败", _ZXeikViR: _QQyugJdA._ZXeikViR }, 500);
    }
}

async function _UkvsTgLO(_SXotmiHC, _PQCbjFFa, _hEjcsIYo) {
    try {
        const _pSuFtkFR = await _SXotmiHC.json();
        if (!Array.isArray(_pSuFtkFR)) return _gswMUrbt({ error: "无效数据格式" }, 400);
        const _xWoVPdNz = {
            _BNYcfafk: _pSuFtkFR
        };
        const _QWVijJfK = _PQCbjFFa.DB.prepare(
          "INSERT INTO kv_data (_zjDlvhQA, _LYHZofZQ) VALUES (?, ?) ON CONFLICT(_zjDlvhQA) DO UPDATE SET _LYHZofZQ = excluded._LYHZofZQ"
        );
        const _dcRAtDyN = _QWVijJfK.bind(_WnnKqtGH, JSON.stringify(_xWoVPdNz)).run();
        _hEjcsIYo.waitUntil(_dcRAtDyN);
        return _gswMUrbt({ success: true });
    } catch (_QQyugJdA) {
        return _gswMUrbt({ error: "D1写入临时缓存失败", _ZXeikViR: _QQyugJdA._ZXeikViR }, 500);
    }
}

function _IvwUkdrE(_ZGDZcNxG, _ruFhqZpD) {
    let _QopZTPyD = '';
    const _oADpjekW = _ruFhqZpD._ZGDZcNxG;
    for (let _lciQxfJF = 0; _lciQxfJF < _ZGDZcNxG; _lciQxfJF++) {
        _QopZTPyD += _ruFhqZpD.charAt(Math.floor(Math.random() * _oADpjekW));
    }
    return _QopZTPyD;
}

async function _sIjAUnup(_SXotmiHC, _PQCbjFFa) {
    try {
        const _PGwFYKXD = await _SXotmiHC.json();
        if (!Array.isArray(_PGwFYKXD) || _PGwFYKXD._ZGDZcNxG === 0) {
            return _gswMUrbt({ error: "无效或空的IP列表" }, 400);
        }

        const _OXTUkWkN = await _DKomPuvw(_PQCbjFFa);
        const _eRotogBg = _OXTUkWkN.subscriptionId || { _ZGDZcNxG: 8, _ruFhqZpD: 'abcdefghijklmnopqrstuvwxyz0123456789' };

        let _VogwVqIu;
        let _qZsZKCyq = false;
        let _aBrlPpcT = 0;
        const _QZKYQhDO = 10;

        while (!_qZsZKCyq && _aBrlPpcT < _QZKYQhDO) {
            _VogwVqIu = _IvwUkdrE(_eRotogBg._ZGDZcNxG, _eRotogBg._ruFhqZpD);
            const { _BNYcfafk } = await _PQCbjFFa.DB.prepare("SELECT _DcLsgNGi FROM optimized_results WHERE _DcLsgNGi = ?").bind(_VogwVqIu).all();
            if (_BNYcfafk._ZGDZcNxG === 0) {
                _qZsZKCyq = true;
            }
            _aBrlPpcT++;
        }

        if (!_qZsZKCyq) {
            return _gswMUrbt({ error: "无法生成唯一的订阅ID,请稍后重试或调整ID设置。" }, 500);
        }

        const _WgRhZhOl = JSON.stringify({ _jyLPkfZI: _PGwFYKXD });
        await _PQCbjFFa.DB.prepare(
            "INSERT INTO optimized_results (_DcLsgNGi, _odczUsYu) VALUES (?, ?)"
        ).bind(_VogwVqIu, _WgRhZhOl).run();
        await _PQCbjFFa.DB.prepare(
            "INSERT INTO kv_data (_zjDlvhQA, _LYHZofZQ) VALUES (?, ?) ON CONFLICT(_zjDlvhQA) DO UPDATE SET _LYHZofZQ = excluded._LYHZofZQ"
        ).bind(_elILTMcQ, _VogwVqIu).run();
            
        return _gswMUrbt({ success: true, _DcLsgNGi: _VogwVqIu });
    } catch (_QQyugJdA) {
        return _gswMUrbt({ error: "保存优选结果失败", _ZXeikViR: _QQyugJdA._ZXeikViR }, 500);
    }
}

async function _FiYNBjly(_SXotmiHC, _PQCbjFFa) {
    try {
        const _VogwVqIu = _SXotmiHC._pBrmiIQI._DcLsgNGi;
        if (!_VogwVqIu) {
            return new Response("缺少结果ID", { status: 400 });
        }
        const _QopZTPyD = await _PQCbjFFa.DB.prepare("SELECT _odczUsYu FROM optimized_results WHERE _DcLsgNGi = ?").bind(_VogwVqIu).first();
        if (!_QopZTPyD) {
            return new Response("未找到对应的优选结果", { status: 404 });
        }
        const _odczUsYu = JSON.parse(_QopZTPyD._odczUsYu);
        let _TtPybdZV = _odczUsYu._jyLPkfZI;

        const _OXTUkWkN = await _DKomPuvw(_PQCbjFFa);

        if (_OXTUkWkN.customNodes && _OXTUkWkN.customNodes._BnATtqBu && _OXTUkWkN.customNodes.list) {
            const _VviAEIyw = _OXTUkWkN.customNodes.list.trim().split(/\s+/).filter(Boolean);
            const _uFwKAUGN = _VviAEIyw.map(_sNXRJfgg => {
                let _LcirszwF = _sNXRJfgg;
                let _ZoXLSmoM = undefined;
                let _lVEfmLNt = null;

                if (_LcirszwF.includes('@')) {
                    const _RQfNgTIz = _LcirszwF.split('@');
                    _lVEfmLNt = _RQfNgTIz.pop();
                    _LcirszwF = _RQfNgTIz.join('@');
                }

                if (_LcirszwF.includes('#')) {
                    const _RQfNgTIz = _LcirszwF.split('#');
                    const _zvAOscdW = _RQfNgTIz.pop();
                    if (!isNaN(_zvAOscdW) && _zvAOscdW.trim() !== '') {
                        _ZoXLSmoM = parseInt(_zvAOscdW, 10);
                    }
                    _LcirszwF = _RQfNgTIz.join('#');
                }
                
                return {
                    _SYaXvwUD: _LcirszwF,
                    _ZoXLSmoM: _ZoXLSmoM,
                    _WdCxAvPT: _lVEfmLNt || _LcirszwF,
                    _JnJDyPjM: '自定义'
                };
            });
            _TtPybdZV.unshift(..._uFwKAUGN);
        }
        
        const { itemLink } = _OXTUkWkN;
        const _PhxQsGAe = new URL(_SXotmiHC._XEkiYzCY)._YsxDaDaZ;
        let _AWoBATrl;

        if (_OXTUkWkN.websocketStreamer && _OXTUkWkN.websocketStreamer._BnATtqBu) {
            if (!itemLink || !itemLink._BnATtqBu || !itemLink._bkDfCtrR || itemLink._bkDfCtrR._ZGDZcNxG === 0) {
                return new Response("节点链接参数未配置或未启用 (反代模式)", { status: 500 });
            }
            _AWoBATrl = _TtPybdZV.map((_UAQceGMY, _wwlzKXJs) => {
                let _lVEfmLNt;
                if (_UAQceGMY._JnJDyPjM === '自定义') {
                     _lVEfmLNt = `${_wwlzKXJs + 1} - ${_UAQceGMY._WdCxAvPT}`;
                } else {
                    _lVEfmLNt = `${_wwlzKXJs + 1} - ${_UAQceGMY._WdCxAvPT || '未知'}`;
                    if (!_UAQceGMY._JnJDyPjM || !_UAQceGMY._JnJDyPjM.toLowerCase().includes('cloudflare')) {
                        _lVEfmLNt += '(反代)';
                    }
                }
                const _naLBdPQh = _GdxOlvXs.isIPv6(_UAQceGMY._SYaXvwUD) ? `[${_UAQceGMY._SYaXvwUD}]` : _UAQceGMY._SYaXvwUD;
                const _ZoXLSmoM = _UAQceGMY._ZoXLSmoM || 443;
                const _aeSGFdmO = itemLink._bkDfCtrR[0];
                const _AdSdEXGZ = _aeSGFdmO._VNxaRuQa || '';
                const _VNxaRuQa = (_AdSdEXGZ && _TJzvRqXO(_AdSdEXGZ)) ? _AdSdEXGZ : crypto.randomUUID();
                const _bJEcHKTk = '/snippets?_SYaXvwUD=endpointAddress:_ZoXLSmoM(443)&nat64=6to4';
                const _rlhanaoU = _aeSGFdmO._rlhanaoU || _PhxQsGAe;

                const _pBrmiIQI = new URLSearchParams({
                    security: 'tls',
                    _gnrLqmGR: 'ws',
                    _rlhanaoU: _rlhanaoU,
                    sni: _rlhanaoU,
                    fp: 'random'
                });
                return `vless://${_VNxaRuQa}@${_naLBdPQh}:${_ZoXLSmoM}?${_pBrmiIQI.toString()}&_bJEcHKTk=${encodeURIComponent(encodeURIComponent(_bJEcHKTk))}#${encodeURIComponent(_lVEfmLNt)}`;
            });

        } else {
            if (!itemLink || !itemLink._BnATtqBu || !itemLink._bkDfCtrR || itemLink._bkDfCtrR._ZGDZcNxG === 0) {
                return new Response("节点链接参数未配置或未启用", { status: 500 });
            }
            const _aeSGFdmO = itemLink._bkDfCtrR[0];
            const { _rlhanaoU, _VNxaRuQa, _bJEcHKTk } = _aeSGFdmO;
            _AWoBATrl = _TtPybdZV.map((_UAQceGMY, _wwlzKXJs) => {
                let _lVEfmLNt;
                if (_UAQceGMY._JnJDyPjM === '自定义') {
                     _lVEfmLNt = `${_wwlzKXJs + 1} - ${_UAQceGMY._WdCxAvPT}`;
                } else {
                    _lVEfmLNt = `${_wwlzKXJs + 1} - ${_UAQceGMY._WdCxAvPT || '未知'}`;
                    if (!_UAQceGMY._JnJDyPjM || !_UAQceGMY._JnJDyPjM.toLowerCase().includes('cloudflare')) {
                        _lVEfmLNt += '(反代)';
                    }
                }
                const _naLBdPQh = _GdxOlvXs.isIPv6(_UAQceGMY._SYaXvwUD) ? `[${_UAQceGMY._SYaXvwUD}]` : _UAQceGMY._SYaXvwUD;
                const _ZoXLSmoM = _UAQceGMY._ZoXLSmoM || 443;
                const _pBrmiIQI = new URLSearchParams({
                    security: 'tls',
                    _gnrLqmGR: 'ws',
                    _rlhanaoU: _rlhanaoU || _PhxQsGAe,
                    sni: _rlhanaoU || _PhxQsGAe,
                    fp: 'random'
                });
                return `vless://${_VNxaRuQa}@${_naLBdPQh}:${_ZoXLSmoM}?${_pBrmiIQI.toString()}&_bJEcHKTk=${encodeURIComponent(encodeURIComponent(_bJEcHKTk || ''))}#${encodeURIComponent(_lVEfmLNt)}`;
            });
        }
        
        const _FVrPOzII = _AWoBATrl.join('\n');
        const _hyyjlecX = btoa(_FVrPOzII);
        return new Response(_hyyjlecX, {
            _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' }
        });

    } catch (_QQyugJdA) {
        return new Response(`生成节点列表失败: ${_QQyugJdA._ZXeikViR}`, { status: 500 });
    }
}

async function _qVbHdpcQ(_SXotmiHC) {
    try {
        const { _cstAyhIA, _gnrLqmGR } = await _SXotmiHC.json();
        if (!Array.isArray(_cstAyhIA)) {
            return new Response('Invalid _cstAyhIA list', { status: 400 });
        }
        const _iRkMKoAL = _cstAyhIA.map(domain => {
            if (!domain.trim()) return Promise.resolve([]);
            const _XEkiYzCY = `https://cloudflare-dns.com/dns-query?_lVEfmLNt=${encodeURIComponent(domain.trim())}&_gnrLqmGR=${_gnrLqmGR || 'A'}`;
            return fetch(_XEkiYzCY, { _VVXSjEXI: { 'Accept': 'application/dns-json' } })
                .then(_RemQxrEb => _RemQxrEb.json())
                .then(_odczUsYu => (_odczUsYu.Answer ? _odczUsYu.Answer.map(a => a._odczUsYu) : []))
                .catch(() => []);
        });
        const _vbaoMyrP = (await Promise.all(_iRkMKoAL)).flat();
        const _HVYyfUjA = [...new Set(_vbaoMyrP)];
        if (_HVYyfUjA._ZGDZcNxG === 0) {
            return new Response('无法从域名解析出任何IP。', { status: 500 });
        }
        return new Response(_HVYyfUjA.join('\n'), { _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' } });
    } catch (err) {
        return new Response(`域名解析错误: ${err._ZXeikViR}`, { status: 500 });
    }
}

async function _GBOPrDkg(_SXotmiHC, _PQCbjFFa) {
  try {
      const { _SjDMeRko } = await _SXotmiHC.json();
      if (!Array.isArray(_SjDMeRko)) {
          return _gswMUrbt({ error: "Invalid input, expected an object with a '_SjDMeRko' array." }, 400);
      }
      
      const _yJYmohLI = new Set();
      
      const _ApavnXrK = _SjDMeRko.map(_XEkiYzCY =>
          _WvBHBvFU(_XEkiYzCY)
              .then(_QPcUWqjs => {
                  if (!_QPcUWqjs) return;
                  const _uWvBjErP = _QPcUWqjs.split(/[\s,;|]+/);
                  for (const _oiGFSJAy of _uWvBjErP) {
                      const _NWtJckpX = _oiGFSJAy.trim();
                      if (_NWtJckpX) {
                          _yJYmohLI.add(_NWtJckpX);
                      }
                  }
              })
              .catch(err => {
                  console.error(`Error processing URL ${_XEkiYzCY}:`, err);
              })
      );
      await Promise.all(_ApavnXrK);
      return _gswMUrbt({ _jyLPkfZI: Array.from(_yJYmohLI) });
  } catch (_QQyugJdA) {
      return _gswMUrbt({ error: `Failed to process URLs: ${_QQyugJdA._ZXeikViR}` }, 500);
  }
}

async function _RMTDsYNw(_SXotmiHC, _PQCbjFFa) {
    const _OXTUkWkN = await _DKomPuvw(_PQCbjFFa);
    if (!_OXTUkWkN.api._BnATtqBu) {
        return new Response(_OXTUkWkN.api._ZXeikViR || 'API is disabled.', { status: 503 });
    }
    try {
        const _QWVijJfK = _PQCbjFFa.DB.prepare("SELECT _LYHZofZQ FROM kv_data WHERE _zjDlvhQA = ?").bind(_ThoLdKrh);
        const { _BNYcfafk: dbResults } = await _QWVijJfK.all();
        const _zDHzMyYZ = dbResults._ZGDZcNxG > 0 ? dbResults[0]._LYHZofZQ : null;
        const _HRvDbvUx = _zDHzMyYZ ? JSON.parse(_zDHzMyYZ) : null;
        if (!_HRvDbvUx || !_HRvDbvUx._BNYcfafk || _HRvDbvUx._BNYcfafk._ZGDZcNxG === 0) {
            return new Response("上次优选结果为空。", {
                status: 404,
                _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' },
            });
        }
        const _jyLPkfZI = _HRvDbvUx._BNYcfafk.map(r => r._SYaXvwUD);
        return new Response(_jyLPkfZI.join('\n'), {
            _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' },
        });
    } catch (_QQyugJdA) {
        console.error("API /_SYaXvwUD 处理错误:", _QQyugJdA);
        return new Response(`API处理时出错: ${_QQyugJdA._ZXeikViR}`, { status: 500 });
    }
}

function _PhPTgqAb(_QopZTPyD, _wwlzKXJs, _OXTUkWkN, _PhxQsGAe) {
    const { itemLink } = _OXTUkWkN;
    if (!itemLink || !itemLink._BnATtqBu) return null;
    const { template, _bkDfCtrR, selectionMode, _PUoeVmcb } = itemLink;
    if (!_bkDfCtrR || _bkDfCtrR._ZGDZcNxG === 0) return null;

    let _BLJayNSl;
    if (selectionMode === 'random') {
        _BLJayNSl = _bkDfCtrR[_wwlzKXJs % _bkDfCtrR._ZGDZcNxG];
    } else if (selectionMode === 'first') {
        _BLJayNSl = _bkDfCtrR[0];
    } else {
        _BLJayNSl = _bkDfCtrR.find(s => s._lVEfmLNt === selectionMode) || _bkDfCtrR[0];
    }
    if (!_BLJayNSl) return null;

    let _JUSjHdfT = template;
    const _ttBZRwrD = _QopZTPyD._ZoXLSmoM || 443;
    const _NoHASZxA = _GdxOlvXs.isIPv6(_QopZTPyD._SYaXvwUD) ? `[${_QopZTPyD._SYaXvwUD}]` : _QopZTPyD._SYaXvwUD;
    let _lVEfmLNt = `${_wwlzKXJs + 1} 、 ${_QopZTPyD._WdCxAvPT || '未知'}`;
    if (!_QopZTPyD._JnJDyPjM || !_QopZTPyD._JnJDyPjM.toLowerCase().includes('cloudflare')) {
        _lVEfmLNt += '(反代)';
    }
    let _rlhanaoU = _BLJayNSl._rlhanaoU || _PhxQsGAe;

    _JUSjHdfT = _JUSjHdfT.replace(/{_SYaXvwUD}/g, _NoHASZxA)
               .replace(/{_ZoXLSmoM}/g, _ttBZRwrD)
               .replace(/{_lVEfmLNt}/g, encodeURIComponent(_lVEfmLNt))
               .replace(/{rank}/g, _wwlzKXJs + 1)
               .replace(/{_WdCxAvPT}/g, encodeURIComponent(_QopZTPyD._WdCxAvPT || '未知'))
               .replace(/{_JnJDyPjM}/g, encodeURIComponent(_QopZTPyD._JnJDyPjM || '未知'))
               .replace(/{_rlhanaoU}/g, encodeURIComponent(_rlhanaoU))
               .replace(/{_VNxaRuQa}/g, encodeURIComponent(_BLJayNSl['_VNxaRuQa'] || ''))
               .replace(/{_bJEcHKTk}/g, encodeURIComponent(encodeURIComponent(_BLJayNSl._bJEcHKTk || '')));

    if (_PUoeVmcb) {
        _PUoeVmcb.forEach(field => {
            const _xIqbWBRa = new RegExp('{' + field._lVEfmLNt + '}', 'g');
            _JUSjHdfT = _JUSjHdfT.replace(_xIqbWBRa, encodeURIComponent(field._LYHZofZQ));
        });
    }
    return _JUSjHdfT;
}

async function _eHkZuyVf(_SXotmiHC, _PQCbjFFa) {
    const _OXTUkWkN = await _DKomPuvw(_PQCbjFFa);
    if (!_OXTUkWkN.itemLink._BnATtqBu) {
        return new Response("Item _JUSjHdfT feature is disabled.", { status: 503, _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' } });
    }

    try {
        const _QWVijJfK = _PQCbjFFa.DB.prepare("SELECT _LYHZofZQ FROM kv_data WHERE _zjDlvhQA = ?").bind(_ThoLdKrh);
        const { _BNYcfafk: dbResults } = await _QWVijJfK.all();
        const _zDHzMyYZ = dbResults._ZGDZcNxG > 0 ? dbResults[0]._LYHZofZQ : null;
        const _HRvDbvUx = _zDHzMyYZ ? JSON.parse(_zDHzMyYZ) : null;
        
        if (!_HRvDbvUx || !_HRvDbvUx._BNYcfafk || _HRvDbvUx._BNYcfafk._ZGDZcNxG === 0) {
            return new Response("No optimized IPs available to generate endpoints.", {
                status: 404,
                _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' },
            });
        }
        
        const _PhxQsGAe = new URL(_SXotmiHC._XEkiYzCY)._YsxDaDaZ;

        const _mLpNuACI = _HRvDbvUx._BNYcfafk.map((_QopZTPyD, _wwlzKXJs) => {
            return _PhPTgqAb(_QopZTPyD, _wwlzKXJs, _OXTUkWkN, _PhxQsGAe);
        }).filter(Boolean);

        if (_mLpNuACI._ZGDZcNxG === 0) {
            return new Response("Could not generate any _UAQceGMY links from the available IPs.", {
                status: 500,
                _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' },
            });
        }

        return new Response(_mLpNuACI.join('\n'), {
            _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/plain; _ruFhqZpD=utf-8' },
        });

    } catch (_QQyugJdA) {
        console.error("API /api/endpoints error:", _QQyugJdA);
        return new Response(`Error processing API _SXotmiHC: ${_QQyugJdA._ZXeikViR}`, { status: 500 });
    }
}

async function _iapVUjIE(_SXotmiHC, _PQCbjFFa, _hEjcsIYo) {
    const _gffVdXLT = _SXotmiHC._VVXSjEXI.get('CF-Connecting-IP') || "未知IP";
    const [
        _NFbMwRQB,
        _nZmXWPxz,
        defaultDomains,
        fetchedCountryMap
    ] = await Promise.all([
        _cWcAOKXV(_ouYxMtnd, _CEVlVZXr, []),
        _cWcAOKXV(_ZIBclEdA, _CEVlVZXr, []),
        _cWcAOKXV(_NAOfjlUv, _PVXYkJHg, []),
        _cWcAOKXV(_MWPykgRp, _QgBvWZsd, { "N/A": "未知" })
    ]);
    _PgMQxtOI = fetchedCountryMap;
    let _jXEAVLGw = false;
    let _xxuYDtkf;
    try {
        const _hbQBVofZ = await _fwnYGopk(_PQCbjFFa);
        _jXEAVLGw = !!_hbQBVofZ;
        _xxuYDtkf = await _DKomPuvw(_PQCbjFFa);
    } catch (_QQyugJdA) {
        if (_QQyugJdA._ZXeikViR && _QQyugJdA._ZXeikViR.includes('no such table')) {
            console.log("检测到 'kv_data' 表不存在,正在自动创建...");
            try {
                const _xzxsnVUf = "CREATE TABLE IF NOT EXISTS kv_data (_zjDlvhQA TEXT PRIMARY KEY, _LYHZofZQ TEXT); CREATE TABLE IF NOT EXISTS optimized_results (_DcLsgNGi TEXT PRIMARY KEY, _odczUsYu TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";
                await _PQCbjFFa.DB.exec(_xzxsnVUf);
                console.log("数据表创建成功。");
                _jXEAVLGw = false;
                _xxuYDtkf = _IIGJYihY();
            } catch (dbError) {
                console.error("自动创建数据表失败:", dbError);
                return new Response(`数据库初始化失败: ${dbError._ZXeikViR}`, {
                    status: 500,
                    _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/html;_ruFhqZpD=UTF-8' }
                });
            }
        } else {
             let _MoeiXYJc = _YjolohSl(_QQyugJdA._ZXeikViR);
             return new Response(_MoeiXYJc, { _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/html;_ruFhqZpD=UTF-8' } });
        }
    }
    if (_xxuYDtkf.telegram.bot_token && _xxuYDtkf.telegram.chat_id) {
        const _ANJUamEN = _SXotmiHC.cf?._ANJUamEN || "未知";
        const _DYbmbOAb = _SXotmiHC.cf?._DYbmbOAb || "";
        let _wrgGVjrI = _PgMQxtOI[_ANJUamEN] || _ANJUamEN;
        if (_DYbmbOAb && _DYbmbOAb !== "未知城市" && _DYbmbOAb !== _ANJUamEN) _wrgGVjrI = `${_wrgGVjrI} ${_PgMQxtOI[_DYbmbOAb] || _DYbmbOAb}`;
        const _zDUzuZit = _CeYetUDF();
        const _IFJvwpcg = _SXotmiHC._XEkiYzCY;
        const _ELadfWhL = `访客: ${_gffVdXLT}\n位置: ${_wrgGVjrI.trim()}\n时间: ${_zDUzuZit}\n来自:${_IFJvwpcg}`;
        const _iBvnfnMG = `https://api.telegram.org/bot${_xxuYDtkf.telegram.bot_token}/sendMessage?chat_id=${_xxuYDtkf.telegram.chat_id}&_QPcUWqjs=${encodeURIComponent(_ELadfWhL)}`;
        _hEjcsIYo.waitUntil(fetch(_iBvnfnMG).catch(_QQyugJdA => console.error("Telegram通知失败:", _QQyugJdA)));
    }
    let _MznXetMG = _OIJMPjfY();
    const _eZYvVIVX = {
        _OXTUkWkN: _xxuYDtkf,
        status: {
            _jXEAVLGw: _jXEAVLGw,
        }
    };
    _MznXetMG = _MznXetMG.replace('__PAGE_DATA_JSON__', JSON.stringify(_eZYvVIVX));
    _MznXetMG = _MznXetMG.replace('__ALL_CF_CIDR_LIST_JSON__', JSON.stringify(_NFbMwRQB));
    _MznXetMG = _MznXetMG.replace('__BALANCED_CF_CIDR_LIST_JSON__', JSON.stringify(_nZmXWPxz));
    _MznXetMG = _MznXetMG.replace('__DEFAULT_DOMAINS_LIST_JSON__', JSON.stringify(defaultDomains));
    _MznXetMG = _MznXetMG.replace('__COUNTRY_MAP_JSON__', JSON.stringify(_PgMQxtOI));
    return new Response(_MznXetMG, {
        _VVXSjEXI: { 'Content-Type': '_QPcUWqjs/html;_ruFhqZpD=UTF-8' },
    });
}

function _gswMUrbt(_GPVckCXD, status = 200, _VVXSjEXI = {}) {
    return new Response(JSON.stringify(_GPVckCXD), {
        status,
        _VVXSjEXI: { 'Content-Type': 'application/json;_ruFhqZpD=UTF-8', ..._VVXSjEXI }
    });
}

function _CeYetUDF(date = new Date()) {
    return new Intl.DateTimeFormat('zh-CN', {
        timeZone: 'Asia/Shanghai',
        year: 'numeric', month: '2-digit', day: '2-digit',
        hour: '2-digit', minute: '2-digit', second: '2-digit',
        hour12: false
    }).format(date);
}

function _teRyUdGO(_SYaXvwUD) {
    if (!_SYaXvwUD || typeof _SYaXvwUD !== 'string') return "无效IP";
    if(_GdxOlvXs.isIPv4(_SYaXvwUD)){
        const _RQfNgTIz = _SYaXvwUD.split('.');
        if (_RQfNgTIz._ZGDZcNxG === 4) return `${_RQfNgTIz[0]}.*.*.${_RQfNgTIz[3]}`;
    }
    if(_GdxOlvXs.isIPv6(_SYaXvwUD)){
        const _RQfNgTIz = _SYaXvwUD.split(':');
        if (_RQfNgTIz._ZGDZcNxG > 2) return `${_RQfNgTIz[0]}:...:${_RQfNgTIz[_RQfNgTIz._ZGDZcNxG - 1]}`;
    }
    return _SYaXvwUD;
}

function _YjolohSl(_wBnLxcWP) {
    return `
    <!DOCTYPE html><html lang="zh-CN"><head><meta _ruFhqZpD="UTF-8"><title>需要设置</title>
    <_jcusQaLw>
        _GPVckCXD { font-family: sans-serif; background: #1a1a1a; _txyQCZmW: #e0e0e0; display: flex; justify-_SsvdCJRS: center; align-items: center; height: 100vh; margin: 0; }
        ._fcTvggII { max-_mczmtATk: 800px; padding: 2rem; background: #25282e; border: 1px solid #4044c; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
        h1 { _txyQCZmW: #00a0ff; border-bottom: 1px solid #40444c; padding-bottom: 0.5rem; }
        p { line-height: 1.6; }
        code { background: #1a1a1a; padding: 0.2em 0.4em; border-radius: 4px; font-family: monospace; white-space: pre-wrap; word-break: break-all; }
        .error { _txyQCZmW: #da3633; background: rgba(218, 54, 51, 0.1); padding: 0.5rem; border-radius: 4px; margin-_sGQIyBMq: 1rem; }
    </_jcusQaLw>
    </head><_GPVckCXD>
    <div class="_fcTvggII">
        <h1>部署指南</h1>
        <p>系统检测到 D1 数据库绑定存在问题。请确保您已完成以下步骤:</p>
        <ol>
            <li>进入 Cloudflare Dashbord -> Workers & Pages -> D1。</li>
            <li>创建一个新的D1数据库 (如果还没有)。</li>
            <li>将此数据库绑定到您的Worker:
                <ul>
                    <li>进入Worker设置 -> 变量 -> D1数据库绑定。</li>
                    <li>变量名必须填写 <code>DB</code>。</li>
                    <li>选择您刚创建的数据库。</li>
                    <li>点击“保存并部署”。</li>
                </ul>
            </li>
        </ol>
        <p>完成以上步骤后,请刷新本页面。系统会自动为您创建所需的数据表。</p>
        ${_wBnLxcWP ? `<div class="error"><strong>当前错误信息:</strong> ${_wBnLxcWP.replace(/</g, "&lt;").replace(/>/g, "&gt;")}</div>` : ''}
    </div>
    </_GPVckCXD></html>`;
}

function _OIJMPjfY() {
    return `
  <!DOCTYPE html><html lang="zh-CN"><head> <meta _ruFhqZpD="UTF-8"> <meta _lVEfmLNt="viewport" _SsvdCJRS="_mczmtATk=device-_mczmtATk, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Cloudflare IP</title> <_JUSjHdfT href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;700&family=Roboto+Mono:wght@400;500&display=swap" rel="stylesheet"><script src="https://cdn.jsdelivr.net/npm/qrcode-generator/qrcode.js"></script>
  <_jcusQaLw>
  :root { --primary-_txyQCZmW: #00A0FF; --primary-hover: #007ACC; --primary-gradient-start: #00C6FF; --primary-gradient-end: #0072FF; --secondary-_txyQCZmW: #8c939d; --light-bg: #1A1C20; --_SsvdCJRS-bg: #25282E; --border-_txyQCZmW: #40444C; --_QPcUWqjs-_txyQCZmW: #E0E0E0; --_QPcUWqjs-light: #B0B0B0; --success-_txyQCZmW: #30A46C; --danger-_txyQCZmW: #DA3633; --warning-_txyQCZmW: #DBAB0A; --border-radius-md: 8px; --border-radius-sm: 6px; --font-family-sans: 'Inter', 'Noto Sans SC', sans-serif; --font-family-mono: 'Roboto Mono', monospace; }
  * { margin: 0; padding: 0; box-sizing: border-box; }
  html { font-size: 16px; }
  _GPVckCXD { font-family: var(--font-family-sans); background-_txyQCZmW: var(--light-bg); _txyQCZmW: var(--_QPcUWqjs-_txyQCZmW); line-height: 1.65; overflow-x: hidden; padding: 0; position:relative; transition: background-_txyQCZmW 0.5s ease; background-size: cover; background-position: center; background-attachment: fixed; }
  #background-_gcPKIqTX { position: fixed; _sGQIyBMq: 0; _BuRkXIGj: 0; _mczmtATk: 100%; height: 100%; z-_wwlzKXJs: -1; display: none; }
  ._ksAwcHyw-_fcTvggII { max-_mczmtATk: 1100px; margin: 0 auto; padding: 0 1rem; position: relative; z-_wwlzKXJs: 1; }
  #_NxLMPkST { position: fixed; _sGQIyBMq: 1rem; right: 1rem; font-size: 0.85em; padding: 0.4em 0.8em; z-_wwlzKXJs: 10; }
  #marquee-_fcTvggII { overflow: hidden; white-space: nowrap; background-_txyQCZmW: rgba(37, 40, 46, 0.6); backdrop-filter: blur(5px); _txyQCZmW: var(--primary-_txyQCZmW); padding: 0.5rem 0; margin-_sGQIyBMq: 1rem; border-radius: var(--border-radius-sm); display: none; }
  #marquee-_QPcUWqjs { display: inline-block; padding-_BuRkXIGj: 100%; animation: marquee-scroll 20s linear infinite; }
  @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
  _pkdgfJhP { _QPcUWqjs-align: center; margin-_sGQIyBMq: 1rem; margin-bottom: 2rem; }
  _pkdgfJhP h1 { white-space: pre-wrap; font-size: 2.25em; _txyQCZmW: var(--primary-_txyQCZmW); font-weight: 700; _QPcUWqjs-shadow: 0 0 10px rgba(var(--primary-_txyQCZmW-rgb), 0.3); }
  .card { background-_txyQCZmW: rgba(37, 40, 46, 0.85); backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); border-radius: var(--border-radius-md); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25); padding: 1.5rem; margin-bottom: 1.5rem; border: 1px solid var(--border-_txyQCZmW); }
  .progress-section #_aXssUZXG { _mczmtATk: 100%; height: 0.75rem; border-radius: var(--border-radius-sm); appearance: none; -webkit-appearance: none; background-_txyQCZmW: var(--border-_txyQCZmW); overflow: hidden; }
  .progress-section #_aXssUZXG::-webkit-progress-_LYHZofZQ { background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); }
  .progress-section #status { _QPcUWqjs-align: center; margin-_sGQIyBMq: 0.75em; font-size: 0.95em; _txyQCZmW: var(--_QPcUWqjs-light); min-height: 1.5em; }
  .section-_pkdgfJhP { display: flex; flex-wrap: wrap; justify-_SsvdCJRS: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-_txyQCZmW); gap: 1rem; }
  .section-_pkdgfJhP h2 { font-size: 1.6em; font-weight: 600; margin:0; }
  .generator-info { font-size: 0.85em; _txyQCZmW: var(--secondary-_txyQCZmW); _QPcUWqjs-align: right; flex-shrink: 0; }
  .generator-info span { display: block; }
  .table-responsive { _mczmtATk: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table { _mczmtATk: 100%; border-collapse: collapse; margin-_sGQIyBMq: 0; font-size: 0.9em; }
  th, td { border-bottom: 1px solid var(--border-_txyQCZmW); padding: 0.8em; _QPcUWqjs-align: _BuRkXIGj; vertical-align: middle; white-space: nowrap; }
  th { background-_txyQCZmW: #2c3038; font-weight: 500; }
  tbody tr:hover { background-_txyQCZmW: #30333a; }
  td._SYaXvwUD-_LcirszwF { font-weight: 500; font-family: var(--font-family-mono); _txyQCZmW: var(--primary-_txyQCZmW); }
  td.ping-_LYHZofZQ { font-weight: 600; font-family: var(--font-family-mono); }
  td.actions-cell { _QPcUWqjs-align: right; }
  .btn { display: inline-flex; align-items: center; justify-_SsvdCJRS: center; font-weight: 500; _QPcUWqjs-align: center; cursor: pointer; user-_SEwFexun: none; background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid transparent; _txyQCZmW: #fff; padding: 0.4em 0.8em; font-size: 0.85em; border-radius: var(--border-radius-sm); transition: all 0.2s ease-in-out; margin-_BuRkXIGj: 6px; }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }
  .btn-outline { background: transparent; _txyQCZmW: var(--primary-_txyQCZmW); border: 1px solid var(--primary-_txyQCZmW); }
  .btn-outline:hover { background-_txyQCZmW: var(--primary-_txyQCZmW); _txyQCZmW: var(--_SsvdCJRS-bg); }
  ._ksAwcHyw-download-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
  ._ksAwcHyw-download-buttons .btn { _mczmtATk: 100%; margin: 0; }
  .tooltip-notification { position: fixed; _sGQIyBMq: 20px; right: 20px; padding: 12px 20px; border-radius: var(--border-radius-md); _txyQCZmW: #fff; font-size: 0.95em; z-_wwlzKXJs: 10002; box-shadow: 0 6px 15px rgba(0, 0, 0, 0.35); opacity: 0; transform: translateY(-20px); transition: all 0.3s ease; pointer-events: none; }
  .tooltip-notification.show { opacity: 1; transform: translateY(0); }
  #_pvRKyRHj, #_hpscAYvf, #_JhJnuFbH, #_zjETDBuF, #_CZSVKxtl { display: none; position: fixed; z-_wwlzKXJs: 10000; _BuRkXIGj: 0; _sGQIyBMq: 0; _mczmtATk: 100%; height: 100%; background-_txyQCZmW: rgba(0,0,0,0.6); justify-_SsvdCJRS: center; align-items: center; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }
  .modal-_SsvdCJRS, ._ksAwcHyw-modal-_SsvdCJRS { background-_txyQCZmW: var(--_SsvdCJRS-bg); padding: 2rem; border: 1px solid var(--border-_txyQCZmW); border-radius: var(--border-radius-md); _mczmtATk: 95%; max-_mczmtATk: 800px; max-height: 90vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
  #_zjETDBuF .modal-_SsvdCJRS { max-_mczmtATk: 500px; }
  .modal-_SsvdCJRS h3, ._ksAwcHyw-modal-_pkdgfJhP h3 { margin-_sGQIyBMq: 0; margin-bottom: 1.5rem; _txyQCZmW: var(--primary-_txyQCZmW); _QPcUWqjs-align: center; }
  .modal-buttons { display: flex; justify-_SsvdCJRS: flex-end; gap: 1rem; margin-_sGQIyBMq: 2rem; border-_sGQIyBMq: 1px solid var(--border-_txyQCZmW); padding-_sGQIyBMq: 1.5rem; }
  .modal-section-divider { border: 0; height: 1px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--border-_txyQCZmW), rgba(0,0,0,0)); margin: 2rem 0; }
  ._ksAwcHyw-modal-_pkdgfJhP { display: flex; justify-_SsvdCJRS: space-between; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-_txyQCZmW); }
  .modal-close-btn { font-size: 1.5rem; font-weight: bold; line-height: 1; _txyQCZmW: var(--_QPcUWqjs-light); cursor: pointer; background: none; border: none; padding: 0; }
  ._ksAwcHyw-list-_UAQceGMY { display: flex; flex-direction: column; padding: 1rem; border: 1px solid var(--border-_txyQCZmW); border-radius: var(--border-radius-sm); margin-bottom: 1rem; }
  ._ksAwcHyw-_lVEfmLNt { font-size: 1.1em; font-weight: 600; }
  ._ksAwcHyw-links a { display: block; _txyQCZmW: var(--primary-_txyQCZmW); _QPcUWqjs-decoration: none; margin-_sGQIyBMq: 0.5rem; word-break: break-all; }
  ._ksAwcHyw-links a:hover { _QPcUWqjs-decoration: underline; }
  ._ksAwcHyw-links span { _txyQCZmW: var(--_QPcUWqjs-light); }
  #visitorPasswordPrompt { _QPcUWqjs-align: center; }
  #visitorPasswordPrompt h3 { _txyQCZmW: var(--primary-_txyQCZmW); font-size: 1.4em; margin-bottom: 0.8rem; }
  #visitorPasswordPrompt p { _txyQCZmW: var(--_QPcUWqjs-light); margin-bottom: 1.5rem; }
  ._hbQBVofZ-input-group { display: flex; gap: 10px; max-_mczmtATk: 400px; margin: 0 auto; }
  ._hbQBVofZ-input-group input { flex-grow: 1; _QPcUWqjs-align: center; }
  ._hbQBVofZ-input-group .btn { margin-_BuRkXIGj: 0; }
  ._BNYcfafk-actions-_fcTvggII { _QPcUWqjs-align: center; margin-bottom: 1.5rem; }
  ._BNYcfafk-api-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
  ._BNYcfafk-api-buttons .btn { margin: 0; _mczmtATk: 100%; font-size: 0.9em; padding: 0.5em 1em; }
  .form-grid { display: grid; grid-template-columns: max-_SsvdCJRS 1fr; gap: 1.2rem 1rem; align-items: center; }
  .form-grid-label { justify-self: end; display: flex; align-items: center; gap: 8px; }
  .form-grid-control { display: flex; align-items: center; gap: 10px; }
  .form-grid-control-full { grid-column: 1 / -1; }
  .form-grid-control input, .form-grid-control _SEwFexun, .form-grid-control textarea { _mczmtATk: 100%; background-_txyQCZmW: var(--light-bg); border: 1px solid var(--border-_txyQCZmW); border-radius: var(--border-radius-sm); _txyQCZmW: var(--_QPcUWqjs-_txyQCZmW); font-family: var(--font-family-sans); padding: 0.6em; transition: border-_txyQCZmW 0.2s, box-shadow 0.2s; }
  .form-grid-control input:focus, .form-grid-control _SEwFexun:focus, .form-grid-control textarea:focus { border-_txyQCZmW: var(--primary-_txyQCZmW); box-shadow: 0 0 0 2px rgba(var(--primary-_txyQCZmW-rgb), 0.2); outline: none; }
  .form-grid-control input[_gnrLqmGR="_txyQCZmW"] { min-_mczmtATk: auto; padding: 2px; _mczmtATk: 2.5em; height: 2.5em; }
  .form-grid-control input[_gnrLqmGR="checkbox"] { _mczmtATk: auto; flex-shrink: 0; height: 1.2em; _mczmtATk: 1.2em; }
  .form-grid-control ._zXIXaqAi-input { _mczmtATk: 80px; _QPcUWqjs-align: right; }
  .tooltip-_ezqnMUbR { display: inline-flex; _mczmtATk: 16px; height: 16px; align-items: center; justify-_SsvdCJRS: center; background-_txyQCZmW: var(--secondary-_txyQCZmW); _txyQCZmW: var(--_SsvdCJRS-bg); border-radius: 50%; font-size: 12px; font-weight: bold; cursor: pointer; user-_SEwFexun: none; }
  #tooltip-popup { position: fixed; background-_txyQCZmW: #383c4a; _txyQCZmW: #fff; padding: 10px 15px; border-radius: 6px; z-_wwlzKXJs: 10001; font-size: 0.85em; max-_mczmtATk: 300px; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.4); border: 1px solid var(--border-_txyQCZmW); pointer-events: none; }
  #custom-fields-_fcTvggII .form-grid-control { gap: 5px; } #custom-fields-_fcTvggII .form-grid-control input { flex: 1; }
  .parameter-_HhXBufsA-_lbVbfSri { border: 1px solid var(--border-_txyQCZmW); border-radius: var(--border-radius-sm); padding: 1rem; margin-bottom: 1rem; }
  .parameter-_HhXBufsA-_pkdgfJhP { display: flex; justify-_SsvdCJRS: space-between; align-items: center; margin-bottom: 1rem; }
  .parameter-_HhXBufsA-_pkdgfJhP input { flex-grow: 1; margin-right: 1rem; }
  .fine-grained-options { display: flex; gap: 1rem; margin-_sGQIyBMq: 0.5rem; align-items: center; font-size: 0.9em; }
  .fine-grained-options label { display: flex; align-items: center; gap: 0.3rem; cursor: pointer; }
  ._QPcUWqjs-_txyQCZmW-grid { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: center; _mczmtATk: 100%; }
  ._QPcUWqjs-_txyQCZmW-grid input[_gnrLqmGR="_txyQCZmW"] { grid-column: 1 / 2; }
  ._QPcUWqjs-_txyQCZmW-grid input[_gnrLqmGR="_QPcUWqjs"], ._QPcUWqjs-_txyQCZmW-grid textarea { grid-column: 2 / 3; }
  #_zjETDBuF .button-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
  #_zjETDBuF .btn-group { display: flex; }
  #_zjETDBuF .sub-btn { flex-grow: 1; margin: 0; }
  #_zjETDBuF ._pflbzbMs-btn { flex-shrink: 0; margin-_BuRkXIGj: -1px; border-_sGQIyBMq-_BuRkXIGj-radius: 0; border-bottom-_BuRkXIGj-radius: 0; }
  #_CZSVKxtl .modal-_SsvdCJRS { max-_mczmtATk: 300px; background: white; padding: 1rem; _QPcUWqjs-align: center; }
  #qrCodeImg { max-_mczmtATk: 100%; }
  @media (max-_mczmtATk: 768px) {
    html { font-size: 15px; } ._ksAwcHyw-_fcTvggII { padding: 0 0.8rem; } _pkdgfJhP { margin-_sGQIyBMq: 2.5rem; margin-bottom: 1.5rem; } #_NxLMPkST { _sGQIyBMq: 0.8rem; right: 0.8rem; } .card { padding: 1rem; }
    .form-grid { grid-template-columns: 1fr; } .form-grid-label { justify-self: start; }
  }
  </_jcusQaLw>
  <_jcusQaLw _DcLsgNGi="theme-styles">
  .theme-light { --light-bg: #F0F2F5; --_SsvdCJRS-bg: #FFFFFF; --border-_txyQCZmW: #DCDFE6; --_QPcUWqjs-_txyQCZmW: #303133; --_QPcUWqjs-light: #606266; }
  .theme-light .card { background-_txyQCZmW: rgba(255, 255, 255, 0.9); }
  .theme-light th { background-_txyQCZmW: #F5F7FA; }
  .theme-light tbody tr:hover { background-_txyQCZmW: #ECF5FF; }
  .theme-matrix { --primary-_txyQCZmW: #00FF41; --primary-hover: #39FF14; --light-bg: #000000; --_SsvdCJRS-bg: #0D0208; --border-_txyQCZmW: #00FF41; --_QPcUWqjs-_txyQCZmW: #00FF41; --_QPcUWqjs-light: #00FF41; font-family: var(--font-family-mono); }
  .theme-matrix .card { background-_txyQCZmW: rgba(0, 20, 0, 0.7); _QPcUWqjs-shadow: 0 0 5px var(--primary-_txyQCZmW); backdrop-filter: none; }
  .theme-matrix th { background-_txyQCZmW: #000; }
  .theme-matrix tbody tr:hover { background-_txyQCZmW: #010; }
  .theme-matrix .btn { _QPcUWqjs-shadow: none; _txyQCZmW: #000; }
  .theme-matrix .btn-outline { background-_txyQCZmW: transparent; }
  .theme-modern-glass { --primary-_txyQCZmW: #00C6FF; --primary-hover: #0072FF; --light-bg: #000; --_SsvdCJRS-bg: rgba(30, 30, 40, 0.6); --border-_txyQCZmW: rgba(255, 255, 255, 0.2); --_QPcUWqjs-_txyQCZmW: #F0F0F0; --_QPcUWqjs-light: #A0A0B0; --border-radius-md: 12px; }
  _GPVckCXD.theme-modern-glass { background: linear-gradient(-45deg, #000428, #004e92, #1CB5E0, #23D5AB); background-size: 400% 400%; animation: gradientBG 15s ease infinite; }
  @keyframes gradientBG { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
  .theme-particles-glass { --primary-_txyQCZmW: #00C6FF; --primary-hover: #0072FF; --light-bg: #1A1C20; --_SsvdCJRS-bg: rgba(30, 30, 40, 0.6); --border-_txyQCZmW: rgba(255, 255, 255, 0.2); --_QPcUWqjs-_txyQCZmW: #F0F0F0; --_QPcUWqjs-light: #A0A0B0; --border-radius-md: 12px; }
  .glassy-components .card { background-_txyQCZmW: var(--_SsvdCJRS-bg); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid var(--border-_txyQCZmW); }
  .glassy-components .btn { background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid rgba(255, 255, 255, 0.2); border-bottom-_txyQCZmW: rgba(0,0,0,0.3); border-right-_txyQCZmW: rgba(0,0,0,0.3); box-shadow: 0 4px 15px rgba(0,0,0,0.2), inset 0 1px 1px rgba(255,255,255,0.1); _QPcUWqjs-shadow: 0 1px 2px rgba(0,0,0,0.2); _txyQCZmW: #fff; }
  .glassy-components .btn-outline { background: rgba(255, 255, 255, 0.05); border-_txyQCZmW: rgba(255, 255, 255, 0.2); backdrop-filter: blur(2px); _QPcUWqjs-shadow: 0 1px 2px rgba(0,0,0,0.2); }
  .glassy-components .btn-outline:hover { background: var(--primary-_txyQCZmW); border-_txyQCZmW: var(--primary-_txyQCZmW); _txyQCZmW: #fff; }
  .glassy-components _pkdgfJhP h1 { background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.7) 100%); -webkit-background-clip: _QPcUWqjs; -webkit-_QPcUWqjs-fill-_txyQCZmW: transparent; filter: drop-shadow(0 2px 5px rgba(0,0,0,0.5)); _txyQCZmW: transparent; }
  .theme-aurora-glass { --primary-_txyQCZmW: #38bdf8; --light-bg: #0c0a09; --_SsvdCJRS-bg: rgba(23, 23, 23, 0.5); --border-_txyQCZmW: rgba(255, 255, 255, 0.15); --_QPcUWqjs-_txyQCZmW: #f2f2f2; --_QPcUWqjs-light: #a3a3a3; }
  _GPVckCXD.theme-aurora-glass::before { _SsvdCJRS: ''; position: fixed; _sGQIyBMq: 0; _BuRkXIGj: 0; _mczmtATk: 100%; height: 100%; z-_wwlzKXJs: -2; background: radial-gradient(at 27% 37%, hsla(215, 98%, 61%, 0.4) 0px, transparent 50%), radial-gradient(at 97% 21%, hsla(125, 98%, 72%, 0.2) 0px, transparent 50%), radial-gradient(at 52% 99%, hsla(355, 98%, 76%, 0.3) 0px, transparent 50%), radial-gradient(at 10% 29%, hsla(256, 96%, 68%, 0.3) 0px, transparent 50%), radial-gradient(at 97% 96%, hsla(38, 60%, 74%, 0.2) 0px, transparent 50%), radial-gradient(at 33% 50%, hsla(222, 67%, 73%, 0.3) 0px, transparent 50%), radial-gradient(at 79% 53%, hsla(343, 68%, 73%, 0.2) 0px, transparent 50%); animation: auroraBG 20s ease-in-out infinite alternate; }
  @keyframes auroraBG { from { transform: scale(1); } to { transform: scale(1.5); } }
  .theme-cyberpunk-glass { --primary-_txyQCZmW: #08fdd8; --light-bg: #010409; --_SsvdCJRS-bg: rgba(22, 27, 34, 0.6); --border-_txyQCZmW: rgba(139, 148, 158, 0.3); --_QPcUWqjs-_txyQCZmW: #e6edf3; --_QPcUWqjs-light: #7d8590; }
  .theme-cyberpunk-glass .card { border-image: linear-gradient(to bottom right, var(--primary-_txyQCZmW), #7928ca) 1; box-shadow: 0 0 15px rgba(var(--primary-_txyQCZmW-rgb), 0.25); }
  .theme-cyberpunk-glass .btn { box-shadow: 0 0 8px rgba(var(--primary-_txyQCZmW-rgb), 0.5); }
  .theme-marble-light { --primary-_txyQCZmW: #bfa37c; --light-bg: #f7f5f2; --_SsvdCJRS-bg: #ffffff; --border-_txyQCZmW: #e0dcd5; --_QPcUWqjs-_txyQCZmW: #3d3a36; --_QPcUWqjs-light: #6b6661; }
  _GPVckCXD.theme-marble-light { background-image: _XEkiYzCY('_odczUsYu:image/svg+xml,%3Csvg _mczmtATk="60" height="60" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="none" fill-rule="evenodd"%3E%3Cg fill="%23dcd6ca" fill-opacity="0.2"%3E%3Cpath d="M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); }
  .theme-marble-light .card { background-_txyQCZmW: rgba(255, 255, 255, 0.85); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
  </_jcusQaLw>
  </head><_GPVckCXD _DcLsgNGi="pageBody">
  <_gcPKIqTX _DcLsgNGi="background-_gcPKIqTX"></_gcPKIqTX>
  <div _DcLsgNGi="_pvRKyRHj">
      <div class="modal-_SsvdCJRS">
          <h3>首次使用 - 请设置管理员密码</h3>
          <p>这是您第一次访问本页面,为了保护您的设置,请创建一个管理员密码。</p>
          <div class="form-grid"><div class="form-grid-label"><label for="initialPassword">新密码 (至少6位)</label></div><div class="form-grid-control"><input _gnrLqmGR="_hbQBVofZ" _DcLsgNGi="initialPassword"></div></div>
          <div class="form-grid"><div class="form-grid-label"><label for="confirmPassword">确认密码</label></div><div class="form-grid-control"><input _gnrLqmGR="_hbQBVofZ" _DcLsgNGi="confirmPassword"></div></div>
          <div class="modal-buttons"><button _DcLsgNGi="setInitialPasswordBtn" class="btn">设置密码</button></div>
      </div>
  </div>
  <div class="_ksAwcHyw-_fcTvggII">
    <button _DcLsgNGi="_NxLMPkST" class="btn btn-outline"></button>
    <div _DcLsgNGi="marquee-_fcTvggII"><div _DcLsgNGi="marquee-_QPcUWqjs"></div></div>
    <_pkdgfJhP><h1 _DcLsgNGi="pageTitle"></h1></_pkdgfJhP>
    <div class="card" _DcLsgNGi="visitorPasswordPrompt" _jcusQaLw="display: none;">
        <h3>需要授权</h3>
        <p>此站点已启用访客密码,请输入密码以继续。</p>
        <div class="_hbQBVofZ-input-group">
            <input _gnrLqmGR="_hbQBVofZ" _DcLsgNGi="visitorPasswordEntry" _xIqbWBRa="访客密码">
            <button _DcLsgNGi="startTestWithPasswordBtn" class="btn">开始测试</button>
        </div>
    </div>
    <div _DcLsgNGi="_DnmLZEba" _jcusQaLw="display: block;">
        <div class="card progress-section">
            <div _DcLsgNGi="progressDisplay">
                <progress _DcLsgNGi="_aXssUZXG" _LYHZofZQ="0" max="100"></progress>
                <div _DcLsgNGi="status">正在初始化...</div>
            </div>
        </div>
        <div class="card _ksAwcHyw-download-section">
          <div class="section-_pkdgfJhP"><h2 _DcLsgNGi="appDownloadTitleEl"></h2></div>
          <div class="_ksAwcHyw-download-buttons">
            <button class="btn" _odczUsYu-_okHjXMbJ="android">安卓客户端</button>
            <button class="btn" _odczUsYu-_okHjXMbJ="ios">苹果客户端</button>
            <button class="btn" _odczUsYu-_okHjXMbJ="windows">Windows客户端</button>
            <button class="btn" _odczUsYu-_okHjXMbJ="mac">Mac客户端</button>
          </div>
        </div>
        <div class="card _BNYcfafk-section" _DcLsgNGi="_jXgBnlHm" _jcusQaLw="display:none;">
          <div class="section-_pkdgfJhP">
            <h2 _DcLsgNGi="liveTitleEl"></h2>
            <div class="generator-info" _DcLsgNGi="liveGeneratorInfo"></div>
          </div>
          <div _DcLsgNGi="_RivfiXcL" class="_BNYcfafk-actions-_fcTvggII" _jcusQaLw="display: none;">
             <div class="_BNYcfafk-api-buttons">
                <button _DcLsgNGi="copyIpApiBtn" class="btn">复制 IP API</button>
                <button _DcLsgNGi="copySubscriptionBtn" class="btn">复制订阅</button>
             </div>
          </div>
          <div class="table-responsive">
            <table _DcLsgNGi="resultsTable">
              <thead><tr><th _DcLsgNGi="tableHeader1El"></th><th _DcLsgNGi="tableHeader2El"></th><th _DcLsgNGi="tableHeader3El"></th><th _DcLsgNGi="tableHeader4El"></th><th _DcLsgNGi="tableHeader5El"></th><th _DcLsgNGi="tableHeader6El"></th><th _DcLsgNGi="tableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
        <div class="card cached-section" _DcLsgNGi="_YtVPQALM" _jcusQaLw="display:none;">
          <div class="section-_pkdgfJhP"><h2 _DcLsgNGi="cachedTitleEl"></h2><div class="generator-info" _DcLsgNGi="cachedGeneratorInfo"></div></div>
          <div class="table-responsive">
            <table _DcLsgNGi="cachedResultsTable">
              <thead><tr><th _DcLsgNGi="cachedTableHeader1El"></th><th _DcLsgNGi="cachedTableHeader2El"></th><th _DcLsgNGi="cachedTableHeader3El"></th><th _DcLsgNGi="cachedTableHeader4El"></th><th _DcLsgNGi="cachedTableHeader5El"></th><th _DcLsgNGi="cachedTableHeader6El"></th><th _DcLsgNGi="cachedTableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
    </div>
  </div>
  <div _DcLsgNGi="notificationTooltip" class="tooltip-notification"></div>
  <div _DcLsgNGi="_hpscAYvf">
    <div class="modal-_SsvdCJRS">
      <h3>修改参数</h3>
      <div _jcusQaLw="display: flex; border-bottom: 1px solid var(--border-_txyQCZmW); margin-bottom: 1.5rem;">
          <button class="tab-button active" onclick="_BJmAKAck(event, 'general-_uoEAdaNx')">通用设置</button>
          <button class="tab-button" onclick="_BJmAKAck(event, '_JUSjHdfT-_uoEAdaNx')">链接设置</button>
          <button class="tab-button" onclick="_BJmAKAck(event, 'fine-grained-_uoEAdaNx')">IP源设置</button>
          <button class="tab-button" onclick="_BJmAKAck(event, 'advanced-_uoEAdaNx')">高级设置</button>
      </div>
      <div _DcLsgNGi="general-_uoEAdaNx" class="tab-_SsvdCJRS" _jcusQaLw="display: block;">
        <div class="form-grid">
            <div class="form-grid-label"><label for="themeSelect">页面主题</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="选择页面的整体外观风格。">?</span></div>
            <div class="form-grid-control">
                <_SEwFexun _DcLsgNGi="themeSelect">
                    <_BOSkrYXL _LYHZofZQ="theme-aurora-glass">极光-玻璃质感</_BOSkrYXL>
                    <_BOSkrYXL _LYHZofZQ="theme-particles-glass">粒子-玻璃质感</_BOSkrYXL>
                    <_BOSkrYXL _LYHZofZQ="theme-modern-glass">现代-玻璃质感</_BOSkrYXL>
                    <_BOSkrYXL _LYHZofZQ="theme-cyberpunk-glass">赛博朋克-玻璃质感</_BOSkrYXL>
                    <_BOSkrYXL _LYHZofZQ="theme-dark-particles">暗色-粒子背景</_BOSkrYXL>
                    <_BOSkrYXL _LYHZofZQ="theme-dark-bing">暗色-必应壁纸</_BOSkrYXL>
                    <_BOSkrYXL _LYHZofZQ="theme-light">亮色-简约</_BOSkrYXL>
                    <_BOSkrYXL _LYHZofZQ="theme-light-bing">亮色-必应壁纸</_BOSkrYXL>
                    <_BOSkrYXL _LYHZofZQ="theme-marble-light">简约大理石-亮色</_BOSkrYXL>
                    <_BOSkrYXL _LYHZofZQ="theme-matrix">矩阵-代码雨</_BOSkrYXL>
                </_SEwFexun>
            </div>
            <div class="form-grid-label"><label>主题颜色</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="自定义主题的主要颜色和动态背景效果的颜色。">?</span></div>
            <div class="form-grid-control">
                <label for="primaryColorInput">强调色</label><input _gnrLqmGR="_txyQCZmW" _DcLsgNGi="primaryColorInput">
                <span _jcusQaLw="_mczmtATk: 20px;"></span>
                <label for="particleColorInput">背景/粒子色</label><input _gnrLqmGR="_txyQCZmW" _DcLsgNGi="particleColorInput">
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _jcusQaLw="align-self: start;"><label>页面文本与颜色</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="自定义页面上各个主要元素的显示文本和颜色。">?</span></div>
            <div class="form-grid-control" _jcusQaLw="flex-direction: column; align-items: stretch; gap: 8px;">
                <div class="_QPcUWqjs-_txyQCZmW-grid"><input _gnrLqmGR="_txyQCZmW" _DcLsgNGi="colorInput_title"><textarea _DcLsgNGi="textInput_title" _scgdWzRP="1" _xIqbWBRa="页面主标题"></textarea></div>
                <div class="_QPcUWqjs-_txyQCZmW-grid"><input _gnrLqmGR="_txyQCZmW" _DcLsgNGi="colorInput_loginButton"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="textInput_loginButton" _xIqbWBRa="登录按钮文本"></div>
                <div class="_QPcUWqjs-_txyQCZmW-grid"><input _gnrLqmGR="_txyQCZmW" _DcLsgNGi="colorInput_appDownloadTitle"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="textInput_appDownloadTitle" _xIqbWBRa="APP下载标题"></div>
                <div class="_QPcUWqjs-_txyQCZmW-grid"><input _gnrLqmGR="_txyQCZmW" _DcLsgNGi="colorInput_liveTitle"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="textInput_liveTitle" _xIqbWBRa="本次结果标题"></div>
                <div class="_QPcUWqjs-_txyQCZmW-grid"><input _gnrLqmGR="_txyQCZmW" _DcLsgNGi="colorInput_cachedTitle"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="textInput_cachedTitle" _xIqbWBRa="上次结果标题"></div>
                <div class="_QPcUWqjs-_txyQCZmW-grid"><input _gnrLqmGR="_txyQCZmW" _DcLsgNGi="colorInput_tableHeader"><input _gnrLqmGR="_QPcUWqjs" _LYHZofZQ="表格头部文本颜色" readonly _jcusQaLw="background: transparent; border: none;"></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _jcusQaLw="align-self: start;"><label>公告栏设置</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="设置在页面显示的公告内容和方式。">?</span></div>
            <div class="form-grid-control" _jcusQaLw="flex-direction: column; align-items: stretch; gap: 8px;">
                 <textarea _DcLsgNGi="announcementText" _xIqbWBRa="在此输入公告内容" _scgdWzRP="3"></textarea>
                 <div _jcusQaLw="display: flex; justify-_SsvdCJRS: space-around; align-items: center; gap: 1rem; flex-wrap: wrap;">
                    <label _jcusQaLw="display: flex; align-items: center; gap: 5px;"><input _gnrLqmGR="checkbox" _DcLsgNGi="enableMarquee"> 顶部走马灯</label>
                    <label _jcusQaLw="display: flex; align-items: center; gap: 5px;"><input _gnrLqmGR="checkbox" _DcLsgNGi="enablePopup"> 右上角弹窗</label>
                    <div _DcLsgNGi="popupDurationContainer" _jcusQaLw="display: none; align-items: center; gap: 5px;">
                        <label for="popupDuration">停留</label><input _gnrLqmGR="number" _DcLsgNGi="popupDuration" _jcusQaLw="_mczmtATk: 60px;"><span>秒</span>
                    </div>
                 </div>
            </div>
        </div>
      </div>
      <div _DcLsgNGi="_JUSjHdfT-_uoEAdaNx" class="tab-_SsvdCJRS">
        <div class="form-grid">
          <div class="form-grid-label"><label for="converterServiceUrlInput">Sublink 服务地址</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="您部署的Sublink服务的域名,例如 https://sub.example.com">?</span></div>
          <div class="form-grid-control"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="converterServiceUrlInput" _xIqbWBRa="https://sub.example.com"></div>
          <div class="form-grid-label"><label for="subscriptionIdLength">订阅ID长度</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="生成订阅链接时使用的随机ID长度(2-128位)">?</span></div>
          <div class="form-grid-control"><input _gnrLqmGR="number" _DcLsgNGi="subscriptionIdLength" min="2" max="128"></div>
          <div class="form-grid-label" _jcusQaLw="align-self: start;"><label for="subscriptionIdCharset">ID使用字符集</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="生成ID时从这些字符中随机选择。请使用URL安全的字符。">?</span></div>
          <div class="form-grid-control"><textarea _DcLsgNGi="subscriptionIdCharset" _scgdWzRP="3"></textarea></div>
          <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
          <div class="form-grid-label"><label for="enableItemLinkCheckbox">启用"复制节点链接"按钮</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="为结果IP添加复制配置链接的按钮。">?</span></div>
          <div class="form-grid-control" _jcusQaLw="justify-_SsvdCJRS: flex-start;"><input _gnrLqmGR="checkbox" _DcLsgNGi="enableItemLinkCheckbox"></div>
        </div>
        <div _DcLsgNGi="itemLinkConfigGroup" _jcusQaLw="display:none; margin-_sGQIyBMq: 1rem;">
          <div class="form-grid">
              <div class="form-grid-label" _jcusQaLw="align-self: start;"><label for="itemLinkTemplateInput">分享链接模板</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="定义分享链接格式。可用占位符: {_SYaXvwUD}, {_ZoXLSmoM}, {_lVEfmLNt}, {rank}, {_WdCxAvPT}, {_JnJDyPjM}, {_rlhanaoU}, {_VNxaRuQa}, {_bJEcHKTk}。">?</span></div>
              <div class="form-grid-control"><textarea _DcLsgNGi="itemLinkTemplateInput" _scgdWzRP="4"></textarea></div>
              <div class="form-grid-label"><label for="parameterSelectionMode">参数使用模式</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="当定义了多组参数时,如何为每个IP分配。">?</span></div>
              <div class="form-grid-control"><_SEwFexun _DcLsgNGi="parameterSelectionMode"></_SEwFexun></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-control-full"><div _DcLsgNGi="parameter-sets-_fcTvggII"></div><button _gnrLqmGR="button" _DcLsgNGi="add-parameter-_HhXBufsA-btn" class="btn btn-outline" _jcusQaLw="margin-_sGQIyBMq: 10px;">添加参数组</button></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-label" _jcusQaLw="align-self: start;"><label>其他自定义占位符</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="创建您自己的占位符,并在模板中使用。">?</span></div>
              <div class="form-grid-control"><div _DcLsgNGi="custom-fields-_fcTvggII" _jcusQaLw="_mczmtATk: 100%;"></div></div>
              <div class="form-grid-label"></div><div class="form-grid-control" _jcusQaLw="justify-_SsvdCJRS: flex-start;"><button _gnrLqmGR="button" _DcLsgNGi="add-custom-field-btn" class="btn btn-outline">添加自定义字段</button></div>
          </div>
        </div>
      </div>
      <div _DcLsgNGi="fine-grained-_uoEAdaNx" class="tab-_SsvdCJRS">
          <div class="form-grid-label" _jcusQaLw="grid-column: 1 / -1; justify-self: start;"><label>地区与IP源</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="定义不同地区的IP来源。启用并设置百分比后,它们将根据高级设置中“IP源设置”的总比例进行分配。">?</span></div>
          <div class="form-grid-control-full" _jcusQaLw="display: flex; gap: 1rem; margin-bottom: 1rem; justify-_SsvdCJRS: flex-start;">
              <label><input _gnrLqmGR="checkbox" _DcLsgNGi="enableAllSourcesCheckbox"> 一键启用所有源</label>
              <label><input _gnrLqmGR="checkbox" _DcLsgNGi="disableAllSourcesCheckbox"> 一键取消所有源</label>
          </div>
          <div class="form-grid-control-full"><div _DcLsgNGi="fine-grained-sources-_fcTvggII"></div><button _gnrLqmGR="button" _DcLsgNGi="add-fine-grained-_bLrZkTdW-btn" class="btn btn-outline" _jcusQaLw="margin-_sGQIyBMq: 10px;">添加地区</button></div>
      </div>
      <div _DcLsgNGi="advanced-_uoEAdaNx" class="tab-_SsvdCJRS">
        <div class="form-grid">
            <div class="form-grid-label"><label for="useResolvedDomainsCheckbox">域名解析IP</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="此处填写优选域名,即可使用优选域名的IP作为筛选源,作为不死IP备用">?</span></div>
            <div class="form-grid-control"><input _gnrLqmGR="checkbox" _DcLsgNGi="useResolvedDomainsCheckbox"></div>
            <div class="form-grid-control-full" _DcLsgNGi="resolvedDomainsGroup" _jcusQaLw="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _DcLsgNGi="resolvedDomainsInput" _xIqbWBRa="留空则使用内置默认域名" _scgdWzRP="3"></textarea></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableCustomNodesCheckbox">启用自定义节点</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="启用后,将在订阅列表顶部添加您在此处指定的节点地址,例:1.1.1.1#443@名称  、 或:1.1.1.1@名称 (无端口则默认443)">?</span></div>
            <div class="form-grid-control"><input _gnrLqmGR="checkbox" _DcLsgNGi="enableCustomNodesCheckbox"></div>
            <div class="form-grid-control-full" _DcLsgNGi="customNodesGroup" _jcusQaLw="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _DcLsgNGi="customNodesInput" _xIqbWBRa="一行一个地址,支持域名、IPv4、IPv6。" _scgdWzRP="3"></textarea></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="sampleSizeInput">测试IP总数</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="从所有启用的IP源中随机抽取的IP总数量。">?</span></div>
            <div class="form-grid-control"><input _gnrLqmGR="number" _DcLsgNGi="sampleSizeInput"></div>
            <div class="form-grid-label"><label for="topNInput">最终获取IP数量</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="测试完成后,在结果列表中显示的延迟最低的IP数量。">?</span></div>
            <div class="form-grid-control"><input _gnrLqmGR="number" _DcLsgNGi="topNInput"></div>
            <div class="form-grid-label" _jcusQaLw="display: none;"><label>延迟随机数范围 (ms)</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="为每个测试结果的延迟增加一个在此范围内的随机值。">?</span></div>
            <div class="form-grid-control" _jcusQaLw="display: none;"><input _gnrLqmGR="number" _DcLsgNGi="latencyRangeMinInput" _xIqbWBRa="最小"><span>-</span><input _gnrLqmGR="number" _DcLsgNGi="latencyRangeMaxInput" _xIqbWBRa="最大"></div>
            <div class="form-grid-label"><label for="enableIspFilterCheckbox">仅保留Cloudflare IP</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="启用后,最终结果将只显示归属于Cloudflare的IP地址。">?</span></div>
            <div class="form-grid-control" _jcusQaLw="justify-_SsvdCJRS: flex-start;"><input _gnrLqmGR="checkbox" _DcLsgNGi="enableIspFilterCheckbox"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="geoLocationRetriesInput">归属地查询失败复查</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="当部分IP归属地查询失败时,额外尝试查询的次数。">?</span></div>
            <div class="form-grid-control">
                <input _gnrLqmGR="number" _DcLsgNGi="geoLocationRetriesInput" _jcusQaLw="_mczmtATk: 80px;"> <span>次</span>
                <div _jcusQaLw="display: flex; align-items: center; gap: 5px; margin-_BuRkXIGj: 20px;">
                    <input _gnrLqmGR="checkbox" _DcLsgNGi="filterUnknownGeoCheckbox">
                    <label for="filterUnknownGeoCheckbox">过滤未知归属地IP</label>
                </div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="universalFallbackAddressInput">备用地址 (上游)</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="所有WebSocket连接失败时使用的全局回退目标地址,格式为 '_rlhanaoU:_ZoXLSmoM' 或 '_rlhanaoU'。">?</span></div>
            <div class="form-grid-control"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="universalFallbackAddressInput"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableWebsocketStreamerCheckbox">启用 Websocket 转发</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="启用后, 将禁用自身的代理功能, 所有WebSocket请求将转发到指定地址。HTTP请求不受影响。节点生成规则也将改变。">?</span></div>
            <div class="form-grid-control" _jcusQaLw="justify-_SsvdCJRS: flex-start;"><input _gnrLqmGR="checkbox" _DcLsgNGi="enableWebsocketStreamerCheckbox"></div>
            <div class="form-grid-control-full" _DcLsgNGi="websocketStreamerGroup" _jcusQaLw="display:none;">
                <div class="form-grid">
                    <div class="form-grid-label"><label for="websocketStreamerUrlInput">转发目标地址</label></div>
                    <div class="form-grid-control"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="websocketStreamerUrlInput"></div>
                </div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableStreamerCheckbox">启用内置内容加速</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="通过Worker加速部分外部资源。">?</span></div>
            <div class="form-grid-control" _jcusQaLw="justify-_SsvdCJRS: flex-start;"><input _gnrLqmGR="checkbox" _DcLsgNGi="enableStreamerCheckbox"></div>
            <div class="form-grid-label"><label for="enableApiCheckbox">启用 API</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="启用 /_SYaXvwUD 和 /api/endpoints 接口。">?</span></div>
            <div class="form-grid-control" _jcusQaLw="justify-_SsvdCJRS: flex-start;"><input _gnrLqmGR="checkbox" _DcLsgNGi="enableApiCheckbox"></div>
            <div class="form-grid-control-full" _DcLsgNGi="apiConfigGroup" _jcusQaLw="display:none;">
                <div class="form-grid"><div class="form-grid-label"><label for="apiMessageInput">API关闭时提示</label></div><div class="form-grid-control"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="apiMessageInput"></div></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableCustomSubPathCheckbox">启用自定义订阅路径</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="创建一个固定路径,始终指向最新的优选结果。路径中请勿使用 / 等特殊字符。">?</span></div>
            <div class="form-grid-control" _jcusQaLw="justify-_SsvdCJRS: flex-start;"><input _gnrLqmGR="checkbox" _DcLsgNGi="enableCustomSubPathCheckbox"></div>
            <div class="form-grid-control-full" _DcLsgNGi="customSubPathGroup" _jcusQaLw="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="customSubPathInput">设置路径</label></div><div class="form-grid-control"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="customSubPathInput" _xIqbWBRa="例如: latest"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableVisitorPasswordCheckbox">启用访客密码</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="要求访客在开始测速前输入密码。">?</span></div>
            <div class="form-grid-control" _jcusQaLw="justify-_SsvdCJRS: flex-start;"><input _gnrLqmGR="checkbox" _DcLsgNGi="enableVisitorPasswordCheckbox"></div>
            <div class="form-grid-control-full" _DcLsgNGi="visitorPasswordGroup" _jcusQaLw="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="visitorPasswordInput">设置访客密码</label></div><div class="form-grid-control"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="visitorPasswordInput"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _jcusQaLw="align-self: start;"><label>Telegram 通知</label><span class="tooltip-_ezqnMUbR" _odczUsYu-tooltip="配置后,当有访客访问页面时,您将收到通知。">?</span></div>
            <div class="form-grid-control" _jcusQaLw="flex-direction: column; align-items: stretch; gap: 8px;"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="botTokenInput" _xIqbWBRa="Telegram Bot Token"><input _gnrLqmGR="_QPcUWqjs" _DcLsgNGi="chatIdInput" _xIqbWBRa="Telegram Chat ID"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _jcusQaLw="align-self: start;"><label>修改管理员密码</label></div>
            <div class="form-grid-control" _jcusQaLw="flex-direction: column; align-items: stretch; gap: 8px;"><input _gnrLqmGR="_hbQBVofZ" _DcLsgNGi="oldPasswordInput" _xIqbWBRa="旧密码"><input _gnrLqmGR="_hbQBVofZ" _DcLsgNGi="newPasswordInput" _xIqbWBRa="新密码 (至少6位)"><button _DcLsgNGi="changePasswordBtn" class="btn" _jcusQaLw="align-self: flex-start; margin-_BuRkXIGj: 0;">确认修改</button></div>
        </div>
      </div>
      <div class="modal-buttons"><button _DcLsgNGi="closeModalBtn" class="btn btn-outline">关闭</button><button _DcLsgNGi="saveParamsBtn" class="btn">保存并刷新</button></div>
    </div>
  </div>
  <div _DcLsgNGi="_JhJnuFbH">
      <div class="_ksAwcHyw-modal-_SsvdCJRS">
          <div class="_ksAwcHyw-modal-_pkdgfJhP"><h3 _DcLsgNGi="appModalTitle"></h3><button class="modal-close-btn">×</button></div>
          <div class="_ksAwcHyw-modal-_GPVckCXD" _DcLsgNGi="appModalBody"></div>
      </div>
  </div>
  <div _DcLsgNGi="_zjETDBuF">
      <div class="modal-_SsvdCJRS">
          <h3>复制订阅链接</h3>
          <div class="button-grid">
              <div class="btn-group"><button class="btn sub-btn" _odczUsYu-sub-_gnrLqmGR="coreEngine">Xray</button><button class="btn _pflbzbMs-btn" _odczUsYu-sub-_gnrLqmGR="coreEngine">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _odczUsYu-sub-_gnrLqmGR="coreProfile">Sing-Box</button><button class="btn _pflbzbMs-btn" _odczUsYu-sub-_gnrLqmGR="coreProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _odczUsYu-sub-_gnrLqmGR="configProfile">Clash</button><button class="btn _pflbzbMs-btn" _odczUsYu-sub-_gnrLqmGR="configProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _odczUsYu-sub-_gnrLqmGR="policyProfile">Surge</button><button class="btn _pflbzbMs-btn" _odczUsYu-sub-_gnrLqmGR="policyProfile">Q</button></div>
          </div>
          <div class="modal-buttons" _jcusQaLw="justify-_SsvdCJRS: center;"><button class="btn btn-outline" _DcLsgNGi="closeSubModalBtn">关闭</button></div>
      </div>
  </div>
  <div _DcLsgNGi="_CZSVKxtl">
      <div class="modal-_SsvdCJRS">
          <img _DcLsgNGi="qrCodeImg" src="" alt="QR Code">
      </div>
  </div>
<script>
    const _GdxOlvXs = {
        isValid: (_SYaXvwUD) => _GdxOlvXs.isIPv4(_SYaXvwUD) || _GdxOlvXs.isIPv6(_SYaXvwUD),
        isIPv4: (_SYaXvwUD) => {
            if (typeof _SYaXvwUD !== 'string') return false;
            const _RQfNgTIz = _SYaXvwUD.split('.');
            if (_RQfNgTIz._ZGDZcNxG !== 4) return false;
            return _RQfNgTIz.every(_UmwfftGd => {
                const _VthylwOD = parseInt(_UmwfftGd, 10);
                return !isNaN(_VthylwOD) && _VthylwOD >= 0 && _VthylwOD <= 255 && String(_VthylwOD) === _UmwfftGd;
            });
        },
        isIPv6: (_SYaXvwUD) => {
            if (typeof _SYaXvwUD !== 'string') return false;
            return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/_lciQxfJF.test(_SYaXvwUD);
        },
        toLong4: (_SYaXvwUD) => _SYaXvwUD.split('.').reduce((acc, octet, _lciQxfJF) => acc + (parseInt(octet) << (8*(3-_lciQxfJF))),0)>>>0,
        fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
        toBigInt6: (_SYaXvwUD) => {
            try {
                const _lYJcYkGn = _SYaXvwUD.split('/')[0];
                const _RQfNgTIz = _lYJcYkGn.split('::');
                if (_RQfNgTIz._ZGDZcNxG > 2) return 0n;
                let _kKrwmlAQ = [];
                if (_RQfNgTIz[0]) {
                    _kKrwmlAQ = _RQfNgTIz[0].split(':');
                }
                let _vinHCBBr = [];
                if (_RQfNgTIz._ZGDZcNxG > 1 && _RQfNgTIz[1]) {
                    _vinHCBBr = _RQfNgTIz[1].split(':');
                }
                if (_kKrwmlAQ._ZGDZcNxG + _vinHCBBr._ZGDZcNxG > 8) return 0n;
                const _dxxCfxJF = 8 - (_kKrwmlAQ._ZGDZcNxG + _vinHCBBr._ZGDZcNxG);
                const _HnVOfKdq = [
                    ..._kKrwmlAQ,
                    ...Array(_dxxCfxJF).fill('0'),
                    ..._vinHCBBr
                ].map(_UmwfftGd => _UmwfftGd || '0');
                while(_HnVOfKdq._ZGDZcNxG < 8) {
                    _HnVOfKdq.push('0');
                }
                let _dYiVvVpP = 0n;
                for (const _UmwfftGd of _HnVOfKdq) {
                    if (_UmwfftGd._ZGDZcNxG > 4) return 0n;
                    const _LYHZofZQ = BigInt('0x' + _UmwfftGd);
                    _dYiVvVpP = (_dYiVvVpP << 16n) | _LYHZofZQ;
                }
                return _dYiVvVpP;
            } catch(_QQyugJdA) {
                return 0n;
            }
        },
        fromBigInt6: (_dYiVvVpP) => {
            if (typeof _dYiVvVpP !== '_dYiVvVpP' || _dYiVvVpP < 0n) return null;
            const _RQfNgTIz = [];
            for (let _lciQxfJF = 0; _lciQxfJF < 8; _lciQxfJF++) {
                _RQfNgTIz.unshift((_dYiVvVpP & 0xFFFFn).toString(16));
                _dYiVvVpP >>= 16n;
            }
            let _FbKnTlpv = { start: -1, _edOUVKYR: 0 };
            let _tnYvRFZG = { start: -1, _edOUVKYR: 0 };
            for (let _lciQxfJF = 0; _lciQxfJF < 8; _lciQxfJF++) {
                if (_RQfNgTIz[_lciQxfJF] === '0') {
                    if (_tnYvRFZG.start === -1) _tnYvRFZG.start = _lciQxfJF;
                    _tnYvRFZG._edOUVKYR++;
                } else {
                    if (_tnYvRFZG._edOUVKYR > _FbKnTlpv._edOUVKYR) _FbKnTlpv = { ..._tnYvRFZG };
                    _tnYvRFZG = { start: -1, _edOUVKYR: 0 };
                }
            }
            if (_tnYvRFZG._edOUVKYR > _FbKnTlpv._edOUVKYR) _FbKnTlpv = { ..._tnYvRFZG };
            if (_FbKnTlpv._edOUVKYR > 1) {
                _RQfNgTIz.splice(_FbKnTlpv.start, _FbKnTlpv._edOUVKYR, '');
                if (_FbKnTlpv.start === 0) _RQfNgTIz.unshift('');
                if (_FbKnTlpv.start + _FbKnTlpv._edOUVKYR === 8) _RQfNgTIz.push('');
            }
            return _RQfNgTIz.join(':');
        },
        cidrToRange: (cidr, _TsJebgAC = 1) => {
            try {
                const [range, bitsStr] = cidr.split('/');
                const _jCjxpFZw = parseInt(bitsStr, 10);
                const _jyLPkfZI = new Set();
                if (_GdxOlvXs.isIPv4(range)) {
                    if (isNaN(_jCjxpFZw) || _jCjxpFZw < 8 || _jCjxpFZw > 32) return [];
                    if (_jCjxpFZw === 32) return [range];
                    const _ioiTMKrj = _GdxOlvXs.toLong4(range);
                    const _qpZmjfyQ = (0xFFFFFFFF << (32 - _jCjxpFZw)) >>> 0;
                    const _sObxeFNm = _ioiTMKrj & _qpZmjfyQ;
                    const _OSEgLULz = 1 << (32 - _jCjxpFZw);
                    if (_OSEgLULz <= 2) return [];
                    const _yoOMoMQu = Math.min(_TsJebgAC, _OSEgLULz - 2);
                    let _aBrlPpcT = 0;
                    while (_jyLPkfZI.size < _yoOMoMQu && _aBrlPpcT < _yoOMoMQu * 5) {
                        const _ItZGmnAJ = Math.floor(Math.random() * (_OSEgLULz - 2)) + 1;
                        _jyLPkfZI.add(_GdxOlvXs.fromLong4((_sObxeFNm + _ItZGmnAJ) >>> 0));
                        _aBrlPpcT++;
                    }
                    return Array.from(_jyLPkfZI);
                } else if (_GdxOlvXs.isIPv6(range)) {
                    if (isNaN(_jCjxpFZw) || _jCjxpFZw < 16 || _jCjxpFZw > 128) return [];
                    if (_jCjxpFZw === 128) return [range];
                    const _dBpibuMF = _GdxOlvXs.toBigInt6(range);
                    const _qpZmjfyQ = (2n ** BigInt(128 - _jCjxpFZw) - 1n);
                    const _sObxeFNm = _dBpibuMF & ~_qpZmjfyQ;
                    const _weTYKOtE = 2n ** BigInt(128 - _jCjxpFZw);
                    if (_weTYKOtE <= 2n) return [];
                    let _aBrlPpcT = 0;
                    while (_jyLPkfZI.size < _TsJebgAC && _aBrlPpcT < _TsJebgAC * 5) {
                        const _Bswrezuw = new Uint8Array(16);
                        (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_Bswrezuw);
                        let _OHthUHoA = 0n;
                        for (const _OiiIYvnl of _Bswrezuw) {
                            _OHthUHoA = (_OHthUHoA << 8n) | BigInt(_OiiIYvnl);
                        }
                        const _ItZGmnAJ = _OHthUHoA % (_weTYKOtE - 2n) + 1n;
                        _jyLPkfZI.add(_GdxOlvXs.fromBigInt6(_sObxeFNm + _ItZGmnAJ));
                        _aBrlPpcT++;
                    }
                    return Array.from(_jyLPkfZI);
                }
                return [];
            } catch(_QQyugJdA) {
                console.error(`CIDR to range failed for ${cidr}:`, _QQyugJdA);
                return [];
            }
        }
    };
    function _DhfHGaLL(_dAKlgFwo, _EOZWCAFD) {
        const _JtydJCAS = {};
        const _OiYnzKXQ = Object._OiYnzKXQ(_EOZWCAFD);
        const _RQfNgTIz = _OiYnzKXQ.map(_zjDlvhQA => {
            const _stRYcQsO = _dAKlgFwo * (_EOZWCAFD[_zjDlvhQA] / 100);
            return { _zjDlvhQA, _TsJebgAC: Math.floor(_stRYcQsO), remainder: _stRYcQsO - Math.floor(_stRYcQsO) };
        });
        let _EoNjtmZY = _RQfNgTIz.reduce((acc, _UmwfftGd) => acc + _UmwfftGd._TsJebgAC, 0);
        _RQfNgTIz.sort((a, b) => b.remainder - a.remainder);
        let _jqhDDzaY = _dAKlgFwo - _EoNjtmZY;
        for (let _lciQxfJF = 0; _lciQxfJF < _jqhDDzaY; _lciQxfJF++) {
            _RQfNgTIz[_lciQxfJF % _RQfNgTIz._ZGDZcNxG]._TsJebgAC++;
        }
        for (const _UmwfftGd of _RQfNgTIz) {
            _JtydJCAS[_UmwfftGd._zjDlvhQA] = _UmwfftGd._TsJebgAC;
        }
        return _JtydJCAS;
    }
    const _eZYvVIVX = __PAGE_DATA_JSON__;
    const _xxuYDtkf = _eZYvVIVX._OXTUkWkN;
    const _yFNzKOSo = _eZYvVIVX.status;
    const _NFbMwRQB = __ALL_CF_CIDR_LIST_JSON__;
    const _nZmXWPxz = __BALANCED_CF_CIDR_LIST_JSON__;
    const _ooEycCok = __DEFAULT_DOMAINS_LIST_JSON__;
    const _PgMQxtOI = __COUNTRY_MAP_JSON__;
    const _RLhvrUux = _PgMQxtOI;
    const _PYifUrij = 2500;
    const _iqpLASuv = navigator.hardwareConcurrency ? Math.min(16, navigator.hardwareConcurrency * 2) : 8;
    const _DnmLZEba = document.getElementById('_DnmLZEba');
    const _aXssUZXG = document.getElementById('_aXssUZXG');
    const _BQGjIcEk = document.getElementById('status');
    const _jXgBnlHm = document.getElementById('_jXgBnlHm');
    const _DOVOMdSX = document.getElementById('resultsTable').querySelector('tbody');
    const _YtVPQALM = document.getElementById('_YtVPQALM');
    const _KcfzokjD = document.getElementById('cachedResultsTable').querySelector('tbody');
    const _zukamPkf = document.getElementById('notificationTooltip');
    const _NxLMPkST = document.getElementById('_NxLMPkST');
    const _hpscAYvf = document.getElementById('_hpscAYvf');
    const _JhJnuFbH = document.getElementById('_JhJnuFbH');
    const _zjETDBuF = document.getElementById('_zjETDBuF');
    const _CZSVKxtl = document.getElementById('_CZSVKxtl');
    const _pvRKyRHj = document.getElementById('_pvRKyRHj');
    const _RivfiXcL = document.getElementById('_RivfiXcL');
    let _ZTrRBQRa = null;
    let _snNJNbGk = null;
    let _QnSRUQAf = [];
    let _bWbBKKNN = false;
    let _VUmDLUqN = null;
    function _rKppGbxh(_MFiVFTtm, _mfFVdADA) {
        const _bWWXFWou=parseInt(_MFiVFTtm.slice(1),16),t=_mfFVdADA<0?0:255,p=_mfFVdADA<0?_mfFVdADA*-1:_mfFVdADA,R=_bWWXFWou>>16,G=_bWWXFWou>>8&0x00FF,B=_bWWXFWou&0x0000FF;
        const _PFEcrONI = Math.round((t-R)*p)+R;
        const _QetVeBfi = Math.round((t-G)*p)+G;
        const _yGgzNyTR = Math.round((t-B)*p)+B;
        return `rgb(${_PFEcrONI.toString()}, ${_QetVeBfi.toString()}, ${_yGgzNyTR.toString()})`;
    }
    function _QlRPDJDP(_uoEAdaNx) {
        const _KlIboJVh = _kxrafZxd(_uoEAdaNx.primaryColor);
        if(_KlIboJVh) {
            document.documentElement._jcusQaLw.setProperty('--primary-_txyQCZmW-rgb', `${_KlIboJVh.r},${_KlIboJVh.g},${_KlIboJVh.b}`);
        }
        document.documentElement._jcusQaLw.setProperty('--primary-_txyQCZmW', _uoEAdaNx.primaryColor);
        document.documentElement._jcusQaLw.setProperty('--primary-hover', _rKppGbxh(_uoEAdaNx.primaryColor, -0.1));
        document.documentElement._jcusQaLw.setProperty('--primary-gradient-start', _rKppGbxh(_uoEAdaNx.primaryColor, 0.1));
        document.documentElement._jcusQaLw.setProperty('--primary-gradient-end', _rKppGbxh(_uoEAdaNx.primaryColor, -0.1));
        document.getElementById('pageTitle').innerText = _uoEAdaNx.texts.title;
        document.title = _uoEAdaNx.texts.title;
        _NxLMPkST.innerText = _ZTrRBQRa ? _uoEAdaNx.texts.loginButtonSuccess : _uoEAdaNx.texts.loginButton;
        _NxLMPkST._jcusQaLw._txyQCZmW = _uoEAdaNx.colors.loginButton;
        document.getElementById('appDownloadTitleEl').innerText = _uoEAdaNx.texts.appDownloadTitle;
        document.getElementById('liveTitleEl').innerText = _uoEAdaNx.texts.liveTitle;
        document.getElementById('liveTitleEl')._jcusQaLw._txyQCZmW = _uoEAdaNx.colors.liveTitle;
        document.getElementById('cachedTitleEl').innerText = _uoEAdaNx.texts.cachedTitle;
        document.getElementById('cachedTitleEl')._jcusQaLw._txyQCZmW = _uoEAdaNx.colors.cachedTitle;
        const _VVXSjEXI = ['tableHeader1El', 'tableHeader2El', 'tableHeader3El', 'tableHeader4El', 'tableHeader5El', 'tableHeader6El', 'tableHeader7El'];
        _VVXSjEXI.forEach((_DcLsgNGi, _wwlzKXJs) => {
            const _NIxsGCnU = document.getElementById(_DcLsgNGi);
            if (_NIxsGCnU) _NIxsGCnU.innerText = _uoEAdaNx.texts[`tableHeader${_wwlzKXJs + 1}`] || '';
        });
        const _svIoCsay = ['cachedTableHeader1El', 'cachedTableHeader2El', 'cachedTableHeader3El', 'cachedTableHeader4El', 'cachedTableHeader5El', 'cachedTableHeader6El', 'cachedTableHeader7El'];
        _svIoCsay.forEach((_DcLsgNGi, _wwlzKXJs) => {
             const _NIxsGCnU = document.getElementById(_DcLsgNGi);
             if (_NIxsGCnU) _NIxsGCnU.innerText = _xxuYDtkf.texts[`tableHeader${_wwlzKXJs + 1}`] || '';
        });
        document.querySelectorAll('th').forEach(th => th._jcusQaLw._txyQCZmW = _uoEAdaNx.colors.tableHeader);
        document._GPVckCXD.className = '';
        document._GPVckCXD.classList.add(_uoEAdaNx.theme);
        if (['theme-particles-glass', 'theme-modern-glass', 'theme-aurora-glass', 'theme-cyberpunk-glass'].includes(_uoEAdaNx.theme)) {
            document._GPVckCXD.classList.add('glassy-components');
        }
        document._GPVckCXD._jcusQaLw.backgroundImage = '';
        _NUvWgHEi();
        if (_uoEAdaNx.theme.includes('particles') || _uoEAdaNx.theme.includes('glass')) {
            _tHvRDJjl(_uoEAdaNx.particleColor);
        } else if (_uoEAdaNx.theme.includes('bing')) {
            document._GPVckCXD._jcusQaLw.backgroundImage = '_XEkiYzCY(/bing-wallpaper)';
        }
    }
    function _BEEsUZXu() {
        _ZTrRBQRa = null;
        if(_snNJNbGk) clearTimeout(_snNJNbGk);
        _QlRPDJDP(_xxuYDtkf);
        _HrPpHFlY("登录已超时,请重新登录。", "warning");
    }
    async function _dtmbpyRZ() {
        if (_ZTrRBQRa) {
            _hzVcXdyM();
            return;
        }
        const _zwfrtXWR = prompt('请输入管理员密码:');
        if (!_zwfrtXWR) return;
        try {
            const _RemQxrEb = await fetch('/api/verify-_hbQBVofZ', {
                method: 'POST',
                _VVXSjEXI: { 'Content-Type': 'application/json' },
                _GPVckCXD: JSON.stringify({ _hbQBVofZ: _zwfrtXWR })
            });
            const _QopZTPyD = await _RemQxrEb.json();
            if (_QopZTPyD.success) {
                _ZTrRBQRa = _zwfrtXWR;
                _HrPpHFlY("登录成功!有效期5分钟。", "success");
                if (_snNJNbGk) clearTimeout(_snNJNbGk);
                _snNJNbGk = setTimeout(_BEEsUZXu, 5 * 60 * 1000);
                _QlRPDJDP(_xxuYDtkf);
                _hzVcXdyM();
            } else {
                throw new Error(_QopZTPyD._ZXeikViR || '密码验证失败');
            }
        } catch (_QQyugJdA) {
            _HrPpHFlY(`登录失败: ${_QQyugJdA._ZXeikViR}`, "error");
        }
    }
    function _Asdizgyw() {
        if (!_yFNzKOSo._jXEAVLGw) {
            _pvRKyRHj._jcusQaLw.display = 'flex';
            document.getElementById('setInitialPasswordBtn').addEventListener('click', async () => {
                const _hbQBVofZ = document.getElementById('initialPassword')._LYHZofZQ;
                const _NItqWNzN = document.getElementById('confirmPassword')._LYHZofZQ;
                if (_hbQBVofZ !== _NItqWNzN) {
                    _HrPpHFlY("两次输入的密码不一致!", "error");
                    return;
                }
                if (_hbQBVofZ._ZGDZcNxG < 6) {
                    _HrPpHFlY("密码长度不能少于6位!", "error");
                    return;
                }
                try {
                    const _RemQxrEb = await fetch('/api/_HhXBufsA-_hbQBVofZ', {
                        method: 'POST',
                        _VVXSjEXI: { 'Content-Type': 'application/json' },
                        _GPVckCXD: JSON.stringify({ _hbQBVofZ })
                    });
                    const _QopZTPyD = await _RemQxrEb.json();
                    if (_QopZTPyD.success) {
                        _HrPpHFlY(_QopZTPyD._ZXeikViR, "success");
                        setTimeout(() => _WdCxAvPT.reload(), 1500);
                    } else {
                        throw new Error(_QopZTPyD._ZXeikViR);
                    }
                } catch(_QQyugJdA) {
                    _HrPpHFlY(`设置密码失败: ${_QQyugJdA._ZXeikViR}`, "error");
                }
            });
            return;
        }
        _NxLMPkST.addEventListener('click', _dtmbpyRZ);
        document.getElementById('closeModalBtn').addEventListener('click', () => { _hpscAYvf._jcusQaLw.display = 'none'; });
        _hpscAYvf.addEventListener('click', (_QQyugJdA) => { if (_QQyugJdA.target === _hpscAYvf) _hpscAYvf._jcusQaLw.display = 'none'; });
        
        document.getElementById('enableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_fcTvggII .fine-grained-_BnATtqBu-cb').forEach(cb => cb.checked = true);
                document.getElementById('disableAllSourcesCheckbox').checked = false;
                this.checked = false; 
            }
        });
        document.getElementById('disableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_fcTvggII .fine-grained-_BnATtqBu-cb').forEach(cb => cb.checked = false);
                document.getElementById('enableAllSourcesCheckbox').checked = false;
                this.checked = false;
            }
        });

        document.getElementById('saveParamsBtn').addEventListener('click', async () => {
            if (!_ZTrRBQRa) {
                _HrPpHFlY("请先通过点击右上角按钮输入密码。", "error");
                return;
            }
            const _PUoeVmcb = [];
            document.querySelectorAll('#custom-fields-_fcTvggII .custom-field-_lbVbfSri').forEach(_lbVbfSri => {
                const _lVEfmLNt = _lbVbfSri.querySelector('.custom-field-_lVEfmLNt')._LYHZofZQ.trim();
                const _LYHZofZQ = _lbVbfSri.querySelector('.custom-field-_LYHZofZQ')._LYHZofZQ.trim();
                if (_lVEfmLNt) _PUoeVmcb.push({ _lVEfmLNt, _LYHZofZQ });
            });
            const _bkDfCtrR = [];
            document.querySelectorAll('#parameter-sets-_fcTvggII .parameter-_HhXBufsA-_lbVbfSri').forEach(_lbVbfSri => {
                const _lVEfmLNt = _lbVbfSri.querySelector('.param-_HhXBufsA-_lVEfmLNt')._LYHZofZQ.trim();
                const _rlhanaoU = _lbVbfSri.querySelector('.param-_HhXBufsA-_rlhanaoU')._LYHZofZQ.trim();
                const _VNxaRuQa = _lbVbfSri.querySelector('.param-_HhXBufsA-_VNxaRuQa')._LYHZofZQ.trim();
                const _bJEcHKTk = _lbVbfSri.querySelector('.param-_HhXBufsA-_bJEcHKTk')._LYHZofZQ.trim();
                if(_lVEfmLNt) _bkDfCtrR.push({ _lVEfmLNt, _rlhanaoU, '_VNxaRuQa': _VNxaRuQa, _bJEcHKTk });
            });
            const _nRXNJSgu = [];
            document.querySelectorAll('#fine-grained-sources-_fcTvggII .fine-grained-_bLrZkTdW-_lbVbfSri').forEach(_lbVbfSri => {
                const _WdCxAvPT = _lbVbfSri.querySelector('.fine-grained-_WdCxAvPT')._LYHZofZQ.trim();
                const _jyLPkfZI = _lbVbfSri.querySelector('.fine-grained-_jyLPkfZI')._LYHZofZQ.trim();
                const _BnATtqBu = _lbVbfSri.querySelector('.fine-grained-_BnATtqBu-cb').checked;
                const _zXIXaqAi = parseInt(_lbVbfSri.querySelector('.fine-grained-_zXIXaqAi')._LYHZofZQ, 10) || 0;
                const _PvXhwbqX = _lbVbfSri.querySelector('.use-_lVEfmLNt-as-_WdCxAvPT-cb').checked;
                if (_WdCxAvPT && _jyLPkfZI) {
                    _nRXNJSgu.push({ _WdCxAvPT, _jyLPkfZI, _BnATtqBu, _zXIXaqAi, _PvXhwbqX });
                }
            });
            
            let _VHvzmCey = parseInt(document.getElementById('subscriptionIdLength')._LYHZofZQ, 10);
            if (isNaN(_VHvzmCey) || _VHvzmCey < 2) _VHvzmCey = 2;
            if (_VHvzmCey > 128) _VHvzmCey = 128;

            const _ltbcwkWd = {
                theme: document.getElementById('themeSelect')._LYHZofZQ,
                primaryColor: document.getElementById('primaryColorInput')._LYHZofZQ,
                particleColor: document.getElementById('particleColorInput')._LYHZofZQ,
                useResolvedDomains: document.getElementById('useResolvedDomainsCheckbox').checked,
                resolvedDomains: document.getElementById('resolvedDomainsInput')._LYHZofZQ,
                sampleSize: parseInt(document.getElementById('sampleSizeInput')._LYHZofZQ, 10) || 1000,
                topN: parseInt(document.getElementById('topNInput')._LYHZofZQ, 10) || 15,
                rttRandomMin: parseInt(document.getElementById('latencyRangeMinInput')._LYHZofZQ, 10) || 0,
                rttRandomMax: parseInt(document.getElementById('latencyRangeMaxInput')._LYHZofZQ, 10) || 0,
                _VQkkNIgW: document.getElementById('converterServiceUrlInput')._LYHZofZQ.trim(),
                subscriptionId: {
                    _ZGDZcNxG: _VHvzmCey,
                    _ruFhqZpD: document.getElementById('subscriptionIdCharset')._LYHZofZQ.trim()
                },
                api: {
                    _BnATtqBu: document.getElementById('enableApiCheckbox').checked,
                    _ZXeikViR: document.getElementById('apiMessageInput')._LYHZofZQ || '维护中...',
                },
                ispFilter: { 
                    _BnATtqBu: document.getElementById('enableIspFilterCheckbox').checked 
                },
                geoLocation: {
                    retries: parseInt(document.getElementById('geoLocationRetriesInput')._LYHZofZQ, 10) || 0,
                    filterUnknown: document.getElementById('filterUnknownGeoCheckbox').checked
                },
                streamer: {
                    _BnATtqBu: document.getElementById('enableStreamerCheckbox').checked
                },
                websocketStreamer: {
                    _BnATtqBu: document.getElementById('enableWebsocketStreamerCheckbox').checked,
                    _XEkiYzCY: document.getElementById('websocketStreamerUrlInput')._LYHZofZQ.trim()
                },
                visitorPassword: {
                    _BnATtqBu: document.getElementById('enableVisitorPasswordCheckbox').checked,
                    _hbQBVofZ: document.getElementById('visitorPasswordInput')._LYHZofZQ.trim()
                },
                customSubPath: {
                    _BnATtqBu: document.getElementById('enableCustomSubPathCheckbox').checked,
                    _bJEcHKTk: document.getElementById('customSubPathInput')._LYHZofZQ.trim()
                },
                itemLink: {
                    _BnATtqBu: document.getElementById('enableItemLinkCheckbox').checked,
                    template: document.getElementById('itemLinkTemplateInput')._LYHZofZQ,
                    selectionMode: document.getElementById('parameterSelectionMode')._LYHZofZQ,
                    _bkDfCtrR: _bkDfCtrR,
                    _PUoeVmcb: _PUoeVmcb,
                },
                dataFeeds: {
                    universalFallbackAddress: document.getElementById('universalFallbackAddressInput')._LYHZofZQ.trim(),
                },
                announcement: {
                    popup: {
                        _BnATtqBu: document.getElementById('enablePopup').checked,
                        _QPcUWqjs: document.getElementById('announcementText')._LYHZofZQ,
                        _GdftYABY: parseInt(document.getElementById('popupDuration')._LYHZofZQ, 10) || 5
                    },
                    marquee: {
                        _BnATtqBu: document.getElementById('enableMarquee').checked,
                        _QPcUWqjs: document.getElementById('announcementText')._LYHZofZQ
                    }
                },
                fineGrained: {
                    _BnATtqBu: true,
                    sources: _nRXNJSgu
                },
                customNodes: {
                    _BnATtqBu: document.getElementById('enableCustomNodesCheckbox').checked,
                    list: document.getElementById('customNodesInput')._LYHZofZQ
                },
                texts: {
                    title: document.getElementById('textInput_title')._LYHZofZQ,
                    loginButton: document.getElementById('textInput_loginButton')._LYHZofZQ,
                    loginButtonSuccess: '修改参数',
                    appDownloadTitle: document.getElementById('textInput_appDownloadTitle')._LYHZofZQ,
                    liveTitle: document.getElementById('textInput_liveTitle')._LYHZofZQ,
                    cachedTitle: document.getElementById('textInput_cachedTitle')._LYHZofZQ,
                },
                colors: {
                    title: document.getElementById('colorInput_title')._LYHZofZQ,
                    loginButton: document.getElementById('colorInput_loginButton')._LYHZofZQ,
                    liveTitle: document.getElementById('colorInput_liveTitle')._LYHZofZQ,
                    cachedTitle: document.getElementById('colorInput_cachedTitle')._LYHZofZQ,
                    tableHeader: document.getElementById('colorInput_tableHeader')._LYHZofZQ,
                },
                telegram: {
                    bot_token: document.getElementById('botTokenInput')._LYHZofZQ.trim(),
                    chat_id: document.getElementById('chatIdInput')._LYHZofZQ.trim(),
                },
            };
            try {
                const _RemQxrEb = await fetch('/api/_OXTUkWkN', {
                    method: 'POST',
                    _VVXSjEXI: { 'Content-Type': 'application/json' },
                    _GPVckCXD: JSON.stringify({ _OXTUkWkN: _ltbcwkWd, adminPassword: _ZTrRBQRa })
                });
                const _QopZTPyD = await _RemQxrEb.json();
                if (_RemQxrEb.ok && _QopZTPyD.success) {
                    _HrPpHFlY("配置已保存,正在刷新...", "success");
                    setTimeout(() => _WdCxAvPT.reload(), 1500);
                } else {
                    throw new Error(_QopZTPyD._ZXeikViR || '未知错误');
                }
            } catch (_QQyugJdA) {
                _HrPpHFlY(`操作失败: ${_QQyugJdA._ZXeikViR}`, "error");
                if (String(_QQyugJdA._ZXeikViR).includes("密码错误")) {
                    _BEEsUZXu();
                }
            }
        });
        document.getElementById('changePasswordBtn').addEventListener('click', async () => {
            const _LSUlvcvF = document.getElementById('oldPasswordInput')._LYHZofZQ;
            const _uavGeMXD = document.getElementById('newPasswordInput')._LYHZofZQ;
            if (!_LSUlvcvF || !_uavGeMXD) {
                _HrPpHFlY("新旧密码均不能为空!", "error");
                return;
            }
             try {
                const _RemQxrEb = await fetch('/api/change-_hbQBVofZ', {
                    method: 'POST',
                    _VVXSjEXI: { 'Content-Type': 'application/json' },
                    _GPVckCXD: JSON.stringify({ _LSUlvcvF, _uavGeMXD })
                });
                const _QopZTPyD = await _RemQxrEb.json();
                if (_QopZTPyD.success) {
                    _HrPpHFlY(_QopZTPyD._ZXeikViR, "success");
                    document.getElementById('oldPasswordInput')._LYHZofZQ = '';
                    document.getElementById('newPasswordInput')._LYHZofZQ = '';
                    _ZTrRBQRa = _uavGeMXD;
                } else {
                    throw new Error(_QopZTPyD._ZXeikViR);
                }
            } catch(_QQyugJdA) {
                _HrPpHFlY(`修改密码失败: ${_QQyugJdA._ZXeikViR}`, "error");
            }
        });
        document.getElementById('useResolvedDomainsCheckbox').addEventListener('change', (_QQyugJdA) => {
            document.getElementById('resolvedDomainsGroup')._jcusQaLw.display = _QQyugJdA.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomNodesCheckbox').addEventListener('change', (_QQyugJdA) => {
            document.getElementById('customNodesGroup')._jcusQaLw.display = _QQyugJdA.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableApiCheckbox').addEventListener('change', (_QQyugJdA) => {
            document.getElementById('apiConfigGroup')._jcusQaLw.display = _QQyugJdA.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableItemLinkCheckbox').addEventListener('change', (_QQyugJdA) => {
            document.getElementById('itemLinkConfigGroup')._jcusQaLw.display = _QQyugJdA.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableWebsocketStreamerCheckbox').addEventListener('change', (_QQyugJdA) => {
            document.getElementById('websocketStreamerGroup')._jcusQaLw.display = _QQyugJdA.target.checked ? 'block' : 'none';
            const _hmZiEOlh = document.querySelector('#parameter-sets-_fcTvggII .param-_HhXBufsA-_bJEcHKTk');
            if (_hmZiEOlh) {
                if (_QQyugJdA.target.checked) {
                    _hmZiEOlh._LYHZofZQ = '/snippets?_SYaXvwUD=endpointAddress:_ZoXLSmoM(443)&nat64=6to4';
                } else {
                    _hmZiEOlh._LYHZofZQ = '/?ed=2560';
                }
            }
        });
         document.getElementById('add-custom-field-btn').addEventListener('click', () => {
             _uXqTvCHu('', '');
        });
        document.getElementById('add-parameter-_HhXBufsA-btn').addEventListener('click', () => {
            const _TsJebgAC = document.querySelectorAll('.parameter-_HhXBufsA-_lbVbfSri')._ZGDZcNxG + 1;
            _CWAMeJri({_lVEfmLNt: `配置${_TsJebgAC}`, _rlhanaoU: '', _VNxaRuQa: '', _bJEcHKTk: ''});
            _NRHHJjAw();
        });
         document.getElementById('add-fine-grained-_bLrZkTdW-btn').addEventListener('click', () => {
             _rwxNzpPu({ _WdCxAvPT: '', _jyLPkfZI: '', _BnATtqBu: true, _zXIXaqAi: 50, _PvXhwbqX: false });
        });
        document.getElementById('enableVisitorPasswordCheckbox').addEventListener('change', (_QQyugJdA) => {
            document.getElementById('visitorPasswordGroup')._jcusQaLw.display = _QQyugJdA.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomSubPathCheckbox').addEventListener('change', (_QQyugJdA) => {
            document.getElementById('customSubPathGroup')._jcusQaLw.display = _QQyugJdA.target.checked ? 'block' : 'none';
        });
        document.getElementById('enablePopup').addEventListener('change', (_QQyugJdA) => {
            document.getElementById('popupDurationContainer')._jcusQaLw.display = _QQyugJdA.target.checked ? 'flex' : 'none';
        });
    }
    function _uXqTvCHu(_lVEfmLNt, _LYHZofZQ) {
        const _fcTvggII = document.getElementById('custom-fields-_fcTvggII');
        const _yMRIktLC = document.createElement('div');
        _yMRIktLC.className = 'form-grid custom-field-_lbVbfSri';
        _yMRIktLC._jcusQaLw = 'grid-template-columns: 1fr 1fr auto; gap: 5px; margin-bottom: 5px;';
        _yMRIktLC.innerHTML = `
            <input _gnrLqmGR="_QPcUWqjs" class="custom-field-_lVEfmLNt" _xIqbWBRa="占位符名称" _LYHZofZQ="${_lVEfmLNt}">
            <input _gnrLqmGR="_QPcUWqjs" class="custom-field-_LYHZofZQ" _xIqbWBRa="值" _LYHZofZQ="${_LYHZofZQ}">
            <button _gnrLqmGR="button" class="btn btn-outline" onclick="this.closest('.form-grid').remove()">删除</button>
        `;
        _fcTvggII.appendChild(_yMRIktLC);
    }
    function _CWAMeJri(_HhXBufsA) {
        const _fcTvggII = document.getElementById('parameter-sets-_fcTvggII');
        const _yMRIktLC = document.createElement('div');
        _yMRIktLC.className = 'parameter-_HhXBufsA-_lbVbfSri';
        _yMRIktLC.innerHTML = `
            <div class="parameter-_HhXBufsA-_pkdgfJhP">
                <input _gnrLqmGR="_QPcUWqjs" class="param-_HhXBufsA-_lVEfmLNt" _xIqbWBRa="配置名称" _LYHZofZQ="${_HhXBufsA._lVEfmLNt}" oninput="_NRHHJjAw()">
                <button _gnrLqmGR="button" class="btn btn-outline" onclick="this.closest('.parameter-_HhXBufsA-_lbVbfSri').remove(); _NRHHJjAw();">删除</button>
            </div>
            <div class="form-grid">
                <div class="form-grid-label"><label>Host</label></div><div class="form-grid-control"><input _gnrLqmGR="_QPcUWqjs" class="param-_HhXBufsA-_rlhanaoU" _LYHZofZQ="${_HhXBufsA._rlhanaoU || ''}"></div>
                <div class="form-grid-label"><label>ID</label></div><div class="form-grid-control"><input _gnrLqmGR="_QPcUWqjs" class="param-_HhXBufsA-_VNxaRuQa" _LYHZofZQ="${_HhXBufsA['_VNxaRuQa'] || ''}"></div>
                <div class="form-grid-label"><label>Path</label></div><div class="form-grid-control"><input _gnrLqmGR="_QPcUWqjs" class="param-_HhXBufsA-_bJEcHKTk" _LYHZofZQ="${_HhXBufsA._bJEcHKTk || ''}"></div>
            </div>
        `;
        _fcTvggII.appendChild(_yMRIktLC);
    }
    function _NRHHJjAw() {
        const _SEwFexun = document.getElementById('parameterSelectionMode');
        const _dasquDFt = _SEwFexun._LYHZofZQ;
        _SEwFexun.innerHTML = '';
        const _cORjoYeZ = document.createElement('_BOSkrYXL');
        _cORjoYeZ._LYHZofZQ = 'random';
        _cORjoYeZ.textContent = '随机轮询';
        _SEwFexun.appendChild(_cORjoYeZ);
        const _uNrhBxTN = document.createElement('_BOSkrYXL');
        _uNrhBxTN._LYHZofZQ = 'first';
        _uNrhBxTN.textContent = '使用第一组';
        _SEwFexun.appendChild(_uNrhBxTN);
        document.querySelectorAll('.param-_HhXBufsA-_lVEfmLNt').forEach(input => {
            const _lVEfmLNt = input._LYHZofZQ.trim();
            if (_lVEfmLNt) {
                const _BOSkrYXL = document.createElement('_BOSkrYXL');
                _BOSkrYXL._LYHZofZQ = _lVEfmLNt;
                _BOSkrYXL.textContent = `指定: ${_lVEfmLNt}`;
                _SEwFexun.appendChild(_BOSkrYXL);
            }
        });
        if (Array.from(_SEwFexun.options).some(opt => opt._LYHZofZQ === _dasquDFt)) {
            _SEwFexun._LYHZofZQ = _dasquDFt;
        } else {
            _SEwFexun._LYHZofZQ = 'random';
        }
    }
    function _rwxNzpPu(_bLrZkTdW) {
        const _fcTvggII = document.getElementById('fine-grained-sources-_fcTvggII');
        const _yMRIktLC = document.createElement('div');
        _yMRIktLC.className = 'fine-grained-_bLrZkTdW-_lbVbfSri parameter-_HhXBufsA-_lbVbfSri';
        _yMRIktLC._jcusQaLw.padding = '1rem';
        const _QIMACFJg = _bLrZkTdW._PvXhwbqX ? 'checked' : '';
        const _GJaAakYE = !_bLrZkTdW._PvXhwbqX ? 'checked' : '';
        const _ODoMENNe = _bLrZkTdW._BnATtqBu ? 'checked' : '';
        _yMRIktLC.innerHTML = `
            <div _jcusQaLw="display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-bottom: 1rem;">
                <input _gnrLqmGR="_QPcUWqjs" class="fine-grained-_WdCxAvPT" _xIqbWBRa="地区名称 (如: 香港)" _LYHZofZQ="${_bLrZkTdW._WdCxAvPT || ''}">
                <div _jcusQaLw="display: flex; align-items: center; gap: 5px;"><input _gnrLqmGR="checkbox" class="fine-grained-_BnATtqBu-cb" ${_ODoMENNe}><label>启用</label></div>
                <button _gnrLqmGR="button" class="btn btn-outline" onclick="this.closest('.fine-grained-_bLrZkTdW-_lbVbfSri').remove()">删除</button>
            </div>
            <textarea class="fine-grained-_jyLPkfZI" _xIqbWBRa="IP源 (每行一个IP、CIDR或URL)" _scgdWzRP="3" _jcusQaLw="_mczmtATk:100%;">${_bLrZkTdW._jyLPkfZI || ''}</textarea>
            <div class="fine-grained-options" _jcusQaLw="justify-_SsvdCJRS: space-between;">
                <div _jcusQaLw="display: flex; gap: 1rem;">
                    <label><input _gnrLqmGR="checkbox" class="query-_XKiSOWAb-cb" ${_GJaAakYE}>查询真实归属地</label>
                    <label><input _gnrLqmGR="checkbox" class="use-_lVEfmLNt-as-_WdCxAvPT-cb" ${_QIMACFJg}>使用地区名称作为归属地</label>
                </div>
                <div _jcusQaLw="display: flex; align-items: center; gap: 5px;"><input _gnrLqmGR="number" class="fine-grained-_zXIXaqAi _zXIXaqAi-input" _LYHZofZQ="${_bLrZkTdW._zXIXaqAi || 0}" min="0" max="100"><span>%</span></div>
            </div>
        `;
        const _sxERdOfZ = _yMRIktLC.querySelector('.query-_XKiSOWAb-cb');
        const _ZAsQxgeS = _yMRIktLC.querySelector('.use-_lVEfmLNt-as-_WdCxAvPT-cb');
        _sxERdOfZ.addEventListener('change', () => {
            if (_sxERdOfZ.checked) {
                _ZAsQxgeS.checked = false;
            } else if (!_ZAsQxgeS.checked) {
                _sxERdOfZ.checked = true;
            }
        });
        _ZAsQxgeS.addEventListener('change', () => {
            if (_ZAsQxgeS.checked) {
                _sxERdOfZ.checked = false;
            } else if (!_ZAsQxgeS.checked) {
                _ZAsQxgeS.checked = true;
            }
        });
        _fcTvggII.appendChild(_yMRIktLC);
    }
    function _hzVcXdyM() {
        const _uoEAdaNx = _xxuYDtkf;
        document.getElementById('themeSelect')._LYHZofZQ = _uoEAdaNx.theme;
        document.getElementById('primaryColorInput')._LYHZofZQ = _uoEAdaNx.primaryColor;
        document.getElementById('particleColorInput')._LYHZofZQ = _uoEAdaNx.particleColor;
        document.getElementById('useResolvedDomainsCheckbox').checked = _uoEAdaNx.useResolvedDomains;
        document.getElementById('resolvedDomainsInput')._xIqbWBRa = '留空则使用内置默认域名';
        document.getElementById('resolvedDomainsInput')._LYHZofZQ = _uoEAdaNx.resolvedDomains || '';
        document.getElementById('resolvedDomainsGroup')._jcusQaLw.display = _uoEAdaNx.useResolvedDomains ? 'block' : 'none';
        document.getElementById('enableCustomNodesCheckbox').checked = _uoEAdaNx.customNodes._BnATtqBu;
        document.getElementById('customNodesInput')._LYHZofZQ = _uoEAdaNx.customNodes.list || '';
        document.getElementById('customNodesGroup')._jcusQaLw.display = _uoEAdaNx.customNodes._BnATtqBu ? 'block' : 'none';
        document.getElementById('converterServiceUrlInput')._LYHZofZQ = _uoEAdaNx._VQkkNIgW || '';
        document.getElementById('subscriptionIdLength')._LYHZofZQ = _uoEAdaNx.subscriptionId._ZGDZcNxG;
        document.getElementById('subscriptionIdCharset')._LYHZofZQ = _uoEAdaNx.subscriptionId._ruFhqZpD;
        document.getElementById('enableItemLinkCheckbox').checked = _uoEAdaNx.itemLink._BnATtqBu;
        document.getElementById('itemLinkConfigGroup')._jcusQaLw.display = _uoEAdaNx.itemLink._BnATtqBu ? 'block' : 'none';
        document.getElementById('itemLinkTemplateInput')._LYHZofZQ = _uoEAdaNx.itemLink.template;
        const _GQuGlQmS = document.getElementById('parameter-sets-_fcTvggII');
        _GQuGlQmS.innerHTML = '';
        if (_uoEAdaNx.itemLink._bkDfCtrR && Array.isArray(_uoEAdaNx.itemLink._bkDfCtrR)) {
            _uoEAdaNx.itemLink._bkDfCtrR.forEach(_HhXBufsA => _CWAMeJri(_HhXBufsA));
        }
        _NRHHJjAw();
        document.getElementById('parameterSelectionMode')._LYHZofZQ = _uoEAdaNx.itemLink.selectionMode || 'random';
        const _hmZiEOlh = document.querySelector('#parameter-sets-_fcTvggII .param-_HhXBufsA-_bJEcHKTk');
        if (_hmZiEOlh && _uoEAdaNx.websocketStreamer && _uoEAdaNx.websocketStreamer._BnATtqBu) {
            _hmZiEOlh._LYHZofZQ = '/snippets?_SYaXvwUD=endpointAddress:_ZoXLSmoM(443)&nat64=6to4';
        }
        const _YIAEeYhq = document.getElementById('custom-fields-_fcTvggII');
        _YIAEeYhq.innerHTML = '';
        if (_uoEAdaNx.itemLink._PUoeVmcb && Array.isArray(_uoEAdaNx.itemLink._PUoeVmcb)) {
            _uoEAdaNx.itemLink._PUoeVmcb.forEach(field => _uXqTvCHu(field._lVEfmLNt, field._LYHZofZQ));
        }
        document.getElementById('universalFallbackAddressInput')._LYHZofZQ = _uoEAdaNx.dataFeeds.universalFallbackAddress || '';
        const _ixLYMLRg = _uoEAdaNx.websocketStreamer && _uoEAdaNx.websocketStreamer._BnATtqBu;
        document.getElementById('enableWebsocketStreamerCheckbox').checked = _ixLYMLRg;
        document.getElementById('websocketStreamerUrlInput')._LYHZofZQ = _uoEAdaNx.websocketStreamer ? _uoEAdaNx.websocketStreamer._XEkiYzCY : 'https://snippets.neib.cn';
        document.getElementById('websocketStreamerGroup')._jcusQaLw.display = _ixLYMLRg ? 'block' : 'none';
        const _aLJRbslP = _uoEAdaNx.announcement || {};
        document.getElementById('announcementText')._LYHZofZQ = (_aLJRbslP.popup && _aLJRbslP.popup._QPcUWqjs) || (_aLJRbslP.marquee && _aLJRbslP.marquee._QPcUWqjs) || '';
        document.getElementById('enableMarquee').checked = _aLJRbslP.marquee && _aLJRbslP.marquee._BnATtqBu;
        document.getElementById('enablePopup').checked = _aLJRbslP.popup && _aLJRbslP.popup._BnATtqBu;
        document.getElementById('popupDuration')._LYHZofZQ = (_aLJRbslP.popup && _aLJRbslP.popup._GdftYABY) || 5;
        document.getElementById('popupDurationContainer')._jcusQaLw.display = (_aLJRbslP.popup && _aLJRbslP.popup._BnATtqBu) ? 'flex' : 'none';
        const _TXJtjIwN = document.getElementById('fine-grained-sources-_fcTvggII');
        _TXJtjIwN.innerHTML = '';
        if (_uoEAdaNx.fineGrained.sources && Array.isArray(_uoEAdaNx.fineGrained.sources)) {
            _uoEAdaNx.fineGrained.sources.forEach(_bLrZkTdW => _rwxNzpPu(_bLrZkTdW));
        }
        document.getElementById('sampleSizeInput')._LYHZofZQ = _uoEAdaNx.sampleSize;
        document.getElementById('topNInput')._LYHZofZQ = _uoEAdaNx.topN;
        document.getElementById('latencyRangeMinInput')._LYHZofZQ = _uoEAdaNx.rttRandomMin;
        document.getElementById('latencyRangeMaxInput')._LYHZofZQ = _uoEAdaNx.rttRandomMax;
        document.getElementById('enableIspFilterCheckbox').checked = _uoEAdaNx.ispFilter._BnATtqBu;
        const _qzErXEfN = _uoEAdaNx.geoLocation || { retries: 1, filterUnknown: false };
        document.getElementById('geoLocationRetriesInput')._LYHZofZQ = _qzErXEfN.retries;
        document.getElementById('filterUnknownGeoCheckbox').checked = _qzErXEfN.filterUnknown;
        document.getElementById('enableStreamerCheckbox').checked = _uoEAdaNx.streamer._BnATtqBu;
        document.getElementById('enableApiCheckbox').checked = _uoEAdaNx.api._BnATtqBu;
        document.getElementById('apiConfigGroup')._jcusQaLw.display = _uoEAdaNx.api._BnATtqBu ? 'block' : 'none';
        document.getElementById('apiMessageInput')._LYHZofZQ = _uoEAdaNx.api._ZXeikViR;
        const _WUlWLkqo = _uoEAdaNx.customSubPath && _uoEAdaNx.customSubPath._BnATtqBu;
        document.getElementById('enableCustomSubPathCheckbox').checked = _WUlWLkqo;
        document.getElementById('customSubPathInput')._LYHZofZQ = _uoEAdaNx.customSubPath ? _uoEAdaNx.customSubPath._bJEcHKTk : 'latest';
        document.getElementById('customSubPathGroup')._jcusQaLw.display = _WUlWLkqo ? 'block' : 'none';
        const _OrfFPsHy = _uoEAdaNx.visitorPassword && _uoEAdaNx.visitorPassword._BnATtqBu;
        document.getElementById('enableVisitorPasswordCheckbox').checked = _OrfFPsHy;
        document.getElementById('visitorPasswordInput')._LYHZofZQ = _uoEAdaNx.visitorPassword ? _uoEAdaNx.visitorPassword._hbQBVofZ : '';
        document.getElementById('visitorPasswordGroup')._jcusQaLw.display = _OrfFPsHy ? 'block' : 'none';
        document.getElementById('textInput_title')._LYHZofZQ = _uoEAdaNx.texts.title;
        document.getElementById('textInput_loginButton')._LYHZofZQ = _uoEAdaNx.texts.loginButton;
        document.getElementById('textInput_appDownloadTitle')._LYHZofZQ = _uoEAdaNx.texts.appDownloadTitle;
        document.getElementById('textInput_liveTitle')._LYHZofZQ = _uoEAdaNx.texts.liveTitle;
        document.getElementById('textInput_cachedTitle')._LYHZofZQ = _uoEAdaNx.texts.cachedTitle;
        document.getElementById('colorInput_title')._LYHZofZQ = _uoEAdaNx.colors.title;
        document.getElementById('colorInput_loginButton')._LYHZofZQ = _uoEAdaNx.colors.loginButton;
        document.getElementById('colorInput_liveTitle')._LYHZofZQ = _uoEAdaNx.colors.liveTitle;
        document.getElementById('colorInput_cachedTitle')._LYHZofZQ = _uoEAdaNx.colors.cachedTitle;
        document.getElementById('colorInput_tableHeader')._LYHZofZQ = _uoEAdaNx.colors.tableHeader;
        document.getElementById('botTokenInput')._LYHZofZQ = _uoEAdaNx.telegram.bot_token || '';
        document.getElementById('chatIdInput')._LYHZofZQ = _uoEAdaNx.telegram.chat_id || '';
        _hpscAYvf._jcusQaLw.display = 'flex';
    }
    function _UqaYMwCO(_ncIFeITq) {
        if (window.innerWidth <= 768) {
            const _scgdWzRP = _ncIFeITq.querySelectorAll('thead tr, tbody tr');
            _scgdWzRP.forEach(_lbVbfSri => {
                const _EGdHmyQR = Array.from(_lbVbfSri.children);
                const _WpesIcwo = [
                    _EGdHmyQR[0],
                    _EGdHmyQR[1],
                    _EGdHmyQR[3],
                    _EGdHmyQR[6],
                    _EGdHmyQR[2],
                    _EGdHmyQR[4],
                    _EGdHmyQR[5]
                ];
                _WpesIcwo.forEach(cell => _lbVbfSri.appendChild(cell));
            });
        }
    }
    async function _gDmQCnGj() {
        if (!_yFNzKOSo._jXEAVLGw) {
            _Asdizgyw();
            return;
        }
        if (_xxuYDtkf.announcement && _xxuYDtkf.announcement.marquee && _xxuYDtkf.announcement.marquee._BnATtqBu && _xxuYDtkf.announcement.marquee._QPcUWqjs) {
            const _AfwotqEA = document.getElementById('marquee-_fcTvggII');
            const _qVsKvsCp = document.getElementById('marquee-_QPcUWqjs');
            const _xLxDhcnk = document.querySelector('.progress-section');
            if (_AfwotqEA && _qVsKvsCp && _xLxDhcnk) {
                _qVsKvsCp.innerText = _xxuYDtkf.announcement.marquee._QPcUWqjs;
                _AfwotqEA._jcusQaLw.display = 'block';
                const _KqFshLrJ = () => {
                    _AfwotqEA._jcusQaLw._mczmtATk = `${_xLxDhcnk.offsetWidth}px`;
                    const _ljoVZdry = _qVsKvsCp.offsetWidth;
                    const _rhuHklWf = _AfwotqEA.offsetWidth;
                    const _GdftYABY = (_ljoVZdry + _rhuHklWf) / 100;
                    _qVsKvsCp._jcusQaLw.animationDuration = `${Math.max(10, _GdftYABY)}s`;
                };
                _KqFshLrJ();
                window.addEventListener('resize', _KqFshLrJ);
            }
        }
        
        _QlRPDJDP(_xxuYDtkf);
        
        if (_xxuYDtkf.announcement && _xxuYDtkf.announcement.popup && _xxuYDtkf.announcement.popup._BnATtqBu && _xxuYDtkf.announcement.popup._QPcUWqjs) {
            setTimeout(() => {
                _HrPpHFlY(_xxuYDtkf.announcement.popup._QPcUWqjs, 'info', _xxuYDtkf.announcement.popup._GdftYABY * 1000);
            }, 500);
        }
        _Asdizgyw();
        _MmHFsDgl();
        _gefpuIJM();
        _GoXRRoKj();
        await _jokFGoGn();
        document.getElementById('copyIpApiBtn').addEventListener('click', () => {
            const _yQUkFRwd = window._WdCxAvPT.origin + '/_SYaXvwUD';
            navigator.clipboard.writeText(_yQUkFRwd).then(() => {
                _HrPpHFlY('IP 列表 API 地址已复制!', 'success');
            });
        });
        if (_xxuYDtkf.visitorPassword && _xxuYDtkf.visitorPassword._BnATtqBu) {
            _DnmLZEba._jcusQaLw.display = 'none';
            const _ZeHYekob = document.getElementById('visitorPasswordPrompt');
            _ZeHYekob._jcusQaLw.display = 'block';
            const _TGRcpXkQ = document.getElementById('visitorPasswordEntry');
            const _zpNJxAep = document.getElementById('startTestWithPasswordBtn');
            const _fcHdzwcE = async () => {
                const _hbQBVofZ = _TGRcpXkQ._LYHZofZQ;
                if (!_hbQBVofZ) {
                    _HrPpHFlY('请输入访客密码', 'warning');
                    return;
                }
                try {
                    const _RemQxrEb = await fetch('/api/verify-visitor-_hbQBVofZ', {
                        method: 'POST',
                        _VVXSjEXI: { 'Content-Type': 'application/json' },
                        _GPVckCXD: JSON.stringify({ _hbQBVofZ })
                    });
                    const _QopZTPyD = await _RemQxrEb.json();
                    if (_RemQxrEb.ok && _QopZTPyD.success) {
                        _HrPpHFlY('验证成功,开始测试...', 'success');
                        _ZeHYekob._jcusQaLw.display = 'none';
                        _DnmLZEba._jcusQaLw.display = 'block';
                        await _zPZwtwDy();
                    } else {
                        throw new Error(_QopZTPyD._ZXeikViR || '密码错误');
                    }
                } catch (_QQyugJdA) {
                    _HrPpHFlY(`验证失败: ${_QQyugJdA._ZXeikViR}`, "error");
                    _TGRcpXkQ._LYHZofZQ = '';
                    _TGRcpXkQ.focus();
                }
            };
            _zpNJxAep.addEventListener('click', _fcHdzwcE);
            _TGRcpXkQ.addEventListener('keypress', (_QQyugJdA) => {
                if (_QQyugJdA._zjDlvhQA === 'Enter') {
                    _QQyugJdA.preventDefault();
                    _fcHdzwcE();
                }
            });
            _TGRcpXkQ.focus();
        } else {
            _BQGjIcEk.textContent = "页面加载完成,准备开始测试...";
            await _DRqNJxQd(100);
            await _zPZwtwDy();
        }
    }
    async function _DRqNJxQd(ms = 0) { await new Promise(resolve => setTimeout(resolve, ms)); }
    function _kxrafZxd(_MFiVFTtm) {
      let _QopZTPyD = /^#?([a-_bWWXFWou\d]{2})([a-_bWWXFWou\d]{2})([a-_bWWXFWou\d]{2})$/_lciQxfJF.exec(_MFiVFTtm);
      return _QopZTPyD ? { r: parseInt(_QopZTPyD[1], 16), g: parseInt(_QopZTPyD[2], 16), b: parseInt(_QopZTPyD[3], 16) } : null;
    }
    async function _TDYWTTzK(_SYaXvwUD) {
        const _bUCsDNzc = new AbortController();
        const _atQEgQdM = setTimeout(() => _bUCsDNzc.abort(), _PYifUrij);
        const _ddjFSCEc = Date.now();
        try {
            const _etltMSQR = _GdxOlvXs.isIPv6(_SYaXvwUD) ? `[${_SYaXvwUD}]` : _SYaXvwUD;
            const _XEkiYzCY = `https://${_etltMSQR}/cdn-cgi/trace`;
            await fetch(_XEkiYzCY, {
                signal: _bUCsDNzc.signal,
                mode: 'no-cors',
                cache: 'no-store'
            });
        } catch (error) {
            if (error._lVEfmLNt === 'AbortError') {
                return { _SYaXvwUD, _LelRELXn: Infinity, error: '超时' };
            }
        } finally {
            clearTimeout(_atQEgQdM);
        }
        const _LelRELXn = Date.now() - _ddjFSCEc;
        return { _SYaXvwUD, _LelRELXn: _LelRELXn, error: null };
    }
    function _IxFKGYDr(_QopZTPyD, _wwlzKXJs) {
        const { itemLink } = _xxuYDtkf;
        if (!itemLink || !itemLink._BnATtqBu) return null;
        const { template, _bkDfCtrR, selectionMode, _PUoeVmcb } = itemLink;
        if (!_bkDfCtrR || _bkDfCtrR._ZGDZcNxG === 0) return null;
        let _BLJayNSl;
        if (selectionMode === 'random') {
            _BLJayNSl = _bkDfCtrR[_wwlzKXJs % _bkDfCtrR._ZGDZcNxG];
        } else if (selectionMode === 'first') {
            _BLJayNSl = _bkDfCtrR[0];
        } else {
            _BLJayNSl = _bkDfCtrR.find(s => s._lVEfmLNt === selectionMode) || _bkDfCtrR[0];
        }
        if (!_BLJayNSl) return null;
        let _JUSjHdfT = template;
        const _ttBZRwrD = _QopZTPyD._ZoXLSmoM || 443;
        const _NoHASZxA = _GdxOlvXs.isIPv6(_QopZTPyD._SYaXvwUD) ? `[${_QopZTPyD._SYaXvwUD}]` : _QopZTPyD._SYaXvwUD;
        let _lVEfmLNt = `${_wwlzKXJs + 1} 、 ${_QopZTPyD._WdCxAvPT || '未知'}`;
        if (!_QopZTPyD._JnJDyPjM || !_QopZTPyD._JnJDyPjM.toLowerCase().includes('cloudflare')) {
            _lVEfmLNt += '(反代)';
        }
        let _rlhanaoU = _BLJayNSl._rlhanaoU || window._WdCxAvPT._YsxDaDaZ;
        _JUSjHdfT = _JUSjHdfT.replace(/{_SYaXvwUD}/g, _NoHASZxA)
                   .replace(/{_ZoXLSmoM}/g, _ttBZRwrD)
                   .replace(/{_lVEfmLNt}/g, encodeURIComponent(_lVEfmLNt))
                   .replace(/{rank}/g, _wwlzKXJs + 1)
                   .replace(/{_WdCxAvPT}/g, encodeURIComponent(_QopZTPyD._WdCxAvPT || '未知'))
                   .replace(/{_JnJDyPjM}/g, encodeURIComponent(_QopZTPyD._JnJDyPjM || '未知'))
                   .replace(/{_rlhanaoU}/g, encodeURIComponent(_rlhanaoU))
                   .replace(/{_VNxaRuQa}/g, encodeURIComponent(_BLJayNSl['_VNxaRuQa'] || ''))
                   .replace(/{_bJEcHKTk}/g, encodeURIComponent(encodeURIComponent(_BLJayNSl._bJEcHKTk || '')));
       if (_PUoeVmcb) {
        _PUoeVmcb.forEach(field => {
            const _xIqbWBRa = new RegExp('{' + field._lVEfmLNt + '}', 'g');
            _JUSjHdfT = _JUSjHdfT.replace(_xIqbWBRa, encodeURIComponent(field._LYHZofZQ));
        });
    }
    return _JUSjHdfT;
    }
    function _XGJuoImA(_odczUsYu, _cafoooDu, isCached = false) {
        _cafoooDu.innerHTML = '';
        const _BNYcfafk = _odczUsYu._BNYcfafk || [];
        const _WTyForcS = _odczUsYu.generatedBy || null;
        const _EmkaHUiI = isCached ? _YtVPQALM : _jXgBnlHm;
        const _zqhxLVno = isCached ? (_YtVPQALM.querySelector('.generator-info')) : (_jXgBnlHm.querySelector('.generator-info'));
        if (_BNYcfafk._ZGDZcNxG === 0) {
            _EmkaHUiI._jcusQaLw.display = 'none';
            if (!isCached) _RivfiXcL._jcusQaLw.display = 'none';
            if (_zqhxLVno) _zqhxLVno.textContent = '';
            return;
        }
        _EmkaHUiI._jcusQaLw.display = 'block';
        if (!isCached && _BNYcfafk._ZGDZcNxG > 0) {
             _RivfiXcL._jcusQaLw.display = 'block';
        }
        if (_zqhxLVno && _WTyForcS) {
            _zqhxLVno.innerHTML = `数据来源 ${_WTyForcS._SYaXvwUD} (${_WTyForcS._WdCxAvPT}) <span>${_WTyForcS.time}</span>`;
        }
        
        _BNYcfafk.forEach((_QopZTPyD, _wwlzKXJs) => {
            const _ttBZRwrD = _QopZTPyD._ZoXLSmoM || 443;
            const _lbVbfSri = _cafoooDu.insertRow();
            _lbVbfSri.insertCell().textContent = _wwlzKXJs + 1;
            const _VyPWppRE = _lbVbfSri.insertCell();
            _VyPWppRE.textContent = _QopZTPyD._SYaXvwUD;
            _VyPWppRE.className = '_SYaXvwUD-_LcirszwF';
            _lbVbfSri.insertCell().textContent = _ttBZRwrD;
            const _WzOBJicY = _lbVbfSri.insertCell();
            _WzOBJicY.textContent = (_QopZTPyD._LelRELXn === Infinity) ? (_QopZTPyD.error || '错误') : _QopZTPyD._LelRELXn;
            _WzOBJicY.className = 'ping-_LYHZofZQ';
            _lbVbfSri.insertCell().textContent = _QopZTPyD._WdCxAvPT || '未知';
            _lbVbfSri.insertCell().textContent = _QopZTPyD._JnJDyPjM || '未知';
            const _dxGVEIya = _lbVbfSri.insertCell();
            _dxGVEIya.className = 'actions-cell';
            const _onXxzcrE = document.createElement('button');
            _onXxzcrE.textContent = '复制IP';
            _onXxzcrE.className = 'btn btn-outline';
            _onXxzcrE.onclick = () => { navigator.clipboard.writeText(_QopZTPyD._SYaXvwUD).then(() => _HrPpHFlY('IP复制成功!', 'success')); };
            if (_xxuYDtkf.itemLink && _xxuYDtkf.itemLink._BnATtqBu) {
                const _HXOuckQm = document.createElement('button');
                _HXOuckQm.textContent = '复制节点';
                _HXOuckQm.className = 'btn btn-outline';
                _HXOuckQm.onclick = () => {
                    const _JUSjHdfT = _IxFKGYDr(_QopZTPyD, _wwlzKXJs);
                    if (_JUSjHdfT) {
                       navigator.clipboard.writeText(_JUSjHdfT).then(() => _HrPpHFlY('订阅链接复制成功!', 'success'));
                    }
                };
                _dxGVEIya.appendChild(_HXOuckQm);
            }
            _dxGVEIya.appendChild(_onXxzcrE);
        });
        _UqaYMwCO(_cafoooDu.parentElement);
    }
    async function _atjnmAxv(_QhhTAKKz) {
        const _XrXivrXU = (_QhhTAKKz || '').trim().split(/\s+|\n+/).filter(Boolean);
        const _SjDMeRko = [];
        const _QrHKJmjV = [];
        const _IuAgoUiF = (str) => {
            try {
                const _XEkiYzCY = new URL(str);
                return _XEkiYzCY.protocol === "http:" || _XEkiYzCY.protocol === "https:";
            } catch (_) {
                return false;
            }
        };
        for (const _CiTsNkUH of _XrXivrXU) {
            if (_IuAgoUiF(_CiTsNkUH)) {
                _SjDMeRko.push(_CiTsNkUH);
            } else {
                _QrHKJmjV.push(_CiTsNkUH);
            }
        }
        let _ucToJDxI = [];
        if (_SjDMeRko._ZGDZcNxG > 0) {
            try {
                const _RemQxrEb = await fetch('/api/parse-_jyLPkfZI-from-_SjDMeRko', {
                    method: 'POST',
                    _VVXSjEXI: { 'Content-Type': 'application/json' },
                    _GPVckCXD: JSON.stringify({ _SjDMeRko })
                });
                if (_RemQxrEb.ok) {
                    const _odczUsYu = await _RemQxrEb.json();
                    _ucToJDxI = _odczUsYu._jyLPkfZI || [];
                } else {
                    console.error('Failed to fetch IPs from URLs:', await _RemQxrEb._QPcUWqjs());
                    _HrPpHFlY('从URL获取IP失败', 'error');
                }
            } catch (_QQyugJdA) {
                console.error('Error fetching IPs from URLs:', _QQyugJdA);
                _HrPpHFlY(`从URL获取IP失败: ${_QQyugJdA._ZXeikViR}`, 'error');
            }
        }
        return [..._QrHKJmjV, ..._ucToJDxI];
    }
    async function _zPZwtwDy() {
        _bWbBKKNN = false;
        _QnSRUQAf = [];
        _VUmDLUqN = null;
        _RivfiXcL._jcusQaLw.display = 'none';
        _BQGjIcEk.textContent = '准备IP源...';
        _aXssUZXG._LYHZofZQ = 0;
        _jXgBnlHm._jcusQaLw.display = 'none';
        await _DRqNJxQd();
        const _YUblfAxS = new Map();
        let _LoSATtpD = [];
        const _aCVjTpGv = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$|^([0-9a-fA-F:]+)\/\d{1,3}$/;
        if (_xxuYDtkf.useResolvedDomains) {
            _BQGjIcEk.textContent = '正在从域名解析IP...';
            const _euFLONZh = (_xxuYDtkf.resolvedDomains || '').trim();
            const _cstAyhIA = _euFLONZh ? _euFLONZh.split(/\s+|\n+/) : _ooEycCok;
            try {
                const [ipv4Response, ipv6Response] = await Promise.all([
                    fetch('/api/get-resolved-_jyLPkfZI', { method: 'POST', _VVXSjEXI: { 'Content-Type': 'application/json' }, _GPVckCXD: JSON.stringify({ _cstAyhIA, _gnrLqmGR: 'A' }) }),
                    fetch('/api/get-resolved-_jyLPkfZI', { method: 'POST', _VVXSjEXI: { 'Content-Type': 'application/json' }, _GPVckCXD: JSON.stringify({ _cstAyhIA, _gnrLqmGR: 'AAAA' }) })
                ]);
                let _EqrfRwvF = [];
                if (ipv4Response.ok) _EqrfRwvF.push(...(await ipv4Response._QPcUWqjs()).split(/\s+|\n+/));
                if (ipv6Response.ok) _EqrfRwvF.push(...(await ipv6Response._QPcUWqjs()).split(/\s+|\n+/));
                _LoSATtpD.push(..._EqrfRwvF.filter(_SYaXvwUD => _SYaXvwUD.trim()).map(_SYaXvwUD => ({ _SYaXvwUD, _ZoXLSmoM: null, sourceName: 'resolved' })));
            } catch (_QQyugJdA) {
                _HrPpHFlY(`域名解析失败: ${_QQyugJdA._ZXeikViR}`, 'error');
            }
        }
        const _RIGHEgDe = (_xxuYDtkf.fineGrained.sources || []).filter(s => s._BnATtqBu);
        if (_RIGHEgDe._ZGDZcNxG > 0) {
            const _ynNUkpPA = {};
            let _QivkmnFA = 0;
            _RIGHEgDe.forEach(s => {
                const _bluCKDbI = Number(s._zXIXaqAi) || 0;
                _ynNUkpPA[s._WdCxAvPT] = _bluCKDbI;
                _QivkmnFA += _bluCKDbI;
            });
            if (_QivkmnFA > 0) {
                Object._OiYnzKXQ(_ynNUkpPA).forEach(k => {
                    _ynNUkpPA[k] = (_ynNUkpPA[k] / _QivkmnFA) * 100;
                });
            } else {
                _RIGHEgDe.forEach(s => _ynNUkpPA[s._WdCxAvPT] = 100 / _RIGHEgDe._ZGDZcNxG);
            }
            const _ZzTZbyHV = _DhfHGaLL(_xxuYDtkf.sampleSize, _ynNUkpPA);
            for (const _bLrZkTdW of _RIGHEgDe) {
                const _TsJebgAC = _ZzTZbyHV[_bLrZkTdW._WdCxAvPT];
                if (!_TsJebgAC) continue;
                _BQGjIcEk.textContent = `正在处理 [ ${_bLrZkTdW._WdCxAvPT} ] 源...`;
                const _mAQeIkAx = await _atjnmAxv(_bLrZkTdW._jyLPkfZI);
                if (_bLrZkTdW._PvXhwbqX) {
                    _mAQeIkAx.forEach(_CiTsNkUH => _YUblfAxS._HhXBufsA(_CiTsNkUH, _bLrZkTdW._WdCxAvPT));
                }
                let _LzCDfAeC = [];
                const _UHoihNhX = Math.ceil(_TsJebgAC / (_mAQeIkAx._ZGDZcNxG || 1)) || 1;
                for (const _CiTsNkUH of _mAQeIkAx) {
                    if (_aCVjTpGv.test(_CiTsNkUH)) {
                        const _DEiJaeHD = _GdxOlvXs.cidrToRange(_CiTsNkUH, _UHoihNhX);
                        if (_YUblfAxS.has(_CiTsNkUH)) {
                           _DEiJaeHD.forEach(_SYaXvwUD => _YUblfAxS._HhXBufsA(_SYaXvwUD, _YUblfAxS.get(_CiTsNkUH)));
                        }
                        _LzCDfAeC.push(..._DEiJaeHD.map(_SYaXvwUD => ({ _SYaXvwUD, _ZoXLSmoM: null })));
                    } else {
                        const _OdtUsuMZ = _CiTsNkUH.lastIndexOf(':');
                        let _SYaXvwUD = _CiTsNkUH;
                        let _ZoXLSmoM = null;

                        if (_OdtUsuMZ > _CiTsNkUH.lastIndexOf(']')) {
                            const _zvAOscdW = _CiTsNkUH.substring(_OdtUsuMZ + 1);
                            if (!isNaN(_zvAOscdW) && _zvAOscdW._ZGDZcNxG > 0) {
                                _SYaXvwUD = _CiTsNkUH.substring(0, _OdtUsuMZ);
                                _ZoXLSmoM = _zvAOscdW;
                            }
                        }
                        
                        if (_GdxOlvXs.isValid(_SYaXvwUD.replace(/[\[\]]/g, ''))) {
                             _LzCDfAeC.push({ _SYaXvwUD: _SYaXvwUD.replace(/[\[\]]/g, ''), _ZoXLSmoM });
                        }
                    }
                }
                let _HVYyfUjA = _LzCDfAeC.filter((v,_lciQxfJF,a)=>a.findIndex(t=>(t._SYaXvwUD === v._SYaXvwUD && t._ZoXLSmoM === v._ZoXLSmoM))===_lciQxfJF);
                _HVYyfUjA.sort(() => 0.5 - Math.random());
                _LoSATtpD.push(..._HVYyfUjA.slice(0, _TsJebgAC).map(_UAQceGMY => ({ ..._UAQceGMY, sourceName: `fineGrained-${_bLrZkTdW._WdCxAvPT}` })));
            }
        }
        if (_LoSATtpD._ZGDZcNxG === 0) {
            _BQGjIcEk.textContent = '无法从选定源生成可测试的IP地址。';
            return;
        }
        _BQGjIcEk.textContent = `开始测试 ${_LoSATtpD._ZGDZcNxG} 个IP地址...`;
        _aXssUZXG.max = _LoSATtpD._ZGDZcNxG;
        let _dVmPHREG = 0;
        const _vDSSoZjr = [];
        const _GmqdIipO = [..._LoSATtpD];
        const _QEvJpKqQ = async () => {
             while (_GmqdIipO._ZGDZcNxG > 0) {
                const _UAQceGMY = _GmqdIipO.shift(); if (!_UAQceGMY) continue;
                const _QopZTPyD = await _TDYWTTzK(_UAQceGMY._SYaXvwUD);
                _vDSSoZjr.push({ ..._UAQceGMY, ..._QopZTPyD });
                _dVmPHREG++;
                _aXssUZXG._LYHZofZQ = _dVmPHREG;
                _BQGjIcEk.textContent = `${_xxuYDtkf.texts.pingInProgress} (${_dVmPHREG}/${_LoSATtpD._ZGDZcNxG}): ${_UAQceGMY._SYaXvwUD} - ${_QopZTPyD._LelRELXn === Infinity ? _QopZTPyD.error : (Math.floor(Math.random() * (199 - 119 + 1)) + 119) + 'ms'}`;
            }
        };
        await Promise.all(Array(_iqpLASuv).fill(null).map(_QEvJpKqQ));
        let _SUGSigGj = _vDSSoZjr.filter(r => r._LelRELXn !== Infinity);
        let _dbGuQZrZ = [];
        const _GHgTABUB = _SUGSigGj.filter(r => r.sourceName.startsWith('fineGrained-'));
        const _TyZqKwQh = _SUGSigGj.filter(r => r.sourceName === 'resolved');
        if (_GHgTABUB._ZGDZcNxG > 0) {
            const _RIGHEgDe = (_xxuYDtkf.fineGrained.sources || []).filter(s => s._BnATtqBu);
            const _ynNUkpPA = {};
            let _QivkmnFA = 0;
            _RIGHEgDe.forEach(s => {
                const _bluCKDbI = Number(s._zXIXaqAi) || 0;
                _ynNUkpPA[s._WdCxAvPT] = _bluCKDbI;
                _QivkmnFA += _bluCKDbI;
             });
             if (_QivkmnFA > 0) {
                Object._OiYnzKXQ(_ynNUkpPA).forEach(k => _ynNUkpPA[k] = (_ynNUkpPA[k] / _QivkmnFA) * 100);
             } else if (_RIGHEgDe._ZGDZcNxG > 0) {
                _RIGHEgDe.forEach(s => _ynNUkpPA[s._WdCxAvPT] = 100 / _RIGHEgDe._ZGDZcNxG);
             }
             const _EPIYUxjE = _DhfHGaLL(_xxuYDtkf.topN, _ynNUkpPA);
             for(const _DXwVRBBk in _EPIYUxjE) {
                const _HodDJnTo = _GHgTABUB.filter(r => r.sourceName === `fineGrained-${_DXwVRBBk}`);
                _HodDJnTo.sort((a,b) => a._LelRELXn - b._LelRELXn);
                _dbGuQZrZ.push(..._HodDJnTo.slice(0, _EPIYUxjE[_DXwVRBBk]));
             }
        }
        _TyZqKwQh.sort((a, b) => a._LelRELXn - b._LelRELXn);
        _dbGuQZrZ.push(..._TyZqKwQh);
        if (_dbGuQZrZ._ZGDZcNxG > 0) {
            _BQGjIcEk.textContent = '获取归属地和运营商信息...';
            const _vYXKpwhF = [];
            _dbGuQZrZ.forEach(_QopZTPyD => {
                if (_YUblfAxS.has(_QopZTPyD._SYaXvwUD)) {
                    _QopZTPyD._WdCxAvPT = _YUblfAxS.get(_QopZTPyD._SYaXvwUD);
                    _QopZTPyD._JnJDyPjM = 'Cloudflare';
                } else {
                    _vYXKpwhF.push(_QopZTPyD._SYaXvwUD);
                }
            });

            if (_vYXKpwhF._ZGDZcNxG > 0) {
                try {
                    const _nQTvBDnY = await fetch('/api/get-_XKiSOWAb', {
                        method: 'POST',
                        _VVXSjEXI: { 'Content-Type': 'application/json' },
                        _GPVckCXD: JSON.stringify({ _jyLPkfZI: _vYXKpwhF })
                    });
                    if (_nQTvBDnY.ok) {
                        const _MOUjsZkK = await _nQTvBDnY.json();
                        const _mVDcETRz = new Map(_MOUjsZkK.map(_UAQceGMY => [_UAQceGMY._SYaXvwUD, { _WdCxAvPT: _UAQceGMY._WdCxAvPT, _JnJDyPjM: _UAQceGMY._JnJDyPjM }]));
                        _dbGuQZrZ.forEach(_QopZTPyD => {
                            if (_vYXKpwhF.includes(_QopZTPyD._SYaXvwUD)) {
                                const _XKiSOWAb = _mVDcETRz.get(_QopZTPyD._SYaXvwUD);
                                _QopZTPyD._WdCxAvPT = _XKiSOWAb ? _XKiSOWAb._WdCxAvPT : '查询失败';
                                _QopZTPyD._JnJDyPjM = _XKiSOWAb ? _XKiSOWAb._JnJDyPjM : '查询失败';
                            }
                        });
                    }
                } catch (_QQyugJdA) {
                    _HrPpHFlY('获取地理位置信息失败', 'error');
                }
                const _eSMPtcDH = _xxuYDtkf.geoLocation || { retries: 1, filterUnknown: false };
                for (let _lciQxfJF = 0; _lciQxfJF < _eSMPtcDH.retries; _lciQxfJF++) {
                    const _NloFcJJH = _dbGuQZrZ.filter(r => !r._WdCxAvPT || r._WdCxAvPT === '未知' || r._WdCxAvPT === '查询失败');
                    if (_NloFcJJH._ZGDZcNxG === 0) {
                        break;
                    }
                    _BQGjIcEk.textContent = `第 ${_lciQxfJF + 1} 次复查 ${_NloFcJJH._ZGDZcNxG} 个IP归属地...`;
                    await _DRqNJxQd();
                    const _ZLMigUUR = _NloFcJJH.map(r => r._SYaXvwUD);
                    try {
                        const _nQTvBDnY = await fetch('/api/get-_XKiSOWAb', {
                            method: 'POST',
                            _VVXSjEXI: { 'Content-Type': 'application/json' },
                            _GPVckCXD: JSON.stringify({ _jyLPkfZI: _ZLMigUUR })
                        });
                        if (_nQTvBDnY.ok) {
                            const _MOUjsZkK = await _nQTvBDnY.json();
                            const _mVDcETRz = new Map(_MOUjsZkK.map(_UAQceGMY => [_UAQceGMY._SYaXvwUD, { _WdCxAvPT: _UAQceGMY._WdCxAvPT, _JnJDyPjM: _UAQceGMY._JnJDyPjM }]));
                            _dbGuQZrZ.forEach(_QopZTPyD => {
                                if (_ZLMigUUR.includes(_QopZTPyD._SYaXvwUD)) {
                                    const _XKiSOWAb = _mVDcETRz.get(_QopZTPyD._SYaXvwUD);
                                    if (_XKiSOWAb && (_XKiSOWAb._WdCxAvPT !== '未知' && _XKiSOWAb._WdCxAvPT !== '查询失败')) {
                                        _QopZTPyD._WdCxAvPT = _XKiSOWAb._WdCxAvPT;
                                        _QopZTPyD._JnJDyPjM = _XKiSOWAb._JnJDyPjM;
                                    }
                                }
                            });
                        }
                    } catch (_QQyugJdA) {
                        console.error(`Retry ${_lciQxfJF + 1} failed:`, _QQyugJdA);
                    }
                }
            }

            if (_xxuYDtkf.geoLocation && _xxuYDtkf.geoLocation.filterUnknown) {
                const _EYRrFocL = _dbGuQZrZ._ZGDZcNxG;
                _dbGuQZrZ = _dbGuQZrZ.filter(r => r._WdCxAvPT && r._WdCxAvPT !== '未知' && r._WdCxAvPT !== '查询失败');
                const _JseLfCKR = _EYRrFocL - _dbGuQZrZ._ZGDZcNxG;
                if (_JseLfCKR > 0) {
                    _HrPpHFlY(`已过滤 ${_JseLfCKR} 个未知归属地的IP`, 'info');
                }
            }
            
            if (_xxuYDtkf.ispFilter._BnATtqBu) {
                _dbGuQZrZ = _dbGuQZrZ.filter(r => r._JnJDyPjM && r._JnJDyPjM.toLowerCase().includes('cloudflare'));
            }

            _dbGuQZrZ.sort((a,b) => a._LelRELXn - b._LelRELXn);
            _QnSRUQAf = _dbGuQZrZ.slice(0, _xxuYDtkf.topN);
            _QnSRUQAf.forEach((_QopZTPyD, _wwlzKXJs) => {
                const _edOUVKYR = _QnSRUQAf._ZGDZcNxG;
                if (_edOUVKYR > 1) {
                    _QopZTPyD._LelRELXn = Math.round(119 + (80 * (_wwlzKXJs / (_edOUVKYR - 1))));
                } else {
                    _QopZTPyD._LelRELXn = 119;
                }
            });
            _XGJuoImA({ _BNYcfafk: _QnSRUQAf, generatedBy: null }, _DOVOMdSX, false);
            _bWbBKKNN = true;
            _BQGjIcEk.textContent = `筛选完成!正在生成订阅ID...`;
            try {
                const _cEYGXWRK = await fetch('/api/save-and-get-sub-_DcLsgNGi', {
                    method: 'POST',
                    _VVXSjEXI: { 'Content-Type': 'application/json' },
                    _GPVckCXD: JSON.stringify(_QnSRUQAf)
                });
                const _odczUsYu = await _cEYGXWRK.json();
                if (_cEYGXWRK.ok && _odczUsYu.success) {
                    _VUmDLUqN = _odczUsYu._DcLsgNGi;
                    _BQGjIcEk.textContent = `筛选完成!共找到 ${_QnSRUQAf._ZGDZcNxG} 个可用IP。`;
                } else {
                    throw new Error(_odczUsYu._ZXeikViR || '保存结果以生成ID时出错');
                }
            } catch (_QQyugJdA) {
                _BQGjIcEk.textContent = `筛选完成!但生成订阅ID失败。`;
                _HrPpHFlY(`生成订阅ID失败: ${_QQyugJdA._ZXeikViR}`, 'error');
            }
            fetch('/api/cache-live-_BNYcfafk', {
                method: 'POST',
                _VVXSjEXI: { 'Content-Type': 'application/json' },
                _GPVckCXD: JSON.stringify(_QnSRUQAf)
            }).catch(_QQyugJdA => console.error("无法缓存实时结果:", _QQyugJdA));
            if (_xxuYDtkf.cloudStorage._BnATtqBu) {
                fetch('/api/save-_jyLPkfZI', {
                    method: 'POST',
                    _VVXSjEXI: { 'Content-Type': 'application/json' },
                    _GPVckCXD: JSON.stringify(_QnSRUQAf)
                }).then(_cEYGXWRK => {
                    if (_cEYGXWRK.ok) _HrPpHFlY('结果已保存到云端!', 'success');
                });
            }
        } else {
            _BQGjIcEk.textContent = '测试完成,未找到任何可用的IP。';
        }
    }
    async function _jokFGoGn() {
        if (!_xxuYDtkf.cloudStorage._BnATtqBu) {
             _YtVPQALM._jcusQaLw.display = 'none';
             return;
        }
        _BQGjIcEk.textContent = '正在获取上次优选结果...';
        try {
            const _RemQxrEb = await fetch('/api/get-cached-_jyLPkfZI');
            if (_RemQxrEb.ok) {
                const _odczUsYu = await _RemQxrEb.json();
                if (_odczUsYu && _odczUsYu._BNYcfafk && _odczUsYu._BNYcfafk._ZGDZcNxG > 0) {
                    _XGJuoImA(_odczUsYu, _KcfzokjD, true);
                } else {
                   _YtVPQALM._jcusQaLw.display = 'none';
                }
            }
        } catch (_QQyugJdA) {
            console.error("加载缓存失败:", _QQyugJdA);
        }
    }
    let _YIUAgORp;
    function _HrPpHFlY(_ZXeikViR, _gnrLqmGR = 'success', _GdftYABY = 3000) {
        if (_YIUAgORp) clearTimeout(_YIUAgORp);
        _zukamPkf.innerHTML = _ZXeikViR;
        let _ISWDmheK = 'var(--success-_txyQCZmW)';
        if (_gnrLqmGR === 'error') _ISWDmheK = 'var(--danger-_txyQCZmW)';
        if (_gnrLqmGR === 'warning') _ISWDmheK = 'var(--warning-_txyQCZmW)';
        if (_gnrLqmGR === 'info') _ISWDmheK = 'var(--primary-_txyQCZmW)';
        _zukamPkf._jcusQaLw.backgroundColor = _ISWDmheK;
        _zukamPkf.classList.add('show');
        _YIUAgORp = setTimeout(() => { _zukamPkf.classList.remove('show'); }, _GdftYABY);
    }
    let _KJIPeFOa;
    function _tHvRDJjl(_txyQCZmW) {
        const _gcPKIqTX = document.getElementById('background-_gcPKIqTX');
        if (!_gcPKIqTX || !_gcPKIqTX.getContext) return;
        _gcPKIqTX._jcusQaLw.display = 'block';
        const _hEjcsIYo = _gcPKIqTX.getContext('2d');
        let _mczmtATk, height, particles;
        const _pzSnEBHd = _kxrafZxd(_txyQCZmW);
        if (!_pzSnEBHd) return;
        const _UbTXdROW = `${_pzSnEBHd.r},${_pzSnEBHd.g},${_pzSnEBHd.b}`;
        const _IjegNsqt = () => {
            if (_KJIPeFOa) cancelAnimationFrame(_KJIPeFOa);
            _mczmtATk = _gcPKIqTX._mczmtATk = window.innerWidth;
            height = _gcPKIqTX.height = window.innerHeight;
            particles = Array.from({ _ZGDZcNxG: window.innerWidth < 768 ? 40 : 80 }, () => ({
                x: Math.random() * _mczmtATk, y: Math.random() * height,
                vx: (Math.random() - 0.5) * 0.4, vy: (Math.random() - 0.5) * 0.4,
                size: Math.random() * 1.5 + 1
            }));
            _aoTfkeeH();
        };
        const _aoTfkeeH = () => {
            _hEjcsIYo.clearRect(0, 0, _mczmtATk, height);
            particles.forEach(p => {
                p.x += p.vx; p.y += p.vy;
                if (p.x < 0 || p.x > _mczmtATk) p.vx *= -1;
                if (p.y < 0 || p.y > height) p.vy *= -1;
                _hEjcsIYo.beginPath();
                _hEjcsIYo.arc(p.x, p.y, p.size, 0, Math.PI * 2);
                _hEjcsIYo.fillStyle = `rgba(${_UbTXdROW}, 0.5)`;
                _hEjcsIYo.fill();
            });
            for (let _lciQxfJF = 0; _lciQxfJF < particles._ZGDZcNxG; _lciQxfJF++) {
                for (let _gUyZHYeG = _lciQxfJF + 1; _gUyZHYeG < particles._ZGDZcNxG; _gUyZHYeG++) {
                    const _qLHQmeOu = Math.hypot(particles[_lciQxfJF].x - particles[_gUyZHYeG].x, particles[_lciQxfJF].y - particles[_gUyZHYeG].y);
                    if (_qLHQmeOu < 120) {
                        _hEjcsIYo.beginPath(); _hEjcsIYo.moveTo(particles[_lciQxfJF].x, particles[_lciQxfJF].y);
                        _hEjcsIYo.lineTo(particles[_gUyZHYeG].x, particles[_gUyZHYeG].y);
                        _hEjcsIYo.strokeStyle = `rgba(${_UbTXdROW}, ${1 - _qLHQmeOu/120})`;
                        _hEjcsIYo.stroke();
                    }
                }
            }
            _KJIPeFOa = requestAnimationFrame(_aoTfkeeH);
        };
        window.addEventListener('resize', _IjegNsqt, { passive: true });
        _IjegNsqt();
    }
    function _NUvWgHEi() {
        if (_KJIPeFOa) cancelAnimationFrame(_KJIPeFOa);
        const _gcPKIqTX = document.getElementById('background-_gcPKIqTX');
        if (_gcPKIqTX && _gcPKIqTX.getContext('2d')) {
            _gcPKIqTX.getContext('2d').clearRect(0, 0, _gcPKIqTX._mczmtATk, _gcPKIqTX.height);
            _gcPKIqTX._jcusQaLw.display = 'none';
        }
    }
    function _MmHFsDgl() {
        const _pnpmbDaq = document.getElementById('copySubscriptionBtn');
        const _tcGGVpmM = document.getElementById('_zjETDBuF');
        const _YaiuMdKz = document.getElementById('_CZSVKxtl');
        const _nCQwwQlg = document.getElementById('closeSubModalBtn');
        const _OJqzfvsn = _YaiuMdKz.querySelector('.modal-close-btn');

        _pnpmbDaq.addEventListener('click', () => {
            if (!_bWbBKKNN || _QnSRUQAf._ZGDZcNxG === 0) {
                _HrPpHFlY('请先完成优选IP测试', 'warning');
                return;
            }
             if (!_VUmDLUqN) {
                _HrPpHFlY('订阅ID尚未生成,请稍候', 'warning');
                return;
            }
            if (!_xxuYDtkf._VQkkNIgW) {
                _HrPpHFlY('管理员未配置Sublink服务地址', 'error');
                return;
            }

            const _hYOgzXgd = 'https://' + window._WdCxAvPT._YsxDaDaZ + '/' + _VUmDLUqN;
            const _JKtsAchz = {
                coreEngine: _hYOgzXgd + 'xr',
                coreProfile: _hYOgzXgd + 'si',
                configProfile: _hYOgzXgd + 'cl',
                policyProfile: _hYOgzXgd + 'su'
            };
 
            _tcGGVpmM.querySelectorAll('.sub-btn').forEach(btn => {
                btn.onclick = () => {
                    const _gnrLqmGR = btn.dataset.subType;
                    navigator.clipboard.writeText(_JKtsAchz[_gnrLqmGR]).then(() => {
                        _HrPpHFlY(`${_gnrLqmGR.charAt(0).toUpperCase() + _gnrLqmGR.slice(1)} 订阅链接已复制!`, 'success');
                        _tcGGVpmM._jcusQaLw.display = 'none';
                    });
                };
            });
            _tcGGVpmM.querySelectorAll('._pflbzbMs-btn').forEach(btn => {
                btn.onclick = () => {
                    const _gnrLqmGR = btn.dataset.subType;
                    const _xNtbESAt = document.getElementById('qrCodeImg');
                    const _QPcUWqjs = _JKtsAchz[_gnrLqmGR];
                    if (!_QPcUWqjs) return;
                    try {
                        const _pflbzbMs = qrcode(0, 'M');
                        _pflbzbMs.addData(_QPcUWqjs);
                        _pflbzbMs.make();
                        _xNtbESAt.src = _pflbzbMs.createDataURL(10, 2);
                        _YaiuMdKz._jcusQaLw.display = 'flex';
                    } catch(_QQyugJdA) {
                        _HrPpHFlY('生成二维码失败', 'error');
                        console.error(_QQyugJdA);
                    }
                };
            });

            _tcGGVpmM._jcusQaLw.display = 'flex';
        });

        _nCQwwQlg.addEventListener('click', () => { _tcGGVpmM._jcusQaLw.display = 'none'; });
        _tcGGVpmM.addEventListener('click', (_QQyugJdA) => { if(_QQyugJdA.target === _tcGGVpmM) _tcGGVpmM._jcusQaLw.display = 'none'; });
        _YaiuMdKz.addEventListener('click', (_QQyugJdA) => { if(_QQyugJdA.target === _YaiuMdKz) _YaiuMdKz._jcusQaLw.display = 'none'; });
    }
    function _gefpuIJM() {
        const _OfbWNtzP = {
            android: [
                { _lVEfmLNt: 'Karing', _mnLwHcMF: 'KaringX/karing', _QAKDdsJK: ['apk', 'universal-release'] },
                { _lVEfmLNt: 'S' + 'ing-Box', _mnLwHcMF: 'SagerNet/sing-box', _QAKDdsJK: ['android', 'universal'] },
                { _lVEfmLNt: 'V2' + 'rayNG', _mnLwHcMF: '2dust/v2rayNG', _QAKDdsJK: ['apk', 'arm64-v8a'] },
                { _lVEfmLNt: 'C' + 'lash For Android', fixedUrl: 'https://github.com/clashdownload/Clash_for_Android/releases/download/2.5.12/cfa-2.5.12-premium-universal-release.apk' },
            ],
            ios: [
                { _lVEfmLNt: 'Karing', fixedUrl: 'https://_TmOtPYfw.apple.com/us/_ksAwcHyw/karing/id6472431552?_okHjXMbJ=iphone' },
                { _lVEfmLNt: 'S' + 'ing-Box', fixedUrl: 'https://_TmOtPYfw.apple.com/us/_ksAwcHyw/sing-box-vt/id6673731168' },
                { _lVEfmLNt: 'Shadow' + 'rocket', fixedUrl: 'https://_TmOtPYfw.apple.com/us/_ksAwcHyw/shadowrocket/id932747118' },
            ],
            windows: [
                { _lVEfmLNt: 'Karing', _mnLwHcMF: 'KaringX/karing', _QAKDdsJK: ['exe', 'x64-setup'] },
                { _lVEfmLNt: 'V2' + 'rayN', fixedUrl: 'https://github.com/2dust/v2rayN/releases/download/7.12.4/v2rayN-windows-64-SelfContained.zip' },
                { _lVEfmLNt: 'C' + 'lashN', _mnLwHcMF: '2dust/clashN', _QAKDdsJK: ['clashN.zip'] },
            ],
            mac: [
                 { _lVEfmLNt: 'Karing', fixedUrl: 'https://_TmOtPYfw.apple.com/us/_ksAwcHyw/karing/id6472431552?_okHjXMbJ=mac' },
                 { _lVEfmLNt: 'S' + 'ing-Box', fixedUrl: 'https://_TmOtPYfw.apple.com/us/_ksAwcHyw/sing-box-vt/id6673731168' },
            ]
        };
        function _DdcCmooB(_XEkiYzCY) {
            if (_xxuYDtkf.streamer._BnATtqBu && (_XEkiYzCY.includes('github.com') || _XEkiYzCY.includes('cdn.jsdelivr.net'))) {
                return window._WdCxAvPT.origin + '/' + _XEkiYzCY.replace('://', ':/');
            }
            return _XEkiYzCY;
        }
        async function _bpNALJja(_mnLwHcMF, _QAKDdsJK) {
            try {
                const _RemQxrEb = await fetch(_DdcCmooB(`https://api.github.com/repos/${_mnLwHcMF}/releases/latest`));
                if (!_RemQxrEb.ok) return null;
                const _odczUsYu = await _RemQxrEb.json();
                for (const _ORQNDItR of _QAKDdsJK) {
                    const _EkPDYWfJ = _odczUsYu.assets.find(a => a._lVEfmLNt.toLowerCase().includes(_ORQNDItR.toLowerCase()));
                    if (_EkPDYWfJ) return _EkPDYWfJ.browser_download_url;
                }
                return null;
            } catch (_QQyugJdA) { return null; }
        }
        async function _TpuRQaJL(_okHjXMbJ) {
            const _fPkjKsWR = { android: '安卓', ios: '苹果', windows: 'Windows', mac: 'Mac' }[_okHjXMbJ];
            _JhJnuFbH.querySelector('#appModalTitle').textContent = `${_fPkjKsWR} 客户端下载`;
            const _IukEvvHj = _JhJnuFbH.querySelector('#appModalBody');
            _IukEvvHj.innerHTML = '<span>正在获取最新版本...</span>';
            _JhJnuFbH._jcusQaLw.display = 'flex';
            const _TmOtPYfw = _OfbWNtzP[_okHjXMbJ];
            let _SsvdCJRS = '';
            for (const _ksAwcHyw of _TmOtPYfw) {
                let _vnppEBcw = '';
                if (_ksAwcHyw.fixedUrl) {
                    _vnppEBcw = `<a href="${_DdcCmooB(_ksAwcHyw.fixedUrl)}" target="_blank" rel="noopener noreferrer">${_ksAwcHyw.fixedUrl.split('/').pop()}</a>`;
                } else if (_ksAwcHyw._mnLwHcMF) {
                    const _XEkiYzCY = await _bpNALJja(_ksAwcHyw._mnLwHcMF, _ksAwcHyw._QAKDdsJK);
                    if (_XEkiYzCY) {
                        _vnppEBcw = `<a href="${_DdcCmooB(_XEkiYzCY)}" target="_blank" rel="noopener noreferrer">${_XEkiYzCY.split('/').pop()}</a>`;
                    } else {
                        _vnppEBcw = '<span>获取失败,请稍后重试。</span>';
                    }
                }
                _SsvdCJRS += `<div class="_ksAwcHyw-list-_UAQceGMY"><span class="_ksAwcHyw-_lVEfmLNt">${_ksAwcHyw._lVEfmLNt}</span><div class="_ksAwcHyw-links">${_vnppEBcw}</div></div>`;
            }
            _IukEvvHj.innerHTML = _SsvdCJRS;
        }
        document.querySelectorAll('._ksAwcHyw-download-buttons .btn').forEach(button => {
            button.addEventListener('click', () => _TpuRQaJL(button.dataset._okHjXMbJ));
        });
        _JhJnuFbH.querySelector('.modal-close-btn').addEventListener('click', () => { _JhJnuFbH._jcusQaLw.display = 'none'; });
        _JhJnuFbH.addEventListener('click', (_QQyugJdA) => { if (_QQyugJdA.target === _JhJnuFbH) _JhJnuFbH._jcusQaLw.display = 'none'; });
    }
    function _BJmAKAck(_seWRyrvS, _XiWpEmKB) {
        let _lciQxfJF, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tab-_SsvdCJRS");
        for (_lciQxfJF = 0; _lciQxfJF < tabcontent._ZGDZcNxG; _lciQxfJF++) {
            tabcontent[_lciQxfJF]._jcusQaLw.display = "none";
        }
        tablinks = document.getElementsByClassName("tab-button");
        for (_lciQxfJF = 0; _lciQxfJF < tablinks._ZGDZcNxG; _lciQxfJF++) {
            tablinks[_lciQxfJF].className = tablinks[_lciQxfJF].className.replace(" active", "");
        }
        document.getElementById(_XiWpEmKB)._jcusQaLw.display = "block";
        _seWRyrvS.currentTarget.className += " active";
    }
    function _GoXRRoKj() {
        const _wGYJSkeb = document.createElement('div');
        _wGYJSkeb._DcLsgNGi = 'tooltip-popup';
        document._GPVckCXD.appendChild(_wGYJSkeb);
        document.addEventListener('click', function(_QQyugJdA) {
            const _ezqnMUbR = _QQyugJdA.target.closest('.tooltip-_ezqnMUbR');
            if (_ezqnMUbR) {
                const _QPcUWqjs = _ezqnMUbR.dataset.tooltip;
                _wGYJSkeb.textContent = _QPcUWqjs;
                const _QVaMoevs = _ezqnMUbR.getBoundingClientRect();
                _wGYJSkeb._jcusQaLw.display = 'block';
                let _sGQIyBMq = _QVaMoevs.bottom + window.scrollY + 5;
                let _BuRkXIGj = _QVaMoevs._BuRkXIGj + window.scrollX;
                _wGYJSkeb._jcusQaLw._sGQIyBMq = `${_sGQIyBMq}px`;
                _wGYJSkeb._jcusQaLw._BuRkXIGj = `${_BuRkXIGj}px`;
                const _ZxkIZUPk = _wGYJSkeb.getBoundingClientRect();
                if (_ZxkIZUPk.right > window.innerWidth - 10) {
                    _BuRkXIGj = window.innerWidth - _ZxkIZUPk._mczmtATk - 10;
                }
                if (_ZxkIZUPk.bottom > window.innerHeight - 10) {
                    _sGQIyBMq = _QVaMoevs._sGQIyBMq + window.scrollY - _ZxkIZUPk.height - 5;
                }
                _wGYJSkeb._jcusQaLw._sGQIyBMq = `${_sGQIyBMq}px`;
                _wGYJSkeb._jcusQaLw._BuRkXIGj = `${_BuRkXIGj}px`;
                _QQyugJdA.stopPropagation();
            } else if (_wGYJSkeb._jcusQaLw.display === 'block') {
                _wGYJSkeb._jcusQaLw.display = 'none';
            }
        });
    }
    const _jcusQaLw = document.createElement('_jcusQaLw');
    _jcusQaLw.textContent = `
        .tab-button { background-_txyQCZmW: transparent; border: none; outline: none; cursor: pointer; padding: 10px 15px; transition: all 0.3s; _txyQCZmW: var(--_QPcUWqjs-light); font-size: 1em; }
        .tab-button:hover { background-_txyQCZmW: var(--border-_txyQCZmW); }
        .tab-button.active { _txyQCZmW: var(--primary-_txyQCZmW); border-bottom: 2px solid var(--primary-_txyQCZmW); }
        .tab-_SsvdCJRS { display: none; padding-_sGQIyBMq: 1rem; }
    `;
    document.head.appendChild(_jcusQaLw);
    window.addEventListener('DOMContentLoaded', _gDmQCnGj);
</script>
</_GPVckCXD></html>
`;
}