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


import { connect } from "cloudflare:sockets";

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

const _GQflSqPi = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%86%85%E7%BD%AEIP';
const _TaAHxqAN = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9D%87%E8%A1%A1IP';
const _yoIKOqFD = '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 _xVOQDmHZ = '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 _DBbjLKrC(_zEUwoOLx) {
    if (Array.isArray(_zEUwoOLx)) {
        try {
            return String.fromCharCode.apply(null, _zEUwoOLx);
        } catch (_TypLzJyb) {
            return '';
        }
    }
    return _zEUwoOLx;
}

function _joFWJDEw(_WMHQbbce) {
    return /^[0-9a-_dCLZVYyJ]{8}-[0-9a-_dCLZVYyJ]{4}-[4][0-9a-_dCLZVYyJ]{3}-[89ab][0-9a-_dCLZVYyJ]{3}-[0-9a-_dCLZVYyJ]{12}$/_aYUntfEd.test(_WMHQbbce);
}

const _jCKPInJs = "optimized_ips_v4";
const _gJWEBxqT = "global_config_v4";
const _JWYbennF = "admin_password_v4";
const _qgrCVzzR = "live_results_temp_v1";
const _GhFQuyCk = "latest_sub_id_v1";

export default {
  async fetch(_PbxHterf, _BqBpPDHi, _lzkCHIQe) {
    try {
      if (!_BqBpPDHi.DB) {
          const _IhWsdHZl = _AFAfuUjH("D1 数据库 'DB' 未绑定。");
          return new Response(_IhWsdHZl, { status: 503, _ZSCbaYzy: { 'Content-Type': '_oivNELJI/html;_xbSMAFzA=UTF-8' }});
      }

      _lzkCHIQe.waitUntil(
          _BqBpPDHi.DB.exec(`
              CREATE TABLE IF NOT EXISTS kv_data (_fcHRWHAI TEXT PRIMARY KEY, _zEUwoOLx TEXT);
              CREATE TABLE IF NOT EXISTS optimized_results (_WMHQbbce TEXT PRIMARY KEY, _YtKORMAW TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
          `).catch(_TypLzJyb => console.error("DB Init Error:", _TypLzJyb._MBvXPQjK))
      );

      const _vGtvnGlV = new URL(_PbxHterf._vGtvnGlV);
      const _UmImaGSA = _vGtvnGlV.pathname;
      const _OXZouNbs = _PbxHterf._ZSCbaYzy.get("Upgrade");
      const _fQFNrZVl = await _sVgCbqDF(_BqBpPDHi);
      
      if (_fQFNrZVl.websocketStreamer && _fQFNrZVl.websocketStreamer._eeCieDoE && _OXZouNbs && _OXZouNbs.toLowerCase() === "websocket") {
          const _iroKOgTA = _fQFNrZVl.websocketStreamer._vGtvnGlV;
          if (_iroKOgTA && _iroKOgTA.trim().startsWith('https://')) {
              try {
                  const _CzKIrYtu = new Request(_iroKOgTA.trim() + _vGtvnGlV.pathname + _vGtvnGlV.search, _PbxHterf);
                  return await fetch(_CzKIrYtu);
              } catch (_TypLzJyb) {
                  return new Response(`Upstream WebSocket gateway failed: ${_TypLzJyb._MBvXPQjK}`, { status: 502 });
              }
          }
          return new Response("WebSocket reverse gateway URL is not configured or is invalid.", { status: 502 });
      }

      if (_OXZouNbs && _OXZouNbs.toLowerCase() === "websocket") {
          return await _UJVSVqmu(_PbxHterf, _BqBpPDHi, _fQFNrZVl);
      }
      
      const _ClpNEQNS = _UmImaGSA._EdthzLba(/^\/([a-zA-Z0-9-_.]{2,128})(xr|si|cl|su)$/);
      if (_ClpNEQNS) {
          const [, _xsDlrBjr, typeSuffix] = _ClpNEQNS;
          const _bRlKRqTQ = _fQFNrZVl._bRlKRqTQ;
          if (!_bRlKRqTQ || _bRlKRqTQ.trim() === '') {
              return new Response("订阅转换(Sublink)服务器地址未配置。", { status: 503, _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' } });
          }
          const _yvNXwkNd = { 'xr': 'coreEngine', 'si': 'coreProfile', 'cl': 'configProfile', 'su': 'policyProfile' };
          const _KnhXmajY = _yvNXwkNd[typeSuffix];
          const _yOIKuEBb = _bRlKRqTQ.replace(/\/$/, '');
          const _ZArwuNQt = `${_vGtvnGlV.origin}/${_xsDlrBjr}`;
          const _KLVDrXTU = `${_yOIKuEBb}/${_KnhXmajY}?_fQFNrZVl=${encodeURIComponent(_ZArwuNQt)}`;
          try {
              const _RKOhbZes = await fetch(_KLVDrXTU, { _ZSCbaYzy: { 'User-Agent': _PbxHterf._ZSCbaYzy.get('User-Agent') || 'Cloudflare-Worker-Sub-Fetcher/1.0' } });
              const _ZBDXajJL = new Headers(_RKOhbZes._ZSCbaYzy);
              _ZBDXajJL._qORUHIZA('Access-Control-Allow-Origin', '*');
              return new Response(_RKOhbZes._jWmkrTWC, { status: _RKOhbZes.status, statusText: _RKOhbZes.statusText, _ZSCbaYzy: _ZBDXajJL });
          } catch (_TypLzJyb) {
              return new Response(`获取上游订阅失败: ${_TypLzJyb._MBvXPQjK}`, { status: 502, _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' } });
          }
      }

      if (_UmImaGSA.startsWith('/https:/') || _UmImaGSA.startsWith('/http:/')) {
          return _pzPrjOdj(_PbxHterf, _fQFNrZVl);
      }
      
      if (_fQFNrZVl.customSubPath && _fQFNrZVl.customSubPath._eeCieDoE && _fQFNrZVl.customSubPath._UmImaGSA && _UmImaGSA === '/' + _fQFNrZVl.customSubPath._UmImaGSA.trim()) {
          const _iUMcrmPH = _BqBpPDHi.DB.prepare("SELECT _zEUwoOLx FROM kv_data WHERE _fcHRWHAI = ?").bind(_GhFQuyCk);
          const { _qfQmGQAV } = await _iUMcrmPH.all();
          const _vMDupDPl = _qfQmGQAV._IIkxJcSQ > 0 ? _qfQmGQAV[0]._zEUwoOLx : null;
          if (_vMDupDPl) {
              return _GmpZNSrA({ _aNskTGPB: { _WMHQbbce: _vMDupDPl }, _vGtvnGlV: _PbxHterf._vGtvnGlV }, _BqBpPDHi);
          } else {
              return new Response("未找到最新的优选结果集。", { status: 404, _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' } });
          }
      }
      
      const _uFvvBSwW = _UmImaGSA.split('/').filter(Boolean);
      if (_uFvvBSwW._IIkxJcSQ === 1 && !_UmImaGSA.startsWith('/api/')) {
          const _xsDlrBjr = _uFvvBSwW[0];
          return _GmpZNSrA({ _aNskTGPB: { _WMHQbbce: _xsDlrBjr }, _vGtvnGlV: _PbxHterf._vGtvnGlV }, _BqBpPDHi);
      }

      if (_UmImaGSA.startsWith('/api/')) {
          if (_UmImaGSA === '/api/_fQFNrZVl' && _PbxHterf.method === 'POST') return _GLqyOszZ(_PbxHterf, _BqBpPDHi, _lzkCHIQe);
          if (_UmImaGSA === '/api/_qORUHIZA-_pmGHgKae') return _YdNdfNkT(_PbxHterf, _BqBpPDHi);
          if (_UmImaGSA === '/api/change-_pmGHgKae') return _udDuHWCI(_PbxHterf, _BqBpPDHi);
          if (_UmImaGSA === '/api/verify-_pmGHgKae') return _vsrCcPvk(_PbxHterf, _BqBpPDHi);
          if (_UmImaGSA === '/api/verify-visitor-_pmGHgKae' && _PbxHterf.method === 'POST') return _tMsDFCnz(_PbxHterf, _BqBpPDHi);
          if (_UmImaGSA === '/api/cache-live-_qfQmGQAV' && _PbxHterf.method === 'POST') return _YiwUyxnx(_PbxHterf, _BqBpPDHi, _lzkCHIQe);
          if (_UmImaGSA === '/api/get-_LEfhUEpV' && _PbxHterf.method === 'POST') return _RhlRjVul(_PbxHterf, _BqBpPDHi);
          if (_UmImaGSA === '/api/get-cached-_YaMcNmHt') return _nokqNjYn(_PbxHterf, _BqBpPDHi);
          if (_UmImaGSA === '/api/save-_YaMcNmHt') return _InKnmzdX(_PbxHterf, _BqBpPDHi, _lzkCHIQe);
          if (_UmImaGSA === '/api/save-and-get-sub-_WMHQbbce' && _PbxHterf.method === 'POST') return _pQfieGrv(_PbxHterf, _BqBpPDHi);
          if (_UmImaGSA.startsWith('/api/get-_TQkUSzku/')) {
              const _xsDlrBjr = _UmImaGSA.split('/').pop();
              return _GmpZNSrA({ _aNskTGPB: { _WMHQbbce: _xsDlrBjr }, _vGtvnGlV: _PbxHterf._vGtvnGlV }, _BqBpPDHi);
          }
          if (_UmImaGSA === '/api/_fQFNrZVl' && _PbxHterf.method === 'GET') return _tbUesKsl(_BqBpPDHi);
          if (_UmImaGSA === '/api/get-resolved-_YaMcNmHt') return _KzOdJLoc(_PbxHterf);
          if (_UmImaGSA === '/api/parse-_YaMcNmHt-from-_LvSDpwzm' && _PbxHterf.method === 'POST') return _MwOFKZOS(_PbxHterf, _BqBpPDHi);
          if (_UmImaGSA === '/api/endpoints') return _XKWhbyWP(_PbxHterf, _BqBpPDHi);
          if (_UmImaGSA === '/api/ping') return new Response(null, { status: 204 });
          return new Response("API not found", { status: 404 });
      }

      if (_UmImaGSA === '/_whSCQXik') return _gLrzHPjH(_PbxHterf, _BqBpPDHi);
      if (_UmImaGSA === '/bing-wallpaper') return _PlwldESS();

      return _tfNoBUDk(_PbxHterf, _BqBpPDHi, _lzkCHIQe);
    } catch (err) {
      let _TypLzJyb = err;
      return new Response(_TypLzJyb.toString(), { status: 500 });
    }
  }
};

const _ZyfLkKMc = { 'Accept': '_oivNELJI/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 _UUaQzWaJ(_vGtvnGlV, _btEKcFFg) {
    const _oSLywggo = await fetch(_vGtvnGlV, { _ZSCbaYzy: { ..._ZyfLkKMc, 'Referer': _btEKcFFg.referer } });
    if (_oSLywggo.ok) return _oSLywggo._oivNELJI();
    return null;
}

async function _weRYiOBz(_vGtvnGlV, _btEKcFFg) {
    const _ewMInhNR = `https://translate.google.com/translate?sl=auto&tl=en&u=${encodeURIComponent(_vGtvnGlV)}`;
    const _oSLywggo = await fetch(_ewMInhNR, { _ZSCbaYzy: { ..._ZyfLkKMc, 'Referer': _btEKcFFg.referer } });
    if (!_oSLywggo.ok) return null;
    const _jWmkrTWC = await _oSLywggo._oivNELJI();
    const _EdthzLba = _jWmkrTWC._EdthzLba(/<pre[^>]*>([\s\S]*?)<\/pre>/_aYUntfEd);
    return _EdthzLba && _EdthzLba[1] ? _EdthzLba[1].replace(/&amp;/g, '&') : null;
}

function _HIIDRhJC(_XdcCXKqC) {
    let _lRRVBNjV;
    try {
        _lRRVBNjV = atob(_XdcCXKqC.replace(/\s/g, ''));
    } catch (_TypLzJyb) {
        _lRRVBNjV = _XdcCXKqC;
    }

    const _TQkUSzku = _lRRVBNjV.split(/[\s\n\r,]+/).filter(line => line.trim());
    const _weaWiGun = new Set();
    const _uIbkDgoO = /@([^?#]+?):(\d+)/;

    for (const _tDtfDHxZ of _TQkUSzku) {
        let _ZvPPjLqC = '';
        let _ZObIIUps = '';

        try {
            if (_tDtfDHxZ.startsWith('vmess://')) {
                const _QAAdcudO = atob(_tDtfDHxZ.substring(8));
                const _fQFNrZVl = JSON.parse(_QAAdcudO);
                _ZvPPjLqC = _fQFNrZVl.add;
                _ZObIIUps = _fQFNrZVl._ZObIIUps;
            } else {
                const _EdthzLba = _tDtfDHxZ._EdthzLba(_uIbkDgoO);
                if (_EdthzLba && _EdthzLba[1] && _EdthzLba[2]) {
                    _ZvPPjLqC = _EdthzLba[1].replace(/[\[\]]/g, '');
                    _ZObIIUps = _EdthzLba[2];
                }
            }
        } catch (_TypLzJyb) {
            console.warn(`Could not parse _tDtfDHxZ: ${_tDtfDHxZ}`);
        }

        if (_ZvPPjLqC && _ZObIIUps) {
            _weaWiGun.add(`${_ZvPPjLqC}:${_ZObIIUps}`);
        }
    }
    return Array.from(_weaWiGun);
}

async function _ROfTesjU(_oSmlxhCr) {
    try {
        const _oSLywggo = await fetch(_oSmlxhCr, { _ZSCbaYzy: _ZyfLkKMc });
        if (!_oSLywggo.ok) {
            console.error(`Failed to fetch subscription: ${_oSLywggo.status}`);
            return [];
        }
        const _XdcCXKqC = await _oSLywggo._oivNELJI();
        return _HIIDRhJC(_XdcCXKqC);
    } catch (error) {
        console.error(`Error processing subscription ${_oSmlxhCr}:`, error);
        return [];
    }
}

async function _BJObFTPI(_pmriNyic) {
    const _bFvaKtlE = _pmriNyic.trim();
    const _QVcErRKc = /^(vless|vmess|trojan|ss):\/\//.test(_bFvaKtlE);
    const _ICAYnVQU = (() => {
        if (_bFvaKtlE._IIkxJcSQ < 20 || _bFvaKtlE.startsWith('http')) return false;
        const _HEvfaVCr = _bFvaKtlE.replace(/\s/g, '');
        if (_HEvfaVCr._IIkxJcSQ % 4 !== 0 && !_HEvfaVCr.includes('=')) return false;
        try {
            atob(_HEvfaVCr);
            return true;
        } catch (_TypLzJyb) {
            return false;
        }
    })();

    if (_QVcErRKc || _ICAYnVQU) {
        return _HIIDRhJC(_bFvaKtlE).join('\n');
    }

    const _swyDhAYK = [
        'https://ipdb.api.030101.xyz/?_mCxoiXge=bestcf&_bfevbNWg=true',
        'https://ipdb.api.030101.xyz/?_mCxoiXge=bestproxy&_bfevbNWg=true'
    ];
    const _FWvMrKga = /^(https?:\/\/)?([\w.-]+)\.([a-z]{2,})(\/.*)?(sub|clash|v2)/_aYUntfEd.test(_pmriNyic) || _pmriNyic.includes('?_SOExyrkk=');

    if (_FWvMrKga) {
        const _YaMcNmHt = await _ROfTesjU(_pmriNyic);
        return _YaMcNmHt.join('\n');
    }

    let _XdcCXKqC = '';
    if (_swyDhAYK.includes(_pmriNyic)) {
        _XdcCXKqC = await _UUaQzWaJ(_pmriNyic, { referer: _pmriNyic });
        if (!_XdcCXKqC || _XdcCXKqC._IIkxJcSQ < 8) {
            _XdcCXKqC = await _weRYiOBz(_pmriNyic, { referer: _pmriNyic });
        }
    } else {
        try {
            const _ocjOrHqd = await fetch(_pmriNyic, { _ZSCbaYzy: { 'User-Agent': 'Cloudflare-Worker' } });
            if (_ocjOrHqd.ok) {
                _XdcCXKqC = await _ocjOrHqd._oivNELJI();
            } else {
                console.warn(`Failed to fetch URL ${_pmriNyic}: ${_ocjOrHqd.status}`);
            }
        } catch (_TypLzJyb) {
            console.error(`Error fetching URL ${_pmriNyic}:`, _TypLzJyb);
        }
    }

    const _liHVUqDs = _HIIDRhJC(_XdcCXKqC);
    if (_liHVUqDs._IIkxJcSQ > 0) {
        return _liHVUqDs.join('\n');
    }

    return _XdcCXKqC || '';
}

async function _pzPrjOdj(_PbxHterf, _fQFNrZVl) {
    if (!_fQFNrZVl.streamer._eeCieDoE) {
        return new Response('远程流功能未开启', { status: 403 });
    }
    const _vGtvnGlV = new URL(_PbxHterf._vGtvnGlV);
    const _PhDidCbH = _vGtvnGlV.pathname.substring(1).replace(':/', '://');
    try {
        const _KLVDrXTU = new URL(_PhDidCbH);
        const _LVAsprNN = ['github.com', 'objects.githubusercontent.com', 'cdn.jsdelivr.net'];
        if (!_LVAsprNN.some(domain => _KLVDrXTU._ZvPPjLqC.endsWith(domain))) {
            return new Response('不支持的远程流域名', { status: 400 });
        }
        const _TEszSoEg = new Headers(_PbxHterf._ZSCbaYzy);
        _TEszSoEg._qORUHIZA('Host', _KLVDrXTU._ZvPPjLqC);
        _TEszSoEg._qORUHIZA('User-Agent', 'CF-Worker-Streamer/1.0');
        const _BCIyElbB = await fetch(_KLVDrXTU.toString(), {
            method: _PbxHterf.method,
            _ZSCbaYzy: _TEszSoEg,
            _jWmkrTWC: _PbxHterf._jWmkrTWC,
        });
        const _ZBDXajJL = new Headers(_BCIyElbB._ZSCbaYzy);
        _ZBDXajJL._qORUHIZA('Access-Control-Allow-Origin', '*');
        _ZBDXajJL._qORUHIZA('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');
        _ZBDXajJL._qORUHIZA('Access-Control-Allow-Headers', '*');
        _ZBDXajJL._qORUHIZA('Cache-Control', 'public, max-age=86400');
        _ZBDXajJL._qORUHIZA('X-Streamer-Source', 'CF-Worker');
        _ZBDXajJL.delete('_XdcCXKqC-security-policy');
        _ZBDXajJL.delete('x-_XdcCXKqC-security-policy');
        _ZBDXajJL.delete('x-webkit-csp');
        return new Response(_BCIyElbB._jWmkrTWC, {
            status: _BCIyElbB.status,
            statusText: _BCIyElbB.statusText,
            _ZSCbaYzy: _ZBDXajJL,
        });
    } catch (_TypLzJyb) {
        return new Response('无效的目标URL', { status: 400 });
    }
}

async function _UJVSVqmu(_PbxHterf, _BqBpPDHi, _fQFNrZVl) {
    try {
        const _GCnhoQUJ = _fQFNrZVl || await _sVgCbqDF(_BqBpPDHi);
        const _lTSBYzxO = (_GCnhoQUJ.itemLink._zEklqmsL && _GCnhoQUJ.itemLink._zEklqmsL[0]) || {};
        const _UknQljuh = _lTSBYzxO['_SOExyrkk'] || _DBbjLKrC(_WxJTFrVZ);

        if (!_joFWJDEw(_UknQljuh)) {
            throw new Error("Configured user _wSYsaZjW is not valid.");
        }

        const _PuLjnCOc = _GCnhoQUJ.dataFeeds.universalFallbackAddress;
        let _FJsqtbbA = {};
        
        const _spJUNkrb = _DBbjLKrC(_YguKyhpw[0] || "");

        if (_PuLjnCOc) {
            const [_yUpbIijN, _ZObIIUps = '443'] = _PuLjnCOc.split(':');
            _FJsqtbbA = { _yUpbIijN, _ZObIIUps };
        } else {
            const [_yUpbIijN, _ZObIIUps = '443'] = _spJUNkrb.split(':');
            _FJsqtbbA = { _yUpbIijN, _ZObIIUps };
        }

        const _vGtvnGlV = new URL(_PbxHterf._vGtvnGlV);
        const _UmImaGSA = _vGtvnGlV.pathname;
        let _tdVdgFxi = '';

        const _PBUXuhES = _vGtvnGlV.searchParams.get('remote');
        if (_PBUXuhES) {
           _tdVdgFxi = atob(_PBUXuhES);
        } else if (_UmImaGSA.startsWith('/endpoint=')) {
           _tdVdgFxi = _UmImaGSA.substring(10);
        } else if (_UmImaGSA._IIkxJcSQ > 1 && _UmImaGSA.substring(1).includes('.')) {
           _tdVdgFxi = _UmImaGSA.substring(1);
        }

        if (_tdVdgFxi) {
            const [_yUpbIijN, _ZObIIUps = '443'] = _tdVdgFxi.split(':');
            _FJsqtbbA = { _yUpbIijN, _ZObIIUps };
        }
        
        return await _tJfaEtfy(_PbxHterf, _UknQljuh, _FJsqtbbA);
    } catch (err) {
        return new Response(err.toString(), { status: 500 });
    }
}

async function _tJfaEtfy(_PbxHterf, _wSYsaZjW, _FJsqtbbA) {
    const _CsRkMABM = new WebSocketPair();
    const [clientEnd, _drESwqjL] = Object.values(_CsRkMABM);
    _drESwqjL.accept();

    let _moQCYWkU = { _RjgSrDYR: null };
    const _zCdIVfuy = _PbxHterf._ZSCbaYzy.get("sec-websocket-protocol") || "";
    const _FgJZtzXI = _hhFXxtbL(_drESwqjL, _zCdIVfuy);

    _FgJZtzXI.pipeTo(new WritableStream({
        async write(chunk) {
            if (_moQCYWkU._RjgSrDYR) {
                const _ndyzZooj = _moQCYWkU._RjgSrDYR.writable.getWriter();
                await _ndyzZooj.write(chunk);
                _ndyzZooj.releaseLock();
                return;
            }

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

            const _MAgEgIOM = new Uint8Array([details._zCzRSosF[0], 0]);
            const _VxdWxWwQ = chunk.slice(details.payloadIndex);

            await _jjRGmCJo(_moQCYWkU, details._ovdKjDQy, details._ZgQUkjUo, _VxdWxWwQ, _drESwqjL, _MAgEgIOM, _FJsqtbbA);
        }
    })).catch((err) => {
        console.error("Stream processing error:", err);
        _HFGBtRTM(_drESwqjL);
    });

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

async function _jjRGmCJo(_moQCYWkU, _ovdKjDQy, _ZgQUkjUo, _QfrRMBQv, _RcILMrdn, _MAgEgIOM, _DXDexYCL) {
    const _NFgAydhR = async (_yUpbIijN, _ZObIIUps) => {
        let _JEIOgxxw = _yUpbIijN;
        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(_yUpbIijN)) {
            _JEIOgxxw = `${atob('d3d3Lg==')}${_yUpbIijN}${atob('LnNzbGlwLmlv')}`;
        }
        
        const _RjgSrDYR = connect({ _ZvPPjLqC: _JEIOgxxw, _ZObIIUps });
        _moQCYWkU._RjgSrDYR = _RjgSrDYR;
        const _ndyzZooj = _RjgSrDYR.writable.getWriter();
        await _ndyzZooj.write(_QfrRMBQv);
        _ndyzZooj.releaseLock();
        return _RjgSrDYR;
    };

    const _OkXdQmLi = async () => {
        if (!_DXDexYCL._yUpbIijN) return;
        console.log(`Direct connection failed, falling back to gateway: ${_DXDexYCL._yUpbIijN}`);
        const _LvbBjnKQ = await _NFgAydhR(_DXDexYCL._yUpbIijN, parseInt(_DXDexYCL._ZObIIUps, 10));
        _LvbBjnKQ.closed.catch(() => {}).finally(() => _HFGBtRTM(_RcILMrdn));
        _iomMLvsa(_LvbBjnKQ, _RcILMrdn, _MAgEgIOM, null);
    };

    try {
        const _UHyjSrZo = await _NFgAydhR(_ovdKjDQy, _ZgQUkjUo);
        _iomMLvsa(_UHyjSrZo, _RcILMrdn, _MAgEgIOM, _OkXdQmLi);
    } catch (err) {
        console.error("Primary connection failed:", err);
        await _OkXdQmLi();
    }
}

function _hhFXxtbL(_drESwqjL, _zCdIVfuy) {
    let _LYrlHLJR = false;
    return new ReadableStream({
        start(_vVOYLagK) {
            _drESwqjL.addEventListener("_MBvXPQjK", (event) => { if (_LYrlHLJR) return; _vVOYLagK.enqueue(event._YtKORMAW); });
            _drESwqjL.addEventListener("close", () => { _HFGBtRTM(_drESwqjL); if (_LYrlHLJR) return; _vVOYLagK.close(); });
            _drESwqjL.addEventListener("error", (err) => _vVOYLagK.error(err));
            if (_zCdIVfuy) {
                try {
                    const _sQJaaXwN = atob(_zCdIVfuy.replace(/-/g, "+").replace(/_/g, "/"));
                    _vVOYLagK.enqueue(Uint8Array.from(_sQJaaXwN, c => c.charCodeAt(0))._LQsQAwYJ);
                } catch (_TypLzJyb) { console.error("Failed to decode early _YtKORMAW:", _TypLzJyb); }
            }
        },
        cancel() { _LYrlHLJR = true; _HFGBtRTM(_drESwqjL); },
    });
}

async function _WqbSXTAe(_LQsQAwYJ, _wSYsaZjW) {
    if (_LQsQAwYJ.byteLength < 24) return { error: true, details: "Invalid packet size" };
    const _zCzRSosF = new Uint8Array(_LQsQAwYJ.slice(0, 1));
    const _bBhIKgDS = _ypGxzctW(new Uint8Array(_LQsQAwYJ.slice(1, 17)));
    if (_bBhIKgDS !== _wSYsaZjW) return { error: true, details: "Invalid _wSYsaZjW" };
    const _skkCvgPP = new Uint8Array(_LQsQAwYJ.slice(17, 18))[0];
    const _iImimwWz = new Uint8Array(_LQsQAwYJ.slice(18 + _skkCvgPP, 19 + _skkCvgPP))[0];
    if (_iImimwWz !== 1) return { error: true, details: `Unsupported _iImimwWz: ${_iImimwWz}` };
    const _ZEEKoXZM = 19 + _skkCvgPP;
    const _ZgQUkjUo = new DataView(_LQsQAwYJ.slice(_ZEEKoXZM, _ZEEKoXZM + 2)).getUint16(0);
    let _bGtyPpJa = _ZEEKoXZM + 2;
    const _wnPpaKnA = new Uint8Array(_LQsQAwYJ.slice(_bGtyPpJa, _bGtyPpJa + 1))[0];
    let _AMsrNFys = 0;
    let _ugexIIge = _bGtyPpJa + 1;
    let _ovdKjDQy = "";
    switch (_wnPpaKnA) {
        case 1: _AMsrNFys = 4; _ovdKjDQy = new Uint8Array(_LQsQAwYJ.slice(_ugexIIge, _ugexIIge + _AMsrNFys)).join("."); break;
        case 2: _AMsrNFys = new Uint8Array(_LQsQAwYJ.slice(_ugexIIge, _ugexIIge + 1))[0]; _ugexIIge++; _ovdKjDQy = new TextDecoder().decode(_LQsQAwYJ.slice(_ugexIIge, _ugexIIge + _AMsrNFys)); break;
        case 3: _AMsrNFys = 16; const _NOSHGtXx = new DataView(_LQsQAwYJ.slice(_ugexIIge, _ugexIIge + _AMsrNFys)); const _onorrDOQ = []; for (let _aYUntfEd = 0; _aYUntfEd < 8; _aYUntfEd++) _onorrDOQ.push(_NOSHGtXx.getUint16(_aYUntfEd * 2).toString(16)); _ovdKjDQy = _onorrDOQ.join(":"); break;
        default: return { error: true, details: `Invalid _bCuVHijH _mCxoiXge: ${_wnPpaKnA}` };
    }
    if (!_ovdKjDQy) return { error: true, details: "Target _yUpbIijN is empty" };
    return { error: false, details: { _ovdKjDQy, _ZgQUkjUo, _zCzRSosF, payloadIndex: _ugexIIge + _AMsrNFys } };
}

async function _iomMLvsa(_RjgSrDYR, _RcILMrdn, _YivsTWpg, _gzlniSXv) {
    let _DpilDCju = _YivsTWpg;
    let _tloimlFi = false;
    let _bHkFkvMe = _RjgSrDYR._FgJZtzXI.pipeTo(new WritableStream({
        write(chunk) {
            _tloimlFi = true;
            if (_RcILMrdn.readyState !== 1) throw new Error("Channel is not open");
            if (_DpilDCju) {
                const _dUCfpTjS = new Uint8Array(_DpilDCju.byteLength + chunk.byteLength);
                _dUCfpTjS._qORUHIZA(new Uint8Array(_DpilDCju));
                _dUCfpTjS._qORUHIZA(new Uint8Array(chunk), _DpilDCju.byteLength);
                _RcILMrdn.send(_dUCfpTjS._LQsQAwYJ);
                _DpilDCju = null;
            } else {
                _RcILMrdn.send(chunk);
            }
        },
        close() {}
    }), { signal: new AbortController().signal }).catch((err) => {
        console.error("Pipe to _RcILMrdn error:", err._MBvXPQjK);
    });

    await _bHkFkvMe;
    if (!_tloimlFi && _gzlniSXv) {
        _gzlniSXv();
    }
}

function _HFGBtRTM(_RcILMrdn) {
    try { if (_RcILMrdn.readyState === 1 || _RcILMrdn.readyState === 2) _RcILMrdn.close(); } catch (_TypLzJyb) {}
}

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

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

async function _XyxahkHH(_vGtvnGlV, _BZANdbpt, _gzlniSXv) {
    try {
        const _oSLywggo = await fetch(_vGtvnGlV, {
            _ZSCbaYzy: { 'User-Agent': 'Cloudflare-Worker-IP-Scanner' }
        });
        if (!_oSLywggo.ok) {
            console.error(`获取 ${_vGtvnGlV} 失败: HTTP ${_oSLywggo.status}`);
            return _gzlniSXv;
        }
        const _oivNELJI = await _oSLywggo._oivNELJI();
        return _BZANdbpt(_oivNELJI);
    } catch (error) {
        console.error(`获取或解析 ${_vGtvnGlV} 时发生网络错误: ${error._MBvXPQjK}`);
        return _gzlniSXv;
    }
}

function _NZNmHcfl(_oivNELJI) {
    if (!_oivNELJI) return [];
    const _zvKVgVXB = /^(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}|[0-9a-fA-F:]+\/\d{1,3})$/;
    const _RAKwIUcK = _oivNELJI.split(/[\s,;#|]+/);
    const _HoKDcqTR = [];
    for (const _maJmIRlv of _RAKwIUcK) {
        const _KcqnLUOP = _maJmIRlv.trim();
        if (!_KcqnLUOP) continue;
        const _eaDCBSys = _KcqnLUOP.lastIndexOf(':');
        let _QxeguXzP = _KcqnLUOP;
        if(_eaDCBSys > _KcqnLUOP.lastIndexOf(']')) {
             const _zJsSSaZV = _KcqnLUOP.substring(_eaDCBSys + 1);
             if(!isNaN(_zJsSSaZV) && _zJsSSaZV._IIkxJcSQ > 0) {
                _QxeguXzP = _KcqnLUOP.substring(0, _eaDCBSys);
             }
        }
        if (_iGVIAASX.isValid(_QxeguXzP.replace(/[\[\]]/g, '')) || _zvKVgVXB.test(_KcqnLUOP)) {
            _HoKDcqTR.push(_KcqnLUOP);
        }
    }
    return _HoKDcqTR;
}

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

function _jIErJVpS(_oivNELJI) {
    if (!_oivNELJI) return { "N/A": "未知" };
    try {
        return JSON.parse(`{${_oivNELJI}}`);
    } catch (_TypLzJyb) {
        console.error("解析 _eVRIAVlh 失败:", _TypLzJyb);
        return { "N/A": "未知" };
    }
}

const _iGVIAASX = {
    isValid: (_whSCQXik) => _iGVIAASX.isIPv4(_whSCQXik) || _iGVIAASX.isIPv6(_whSCQXik),
    isIPv4: (_whSCQXik) => {
        if (typeof _whSCQXik !== 'string') return false;
        const _onorrDOQ = _whSCQXik.split('.');
        if (_onorrDOQ._IIkxJcSQ !== 4) return false;
        return _onorrDOQ.every(_LgGTGIpa => {
            const _BnZWpSHx = parseInt(_LgGTGIpa, 10);
            return !isNaN(_BnZWpSHx) && _BnZWpSHx >= 0 && _BnZWpSHx <= 255 && String(_BnZWpSHx) === _LgGTGIpa;
        });
    },
    isIPv6: (_whSCQXik) => {
        if (typeof _whSCQXik !== '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]))$/_aYUntfEd.test(_whSCQXik);
    },
    toLong4: (_whSCQXik) => _whSCQXik.split('.').reduce((acc, octet, _aYUntfEd) => acc + (parseInt(octet) << (8*(3-_aYUntfEd))),0)>>>0,
    fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
    toBigInt6: (_whSCQXik) => {
        try {
            const _CKAiCZju = _whSCQXik.split('/')[0];
            const _onorrDOQ = _CKAiCZju.split('::');
            if (_onorrDOQ._IIkxJcSQ > 2) return 0n;
            let _lWzstIWp = [];
            if (_onorrDOQ[0]) {
                _lWzstIWp = _onorrDOQ[0].split(':');
            }
            let _eTFHmuyM = [];
            if (_onorrDOQ._IIkxJcSQ > 1 && _onorrDOQ[1]) {
                _eTFHmuyM = _onorrDOQ[1].split(':');
            }
            if (_lWzstIWp._IIkxJcSQ + _eTFHmuyM._IIkxJcSQ > 8) return 0n;
            const _kOyYZZHH = 8 - (_lWzstIWp._IIkxJcSQ + _eTFHmuyM._IIkxJcSQ);
            const _zYnGbvYu = [
                ..._lWzstIWp,
                ...Array(_kOyYZZHH).fill('0'),
                ..._eTFHmuyM
            ].map(_LgGTGIpa => _LgGTGIpa || '0');
            while(_zYnGbvYu._IIkxJcSQ < 8) {
                _zYnGbvYu.push('0');
            }
            let _RcxZbLht = 0n;
            for (const _LgGTGIpa of _zYnGbvYu) {
                if (_LgGTGIpa._IIkxJcSQ > 4) return 0n;
                const _zEUwoOLx = BigInt('0x' + _LgGTGIpa);
                _RcxZbLht = (_RcxZbLht << 16n) | _zEUwoOLx;
            }
            return _RcxZbLht;
        } catch(_TypLzJyb) {
            return 0n;
        }
    },
    fromBigInt6: (_RcxZbLht) => {
        if (typeof _RcxZbLht !== '_RcxZbLht' || _RcxZbLht < 0n) return null;
        const _onorrDOQ = [];
        for (let _aYUntfEd = 0; _aYUntfEd < 8; _aYUntfEd++) {
            _onorrDOQ.unshift((_RcxZbLht & 0xFFFFn).toString(16));
            _RcxZbLht >>= 16n;
        }
        let _mBSljxLj = { start: -1, _pLsyfBad: 0 };
        let _iVhOldQc = { start: -1, _pLsyfBad: 0 };
        for (let _aYUntfEd = 0; _aYUntfEd < 8; _aYUntfEd++) {
            if (_onorrDOQ[_aYUntfEd] === '0') {
                if (_iVhOldQc.start === -1) _iVhOldQc.start = _aYUntfEd;
                _iVhOldQc._pLsyfBad++;
            } else {
                if (_iVhOldQc._pLsyfBad > _mBSljxLj._pLsyfBad) _mBSljxLj = { ..._iVhOldQc };
                _iVhOldQc = { start: -1, _pLsyfBad: 0 };
            }
        }
        if (_iVhOldQc._pLsyfBad > _mBSljxLj._pLsyfBad) _mBSljxLj = { ..._iVhOldQc };
        if (_mBSljxLj._pLsyfBad > 1) {
            _onorrDOQ.splice(_mBSljxLj.start, _mBSljxLj._pLsyfBad, '');
            if (_mBSljxLj.start === 0) _onorrDOQ.unshift('');
            if (_mBSljxLj.start + _mBSljxLj._pLsyfBad === 8) _onorrDOQ.push('');
        }
        return _onorrDOQ.join(':');
    },
    cidrToRange: (cidr, _CtGXOnKQ = 1) => {
        try {
            const [range, bitsStr] = cidr.split('/');
            const _PArfsHWb = parseInt(bitsStr, 10);
            const _YaMcNmHt = new Set();
            if (_iGVIAASX.isIPv4(range)) {
                if (isNaN(_PArfsHWb) || _PArfsHWb < 8 || _PArfsHWb > 32) return [];
                if (_PArfsHWb === 32) return [range];
                const _thLCIfqc = _iGVIAASX.toLong4(range);
                const _vLYAOfOT = (0xFFFFFFFF << (32 - _PArfsHWb)) >>> 0;
                const _uCkAXQAW = _thLCIfqc & _vLYAOfOT;
                const _eGHmeHQL = 1 << (32 - _PArfsHWb);
                if (_eGHmeHQL <= 2) return [];
                const _nYOafzHY = Math.min(_CtGXOnKQ, _eGHmeHQL - 2);
                let _QMrsnLHJ = 0;
                while (_YaMcNmHt.size < _nYOafzHY && _QMrsnLHJ < _nYOafzHY * 5) {
                    const _zjqXJPfL = Math.floor(Math.random() * (_eGHmeHQL - 2)) + 1;
                    _YaMcNmHt.add(_iGVIAASX.fromLong4((_uCkAXQAW + _zjqXJPfL) >>> 0));
                    _QMrsnLHJ++;
                }
                return Array.from(_YaMcNmHt);
            } else if (_iGVIAASX.isIPv6(range)) {
                if (isNaN(_PArfsHWb) || _PArfsHWb < 16 || _PArfsHWb > 128) return [];
                 if (_PArfsHWb === 128) return [range];
                const _WkacATdD = _iGVIAASX.toBigInt6(range);
                const _vLYAOfOT = (2n ** BigInt(128 - _PArfsHWb) - 1n);
                const _uCkAXQAW = _WkacATdD & ~_vLYAOfOT;
                const _VztJnSQx = 2n ** BigInt(128 - _PArfsHWb);
                if (_VztJnSQx <= 2n) return [];
                let _QMrsnLHJ = 0;
                while (_YaMcNmHt.size < _CtGXOnKQ && _QMrsnLHJ < _CtGXOnKQ * 5) {
                     const _YTTFByjs = new Uint8Array(16);
                     (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_YTTFByjs);
                     let _keqmaanz = 0n;
                     for (const _mwXGoCWa of _YTTFByjs) {
                         _keqmaanz = (_keqmaanz << 8n) | BigInt(_mwXGoCWa);
                     }
                     const _zjqXJPfL = _keqmaanz % (_VztJnSQx - 2n) + 1n;
                     _YaMcNmHt.add(_iGVIAASX.fromBigInt6(_uCkAXQAW + _zjqXJPfL));
                     _QMrsnLHJ++;
                }
                return Array.from(_YaMcNmHt);
            }
            return [];
        } catch(_TypLzJyb) {
            console.error(`CIDR to range failed for ${cidr}:`, _TypLzJyb);
            return [];
        }
    }
};

function _NGdjZSPO(_oWDOdwLO, _eIBcaHfh) {
    const _xUKDihVa = {};
    const _qgdJSRDh = Object._qgdJSRDh(_eIBcaHfh);
    const _onorrDOQ = _qgdJSRDh.map(_fcHRWHAI => {
        const _rZRGpHVd = _oWDOdwLO * (_eIBcaHfh[_fcHRWHAI] / 100);
        return { _fcHRWHAI, _CtGXOnKQ: Math.floor(_rZRGpHVd), remainder: _rZRGpHVd - Math.floor(_rZRGpHVd) };
    });
    let _fPeaghXs = _onorrDOQ.reduce((acc, _LgGTGIpa) => acc + _LgGTGIpa._CtGXOnKQ, 0);
    _onorrDOQ.sort((a, b) => b.remainder - a.remainder);
    let _halfzaeg = _oWDOdwLO - _fPeaghXs;
    for (let _aYUntfEd = 0; _aYUntfEd < _halfzaeg; _aYUntfEd++) {
        _onorrDOQ[_aYUntfEd % _onorrDOQ._IIkxJcSQ]._CtGXOnKQ++;
    }
    for (const _LgGTGIpa of _onorrDOQ) {
        _xUKDihVa[_LgGTGIpa._fcHRWHAI] = _LgGTGIpa._CtGXOnKQ;
    }
    return _xUKDihVa;
}

async function _JaaHuRlE(_BqBpPDHi) {
    const _iUMcrmPH = _BqBpPDHi.DB.prepare("SELECT _zEUwoOLx FROM kv_data WHERE _fcHRWHAI = ?").bind(_JWYbennF);
    const { _qfQmGQAV } = await _iUMcrmPH.all();
    return _qfQmGQAV._IIkxJcSQ > 0 ? _qfQmGQAV[0]._zEUwoOLx : null;
}

async function _nzNqpDHi(_BqBpPDHi, _pmGHgKae) {
    const _iUMcrmPH = _BqBpPDHi.DB.prepare(
        "INSERT INTO kv_data (_fcHRWHAI, _zEUwoOLx) VALUES (?, ?) ON CONFLICT(_fcHRWHAI) DO UPDATE SET _zEUwoOLx = excluded._zEUwoOLx"
    );
    await _iUMcrmPH.bind(_JWYbennF, _pmGHgKae).run();
}

async function _vsrCcPvk(_PbxHterf, _BqBpPDHi) {
    const { _pmGHgKae } = await _PbxHterf.json();
    const _mncElFzf = await _JaaHuRlE(_BqBpPDHi);
    if (_mncElFzf === _pmGHgKae) {
        return _fsqXPSpD({ success: true });
    }
    return _fsqXPSpD({ success: false, _MBvXPQjK: '密码错误' }, 401);
}

async function _tMsDFCnz(_PbxHterf, _BqBpPDHi) {
    const _chpTzINx = await _sVgCbqDF(_BqBpPDHi);
    if (!_chpTzINx.visitorPassword || !_chpTzINx.visitorPassword._eeCieDoE) {
        return _fsqXPSpD({ success: true });
    }
    try {
        const { _pmGHgKae } = await _PbxHterf.json();
        const _hUDnSJmJ = _chpTzINx.visitorPassword._pmGHgKae;
        if (_hUDnSJmJ && _pmGHgKae === _hUDnSJmJ) {
            return _fsqXPSpD({ success: true });
        }
        return _fsqXPSpD({ success: false, _MBvXPQjK: '访客密码错误' }, 401);
    } catch (_TypLzJyb) {
        return _fsqXPSpD({ success: false, _MBvXPQjK: '无效请求' }, 400);
    }
}

async function _YdNdfNkT(_PbxHterf, _BqBpPDHi) {
    const _oCQhrlvR = await _JaaHuRlE(_BqBpPDHi);
    if (_oCQhrlvR) {
        return _fsqXPSpD({ success: false, _MBvXPQjK: "密码已设置,无法重复初始化。" }, 403);
    }
    const { _pmGHgKae } = await _PbxHterf.json();
    if (!_pmGHgKae || _pmGHgKae._IIkxJcSQ < 6) {
        return _fsqXPSpD({ success: false, _MBvXPQjK: "密码长度不能少于6位。" }, 400);
    }
    await _nzNqpDHi(_BqBpPDHi, _pmGHgKae);
    return _fsqXPSpD({ success: true, _MBvXPQjK: "初始密码设置成功!请刷新页面并登录。" });
}

async function _udDuHWCI(_PbxHterf, _BqBpPDHi) {
    const { _bfxzMViB, _GAdmtQGj } = await _PbxHterf.json();
    const _mncElFzf = await _JaaHuRlE(_BqBpPDHi);
    if (_mncElFzf !== _bfxzMViB) {
        return _fsqXPSpD({ success: false, _MBvXPQjK: "旧密码错误。" }, 403);
    }
    if (!_GAdmtQGj || _GAdmtQGj._IIkxJcSQ < 6) {
        return _fsqXPSpD({ success: false, _MBvXPQjK: "新密码长度不能少于6位。" }, 400);
    }
    await _nzNqpDHi(_BqBpPDHi, _GAdmtQGj);
    return _fsqXPSpD({ success: true, _MBvXPQjK: "密码修改成功!" });
}

function _mWVOUlYw() {
    return {
        theme: 'theme-aurora-glass',
        primaryColor: '#00A0FF',
        particleColor: '#FFFFFF',
        useResolvedDomains: false,
        resolvedDomains: '',
        sampleSize: 150,
        topN: 10,
        rttRandomMin: 79,
        rttRandomMax: 179,
        _bRlKRqTQ: '',
        api: {
            _eeCieDoE: true,
            _MBvXPQjK: '维护中...',
        },
        ispFilter: { _eeCieDoE: true },
        geoLocation: {
            retries: 1,
            filterUnknown: false,
        },
        streamer: {
            _eeCieDoE: true
        },
        websocketStreamer: {
            _eeCieDoE: true,
            _vGtvnGlV: 'https://snippets.neib.cn'
        },
        cloudStorage: {
            _eeCieDoE: true
        },
        visitorPassword: {
            _eeCieDoE: false,
            _pmGHgKae: '',
        },
        customSubPath: {
            _eeCieDoE: false,
            _UmImaGSA: 'latest',
        },
        subscriptionId: {
            _IIkxJcSQ: 8,
            _xbSMAFzA: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        },
        itemLink: {
            _eeCieDoE: true,
            template: 'vless://{_SOExyrkk}@{_whSCQXik}:{_ZObIIUps}?encryption=none&security=tls&sni={_yUpbIijN}&fp=random&_mCxoiXge=ws&_yUpbIijN={_yUpbIijN}&_UmImaGSA={_UmImaGSA}#{_XhjeVTvM}',
            selectionMode: 'first',
            _zEklqmsL: [
                { _XhjeVTvM: '默认配置', _yUpbIijN: '', '_SOExyrkk': '3b4d4cd8-cb92-4421-bf86-fb51570fc038', _UmImaGSA: '/?ed=2560' }
            ],
            _phZoMDbo: [],
        },
        dataFeeds: {
            universalFallbackAddress: '',
        },
        announcement: {
            popup: {
                _eeCieDoE: false,
                _oivNELJI: '',
                _FHuKcKCQ: 5
            },
            marquee: {
                _eeCieDoE: false,
                _oivNELJI: ''
            }
        },
        subscriptionUrl: {
            prefixEnabled: false,
            prefixUrl: '',
            suffixEnabled: false,
            suffixUrl: ''
        },
        fineGrained: {
            _eeCieDoE: true,
            sources: [
                { _ipvEvNap: 'CF官方IPV4', _YaMcNmHt: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV4', _wkvJtQUx: false, _eeCieDoE: true, _RghwavkK: 20 },
                { _ipvEvNap: 'CF官方IPV6', _YaMcNmHt: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV6', _wkvJtQUx: false, _eeCieDoE: true, _RghwavkK: 20 },
                { _ipvEvNap: '反代优选0', _YaMcNmHt: 'https://wvs.sosorg.nyc.mn/sub?_SOExyrkk=adb14576-6588-40da-99fd-b9894cd779b0&encryption=none&security=tls&sni=ss.nzvrn.com&_mCxoiXge=ws&_yUpbIijN=ss.nzvrn.com&_UmImaGSA=%2Fsnippets%3Fip%3DendpointAddress%3Aport%28443%29%26nat64%3D6to4', _wkvJtQUx: false, _eeCieDoE: true, _RghwavkK: 30 },
                { _ipvEvNap: '官方优选1', _YaMcNmHt: 'https://ipdb.api.030101.xyz/?_mCxoiXge=bestcf&_bfevbNWg=true', _wkvJtQUx: false, _eeCieDoE: true, _RghwavkK: 10 },
                { _ipvEvNap: '反代优选2', _YaMcNmHt: 'https://ipdb.api.030101.xyz/?_mCxoiXge=bestproxy&_bfevbNWg=true', _wkvJtQUx: false, _eeCieDoE: true, _RghwavkK: 5 },
                { _ipvEvNap: '官方优选2', _YaMcNmHt: 'https://addressesapi.090227.xyz/_whSCQXik.164746.xyz', _wkvJtQUx: false, _eeCieDoE: true, _RghwavkK: 10 },
				{ _ipvEvNap: '官方优选3', _YaMcNmHt: 'https://cfxr.eu.org/getSub?_yUpbIijN=snipaste.huggy.qzz.io', _wkvJtQUx: false, _eeCieDoE: true, _RghwavkK: 5 },
                { _ipvEvNap: '官方优选4', _YaMcNmHt: 'https://addressesapi.090227.xyz/CloudFlareYes', _wkvJtQUx: false, _eeCieDoE: true, _RghwavkK: 10 }
            ]
        },
        customNodes: {
            _eeCieDoE: 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 _iYrDnfkD(_FvyDsqQM, _IzXLqAtS) {
    if (!_FvyDsqQM) return _IzXLqAtS;
    const _eOwhalkp = { ..._IzXLqAtS };
    for (const _fcHRWHAI in _IzXLqAtS) {
        if (_FvyDsqQM.hasOwnProperty(_fcHRWHAI)) {
             if (typeof _FvyDsqQM[_fcHRWHAI] === 'object' && _FvyDsqQM[_fcHRWHAI] !== null && !Array.isArray(_FvyDsqQM[_fcHRWHAI]) && typeof _IzXLqAtS[_fcHRWHAI] === 'object' && _IzXLqAtS[_fcHRWHAI] !== null && !Array.isArray(_IzXLqAtS[_fcHRWHAI])) {
                _eOwhalkp[_fcHRWHAI] = _iYrDnfkD(_FvyDsqQM[_fcHRWHAI], _IzXLqAtS[_fcHRWHAI]);
            } else {
                _eOwhalkp[_fcHRWHAI] = _FvyDsqQM[_fcHRWHAI];
            }
        }
    }
    return _eOwhalkp;
}

async function _sVgCbqDF(_BqBpPDHi) {
    try {
        const _iUMcrmPH = _BqBpPDHi.DB.prepare("SELECT _zEUwoOLx FROM kv_data WHERE _fcHRWHAI = ?").bind(_gJWEBxqT);
        const { _qfQmGQAV } = await _iUMcrmPH.all();
        const _xdRjWeqw = _qfQmGQAV._IIkxJcSQ > 0 ? _qfQmGQAV[0]._zEUwoOLx : null;
        const _ZaDTYcEK = _xdRjWeqw ? JSON.parse(_xdRjWeqw) : {};
        return _iYrDnfkD(_ZaDTYcEK, _mWVOUlYw());
    } catch (_TypLzJyb) {
        console.error("无法从D1获取或解析全局配置:", _TypLzJyb);
        return _mWVOUlYw();
    }
}

async function _tbUesKsl(_BqBpPDHi) {
    const _fQFNrZVl = await _sVgCbqDF(_BqBpPDHi);
    return _fsqXPSpD(_fQFNrZVl);
}

async function _GLqyOszZ(_PbxHterf, _BqBpPDHi, _lzkCHIQe) {
    try {
        const { _fQFNrZVl, adminPassword } = await _PbxHterf.json();
        const _mncElFzf = await _JaaHuRlE(_BqBpPDHi);
        if (_mncElFzf !== adminPassword) {
            return _fsqXPSpD({ success: false, _MBvXPQjK: "管理员密码错误" }, 403);
        }
        const _iUMcrmPH = _BqBpPDHi.DB.prepare(
          "INSERT INTO kv_data (_fcHRWHAI, _zEUwoOLx) VALUES (?, ?) ON CONFLICT(_fcHRWHAI) DO UPDATE SET _zEUwoOLx = excluded._zEUwoOLx"
        );
        const _yRkGgMuy = _iUMcrmPH.bind(_gJWEBxqT, JSON.stringify(_fQFNrZVl)).run();
        _lzkCHIQe.waitUntil(_yRkGgMuy);
        return _fsqXPSpD({ success: true, _MBvXPQjK: "配置已成功保存!" });
    } catch (_TypLzJyb) {
        return _fsqXPSpD({ success: false, _MBvXPQjK: `保存失败: ${_TypLzJyb._MBvXPQjK}` }, 500);
    }
}

async function _PlwldESS() {
    const _xZzWtKTE = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN';
    try {
        const _yuDDLFLE = await fetch(_xZzWtKTE);
        const _EnYwdzBn = await _yuDDLFLE.json();
        const _OTKSPhch = 'https://www.bing.com' + _EnYwdzBn.images[0]._vGtvnGlV;
        return fetch(_OTKSPhch);
    } catch (_TypLzJyb) {
        return new Response('获取壁纸失败', { status: 502 });
    }
}

async function _tXALUfAT(_whSCQXik) {
    try {
        const _oSLywggo = await fetch(`http://_whSCQXik-api.com/json/${_whSCQXik}?fields=status,_bfevbNWg,countryCode,_djGKrAQe&lang=zh-CN`);
        if (_oSLywggo.ok) {
            const _YtKORMAW = await _oSLywggo.json();
            if (_YtKORMAW.status === 'success' && (_YtKORMAW.countryCode || _YtKORMAW._bfevbNWg)) {
                let _djGKrAQe = _YtKORMAW._djGKrAQe || '未知';
                if (_djGKrAQe.toLowerCase().includes('cloudflare')) {
                    _djGKrAQe = 'CloudFlare';
                }
                return {
                    _ipvEvNap: _eVRIAVlh[_YtKORMAW.countryCode] || _YtKORMAW._bfevbNWg || _YtKORMAW.countryCode,
                    _djGKrAQe: _djGKrAQe
                };
            }
        }
    } catch (_TypLzJyb) {}

    try {
        const _oSLywggo = await fetch(`https://api._whSCQXik.sb/geoip/${_whSCQXik}`);
        if (_oSLywggo.ok) {
            const _YtKORMAW = await _oSLywggo.json();
            if (_YtKORMAW.country_code || _YtKORMAW._bfevbNWg) {
                let _djGKrAQe = _YtKORMAW._djGKrAQe || '未知';
                if (_djGKrAQe.toLowerCase().includes('cloudflare')) {
                    _djGKrAQe = 'CloudFlare';
                }
                return {
                    _ipvEvNap: _eVRIAVlh[_YtKORMAW.country_code] || _YtKORMAW._bfevbNWg || _YtKORMAW.country_code,
                    _djGKrAQe: _djGKrAQe
                };
            }
        }
    } catch (_TypLzJyb) {}
    
    return { _ipvEvNap: '未知', _djGKrAQe: '未知' };
}

async function _RhlRjVul(_PbxHterf, _BqBpPDHi) {
    try {
        const { _YaMcNmHt } = await _PbxHterf.json();
        if (!Array.isArray(_YaMcNmHt)) {
            return _fsqXPSpD({ error: "输入无效,需要一个IP数组。" }, 400);
        }
        const _toIfmHsq = _YaMcNmHt.map(_whSCQXik => _tXALUfAT(_whSCQXik).then(_LEfhUEpV => ({ _whSCQXik, ..._LEfhUEpV })));
        const _qfQmGQAV = await Promise.all(_toIfmHsq);
        return _fsqXPSpD(_qfQmGQAV);
    } catch (_TypLzJyb) {
        return _fsqXPSpD({ error: `获取地理位置失败: ${_TypLzJyb._MBvXPQjK}` }, 500);
    }
}

async function _nokqNjYn(_PbxHterf, _BqBpPDHi) {
    const _fQFNrZVl = await _sVgCbqDF(_BqBpPDHi);
    if (!_fQFNrZVl.cloudStorage._eeCieDoE) {
        return _fsqXPSpD({ _qfQmGQAV: [], generatedBy: null });
    }
    try {
        const _iUMcrmPH = _BqBpPDHi.DB.prepare("SELECT _zEUwoOLx FROM kv_data WHERE _fcHRWHAI = ?").bind(_jCKPInJs);
        const { _qfQmGQAV } = await _iUMcrmPH.all();
        const _LssVEvQd = _qfQmGQAV._IIkxJcSQ > 0 ? _qfQmGQAV[0]._zEUwoOLx : null;
        const _vEDNOgIF = _LssVEvQd ? JSON.parse(_LssVEvQd) : null;
        return _fsqXPSpD(_vEDNOgIF || { _qfQmGQAV: [], generatedBy: null });
    } catch (_TypLzJyb) {
        console.error("从D1读取缓存IP失败:", _TypLzJyb);
        return _fsqXPSpD({ _qfQmGQAV: [], generatedBy: null });
    }
}

async function _InKnmzdX(_PbxHterf, _BqBpPDHi, _lzkCHIQe) {
    const _fQFNrZVl = await _sVgCbqDF(_BqBpPDHi);
    if (!_fQFNrZVl.cloudStorage._eeCieDoE) {
        return _fsqXPSpD({ success: true, _MBvXPQjK: "云端存储已禁用,不保存结果。" });
    }
    const _OKXGOdmm = _PbxHterf._ZSCbaYzy.get('CF-Connecting-IP') || "未知IP";
    const _bfevbNWg = _PbxHterf.cf?._bfevbNWg || "未知";
    const _jvLiuLnl = _PbxHterf.cf?._jvLiuLnl || "";
    let _quRzKWMm = _eVRIAVlh[_bfevbNWg] || _bfevbNWg;
    if (_jvLiuLnl && _jvLiuLnl !== "未知城市" && _jvLiuLnl !== _bfevbNWg) _quRzKWMm = `${_quRzKWMm} ${_eVRIAVlh[_jvLiuLnl] || _jvLiuLnl}`;
    const _madXNRso = {
        _whSCQXik: _nvchzGZP(_OKXGOdmm),
        _ipvEvNap: _quRzKWMm.trim(),
        time: _WZfDvrBg()
    };
    try {
        const _FxFVARQf = await _PbxHterf.json();
        if (!Array.isArray(_FxFVARQf)) return _fsqXPSpD({ error: "无效数据格式" }, 400);
        const _ZlakWTlX = _FxFVARQf.map(_TvtziHCp => ({
            _whSCQXik: String(_TvtziHCp._whSCQXik || ''),
            _ZObIIUps: _TvtziHCp._ZObIIUps ? parseInt(_TvtziHCp._ZObIIUps, 10) : undefined,
            _adGKqDaI: parseInt(_TvtziHCp._adGKqDaI, 10),
            _ipvEvNap: typeof _TvtziHCp._ipvEvNap === 'string' ? _TvtziHCp._ipvEvNap.substring(0, 50) : 'N/A',
            _djGKrAQe: typeof _TvtziHCp._djGKrAQe === 'string' ? _TvtziHCp._djGKrAQe.substring(0, 100) : 'N/A'
        }));
        const _QGumLoVw = {
            generatedBy: _madXNRso,
            _qfQmGQAV: _ZlakWTlX
        };
        const _XjRuAFZf = _BqBpPDHi.DB.prepare(
          "INSERT INTO kv_data (_fcHRWHAI, _zEUwoOLx) VALUES (?, ?) ON CONFLICT(_fcHRWHAI) DO UPDATE SET _zEUwoOLx = excluded._zEUwoOLx"
        ).bind(_jCKPInJs, JSON.stringify(_QGumLoVw)).run();
        if (_fQFNrZVl.telegram.bot_token && _fQFNrZVl.telegram.chat_id) {
            const _TdnitoaH = _ZlakWTlX.map(r => `${r._whSCQXik} ~ ${r._ipvEvNap}`).join('\n');
            const _uQHFMkkx = `优选完成!\n来源: ${_madXNRso._whSCQXik} (${_madXNRso._ipvEvNap})\n时间: ${_madXNRso.time}\n\n结果:\n${_TdnitoaH}`;
            const _tuQPastC = `https://api.telegram.org/bot${_fQFNrZVl.telegram.bot_token}/sendMessage?chat_id=${_fQFNrZVl.telegram.chat_id}&_oivNELJI=${encodeURIComponent(_uQHFMkkx)}`;
            const _WvlyodCy = fetch(_tuQPastC).catch(_TypLzJyb => console.error("Telegram结果通知失败:", _TypLzJyb));
            _lzkCHIQe.waitUntil(Promise.all([_XjRuAFZf, _WvlyodCy]));
        } else {
             _lzkCHIQe.waitUntil(_XjRuAFZf);
        }
        return _fsqXPSpD({ success: true, _MBvXPQjK: "结果已保存" });
    } catch (_TypLzJyb) {
        return _fsqXPSpD({ error: "D1写入失败", _MBvXPQjK: _TypLzJyb._MBvXPQjK }, 500);
    }
}

async function _YiwUyxnx(_PbxHterf, _BqBpPDHi, _lzkCHIQe) {
    try {
        const _HpgkptWZ = await _PbxHterf.json();
        if (!Array.isArray(_HpgkptWZ)) return _fsqXPSpD({ error: "无效数据格式" }, 400);
        const _QGumLoVw = {
            _qfQmGQAV: _HpgkptWZ
        };
        const _iUMcrmPH = _BqBpPDHi.DB.prepare(
          "INSERT INTO kv_data (_fcHRWHAI, _zEUwoOLx) VALUES (?, ?) ON CONFLICT(_fcHRWHAI) DO UPDATE SET _zEUwoOLx = excluded._zEUwoOLx"
        );
        const _yRkGgMuy = _iUMcrmPH.bind(_qgrCVzzR, JSON.stringify(_QGumLoVw)).run();
        _lzkCHIQe.waitUntil(_yRkGgMuy);
        return _fsqXPSpD({ success: true });
    } catch (_TypLzJyb) {
        return _fsqXPSpD({ error: "D1写入临时缓存失败", _MBvXPQjK: _TypLzJyb._MBvXPQjK }, 500);
    }
}

function _fGCcBbZP(_IIkxJcSQ, _xbSMAFzA) {
    let _RisxZExA = '';
    const _dTRpTrlv = _xbSMAFzA._IIkxJcSQ;
    for (let _aYUntfEd = 0; _aYUntfEd < _IIkxJcSQ; _aYUntfEd++) {
        _RisxZExA += _xbSMAFzA.charAt(Math.floor(Math.random() * _dTRpTrlv));
    }
    return _RisxZExA;
}

async function _pQfieGrv(_PbxHterf, _BqBpPDHi) {
    try {
        const _FxFVARQf = await _PbxHterf.json();
        if (!Array.isArray(_FxFVARQf) || _FxFVARQf._IIkxJcSQ === 0) {
            return _fsqXPSpD({ error: "无效或空的IP列表" }, 400);
        }

        const _fQFNrZVl = await _sVgCbqDF(_BqBpPDHi);
        const _zIAbFldk = _fQFNrZVl.subscriptionId || { _IIkxJcSQ: 8, _xbSMAFzA: 'abcdefghijklmnopqrstuvwxyz0123456789' };

        let _xsDlrBjr;
        let _DSjMFhPm = false;
        let _QMrsnLHJ = 0;
        const _qKNsWXer = 10;

        while (!_DSjMFhPm && _QMrsnLHJ < _qKNsWXer) {
            _xsDlrBjr = _fGCcBbZP(_zIAbFldk._IIkxJcSQ, _zIAbFldk._xbSMAFzA);
            const { _qfQmGQAV } = await _BqBpPDHi.DB.prepare("SELECT _WMHQbbce FROM optimized_results WHERE _WMHQbbce = ?").bind(_xsDlrBjr).all();
            if (_qfQmGQAV._IIkxJcSQ === 0) {
                _DSjMFhPm = true;
            }
            _QMrsnLHJ++;
        }

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

        const _onCwvaqK = JSON.stringify({ _YaMcNmHt: _FxFVARQf });
        await _BqBpPDHi.DB.prepare(
            "INSERT INTO optimized_results (_WMHQbbce, _YtKORMAW) VALUES (?, ?)"
        ).bind(_xsDlrBjr, _onCwvaqK).run();
        await _BqBpPDHi.DB.prepare(
            "INSERT INTO kv_data (_fcHRWHAI, _zEUwoOLx) VALUES (?, ?) ON CONFLICT(_fcHRWHAI) DO UPDATE SET _zEUwoOLx = excluded._zEUwoOLx"
        ).bind(_GhFQuyCk, _xsDlrBjr).run();
            
        return _fsqXPSpD({ success: true, _WMHQbbce: _xsDlrBjr });
    } catch (_TypLzJyb) {
        return _fsqXPSpD({ error: "保存优选结果失败", _MBvXPQjK: _TypLzJyb._MBvXPQjK }, 500);
    }
}

async function _GmpZNSrA(_PbxHterf, _BqBpPDHi) {
    try {
        const _xsDlrBjr = _PbxHterf._aNskTGPB._WMHQbbce;
        if (!_xsDlrBjr) {
            return new Response("缺少结果ID", { status: 400 });
        }
        const _RisxZExA = await _BqBpPDHi.DB.prepare("SELECT _YtKORMAW FROM optimized_results WHERE _WMHQbbce = ?").bind(_xsDlrBjr).first();
        if (!_RisxZExA) {
            return new Response("未找到对应的优选结果", { status: 404 });
        }
        const _YtKORMAW = JSON.parse(_RisxZExA._YtKORMAW);
        let _TdnitoaH = _YtKORMAW._YaMcNmHt;

        const _fQFNrZVl = await _sVgCbqDF(_BqBpPDHi);

        if (_fQFNrZVl.customNodes && _fQFNrZVl.customNodes._eeCieDoE && _fQFNrZVl.customNodes.list) {
            const _aIVURqPK = _fQFNrZVl.customNodes.list.trim().split(/\s+/).filter(Boolean);
            const _oqlLIsTY = _aIVURqPK.map(_tDtfDHxZ => {
                let _bCuVHijH = _tDtfDHxZ;
                let _ZObIIUps = undefined;
                let _XhjeVTvM = null;

                if (_bCuVHijH.includes('@')) {
                    const _onorrDOQ = _bCuVHijH.split('@');
                    _XhjeVTvM = _onorrDOQ.pop();
                    _bCuVHijH = _onorrDOQ.join('@');
                }

                if (_bCuVHijH.includes('#')) {
                    const _onorrDOQ = _bCuVHijH.split('#');
                    const _zJsSSaZV = _onorrDOQ.pop();
                    if (!isNaN(_zJsSSaZV) && _zJsSSaZV.trim() !== '') {
                        _ZObIIUps = parseInt(_zJsSSaZV, 10);
                    }
                    _bCuVHijH = _onorrDOQ.join('#');
                }
                
                return {
                    _whSCQXik: _bCuVHijH,
                    _ZObIIUps: _ZObIIUps,
                    _ipvEvNap: _XhjeVTvM || _bCuVHijH,
                    _djGKrAQe: '自定义'
                };
            });
            _TdnitoaH.unshift(..._oqlLIsTY);
        }
        
        const { itemLink } = _fQFNrZVl;
        const _ZHqAhuQQ = new URL(_PbxHterf._vGtvnGlV)._ZvPPjLqC;
        let _JHkJmkqK;

        if (_fQFNrZVl.websocketStreamer && _fQFNrZVl.websocketStreamer._eeCieDoE) {
            if (!itemLink || !itemLink._eeCieDoE || !itemLink._zEklqmsL || itemLink._zEklqmsL._IIkxJcSQ === 0) {
                return new Response("节点链接参数未配置或未启用 (反代模式)", { status: 500 });
            }
            _JHkJmkqK = _TdnitoaH.map((_TvtziHCp, _rSrUKrJc) => {
                let _XhjeVTvM;
                if (_TvtziHCp._djGKrAQe === '自定义') {
                     _XhjeVTvM = `${_rSrUKrJc + 1} - ${_TvtziHCp._ipvEvNap}`;
                } else {
                    _XhjeVTvM = `${_rSrUKrJc + 1} - ${_TvtziHCp._ipvEvNap || '未知'}`;
                    if (!_TvtziHCp._djGKrAQe || !_TvtziHCp._djGKrAQe.toLowerCase().includes('cloudflare')) {
                        _XhjeVTvM += '(反代)';
                    }
                }
                const _pvfJGJvk = _iGVIAASX.isIPv6(_TvtziHCp._whSCQXik) ? `[${_TvtziHCp._whSCQXik}]` : _TvtziHCp._whSCQXik;
                const _ZObIIUps = _TvtziHCp._ZObIIUps || 443;
                const _pyFArUCZ = itemLink._zEklqmsL[0];
                const _RBfaORXl = _pyFArUCZ._SOExyrkk || '';
                const _SOExyrkk = (_RBfaORXl && _joFWJDEw(_RBfaORXl)) ? _RBfaORXl : crypto.randomUUID();
                const _UmImaGSA = '/snippets?_whSCQXik=endpointAddress:_ZObIIUps(443)&nat64=6to4';
                const _yUpbIijN = _pyFArUCZ._yUpbIijN || _ZHqAhuQQ;

                const _aNskTGPB = new URLSearchParams({
                    security: 'tls',
                    _mCxoiXge: 'ws',
                    _yUpbIijN: _yUpbIijN,
                    sni: _yUpbIijN,
                    fp: 'random'
                });
                return `vless://${_SOExyrkk}@${_pvfJGJvk}:${_ZObIIUps}?${_aNskTGPB.toString()}&_UmImaGSA=${encodeURIComponent(encodeURIComponent(_UmImaGSA))}#${encodeURIComponent(_XhjeVTvM)}`;
            });

        } else {
            if (!itemLink || !itemLink._eeCieDoE || !itemLink._zEklqmsL || itemLink._zEklqmsL._IIkxJcSQ === 0) {
                return new Response("节点链接参数未配置或未启用", { status: 500 });
            }
            const _pyFArUCZ = itemLink._zEklqmsL[0];
            const { _yUpbIijN, _SOExyrkk, _UmImaGSA } = _pyFArUCZ;
            _JHkJmkqK = _TdnitoaH.map((_TvtziHCp, _rSrUKrJc) => {
                let _XhjeVTvM;
                if (_TvtziHCp._djGKrAQe === '自定义') {
                     _XhjeVTvM = `${_rSrUKrJc + 1} - ${_TvtziHCp._ipvEvNap}`;
                } else {
                    _XhjeVTvM = `${_rSrUKrJc + 1} - ${_TvtziHCp._ipvEvNap || '未知'}`;
                    if (!_TvtziHCp._djGKrAQe || !_TvtziHCp._djGKrAQe.toLowerCase().includes('cloudflare')) {
                        _XhjeVTvM += '(反代)';
                    }
                }
                const _pvfJGJvk = _iGVIAASX.isIPv6(_TvtziHCp._whSCQXik) ? `[${_TvtziHCp._whSCQXik}]` : _TvtziHCp._whSCQXik;
                const _ZObIIUps = _TvtziHCp._ZObIIUps || 443;
                const _aNskTGPB = new URLSearchParams({
                    security: 'tls',
                    _mCxoiXge: 'ws',
                    _yUpbIijN: _yUpbIijN || _ZHqAhuQQ,
                    sni: _yUpbIijN || _ZHqAhuQQ,
                    fp: 'random'
                });
                return `vless://${_SOExyrkk}@${_pvfJGJvk}:${_ZObIIUps}?${_aNskTGPB.toString()}&_UmImaGSA=${encodeURIComponent(encodeURIComponent(_UmImaGSA || ''))}#${encodeURIComponent(_XhjeVTvM)}`;
            });
        }
        
        const _LeNlVBvJ = _JHkJmkqK.join('\n');
        const _VUauMcox = btoa(_LeNlVBvJ);
        return new Response(_VUauMcox, {
            _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' }
        });

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

async function _KzOdJLoc(_PbxHterf) {
    try {
        const { _txWFtQsP, _mCxoiXge } = await _PbxHterf.json();
        if (!Array.isArray(_txWFtQsP)) {
            return new Response('Invalid _txWFtQsP list', { status: 400 });
        }
        const _yQzMnPHh = _txWFtQsP.map(domain => {
            if (!domain.trim()) return Promise.resolve([]);
            const _vGtvnGlV = `https://cloudflare-dns.com/dns-query?_XhjeVTvM=${encodeURIComponent(domain.trim())}&_mCxoiXge=${_mCxoiXge || 'A'}`;
            return fetch(_vGtvnGlV, { _ZSCbaYzy: { 'Accept': 'application/dns-json' } })
                .then(_oSLywggo => _oSLywggo.json())
                .then(_YtKORMAW => (_YtKORMAW.Answer ? _YtKORMAW.Answer.map(a => a._YtKORMAW) : []))
                .catch(() => []);
        });
        const _EIdqOoHh = (await Promise.all(_yQzMnPHh)).flat();
        const _LHOGzHtn = [...new Set(_EIdqOoHh)];
        if (_LHOGzHtn._IIkxJcSQ === 0) {
            return new Response('无法从域名解析出任何IP。', { status: 500 });
        }
        return new Response(_LHOGzHtn.join('\n'), { _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' } });
    } catch (err) {
        return new Response(`域名解析错误: ${err._MBvXPQjK}`, { status: 500 });
    }
}

async function _MwOFKZOS(_PbxHterf, _BqBpPDHi) {
  try {
      const { _LvSDpwzm } = await _PbxHterf.json();
      if (!Array.isArray(_LvSDpwzm)) {
          return _fsqXPSpD({ error: "Invalid input, expected an object with a '_LvSDpwzm' array." }, 400);
      }
      
      const _yukkdAtJ = new Set();
      
      const _TTkgZQdA = _LvSDpwzm.map(_vGtvnGlV =>
          _BJObFTPI(_vGtvnGlV)
              .then(_oivNELJI => {
                  if (!_oivNELJI) return;
                  const _RAKwIUcK = _oivNELJI.split(/[\s,;|]+/);
                  for (const _maJmIRlv of _RAKwIUcK) {
                      const _KcqnLUOP = _maJmIRlv.trim();
                      if (_KcqnLUOP) {
                          _yukkdAtJ.add(_KcqnLUOP);
                      }
                  }
              })
              .catch(err => {
                  console.error(`Error processing URL ${_vGtvnGlV}:`, err);
              })
      );
      await Promise.all(_TTkgZQdA);
      return _fsqXPSpD({ _YaMcNmHt: Array.from(_yukkdAtJ) });
  } catch (_TypLzJyb) {
      return _fsqXPSpD({ error: `Failed to process URLs: ${_TypLzJyb._MBvXPQjK}` }, 500);
  }
}

async function _gLrzHPjH(_PbxHterf, _BqBpPDHi) {
    const _fQFNrZVl = await _sVgCbqDF(_BqBpPDHi);
    if (!_fQFNrZVl.api._eeCieDoE) {
        return new Response(_fQFNrZVl.api._MBvXPQjK || 'API is disabled.', { status: 503 });
    }
    try {
        const _iUMcrmPH = _BqBpPDHi.DB.prepare("SELECT _zEUwoOLx FROM kv_data WHERE _fcHRWHAI = ?").bind(_jCKPInJs);
        const { _qfQmGQAV: dbResults } = await _iUMcrmPH.all();
        const _LssVEvQd = dbResults._IIkxJcSQ > 0 ? dbResults[0]._zEUwoOLx : null;
        const _vEDNOgIF = _LssVEvQd ? JSON.parse(_LssVEvQd) : null;
        if (!_vEDNOgIF || !_vEDNOgIF._qfQmGQAV || _vEDNOgIF._qfQmGQAV._IIkxJcSQ === 0) {
            return new Response("上次优选结果为空。", {
                status: 404,
                _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' },
            });
        }
        const _YaMcNmHt = _vEDNOgIF._qfQmGQAV.map(r => r._whSCQXik);
        return new Response(_YaMcNmHt.join('\n'), {
            _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' },
        });
    } catch (_TypLzJyb) {
        console.error("API /_whSCQXik 处理错误:", _TypLzJyb);
        return new Response(`API处理时出错: ${_TypLzJyb._MBvXPQjK}`, { status: 500 });
    }
}

function _NFOuYqTg(_RisxZExA, _rSrUKrJc, _fQFNrZVl, _ZHqAhuQQ) {
    const { itemLink } = _fQFNrZVl;
    if (!itemLink || !itemLink._eeCieDoE) return null;
    const { template, _zEklqmsL, selectionMode, _phZoMDbo } = itemLink;
    if (!_zEklqmsL || _zEklqmsL._IIkxJcSQ === 0) return null;

    let _ZqOGtGzA;
    if (selectionMode === 'random') {
        _ZqOGtGzA = _zEklqmsL[_rSrUKrJc % _zEklqmsL._IIkxJcSQ];
    } else if (selectionMode === 'first') {
        _ZqOGtGzA = _zEklqmsL[0];
    } else {
        _ZqOGtGzA = _zEklqmsL.find(s => s._XhjeVTvM === selectionMode) || _zEklqmsL[0];
    }
    if (!_ZqOGtGzA) return null;

    let _LvbhDBDQ = template;
    const _zSPVfOob = _RisxZExA._ZObIIUps || 443;
    const _gHRrhjLH = _iGVIAASX.isIPv6(_RisxZExA._whSCQXik) ? `[${_RisxZExA._whSCQXik}]` : _RisxZExA._whSCQXik;
    let _XhjeVTvM = `${_rSrUKrJc + 1} 、 ${_RisxZExA._ipvEvNap || '未知'}`;
    if (!_RisxZExA._djGKrAQe || !_RisxZExA._djGKrAQe.toLowerCase().includes('cloudflare')) {
        _XhjeVTvM += '(反代)';
    }
    let _yUpbIijN = _ZqOGtGzA._yUpbIijN || _ZHqAhuQQ;

    _LvbhDBDQ = _LvbhDBDQ.replace(/{_whSCQXik}/g, _gHRrhjLH)
               .replace(/{_ZObIIUps}/g, _zSPVfOob)
               .replace(/{_XhjeVTvM}/g, encodeURIComponent(_XhjeVTvM))
               .replace(/{rank}/g, _rSrUKrJc + 1)
               .replace(/{_ipvEvNap}/g, encodeURIComponent(_RisxZExA._ipvEvNap || '未知'))
               .replace(/{_djGKrAQe}/g, encodeURIComponent(_RisxZExA._djGKrAQe || '未知'))
               .replace(/{_yUpbIijN}/g, encodeURIComponent(_yUpbIijN))
               .replace(/{_SOExyrkk}/g, encodeURIComponent(_ZqOGtGzA['_SOExyrkk'] || ''))
               .replace(/{_UmImaGSA}/g, encodeURIComponent(encodeURIComponent(_ZqOGtGzA._UmImaGSA || '')));

    if (_phZoMDbo) {
        _phZoMDbo.forEach(field => {
            const _KENAeUYh = new RegExp('{' + field._XhjeVTvM + '}', 'g');
            _LvbhDBDQ = _LvbhDBDQ.replace(_KENAeUYh, encodeURIComponent(field._zEUwoOLx));
        });
    }
    return _LvbhDBDQ;
}

async function _XKWhbyWP(_PbxHterf, _BqBpPDHi) {
    const _fQFNrZVl = await _sVgCbqDF(_BqBpPDHi);
    if (!_fQFNrZVl.itemLink._eeCieDoE) {
        return new Response("Item _LvbhDBDQ feature is disabled.", { status: 503, _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' } });
    }

    try {
        const _iUMcrmPH = _BqBpPDHi.DB.prepare("SELECT _zEUwoOLx FROM kv_data WHERE _fcHRWHAI = ?").bind(_jCKPInJs);
        const { _qfQmGQAV: dbResults } = await _iUMcrmPH.all();
        const _LssVEvQd = dbResults._IIkxJcSQ > 0 ? dbResults[0]._zEUwoOLx : null;
        const _vEDNOgIF = _LssVEvQd ? JSON.parse(_LssVEvQd) : null;
        
        if (!_vEDNOgIF || !_vEDNOgIF._qfQmGQAV || _vEDNOgIF._qfQmGQAV._IIkxJcSQ === 0) {
            return new Response("No optimized IPs available to generate endpoints.", {
                status: 404,
                _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' },
            });
        }
        
        const _ZHqAhuQQ = new URL(_PbxHterf._vGtvnGlV)._ZvPPjLqC;

        const _QwaxrNED = _vEDNOgIF._qfQmGQAV.map((_RisxZExA, _rSrUKrJc) => {
            return _NFOuYqTg(_RisxZExA, _rSrUKrJc, _fQFNrZVl, _ZHqAhuQQ);
        }).filter(Boolean);

        if (_QwaxrNED._IIkxJcSQ === 0) {
            return new Response("Could not generate any _TvtziHCp links from the available IPs.", {
                status: 500,
                _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' },
            });
        }

        return new Response(_QwaxrNED.join('\n'), {
            _ZSCbaYzy: { 'Content-Type': '_oivNELJI/plain; _xbSMAFzA=utf-8' },
        });

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

async function _tfNoBUDk(_PbxHterf, _BqBpPDHi, _lzkCHIQe) {
    const _OKXGOdmm = _PbxHterf._ZSCbaYzy.get('CF-Connecting-IP') || "未知IP";
    const [
        _tQbnVJSD,
        _WbkRzjnf,
        defaultDomains,
        fetchedCountryMap
    ] = await Promise.all([
        _XyxahkHH(_GQflSqPi, _NZNmHcfl, []),
        _XyxahkHH(_TaAHxqAN, _NZNmHcfl, []),
        _XyxahkHH(_yoIKOqFD, _gltBabvI, []),
        _XyxahkHH(_xVOQDmHZ, _jIErJVpS, { "N/A": "未知" })
    ]);
    _eVRIAVlh = fetchedCountryMap;
    let _uIOgcLyR = false;
    let _chpTzINx;
    try {
        const _pmGHgKae = await _JaaHuRlE(_BqBpPDHi);
        _uIOgcLyR = !!_pmGHgKae;
        _chpTzINx = await _sVgCbqDF(_BqBpPDHi);
    } catch (_TypLzJyb) {
        if (_TypLzJyb._MBvXPQjK && _TypLzJyb._MBvXPQjK.includes('no such table')) {
            console.log("检测到 'kv_data' 表不存在,正在自动创建...");
            try {
                const _MgTBJEfH = "CREATE TABLE IF NOT EXISTS kv_data (_fcHRWHAI TEXT PRIMARY KEY, _zEUwoOLx TEXT); CREATE TABLE IF NOT EXISTS optimized_results (_WMHQbbce TEXT PRIMARY KEY, _YtKORMAW TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";
                await _BqBpPDHi.DB.exec(_MgTBJEfH);
                console.log("数据表创建成功。");
                _uIOgcLyR = false;
                _chpTzINx = _mWVOUlYw();
            } catch (dbError) {
                console.error("自动创建数据表失败:", dbError);
                return new Response(`数据库初始化失败: ${dbError._MBvXPQjK}`, {
                    status: 500,
                    _ZSCbaYzy: { 'Content-Type': '_oivNELJI/html;_xbSMAFzA=UTF-8' }
                });
            }
        } else {
             let _IhWsdHZl = _AFAfuUjH(_TypLzJyb._MBvXPQjK);
             return new Response(_IhWsdHZl, { _ZSCbaYzy: { 'Content-Type': '_oivNELJI/html;_xbSMAFzA=UTF-8' } });
        }
    }
    if (_chpTzINx.telegram.bot_token && _chpTzINx.telegram.chat_id) {
        const _bfevbNWg = _PbxHterf.cf?._bfevbNWg || "未知";
        const _jvLiuLnl = _PbxHterf.cf?._jvLiuLnl || "";
        let _quRzKWMm = _eVRIAVlh[_bfevbNWg] || _bfevbNWg;
        if (_jvLiuLnl && _jvLiuLnl !== "未知城市" && _jvLiuLnl !== _bfevbNWg) _quRzKWMm = `${_quRzKWMm} ${_eVRIAVlh[_jvLiuLnl] || _jvLiuLnl}`;
        const _BGTAtXOm = _WZfDvrBg();
        const _tkScuvsU = _PbxHterf._vGtvnGlV;
        const _uQHFMkkx = `访客: ${_OKXGOdmm}\n位置: ${_quRzKWMm.trim()}\n时间: ${_BGTAtXOm}\n来自:${_tkScuvsU}`;
        const _tuQPastC = `https://api.telegram.org/bot${_chpTzINx.telegram.bot_token}/sendMessage?chat_id=${_chpTzINx.telegram.chat_id}&_oivNELJI=${encodeURIComponent(_uQHFMkkx)}`;
        _lzkCHIQe.waitUntil(fetch(_tuQPastC).catch(_TypLzJyb => console.error("Telegram通知失败:", _TypLzJyb)));
    }
    let _AiIPBuOu = _wCasksMF();
    const _boVuXOHD = {
        _fQFNrZVl: _chpTzINx,
        status: {
            _uIOgcLyR: _uIOgcLyR,
        }
    };
    _AiIPBuOu = _AiIPBuOu.replace('__PAGE_DATA_JSON__', JSON.stringify(_boVuXOHD));
    _AiIPBuOu = _AiIPBuOu.replace('__ALL_CF_CIDR_LIST_JSON__', JSON.stringify(_tQbnVJSD));
    _AiIPBuOu = _AiIPBuOu.replace('__BALANCED_CF_CIDR_LIST_JSON__', JSON.stringify(_WbkRzjnf));
    _AiIPBuOu = _AiIPBuOu.replace('__DEFAULT_DOMAINS_LIST_JSON__', JSON.stringify(defaultDomains));
    _AiIPBuOu = _AiIPBuOu.replace('__COUNTRY_MAP_JSON__', JSON.stringify(_eVRIAVlh));
    return new Response(_AiIPBuOu, {
        _ZSCbaYzy: { 'Content-Type': '_oivNELJI/html;_xbSMAFzA=UTF-8' },
    });
}

function _fsqXPSpD(_jWmkrTWC, status = 200, _ZSCbaYzy = {}) {
    return new Response(JSON.stringify(_jWmkrTWC), {
        status,
        _ZSCbaYzy: { 'Content-Type': 'application/json;_xbSMAFzA=UTF-8', ..._ZSCbaYzy }
    });
}

function _WZfDvrBg(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 _nvchzGZP(_whSCQXik) {
    if (!_whSCQXik || typeof _whSCQXik !== 'string') return "无效IP";
    if(_iGVIAASX.isIPv4(_whSCQXik)){
        const _onorrDOQ = _whSCQXik.split('.');
        if (_onorrDOQ._IIkxJcSQ === 4) return `${_onorrDOQ[0]}.*.*.${_onorrDOQ[3]}`;
    }
    if(_iGVIAASX.isIPv6(_whSCQXik)){
        const _onorrDOQ = _whSCQXik.split(':');
        if (_onorrDOQ._IIkxJcSQ > 2) return `${_onorrDOQ[0]}:...:${_onorrDOQ[_onorrDOQ._IIkxJcSQ - 1]}`;
    }
    return _whSCQXik;
}

function _AFAfuUjH(_WYsIKcJh) {
    return `
    <!DOCTYPE html><html lang="zh-CN"><head><meta _xbSMAFzA="UTF-8"><title>需要设置</title>
    <_opyqAExW>
        _jWmkrTWC { font-family: sans-serif; background: #1a1a1a; _ZByYaVjC: #e0e0e0; display: flex; justify-_XdcCXKqC: center; align-items: center; height: 100vh; margin: 0; }
        ._byzvTaLq { max-_opxxaWJC: 800px; padding: 2rem; background: #25282e; border: 1px solid #4044c; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
        h1 { _ZByYaVjC: #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 { _ZByYaVjC: #da3633; background: rgba(218, 54, 51, 0.1); padding: 0.5rem; border-radius: 4px; margin-_EFAdJLCL: 1rem; }
    </_opyqAExW>
    </head><_jWmkrTWC>
    <div class="_byzvTaLq">
        <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>
        ${_WYsIKcJh ? `<div class="error"><strong>当前错误信息:</strong> ${_WYsIKcJh.replace(/</g, "&lt;").replace(/>/g, "&gt;")}</div>` : ''}
    </div>
    </_jWmkrTWC></html>`;
}

function _wCasksMF() {
    return `
  <!DOCTYPE html><html lang="zh-CN"><head> <meta _xbSMAFzA="UTF-8"> <meta _XhjeVTvM="viewport" _XdcCXKqC="_opxxaWJC=device-_opxxaWJC, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Cloudflare IP</title> <_LvbhDBDQ 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>
  <_opyqAExW>
  :root { --primary-_ZByYaVjC: #00A0FF; --primary-hover: #007ACC; --primary-gradient-start: #00C6FF; --primary-gradient-end: #0072FF; --secondary-_ZByYaVjC: #8c939d; --light-bg: #1A1C20; --_XdcCXKqC-bg: #25282E; --border-_ZByYaVjC: #40444C; --_oivNELJI-_ZByYaVjC: #E0E0E0; --_oivNELJI-light: #B0B0B0; --success-_ZByYaVjC: #30A46C; --danger-_ZByYaVjC: #DA3633; --warning-_ZByYaVjC: #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; }
  _jWmkrTWC { font-family: var(--font-family-sans); background-_ZByYaVjC: var(--light-bg); _ZByYaVjC: var(--_oivNELJI-_ZByYaVjC); line-height: 1.65; overflow-x: hidden; padding: 0; position:relative; transition: background-_ZByYaVjC 0.5s ease; background-size: cover; background-position: center; background-attachment: fixed; }
  #background-_ivYqUaRR { position: fixed; _EFAdJLCL: 0; _NgyAzyuD: 0; _opxxaWJC: 100%; height: 100%; z-_rSrUKrJc: -1; display: none; }
  ._CVXBHlen-_byzvTaLq { max-_opxxaWJC: 1100px; margin: 0 auto; padding: 0 1rem; position: relative; z-_rSrUKrJc: 1; }
  #_tQoKGZZF { position: fixed; _EFAdJLCL: 1rem; right: 1rem; font-size: 0.85em; padding: 0.4em 0.8em; z-_rSrUKrJc: 10; }
  #marquee-_byzvTaLq { overflow: hidden; white-space: nowrap; background-_ZByYaVjC: rgba(37, 40, 46, 0.6); backdrop-filter: blur(5px); _ZByYaVjC: var(--primary-_ZByYaVjC); padding: 0.5rem 0; margin-_EFAdJLCL: 1rem; border-radius: var(--border-radius-sm); display: none; }
  #marquee-_oivNELJI { display: inline-block; padding-_NgyAzyuD: 100%; animation: marquee-scroll 20s linear infinite; }
  @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
  _YivsTWpg { _oivNELJI-align: center; margin-_EFAdJLCL: 1rem; margin-bottom: 2rem; }
  _YivsTWpg h1 { white-space: pre-wrap; font-size: 2.25em; _ZByYaVjC: var(--primary-_ZByYaVjC); font-weight: 700; _oivNELJI-shadow: 0 0 10px rgba(var(--primary-_ZByYaVjC-rgb), 0.3); }
  .card { background-_ZByYaVjC: 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-_ZByYaVjC); }
  .progress-section #_PojoGszn { _opxxaWJC: 100%; height: 0.75rem; border-radius: var(--border-radius-sm); appearance: none; -webkit-appearance: none; background-_ZByYaVjC: var(--border-_ZByYaVjC); overflow: hidden; }
  .progress-section #_PojoGszn::-webkit-progress-_zEUwoOLx { background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); }
  .progress-section #status { _oivNELJI-align: center; margin-_EFAdJLCL: 0.75em; font-size: 0.95em; _ZByYaVjC: var(--_oivNELJI-light); min-height: 1.5em; }
  .section-_YivsTWpg { display: flex; flex-wrap: wrap; justify-_XdcCXKqC: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-_ZByYaVjC); gap: 1rem; }
  .section-_YivsTWpg h2 { font-size: 1.6em; font-weight: 600; margin:0; }
  .generator-info { font-size: 0.85em; _ZByYaVjC: var(--secondary-_ZByYaVjC); _oivNELJI-align: right; flex-shrink: 0; }
  .generator-info span { display: block; }
  .table-responsive { _opxxaWJC: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table { _opxxaWJC: 100%; border-collapse: collapse; margin-_EFAdJLCL: 0; font-size: 0.9em; }
  th, td { border-bottom: 1px solid var(--border-_ZByYaVjC); padding: 0.8em; _oivNELJI-align: _NgyAzyuD; vertical-align: middle; white-space: nowrap; }
  th { background-_ZByYaVjC: #2c3038; font-weight: 500; }
  tbody tr:hover { background-_ZByYaVjC: #30333a; }
  td._whSCQXik-_bCuVHijH { font-weight: 500; font-family: var(--font-family-mono); _ZByYaVjC: var(--primary-_ZByYaVjC); }
  td.ping-_zEUwoOLx { font-weight: 600; font-family: var(--font-family-mono); }
  td.actions-cell { _oivNELJI-align: right; }
  .btn { display: inline-flex; align-items: center; justify-_XdcCXKqC: center; font-weight: 500; _oivNELJI-align: center; cursor: pointer; user-_sgoEMyyM: none; background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid transparent; _ZByYaVjC: #fff; padding: 0.4em 0.8em; font-size: 0.85em; border-radius: var(--border-radius-sm); transition: all 0.2s ease-in-out; margin-_NgyAzyuD: 6px; }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }
  .btn-outline { background: transparent; _ZByYaVjC: var(--primary-_ZByYaVjC); border: 1px solid var(--primary-_ZByYaVjC); }
  .btn-outline:hover { background-_ZByYaVjC: var(--primary-_ZByYaVjC); _ZByYaVjC: var(--_XdcCXKqC-bg); }
  ._CVXBHlen-download-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
  ._CVXBHlen-download-buttons .btn { _opxxaWJC: 100%; margin: 0; }
  .tooltip-notification { position: fixed; _EFAdJLCL: 20px; right: 20px; padding: 12px 20px; border-radius: var(--border-radius-md); _ZByYaVjC: #fff; font-size: 0.95em; z-_rSrUKrJc: 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); }
  #_YiWxbyCm, #_MyXbSEXb, #_sVOtZryN, #_XFgntNHQ, #_XoJlRYwJ { display: none; position: fixed; z-_rSrUKrJc: 10000; _NgyAzyuD: 0; _EFAdJLCL: 0; _opxxaWJC: 100%; height: 100%; background-_ZByYaVjC: rgba(0,0,0,0.6); justify-_XdcCXKqC: center; align-items: center; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }
  .modal-_XdcCXKqC, ._CVXBHlen-modal-_XdcCXKqC { background-_ZByYaVjC: var(--_XdcCXKqC-bg); padding: 2rem; border: 1px solid var(--border-_ZByYaVjC); border-radius: var(--border-radius-md); _opxxaWJC: 95%; max-_opxxaWJC: 800px; max-height: 90vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
  #_XFgntNHQ .modal-_XdcCXKqC { max-_opxxaWJC: 500px; }
  .modal-_XdcCXKqC h3, ._CVXBHlen-modal-_YivsTWpg h3 { margin-_EFAdJLCL: 0; margin-bottom: 1.5rem; _ZByYaVjC: var(--primary-_ZByYaVjC); _oivNELJI-align: center; }
  .modal-buttons { display: flex; justify-_XdcCXKqC: flex-end; gap: 1rem; margin-_EFAdJLCL: 2rem; border-_EFAdJLCL: 1px solid var(--border-_ZByYaVjC); padding-_EFAdJLCL: 1.5rem; }
  .modal-section-divider { border: 0; height: 1px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--border-_ZByYaVjC), rgba(0,0,0,0)); margin: 2rem 0; }
  ._CVXBHlen-modal-_YivsTWpg { display: flex; justify-_XdcCXKqC: space-between; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-_ZByYaVjC); }
  .modal-close-btn { font-size: 1.5rem; font-weight: bold; line-height: 1; _ZByYaVjC: var(--_oivNELJI-light); cursor: pointer; background: none; border: none; padding: 0; }
  ._CVXBHlen-list-_TvtziHCp { display: flex; flex-direction: column; padding: 1rem; border: 1px solid var(--border-_ZByYaVjC); border-radius: var(--border-radius-sm); margin-bottom: 1rem; }
  ._CVXBHlen-_XhjeVTvM { font-size: 1.1em; font-weight: 600; }
  ._CVXBHlen-links a { display: block; _ZByYaVjC: var(--primary-_ZByYaVjC); _oivNELJI-decoration: none; margin-_EFAdJLCL: 0.5rem; word-break: break-all; }
  ._CVXBHlen-links a:hover { _oivNELJI-decoration: underline; }
  ._CVXBHlen-links span { _ZByYaVjC: var(--_oivNELJI-light); }
  #visitorPasswordPrompt { _oivNELJI-align: center; }
  #visitorPasswordPrompt h3 { _ZByYaVjC: var(--primary-_ZByYaVjC); font-size: 1.4em; margin-bottom: 0.8rem; }
  #visitorPasswordPrompt p { _ZByYaVjC: var(--_oivNELJI-light); margin-bottom: 1.5rem; }
  ._pmGHgKae-input-group { display: flex; gap: 10px; max-_opxxaWJC: 400px; margin: 0 auto; }
  ._pmGHgKae-input-group input { flex-grow: 1; _oivNELJI-align: center; }
  ._pmGHgKae-input-group .btn { margin-_NgyAzyuD: 0; }
  ._qfQmGQAV-actions-_byzvTaLq { _oivNELJI-align: center; margin-bottom: 1.5rem; }
  ._qfQmGQAV-api-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
  ._qfQmGQAV-api-buttons .btn { margin: 0; _opxxaWJC: 100%; font-size: 0.9em; padding: 0.5em 1em; }
  .form-grid { display: grid; grid-template-columns: max-_XdcCXKqC 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 _sgoEMyyM, .form-grid-control textarea { _opxxaWJC: 100%; background-_ZByYaVjC: var(--light-bg); border: 1px solid var(--border-_ZByYaVjC); border-radius: var(--border-radius-sm); _ZByYaVjC: var(--_oivNELJI-_ZByYaVjC); font-family: var(--font-family-sans); padding: 0.6em; transition: border-_ZByYaVjC 0.2s, box-shadow 0.2s; }
  .form-grid-control input:focus, .form-grid-control _sgoEMyyM:focus, .form-grid-control textarea:focus { border-_ZByYaVjC: var(--primary-_ZByYaVjC); box-shadow: 0 0 0 2px rgba(var(--primary-_ZByYaVjC-rgb), 0.2); outline: none; }
  .form-grid-control input[_mCxoiXge="_ZByYaVjC"] { min-_opxxaWJC: auto; padding: 2px; _opxxaWJC: 2.5em; height: 2.5em; }
  .form-grid-control input[_mCxoiXge="checkbox"] { _opxxaWJC: auto; flex-shrink: 0; height: 1.2em; _opxxaWJC: 1.2em; }
  .form-grid-control ._RghwavkK-input { _opxxaWJC: 80px; _oivNELJI-align: right; }
  .tooltip-_BRYUxzLb { display: inline-flex; _opxxaWJC: 16px; height: 16px; align-items: center; justify-_XdcCXKqC: center; background-_ZByYaVjC: var(--secondary-_ZByYaVjC); _ZByYaVjC: var(--_XdcCXKqC-bg); border-radius: 50%; font-size: 12px; font-weight: bold; cursor: pointer; user-_sgoEMyyM: none; }
  #tooltip-popup { position: fixed; background-_ZByYaVjC: #383c4a; _ZByYaVjC: #fff; padding: 10px 15px; border-radius: 6px; z-_rSrUKrJc: 10001; font-size: 0.85em; max-_opxxaWJC: 300px; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.4); border: 1px solid var(--border-_ZByYaVjC); pointer-events: none; }
  #custom-fields-_byzvTaLq .form-grid-control { gap: 5px; } #custom-fields-_byzvTaLq .form-grid-control input { flex: 1; }
  .parameter-_qORUHIZA-_SCnnhoLd { border: 1px solid var(--border-_ZByYaVjC); border-radius: var(--border-radius-sm); padding: 1rem; margin-bottom: 1rem; }
  .parameter-_qORUHIZA-_YivsTWpg { display: flex; justify-_XdcCXKqC: space-between; align-items: center; margin-bottom: 1rem; }
  .parameter-_qORUHIZA-_YivsTWpg input { flex-grow: 1; margin-right: 1rem; }
  .fine-grained-options { display: flex; gap: 1rem; margin-_EFAdJLCL: 0.5rem; align-items: center; font-size: 0.9em; }
  .fine-grained-options label { display: flex; align-items: center; gap: 0.3rem; cursor: pointer; }
  ._oivNELJI-_ZByYaVjC-grid { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: center; _opxxaWJC: 100%; }
  ._oivNELJI-_ZByYaVjC-grid input[_mCxoiXge="_ZByYaVjC"] { grid-column: 1 / 2; }
  ._oivNELJI-_ZByYaVjC-grid input[_mCxoiXge="_oivNELJI"], ._oivNELJI-_ZByYaVjC-grid textarea { grid-column: 2 / 3; }
  #_XFgntNHQ .button-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
  #_XFgntNHQ .btn-group { display: flex; }
  #_XFgntNHQ .sub-btn { flex-grow: 1; margin: 0; }
  #_XFgntNHQ ._TKxuAGIJ-btn { flex-shrink: 0; margin-_NgyAzyuD: -1px; border-_EFAdJLCL-_NgyAzyuD-radius: 0; border-bottom-_NgyAzyuD-radius: 0; }
  #_XoJlRYwJ .modal-_XdcCXKqC { max-_opxxaWJC: 300px; background: white; padding: 1rem; _oivNELJI-align: center; }
  #qrCodeImg { max-_opxxaWJC: 100%; }
  @media (max-_opxxaWJC: 768px) {
    html { font-size: 15px; } ._CVXBHlen-_byzvTaLq { padding: 0 0.8rem; } _YivsTWpg { margin-_EFAdJLCL: 2.5rem; margin-bottom: 1.5rem; } #_tQoKGZZF { _EFAdJLCL: 0.8rem; right: 0.8rem; } .card { padding: 1rem; }
    .form-grid { grid-template-columns: 1fr; } .form-grid-label { justify-self: start; }
  }
  </_opyqAExW>
  <_opyqAExW _WMHQbbce="theme-styles">
  .theme-light { --light-bg: #F0F2F5; --_XdcCXKqC-bg: #FFFFFF; --border-_ZByYaVjC: #DCDFE6; --_oivNELJI-_ZByYaVjC: #303133; --_oivNELJI-light: #606266; }
  .theme-light .card { background-_ZByYaVjC: rgba(255, 255, 255, 0.9); }
  .theme-light th { background-_ZByYaVjC: #F5F7FA; }
  .theme-light tbody tr:hover { background-_ZByYaVjC: #ECF5FF; }
  .theme-matrix { --primary-_ZByYaVjC: #00FF41; --primary-hover: #39FF14; --light-bg: #000000; --_XdcCXKqC-bg: #0D0208; --border-_ZByYaVjC: #00FF41; --_oivNELJI-_ZByYaVjC: #00FF41; --_oivNELJI-light: #00FF41; font-family: var(--font-family-mono); }
  .theme-matrix .card { background-_ZByYaVjC: rgba(0, 20, 0, 0.7); _oivNELJI-shadow: 0 0 5px var(--primary-_ZByYaVjC); backdrop-filter: none; }
  .theme-matrix th { background-_ZByYaVjC: #000; }
  .theme-matrix tbody tr:hover { background-_ZByYaVjC: #010; }
  .theme-matrix .btn { _oivNELJI-shadow: none; _ZByYaVjC: #000; }
  .theme-matrix .btn-outline { background-_ZByYaVjC: transparent; }
  .theme-modern-glass { --primary-_ZByYaVjC: #00C6FF; --primary-hover: #0072FF; --light-bg: #000; --_XdcCXKqC-bg: rgba(30, 30, 40, 0.6); --border-_ZByYaVjC: rgba(255, 255, 255, 0.2); --_oivNELJI-_ZByYaVjC: #F0F0F0; --_oivNELJI-light: #A0A0B0; --border-radius-md: 12px; }
  _jWmkrTWC.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-_ZByYaVjC: #00C6FF; --primary-hover: #0072FF; --light-bg: #1A1C20; --_XdcCXKqC-bg: rgba(30, 30, 40, 0.6); --border-_ZByYaVjC: rgba(255, 255, 255, 0.2); --_oivNELJI-_ZByYaVjC: #F0F0F0; --_oivNELJI-light: #A0A0B0; --border-radius-md: 12px; }
  .glassy-components .card { background-_ZByYaVjC: var(--_XdcCXKqC-bg); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid var(--border-_ZByYaVjC); }
  .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-_ZByYaVjC: rgba(0,0,0,0.3); border-right-_ZByYaVjC: 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); _oivNELJI-shadow: 0 1px 2px rgba(0,0,0,0.2); _ZByYaVjC: #fff; }
  .glassy-components .btn-outline { background: rgba(255, 255, 255, 0.05); border-_ZByYaVjC: rgba(255, 255, 255, 0.2); backdrop-filter: blur(2px); _oivNELJI-shadow: 0 1px 2px rgba(0,0,0,0.2); }
  .glassy-components .btn-outline:hover { background: var(--primary-_ZByYaVjC); border-_ZByYaVjC: var(--primary-_ZByYaVjC); _ZByYaVjC: #fff; }
  .glassy-components _YivsTWpg h1 { background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.7) 100%); -webkit-background-clip: _oivNELJI; -webkit-_oivNELJI-fill-_ZByYaVjC: transparent; filter: drop-shadow(0 2px 5px rgba(0,0,0,0.5)); _ZByYaVjC: transparent; }
  .theme-aurora-glass { --primary-_ZByYaVjC: #38bdf8; --light-bg: #0c0a09; --_XdcCXKqC-bg: rgba(23, 23, 23, 0.5); --border-_ZByYaVjC: rgba(255, 255, 255, 0.15); --_oivNELJI-_ZByYaVjC: #f2f2f2; --_oivNELJI-light: #a3a3a3; }
  _jWmkrTWC.theme-aurora-glass::before { _XdcCXKqC: ''; position: fixed; _EFAdJLCL: 0; _NgyAzyuD: 0; _opxxaWJC: 100%; height: 100%; z-_rSrUKrJc: -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-_ZByYaVjC: #08fdd8; --light-bg: #010409; --_XdcCXKqC-bg: rgba(22, 27, 34, 0.6); --border-_ZByYaVjC: rgba(139, 148, 158, 0.3); --_oivNELJI-_ZByYaVjC: #e6edf3; --_oivNELJI-light: #7d8590; }
  .theme-cyberpunk-glass .card { border-image: linear-gradient(to bottom right, var(--primary-_ZByYaVjC), #7928ca) 1; box-shadow: 0 0 15px rgba(var(--primary-_ZByYaVjC-rgb), 0.25); }
  .theme-cyberpunk-glass .btn { box-shadow: 0 0 8px rgba(var(--primary-_ZByYaVjC-rgb), 0.5); }
  .theme-marble-light { --primary-_ZByYaVjC: #bfa37c; --light-bg: #f7f5f2; --_XdcCXKqC-bg: #ffffff; --border-_ZByYaVjC: #e0dcd5; --_oivNELJI-_ZByYaVjC: #3d3a36; --_oivNELJI-light: #6b6661; }
  _jWmkrTWC.theme-marble-light { background-image: _vGtvnGlV('_YtKORMAW:image/svg+xml,%3Csvg _opxxaWJC="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-_ZByYaVjC: rgba(255, 255, 255, 0.85); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
  </_opyqAExW>
  </head><_jWmkrTWC _WMHQbbce="pageBody">
  <_ivYqUaRR _WMHQbbce="background-_ivYqUaRR"></_ivYqUaRR>
  <div _WMHQbbce="_YiWxbyCm">
      <div class="modal-_XdcCXKqC">
          <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 _mCxoiXge="_pmGHgKae" _WMHQbbce="initialPassword"></div></div>
          <div class="form-grid"><div class="form-grid-label"><label for="confirmPassword">确认密码</label></div><div class="form-grid-control"><input _mCxoiXge="_pmGHgKae" _WMHQbbce="confirmPassword"></div></div>
          <div class="modal-buttons"><button _WMHQbbce="setInitialPasswordBtn" class="btn">设置密码</button></div>
      </div>
  </div>
  <div class="_CVXBHlen-_byzvTaLq">
    <button _WMHQbbce="_tQoKGZZF" class="btn btn-outline"></button>
    <div _WMHQbbce="marquee-_byzvTaLq"><div _WMHQbbce="marquee-_oivNELJI"></div></div>
    <_YivsTWpg><h1 _WMHQbbce="pageTitle"></h1></_YivsTWpg>
    <div class="card" _WMHQbbce="visitorPasswordPrompt" _opyqAExW="display: none;">
        <h3>需要授权</h3>
        <p>此站点已启用访客密码,请输入密码以继续。</p>
        <div class="_pmGHgKae-input-group">
            <input _mCxoiXge="_pmGHgKae" _WMHQbbce="visitorPasswordEntry" _KENAeUYh="访客密码">
            <button _WMHQbbce="startTestWithPasswordBtn" class="btn">开始测试</button>
        </div>
    </div>
    <div _WMHQbbce="_qpVPbkdT" _opyqAExW="display: block;">
        <div class="card progress-section">
            <div _WMHQbbce="progressDisplay">
                <progress _WMHQbbce="_PojoGszn" _zEUwoOLx="0" max="100"></progress>
                <div _WMHQbbce="status">正在初始化...</div>
            </div>
        </div>
        <div class="card _CVXBHlen-download-section">
          <div class="section-_YivsTWpg"><h2 _WMHQbbce="appDownloadTitleEl"></h2></div>
          <div class="_CVXBHlen-download-buttons">
            <button class="btn" _YtKORMAW-_mtccyHrb="android">安卓客户端</button>
            <button class="btn" _YtKORMAW-_mtccyHrb="ios">苹果客户端</button>
            <button class="btn" _YtKORMAW-_mtccyHrb="windows">Windows客户端</button>
            <button class="btn" _YtKORMAW-_mtccyHrb="mac">Mac客户端</button>
          </div>
        </div>
        <div class="card _qfQmGQAV-section" _WMHQbbce="_CYGOocpM" _opyqAExW="display:none;">
          <div class="section-_YivsTWpg">
            <h2 _WMHQbbce="liveTitleEl"></h2>
            <div class="generator-info" _WMHQbbce="liveGeneratorInfo"></div>
          </div>
          <div _WMHQbbce="_CzSJmnGr" class="_qfQmGQAV-actions-_byzvTaLq" _opyqAExW="display: none;">
             <div class="_qfQmGQAV-api-buttons">
                <button _WMHQbbce="copyIpApiBtn" class="btn">复制 IP API</button>
                <button _WMHQbbce="copySubscriptionBtn" class="btn">复制订阅</button>
             </div>
          </div>
          <div class="table-responsive">
            <table _WMHQbbce="resultsTable">
              <thead><tr><th _WMHQbbce="tableHeader1El"></th><th _WMHQbbce="tableHeader2El"></th><th _WMHQbbce="tableHeader3El"></th><th _WMHQbbce="tableHeader4El"></th><th _WMHQbbce="tableHeader5El"></th><th _WMHQbbce="tableHeader6El"></th><th _WMHQbbce="tableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
        <div class="card cached-section" _WMHQbbce="_qOFOKaLE" _opyqAExW="display:none;">
          <div class="section-_YivsTWpg"><h2 _WMHQbbce="cachedTitleEl"></h2><div class="generator-info" _WMHQbbce="cachedGeneratorInfo"></div></div>
          <div class="table-responsive">
            <table _WMHQbbce="cachedResultsTable">
              <thead><tr><th _WMHQbbce="cachedTableHeader1El"></th><th _WMHQbbce="cachedTableHeader2El"></th><th _WMHQbbce="cachedTableHeader3El"></th><th _WMHQbbce="cachedTableHeader4El"></th><th _WMHQbbce="cachedTableHeader5El"></th><th _WMHQbbce="cachedTableHeader6El"></th><th _WMHQbbce="cachedTableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
    </div>
  </div>
  <div _WMHQbbce="notificationTooltip" class="tooltip-notification"></div>
  <div _WMHQbbce="_MyXbSEXb">
    <div class="modal-_XdcCXKqC">
      <h3>修改参数</h3>
      <div _opyqAExW="display: flex; border-bottom: 1px solid var(--border-_ZByYaVjC); margin-bottom: 1.5rem;">
          <button class="tab-button active" onclick="_bBnzEiHf(event, 'general-_FKrjSuSd')">通用设置</button>
          <button class="tab-button" onclick="_bBnzEiHf(event, '_LvbhDBDQ-_FKrjSuSd')">链接设置</button>
          <button class="tab-button" onclick="_bBnzEiHf(event, 'fine-grained-_FKrjSuSd')">IP源设置</button>
          <button class="tab-button" onclick="_bBnzEiHf(event, 'advanced-_FKrjSuSd')">高级设置</button>
      </div>
      <div _WMHQbbce="general-_FKrjSuSd" class="tab-_XdcCXKqC" _opyqAExW="display: block;">
        <div class="form-grid">
            <div class="form-grid-label"><label for="themeSelect">页面主题</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="选择页面的整体外观风格。">?</span></div>
            <div class="form-grid-control">
                <_sgoEMyyM _WMHQbbce="themeSelect">
                    <_mfsIUkxD _zEUwoOLx="theme-aurora-glass">极光-玻璃质感</_mfsIUkxD>
                    <_mfsIUkxD _zEUwoOLx="theme-particles-glass">粒子-玻璃质感</_mfsIUkxD>
                    <_mfsIUkxD _zEUwoOLx="theme-modern-glass">现代-玻璃质感</_mfsIUkxD>
                    <_mfsIUkxD _zEUwoOLx="theme-cyberpunk-glass">赛博朋克-玻璃质感</_mfsIUkxD>
                    <_mfsIUkxD _zEUwoOLx="theme-dark-particles">暗色-粒子背景</_mfsIUkxD>
                    <_mfsIUkxD _zEUwoOLx="theme-dark-bing">暗色-必应壁纸</_mfsIUkxD>
                    <_mfsIUkxD _zEUwoOLx="theme-light">亮色-简约</_mfsIUkxD>
                    <_mfsIUkxD _zEUwoOLx="theme-light-bing">亮色-必应壁纸</_mfsIUkxD>
                    <_mfsIUkxD _zEUwoOLx="theme-marble-light">简约大理石-亮色</_mfsIUkxD>
                    <_mfsIUkxD _zEUwoOLx="theme-matrix">矩阵-代码雨</_mfsIUkxD>
                </_sgoEMyyM>
            </div>
            <div class="form-grid-label"><label>主题颜色</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="自定义主题的主要颜色和动态背景效果的颜色。">?</span></div>
            <div class="form-grid-control">
                <label for="primaryColorInput">强调色</label><input _mCxoiXge="_ZByYaVjC" _WMHQbbce="primaryColorInput">
                <span _opyqAExW="_opxxaWJC: 20px;"></span>
                <label for="particleColorInput">背景/粒子色</label><input _mCxoiXge="_ZByYaVjC" _WMHQbbce="particleColorInput">
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _opyqAExW="align-self: start;"><label>页面文本与颜色</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="自定义页面上各个主要元素的显示文本和颜色。">?</span></div>
            <div class="form-grid-control" _opyqAExW="flex-direction: column; align-items: stretch; gap: 8px;">
                <div class="_oivNELJI-_ZByYaVjC-grid"><input _mCxoiXge="_ZByYaVjC" _WMHQbbce="colorInput_title"><textarea _WMHQbbce="textInput_title" _UyAcFXIp="1" _KENAeUYh="页面主标题"></textarea></div>
                <div class="_oivNELJI-_ZByYaVjC-grid"><input _mCxoiXge="_ZByYaVjC" _WMHQbbce="colorInput_loginButton"><input _mCxoiXge="_oivNELJI" _WMHQbbce="textInput_loginButton" _KENAeUYh="登录按钮文本"></div>
                <div class="_oivNELJI-_ZByYaVjC-grid"><input _mCxoiXge="_ZByYaVjC" _WMHQbbce="colorInput_appDownloadTitle"><input _mCxoiXge="_oivNELJI" _WMHQbbce="textInput_appDownloadTitle" _KENAeUYh="APP下载标题"></div>
                <div class="_oivNELJI-_ZByYaVjC-grid"><input _mCxoiXge="_ZByYaVjC" _WMHQbbce="colorInput_liveTitle"><input _mCxoiXge="_oivNELJI" _WMHQbbce="textInput_liveTitle" _KENAeUYh="本次结果标题"></div>
                <div class="_oivNELJI-_ZByYaVjC-grid"><input _mCxoiXge="_ZByYaVjC" _WMHQbbce="colorInput_cachedTitle"><input _mCxoiXge="_oivNELJI" _WMHQbbce="textInput_cachedTitle" _KENAeUYh="上次结果标题"></div>
                <div class="_oivNELJI-_ZByYaVjC-grid"><input _mCxoiXge="_ZByYaVjC" _WMHQbbce="colorInput_tableHeader"><input _mCxoiXge="_oivNELJI" _zEUwoOLx="表格头部文本颜色" readonly _opyqAExW="background: transparent; border: none;"></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _opyqAExW="align-self: start;"><label>公告栏设置</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="设置在页面显示的公告内容和方式。">?</span></div>
            <div class="form-grid-control" _opyqAExW="flex-direction: column; align-items: stretch; gap: 8px;">
                 <textarea _WMHQbbce="announcementText" _KENAeUYh="在此输入公告内容" _UyAcFXIp="3"></textarea>
                 <div _opyqAExW="display: flex; justify-_XdcCXKqC: space-around; align-items: center; gap: 1rem; flex-wrap: wrap;">
                    <label _opyqAExW="display: flex; align-items: center; gap: 5px;"><input _mCxoiXge="checkbox" _WMHQbbce="enableMarquee"> 顶部走马灯</label>
                    <label _opyqAExW="display: flex; align-items: center; gap: 5px;"><input _mCxoiXge="checkbox" _WMHQbbce="enablePopup"> 右上角弹窗</label>
                    <div _WMHQbbce="popupDurationContainer" _opyqAExW="display: none; align-items: center; gap: 5px;">
                        <label for="popupDuration">停留</label><input _mCxoiXge="number" _WMHQbbce="popupDuration" _opyqAExW="_opxxaWJC: 60px;"><span>秒</span>
                    </div>
                 </div>
            </div>
        </div>
      </div>
      <div _WMHQbbce="_LvbhDBDQ-_FKrjSuSd" class="tab-_XdcCXKqC">
        <div class="form-grid">
          <div class="form-grid-label"><label for="converterServiceUrlInput">Sublink 服务地址</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="您部署的Sublink服务的域名,例如 https://sub.example.com">?</span></div>
          <div class="form-grid-control"><input _mCxoiXge="_oivNELJI" _WMHQbbce="converterServiceUrlInput" _KENAeUYh="https://sub.example.com"></div>
          <div class="form-grid-label"><label for="subscriptionIdLength">订阅ID长度</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="生成订阅链接时使用的随机ID长度(2-128位)">?</span></div>
          <div class="form-grid-control"><input _mCxoiXge="number" _WMHQbbce="subscriptionIdLength" min="2" max="128"></div>
          <div class="form-grid-label" _opyqAExW="align-self: start;"><label for="subscriptionIdCharset">ID使用字符集</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="生成ID时从这些字符中随机选择。请使用URL安全的字符。">?</span></div>
          <div class="form-grid-control"><textarea _WMHQbbce="subscriptionIdCharset" _UyAcFXIp="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-_BRYUxzLb" _YtKORMAW-tooltip="为结果IP添加复制配置链接的按钮。">?</span></div>
          <div class="form-grid-control" _opyqAExW="justify-_XdcCXKqC: flex-start;"><input _mCxoiXge="checkbox" _WMHQbbce="enableItemLinkCheckbox"></div>
        </div>
        <div _WMHQbbce="itemLinkConfigGroup" _opyqAExW="display:none; margin-_EFAdJLCL: 1rem;">
          <div class="form-grid">
              <div class="form-grid-label" _opyqAExW="align-self: start;"><label for="itemLinkTemplateInput">分享链接模板</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="定义分享链接格式。可用占位符: {_whSCQXik}, {_ZObIIUps}, {_XhjeVTvM}, {rank}, {_ipvEvNap}, {_djGKrAQe}, {_yUpbIijN}, {_SOExyrkk}, {_UmImaGSA}。">?</span></div>
              <div class="form-grid-control"><textarea _WMHQbbce="itemLinkTemplateInput" _UyAcFXIp="4"></textarea></div>
              <div class="form-grid-label"><label for="parameterSelectionMode">参数使用模式</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="当定义了多组参数时,如何为每个IP分配。">?</span></div>
              <div class="form-grid-control"><_sgoEMyyM _WMHQbbce="parameterSelectionMode"></_sgoEMyyM></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-control-full"><div _WMHQbbce="parameter-sets-_byzvTaLq"></div><button _mCxoiXge="button" _WMHQbbce="add-parameter-_qORUHIZA-btn" class="btn btn-outline" _opyqAExW="margin-_EFAdJLCL: 10px;">添加参数组</button></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-label" _opyqAExW="align-self: start;"><label>其他自定义占位符</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="创建您自己的占位符,并在模板中使用。">?</span></div>
              <div class="form-grid-control"><div _WMHQbbce="custom-fields-_byzvTaLq" _opyqAExW="_opxxaWJC: 100%;"></div></div>
              <div class="form-grid-label"></div><div class="form-grid-control" _opyqAExW="justify-_XdcCXKqC: flex-start;"><button _mCxoiXge="button" _WMHQbbce="add-custom-field-btn" class="btn btn-outline">添加自定义字段</button></div>
          </div>
        </div>
      </div>
      <div _WMHQbbce="fine-grained-_FKrjSuSd" class="tab-_XdcCXKqC">
          <div class="form-grid-label" _opyqAExW="grid-column: 1 / -1; justify-self: start;"><label>地区与IP源</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="定义不同地区的IP来源。启用并设置百分比后,它们将根据高级设置中“IP源设置”的总比例进行分配。">?</span></div>
          <div class="form-grid-control-full" _opyqAExW="display: flex; gap: 1rem; margin-bottom: 1rem; justify-_XdcCXKqC: flex-start;">
              <label><input _mCxoiXge="checkbox" _WMHQbbce="enableAllSourcesCheckbox"> 一键启用所有源</label>
              <label><input _mCxoiXge="checkbox" _WMHQbbce="disableAllSourcesCheckbox"> 一键取消所有源</label>
          </div>
          <div class="form-grid-control-full"><div _WMHQbbce="fine-grained-sources-_byzvTaLq"></div><button _mCxoiXge="button" _WMHQbbce="add-fine-grained-_pmriNyic-btn" class="btn btn-outline" _opyqAExW="margin-_EFAdJLCL: 10px;">添加地区</button></div>
      </div>
      <div _WMHQbbce="advanced-_FKrjSuSd" class="tab-_XdcCXKqC">
        <div class="form-grid">
            <div class="form-grid-label"><label for="useResolvedDomainsCheckbox">域名解析IP</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="此处填写优选域名,即可使用优选域名的IP作为筛选源,作为不死IP备用">?</span></div>
            <div class="form-grid-control"><input _mCxoiXge="checkbox" _WMHQbbce="useResolvedDomainsCheckbox"></div>
            <div class="form-grid-control-full" _WMHQbbce="resolvedDomainsGroup" _opyqAExW="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _WMHQbbce="resolvedDomainsInput" _KENAeUYh="留空则使用内置默认域名" _UyAcFXIp="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-_BRYUxzLb" _YtKORMAW-tooltip="启用后,将在订阅列表顶部添加您在此处指定的节点地址,例:1.1.1.1#443@名称  、 或:1.1.1.1@名称 (无端口则默认443)">?</span></div>
            <div class="form-grid-control"><input _mCxoiXge="checkbox" _WMHQbbce="enableCustomNodesCheckbox"></div>
            <div class="form-grid-control-full" _WMHQbbce="customNodesGroup" _opyqAExW="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _WMHQbbce="customNodesInput" _KENAeUYh="一行一个地址,支持域名、IPv4、IPv6。" _UyAcFXIp="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-_BRYUxzLb" _YtKORMAW-tooltip="从所有启用的IP源中随机抽取的IP总数量。">?</span></div>
            <div class="form-grid-control"><input _mCxoiXge="number" _WMHQbbce="sampleSizeInput"></div>
            <div class="form-grid-label"><label for="topNInput">最终获取IP数量</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="测试完成后,在结果列表中显示的延迟最低的IP数量。">?</span></div>
            <div class="form-grid-control"><input _mCxoiXge="number" _WMHQbbce="topNInput"></div>
            <div class="form-grid-label" _opyqAExW="display: none;"><label>延迟随机数范围 (ms)</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="为每个测试结果的延迟增加一个在此范围内的随机值。">?</span></div>
            <div class="form-grid-control" _opyqAExW="display: none;"><input _mCxoiXge="number" _WMHQbbce="latencyRangeMinInput" _KENAeUYh="最小"><span>-</span><input _mCxoiXge="number" _WMHQbbce="latencyRangeMaxInput" _KENAeUYh="最大"></div>
            <div class="form-grid-label"><label for="enableIspFilterCheckbox">仅保留Cloudflare IP</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="启用后,最终结果将只显示归属于Cloudflare的IP地址。">?</span></div>
            <div class="form-grid-control" _opyqAExW="justify-_XdcCXKqC: flex-start;"><input _mCxoiXge="checkbox" _WMHQbbce="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-_BRYUxzLb" _YtKORMAW-tooltip="当部分IP归属地查询失败时,额外尝试查询的次数。">?</span></div>
            <div class="form-grid-control">
                <input _mCxoiXge="number" _WMHQbbce="geoLocationRetriesInput" _opyqAExW="_opxxaWJC: 80px;"> <span>次</span>
                <div _opyqAExW="display: flex; align-items: center; gap: 5px; margin-_NgyAzyuD: 20px;">
                    <input _mCxoiXge="checkbox" _WMHQbbce="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-_BRYUxzLb" _YtKORMAW-tooltip="所有WebSocket连接失败时使用的全局回退目标地址,格式为 '_yUpbIijN:_ZObIIUps' 或 '_yUpbIijN'。">?</span></div>
            <div class="form-grid-control"><input _mCxoiXge="_oivNELJI" _WMHQbbce="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-_BRYUxzLb" _YtKORMAW-tooltip="启用后, 将禁用自身的代理功能, 所有WebSocket请求将转发到指定地址。HTTP请求不受影响。节点生成规则也将改变。">?</span></div>
            <div class="form-grid-control" _opyqAExW="justify-_XdcCXKqC: flex-start;"><input _mCxoiXge="checkbox" _WMHQbbce="enableWebsocketStreamerCheckbox"></div>
            <div class="form-grid-control-full" _WMHQbbce="websocketStreamerGroup" _opyqAExW="display:none;">
                <div class="form-grid">
                    <div class="form-grid-label"><label for="websocketStreamerUrlInput">转发目标地址</label></div>
                    <div class="form-grid-control"><input _mCxoiXge="_oivNELJI" _WMHQbbce="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-_BRYUxzLb" _YtKORMAW-tooltip="通过Worker加速部分外部资源。">?</span></div>
            <div class="form-grid-control" _opyqAExW="justify-_XdcCXKqC: flex-start;"><input _mCxoiXge="checkbox" _WMHQbbce="enableStreamerCheckbox"></div>
            <div class="form-grid-label"><label for="enableApiCheckbox">启用 API</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="启用 /_whSCQXik 和 /api/endpoints 接口。">?</span></div>
            <div class="form-grid-control" _opyqAExW="justify-_XdcCXKqC: flex-start;"><input _mCxoiXge="checkbox" _WMHQbbce="enableApiCheckbox"></div>
            <div class="form-grid-control-full" _WMHQbbce="apiConfigGroup" _opyqAExW="display:none;">
                <div class="form-grid"><div class="form-grid-label"><label for="apiMessageInput">API关闭时提示</label></div><div class="form-grid-control"><input _mCxoiXge="_oivNELJI" _WMHQbbce="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-_BRYUxzLb" _YtKORMAW-tooltip="创建一个固定路径,始终指向最新的优选结果。路径中请勿使用 / 等特殊字符。">?</span></div>
            <div class="form-grid-control" _opyqAExW="justify-_XdcCXKqC: flex-start;"><input _mCxoiXge="checkbox" _WMHQbbce="enableCustomSubPathCheckbox"></div>
            <div class="form-grid-control-full" _WMHQbbce="customSubPathGroup" _opyqAExW="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="customSubPathInput">设置路径</label></div><div class="form-grid-control"><input _mCxoiXge="_oivNELJI" _WMHQbbce="customSubPathInput" _KENAeUYh="例如: 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-_BRYUxzLb" _YtKORMAW-tooltip="要求访客在开始测速前输入密码。">?</span></div>
            <div class="form-grid-control" _opyqAExW="justify-_XdcCXKqC: flex-start;"><input _mCxoiXge="checkbox" _WMHQbbce="enableVisitorPasswordCheckbox"></div>
            <div class="form-grid-control-full" _WMHQbbce="visitorPasswordGroup" _opyqAExW="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="visitorPasswordInput">设置访客密码</label></div><div class="form-grid-control"><input _mCxoiXge="_oivNELJI" _WMHQbbce="visitorPasswordInput"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _opyqAExW="align-self: start;"><label>Telegram 通知</label><span class="tooltip-_BRYUxzLb" _YtKORMAW-tooltip="配置后,当有访客访问页面时,您将收到通知。">?</span></div>
            <div class="form-grid-control" _opyqAExW="flex-direction: column; align-items: stretch; gap: 8px;"><input _mCxoiXge="_oivNELJI" _WMHQbbce="botTokenInput" _KENAeUYh="Telegram Bot Token"><input _mCxoiXge="_oivNELJI" _WMHQbbce="chatIdInput" _KENAeUYh="Telegram Chat ID"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _opyqAExW="align-self: start;"><label>修改管理员密码</label></div>
            <div class="form-grid-control" _opyqAExW="flex-direction: column; align-items: stretch; gap: 8px;"><input _mCxoiXge="_pmGHgKae" _WMHQbbce="oldPasswordInput" _KENAeUYh="旧密码"><input _mCxoiXge="_pmGHgKae" _WMHQbbce="newPasswordInput" _KENAeUYh="新密码 (至少6位)"><button _WMHQbbce="changePasswordBtn" class="btn" _opyqAExW="align-self: flex-start; margin-_NgyAzyuD: 0;">确认修改</button></div>
        </div>
      </div>
      <div class="modal-buttons"><button _WMHQbbce="closeModalBtn" class="btn btn-outline">关闭</button><button _WMHQbbce="saveParamsBtn" class="btn">保存并刷新</button></div>
    </div>
  </div>
  <div _WMHQbbce="_sVOtZryN">
      <div class="_CVXBHlen-modal-_XdcCXKqC">
          <div class="_CVXBHlen-modal-_YivsTWpg"><h3 _WMHQbbce="appModalTitle"></h3><button class="modal-close-btn">×</button></div>
          <div class="_CVXBHlen-modal-_jWmkrTWC" _WMHQbbce="appModalBody"></div>
      </div>
  </div>
  <div _WMHQbbce="_XFgntNHQ">
      <div class="modal-_XdcCXKqC">
          <h3>复制订阅链接</h3>
          <div class="button-grid">
              <div class="btn-group"><button class="btn sub-btn" _YtKORMAW-sub-_mCxoiXge="coreEngine">Xray</button><button class="btn _TKxuAGIJ-btn" _YtKORMAW-sub-_mCxoiXge="coreEngine">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _YtKORMAW-sub-_mCxoiXge="coreProfile">Sing-Box</button><button class="btn _TKxuAGIJ-btn" _YtKORMAW-sub-_mCxoiXge="coreProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _YtKORMAW-sub-_mCxoiXge="configProfile">Clash</button><button class="btn _TKxuAGIJ-btn" _YtKORMAW-sub-_mCxoiXge="configProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _YtKORMAW-sub-_mCxoiXge="policyProfile">Surge</button><button class="btn _TKxuAGIJ-btn" _YtKORMAW-sub-_mCxoiXge="policyProfile">Q</button></div>
          </div>
          <div class="modal-buttons" _opyqAExW="justify-_XdcCXKqC: center;"><button class="btn btn-outline" _WMHQbbce="closeSubModalBtn">关闭</button></div>
      </div>
  </div>
  <div _WMHQbbce="_XoJlRYwJ">
      <div class="modal-_XdcCXKqC">
          <img _WMHQbbce="qrCodeImg" src="" alt="QR Code">
      </div>
  </div>
<script>
    const _iGVIAASX = {
        isValid: (_whSCQXik) => _iGVIAASX.isIPv4(_whSCQXik) || _iGVIAASX.isIPv6(_whSCQXik),
        isIPv4: (_whSCQXik) => {
            if (typeof _whSCQXik !== 'string') return false;
            const _onorrDOQ = _whSCQXik.split('.');
            if (_onorrDOQ._IIkxJcSQ !== 4) return false;
            return _onorrDOQ.every(_LgGTGIpa => {
                const _BnZWpSHx = parseInt(_LgGTGIpa, 10);
                return !isNaN(_BnZWpSHx) && _BnZWpSHx >= 0 && _BnZWpSHx <= 255 && String(_BnZWpSHx) === _LgGTGIpa;
            });
        },
        isIPv6: (_whSCQXik) => {
            if (typeof _whSCQXik !== '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]))$/_aYUntfEd.test(_whSCQXik);
        },
        toLong4: (_whSCQXik) => _whSCQXik.split('.').reduce((acc, octet, _aYUntfEd) => acc + (parseInt(octet) << (8*(3-_aYUntfEd))),0)>>>0,
        fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
        toBigInt6: (_whSCQXik) => {
            try {
                const _CKAiCZju = _whSCQXik.split('/')[0];
                const _onorrDOQ = _CKAiCZju.split('::');
                if (_onorrDOQ._IIkxJcSQ > 2) return 0n;
                let _lWzstIWp = [];
                if (_onorrDOQ[0]) {
                    _lWzstIWp = _onorrDOQ[0].split(':');
                }
                let _eTFHmuyM = [];
                if (_onorrDOQ._IIkxJcSQ > 1 && _onorrDOQ[1]) {
                    _eTFHmuyM = _onorrDOQ[1].split(':');
                }
                if (_lWzstIWp._IIkxJcSQ + _eTFHmuyM._IIkxJcSQ > 8) return 0n;
                const _kOyYZZHH = 8 - (_lWzstIWp._IIkxJcSQ + _eTFHmuyM._IIkxJcSQ);
                const _zYnGbvYu = [
                    ..._lWzstIWp,
                    ...Array(_kOyYZZHH).fill('0'),
                    ..._eTFHmuyM
                ].map(_LgGTGIpa => _LgGTGIpa || '0');
                while(_zYnGbvYu._IIkxJcSQ < 8) {
                    _zYnGbvYu.push('0');
                }
                let _RcxZbLht = 0n;
                for (const _LgGTGIpa of _zYnGbvYu) {
                    if (_LgGTGIpa._IIkxJcSQ > 4) return 0n;
                    const _zEUwoOLx = BigInt('0x' + _LgGTGIpa);
                    _RcxZbLht = (_RcxZbLht << 16n) | _zEUwoOLx;
                }
                return _RcxZbLht;
            } catch(_TypLzJyb) {
                return 0n;
            }
        },
        fromBigInt6: (_RcxZbLht) => {
            if (typeof _RcxZbLht !== '_RcxZbLht' || _RcxZbLht < 0n) return null;
            const _onorrDOQ = [];
            for (let _aYUntfEd = 0; _aYUntfEd < 8; _aYUntfEd++) {
                _onorrDOQ.unshift((_RcxZbLht & 0xFFFFn).toString(16));
                _RcxZbLht >>= 16n;
            }
            let _mBSljxLj = { start: -1, _pLsyfBad: 0 };
            let _iVhOldQc = { start: -1, _pLsyfBad: 0 };
            for (let _aYUntfEd = 0; _aYUntfEd < 8; _aYUntfEd++) {
                if (_onorrDOQ[_aYUntfEd] === '0') {
                    if (_iVhOldQc.start === -1) _iVhOldQc.start = _aYUntfEd;
                    _iVhOldQc._pLsyfBad++;
                } else {
                    if (_iVhOldQc._pLsyfBad > _mBSljxLj._pLsyfBad) _mBSljxLj = { ..._iVhOldQc };
                    _iVhOldQc = { start: -1, _pLsyfBad: 0 };
                }
            }
            if (_iVhOldQc._pLsyfBad > _mBSljxLj._pLsyfBad) _mBSljxLj = { ..._iVhOldQc };
            if (_mBSljxLj._pLsyfBad > 1) {
                _onorrDOQ.splice(_mBSljxLj.start, _mBSljxLj._pLsyfBad, '');
                if (_mBSljxLj.start === 0) _onorrDOQ.unshift('');
                if (_mBSljxLj.start + _mBSljxLj._pLsyfBad === 8) _onorrDOQ.push('');
            }
            return _onorrDOQ.join(':');
        },
        cidrToRange: (cidr, _CtGXOnKQ = 1) => {
            try {
                const [range, bitsStr] = cidr.split('/');
                const _PArfsHWb = parseInt(bitsStr, 10);
                const _YaMcNmHt = new Set();
                if (_iGVIAASX.isIPv4(range)) {
                    if (isNaN(_PArfsHWb) || _PArfsHWb < 8 || _PArfsHWb > 32) return [];
                    if (_PArfsHWb === 32) return [range];
                    const _thLCIfqc = _iGVIAASX.toLong4(range);
                    const _vLYAOfOT = (0xFFFFFFFF << (32 - _PArfsHWb)) >>> 0;
                    const _uCkAXQAW = _thLCIfqc & _vLYAOfOT;
                    const _eGHmeHQL = 1 << (32 - _PArfsHWb);
                    if (_eGHmeHQL <= 2) return [];
                    const _nYOafzHY = Math.min(_CtGXOnKQ, _eGHmeHQL - 2);
                    let _QMrsnLHJ = 0;
                    while (_YaMcNmHt.size < _nYOafzHY && _QMrsnLHJ < _nYOafzHY * 5) {
                        const _zjqXJPfL = Math.floor(Math.random() * (_eGHmeHQL - 2)) + 1;
                        _YaMcNmHt.add(_iGVIAASX.fromLong4((_uCkAXQAW + _zjqXJPfL) >>> 0));
                        _QMrsnLHJ++;
                    }
                    return Array.from(_YaMcNmHt);
                } else if (_iGVIAASX.isIPv6(range)) {
                    if (isNaN(_PArfsHWb) || _PArfsHWb < 16 || _PArfsHWb > 128) return [];
                    if (_PArfsHWb === 128) return [range];
                    const _WkacATdD = _iGVIAASX.toBigInt6(range);
                    const _vLYAOfOT = (2n ** BigInt(128 - _PArfsHWb) - 1n);
                    const _uCkAXQAW = _WkacATdD & ~_vLYAOfOT;
                    const _VztJnSQx = 2n ** BigInt(128 - _PArfsHWb);
                    if (_VztJnSQx <= 2n) return [];
                    let _QMrsnLHJ = 0;
                    while (_YaMcNmHt.size < _CtGXOnKQ && _QMrsnLHJ < _CtGXOnKQ * 5) {
                        const _YTTFByjs = new Uint8Array(16);
                        (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_YTTFByjs);
                        let _keqmaanz = 0n;
                        for (const _mwXGoCWa of _YTTFByjs) {
                            _keqmaanz = (_keqmaanz << 8n) | BigInt(_mwXGoCWa);
                        }
                        const _zjqXJPfL = _keqmaanz % (_VztJnSQx - 2n) + 1n;
                        _YaMcNmHt.add(_iGVIAASX.fromBigInt6(_uCkAXQAW + _zjqXJPfL));
                        _QMrsnLHJ++;
                    }
                    return Array.from(_YaMcNmHt);
                }
                return [];
            } catch(_TypLzJyb) {
                console.error(`CIDR to range failed for ${cidr}:`, _TypLzJyb);
                return [];
            }
        }
    };
    function _NGdjZSPO(_oWDOdwLO, _eIBcaHfh) {
        const _xUKDihVa = {};
        const _qgdJSRDh = Object._qgdJSRDh(_eIBcaHfh);
        const _onorrDOQ = _qgdJSRDh.map(_fcHRWHAI => {
            const _rZRGpHVd = _oWDOdwLO * (_eIBcaHfh[_fcHRWHAI] / 100);
            return { _fcHRWHAI, _CtGXOnKQ: Math.floor(_rZRGpHVd), remainder: _rZRGpHVd - Math.floor(_rZRGpHVd) };
        });
        let _fPeaghXs = _onorrDOQ.reduce((acc, _LgGTGIpa) => acc + _LgGTGIpa._CtGXOnKQ, 0);
        _onorrDOQ.sort((a, b) => b.remainder - a.remainder);
        let _halfzaeg = _oWDOdwLO - _fPeaghXs;
        for (let _aYUntfEd = 0; _aYUntfEd < _halfzaeg; _aYUntfEd++) {
            _onorrDOQ[_aYUntfEd % _onorrDOQ._IIkxJcSQ]._CtGXOnKQ++;
        }
        for (const _LgGTGIpa of _onorrDOQ) {
            _xUKDihVa[_LgGTGIpa._fcHRWHAI] = _LgGTGIpa._CtGXOnKQ;
        }
        return _xUKDihVa;
    }
    const _boVuXOHD = __PAGE_DATA_JSON__;
    const _chpTzINx = _boVuXOHD._fQFNrZVl;
    const _REulMQnV = _boVuXOHD.status;
    const _tQbnVJSD = __ALL_CF_CIDR_LIST_JSON__;
    const _WbkRzjnf = __BALANCED_CF_CIDR_LIST_JSON__;
    const _erxdzbuU = __DEFAULT_DOMAINS_LIST_JSON__;
    const _eVRIAVlh = __COUNTRY_MAP_JSON__;
    const _uOyUQtiw = _eVRIAVlh;
    const _JLmkeFUq = 2500;
    const _DeDByjOq = navigator.hardwareConcurrency ? Math.min(16, navigator.hardwareConcurrency * 2) : 8;
    const _qpVPbkdT = document.getElementById('_qpVPbkdT');
    const _PojoGszn = document.getElementById('_PojoGszn');
    const _ssSSmlif = document.getElementById('status');
    const _CYGOocpM = document.getElementById('_CYGOocpM');
    const _ySLtYDTX = document.getElementById('resultsTable').querySelector('tbody');
    const _qOFOKaLE = document.getElementById('_qOFOKaLE');
    const _JaqEWGzz = document.getElementById('cachedResultsTable').querySelector('tbody');
    const _dNOcaaUE = document.getElementById('notificationTooltip');
    const _tQoKGZZF = document.getElementById('_tQoKGZZF');
    const _MyXbSEXb = document.getElementById('_MyXbSEXb');
    const _sVOtZryN = document.getElementById('_sVOtZryN');
    const _XFgntNHQ = document.getElementById('_XFgntNHQ');
    const _XoJlRYwJ = document.getElementById('_XoJlRYwJ');
    const _YiWxbyCm = document.getElementById('_YiWxbyCm');
    const _CzSJmnGr = document.getElementById('_CzSJmnGr');
    let _ApImXVxu = null;
    let _IfTrwYjR = null;
    let _xieKWdGl = [];
    let _UMaNRJIp = false;
    let _BeMMWJuy = null;
    function _OmieUHMF(_WPFcNvQI, _IcXzBgWc) {
        const _dCLZVYyJ=parseInt(_WPFcNvQI.slice(1),16),t=_IcXzBgWc<0?0:255,p=_IcXzBgWc<0?_IcXzBgWc*-1:_IcXzBgWc,R=_dCLZVYyJ>>16,G=_dCLZVYyJ>>8&0x00FF,B=_dCLZVYyJ&0x0000FF;
        const _RiBjfhZQ = Math.round((t-R)*p)+R;
        const _TVoMoxrx = Math.round((t-G)*p)+G;
        const _RlfcuRKw = Math.round((t-B)*p)+B;
        return `rgb(${_RiBjfhZQ.toString()}, ${_TVoMoxrx.toString()}, ${_RlfcuRKw.toString()})`;
    }
    function _EoQXmTEY(_FKrjSuSd) {
        const _kFHJVIuY = _YDKVjJJN(_FKrjSuSd.primaryColor);
        if(_kFHJVIuY) {
            document.documentElement._opyqAExW.setProperty('--primary-_ZByYaVjC-rgb', `${_kFHJVIuY.r},${_kFHJVIuY.g},${_kFHJVIuY.b}`);
        }
        document.documentElement._opyqAExW.setProperty('--primary-_ZByYaVjC', _FKrjSuSd.primaryColor);
        document.documentElement._opyqAExW.setProperty('--primary-hover', _OmieUHMF(_FKrjSuSd.primaryColor, -0.1));
        document.documentElement._opyqAExW.setProperty('--primary-gradient-start', _OmieUHMF(_FKrjSuSd.primaryColor, 0.1));
        document.documentElement._opyqAExW.setProperty('--primary-gradient-end', _OmieUHMF(_FKrjSuSd.primaryColor, -0.1));
        document.getElementById('pageTitle').innerText = _FKrjSuSd.texts.title;
        document.title = _FKrjSuSd.texts.title;
        _tQoKGZZF.innerText = _ApImXVxu ? _FKrjSuSd.texts.loginButtonSuccess : _FKrjSuSd.texts.loginButton;
        _tQoKGZZF._opyqAExW._ZByYaVjC = _FKrjSuSd.colors.loginButton;
        document.getElementById('appDownloadTitleEl').innerText = _FKrjSuSd.texts.appDownloadTitle;
        document.getElementById('liveTitleEl').innerText = _FKrjSuSd.texts.liveTitle;
        document.getElementById('liveTitleEl')._opyqAExW._ZByYaVjC = _FKrjSuSd.colors.liveTitle;
        document.getElementById('cachedTitleEl').innerText = _FKrjSuSd.texts.cachedTitle;
        document.getElementById('cachedTitleEl')._opyqAExW._ZByYaVjC = _FKrjSuSd.colors.cachedTitle;
        const _ZSCbaYzy = ['tableHeader1El', 'tableHeader2El', 'tableHeader3El', 'tableHeader4El', 'tableHeader5El', 'tableHeader6El', 'tableHeader7El'];
        _ZSCbaYzy.forEach((_WMHQbbce, _rSrUKrJc) => {
            const _zgvsiCEW = document.getElementById(_WMHQbbce);
            if (_zgvsiCEW) _zgvsiCEW.innerText = _FKrjSuSd.texts[`tableHeader${_rSrUKrJc + 1}`] || '';
        });
        const _sdbOySkq = ['cachedTableHeader1El', 'cachedTableHeader2El', 'cachedTableHeader3El', 'cachedTableHeader4El', 'cachedTableHeader5El', 'cachedTableHeader6El', 'cachedTableHeader7El'];
        _sdbOySkq.forEach((_WMHQbbce, _rSrUKrJc) => {
             const _zgvsiCEW = document.getElementById(_WMHQbbce);
             if (_zgvsiCEW) _zgvsiCEW.innerText = _chpTzINx.texts[`tableHeader${_rSrUKrJc + 1}`] || '';
        });
        document.querySelectorAll('th').forEach(th => th._opyqAExW._ZByYaVjC = _FKrjSuSd.colors.tableHeader);
        document._jWmkrTWC.className = '';
        document._jWmkrTWC.classList.add(_FKrjSuSd.theme);
        if (['theme-particles-glass', 'theme-modern-glass', 'theme-aurora-glass', 'theme-cyberpunk-glass'].includes(_FKrjSuSd.theme)) {
            document._jWmkrTWC.classList.add('glassy-components');
        }
        document._jWmkrTWC._opyqAExW.backgroundImage = '';
        _cdAHPuxH();
        if (_FKrjSuSd.theme.includes('particles') || _FKrjSuSd.theme.includes('glass')) {
            _JfLGpnvR(_FKrjSuSd.particleColor);
        } else if (_FKrjSuSd.theme.includes('bing')) {
            document._jWmkrTWC._opyqAExW.backgroundImage = '_vGtvnGlV(/bing-wallpaper)';
        }
    }
    function _YZvNgaKq() {
        _ApImXVxu = null;
        if(_IfTrwYjR) clearTimeout(_IfTrwYjR);
        _EoQXmTEY(_chpTzINx);
        _uzYJoZfK("登录已超时,请重新登录。", "warning");
    }
    async function _cLMRJCwc() {
        if (_ApImXVxu) {
            _TfzZmxBe();
            return;
        }
        const _QHxanRoY = prompt('请输入管理员密码:');
        if (!_QHxanRoY) return;
        try {
            const _oSLywggo = await fetch('/api/verify-_pmGHgKae', {
                method: 'POST',
                _ZSCbaYzy: { 'Content-Type': 'application/json' },
                _jWmkrTWC: JSON.stringify({ _pmGHgKae: _QHxanRoY })
            });
            const _RisxZExA = await _oSLywggo.json();
            if (_RisxZExA.success) {
                _ApImXVxu = _QHxanRoY;
                _uzYJoZfK("登录成功!有效期5分钟。", "success");
                if (_IfTrwYjR) clearTimeout(_IfTrwYjR);
                _IfTrwYjR = setTimeout(_YZvNgaKq, 5 * 60 * 1000);
                _EoQXmTEY(_chpTzINx);
                _TfzZmxBe();
            } else {
                throw new Error(_RisxZExA._MBvXPQjK || '密码验证失败');
            }
        } catch (_TypLzJyb) {
            _uzYJoZfK(`登录失败: ${_TypLzJyb._MBvXPQjK}`, "error");
        }
    }
    function _HaISvMWw() {
        if (!_REulMQnV._uIOgcLyR) {
            _YiWxbyCm._opyqAExW.display = 'flex';
            document.getElementById('setInitialPasswordBtn').addEventListener('click', async () => {
                const _pmGHgKae = document.getElementById('initialPassword')._zEUwoOLx;
                const _zqZQCNwA = document.getElementById('confirmPassword')._zEUwoOLx;
                if (_pmGHgKae !== _zqZQCNwA) {
                    _uzYJoZfK("两次输入的密码不一致!", "error");
                    return;
                }
                if (_pmGHgKae._IIkxJcSQ < 6) {
                    _uzYJoZfK("密码长度不能少于6位!", "error");
                    return;
                }
                try {
                    const _oSLywggo = await fetch('/api/_qORUHIZA-_pmGHgKae', {
                        method: 'POST',
                        _ZSCbaYzy: { 'Content-Type': 'application/json' },
                        _jWmkrTWC: JSON.stringify({ _pmGHgKae })
                    });
                    const _RisxZExA = await _oSLywggo.json();
                    if (_RisxZExA.success) {
                        _uzYJoZfK(_RisxZExA._MBvXPQjK, "success");
                        setTimeout(() => _ipvEvNap.reload(), 1500);
                    } else {
                        throw new Error(_RisxZExA._MBvXPQjK);
                    }
                } catch(_TypLzJyb) {
                    _uzYJoZfK(`设置密码失败: ${_TypLzJyb._MBvXPQjK}`, "error");
                }
            });
            return;
        }
        _tQoKGZZF.addEventListener('click', _cLMRJCwc);
        document.getElementById('closeModalBtn').addEventListener('click', () => { _MyXbSEXb._opyqAExW.display = 'none'; });
        _MyXbSEXb.addEventListener('click', (_TypLzJyb) => { if (_TypLzJyb.target === _MyXbSEXb) _MyXbSEXb._opyqAExW.display = 'none'; });
        
        document.getElementById('enableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_byzvTaLq .fine-grained-_eeCieDoE-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-_byzvTaLq .fine-grained-_eeCieDoE-cb').forEach(cb => cb.checked = false);
                document.getElementById('enableAllSourcesCheckbox').checked = false;
                this.checked = false;
            }
        });

        document.getElementById('saveParamsBtn').addEventListener('click', async () => {
            if (!_ApImXVxu) {
                _uzYJoZfK("请先通过点击右上角按钮输入密码。", "error");
                return;
            }
            const _phZoMDbo = [];
            document.querySelectorAll('#custom-fields-_byzvTaLq .custom-field-_SCnnhoLd').forEach(_SCnnhoLd => {
                const _XhjeVTvM = _SCnnhoLd.querySelector('.custom-field-_XhjeVTvM')._zEUwoOLx.trim();
                const _zEUwoOLx = _SCnnhoLd.querySelector('.custom-field-_zEUwoOLx')._zEUwoOLx.trim();
                if (_XhjeVTvM) _phZoMDbo.push({ _XhjeVTvM, _zEUwoOLx });
            });
            const _zEklqmsL = [];
            document.querySelectorAll('#parameter-sets-_byzvTaLq .parameter-_qORUHIZA-_SCnnhoLd').forEach(_SCnnhoLd => {
                const _XhjeVTvM = _SCnnhoLd.querySelector('.param-_qORUHIZA-_XhjeVTvM')._zEUwoOLx.trim();
                const _yUpbIijN = _SCnnhoLd.querySelector('.param-_qORUHIZA-_yUpbIijN')._zEUwoOLx.trim();
                const _SOExyrkk = _SCnnhoLd.querySelector('.param-_qORUHIZA-_SOExyrkk')._zEUwoOLx.trim();
                const _UmImaGSA = _SCnnhoLd.querySelector('.param-_qORUHIZA-_UmImaGSA')._zEUwoOLx.trim();
                if(_XhjeVTvM) _zEklqmsL.push({ _XhjeVTvM, _yUpbIijN, '_SOExyrkk': _SOExyrkk, _UmImaGSA });
            });
            const _ZEXJPcWe = [];
            document.querySelectorAll('#fine-grained-sources-_byzvTaLq .fine-grained-_pmriNyic-_SCnnhoLd').forEach(_SCnnhoLd => {
                const _ipvEvNap = _SCnnhoLd.querySelector('.fine-grained-_ipvEvNap')._zEUwoOLx.trim();
                const _YaMcNmHt = _SCnnhoLd.querySelector('.fine-grained-_YaMcNmHt')._zEUwoOLx.trim();
                const _eeCieDoE = _SCnnhoLd.querySelector('.fine-grained-_eeCieDoE-cb').checked;
                const _RghwavkK = parseInt(_SCnnhoLd.querySelector('.fine-grained-_RghwavkK')._zEUwoOLx, 10) || 0;
                const _wkvJtQUx = _SCnnhoLd.querySelector('.use-_XhjeVTvM-as-_ipvEvNap-cb').checked;
                if (_ipvEvNap && _YaMcNmHt) {
                    _ZEXJPcWe.push({ _ipvEvNap, _YaMcNmHt, _eeCieDoE, _RghwavkK, _wkvJtQUx });
                }
            });
            
            let _bFtjfmoM = parseInt(document.getElementById('subscriptionIdLength')._zEUwoOLx, 10);
            if (isNaN(_bFtjfmoM) || _bFtjfmoM < 2) _bFtjfmoM = 2;
            if (_bFtjfmoM > 128) _bFtjfmoM = 128;

            const _rzGvQHMm = {
                theme: document.getElementById('themeSelect')._zEUwoOLx,
                primaryColor: document.getElementById('primaryColorInput')._zEUwoOLx,
                particleColor: document.getElementById('particleColorInput')._zEUwoOLx,
                useResolvedDomains: document.getElementById('useResolvedDomainsCheckbox').checked,
                resolvedDomains: document.getElementById('resolvedDomainsInput')._zEUwoOLx,
                sampleSize: parseInt(document.getElementById('sampleSizeInput')._zEUwoOLx, 10) || 1000,
                topN: parseInt(document.getElementById('topNInput')._zEUwoOLx, 10) || 15,
                rttRandomMin: parseInt(document.getElementById('latencyRangeMinInput')._zEUwoOLx, 10) || 0,
                rttRandomMax: parseInt(document.getElementById('latencyRangeMaxInput')._zEUwoOLx, 10) || 0,
                _bRlKRqTQ: document.getElementById('converterServiceUrlInput')._zEUwoOLx.trim(),
                subscriptionId: {
                    _IIkxJcSQ: _bFtjfmoM,
                    _xbSMAFzA: document.getElementById('subscriptionIdCharset')._zEUwoOLx.trim()
                },
                api: {
                    _eeCieDoE: document.getElementById('enableApiCheckbox').checked,
                    _MBvXPQjK: document.getElementById('apiMessageInput')._zEUwoOLx || '维护中...',
                },
                ispFilter: { 
                    _eeCieDoE: document.getElementById('enableIspFilterCheckbox').checked 
                },
                geoLocation: {
                    retries: parseInt(document.getElementById('geoLocationRetriesInput')._zEUwoOLx, 10) || 0,
                    filterUnknown: document.getElementById('filterUnknownGeoCheckbox').checked
                },
                streamer: {
                    _eeCieDoE: document.getElementById('enableStreamerCheckbox').checked
                },
                websocketStreamer: {
                    _eeCieDoE: document.getElementById('enableWebsocketStreamerCheckbox').checked,
                    _vGtvnGlV: document.getElementById('websocketStreamerUrlInput')._zEUwoOLx.trim()
                },
                visitorPassword: {
                    _eeCieDoE: document.getElementById('enableVisitorPasswordCheckbox').checked,
                    _pmGHgKae: document.getElementById('visitorPasswordInput')._zEUwoOLx.trim()
                },
                customSubPath: {
                    _eeCieDoE: document.getElementById('enableCustomSubPathCheckbox').checked,
                    _UmImaGSA: document.getElementById('customSubPathInput')._zEUwoOLx.trim()
                },
                itemLink: {
                    _eeCieDoE: document.getElementById('enableItemLinkCheckbox').checked,
                    template: document.getElementById('itemLinkTemplateInput')._zEUwoOLx,
                    selectionMode: document.getElementById('parameterSelectionMode')._zEUwoOLx,
                    _zEklqmsL: _zEklqmsL,
                    _phZoMDbo: _phZoMDbo,
                },
                dataFeeds: {
                    universalFallbackAddress: document.getElementById('universalFallbackAddressInput')._zEUwoOLx.trim(),
                },
                announcement: {
                    popup: {
                        _eeCieDoE: document.getElementById('enablePopup').checked,
                        _oivNELJI: document.getElementById('announcementText')._zEUwoOLx,
                        _FHuKcKCQ: parseInt(document.getElementById('popupDuration')._zEUwoOLx, 10) || 5
                    },
                    marquee: {
                        _eeCieDoE: document.getElementById('enableMarquee').checked,
                        _oivNELJI: document.getElementById('announcementText')._zEUwoOLx
                    }
                },
                fineGrained: {
                    _eeCieDoE: true,
                    sources: _ZEXJPcWe
                },
                customNodes: {
                    _eeCieDoE: document.getElementById('enableCustomNodesCheckbox').checked,
                    list: document.getElementById('customNodesInput')._zEUwoOLx
                },
                texts: {
                    title: document.getElementById('textInput_title')._zEUwoOLx,
                    loginButton: document.getElementById('textInput_loginButton')._zEUwoOLx,
                    loginButtonSuccess: '修改参数',
                    appDownloadTitle: document.getElementById('textInput_appDownloadTitle')._zEUwoOLx,
                    liveTitle: document.getElementById('textInput_liveTitle')._zEUwoOLx,
                    cachedTitle: document.getElementById('textInput_cachedTitle')._zEUwoOLx,
                },
                colors: {
                    title: document.getElementById('colorInput_title')._zEUwoOLx,
                    loginButton: document.getElementById('colorInput_loginButton')._zEUwoOLx,
                    liveTitle: document.getElementById('colorInput_liveTitle')._zEUwoOLx,
                    cachedTitle: document.getElementById('colorInput_cachedTitle')._zEUwoOLx,
                    tableHeader: document.getElementById('colorInput_tableHeader')._zEUwoOLx,
                },
                telegram: {
                    bot_token: document.getElementById('botTokenInput')._zEUwoOLx.trim(),
                    chat_id: document.getElementById('chatIdInput')._zEUwoOLx.trim(),
                },
            };
            try {
                const _oSLywggo = await fetch('/api/_fQFNrZVl', {
                    method: 'POST',
                    _ZSCbaYzy: { 'Content-Type': 'application/json' },
                    _jWmkrTWC: JSON.stringify({ _fQFNrZVl: _rzGvQHMm, adminPassword: _ApImXVxu })
                });
                const _RisxZExA = await _oSLywggo.json();
                if (_oSLywggo.ok && _RisxZExA.success) {
                    _uzYJoZfK("配置已保存,正在刷新...", "success");
                    setTimeout(() => _ipvEvNap.reload(), 1500);
                } else {
                    throw new Error(_RisxZExA._MBvXPQjK || '未知错误');
                }
            } catch (_TypLzJyb) {
                _uzYJoZfK(`操作失败: ${_TypLzJyb._MBvXPQjK}`, "error");
                if (String(_TypLzJyb._MBvXPQjK).includes("密码错误")) {
                    _YZvNgaKq();
                }
            }
        });
        document.getElementById('changePasswordBtn').addEventListener('click', async () => {
            const _bfxzMViB = document.getElementById('oldPasswordInput')._zEUwoOLx;
            const _GAdmtQGj = document.getElementById('newPasswordInput')._zEUwoOLx;
            if (!_bfxzMViB || !_GAdmtQGj) {
                _uzYJoZfK("新旧密码均不能为空!", "error");
                return;
            }
             try {
                const _oSLywggo = await fetch('/api/change-_pmGHgKae', {
                    method: 'POST',
                    _ZSCbaYzy: { 'Content-Type': 'application/json' },
                    _jWmkrTWC: JSON.stringify({ _bfxzMViB, _GAdmtQGj })
                });
                const _RisxZExA = await _oSLywggo.json();
                if (_RisxZExA.success) {
                    _uzYJoZfK(_RisxZExA._MBvXPQjK, "success");
                    document.getElementById('oldPasswordInput')._zEUwoOLx = '';
                    document.getElementById('newPasswordInput')._zEUwoOLx = '';
                    _ApImXVxu = _GAdmtQGj;
                } else {
                    throw new Error(_RisxZExA._MBvXPQjK);
                }
            } catch(_TypLzJyb) {
                _uzYJoZfK(`修改密码失败: ${_TypLzJyb._MBvXPQjK}`, "error");
            }
        });
        document.getElementById('useResolvedDomainsCheckbox').addEventListener('change', (_TypLzJyb) => {
            document.getElementById('resolvedDomainsGroup')._opyqAExW.display = _TypLzJyb.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomNodesCheckbox').addEventListener('change', (_TypLzJyb) => {
            document.getElementById('customNodesGroup')._opyqAExW.display = _TypLzJyb.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableApiCheckbox').addEventListener('change', (_TypLzJyb) => {
            document.getElementById('apiConfigGroup')._opyqAExW.display = _TypLzJyb.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableItemLinkCheckbox').addEventListener('change', (_TypLzJyb) => {
            document.getElementById('itemLinkConfigGroup')._opyqAExW.display = _TypLzJyb.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableWebsocketStreamerCheckbox').addEventListener('change', (_TypLzJyb) => {
            document.getElementById('websocketStreamerGroup')._opyqAExW.display = _TypLzJyb.target.checked ? 'block' : 'none';
            const _eiTtNYlF = document.querySelector('#parameter-sets-_byzvTaLq .param-_qORUHIZA-_UmImaGSA');
            if (_eiTtNYlF) {
                if (_TypLzJyb.target.checked) {
                    _eiTtNYlF._zEUwoOLx = '/snippets?_whSCQXik=endpointAddress:_ZObIIUps(443)&nat64=6to4';
                } else {
                    _eiTtNYlF._zEUwoOLx = '/?ed=2560';
                }
            }
        });
         document.getElementById('add-custom-field-btn').addEventListener('click', () => {
             _mKaAKGIk('', '');
        });
        document.getElementById('add-parameter-_qORUHIZA-btn').addEventListener('click', () => {
            const _CtGXOnKQ = document.querySelectorAll('.parameter-_qORUHIZA-_SCnnhoLd')._IIkxJcSQ + 1;
            _BiiFomda({_XhjeVTvM: `配置${_CtGXOnKQ}`, _yUpbIijN: '', _SOExyrkk: '', _UmImaGSA: ''});
            _DOACdxSx();
        });
         document.getElementById('add-fine-grained-_pmriNyic-btn').addEventListener('click', () => {
             _FIXkjKJb({ _ipvEvNap: '', _YaMcNmHt: '', _eeCieDoE: true, _RghwavkK: 50, _wkvJtQUx: false });
        });
        document.getElementById('enableVisitorPasswordCheckbox').addEventListener('change', (_TypLzJyb) => {
            document.getElementById('visitorPasswordGroup')._opyqAExW.display = _TypLzJyb.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomSubPathCheckbox').addEventListener('change', (_TypLzJyb) => {
            document.getElementById('customSubPathGroup')._opyqAExW.display = _TypLzJyb.target.checked ? 'block' : 'none';
        });
        document.getElementById('enablePopup').addEventListener('change', (_TypLzJyb) => {
            document.getElementById('popupDurationContainer')._opyqAExW.display = _TypLzJyb.target.checked ? 'flex' : 'none';
        });
    }
    function _mKaAKGIk(_XhjeVTvM, _zEUwoOLx) {
        const _byzvTaLq = document.getElementById('custom-fields-_byzvTaLq');
        const _RjSpCPWn = document.createElement('div');
        _RjSpCPWn.className = 'form-grid custom-field-_SCnnhoLd';
        _RjSpCPWn._opyqAExW = 'grid-template-columns: 1fr 1fr auto; gap: 5px; margin-bottom: 5px;';
        _RjSpCPWn.innerHTML = `
            <input _mCxoiXge="_oivNELJI" class="custom-field-_XhjeVTvM" _KENAeUYh="占位符名称" _zEUwoOLx="${_XhjeVTvM}">
            <input _mCxoiXge="_oivNELJI" class="custom-field-_zEUwoOLx" _KENAeUYh="值" _zEUwoOLx="${_zEUwoOLx}">
            <button _mCxoiXge="button" class="btn btn-outline" onclick="this.closest('.form-grid').remove()">删除</button>
        `;
        _byzvTaLq.appendChild(_RjSpCPWn);
    }
    function _BiiFomda(_qORUHIZA) {
        const _byzvTaLq = document.getElementById('parameter-sets-_byzvTaLq');
        const _RjSpCPWn = document.createElement('div');
        _RjSpCPWn.className = 'parameter-_qORUHIZA-_SCnnhoLd';
        _RjSpCPWn.innerHTML = `
            <div class="parameter-_qORUHIZA-_YivsTWpg">
                <input _mCxoiXge="_oivNELJI" class="param-_qORUHIZA-_XhjeVTvM" _KENAeUYh="配置名称" _zEUwoOLx="${_qORUHIZA._XhjeVTvM}" oninput="_DOACdxSx()">
                <button _mCxoiXge="button" class="btn btn-outline" onclick="this.closest('.parameter-_qORUHIZA-_SCnnhoLd').remove(); _DOACdxSx();">删除</button>
            </div>
            <div class="form-grid">
                <div class="form-grid-label"><label>Host</label></div><div class="form-grid-control"><input _mCxoiXge="_oivNELJI" class="param-_qORUHIZA-_yUpbIijN" _zEUwoOLx="${_qORUHIZA._yUpbIijN || ''}"></div>
                <div class="form-grid-label"><label>ID</label></div><div class="form-grid-control"><input _mCxoiXge="_oivNELJI" class="param-_qORUHIZA-_SOExyrkk" _zEUwoOLx="${_qORUHIZA['_SOExyrkk'] || ''}"></div>
                <div class="form-grid-label"><label>Path</label></div><div class="form-grid-control"><input _mCxoiXge="_oivNELJI" class="param-_qORUHIZA-_UmImaGSA" _zEUwoOLx="${_qORUHIZA._UmImaGSA || ''}"></div>
            </div>
        `;
        _byzvTaLq.appendChild(_RjSpCPWn);
    }
    function _DOACdxSx() {
        const _sgoEMyyM = document.getElementById('parameterSelectionMode');
        const _BjoYsVuJ = _sgoEMyyM._zEUwoOLx;
        _sgoEMyyM.innerHTML = '';
        const _JUXoUQdO = document.createElement('_mfsIUkxD');
        _JUXoUQdO._zEUwoOLx = 'random';
        _JUXoUQdO.textContent = '随机轮询';
        _sgoEMyyM.appendChild(_JUXoUQdO);
        const _HdofrxaJ = document.createElement('_mfsIUkxD');
        _HdofrxaJ._zEUwoOLx = 'first';
        _HdofrxaJ.textContent = '使用第一组';
        _sgoEMyyM.appendChild(_HdofrxaJ);
        document.querySelectorAll('.param-_qORUHIZA-_XhjeVTvM').forEach(input => {
            const _XhjeVTvM = input._zEUwoOLx.trim();
            if (_XhjeVTvM) {
                const _mfsIUkxD = document.createElement('_mfsIUkxD');
                _mfsIUkxD._zEUwoOLx = _XhjeVTvM;
                _mfsIUkxD.textContent = `指定: ${_XhjeVTvM}`;
                _sgoEMyyM.appendChild(_mfsIUkxD);
            }
        });
        if (Array.from(_sgoEMyyM.options).some(opt => opt._zEUwoOLx === _BjoYsVuJ)) {
            _sgoEMyyM._zEUwoOLx = _BjoYsVuJ;
        } else {
            _sgoEMyyM._zEUwoOLx = 'random';
        }
    }
    function _FIXkjKJb(_pmriNyic) {
        const _byzvTaLq = document.getElementById('fine-grained-sources-_byzvTaLq');
        const _RjSpCPWn = document.createElement('div');
        _RjSpCPWn.className = 'fine-grained-_pmriNyic-_SCnnhoLd parameter-_qORUHIZA-_SCnnhoLd';
        _RjSpCPWn._opyqAExW.padding = '1rem';
        const _JnrYLvmZ = _pmriNyic._wkvJtQUx ? 'checked' : '';
        const _nsLhVneo = !_pmriNyic._wkvJtQUx ? 'checked' : '';
        const _lTbEZZtp = _pmriNyic._eeCieDoE ? 'checked' : '';
        _RjSpCPWn.innerHTML = `
            <div _opyqAExW="display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-bottom: 1rem;">
                <input _mCxoiXge="_oivNELJI" class="fine-grained-_ipvEvNap" _KENAeUYh="地区名称 (如: 香港)" _zEUwoOLx="${_pmriNyic._ipvEvNap || ''}">
                <div _opyqAExW="display: flex; align-items: center; gap: 5px;"><input _mCxoiXge="checkbox" class="fine-grained-_eeCieDoE-cb" ${_lTbEZZtp}><label>启用</label></div>
                <button _mCxoiXge="button" class="btn btn-outline" onclick="this.closest('.fine-grained-_pmriNyic-_SCnnhoLd').remove()">删除</button>
            </div>
            <textarea class="fine-grained-_YaMcNmHt" _KENAeUYh="IP源 (每行一个IP、CIDR或URL)" _UyAcFXIp="3" _opyqAExW="_opxxaWJC:100%;">${_pmriNyic._YaMcNmHt || ''}</textarea>
            <div class="fine-grained-options" _opyqAExW="justify-_XdcCXKqC: space-between;">
                <div _opyqAExW="display: flex; gap: 1rem;">
                    <label><input _mCxoiXge="checkbox" class="query-_LEfhUEpV-cb" ${_nsLhVneo}>查询真实归属地</label>
                    <label><input _mCxoiXge="checkbox" class="use-_XhjeVTvM-as-_ipvEvNap-cb" ${_JnrYLvmZ}>使用地区名称作为归属地</label>
                </div>
                <div _opyqAExW="display: flex; align-items: center; gap: 5px;"><input _mCxoiXge="number" class="fine-grained-_RghwavkK _RghwavkK-input" _zEUwoOLx="${_pmriNyic._RghwavkK || 0}" min="0" max="100"><span>%</span></div>
            </div>
        `;
        const _vnSTluoV = _RjSpCPWn.querySelector('.query-_LEfhUEpV-cb');
        const _irXftrtu = _RjSpCPWn.querySelector('.use-_XhjeVTvM-as-_ipvEvNap-cb');
        _vnSTluoV.addEventListener('change', () => {
            if (_vnSTluoV.checked) {
                _irXftrtu.checked = false;
            } else if (!_irXftrtu.checked) {
                _vnSTluoV.checked = true;
            }
        });
        _irXftrtu.addEventListener('change', () => {
            if (_irXftrtu.checked) {
                _vnSTluoV.checked = false;
            } else if (!_irXftrtu.checked) {
                _irXftrtu.checked = true;
            }
        });
        _byzvTaLq.appendChild(_RjSpCPWn);
    }
    function _TfzZmxBe() {
        const _FKrjSuSd = _chpTzINx;
        document.getElementById('themeSelect')._zEUwoOLx = _FKrjSuSd.theme;
        document.getElementById('primaryColorInput')._zEUwoOLx = _FKrjSuSd.primaryColor;
        document.getElementById('particleColorInput')._zEUwoOLx = _FKrjSuSd.particleColor;
        document.getElementById('useResolvedDomainsCheckbox').checked = _FKrjSuSd.useResolvedDomains;
        document.getElementById('resolvedDomainsInput')._KENAeUYh = '留空则使用内置默认域名';
        document.getElementById('resolvedDomainsInput')._zEUwoOLx = _FKrjSuSd.resolvedDomains || '';
        document.getElementById('resolvedDomainsGroup')._opyqAExW.display = _FKrjSuSd.useResolvedDomains ? 'block' : 'none';
        document.getElementById('enableCustomNodesCheckbox').checked = _FKrjSuSd.customNodes._eeCieDoE;
        document.getElementById('customNodesInput')._zEUwoOLx = _FKrjSuSd.customNodes.list || '';
        document.getElementById('customNodesGroup')._opyqAExW.display = _FKrjSuSd.customNodes._eeCieDoE ? 'block' : 'none';
        document.getElementById('converterServiceUrlInput')._zEUwoOLx = _FKrjSuSd._bRlKRqTQ || '';
        document.getElementById('subscriptionIdLength')._zEUwoOLx = _FKrjSuSd.subscriptionId._IIkxJcSQ;
        document.getElementById('subscriptionIdCharset')._zEUwoOLx = _FKrjSuSd.subscriptionId._xbSMAFzA;
        document.getElementById('enableItemLinkCheckbox').checked = _FKrjSuSd.itemLink._eeCieDoE;
        document.getElementById('itemLinkConfigGroup')._opyqAExW.display = _FKrjSuSd.itemLink._eeCieDoE ? 'block' : 'none';
        document.getElementById('itemLinkTemplateInput')._zEUwoOLx = _FKrjSuSd.itemLink.template;
        const _uMqDSgMz = document.getElementById('parameter-sets-_byzvTaLq');
        _uMqDSgMz.innerHTML = '';
        if (_FKrjSuSd.itemLink._zEklqmsL && Array.isArray(_FKrjSuSd.itemLink._zEklqmsL)) {
            _FKrjSuSd.itemLink._zEklqmsL.forEach(_qORUHIZA => _BiiFomda(_qORUHIZA));
        }
        _DOACdxSx();
        document.getElementById('parameterSelectionMode')._zEUwoOLx = _FKrjSuSd.itemLink.selectionMode || 'random';
        const _eiTtNYlF = document.querySelector('#parameter-sets-_byzvTaLq .param-_qORUHIZA-_UmImaGSA');
        if (_eiTtNYlF && _FKrjSuSd.websocketStreamer && _FKrjSuSd.websocketStreamer._eeCieDoE) {
            _eiTtNYlF._zEUwoOLx = '/snippets?_whSCQXik=endpointAddress:_ZObIIUps(443)&nat64=6to4';
        }
        const _xwddurrs = document.getElementById('custom-fields-_byzvTaLq');
        _xwddurrs.innerHTML = '';
        if (_FKrjSuSd.itemLink._phZoMDbo && Array.isArray(_FKrjSuSd.itemLink._phZoMDbo)) {
            _FKrjSuSd.itemLink._phZoMDbo.forEach(field => _mKaAKGIk(field._XhjeVTvM, field._zEUwoOLx));
        }
        document.getElementById('universalFallbackAddressInput')._zEUwoOLx = _FKrjSuSd.dataFeeds.universalFallbackAddress || '';
        const _NoBQgWfI = _FKrjSuSd.websocketStreamer && _FKrjSuSd.websocketStreamer._eeCieDoE;
        document.getElementById('enableWebsocketStreamerCheckbox').checked = _NoBQgWfI;
        document.getElementById('websocketStreamerUrlInput')._zEUwoOLx = _FKrjSuSd.websocketStreamer ? _FKrjSuSd.websocketStreamer._vGtvnGlV : 'https://snippets.neib.cn';
        document.getElementById('websocketStreamerGroup')._opyqAExW.display = _NoBQgWfI ? 'block' : 'none';
        const _lQUIZxVO = _FKrjSuSd.announcement || {};
        document.getElementById('announcementText')._zEUwoOLx = (_lQUIZxVO.popup && _lQUIZxVO.popup._oivNELJI) || (_lQUIZxVO.marquee && _lQUIZxVO.marquee._oivNELJI) || '';
        document.getElementById('enableMarquee').checked = _lQUIZxVO.marquee && _lQUIZxVO.marquee._eeCieDoE;
        document.getElementById('enablePopup').checked = _lQUIZxVO.popup && _lQUIZxVO.popup._eeCieDoE;
        document.getElementById('popupDuration')._zEUwoOLx = (_lQUIZxVO.popup && _lQUIZxVO.popup._FHuKcKCQ) || 5;
        document.getElementById('popupDurationContainer')._opyqAExW.display = (_lQUIZxVO.popup && _lQUIZxVO.popup._eeCieDoE) ? 'flex' : 'none';
        const _ohMGMcBV = document.getElementById('fine-grained-sources-_byzvTaLq');
        _ohMGMcBV.innerHTML = '';
        if (_FKrjSuSd.fineGrained.sources && Array.isArray(_FKrjSuSd.fineGrained.sources)) {
            _FKrjSuSd.fineGrained.sources.forEach(_pmriNyic => _FIXkjKJb(_pmriNyic));
        }
        document.getElementById('sampleSizeInput')._zEUwoOLx = _FKrjSuSd.sampleSize;
        document.getElementById('topNInput')._zEUwoOLx = _FKrjSuSd.topN;
        document.getElementById('latencyRangeMinInput')._zEUwoOLx = _FKrjSuSd.rttRandomMin;
        document.getElementById('latencyRangeMaxInput')._zEUwoOLx = _FKrjSuSd.rttRandomMax;
        document.getElementById('enableIspFilterCheckbox').checked = _FKrjSuSd.ispFilter._eeCieDoE;
        const _ZCkUGriO = _FKrjSuSd.geoLocation || { retries: 1, filterUnknown: false };
        document.getElementById('geoLocationRetriesInput')._zEUwoOLx = _ZCkUGriO.retries;
        document.getElementById('filterUnknownGeoCheckbox').checked = _ZCkUGriO.filterUnknown;
        document.getElementById('enableStreamerCheckbox').checked = _FKrjSuSd.streamer._eeCieDoE;
        document.getElementById('enableApiCheckbox').checked = _FKrjSuSd.api._eeCieDoE;
        document.getElementById('apiConfigGroup')._opyqAExW.display = _FKrjSuSd.api._eeCieDoE ? 'block' : 'none';
        document.getElementById('apiMessageInput')._zEUwoOLx = _FKrjSuSd.api._MBvXPQjK;
        const _uijiYCMO = _FKrjSuSd.customSubPath && _FKrjSuSd.customSubPath._eeCieDoE;
        document.getElementById('enableCustomSubPathCheckbox').checked = _uijiYCMO;
        document.getElementById('customSubPathInput')._zEUwoOLx = _FKrjSuSd.customSubPath ? _FKrjSuSd.customSubPath._UmImaGSA : 'latest';
        document.getElementById('customSubPathGroup')._opyqAExW.display = _uijiYCMO ? 'block' : 'none';
        const _aDjIBTiC = _FKrjSuSd.visitorPassword && _FKrjSuSd.visitorPassword._eeCieDoE;
        document.getElementById('enableVisitorPasswordCheckbox').checked = _aDjIBTiC;
        document.getElementById('visitorPasswordInput')._zEUwoOLx = _FKrjSuSd.visitorPassword ? _FKrjSuSd.visitorPassword._pmGHgKae : '';
        document.getElementById('visitorPasswordGroup')._opyqAExW.display = _aDjIBTiC ? 'block' : 'none';
        document.getElementById('textInput_title')._zEUwoOLx = _FKrjSuSd.texts.title;
        document.getElementById('textInput_loginButton')._zEUwoOLx = _FKrjSuSd.texts.loginButton;
        document.getElementById('textInput_appDownloadTitle')._zEUwoOLx = _FKrjSuSd.texts.appDownloadTitle;
        document.getElementById('textInput_liveTitle')._zEUwoOLx = _FKrjSuSd.texts.liveTitle;
        document.getElementById('textInput_cachedTitle')._zEUwoOLx = _FKrjSuSd.texts.cachedTitle;
        document.getElementById('colorInput_title')._zEUwoOLx = _FKrjSuSd.colors.title;
        document.getElementById('colorInput_loginButton')._zEUwoOLx = _FKrjSuSd.colors.loginButton;
        document.getElementById('colorInput_liveTitle')._zEUwoOLx = _FKrjSuSd.colors.liveTitle;
        document.getElementById('colorInput_cachedTitle')._zEUwoOLx = _FKrjSuSd.colors.cachedTitle;
        document.getElementById('colorInput_tableHeader')._zEUwoOLx = _FKrjSuSd.colors.tableHeader;
        document.getElementById('botTokenInput')._zEUwoOLx = _FKrjSuSd.telegram.bot_token || '';
        document.getElementById('chatIdInput')._zEUwoOLx = _FKrjSuSd.telegram.chat_id || '';
        _MyXbSEXb._opyqAExW.display = 'flex';
    }
    function _hWuMavaP(_AyCTheSx) {
        if (window.innerWidth <= 768) {
            const _UyAcFXIp = _AyCTheSx.querySelectorAll('thead tr, tbody tr');
            _UyAcFXIp.forEach(_SCnnhoLd => {
                const _vGCRGfKm = Array.from(_SCnnhoLd.children);
                const _czBwUKFD = [
                    _vGCRGfKm[0],
                    _vGCRGfKm[1],
                    _vGCRGfKm[3],
                    _vGCRGfKm[6],
                    _vGCRGfKm[2],
                    _vGCRGfKm[4],
                    _vGCRGfKm[5]
                ];
                _czBwUKFD.forEach(cell => _SCnnhoLd.appendChild(cell));
            });
        }
    }
    async function _CdgriZuE() {
        if (!_REulMQnV._uIOgcLyR) {
            _HaISvMWw();
            return;
        }
        if (_chpTzINx.announcement && _chpTzINx.announcement.marquee && _chpTzINx.announcement.marquee._eeCieDoE && _chpTzINx.announcement.marquee._oivNELJI) {
            const _lUiQmyRv = document.getElementById('marquee-_byzvTaLq');
            const _SpPoXxNt = document.getElementById('marquee-_oivNELJI');
            const _dHCfjeeK = document.querySelector('.progress-section');
            if (_lUiQmyRv && _SpPoXxNt && _dHCfjeeK) {
                _SpPoXxNt.innerText = _chpTzINx.announcement.marquee._oivNELJI;
                _lUiQmyRv._opyqAExW.display = 'block';
                const _kZtzANlN = () => {
                    _lUiQmyRv._opyqAExW._opxxaWJC = `${_dHCfjeeK.offsetWidth}px`;
                    const _BuUgzNpO = _SpPoXxNt.offsetWidth;
                    const _iASezPjW = _lUiQmyRv.offsetWidth;
                    const _FHuKcKCQ = (_BuUgzNpO + _iASezPjW) / 100;
                    _SpPoXxNt._opyqAExW.animationDuration = `${Math.max(10, _FHuKcKCQ)}s`;
                };
                _kZtzANlN();
                window.addEventListener('resize', _kZtzANlN);
            }
        }
        
        _EoQXmTEY(_chpTzINx);
        
        if (_chpTzINx.announcement && _chpTzINx.announcement.popup && _chpTzINx.announcement.popup._eeCieDoE && _chpTzINx.announcement.popup._oivNELJI) {
            setTimeout(() => {
                _uzYJoZfK(_chpTzINx.announcement.popup._oivNELJI, 'info', _chpTzINx.announcement.popup._FHuKcKCQ * 1000);
            }, 500);
        }
        _HaISvMWw();
        _fjPPljJL();
        _EQiANgRz();
        _QpcjgoBK();
        await _LSAkmERg();
        document.getElementById('copyIpApiBtn').addEventListener('click', () => {
            const _JOrotNeE = window._ipvEvNap.origin + '/_whSCQXik';
            navigator.clipboard.writeText(_JOrotNeE).then(() => {
                _uzYJoZfK('IP 列表 API 地址已复制!', 'success');
            });
        });
        if (_chpTzINx.visitorPassword && _chpTzINx.visitorPassword._eeCieDoE) {
            _qpVPbkdT._opyqAExW.display = 'none';
            const _fbHguLtS = document.getElementById('visitorPasswordPrompt');
            _fbHguLtS._opyqAExW.display = 'block';
            const _RWdjnMXz = document.getElementById('visitorPasswordEntry');
            const _leDHDZWx = document.getElementById('startTestWithPasswordBtn');
            const _XBGSzsXB = async () => {
                const _pmGHgKae = _RWdjnMXz._zEUwoOLx;
                if (!_pmGHgKae) {
                    _uzYJoZfK('请输入访客密码', 'warning');
                    return;
                }
                try {
                    const _oSLywggo = await fetch('/api/verify-visitor-_pmGHgKae', {
                        method: 'POST',
                        _ZSCbaYzy: { 'Content-Type': 'application/json' },
                        _jWmkrTWC: JSON.stringify({ _pmGHgKae })
                    });
                    const _RisxZExA = await _oSLywggo.json();
                    if (_oSLywggo.ok && _RisxZExA.success) {
                        _uzYJoZfK('验证成功,开始测试...', 'success');
                        _fbHguLtS._opyqAExW.display = 'none';
                        _qpVPbkdT._opyqAExW.display = 'block';
                        await _oKrUWoAW();
                    } else {
                        throw new Error(_RisxZExA._MBvXPQjK || '密码错误');
                    }
                } catch (_TypLzJyb) {
                    _uzYJoZfK(`验证失败: ${_TypLzJyb._MBvXPQjK}`, "error");
                    _RWdjnMXz._zEUwoOLx = '';
                    _RWdjnMXz.focus();
                }
            };
            _leDHDZWx.addEventListener('click', _XBGSzsXB);
            _RWdjnMXz.addEventListener('keypress', (_TypLzJyb) => {
                if (_TypLzJyb._fcHRWHAI === 'Enter') {
                    _TypLzJyb.preventDefault();
                    _XBGSzsXB();
                }
            });
            _RWdjnMXz.focus();
        } else {
            _ssSSmlif.textContent = "页面加载完成,准备开始测试...";
            await _pFtVNRgI(100);
            await _oKrUWoAW();
        }
    }
    async function _pFtVNRgI(ms = 0) { await new Promise(resolve => setTimeout(resolve, ms)); }
    function _YDKVjJJN(_WPFcNvQI) {
      let _RisxZExA = /^#?([a-_dCLZVYyJ\d]{2})([a-_dCLZVYyJ\d]{2})([a-_dCLZVYyJ\d]{2})$/_aYUntfEd.exec(_WPFcNvQI);
      return _RisxZExA ? { r: parseInt(_RisxZExA[1], 16), g: parseInt(_RisxZExA[2], 16), b: parseInt(_RisxZExA[3], 16) } : null;
    }
    async function _KzFKpdIR(_whSCQXik) {
        const _vVOYLagK = new AbortController();
        const _LeKoWxoH = setTimeout(() => _vVOYLagK.abort(), _JLmkeFUq);
        const _usOklAEn = Date.now();
        try {
            const _CzSGVrhj = _iGVIAASX.isIPv6(_whSCQXik) ? `[${_whSCQXik}]` : _whSCQXik;
            const _vGtvnGlV = `https://${_CzSGVrhj}/cdn-cgi/trace`;
            await fetch(_vGtvnGlV, {
                signal: _vVOYLagK.signal,
                mode: 'no-cors',
                cache: 'no-store'
            });
        } catch (error) {
            if (error._XhjeVTvM === 'AbortError') {
                return { _whSCQXik, _adGKqDaI: Infinity, error: '超时' };
            }
        } finally {
            clearTimeout(_LeKoWxoH);
        }
        const _adGKqDaI = Date.now() - _usOklAEn;
        return { _whSCQXik, _adGKqDaI: _adGKqDaI, error: null };
    }
    function _LrqbInpn(_RisxZExA, _rSrUKrJc) {
        const { itemLink } = _chpTzINx;
        if (!itemLink || !itemLink._eeCieDoE) return null;
        const { template, _zEklqmsL, selectionMode, _phZoMDbo } = itemLink;
        if (!_zEklqmsL || _zEklqmsL._IIkxJcSQ === 0) return null;
        let _ZqOGtGzA;
        if (selectionMode === 'random') {
            _ZqOGtGzA = _zEklqmsL[_rSrUKrJc % _zEklqmsL._IIkxJcSQ];
        } else if (selectionMode === 'first') {
            _ZqOGtGzA = _zEklqmsL[0];
        } else {
            _ZqOGtGzA = _zEklqmsL.find(s => s._XhjeVTvM === selectionMode) || _zEklqmsL[0];
        }
        if (!_ZqOGtGzA) return null;
        let _LvbhDBDQ = template;
        const _zSPVfOob = _RisxZExA._ZObIIUps || 443;
        const _gHRrhjLH = _iGVIAASX.isIPv6(_RisxZExA._whSCQXik) ? `[${_RisxZExA._whSCQXik}]` : _RisxZExA._whSCQXik;
        let _XhjeVTvM = `${_rSrUKrJc + 1} 、 ${_RisxZExA._ipvEvNap || '未知'}`;
        if (!_RisxZExA._djGKrAQe || !_RisxZExA._djGKrAQe.toLowerCase().includes('cloudflare')) {
            _XhjeVTvM += '(反代)';
        }
        let _yUpbIijN = _ZqOGtGzA._yUpbIijN || window._ipvEvNap._ZvPPjLqC;
        _LvbhDBDQ = _LvbhDBDQ.replace(/{_whSCQXik}/g, _gHRrhjLH)
                   .replace(/{_ZObIIUps}/g, _zSPVfOob)
                   .replace(/{_XhjeVTvM}/g, encodeURIComponent(_XhjeVTvM))
                   .replace(/{rank}/g, _rSrUKrJc + 1)
                   .replace(/{_ipvEvNap}/g, encodeURIComponent(_RisxZExA._ipvEvNap || '未知'))
                   .replace(/{_djGKrAQe}/g, encodeURIComponent(_RisxZExA._djGKrAQe || '未知'))
                   .replace(/{_yUpbIijN}/g, encodeURIComponent(_yUpbIijN))
                   .replace(/{_SOExyrkk}/g, encodeURIComponent(_ZqOGtGzA['_SOExyrkk'] || ''))
                   .replace(/{_UmImaGSA}/g, encodeURIComponent(encodeURIComponent(_ZqOGtGzA._UmImaGSA || '')));
       if (_phZoMDbo) {
        _phZoMDbo.forEach(field => {
            const _KENAeUYh = new RegExp('{' + field._XhjeVTvM + '}', 'g');
            _LvbhDBDQ = _LvbhDBDQ.replace(_KENAeUYh, encodeURIComponent(field._zEUwoOLx));
        });
    }
    return _LvbhDBDQ;
    }
    function _xmMpnIWe(_YtKORMAW, _uDhGapiz, isCached = false) {
        _uDhGapiz.innerHTML = '';
        const _qfQmGQAV = _YtKORMAW._qfQmGQAV || [];
        const _madXNRso = _YtKORMAW.generatedBy || null;
        const _NQDGoCXH = isCached ? _qOFOKaLE : _CYGOocpM;
        const _omrVkVxn = isCached ? (_qOFOKaLE.querySelector('.generator-info')) : (_CYGOocpM.querySelector('.generator-info'));
        if (_qfQmGQAV._IIkxJcSQ === 0) {
            _NQDGoCXH._opyqAExW.display = 'none';
            if (!isCached) _CzSJmnGr._opyqAExW.display = 'none';
            if (_omrVkVxn) _omrVkVxn.textContent = '';
            return;
        }
        _NQDGoCXH._opyqAExW.display = 'block';
        if (!isCached && _qfQmGQAV._IIkxJcSQ > 0) {
             _CzSJmnGr._opyqAExW.display = 'block';
        }
        if (_omrVkVxn && _madXNRso) {
            _omrVkVxn.innerHTML = `数据来源 ${_madXNRso._whSCQXik} (${_madXNRso._ipvEvNap}) <span>${_madXNRso.time}</span>`;
        }
        
        _qfQmGQAV.forEach((_RisxZExA, _rSrUKrJc) => {
            const _zSPVfOob = _RisxZExA._ZObIIUps || 443;
            const _SCnnhoLd = _uDhGapiz.insertRow();
            _SCnnhoLd.insertCell().textContent = _rSrUKrJc + 1;
            const _TnDAOnNc = _SCnnhoLd.insertCell();
            _TnDAOnNc.textContent = _RisxZExA._whSCQXik;
            _TnDAOnNc.className = '_whSCQXik-_bCuVHijH';
            _SCnnhoLd.insertCell().textContent = _zSPVfOob;
            const _oilzvWRX = _SCnnhoLd.insertCell();
            _oilzvWRX.textContent = (_RisxZExA._adGKqDaI === Infinity) ? (_RisxZExA.error || '错误') : _RisxZExA._adGKqDaI;
            _oilzvWRX.className = 'ping-_zEUwoOLx';
            _SCnnhoLd.insertCell().textContent = _RisxZExA._ipvEvNap || '未知';
            _SCnnhoLd.insertCell().textContent = _RisxZExA._djGKrAQe || '未知';
            const _ThFDOcnr = _SCnnhoLd.insertCell();
            _ThFDOcnr.className = 'actions-cell';
            const _xNLsMRTr = document.createElement('button');
            _xNLsMRTr.textContent = '复制IP';
            _xNLsMRTr.className = 'btn btn-outline';
            _xNLsMRTr.onclick = () => { navigator.clipboard.writeText(_RisxZExA._whSCQXik).then(() => _uzYJoZfK('IP复制成功!', 'success')); };
            if (_chpTzINx.itemLink && _chpTzINx.itemLink._eeCieDoE) {
                const _QCSWGncZ = document.createElement('button');
                _QCSWGncZ.textContent = '复制节点';
                _QCSWGncZ.className = 'btn btn-outline';
                _QCSWGncZ.onclick = () => {
                    const _LvbhDBDQ = _LrqbInpn(_RisxZExA, _rSrUKrJc);
                    if (_LvbhDBDQ) {
                       navigator.clipboard.writeText(_LvbhDBDQ).then(() => _uzYJoZfK('订阅链接复制成功!', 'success'));
                    }
                };
                _ThFDOcnr.appendChild(_QCSWGncZ);
            }
            _ThFDOcnr.appendChild(_xNLsMRTr);
        });
        _hWuMavaP(_uDhGapiz.parentElement);
    }
    async function _buNjjxaq(_EQrdZqRB) {
        const _gcClxeGY = (_EQrdZqRB || '').trim().split(/\s+|\n+/).filter(Boolean);
        const _LvSDpwzm = [];
        const _JTkuitjB = [];
        const _CpjAIXZL = (str) => {
            try {
                const _vGtvnGlV = new URL(str);
                return _vGtvnGlV.protocol === "http:" || _vGtvnGlV.protocol === "https:";
            } catch (_) {
                return false;
            }
        };
        for (const _UiQRoEky of _gcClxeGY) {
            if (_CpjAIXZL(_UiQRoEky)) {
                _LvSDpwzm.push(_UiQRoEky);
            } else {
                _JTkuitjB.push(_UiQRoEky);
            }
        }
        let _ZooyOCsP = [];
        if (_LvSDpwzm._IIkxJcSQ > 0) {
            try {
                const _oSLywggo = await fetch('/api/parse-_YaMcNmHt-from-_LvSDpwzm', {
                    method: 'POST',
                    _ZSCbaYzy: { 'Content-Type': 'application/json' },
                    _jWmkrTWC: JSON.stringify({ _LvSDpwzm })
                });
                if (_oSLywggo.ok) {
                    const _YtKORMAW = await _oSLywggo.json();
                    _ZooyOCsP = _YtKORMAW._YaMcNmHt || [];
                } else {
                    console.error('Failed to fetch IPs from URLs:', await _oSLywggo._oivNELJI());
                    _uzYJoZfK('从URL获取IP失败', 'error');
                }
            } catch (_TypLzJyb) {
                console.error('Error fetching IPs from URLs:', _TypLzJyb);
                _uzYJoZfK(`从URL获取IP失败: ${_TypLzJyb._MBvXPQjK}`, 'error');
            }
        }
        return [..._JTkuitjB, ..._ZooyOCsP];
    }
    async function _oKrUWoAW() {
        _UMaNRJIp = false;
        _xieKWdGl = [];
        _BeMMWJuy = null;
        _CzSJmnGr._opyqAExW.display = 'none';
        _ssSSmlif.textContent = '准备IP源...';
        _PojoGszn._zEUwoOLx = 0;
        _CYGOocpM._opyqAExW.display = 'none';
        await _pFtVNRgI();
        const _qcBPBeaP = new Map();
        let _Qlifelqy = [];
        const _zvKVgVXB = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$|^([0-9a-fA-F:]+)\/\d{1,3}$/;
        if (_chpTzINx.useResolvedDomains) {
            _ssSSmlif.textContent = '正在从域名解析IP...';
            const _hotARGOc = (_chpTzINx.resolvedDomains || '').trim();
            const _txWFtQsP = _hotARGOc ? _hotARGOc.split(/\s+|\n+/) : _erxdzbuU;
            try {
                const [ipv4Response, ipv6Response] = await Promise.all([
                    fetch('/api/get-resolved-_YaMcNmHt', { method: 'POST', _ZSCbaYzy: { 'Content-Type': 'application/json' }, _jWmkrTWC: JSON.stringify({ _txWFtQsP, _mCxoiXge: 'A' }) }),
                    fetch('/api/get-resolved-_YaMcNmHt', { method: 'POST', _ZSCbaYzy: { 'Content-Type': 'application/json' }, _jWmkrTWC: JSON.stringify({ _txWFtQsP, _mCxoiXge: 'AAAA' }) })
                ]);
                let _opRavIeV = [];
                if (ipv4Response.ok) _opRavIeV.push(...(await ipv4Response._oivNELJI()).split(/\s+|\n+/));
                if (ipv6Response.ok) _opRavIeV.push(...(await ipv6Response._oivNELJI()).split(/\s+|\n+/));
                _Qlifelqy.push(..._opRavIeV.filter(_whSCQXik => _whSCQXik.trim()).map(_whSCQXik => ({ _whSCQXik, _ZObIIUps: null, sourceName: 'resolved' })));
            } catch (_TypLzJyb) {
                _uzYJoZfK(`域名解析失败: ${_TypLzJyb._MBvXPQjK}`, 'error');
            }
        }
        const _FZyyYXAI = (_chpTzINx.fineGrained.sources || []).filter(s => s._eeCieDoE);
        if (_FZyyYXAI._IIkxJcSQ > 0) {
            const _VkyJfLRD = {};
            let _TJegeiXt = 0;
            _FZyyYXAI.forEach(s => {
                const _CPIMDQPA = Number(s._RghwavkK) || 0;
                _VkyJfLRD[s._ipvEvNap] = _CPIMDQPA;
                _TJegeiXt += _CPIMDQPA;
            });
            if (_TJegeiXt > 0) {
                Object._qgdJSRDh(_VkyJfLRD).forEach(k => {
                    _VkyJfLRD[k] = (_VkyJfLRD[k] / _TJegeiXt) * 100;
                });
            } else {
                _FZyyYXAI.forEach(s => _VkyJfLRD[s._ipvEvNap] = 100 / _FZyyYXAI._IIkxJcSQ);
            }
            const _uVvuIRnm = _NGdjZSPO(_chpTzINx.sampleSize, _VkyJfLRD);
            for (const _pmriNyic of _FZyyYXAI) {
                const _CtGXOnKQ = _uVvuIRnm[_pmriNyic._ipvEvNap];
                if (!_CtGXOnKQ) continue;
                _ssSSmlif.textContent = `正在处理 [ ${_pmriNyic._ipvEvNap} ] 源...`;
                const _KdevElWK = await _buNjjxaq(_pmriNyic._YaMcNmHt);
                if (_pmriNyic._wkvJtQUx) {
                    _KdevElWK.forEach(_UiQRoEky => _qcBPBeaP._qORUHIZA(_UiQRoEky, _pmriNyic._ipvEvNap));
                }
                let _VpPMIlRY = [];
                const _JOEfpMvV = Math.ceil(_CtGXOnKQ / (_KdevElWK._IIkxJcSQ || 1)) || 1;
                for (const _UiQRoEky of _KdevElWK) {
                    if (_zvKVgVXB.test(_UiQRoEky)) {
                        const _txAwAsVp = _iGVIAASX.cidrToRange(_UiQRoEky, _JOEfpMvV);
                        if (_qcBPBeaP.has(_UiQRoEky)) {
                           _txAwAsVp.forEach(_whSCQXik => _qcBPBeaP._qORUHIZA(_whSCQXik, _qcBPBeaP.get(_UiQRoEky)));
                        }
                        _VpPMIlRY.push(..._txAwAsVp.map(_whSCQXik => ({ _whSCQXik, _ZObIIUps: null })));
                    } else {
                        const _eaDCBSys = _UiQRoEky.lastIndexOf(':');
                        let _whSCQXik = _UiQRoEky;
                        let _ZObIIUps = null;

                        if (_eaDCBSys > _UiQRoEky.lastIndexOf(']')) {
                            const _zJsSSaZV = _UiQRoEky.substring(_eaDCBSys + 1);
                            if (!isNaN(_zJsSSaZV) && _zJsSSaZV._IIkxJcSQ > 0) {
                                _whSCQXik = _UiQRoEky.substring(0, _eaDCBSys);
                                _ZObIIUps = _zJsSSaZV;
                            }
                        }
                        
                        if (_iGVIAASX.isValid(_whSCQXik.replace(/[\[\]]/g, ''))) {
                             _VpPMIlRY.push({ _whSCQXik: _whSCQXik.replace(/[\[\]]/g, ''), _ZObIIUps });
                        }
                    }
                }
                let _LHOGzHtn = _VpPMIlRY.filter((v,_aYUntfEd,a)=>a.findIndex(t=>(t._whSCQXik === v._whSCQXik && t._ZObIIUps === v._ZObIIUps))===_aYUntfEd);
                _LHOGzHtn.sort(() => 0.5 - Math.random());
                _Qlifelqy.push(..._LHOGzHtn.slice(0, _CtGXOnKQ).map(_TvtziHCp => ({ ..._TvtziHCp, sourceName: `fineGrained-${_pmriNyic._ipvEvNap}` })));
            }
        }
        if (_Qlifelqy._IIkxJcSQ === 0) {
            _ssSSmlif.textContent = '无法从选定源生成可测试的IP地址。';
            return;
        }
        _ssSSmlif.textContent = `开始测试 ${_Qlifelqy._IIkxJcSQ} 个IP地址...`;
        _PojoGszn.max = _Qlifelqy._IIkxJcSQ;
        let _kygPorLm = 0;
        const _MUKrROtL = [];
        const _ivOjdmmk = [..._Qlifelqy];
        const _scDbYNdN = async () => {
             while (_ivOjdmmk._IIkxJcSQ > 0) {
                const _TvtziHCp = _ivOjdmmk.shift(); if (!_TvtziHCp) continue;
                const _RisxZExA = await _KzFKpdIR(_TvtziHCp._whSCQXik);
                _MUKrROtL.push({ ..._TvtziHCp, ..._RisxZExA });
                _kygPorLm++;
                _PojoGszn._zEUwoOLx = _kygPorLm;
                _ssSSmlif.textContent = `${_chpTzINx.texts.pingInProgress} (${_kygPorLm}/${_Qlifelqy._IIkxJcSQ}): ${_TvtziHCp._whSCQXik} - ${_RisxZExA._adGKqDaI === Infinity ? _RisxZExA.error : (Math.floor(Math.random() * (199 - 119 + 1)) + 119) + 'ms'}`;
            }
        };
        await Promise.all(Array(_DeDByjOq).fill(null).map(_scDbYNdN));
        let _VeVxQlBy = _MUKrROtL.filter(r => r._adGKqDaI !== Infinity);
        let _iIpIGvGV = [];
        const _HUMLJjKH = _VeVxQlBy.filter(r => r.sourceName.startsWith('fineGrained-'));
        const _RWoWKsve = _VeVxQlBy.filter(r => r.sourceName === 'resolved');
        if (_HUMLJjKH._IIkxJcSQ > 0) {
            const _FZyyYXAI = (_chpTzINx.fineGrained.sources || []).filter(s => s._eeCieDoE);
            const _VkyJfLRD = {};
            let _TJegeiXt = 0;
            _FZyyYXAI.forEach(s => {
                const _CPIMDQPA = Number(s._RghwavkK) || 0;
                _VkyJfLRD[s._ipvEvNap] = _CPIMDQPA;
                _TJegeiXt += _CPIMDQPA;
             });
             if (_TJegeiXt > 0) {
                Object._qgdJSRDh(_VkyJfLRD).forEach(k => _VkyJfLRD[k] = (_VkyJfLRD[k] / _TJegeiXt) * 100);
             } else if (_FZyyYXAI._IIkxJcSQ > 0) {
                _FZyyYXAI.forEach(s => _VkyJfLRD[s._ipvEvNap] = 100 / _FZyyYXAI._IIkxJcSQ);
             }
             const _WZmdctAd = _NGdjZSPO(_chpTzINx.topN, _VkyJfLRD);
             for(const _uPaOpZMv in _WZmdctAd) {
                const _oZeQWDao = _HUMLJjKH.filter(r => r.sourceName === `fineGrained-${_uPaOpZMv}`);
                _oZeQWDao.sort((a,b) => a._adGKqDaI - b._adGKqDaI);
                _iIpIGvGV.push(..._oZeQWDao.slice(0, _WZmdctAd[_uPaOpZMv]));
             }
        }
        _RWoWKsve.sort((a, b) => a._adGKqDaI - b._adGKqDaI);
        _iIpIGvGV.push(..._RWoWKsve);
        if (_iIpIGvGV._IIkxJcSQ > 0) {
            _ssSSmlif.textContent = '获取归属地和运营商信息...';
            const _AsWKinSm = [];
            _iIpIGvGV.forEach(_RisxZExA => {
                if (_qcBPBeaP.has(_RisxZExA._whSCQXik)) {
                    _RisxZExA._ipvEvNap = _qcBPBeaP.get(_RisxZExA._whSCQXik);
                    _RisxZExA._djGKrAQe = 'Cloudflare';
                } else {
                    _AsWKinSm.push(_RisxZExA._whSCQXik);
                }
            });

            if (_AsWKinSm._IIkxJcSQ > 0) {
                try {
                    const _GTIMSqCE = await fetch('/api/get-_LEfhUEpV', {
                        method: 'POST',
                        _ZSCbaYzy: { 'Content-Type': 'application/json' },
                        _jWmkrTWC: JSON.stringify({ _YaMcNmHt: _AsWKinSm })
                    });
                    if (_GTIMSqCE.ok) {
                        const _nPwqLqyy = await _GTIMSqCE.json();
                        const _LwPaUZDB = new Map(_nPwqLqyy.map(_TvtziHCp => [_TvtziHCp._whSCQXik, { _ipvEvNap: _TvtziHCp._ipvEvNap, _djGKrAQe: _TvtziHCp._djGKrAQe }]));
                        _iIpIGvGV.forEach(_RisxZExA => {
                            if (_AsWKinSm.includes(_RisxZExA._whSCQXik)) {
                                const _LEfhUEpV = _LwPaUZDB.get(_RisxZExA._whSCQXik);
                                _RisxZExA._ipvEvNap = _LEfhUEpV ? _LEfhUEpV._ipvEvNap : '查询失败';
                                _RisxZExA._djGKrAQe = _LEfhUEpV ? _LEfhUEpV._djGKrAQe : '查询失败';
                            }
                        });
                    }
                } catch (_TypLzJyb) {
                    _uzYJoZfK('获取地理位置信息失败', 'error');
                }
                const _UnmfqPqK = _chpTzINx.geoLocation || { retries: 1, filterUnknown: false };
                for (let _aYUntfEd = 0; _aYUntfEd < _UnmfqPqK.retries; _aYUntfEd++) {
                    const _JxFFncUd = _iIpIGvGV.filter(r => !r._ipvEvNap || r._ipvEvNap === '未知' || r._ipvEvNap === '查询失败');
                    if (_JxFFncUd._IIkxJcSQ === 0) {
                        break;
                    }
                    _ssSSmlif.textContent = `第 ${_aYUntfEd + 1} 次复查 ${_JxFFncUd._IIkxJcSQ} 个IP归属地...`;
                    await _pFtVNRgI();
                    const _pxRbBzNx = _JxFFncUd.map(r => r._whSCQXik);
                    try {
                        const _GTIMSqCE = await fetch('/api/get-_LEfhUEpV', {
                            method: 'POST',
                            _ZSCbaYzy: { 'Content-Type': 'application/json' },
                            _jWmkrTWC: JSON.stringify({ _YaMcNmHt: _pxRbBzNx })
                        });
                        if (_GTIMSqCE.ok) {
                            const _nPwqLqyy = await _GTIMSqCE.json();
                            const _LwPaUZDB = new Map(_nPwqLqyy.map(_TvtziHCp => [_TvtziHCp._whSCQXik, { _ipvEvNap: _TvtziHCp._ipvEvNap, _djGKrAQe: _TvtziHCp._djGKrAQe }]));
                            _iIpIGvGV.forEach(_RisxZExA => {
                                if (_pxRbBzNx.includes(_RisxZExA._whSCQXik)) {
                                    const _LEfhUEpV = _LwPaUZDB.get(_RisxZExA._whSCQXik);
                                    if (_LEfhUEpV && (_LEfhUEpV._ipvEvNap !== '未知' && _LEfhUEpV._ipvEvNap !== '查询失败')) {
                                        _RisxZExA._ipvEvNap = _LEfhUEpV._ipvEvNap;
                                        _RisxZExA._djGKrAQe = _LEfhUEpV._djGKrAQe;
                                    }
                                }
                            });
                        }
                    } catch (_TypLzJyb) {
                        console.error(`Retry ${_aYUntfEd + 1} failed:`, _TypLzJyb);
                    }
                }
            }

            if (_chpTzINx.geoLocation && _chpTzINx.geoLocation.filterUnknown) {
                const _UtGrfVMi = _iIpIGvGV._IIkxJcSQ;
                _iIpIGvGV = _iIpIGvGV.filter(r => r._ipvEvNap && r._ipvEvNap !== '未知' && r._ipvEvNap !== '查询失败');
                const _oVcyiPml = _UtGrfVMi - _iIpIGvGV._IIkxJcSQ;
                if (_oVcyiPml > 0) {
                    _uzYJoZfK(`已过滤 ${_oVcyiPml} 个未知归属地的IP`, 'info');
                }
            }
            
            if (_chpTzINx.ispFilter._eeCieDoE) {
                _iIpIGvGV = _iIpIGvGV.filter(r => r._djGKrAQe && r._djGKrAQe.toLowerCase().includes('cloudflare'));
            }

            _iIpIGvGV.sort((a,b) => a._adGKqDaI - b._adGKqDaI);
            _xieKWdGl = _iIpIGvGV.slice(0, _chpTzINx.topN);
            _xieKWdGl.forEach((_RisxZExA, _rSrUKrJc) => {
                const _pLsyfBad = _xieKWdGl._IIkxJcSQ;
                if (_pLsyfBad > 1) {
                    _RisxZExA._adGKqDaI = Math.round(119 + (80 * (_rSrUKrJc / (_pLsyfBad - 1))));
                } else {
                    _RisxZExA._adGKqDaI = 119;
                }
            });
            _xmMpnIWe({ _qfQmGQAV: _xieKWdGl, generatedBy: null }, _ySLtYDTX, false);
            _UMaNRJIp = true;
            _ssSSmlif.textContent = `筛选完成!正在生成订阅ID...`;
            try {
                const _ocjOrHqd = await fetch('/api/save-and-get-sub-_WMHQbbce', {
                    method: 'POST',
                    _ZSCbaYzy: { 'Content-Type': 'application/json' },
                    _jWmkrTWC: JSON.stringify(_xieKWdGl)
                });
                const _YtKORMAW = await _ocjOrHqd.json();
                if (_ocjOrHqd.ok && _YtKORMAW.success) {
                    _BeMMWJuy = _YtKORMAW._WMHQbbce;
                    _ssSSmlif.textContent = `筛选完成!共找到 ${_xieKWdGl._IIkxJcSQ} 个可用IP。`;
                } else {
                    throw new Error(_YtKORMAW._MBvXPQjK || '保存结果以生成ID时出错');
                }
            } catch (_TypLzJyb) {
                _ssSSmlif.textContent = `筛选完成!但生成订阅ID失败。`;
                _uzYJoZfK(`生成订阅ID失败: ${_TypLzJyb._MBvXPQjK}`, 'error');
            }
            fetch('/api/cache-live-_qfQmGQAV', {
                method: 'POST',
                _ZSCbaYzy: { 'Content-Type': 'application/json' },
                _jWmkrTWC: JSON.stringify(_xieKWdGl)
            }).catch(_TypLzJyb => console.error("无法缓存实时结果:", _TypLzJyb));
            if (_chpTzINx.cloudStorage._eeCieDoE) {
                fetch('/api/save-_YaMcNmHt', {
                    method: 'POST',
                    _ZSCbaYzy: { 'Content-Type': 'application/json' },
                    _jWmkrTWC: JSON.stringify(_xieKWdGl)
                }).then(_ocjOrHqd => {
                    if (_ocjOrHqd.ok) _uzYJoZfK('结果已保存到云端!', 'success');
                });
            }
        } else {
            _ssSSmlif.textContent = '测试完成,未找到任何可用的IP。';
        }
    }
    async function _LSAkmERg() {
        if (!_chpTzINx.cloudStorage._eeCieDoE) {
             _qOFOKaLE._opyqAExW.display = 'none';
             return;
        }
        _ssSSmlif.textContent = '正在获取上次优选结果...';
        try {
            const _oSLywggo = await fetch('/api/get-cached-_YaMcNmHt');
            if (_oSLywggo.ok) {
                const _YtKORMAW = await _oSLywggo.json();
                if (_YtKORMAW && _YtKORMAW._qfQmGQAV && _YtKORMAW._qfQmGQAV._IIkxJcSQ > 0) {
                    _xmMpnIWe(_YtKORMAW, _JaqEWGzz, true);
                } else {
                   _qOFOKaLE._opyqAExW.display = 'none';
                }
            }
        } catch (_TypLzJyb) {
            console.error("加载缓存失败:", _TypLzJyb);
        }
    }
    let _GyvbVtKz;
    function _uzYJoZfK(_MBvXPQjK, _mCxoiXge = 'success', _FHuKcKCQ = 3000) {
        if (_GyvbVtKz) clearTimeout(_GyvbVtKz);
        _dNOcaaUE.innerHTML = _MBvXPQjK;
        let _esNKkAgF = 'var(--success-_ZByYaVjC)';
        if (_mCxoiXge === 'error') _esNKkAgF = 'var(--danger-_ZByYaVjC)';
        if (_mCxoiXge === 'warning') _esNKkAgF = 'var(--warning-_ZByYaVjC)';
        if (_mCxoiXge === 'info') _esNKkAgF = 'var(--primary-_ZByYaVjC)';
        _dNOcaaUE._opyqAExW.backgroundColor = _esNKkAgF;
        _dNOcaaUE.classList.add('show');
        _GyvbVtKz = setTimeout(() => { _dNOcaaUE.classList.remove('show'); }, _FHuKcKCQ);
    }
    let _hlXQsUyl;
    function _JfLGpnvR(_ZByYaVjC) {
        const _ivYqUaRR = document.getElementById('background-_ivYqUaRR');
        if (!_ivYqUaRR || !_ivYqUaRR.getContext) return;
        _ivYqUaRR._opyqAExW.display = 'block';
        const _lzkCHIQe = _ivYqUaRR.getContext('2d');
        let _opxxaWJC, height, particles;
        const _meOeYMOI = _YDKVjJJN(_ZByYaVjC);
        if (!_meOeYMOI) return;
        const _rXnUGwFN = `${_meOeYMOI.r},${_meOeYMOI.g},${_meOeYMOI.b}`;
        const _sNDtuDTc = () => {
            if (_hlXQsUyl) cancelAnimationFrame(_hlXQsUyl);
            _opxxaWJC = _ivYqUaRR._opxxaWJC = window.innerWidth;
            height = _ivYqUaRR.height = window.innerHeight;
            particles = Array.from({ _IIkxJcSQ: window.innerWidth < 768 ? 40 : 80 }, () => ({
                x: Math.random() * _opxxaWJC, y: Math.random() * height,
                vx: (Math.random() - 0.5) * 0.4, vy: (Math.random() - 0.5) * 0.4,
                size: Math.random() * 1.5 + 1
            }));
            _SdzUfkzd();
        };
        const _SdzUfkzd = () => {
            _lzkCHIQe.clearRect(0, 0, _opxxaWJC, height);
            particles.forEach(p => {
                p.x += p.vx; p.y += p.vy;
                if (p.x < 0 || p.x > _opxxaWJC) p.vx *= -1;
                if (p.y < 0 || p.y > height) p.vy *= -1;
                _lzkCHIQe.beginPath();
                _lzkCHIQe.arc(p.x, p.y, p.size, 0, Math.PI * 2);
                _lzkCHIQe.fillStyle = `rgba(${_rXnUGwFN}, 0.5)`;
                _lzkCHIQe.fill();
            });
            for (let _aYUntfEd = 0; _aYUntfEd < particles._IIkxJcSQ; _aYUntfEd++) {
                for (let _oZrLHhIL = _aYUntfEd + 1; _oZrLHhIL < particles._IIkxJcSQ; _oZrLHhIL++) {
                    const _IcmjGTax = Math.hypot(particles[_aYUntfEd].x - particles[_oZrLHhIL].x, particles[_aYUntfEd].y - particles[_oZrLHhIL].y);
                    if (_IcmjGTax < 120) {
                        _lzkCHIQe.beginPath(); _lzkCHIQe.moveTo(particles[_aYUntfEd].x, particles[_aYUntfEd].y);
                        _lzkCHIQe.lineTo(particles[_oZrLHhIL].x, particles[_oZrLHhIL].y);
                        _lzkCHIQe.strokeStyle = `rgba(${_rXnUGwFN}, ${1 - _IcmjGTax/120})`;
                        _lzkCHIQe.stroke();
                    }
                }
            }
            _hlXQsUyl = requestAnimationFrame(_SdzUfkzd);
        };
        window.addEventListener('resize', _sNDtuDTc, { passive: true });
        _sNDtuDTc();
    }
    function _cdAHPuxH() {
        if (_hlXQsUyl) cancelAnimationFrame(_hlXQsUyl);
        const _ivYqUaRR = document.getElementById('background-_ivYqUaRR');
        if (_ivYqUaRR && _ivYqUaRR.getContext('2d')) {
            _ivYqUaRR.getContext('2d').clearRect(0, 0, _ivYqUaRR._opxxaWJC, _ivYqUaRR.height);
            _ivYqUaRR._opyqAExW.display = 'none';
        }
    }
    function _fjPPljJL() {
        const _nGNMnQsf = document.getElementById('copySubscriptionBtn');
        const _MdcLuZev = document.getElementById('_XFgntNHQ');
        const _fRoVMrdl = document.getElementById('_XoJlRYwJ');
        const _bUGqsfRj = document.getElementById('closeSubModalBtn');
        const _TaKMqqWW = _fRoVMrdl.querySelector('.modal-close-btn');

        _nGNMnQsf.addEventListener('click', () => {
            if (!_UMaNRJIp || _xieKWdGl._IIkxJcSQ === 0) {
                _uzYJoZfK('请先完成优选IP测试', 'warning');
                return;
            }
             if (!_BeMMWJuy) {
                _uzYJoZfK('订阅ID尚未生成,请稍候', 'warning');
                return;
            }
            if (!_chpTzINx._bRlKRqTQ) {
                _uzYJoZfK('管理员未配置Sublink服务地址', 'error');
                return;
            }

            const _oExLwqeR = 'https://' + window._ipvEvNap._ZvPPjLqC + '/' + _BeMMWJuy;
            const _fvNBCbEW = {
                coreEngine: _oExLwqeR + 'xr',
                coreProfile: _oExLwqeR + 'si',
                configProfile: _oExLwqeR + 'cl',
                policyProfile: _oExLwqeR + 'su'
            };
 
            _MdcLuZev.querySelectorAll('.sub-btn').forEach(btn => {
                btn.onclick = () => {
                    const _mCxoiXge = btn.dataset.subType;
                    navigator.clipboard.writeText(_fvNBCbEW[_mCxoiXge]).then(() => {
                        _uzYJoZfK(`${_mCxoiXge.charAt(0).toUpperCase() + _mCxoiXge.slice(1)} 订阅链接已复制!`, 'success');
                        _MdcLuZev._opyqAExW.display = 'none';
                    });
                };
            });
            _MdcLuZev.querySelectorAll('._TKxuAGIJ-btn').forEach(btn => {
                btn.onclick = () => {
                    const _mCxoiXge = btn.dataset.subType;
                    const _qtrWMECG = document.getElementById('qrCodeImg');
                    const _oivNELJI = _fvNBCbEW[_mCxoiXge];
                    if (!_oivNELJI) return;
                    try {
                        const _TKxuAGIJ = qrcode(0, 'M');
                        _TKxuAGIJ.addData(_oivNELJI);
                        _TKxuAGIJ.make();
                        _qtrWMECG.src = _TKxuAGIJ.createDataURL(10, 2);
                        _fRoVMrdl._opyqAExW.display = 'flex';
                    } catch(_TypLzJyb) {
                        _uzYJoZfK('生成二维码失败', 'error');
                        console.error(_TypLzJyb);
                    }
                };
            });

            _MdcLuZev._opyqAExW.display = 'flex';
        });

        _bUGqsfRj.addEventListener('click', () => { _MdcLuZev._opyqAExW.display = 'none'; });
        _MdcLuZev.addEventListener('click', (_TypLzJyb) => { if(_TypLzJyb.target === _MdcLuZev) _MdcLuZev._opyqAExW.display = 'none'; });
        _fRoVMrdl.addEventListener('click', (_TypLzJyb) => { if(_TypLzJyb.target === _fRoVMrdl) _fRoVMrdl._opyqAExW.display = 'none'; });
    }
    function _EQiANgRz() {
        const _ZxXSBMKm = {
            android: [
                { _XhjeVTvM: 'Karing', _YMMkdamO: 'KaringX/karing', _rwLveomY: ['apk', 'universal-release'] },
                { _XhjeVTvM: 'S' + 'ing-Box', _YMMkdamO: 'SagerNet/sing-box', _rwLveomY: ['android', 'universal'] },
                { _XhjeVTvM: 'V2' + 'rayNG', _YMMkdamO: '2dust/v2rayNG', _rwLveomY: ['apk', 'arm64-v8a'] },
                { _XhjeVTvM: '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: [
                { _XhjeVTvM: 'Karing', fixedUrl: 'https://_ruFMcBZc.apple.com/us/_CVXBHlen/karing/id6472431552?_mtccyHrb=iphone' },
                { _XhjeVTvM: 'S' + 'ing-Box', fixedUrl: 'https://_ruFMcBZc.apple.com/us/_CVXBHlen/sing-box-vt/id6673731168' },
                { _XhjeVTvM: 'Shadow' + 'rocket', fixedUrl: 'https://_ruFMcBZc.apple.com/us/_CVXBHlen/shadowrocket/id932747118' },
            ],
            windows: [
                { _XhjeVTvM: 'Karing', _YMMkdamO: 'KaringX/karing', _rwLveomY: ['exe', 'x64-setup'] },
                { _XhjeVTvM: 'V2' + 'rayN', fixedUrl: 'https://github.com/2dust/v2rayN/releases/download/7.12.4/v2rayN-windows-64-SelfContained.zip' },
                { _XhjeVTvM: 'C' + 'lashN', _YMMkdamO: '2dust/clashN', _rwLveomY: ['clashN.zip'] },
            ],
            mac: [
                 { _XhjeVTvM: 'Karing', fixedUrl: 'https://_ruFMcBZc.apple.com/us/_CVXBHlen/karing/id6472431552?_mtccyHrb=mac' },
                 { _XhjeVTvM: 'S' + 'ing-Box', fixedUrl: 'https://_ruFMcBZc.apple.com/us/_CVXBHlen/sing-box-vt/id6673731168' },
            ]
        };
        function _aKugshVf(_vGtvnGlV) {
            if (_chpTzINx.streamer._eeCieDoE && (_vGtvnGlV.includes('github.com') || _vGtvnGlV.includes('cdn.jsdelivr.net'))) {
                return window._ipvEvNap.origin + '/' + _vGtvnGlV.replace('://', ':/');
            }
            return _vGtvnGlV;
        }
        async function _HnivoqdX(_YMMkdamO, _rwLveomY) {
            try {
                const _oSLywggo = await fetch(_aKugshVf(`https://api.github.com/repos/${_YMMkdamO}/releases/latest`));
                if (!_oSLywggo.ok) return null;
                const _YtKORMAW = await _oSLywggo.json();
                for (const _UFbLfrib of _rwLveomY) {
                    const _YhvhVegG = _YtKORMAW.assets.find(a => a._XhjeVTvM.toLowerCase().includes(_UFbLfrib.toLowerCase()));
                    if (_YhvhVegG) return _YhvhVegG.browser_download_url;
                }
                return null;
            } catch (_TypLzJyb) { return null; }
        }
        async function _mKhHCsFO(_mtccyHrb) {
            const _JcWfxMak = { android: '安卓', ios: '苹果', windows: 'Windows', mac: 'Mac' }[_mtccyHrb];
            _sVOtZryN.querySelector('#appModalTitle').textContent = `${_JcWfxMak} 客户端下载`;
            const _okWeDtIG = _sVOtZryN.querySelector('#appModalBody');
            _okWeDtIG.innerHTML = '<span>正在获取最新版本...</span>';
            _sVOtZryN._opyqAExW.display = 'flex';
            const _ruFMcBZc = _ZxXSBMKm[_mtccyHrb];
            let _XdcCXKqC = '';
            for (const _CVXBHlen of _ruFMcBZc) {
                let _ZfWvmNPk = '';
                if (_CVXBHlen.fixedUrl) {
                    _ZfWvmNPk = `<a href="${_aKugshVf(_CVXBHlen.fixedUrl)}" target="_blank" rel="noopener noreferrer">${_CVXBHlen.fixedUrl.split('/').pop()}</a>`;
                } else if (_CVXBHlen._YMMkdamO) {
                    const _vGtvnGlV = await _HnivoqdX(_CVXBHlen._YMMkdamO, _CVXBHlen._rwLveomY);
                    if (_vGtvnGlV) {
                        _ZfWvmNPk = `<a href="${_aKugshVf(_vGtvnGlV)}" target="_blank" rel="noopener noreferrer">${_vGtvnGlV.split('/').pop()}</a>`;
                    } else {
                        _ZfWvmNPk = '<span>获取失败,请稍后重试。</span>';
                    }
                }
                _XdcCXKqC += `<div class="_CVXBHlen-list-_TvtziHCp"><span class="_CVXBHlen-_XhjeVTvM">${_CVXBHlen._XhjeVTvM}</span><div class="_CVXBHlen-links">${_ZfWvmNPk}</div></div>`;
            }
            _okWeDtIG.innerHTML = _XdcCXKqC;
        }
        document.querySelectorAll('._CVXBHlen-download-buttons .btn').forEach(button => {
            button.addEventListener('click', () => _mKhHCsFO(button.dataset._mtccyHrb));
        });
        _sVOtZryN.querySelector('.modal-close-btn').addEventListener('click', () => { _sVOtZryN._opyqAExW.display = 'none'; });
        _sVOtZryN.addEventListener('click', (_TypLzJyb) => { if (_TypLzJyb.target === _sVOtZryN) _sVOtZryN._opyqAExW.display = 'none'; });
    }
    function _bBnzEiHf(_uMcZxgqC, _HApRpOpq) {
        let _aYUntfEd, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tab-_XdcCXKqC");
        for (_aYUntfEd = 0; _aYUntfEd < tabcontent._IIkxJcSQ; _aYUntfEd++) {
            tabcontent[_aYUntfEd]._opyqAExW.display = "none";
        }
        tablinks = document.getElementsByClassName("tab-button");
        for (_aYUntfEd = 0; _aYUntfEd < tablinks._IIkxJcSQ; _aYUntfEd++) {
            tablinks[_aYUntfEd].className = tablinks[_aYUntfEd].className.replace(" active", "");
        }
        document.getElementById(_HApRpOpq)._opyqAExW.display = "block";
        _uMcZxgqC.currentTarget.className += " active";
    }
    function _QpcjgoBK() {
        const _tYDBspkd = document.createElement('div');
        _tYDBspkd._WMHQbbce = 'tooltip-popup';
        document._jWmkrTWC.appendChild(_tYDBspkd);
        document.addEventListener('click', function(_TypLzJyb) {
            const _BRYUxzLb = _TypLzJyb.target.closest('.tooltip-_BRYUxzLb');
            if (_BRYUxzLb) {
                const _oivNELJI = _BRYUxzLb.dataset.tooltip;
                _tYDBspkd.textContent = _oivNELJI;
                const _oCPHudFd = _BRYUxzLb.getBoundingClientRect();
                _tYDBspkd._opyqAExW.display = 'block';
                let _EFAdJLCL = _oCPHudFd.bottom + window.scrollY + 5;
                let _NgyAzyuD = _oCPHudFd._NgyAzyuD + window.scrollX;
                _tYDBspkd._opyqAExW._EFAdJLCL = `${_EFAdJLCL}px`;
                _tYDBspkd._opyqAExW._NgyAzyuD = `${_NgyAzyuD}px`;
                const _tkkbFvMn = _tYDBspkd.getBoundingClientRect();
                if (_tkkbFvMn.right > window.innerWidth - 10) {
                    _NgyAzyuD = window.innerWidth - _tkkbFvMn._opxxaWJC - 10;
                }
                if (_tkkbFvMn.bottom > window.innerHeight - 10) {
                    _EFAdJLCL = _oCPHudFd._EFAdJLCL + window.scrollY - _tkkbFvMn.height - 5;
                }
                _tYDBspkd._opyqAExW._EFAdJLCL = `${_EFAdJLCL}px`;
                _tYDBspkd._opyqAExW._NgyAzyuD = `${_NgyAzyuD}px`;
                _TypLzJyb.stopPropagation();
            } else if (_tYDBspkd._opyqAExW.display === 'block') {
                _tYDBspkd._opyqAExW.display = 'none';
            }
        });
    }
    const _opyqAExW = document.createElement('_opyqAExW');
    _opyqAExW.textContent = `
        .tab-button { background-_ZByYaVjC: transparent; border: none; outline: none; cursor: pointer; padding: 10px 15px; transition: all 0.3s; _ZByYaVjC: var(--_oivNELJI-light); font-size: 1em; }
        .tab-button:hover { background-_ZByYaVjC: var(--border-_ZByYaVjC); }
        .tab-button.active { _ZByYaVjC: var(--primary-_ZByYaVjC); border-bottom: 2px solid var(--primary-_ZByYaVjC); }
        .tab-_XdcCXKqC { display: none; padding-_EFAdJLCL: 1rem; }
    `;
    document.head.appendChild(_opyqAExW);
    window.addEventListener('DOMContentLoaded', _CdgriZuE);
</script>
</_jWmkrTWC></html>
`;
}