From 8563e4ea53b7f574710abfcaa6bbe748d62d3e13 Mon Sep 17 00:00:00 2001 From: Dinger Date: Tue, 7 Apr 2026 22:47:07 +0800 Subject: [PATCH] v3.0.1 Signed-off-by: Dinger --- backend_api_python/Dockerfile | 1 + backend_api_python/app/config/api_keys.py | 9 + .../app/data_sources/asia_stock_kline.py | 566 ++++++++++++++++++ .../app/data_sources/cn_hk_fundamentals.py | 292 +++++++++ .../app/data_sources/cn_stock.py | 99 +++ .../app/data_sources/factory.py | 6 + .../app/data_sources/hk_stock.py | 99 +++ .../app/data_sources/polymarket.py | 12 +- .../app/data_sources/tencent.py | 238 ++++++++ .../app/data_sources/us_stock.py | 13 +- .../app/routes/global_market.py | 169 +++++- backend_api_python/app/routes/market.py | 3 +- backend_api_python/app/routes/quick_trade.py | 370 +++++++++++- backend_api_python/app/routes/settings.py | 9 + backend_api_python/app/routes/strategy.py | 47 +- .../app/services/fast_analysis.py | 40 +- .../app/services/live_trading/base.py | 94 ++- .../app/services/live_trading/bybit.py | 248 +++++++- .../app/services/live_trading/factory.py | 2 +- .../app/services/live_trading/gate.py | 241 +++++++- .../app/services/live_trading/htx.py | 113 +++- .../app/services/market_data_collector.py | 161 ++++- .../app/services/pending_order_worker.py | 11 +- .../app/services/polymarket_worker.py | 20 +- .../app/services/signal_notifier.py | 68 ++- backend_api_python/app/services/strategy.py | 15 + .../app/services/strategy_snapshot.py | 25 +- .../app/services/symbol_name.py | 16 + .../app/services/trading_executor.py | 44 ++ backend_api_python/app/utils/config_loader.py | 1 + .../app/utils/strategy_runtime_logs.py | 29 + backend_api_python/env.example | 13 + backend_api_python/migrations/init.sql | 39 +- backend_api_python/requirements.txt | 1 + docs/CHANGELOG.md | 40 ++ frontend/dist/css/156.ef3f8671.css | 1 + frontend/dist/css/161.a7b2f719.css | 1 - frontend/dist/css/19.a7b2f719.css | 1 - frontend/dist/css/222.7606786c.css | 1 + frontend/dist/css/230.2035e6e3.css | 1 - frontend/dist/css/254.2035e6e3.css | 1 - frontend/dist/css/305.7fc536c1.css | 1 + frontend/dist/css/313.ef3f8671.css | 1 + frontend/dist/css/37.7606786c.css | 1 + frontend/dist/css/394.130d598a.css | 1 + frontend/dist/css/417.7fc536c1.css | 1 + frontend/dist/css/447.091cab00.css | 1 - frontend/dist/css/53.130d598a.css | 1 + frontend/dist/css/631.220338f3.css | 1 - frontend/dist/css/681.220338f3.css | 1 - frontend/dist/css/755.091cab00.css | 1 - frontend/dist/css/app.9dca4aef.css | 1 - frontend/dist/css/app.d31596cf.css | 1 + ...ed7e9530.css => theme-colors-48205a9b.css} | 267 +++++---- frontend/dist/index.html | 2 +- frontend/dist/js/156-legacy.bc26fda8.js | 1 + frontend/dist/js/161-legacy.48ab2cbb.js | 1 - frontend/dist/js/19.5d40ba7c.js | 1 - frontend/dist/js/222-legacy.2f9ee28c.js | 1 + frontend/dist/js/230.1c4c46a6.js | 1 - frontend/dist/js/254-legacy.f0b6cf6d.js | 1 - frontend/dist/js/286-legacy.45ebd67d.js | 1 + frontend/dist/js/305-legacy.b89232fc.js | 1 + frontend/dist/js/313.f241066a.js | 1 + frontend/dist/js/37.4b1f5240.js | 1 + ...acy.998c00ff.js => 394-legacy.02ee9300.js} | 4 +- frontend/dist/js/417.6b658f3e.js | 1 + frontend/dist/js/500.2f2276c5.js | 1 - frontend/dist/js/53.feb2b5f5.js | 18 + frontend/dist/js/631-legacy.5f83b8fd.js | 1 - frontend/dist/js/681.d83c19bb.js | 1 - frontend/dist/js/755.1226be89.js | 18 - frontend/dist/js/945-legacy.6efa43e3.js | 1 - frontend/dist/js/947.ad63868c.js | 1 + frontend/dist/js/app-legacy.78cc7a1b.js | 1 + frontend/dist/js/app-legacy.abf8ca7f.js | 1 - frontend/dist/js/app.1b0410d5.js | 1 - frontend/dist/js/app.e1e54a25.js | 1 + ...48.js => chunk-vendors-legacy.ad9b5cc2.js} | 4 +- ....7a650f0b.js => chunk-vendors.ac6f37ff.js} | 4 +- .../dist/js/lang-ar-SA-legacy.07179789.js | 1 + .../dist/js/lang-ar-SA-legacy.6abb9d1b.js | 1 - frontend/dist/js/lang-ar-SA.655cc3aa.js | 1 - frontend/dist/js/lang-ar-SA.92c756c2.js | 1 + .../dist/js/lang-de-DE-legacy.381031d0.js | 1 - .../dist/js/lang-de-DE-legacy.42865f87.js | 1 + frontend/dist/js/lang-de-DE.3dc38de4.js | 1 + frontend/dist/js/lang-de-DE.87483dcb.js | 1 - .../dist/js/lang-fr-FR-legacy.69dd3ef3.js | 1 - .../dist/js/lang-fr-FR-legacy.c1b6970c.js | 1 + frontend/dist/js/lang-fr-FR.60f0ac2f.js | 1 + frontend/dist/js/lang-fr-FR.d8fb1359.js | 1 - .../dist/js/lang-ja-JP-legacy.c9ff8eee.js | 1 + .../dist/js/lang-ja-JP-legacy.e3ca6ce6.js | 1 - frontend/dist/js/lang-ja-JP.3b84b509.js | 1 + frontend/dist/js/lang-ja-JP.3f074e98.js | 1 - .../dist/js/lang-ko-KR-legacy.8eff6ee8.js | 1 + .../dist/js/lang-ko-KR-legacy.e8863684.js | 1 - frontend/dist/js/lang-ko-KR.ccf295eb.js | 1 + frontend/dist/js/lang-ko-KR.e14e1020.js | 1 - .../dist/js/lang-th-TH-legacy.02d5a8e9.js | 1 + .../dist/js/lang-th-TH-legacy.fcd9f16a.js | 1 - frontend/dist/js/lang-th-TH.3a074668.js | 1 + frontend/dist/js/lang-th-TH.6cdef8b5.js | 1 - .../dist/js/lang-vi-VN-legacy.1457d3b4.js | 1 - .../dist/js/lang-vi-VN-legacy.3411272e.js | 1 + frontend/dist/js/lang-vi-VN.97e95cfb.js | 1 - frontend/dist/js/lang-vi-VN.f117f408.js | 1 + .../dist/js/lang-zh-CN-legacy.774b50e7.js | 1 + .../dist/js/lang-zh-CN-legacy.81e81890.js | 1 - frontend/dist/js/lang-zh-CN.0221a535.js | 1 + frontend/dist/js/lang-zh-CN.6751831d.js | 1 - .../dist/js/lang-zh-TW-legacy.11dd7eaf.js | 1 + .../dist/js/lang-zh-TW-legacy.bcd61a63.js | 1 - frontend/dist/js/lang-zh-TW.531feaf2.js | 1 + frontend/dist/js/lang-zh-TW.5ed48957.js | 1 - 116 files changed, 3189 insertions(+), 356 deletions(-) create mode 100644 backend_api_python/app/data_sources/asia_stock_kline.py create mode 100644 backend_api_python/app/data_sources/cn_hk_fundamentals.py create mode 100644 backend_api_python/app/data_sources/cn_stock.py create mode 100644 backend_api_python/app/data_sources/hk_stock.py create mode 100644 backend_api_python/app/data_sources/tencent.py create mode 100644 backend_api_python/app/utils/strategy_runtime_logs.py create mode 100644 frontend/dist/css/156.ef3f8671.css delete mode 100644 frontend/dist/css/161.a7b2f719.css delete mode 100644 frontend/dist/css/19.a7b2f719.css create mode 100644 frontend/dist/css/222.7606786c.css delete mode 100644 frontend/dist/css/230.2035e6e3.css delete mode 100644 frontend/dist/css/254.2035e6e3.css create mode 100644 frontend/dist/css/305.7fc536c1.css create mode 100644 frontend/dist/css/313.ef3f8671.css create mode 100644 frontend/dist/css/37.7606786c.css create mode 100644 frontend/dist/css/394.130d598a.css create mode 100644 frontend/dist/css/417.7fc536c1.css delete mode 100644 frontend/dist/css/447.091cab00.css create mode 100644 frontend/dist/css/53.130d598a.css delete mode 100644 frontend/dist/css/631.220338f3.css delete mode 100644 frontend/dist/css/681.220338f3.css delete mode 100644 frontend/dist/css/755.091cab00.css delete mode 100644 frontend/dist/css/app.9dca4aef.css create mode 100644 frontend/dist/css/app.d31596cf.css rename frontend/dist/css/{theme-colors-ed7e9530.css => theme-colors-48205a9b.css} (87%) create mode 100644 frontend/dist/js/156-legacy.bc26fda8.js delete mode 100644 frontend/dist/js/161-legacy.48ab2cbb.js delete mode 100644 frontend/dist/js/19.5d40ba7c.js create mode 100644 frontend/dist/js/222-legacy.2f9ee28c.js delete mode 100644 frontend/dist/js/230.1c4c46a6.js delete mode 100644 frontend/dist/js/254-legacy.f0b6cf6d.js create mode 100644 frontend/dist/js/286-legacy.45ebd67d.js create mode 100644 frontend/dist/js/305-legacy.b89232fc.js create mode 100644 frontend/dist/js/313.f241066a.js create mode 100644 frontend/dist/js/37.4b1f5240.js rename frontend/dist/js/{447-legacy.998c00ff.js => 394-legacy.02ee9300.js} (71%) create mode 100644 frontend/dist/js/417.6b658f3e.js delete mode 100644 frontend/dist/js/500.2f2276c5.js create mode 100644 frontend/dist/js/53.feb2b5f5.js delete mode 100644 frontend/dist/js/631-legacy.5f83b8fd.js delete mode 100644 frontend/dist/js/681.d83c19bb.js delete mode 100644 frontend/dist/js/755.1226be89.js delete mode 100644 frontend/dist/js/945-legacy.6efa43e3.js create mode 100644 frontend/dist/js/947.ad63868c.js create mode 100644 frontend/dist/js/app-legacy.78cc7a1b.js delete mode 100644 frontend/dist/js/app-legacy.abf8ca7f.js delete mode 100644 frontend/dist/js/app.1b0410d5.js create mode 100644 frontend/dist/js/app.e1e54a25.js rename frontend/dist/js/{chunk-vendors-legacy.e8633248.js => chunk-vendors-legacy.ad9b5cc2.js} (99%) rename frontend/dist/js/{chunk-vendors.7a650f0b.js => chunk-vendors.ac6f37ff.js} (99%) create mode 100644 frontend/dist/js/lang-ar-SA-legacy.07179789.js delete mode 100644 frontend/dist/js/lang-ar-SA-legacy.6abb9d1b.js delete mode 100644 frontend/dist/js/lang-ar-SA.655cc3aa.js create mode 100644 frontend/dist/js/lang-ar-SA.92c756c2.js delete mode 100644 frontend/dist/js/lang-de-DE-legacy.381031d0.js create mode 100644 frontend/dist/js/lang-de-DE-legacy.42865f87.js create mode 100644 frontend/dist/js/lang-de-DE.3dc38de4.js delete mode 100644 frontend/dist/js/lang-de-DE.87483dcb.js delete mode 100644 frontend/dist/js/lang-fr-FR-legacy.69dd3ef3.js create mode 100644 frontend/dist/js/lang-fr-FR-legacy.c1b6970c.js create mode 100644 frontend/dist/js/lang-fr-FR.60f0ac2f.js delete mode 100644 frontend/dist/js/lang-fr-FR.d8fb1359.js create mode 100644 frontend/dist/js/lang-ja-JP-legacy.c9ff8eee.js delete mode 100644 frontend/dist/js/lang-ja-JP-legacy.e3ca6ce6.js create mode 100644 frontend/dist/js/lang-ja-JP.3b84b509.js delete mode 100644 frontend/dist/js/lang-ja-JP.3f074e98.js create mode 100644 frontend/dist/js/lang-ko-KR-legacy.8eff6ee8.js delete mode 100644 frontend/dist/js/lang-ko-KR-legacy.e8863684.js create mode 100644 frontend/dist/js/lang-ko-KR.ccf295eb.js delete mode 100644 frontend/dist/js/lang-ko-KR.e14e1020.js create mode 100644 frontend/dist/js/lang-th-TH-legacy.02d5a8e9.js delete mode 100644 frontend/dist/js/lang-th-TH-legacy.fcd9f16a.js create mode 100644 frontend/dist/js/lang-th-TH.3a074668.js delete mode 100644 frontend/dist/js/lang-th-TH.6cdef8b5.js delete mode 100644 frontend/dist/js/lang-vi-VN-legacy.1457d3b4.js create mode 100644 frontend/dist/js/lang-vi-VN-legacy.3411272e.js delete mode 100644 frontend/dist/js/lang-vi-VN.97e95cfb.js create mode 100644 frontend/dist/js/lang-vi-VN.f117f408.js create mode 100644 frontend/dist/js/lang-zh-CN-legacy.774b50e7.js delete mode 100644 frontend/dist/js/lang-zh-CN-legacy.81e81890.js create mode 100644 frontend/dist/js/lang-zh-CN.0221a535.js delete mode 100644 frontend/dist/js/lang-zh-CN.6751831d.js create mode 100644 frontend/dist/js/lang-zh-TW-legacy.11dd7eaf.js delete mode 100644 frontend/dist/js/lang-zh-TW-legacy.bcd61a63.js create mode 100644 frontend/dist/js/lang-zh-TW.531feaf2.js delete mode 100644 frontend/dist/js/lang-zh-TW.5ed48957.js diff --git a/backend_api_python/Dockerfile b/backend_api_python/Dockerfile index 814d473..e791fa4 100644 --- a/backend_api_python/Dockerfile +++ b/backend_api_python/Dockerfile @@ -11,6 +11,7 @@ WORKDIR /app RUN sed -i 's|http://deb.debian.org|https://deb.debian.org|g' /etc/apt/sources.list.d/*.sources 2>/dev/null || true \ && apt-get update \ && apt-get install -y --no-install-recommends --fix-missing \ + ca-certificates \ curl \ # Build deps (needed for some pyproject-based packages like ed25519-blake2b) build-essential \ diff --git a/backend_api_python/app/config/api_keys.py b/backend_api_python/app/config/api_keys.py index 865e181..a85b4f2 100644 --- a/backend_api_python/app/config/api_keys.py +++ b/backend_api_python/app/config/api_keys.py @@ -18,6 +18,15 @@ class MetaAPIKeys(type): from app.utils.config_loader import load_addon_config val = load_addon_config().get('tiingo', {}).get('api_key') return val if val else os.getenv('TIINGO_API_KEY', '') + + @property + def TWELVE_DATA_API_KEY(cls): + env_val = os.getenv('TWELVE_DATA_API_KEY', '').strip() + if env_val: + return env_val + from app.utils.config_loader import load_addon_config + val = load_addon_config().get('twelve_data', {}).get('api_key') + return val if val else '' @property def OPENROUTER_API_KEY(cls): diff --git a/backend_api_python/app/data_sources/asia_stock_kline.py b/backend_api_python/app/data_sources/asia_stock_kline.py new file mode 100644 index 0000000..0506d45 --- /dev/null +++ b/backend_api_python/app/data_sources/asia_stock_kline.py @@ -0,0 +1,566 @@ +""" +A-share / H-share chart K-lines — multi-tier fallback. + +Priority order (when TWELVE_DATA_API_KEY is configured): + ALL timeframes → Twelve Data (paid, globally stable) → Tencent daily/weekly → yfinance → AkShare + +Without API key: + Daily / Weekly → Tencent fqkline (fast, no key) → yfinance → AkShare + Minute / Hour → yfinance → AkShare (Eastmoney, fragile overseas) + +Tencent ``fqkline`` only reliably supports day/week/month. +yfinance supports CN (.SS/.SZ) and HK (.HK) at all common intervals. +Twelve Data (https://twelvedata.com) supports XSHG/XSHE/XHKG at all intervals. +""" + +from __future__ import annotations + +import os +import time +from datetime import datetime, timedelta +from typing import Any, Dict, List, Optional + +import pandas as pd +import requests + +from app.utils.logger import get_logger + +logger = get_logger(__name__) + +_MAX_ATTEMPTS = 3 +_BACKOFF_BASE_SEC = 1.5 +_BACKOFF_CAP_SEC = 12.0 + +_TRANSIENT_ERR_MARKERS = ( + "remote end closed connection", + "connection aborted", + "connection reset", + "timed out", + "timeout", + "max retries exceeded", + "temporarily unavailable", + "broken pipe", + "eof occurred", + "remote disconnected", + "chunkedencodingerror", + "incompleteread", + "rate", + "too many requests", + "429", +) + + +def _is_transient(exc: BaseException) -> bool: + return any(m in str(exc).lower() for m in _TRANSIENT_ERR_MARKERS) + + +_CHART_TF_ALIASES = { + "1w": "1W", + "1d": "1D", + "1h": "1H", + "4h": "4H", + "d": "1D", + "day": "1D", + "w": "1W", + "week": "1W", + "wk": "1W", + "60m": "1H", + "240m": "4H", + "1day": "1D", + "1week": "1W", +} + + +def normalize_chart_timeframe(timeframe: str) -> str: + t = (timeframe or "1D").strip() + if not t: + return "1D" + key = t.lower() + if key in _CHART_TF_ALIASES: + return _CHART_TF_ALIASES[key] + return t + + +# --------------------------------------------------------------------------- +# AkShare code converters +# --------------------------------------------------------------------------- + +def ak_a_code_from_tencent(tencent_code: str) -> str: + c = (tencent_code or "").strip().lower() + if len(c) >= 8 and c[:2] in ("sh", "sz"): + return c[2:] + return c + + +def ak_hk_code_from_tencent(tencent_code: str) -> str: + c = (tencent_code or "").strip().upper().replace(".HK", "") + if c.startswith("HK"): + num = c[2:] + else: + num = c + if num.isdigit(): + return num.zfill(5) + return num + + +# --------------------------------------------------------------------------- +# Twelve Data (paid, globally reliable — https://twelvedata.com) +# --------------------------------------------------------------------------- + +def _get_twelve_data_api_key() -> str: + try: + from app.utils.config_loader import load_addon_config + key = load_addon_config().get("twelve_data", {}).get("api_key", "") + if key: + return key + except Exception: + pass + return (os.getenv("TWELVE_DATA_API_KEY") or "").strip() + + +_TD_INTERVAL_MAP = { + "1m": "1min", + "5m": "5min", + "15m": "15min", + "30m": "30min", + "1H": "1h", + "4H": "4h", + "1D": "1day", + "1W": "1week", +} + + +def _td_symbol_and_exchange(tencent_code: str, is_hk: bool) -> tuple[str, str]: + """Convert Tencent code to Twelve Data (symbol, exchange).""" + c = (tencent_code or "").strip().upper() + if is_hk: + num = c.replace("HK", "") + if num.isdigit(): + num = str(int(num)).zfill(4) + return num, "XHKG" + digits = c.lstrip("SHSZ") + if c.startswith("SH") or digits.startswith("6"): + return digits, "XSHG" + return digits, "XSHE" + + +def fetch_twelvedata_klines( + *, + is_hk: bool, + tencent_code: str, + timeframe: str, + limit: int, + before_time: Optional[int], +) -> List[Dict[str, Any]]: + """Fetch K-lines from Twelve Data REST API. Requires TWELVE_DATA_API_KEY.""" + api_key = _get_twelve_data_api_key() + if not api_key: + return [] + + interval = _TD_INTERVAL_MAP.get(timeframe) + if not interval: + return [] + + symbol, exchange = _td_symbol_and_exchange(tencent_code, is_hk) + params: Dict[str, Any] = { + "symbol": symbol, + "exchange": exchange, + "interval": interval, + "outputsize": min(int(limit), 5000), + "apikey": api_key, + "format": "JSON", + "dp": "4", + } + if before_time: + end_dt = datetime.fromtimestamp(int(before_time)) + params["end_date"] = end_dt.strftime("%Y-%m-%d %H:%M:%S") + + url = "https://api.twelvedata.com/time_series" + + for attempt in range(_MAX_ATTEMPTS): + try: + resp = requests.get(url, params=params, timeout=20) + data = resp.json() + break + except Exception as e: + if attempt + 1 < _MAX_ATTEMPTS and _is_transient(e): + delay = min(_BACKOFF_CAP_SEC, _BACKOFF_BASE_SEC * (2 ** attempt)) + logger.debug( + "TwelveData transient error %s/%s tf=%s (attempt %s/%s): %s", + symbol, exchange, timeframe, attempt + 1, _MAX_ATTEMPTS, e, + ) + time.sleep(delay) + continue + logger.warning("TwelveData request failed %s/%s tf=%s: %s", symbol, exchange, timeframe, e) + return [] + else: + return [] + + if data.get("status") != "ok" or "values" not in data: + code = data.get("code", "") + msg = data.get("message", str(data)) + if code == 429 or "API credits" in msg or "minute limit" in msg: + logger.warning("TwelveData rate limit for %s/%s: %s", symbol, exchange, msg) + else: + logger.warning("TwelveData error %s/%s tf=%s: %s", symbol, exchange, timeframe, msg) + return [] + + out: List[Dict[str, Any]] = [] + for v in data["values"]: + try: + dt_str = v.get("datetime", "") + for fmt in ("%Y-%m-%d %H:%M:%S", "%Y-%m-%d"): + try: + ts = int(datetime.strptime(dt_str, fmt).timestamp()) + break + except ValueError: + continue + else: + continue + o = float(v["open"]) + h = float(v["high"]) + low = float(v["low"]) + c = float(v["close"]) + vol = float(v.get("volume") or 0) + if o == 0 and c == 0: + continue + out.append({ + "time": ts, + "open": round(o, 4), + "high": round(h, 4), + "low": round(low, 4), + "close": round(c, 4), + "volume": round(vol, 2), + }) + except Exception: + continue + + out.sort(key=lambda x: x["time"]) + logger.debug("TwelveData returned %d bars for %s/%s tf=%s", len(out), symbol, exchange, timeframe) + return out + + +# --------------------------------------------------------------------------- +# yfinance helpers (globally accessible — Yahoo CDN) +# --------------------------------------------------------------------------- + +def yf_symbol_from_tencent(tencent_code: str, is_hk: bool) -> str: + """Convert Tencent-style code (SH600519 / SZ000001 / HK00700) to yfinance ticker.""" + c = (tencent_code or "").strip().upper() + if is_hk: + num = c.replace("HK", "") + if num.isdigit(): + return str(int(num)).zfill(4) + ".HK" + return num + ".HK" + if c.startswith("SH"): + return c[2:] + ".SS" + if c.startswith("SZ"): + return c[2:] + ".SZ" + digits = c.lstrip("SHSZ") + if digits.startswith("6"): + return digits + ".SS" + return digits + ".SZ" + + +_YF_INTERVAL_MAP = { + "1m": "1m", + "5m": "5m", + "15m": "15m", + "30m": "30m", + "1H": "1h", + "4H": "1h", + "1D": "1d", + "1W": "1wk", +} + +_YF_DAYS_MAP = { + "1m": lambda lim: min(7, max(2, (lim // 240) + 2)), + "5m": lambda lim: min(60, max(3, (lim // 48) + 3)), + "15m": lambda lim: min(60, max(3, (lim // 16) + 3)), + "30m": lambda lim: min(60, max(5, (lim // 8) + 5)), + "1H": lambda lim: min(730, max(8, (lim // 4) + 8)), + "4H": lambda lim: min(730, max(20, lim + 10)), + "1D": lambda lim: min(3650, lim + 10), + "1W": lambda lim: min(3650, lim * 7 + 30), +} + + +def _bars_from_yfinance_df(df: Any) -> List[Dict[str, Any]]: + """Convert a yfinance DataFrame (with DatetimeIndex or Date/Datetime column) to bar dicts.""" + if df is None or getattr(df, "empty", True): + return [] + df = df.reset_index() + time_col = None + for candidate in ("Datetime", "Date", "index"): + if candidate in df.columns: + time_col = candidate + break + if time_col is None: + return [] + out: List[Dict[str, Any]] = [] + for _, row in df.iterrows(): + try: + tv = row[time_col] + if hasattr(tv, "timestamp"): + ts = int(tv.timestamp()) + else: + continue + o, h, low, c, v = ( + float(row["Open"]), + float(row["High"]), + float(row["Low"]), + float(row["Close"]), + float(row["Volume"]), + ) + if o == 0 and c == 0: + continue + out.append({ + "time": ts, + "open": round(o, 4), + "high": round(h, 4), + "low": round(low, 4), + "close": round(c, 4), + "volume": round(v, 2), + }) + except Exception: + continue + out.sort(key=lambda x: x["time"]) + return out + + +def fetch_yfinance_klines( + *, + is_hk: bool, + tencent_code: str, + timeframe: str, + limit: int, + before_time: Optional[int], +) -> List[Dict[str, Any]]: + """Fetch K-lines via yfinance for CN/HK stocks. Globally accessible, no API key needed.""" + try: + import yfinance as yf + except ImportError: + logger.debug("yfinance not installed; skipping yfinance K-lines") + return [] + + interval = _YF_INTERVAL_MAP.get(timeframe) + if not interval: + return [] + + yf_sym = yf_symbol_from_tencent(tencent_code, is_hk) + effective_limit = limit * 4 if timeframe == "4H" else limit + days_func = _YF_DAYS_MAP.get(timeframe, lambda x: x + 10) + days = days_func(effective_limit) + + end = datetime.fromtimestamp(int(before_time)) if before_time else datetime.now() + start = end - timedelta(days=days) + + df: Any = None + for attempt in range(_MAX_ATTEMPTS): + try: + ticker = yf.Ticker(yf_sym) + df = ticker.history( + start=start.strftime("%Y-%m-%d"), + end=(end + timedelta(days=1)).strftime("%Y-%m-%d"), + interval=interval, + ) + break + except Exception as e: + if attempt + 1 < _MAX_ATTEMPTS and _is_transient(e): + delay = min(_BACKOFF_CAP_SEC, _BACKOFF_BASE_SEC * (2 ** attempt)) + logger.debug( + "yfinance transient error %s tf=%s (attempt %s/%s), retry in %.1fs: %s", + yf_sym, timeframe, attempt + 1, _MAX_ATTEMPTS, delay, e, + ) + time.sleep(delay) + continue + logger.warning("yfinance K-line failed %s tf=%s: %s", yf_sym, timeframe, e) + return [] + + bars = _bars_from_yfinance_df(df) + if timeframe == "4H" and bars: + bars = _merge_every_n_sorted_bars(bars, 4) + logger.debug("yfinance returned %d bars for %s tf=%s", len(bars), yf_sym, timeframe) + return bars + + +# --------------------------------------------------------------------------- +# AkShare helpers (Eastmoney — unreliable from overseas, used as last resort) +# --------------------------------------------------------------------------- + +def _minute_period_str(timeframe: str) -> Optional[str]: + return {"1m": "1", "5m": "5", "15m": "15", "30m": "30", "1H": "60", "4H": "60"}.get(timeframe) + + +def _min_bar_window(timeframe: str, limit: int, before_time: Optional[int]) -> tuple[str, str]: + _ = (timeframe, limit) + end = datetime.fromtimestamp(int(before_time)) if before_time else datetime.now() + start = end - timedelta(days=16) + fmt = "%Y-%m-%d %H:%M:%S" + return start.strftime(fmt), end.strftime(fmt) + + +def _bars_from_ak_min_df(df: Any) -> List[Dict[str, Any]]: + if df is None or getattr(df, "empty", True): + return [] + cols = [str(x) for x in df.columns] + time_c = "时间" if "时间" in cols else (cols[0] if len(cols) > 5 else None) + if not time_c: + return [] + + def _pick(name_zh: str, idx: int) -> str: + return name_zh if name_zh in cols else (cols[idx] if len(cols) > idx else "") + + c_open = _pick("开盘", 1) + c_close = _pick("收盘", 2) + c_high = _pick("最高", 3) + c_low = _pick("最低", 4) + c_vol = _pick("成交量", 5) + if not all((c_open, c_close, c_high, c_low, c_vol)): + return [] + + out: List[Dict[str, Any]] = [] + for _, row in df.iterrows(): + try: + t = pd.Timestamp(row[time_c]) + ts = int(t.timestamp()) + o, c, h, low, v = float(row[c_open]), float(row[c_close]), float(row[c_high]), float(row[c_low]), float(row[c_vol]) + out.append({ + "time": ts, + "open": round(o, 4), + "high": round(h, 4), + "low": round(low, 4), + "close": round(c, 4), + "volume": round(v, 2), + }) + except Exception: + continue + out.sort(key=lambda x: x["time"]) + return out + + +def _merge_every_n_sorted_bars(bars: List[Dict[str, Any]], n: int) -> List[Dict[str, Any]]: + if n <= 1 or len(bars) < n: + return bars + out: List[Dict[str, Any]] = [] + i = 0 + while i + n <= len(bars): + chunk = bars[i : i + n] + out.append({ + "time": chunk[0]["time"], + "open": chunk[0]["open"], + "high": max(b["high"] for b in chunk), + "low": min(b["low"] for b in chunk), + "close": chunk[-1]["close"], + "volume": round(sum(b["volume"] for b in chunk), 2), + }) + i += n + return out + + +def fetch_akshare_minute_klines( + *, + is_hk: bool, + tencent_code: str, + timeframe: str, + limit: int, + before_time: Optional[int], +) -> List[Dict[str, Any]]: + p = _minute_period_str(timeframe) + if p is None: + return [] + try: + import akshare as ak # type: ignore + except ImportError: + logger.debug("akshare not installed; skipping AkShare minute K-lines") + return [] + + sym = ak_hk_code_from_tencent(tencent_code) if is_hk else ak_a_code_from_tencent(tencent_code) + sd, ed = _min_bar_window(timeframe, limit, before_time) + adj = "" if p == "1" else "qfq" + + df: Any = None + for attempt in range(_MAX_ATTEMPTS): + try: + if is_hk: + df = ak.stock_hk_hist_min_em(symbol=sym, period=p, adjust=adj, start_date=sd, end_date=ed) + else: + df = ak.stock_zh_a_hist_min_em(symbol=sym, start_date=sd, end_date=ed, period=p, adjust=adj) + break + except Exception as e: + if attempt + 1 < _MAX_ATTEMPTS and _is_transient(e): + delay = min(_BACKOFF_CAP_SEC, _BACKOFF_BASE_SEC * (2 ** attempt)) + logger.debug( + "AkShare minute transient error %s tf=%s sym=%s (attempt %s/%s): %s", + tencent_code, timeframe, sym, attempt + 1, _MAX_ATTEMPTS, e, + ) + time.sleep(delay) + continue + logger.warning("AkShare minute K-line failed %s tf=%s sym=%s: %s", tencent_code, timeframe, sym, e) + return [] + + bars = _bars_from_ak_min_df(df) + if timeframe == "4H" and bars: + bars = _merge_every_n_sorted_bars(bars, 4) + return bars + + +def fetch_akshare_weekly_klines( + *, + is_hk: bool, + tencent_code: str, + limit: int, + before_time: Optional[int], +) -> List[Dict[str, Any]]: + try: + import akshare as ak # type: ignore + except ImportError: + return [] + + sym = ak_hk_code_from_tencent(tencent_code) if is_hk else ak_a_code_from_tencent(tencent_code) + end = datetime.fromtimestamp(int(before_time)) if before_time else datetime.now() + start = end - timedelta(days=max(int(limit or 300), 1) * 14 + 400) + start_s = start.strftime("%Y%m%d") + end_s = end.strftime("%Y%m%d") + + df: Any = None + for attempt in range(_MAX_ATTEMPTS): + try: + if is_hk: + df = ak.stock_hk_hist(symbol=sym, period="weekly", start_date=start_s, end_date=end_s, adjust="qfq") + else: + df = ak.stock_zh_a_hist(symbol=sym, period="weekly", start_date=start_s, end_date=end_s, adjust="qfq") + break + except Exception as e: + if attempt + 1 < _MAX_ATTEMPTS and _is_transient(e): + delay = min(_BACKOFF_CAP_SEC, _BACKOFF_BASE_SEC * (2 ** attempt)) + logger.debug( + "AkShare weekly transient error sym=%s (attempt %s/%s): %s", + sym, attempt + 1, _MAX_ATTEMPTS, e, + ) + time.sleep(delay) + continue + logger.warning("AkShare weekly K-line failed sym=%s: %s", sym, e) + return [] + + if df is None or getattr(df, "empty", True) or "日期" not in df.columns: + return [] + out: List[Dict[str, Any]] = [] + for _, row in df.iterrows(): + try: + t = pd.Timestamp(row["日期"]) + ts = int(t.timestamp()) + o, c, h, low = float(row["开盘"]), float(row["收盘"]), float(row["最高"]), float(row["最低"]) + v = float(row["成交量"]) + out.append({ + "time": ts, + "open": round(o, 4), + "high": round(h, 4), + "low": round(low, 4), + "close": round(c, 4), + "volume": round(v, 2), + }) + except Exception: + continue + out.sort(key=lambda x: x["time"]) + return out diff --git a/backend_api_python/app/data_sources/cn_hk_fundamentals.py b/backend_api_python/app/data_sources/cn_hk_fundamentals.py new file mode 100644 index 0000000..d3c4173 --- /dev/null +++ b/backend_api_python/app/data_sources/cn_hk_fundamentals.py @@ -0,0 +1,292 @@ +""" +A-share / HK share fundamentals — multi-tier fallback. + +Priority (when TWELVE_DATA_API_KEY configured): + Twelve Data /statistics + /profile → AkShare (Eastmoney, fragile overseas) + +Without API key: + AkShare only (may fail from overseas servers) + +Keys are aligned with MarketDataCollector expectations (pe_ratio, pb_ratio, etc.). +""" + +from __future__ import annotations + +import math +import time +from typing import Any, Dict, Optional + +import requests + +from app.data_sources.asia_stock_kline import ( + _get_twelve_data_api_key, + _td_symbol_and_exchange, + ak_a_code_from_tencent, + ak_hk_code_from_tencent, +) +from app.utils.logger import get_logger + +logger = get_logger(__name__) + +_TD_TIMEOUT = 15 +_TD_MAX_ATTEMPTS = 2 +_TD_BACKOFF_SEC = 2.0 + + +def _float_clean(x: Any) -> Optional[float]: + if x is None or x == "": + return None + try: + v = float(x) + if math.isnan(v) or math.isinf(v): + return None + return v + except (TypeError, ValueError): + return None + + +# --------------------------------------------------------------------------- +# Twelve Data fundamentals (globally stable, paid) +# --------------------------------------------------------------------------- + +def _td_request(endpoint: str, symbol: str, exchange: str) -> Optional[Dict[str, Any]]: + """Generic Twelve Data GET with retry.""" + api_key = _get_twelve_data_api_key() + if not api_key: + return None + url = f"https://api.twelvedata.com{endpoint}" + params = {"symbol": symbol, "exchange": exchange, "apikey": api_key} + for attempt in range(_TD_MAX_ATTEMPTS): + try: + resp = requests.get(url, params=params, timeout=_TD_TIMEOUT) + data = resp.json() + if data.get("status") == "error": + code = data.get("code", "") + msg = (data.get("message") or "")[:120] + if code == 429 or "API credits" in msg or "minute limit" in msg: + logger.warning("TwelveData rate limit on %s %s/%s: %s", endpoint, symbol, exchange, msg) + else: + logger.debug("TwelveData %s error %s/%s: %s", endpoint, symbol, exchange, msg) + return None + return data + except Exception as e: + if attempt + 1 < _TD_MAX_ATTEMPTS: + time.sleep(_TD_BACKOFF_SEC) + continue + logger.warning("TwelveData %s request failed %s/%s: %s", endpoint, symbol, exchange, e) + return None + + +def fetch_twelvedata_fundamental(tencent_code: str, is_hk: bool) -> Dict[str, Any]: + """Fetch PE/PB/PS/PEG/ROE/margin/market_cap/52w from Twelve Data /statistics.""" + symbol, exchange = _td_symbol_and_exchange(tencent_code, is_hk) + data = _td_request("/statistics", symbol, exchange) + if not data or "statistics" not in data: + return {} + + stats = data["statistics"] + result: Dict[str, Any] = {"source": "twelvedata"} + + vm = stats.get("valuations_metrics") or {} + result["market_cap"] = _float_clean(vm.get("market_capitalization")) + result["pe_ratio"] = _float_clean(vm.get("trailing_pe")) + result["forward_pe"] = _float_clean(vm.get("forward_pe")) + result["pb_ratio"] = _float_clean(vm.get("price_to_book_mrq")) + result["ps_ratio"] = _float_clean(vm.get("price_to_sales_ttm")) + result["peg"] = _float_clean(vm.get("peg_ratio")) + result["enterprise_value"] = _float_clean(vm.get("enterprise_value")) + + fin = stats.get("financials") or {} + result["profit_margin"] = _float_clean(fin.get("profit_margin")) + result["gross_margin"] = _float_clean(fin.get("gross_margin")) + result["operating_margin"] = _float_clean(fin.get("operating_margin")) + result["roe"] = _float_clean(fin.get("return_on_equity_ttm")) + result["roa"] = _float_clean(fin.get("return_on_assets_ttm")) + + ss = stats.get("stock_statistics") or {} + result["total_shares"] = _float_clean(ss.get("shares_outstanding")) + result["float_shares"] = _float_clean(ss.get("float_shares")) + + sp = stats.get("stock_price_summary") or {} + result["52w_high"] = _float_clean(sp.get("fifty_two_week_high")) + result["52w_low"] = _float_clean(sp.get("fifty_two_week_low")) + result["beta"] = _float_clean(sp.get("beta")) + + div = stats.get("dividends_and_splits") or {} + result["dividend_yield"] = _float_clean(div.get("trailing_annual_dividend_yield")) + result["dividend_rate"] = _float_clean(div.get("trailing_annual_dividend_rate")) + + non_null = sum(1 for v in result.values() if v is not None and v != "twelvedata") + logger.debug("TwelveData /statistics %s/%s: %d non-null fields", symbol, exchange, non_null) + return result + + +def fetch_twelvedata_profile(tencent_code: str, is_hk: bool) -> Dict[str, Any]: + """Fetch company info from Twelve Data /profile.""" + symbol, exchange = _td_symbol_and_exchange(tencent_code, is_hk) + data = _td_request("/profile", symbol, exchange) + if not data or not data.get("name"): + return {} + + out: Dict[str, Any] = {"source": "twelvedata"} + for src, dst in ( + ("name", "name"), + ("industry", "industry"), + ("sector", "sector"), + ("website", "website"), + ("description", "description"), + ("employees", "employees"), + ("name", "full_name"), + ): + v = data.get(src) + if v is not None and str(v).strip(): + out[dst] = str(v).strip() if isinstance(v, str) else v + + country = data.get("country") + if country: + out["country"] = country + + logger.debug("TwelveData /profile %s/%s: name=%s industry=%s", symbol, exchange, out.get("name"), out.get("industry")) + return out + + +# --------------------------------------------------------------------------- +# AkShare fundamentals (Eastmoney — fragile overseas, used as fallback) +# --------------------------------------------------------------------------- + +def _eastmoney_a_em_symbol(tencent_code: str) -> str: + c = ak_a_code_from_tencent(tencent_code) + c = (c or "").zfill(6) + if c.startswith("6"): + return "SH" + c + return "SZ" + c + + +def _individual_info_map(symbol_6: str) -> Dict[str, Any]: + out: Dict[str, Any] = {} + try: + import akshare as ak # type: ignore + df = ak.stock_individual_info_em(symbol=symbol_6) + except Exception as e: + logger.debug("stock_individual_info_em failed %s: %s", symbol_6, e) + return out + if df is None or getattr(df, "empty", True) or len(df.columns) < 2: + return out + kcol, vcol = df.columns[0], df.columns[1] + for _, row in df.iterrows(): + try: + k = str(row[kcol]).strip() + if k: + out[k] = row[vcol] + except Exception: + continue + return out + + +def fetch_cn_fundamental_akshare(tencent_code: str) -> Dict[str, Any]: + """PE/PB/PS, market cap, ROE proxy, EPS for A-share (best-effort).""" + sym6 = ak_a_code_from_tencent(tencent_code) + if not sym6: + return {} + result: Dict[str, Any] = {"source": "akshare_em"} + info = _individual_info_map(sym6) + if info: + result["market_cap"] = _float_clean(info.get("总市值")) + result["float_market_cap"] = _float_clean(info.get("流通市值")) + ind = info.get("行业") + if ind is not None and str(ind).strip(): + result["industry"] = str(ind).strip() + result["total_shares"] = _float_clean(info.get("总股本")) + result["float_shares"] = _float_clean(info.get("流通股")) + + em_sym = _eastmoney_a_em_symbol(tencent_code) + try: + import akshare as ak # type: ignore + vdf = ak.stock_zh_valuation_comparison_em(symbol=em_sym) + except Exception as e: + logger.debug("stock_zh_valuation_comparison_em failed %s: %s", em_sym, e) + vdf = None + + if vdf is not None and not vdf.empty and "代码" in vdf.columns: + hit = vdf[vdf["代码"].astype(str).str.replace(".0", "", regex=False).str.zfill(6) == sym6.zfill(6)] + if not hit.empty: + r = hit.iloc[0] + pe = _float_clean(r.get("市盈率-TTM")) + if pe is not None: + result["pe_ratio"] = pe + pb = _float_clean(r.get("市净率-MRQ")) + if pb is not None: + result["pb_ratio"] = pb + ps = _float_clean(r.get("市销率-TTM")) + if ps is not None: + result["ps_ratio"] = ps + peg = _float_clean(r.get("PEG")) + if peg is not None: + result["peg"] = peg + + return result + + +def fetch_hk_fundamental_akshare(tencent_code: str) -> Dict[str, Any]: + hk5 = ak_hk_code_from_tencent(tencent_code) + if not hk5: + return {} + result: Dict[str, Any] = {"source": "akshare_em"} + try: + import akshare as ak # type: ignore + df = ak.stock_hk_financial_indicator_em(symbol=hk5) + except Exception as e: + logger.debug("stock_hk_financial_indicator_em failed %s: %s", hk5, e) + return result + if df is None or df.empty: + return result + r = df.iloc[0] + result["pe_ratio"] = _float_clean(r.get("市盈率")) + result["pb_ratio"] = _float_clean(r.get("市净率")) + result["eps"] = _float_clean(r.get("基本每股收益(元)")) + result["roe"] = _float_clean(r.get("股东权益回报率(%)")) + result["profit_margin"] = _float_clean(r.get("销售净利率(%)")) + mcap = _float_clean(r.get("总市值(港元)")) or _float_clean(r.get("港股市值(港元)")) + if mcap is not None: + result["market_cap"] = mcap + result["dividend_yield"] = _float_clean(r.get("股息率TTM(%)")) + return result + + +def fetch_cn_company_extras(tencent_code: str) -> Dict[str, Any]: + sym6 = ak_a_code_from_tencent(tencent_code) + if not sym6: + return {} + info = _individual_info_map(sym6) + out: Dict[str, Any] = {} + if info.get("行业"): + out["industry"] = str(info["行业"]).strip() + if info.get("上市时间"): + out["ipo_date"] = str(info["上市时间"]).strip() + return out + + +def fetch_hk_company_extras(tencent_code: str) -> Dict[str, Any]: + hk5 = ak_hk_code_from_tencent(tencent_code) + if not hk5: + return {} + out: Dict[str, Any] = {} + try: + import akshare as ak # type: ignore + df = ak.stock_hk_company_profile_em(symbol=hk5) + except Exception as e: + logger.debug("stock_hk_company_profile_em failed %s: %s", hk5, e) + return out + if df is None or df.empty: + return out + r = df.iloc[0] + for key, col in ( + ("industry", "所属行业"), + ("ipo_date", "公司成立日期"), + ("website", "公司网址"), + ("full_name", "公司名称"), + ): + v = r.get(col) + if v is not None and str(v).strip(): + out[key] = str(v).strip() + return out diff --git a/backend_api_python/app/data_sources/cn_stock.py b/backend_api_python/app/data_sources/cn_stock.py new file mode 100644 index 0000000..af87ce0 --- /dev/null +++ b/backend_api_python/app/data_sources/cn_stock.py @@ -0,0 +1,99 @@ +""" +中国A股数据源 — 多层 fallback + +有 TWELVE_DATA_API_KEY: + 所有周期 → Twelve Data(主) → 腾讯日/周线 → yfinance → AkShare + +无 API Key: + 分钟/小时 → yfinance → AkShare + 日/周线 → 腾讯 fqkline → yfinance → AkShare +""" + +from __future__ import annotations + +from typing import Dict, List, Any, Optional + +from app.data_sources.base import BaseDataSource +from app.data_sources.tencent import normalize_cn_code, fetch_quote, parse_quote_to_ticker, fetch_kline, tencent_kline_rows_to_dicts +from app.data_sources.asia_stock_kline import ( + normalize_chart_timeframe, + fetch_twelvedata_klines, + fetch_yfinance_klines, + fetch_akshare_minute_klines, + fetch_akshare_weekly_klines, +) +from app.utils.logger import get_logger + +logger = get_logger(__name__) + + +class CNStockDataSource(BaseDataSource): + """A股数据源(TwelveData + Tencent + yfinance + AkShare)""" + + name = "CNStock/multi-source" + + def get_ticker(self, symbol: str) -> Dict[str, Any]: + code = normalize_cn_code(symbol) + parts = fetch_quote(code) + if not parts: + return {"last": 0, "symbol": code} + t = parse_quote_to_ticker(parts) + return { + "last": t.get("last", 0), + "change": t.get("change", 0), + "changePercent": t.get("changePercent", 0), + "high": t.get("high", 0), + "low": t.get("low", 0), + "open": t.get("open", 0), + "previousClose": t.get("previousClose", 0), + "name": t.get("name", ""), + "symbol": code, + } + + def get_kline( + self, + symbol: str, + timeframe: str, + limit: int, + before_time: Optional[int] = None, + ) -> List[Dict[str, Any]]: + code = normalize_cn_code(symbol) + tf = normalize_chart_timeframe(timeframe) + lim = max(int(limit or 300), 1) + + # Tier 1: Twelve Data (paid, most reliable) + rows = fetch_twelvedata_klines( + is_hk=False, tencent_code=code, timeframe=tf, limit=lim, before_time=before_time + ) + if rows: + return self.filter_and_limit(rows, limit=lim, before_time=before_time) + + # Tier 2: Tencent for daily/weekly (fast, free) + if tf in ("1D", "1W"): + tf_map = {"1D": "day", "1W": "week"} + period = tf_map.get(tf, "day") + raw_rows = fetch_kline(code, period=period, count=lim, adj="qfq") + out = tencent_kline_rows_to_dicts(raw_rows) + if out: + return self.filter_and_limit(out, limit=lim, before_time=before_time) + + # Tier 3: yfinance (works when Yahoo not rate-limited) + rows = fetch_yfinance_klines( + is_hk=False, tencent_code=code, timeframe=tf, limit=lim, before_time=before_time + ) + if rows: + return self.filter_and_limit(rows, limit=lim, before_time=before_time) + + # Tier 4: AkShare (fragile overseas, last resort) + if tf in ("1m", "5m", "15m", "30m", "1H", "4H"): + rows = fetch_akshare_minute_klines( + is_hk=False, tencent_code=code, timeframe=tf, limit=lim, before_time=before_time + ) + elif tf == "1W": + rows = fetch_akshare_weekly_klines( + is_hk=False, tencent_code=code, limit=lim, before_time=before_time + ) + else: + rows = [] + + return self.filter_and_limit(rows, limit=lim, before_time=before_time) diff --git a/backend_api_python/app/data_sources/factory.py b/backend_api_python/app/data_sources/factory.py index 826bf4d..b1bc719 100644 --- a/backend_api_python/app/data_sources/factory.py +++ b/backend_api_python/app/data_sources/factory.py @@ -52,6 +52,12 @@ class DataSourceFactory: if market == 'Crypto': from app.data_sources.crypto import CryptoDataSource return CryptoDataSource() + elif market == 'CNStock': + from app.data_sources.cn_stock import CNStockDataSource + return CNStockDataSource() + elif market == 'HKStock': + from app.data_sources.hk_stock import HKStockDataSource + return HKStockDataSource() elif market == 'USStock': from app.data_sources.us_stock import USStockDataSource return USStockDataSource() diff --git a/backend_api_python/app/data_sources/hk_stock.py b/backend_api_python/app/data_sources/hk_stock.py new file mode 100644 index 0000000..c0e5112 --- /dev/null +++ b/backend_api_python/app/data_sources/hk_stock.py @@ -0,0 +1,99 @@ +""" +港股/H股数据源 — 多层 fallback + +有 TWELVE_DATA_API_KEY: + 所有周期 → Twelve Data(主) → 腾讯日/周线 → yfinance → AkShare + +无 API Key: + 分钟/小时 → yfinance → AkShare + 日/周线 → 腾讯 fqkline → yfinance → AkShare +""" + +from __future__ import annotations + +from typing import Dict, List, Any, Optional + +from app.data_sources.base import BaseDataSource +from app.data_sources.tencent import normalize_hk_code, fetch_quote, parse_quote_to_ticker, fetch_kline, tencent_kline_rows_to_dicts +from app.data_sources.asia_stock_kline import ( + normalize_chart_timeframe, + fetch_twelvedata_klines, + fetch_yfinance_klines, + fetch_akshare_minute_klines, + fetch_akshare_weekly_klines, +) +from app.utils.logger import get_logger + +logger = get_logger(__name__) + + +class HKStockDataSource(BaseDataSource): + """港股/H股数据源(TwelveData + Tencent + yfinance + AkShare)""" + + name = "HKStock/multi-source" + + def get_ticker(self, symbol: str) -> Dict[str, Any]: + code = normalize_hk_code(symbol) + parts = fetch_quote(code) + if not parts: + return {"last": 0, "symbol": code} + t = parse_quote_to_ticker(parts) + return { + "last": t.get("last", 0), + "change": t.get("change", 0), + "changePercent": t.get("changePercent", 0), + "high": t.get("high", 0), + "low": t.get("low", 0), + "open": t.get("open", 0), + "previousClose": t.get("previousClose", 0), + "name": t.get("name", ""), + "symbol": code, + } + + def get_kline( + self, + symbol: str, + timeframe: str, + limit: int, + before_time: Optional[int] = None, + ) -> List[Dict[str, Any]]: + code = normalize_hk_code(symbol) + tf = normalize_chart_timeframe(timeframe) + lim = max(int(limit or 300), 1) + + # Tier 1: Twelve Data (paid, most reliable) + rows = fetch_twelvedata_klines( + is_hk=True, tencent_code=code, timeframe=tf, limit=lim, before_time=before_time + ) + if rows: + return self.filter_and_limit(rows, limit=lim, before_time=before_time) + + # Tier 2: Tencent for daily/weekly (fast, free) + if tf in ("1D", "1W"): + tf_map = {"1D": "day", "1W": "week"} + period = tf_map.get(tf, "day") + raw_rows = fetch_kline(code, period=period, count=lim, adj="qfq") + out = tencent_kline_rows_to_dicts(raw_rows) + if out: + return self.filter_and_limit(out, limit=lim, before_time=before_time) + + # Tier 3: yfinance (works when Yahoo not rate-limited) + rows = fetch_yfinance_klines( + is_hk=True, tencent_code=code, timeframe=tf, limit=lim, before_time=before_time + ) + if rows: + return self.filter_and_limit(rows, limit=lim, before_time=before_time) + + # Tier 4: AkShare (fragile overseas, last resort) + if tf in ("1m", "5m", "15m", "30m", "1H", "4H"): + rows = fetch_akshare_minute_klines( + is_hk=True, tencent_code=code, timeframe=tf, limit=lim, before_time=before_time + ) + elif tf == "1W": + rows = fetch_akshare_weekly_klines( + is_hk=True, tencent_code=code, limit=lim, before_time=before_time + ) + else: + rows = [] + + return self.filter_and_limit(rows, limit=lim, before_time=before_time) diff --git a/backend_api_python/app/data_sources/polymarket.py b/backend_api_python/app/data_sources/polymarket.py index 9aeace3..34af1f2 100644 --- a/backend_api_python/app/data_sources/polymarket.py +++ b/backend_api_python/app/data_sources/polymarket.py @@ -49,19 +49,17 @@ class PolymarketDataSource: if cached: return cached - # 从真实API获取 - 获取多个分类的数据以确保多样性 + # 从真实API获取 all_markets = [] if category and category != "all": - # 如果指定了类别,只获取该类别的数据 + # 获取所有事件,然后按类别过滤 markets = self._fetch_markets_from_api(category, limit * 2) all_markets.extend(markets) else: - # 如果没有指定类别或指定了"all",获取多个分类的数据 - categories_to_fetch = ["crypto", "politics", "economics", "sports"] - for cat in categories_to_fetch: - markets = self._fetch_markets_from_api(cat, limit // len(categories_to_fetch) + 10) - all_markets.extend(markets) + # 获取所有事件(不指定类别,避免重复请求) + markets = self._fetch_from_gamma_api(category=None, limit=100) + all_markets.extend(markets) # 去重(按market_id) seen = set() diff --git a/backend_api_python/app/data_sources/tencent.py b/backend_api_python/app/data_sources/tencent.py new file mode 100644 index 0000000..f50c006 --- /dev/null +++ b/backend_api_python/app/data_sources/tencent.py @@ -0,0 +1,238 @@ +""" +Tencent market data helpers (no API key). + +Provides: +- Quote: https://qt.gtimg.cn/q=sh600519 / sz000001 / hk00700 +- Kline: https://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param=CODE,PERIOD,,,COUNT,ADJ + +This is used as a stable alternative when Yahoo/yfinance gets rate-limited. +""" + +from __future__ import annotations + +from datetime import datetime +from typing import Any, Dict, List, Optional, Tuple + +import requests + +from app.data_sources.rate_limiter import get_request_headers, retry_with_backoff, get_tencent_limiter +from app.utils.logger import get_logger + +logger = get_logger(__name__) + + +def normalize_cn_code(symbol: str) -> str: + """ + Normalize A-share symbol to Tencent code: sh600519 / sz000001. + Accepts: + - 600519 / 600519.SH / 600519.SS + - 000001 / 000001.SZ + """ + s = (symbol or "").strip().upper() + if not s: + return s + if s.endswith(".SH"): + s = s[:-3] + return f"SH{s}" + if s.endswith(".SS"): + s = s[:-3] + return f"SH{s}" + if s.endswith(".SZ"): + s = s[:-3] + return f"SZ{s}" + + if s.isdigit() and len(s) == 6: + return ("SH" + s) if s.startswith("6") else ("SZ" + s) + + return s + + +def normalize_hk_code(symbol: str) -> str: + """ + Normalize HK stock symbol to Tencent code: hk00700 (5 digits). + Accepts: + - 700 / 0700 / 00700.HK / 0700.HK + """ + s = (symbol or "").strip().upper() + if not s: + return s + if s.endswith(".HK"): + s = s[:-3] + if s.isdigit(): + return "HK" + s.zfill(5) + # If user already passed HKxxxxx + if s.startswith("HK") and s[2:].isdigit(): + return "HK" + s[2:].zfill(5) + return s + + +def _lower_code(code: str) -> str: + return (code or "").strip().lower() + + +@retry_with_backoff(max_attempts=3, base_delay=1.2, max_delay=8.0, exceptions=(Exception,)) +def fetch_quote(code: str, timeout: int = 8) -> Optional[List[str]]: + """ + Returns the raw '~' split array from qt.gtimg.cn, or None. + """ + c = _lower_code(code) + if not c: + return None + + limiter = get_tencent_limiter() + limiter.wait() + url = f"https://qt.gtimg.cn/q={c}" + resp = requests.get(url, headers=get_request_headers(referer="https://qt.gtimg.cn/"), timeout=timeout) + # Tencent quote is often GBK encoded + try: + resp.encoding = "gbk" + except Exception: + pass + + text = (resp.text or "").strip() + if not text or "~" not in text: + return None + + # Format: v_sh600519="1~NAME~CODE~LAST~PREV~OPEN~..." + try: + start = text.index('="') + 2 + end = text.rindex('"') + payload = text[start:end] + except Exception: + return None + + parts = payload.split("~") + return parts if len(parts) > 5 else None + + +def parse_quote_to_ticker(parts: List[str]) -> Dict[str, Any]: + """ + Best-effort conversion to a unified ticker dict. + """ + def _f(i: int, default: float = 0.0) -> float: + try: + v = parts[i] + if v is None or v == "": + return default + return float(v) + except Exception: + return default + + name = (parts[1] or "").strip() if len(parts) > 1 else "" + symbol = (parts[2] or "").strip() if len(parts) > 2 else "" + last_ = _f(3, 0.0) + prev = _f(4, 0.0) + open_ = _f(5, 0.0) + + change = round(last_ - prev, 4) if prev else 0.0 + change_pct = round(change / prev * 100, 2) if prev else 0.0 + + # Indices are not fully consistent across markets; keep conservative. + high = _f(33, last_) if len(parts) > 33 else last_ + low = _f(34, last_) if len(parts) > 34 else last_ + + return { + "symbol": symbol, + "name": name, + "last": last_, + "change": change, + "changePercent": change_pct, + "high": high, + "low": low, + "open": open_ or last_, + "previousClose": prev, + "raw": parts, + } + + +def parse_tencent_kline_time(ds: str) -> Optional[int]: + """Parse Tencent fqkline first column to Unix seconds (local parse, matches prior chart behavior).""" + raw = str(ds or "").strip() + if not raw: + return None + for fmt in ("%Y-%m-%d %H:%M:%S", "%Y-%m-%d %H:%M", "%Y-%m-%d", "%Y/%m/%d"): + try: + return int(datetime.strptime(raw, fmt).timestamp()) + except ValueError: + continue + try: + ts = int(float(raw)) + if ts > 10**12: + ts = int(ts / 1000) + return ts + except Exception: + return None + + +def tencent_kline_rows_to_dicts(rows: List[Any]) -> List[Dict[str, Any]]: + """Convert raw fqkline rows to chart dicts; ignores corporate-action tail objects on HK rows.""" + out: List[Dict[str, Any]] = [] + for r in rows: + if not isinstance(r, (list, tuple)) or len(r) < 6: + continue + ts = parse_tencent_kline_time(r[0]) + if ts is None: + continue + try: + o, c, h, low, vol = float(r[1]), float(r[2]), float(r[3]), float(r[4]), float(r[5]) + except (TypeError, ValueError): + continue + out.append( + { + "time": ts, + "open": round(o, 4), + "high": round(h, 4), + "low": round(low, 4), + "close": round(c, 4), + "volume": round(vol, 2), + } + ) + return out + + +@retry_with_backoff(max_attempts=3, base_delay=1.2, max_delay=8.0, exceptions=(Exception,)) +def fetch_kline(code: str, period: str, count: int = 300, adj: str = "qfq", timeout: int = 10) -> List[List[str]]: + """ + Fetch kline arrays from Tencent. + + period examples: + - day, week, month (supported by Tencent fqkline) + + Note: Minute periods (m1/m5/…) return **bad params** on this endpoint; use AkShare in ``asia_stock_kline``. + """ + c = _lower_code(code) + if not c: + return [] + + limiter = get_tencent_limiter() + limiter.wait() + + url = "https://web.ifzq.gtimg.cn/appstock/app/fqkline/get" + params = {"param": f"{c},{period},,,{int(count)},{adj}"} + resp = requests.get(url, headers=get_request_headers(referer="https://gu.qq.com/"), params=params, timeout=timeout) + data = resp.json() if resp.text else {} + if not isinstance(data, dict) or int(data.get("code", 0)) != 0: + return [] + root = (data.get("data") or {}).get(c) + if not isinstance(root, dict): + return [] + + # Data key variants: + # - A-share: qfqday / qfqweek / qfqm1 ... + # - HK: day / week / m1 ... + candidates = [] + if adj: + candidates.append(f"{adj}{period}") + candidates.append(period) + + for key in candidates: + arr = root.get(key) + if isinstance(arr, list) and arr: + return arr + + # Fallback: search any key that endswith period and is a list + for k, v in root.items(): + if isinstance(v, list) and v and str(k).lower().endswith(str(period).lower()): + return v + return [] + diff --git a/backend_api_python/app/data_sources/us_stock.py b/backend_api_python/app/data_sources/us_stock.py index 2ac1e77..b1eea88 100644 --- a/backend_api_python/app/data_sources/us_stock.py +++ b/backend_api_python/app/data_sources/us_stock.py @@ -88,7 +88,11 @@ class USStockDataSource(BaseDataSource): 'previousClose': quote.get('pc', 0) # 昨收价 } except Exception as e: - logger.warning(f"Finnhub quote failed for {symbol}: {e}") + msg = str(e).lower() + if "403" in str(e) or "don't have access" in msg or "no access" in msg: + logger.debug(f"Finnhub quote skipped (no access): {symbol}: {e}") + else: + logger.warning(f"Finnhub quote failed for {symbol}: {e}") # 降级使用 yfinance try: @@ -260,7 +264,12 @@ class USStockDataSource(BaseDataSource): )) # logger.info(f"Finnhub 返回 {len(klines)} 条数据") except Exception as e: - logger.error(f"Finnhub fetch failed: {e}") + msg = str(e).lower() + # Free tier / plan: 403 "You don't have access to this resource" is common; avoid ERROR spam. + if "403" in str(e) or "don't have access" in msg or "no access" in msg: + logger.debug(f"Finnhub candles skipped (no access): {symbol}: {e}") + else: + logger.warning(f"Finnhub fetch failed: {e}") return klines diff --git a/backend_api_python/app/routes/global_market.py b/backend_api_python/app/routes/global_market.py index 0b93802..9daac27 100644 --- a/backend_api_python/app/routes/global_market.py +++ b/backend_api_python/app/routes/global_market.py @@ -1674,6 +1674,77 @@ def _fetch_stock_opportunity_prices() -> List[Dict[str, Any]]: return [] +def _fetch_local_stock_opportunity_prices(market: str, limit: int = 15) -> List[Dict[str, Any]]: + """ + Fetch CN/HK stock prices for opportunity scanning. + + For overseas servers we prefer the project's Tencent-based ticker path, which is + typically more reachable/stable than some Eastmoney/AkShare endpoints. + """ + m = str(market or "").strip() + if m not in ("CNStock", "HKStock"): + return [] + + fallback_symbols = { + "CNStock": [ + {"symbol": "600519", "name": "贵州茅台"}, + {"symbol": "000001", "name": "平安银行"}, + {"symbol": "300750", "name": "宁德时代"}, + {"symbol": "601318", "name": "中国平安"}, + {"symbol": "600036", "name": "招商银行"}, + {"symbol": "002594", "name": "比亚迪"}, + {"symbol": "600276", "name": "恒瑞医药"}, + {"symbol": "601899", "name": "紫金矿业"}, + ], + "HKStock": [ + {"symbol": "00700", "name": "腾讯控股"}, + {"symbol": "09988", "name": "阿里巴巴-W"}, + {"symbol": "03690", "name": "美团-W"}, + {"symbol": "01810", "name": "小米集团-W"}, + {"symbol": "01299", "name": "友邦保险"}, + {"symbol": "00939", "name": "建设银行"}, + {"symbol": "02318", "name": "中国平安"}, + {"symbol": "09618", "name": "京东集团-SW"}, + ], + } + + try: + from app.data.market_symbols_seed import get_hot_symbols + from app.data_sources import DataSourceFactory + from app.services.symbol_name import resolve_symbol_name + + symbols = get_hot_symbols(m, limit=max(int(limit or 15), 1)) or fallback_symbols.get(m, []) + source = DataSourceFactory.get_source(m) + + result = [] + for item in symbols[: max(int(limit or 15), 1)]: + try: + symbol = str(item.get("symbol") or "").strip() + if not symbol: + continue + ticker = source.get_ticker(symbol) or {} + last = _safe_float(ticker.get("last") or ticker.get("close") or ticker.get("price")) + if last <= 0: + continue + change_pct = ticker.get("changePercent") + if change_pct is None: + prev_close = _safe_float(ticker.get("previousClose")) + change_pct = ((last - prev_close) / prev_close * 100.0) if prev_close > 0 else 0.0 + result.append({ + "symbol": symbol, + "name": (item.get("name") or resolve_symbol_name(m, symbol) or symbol).strip(), + "price": round(last, 4), + "change": round(_safe_float(change_pct), 2), + "market": m, + }) + except Exception as e: + logger.debug(f"Failed to fetch {m} opportunity price {item.get('symbol')}: {e}") + return result + except Exception as e: + logger.error(f"Failed to fetch {m} opportunity prices: {e}") + return [] + + def _analyze_opportunities_crypto(opportunities: list): """Scan crypto market for trading opportunities.""" crypto_data = _get_cached("crypto_prices") @@ -1800,6 +1871,75 @@ def _analyze_opportunities_stocks(opportunities: list): }) +def _analyze_opportunities_local_stocks(opportunities: list, market: str): + """Scan CN/HK stocks for trading opportunities.""" + m = str(market or "").strip() + if m not in ("CNStock", "HKStock"): + return + + cache_key = "cn_stock_opportunity_prices" if m == "CNStock" else "hk_stock_opportunity_prices" + stock_data = _get_cached(cache_key) + if not stock_data: + stock_data = _fetch_local_stock_opportunity_prices(m) + if stock_data: + _set_cached(cache_key, stock_data, 3600) + + if not stock_data: + logger.warning(f"_analyze_opportunities_local_stocks: No {m} data available") + return + + logger.debug(f"_analyze_opportunities_local_stocks: Analyzing {len(stock_data)} {m} stocks") + strong_th = 7.0 if m == "CNStock" else 6.0 + medium_th = 3.0 if m == "CNStock" else 2.5 + market_cn = "A股" if m == "CNStock" else "港股" + + for stock in stock_data: + change = _safe_float(stock.get("change", 0)) + symbol = stock.get("symbol", "") + name = stock.get("name", "") + price = _safe_float(stock.get("price", 0)) + + signal = None + strength = "medium" + reason = "" + impact = "neutral" + + if change > strong_th: + signal = "overbought" + strength = "strong" + reason = f"{market_cn}日涨幅{change:.1f}%,短期涨幅较大,注意回调风险" + impact = "bearish" + elif change > medium_th: + signal = "bullish_momentum" + strength = "medium" + reason = f"{market_cn}日涨幅{change:.1f}%,上涨动能较强" + impact = "bullish" + elif change < -strong_th: + signal = "oversold" + strength = "strong" + reason = f"{market_cn}日跌幅{abs(change):.1f}%,可能超卖反弹" + impact = "bullish" + elif change < -medium_th: + signal = "bearish_momentum" + strength = "medium" + reason = f"{market_cn}日跌幅{abs(change):.1f}%,下跌趋势明显" + impact = "bearish" + + if signal: + opportunities.append({ + "symbol": symbol, + "name": name, + "price": price, + "change_24h": change, + "signal": signal, + "strength": strength, + "reason": reason, + "impact": impact, + "market": m, + "timestamp": int(time.time()) + }) + + def _analyze_opportunities_forex(opportunities: list): """Scan forex pairs for trading opportunities.""" forex_data = _get_cached("forex_pairs") @@ -1915,7 +2055,7 @@ def _analyze_opportunities_polymarket(opportunities: list): @login_required def trading_opportunities(): """ - Scan for trading opportunities across Crypto, US Stocks, and Forex. + Scan for trading opportunities across Crypto, US Stocks, CN/HK Stocks, and Forex. Note: Prediction Markets are excluded as they have their own dedicated page. Cached for 1 hour. Pass ?force=true to skip cache. """ @@ -1945,7 +2085,23 @@ def trading_opportunities(): except Exception as e: logger.error(f"Failed to analyze stock opportunities: {e}", exc_info=True) - # 3) Forex + # 3) CN Stocks + try: + _analyze_opportunities_local_stocks(opportunities, "CNStock") + cn_count = len([o for o in opportunities if o.get("market") == "CNStock"]) + logger.info(f"Trading opportunities: found {cn_count} CN stock opportunities") + except Exception as e: + logger.error(f"Failed to analyze CN stock opportunities: {e}", exc_info=True) + + # 4) HK Stocks + try: + _analyze_opportunities_local_stocks(opportunities, "HKStock") + hk_count = len([o for o in opportunities if o.get("market") == "HKStock"]) + logger.info(f"Trading opportunities: found {hk_count} HK stock opportunities") + except Exception as e: + logger.error(f"Failed to analyze HK stock opportunities: {e}", exc_info=True) + + # 5) Forex try: _analyze_opportunities_forex(opportunities) forex_count = len([o for o in opportunities if o.get("market") == "Forex"]) @@ -1959,7 +2115,14 @@ def trading_opportunities(): # Sort by absolute change descending opportunities.sort(key=lambda x: abs(x.get("change_24h", 0)), reverse=True) - logger.info(f"Trading opportunities: total {len(opportunities)} opportunities found (Crypto: {len([o for o in opportunities if o.get('market') == 'Crypto'])}, USStock: {len([o for o in opportunities if o.get('market') == 'USStock'])}, Forex: {len([o for o in opportunities if o.get('market') == 'Forex'])})") + logger.info( + f"Trading opportunities: total {len(opportunities)} opportunities found " + f"(Crypto: {len([o for o in opportunities if o.get('market') == 'Crypto'])}, " + f"USStock: {len([o for o in opportunities if o.get('market') == 'USStock'])}, " + f"CNStock: {len([o for o in opportunities if o.get('market') == 'CNStock'])}, " + f"HKStock: {len([o for o in opportunities if o.get('market') == 'HKStock'])}, " + f"Forex: {len([o for o in opportunities if o.get('market') == 'Forex'])})" + ) _set_cached("trading_opportunities", opportunities, 3600) diff --git a/backend_api_python/app/routes/market.py b/backend_api_python/app/routes/market.py index bbf28e0..d54171b 100644 --- a/backend_api_python/app/routes/market.py +++ b/backend_api_python/app/routes/market.py @@ -83,7 +83,8 @@ def get_public_config(): @market_bp.route('/types', methods=['GET']) def get_market_types(): """Return supported market types for the add-watchlist modal.""" - desired_order = ['USStock', 'Crypto', 'Forex', 'Futures'] + # Keep a stable UX order; add CN/HK stocks near US stocks. + desired_order = ['USStock', 'CNStock', 'HKStock', 'Crypto', 'Forex', 'Futures'] order_rank = {v: i for i, v in enumerate(desired_order)} def _normalize_item(x): diff --git a/backend_api_python/app/routes/quick_trade.py b/backend_api_python/app/routes/quick_trade.py index e3a5404..ca019b2 100644 --- a/backend_api_python/app/routes/quick_trade.py +++ b/backend_api_python/app/routes/quick_trade.py @@ -29,11 +29,69 @@ from app.utils.credential_crypto import decrypt_credential_blob logger = get_logger(__name__) +import re as _re + +_FRIENDLY_ERROR_PATTERNS = [ + # Insufficient balance / margin + (_re.compile(r"INSUFFICIENT[_ ]?AVAILABLE|insufficient.{0,20}(balance|margin|fund)|margin.{0,30}while available|not enough|资金不足", _re.IGNORECASE), + "quickTrade.errorHints.insufficientBalance"), + # Invalid size / quantity + (_re.compile(r"invalid.{0,10}size|invalid.{0,10}(qty|quantity|amount|volume)|Order size.{0,20}(too small|below|minimum)|MIN_NOTIONAL", _re.IGNORECASE), + "quickTrade.errorHints.invalidSize"), + # Invalid price + (_re.compile(r"invalid.{0,10}price|price.{0,20}(deviate|deviation|exceed|out of range)", _re.IGNORECASE), + "quickTrade.errorHints.invalidPrice"), + # Rate limit + (_re.compile(r"rate.?limit|too many request|429|REQUEST_FREQUENCY", _re.IGNORECASE), + "quickTrade.errorHints.rateLimit"), + # API key / permission + (_re.compile(r"(invalid|wrong|expired).{0,10}(api.?key|key|signature|sign)|NOT_LOGIN|UNAUTHORIZED|permission.{0,10}denied|IP.{0,20}(not|whitelist|restrict)", _re.IGNORECASE), + "quickTrade.errorHints.authError"), + # Position / reduce-only conflict + (_re.compile(r"reduce.?only|position.{0,20}(not exist|not found|side)|POSITION_NOT_EXIST", _re.IGNORECASE), + "quickTrade.errorHints.positionConflict"), + # Network / timeout + (_re.compile(r"timeout|timed? ?out|connect|ECONNREFUSED|SSL|ConnectionError|RemoteDisconnected", _re.IGNORECASE), + "quickTrade.errorHints.networkError"), + # Exchange maintenance + (_re.compile(r"maintenance|unavailable|system.{0,10}(busy|error|upgrade)|suspend|暂停", _re.IGNORECASE), + "quickTrade.errorHints.exchangeMaintenance"), +] + + +def _parse_trade_error_hint(error_str: str) -> str: + """Return a i18n key hint for common exchange trading errors, or empty string.""" + s = str(error_str or "") + for pattern, hint_key in _FRIENDLY_ERROR_PATTERNS: + if pattern.search(s): + return hint_key + return "" + quick_trade_bp = Blueprint('quick_trade', __name__) # ────────── helpers ────────── +def _symbols_match_quick_trade(user_symbol: str, position_symbol: str) -> bool: + """Match UI symbol (e.g. ETH/USDT) with exchange-native ids (e.g. ETH_USDT, ETH-USDT-SWAP).""" + + def norm(x: str) -> str: + return (x or "").strip().upper().replace("/", "").replace("-", "").replace("_", "") + + a, b = norm(user_symbol), norm(position_symbol) + if not a or not b: + return False + if a == b: + return True + for suf in ("SWAP", "PERPETUAL", "PERP"): + if b.endswith(suf) and a == b[: -len(suf)]: + return True + if a.endswith(suf) and b == a[: -len(suf)]: + return True + # Substring fallback for less standard ids (min length avoids ETH vs ETHW false positives) + return (len(a) >= 6 and a in b) or (len(b) >= 6 and b in a) + + def _convert_usdt_to_base_qty(client, symbol: str, usdt_amount: float, market_type: str, limit_price: float = 0.0) -> float: """ Convert USDT amount to base asset quantity for all exchanges. @@ -116,6 +174,56 @@ def _convert_usdt_to_base_qty(client, symbol: str, usdt_amount: float, market_ty current_price = float(data.get("price") or 0) except Exception: pass + + # Bybit v5 — same host as trading API; tickers/orderbook are public + from app.services.live_trading.bybit import BybitClient + if current_price <= 0 and isinstance(client, BybitClient): + try: + import requests + from app.services.live_trading.symbols import to_bybit_symbol + + bu = (getattr(client, "base_url", "") or "").rstrip("/") + bsym = to_bybit_symbol(symbol).upper() + cat = "spot" if (market_type or "").strip().lower() == "spot" else "linear" + if bu and bsym: + tr = requests.get( + f"{bu}/v5/market/tickers", + params={"category": cat, "symbol": bsym}, + timeout=8, + ) + if tr.status_code == 200: + jd = tr.json() if tr.text else {} + lst = (((jd.get("result") or {}).get("list")) or []) if isinstance(jd, dict) else [] + if lst and isinstance(lst[0], dict): + t0 = lst[0] + current_price = float( + str( + t0.get("lastPrice") + or t0.get("markPrice") + or t0.get("indexPrice") + or 0 + ).replace(",", "") + or 0 + ) + if current_price <= 0: + obr = requests.get( + f"{bu}/v5/market/orderbook", + params={"category": cat, "symbol": bsym, "limit": 25}, + timeout=8, + ) + if obr.status_code == 200: + od = obr.json() if obr.text else {} + res = (od.get("result") or {}) if isinstance(od, dict) else {} + bids = res.get("b") or [] + asks = res.get("a") or [] + bp = float(str(bids[0][0]).replace(",", "")) if bids and bids[0] else 0.0 + ap = float(str(asks[0][0]).replace(",", "")) if asks and asks[0] else 0.0 + if bp > 0 and ap > 0: + current_price = (bp + ap) / 2.0 + else: + current_price = bp or ap + except Exception: + pass # Other exchanges - can be added as needed # For exchanges without price API, we'll use a fallback @@ -350,7 +458,12 @@ def place_order(): elif isinstance(client, GateUsdtFuturesClient): from app.services.live_trading.symbols import to_gate_currency_pair contract = to_gate_currency_pair(symbol) - client.set_leverage(contract=contract, leverage=leverage) + if not client.set_leverage(contract=contract, leverage=leverage): + logger.warning( + "Gate set_leverage failed (contract=%s lev=%s); order may use exchange default leverage", + contract, + leverage, + ) # Most other exchanges use symbol else: # Try common parameter names @@ -472,7 +585,12 @@ def place_order(): except Exception: pass - return jsonify({"code": 0, "msg": str(e)}), 500 + err_str = str(e) + hint = _parse_trade_error_hint(err_str) + resp: Dict[str, Any] = {"code": 0, "msg": err_str} + if hint: + resp["error_hint"] = hint + return jsonify(resp), 500 def _market_order_kwargs(client, symbol, amount, side, market_type, client_order_id): @@ -581,9 +699,34 @@ def get_balance(): def _parse_balance(raw: Any, exchange_id: str, market_type: str) -> Dict[str, Any]: """Best-effort parse balance from various exchange responses.""" result = {"available": 0, "total": 0, "currency": "USDT"} + ex0 = (exchange_id or "").strip().lower() + mt0 = (market_type or "").strip().lower() + + def _num(x: Any) -> float: + try: + s = str(x).replace(",", "").strip() + if not s: + return 0.0 + return float(s) + except Exception: + return 0.0 + if not raw: return result try: + # Gate.io spot: GET /api/v4/spot/accounts returns a list + if isinstance(raw, list) and ex0 == "gate": + for item in raw: + if not isinstance(item, dict): + continue + if str(item.get("currency") or "").upper() == "USDT": + av = _num(item.get("available") or item.get("available_balance")) + lk = _num(item.get("locked") or item.get("freeze") or item.get("locked_amount")) + result["available"] = av + result["total"] = av + lk + return result + return result + if isinstance(raw, dict): # Binance futures if "availableBalance" in raw: @@ -599,6 +742,21 @@ def _parse_balance(raw: Any, exchange_id: str, market_type: str) -> Dict[str, An return result return result ex = (exchange_id or "").lower() + # Gate.io USDT perpetual: GET /api/v4/futures/usdt/accounts — flat object (values often strings) + if ex == "gate" and mt0 != "spot": + if any(k in raw for k in ("available", "total", "cross_available", "cross_margin_balance")): + av = raw.get("available") or raw.get("available_balance") or raw.get("cross_available") + tot = ( + raw.get("total") + or raw.get("total_balance") + or raw.get("cross_margin_balance") + or raw.get("equity") + ) + result["available"] = _num(av) + result["total"] = _num(tot) if tot is not None and str(tot).strip() != "" else result["available"] + if result["total"] <= 0 < result["available"]: + result["total"] = result["available"] + return result # Bitget mix: { code, data: [ { marginCoin, available, accountEquity, ... } ] } # Must run before OKX — both use data as a list; OKX fallback would zero Bitget. if ex == "bitget" and (market_type or "").lower() != "spot": @@ -709,7 +867,7 @@ def _fetch_exchange_positions_raw( """ Fetch raw position payload for quick-trade / close-position. - Many clients do not accept ``symbol=`` on ``get_positions()`` (Gate, KuCoin, Bybit, Bitfinex), + Many clients do not accept ``symbol=`` on ``get_positions()`` (Gate, KuCoin, Bitfinex), or need extra args (Bitget ``product_type``, OKX ``inst_type``). Centralize here. """ from app.services.live_trading.binance import BinanceFuturesClient @@ -747,7 +905,8 @@ def _fetch_exchange_positions_raw( return client.get_positions(product_type=pt, symbol=symbol) if isinstance(client, BybitClient): - raw = client.get_positions() + # Bybit v5 requires symbol or settleCoin; query the contract directly. + raw = client.get_positions(symbol=symbol) lst = (((raw or {}).get("result") or {}).get("list")) if isinstance(raw, dict) else None if not isinstance(lst, list): return raw @@ -765,8 +924,25 @@ def _fetch_exchange_positions_raw( raw = client.get_positions() items = raw if isinstance(raw, list) else [] c = to_gate_currency_pair(symbol) + logger.info("Gate positions: total=%d, target=%s, contracts=%s", + len(items), c, + [(str(p.get("contract")), p.get("size")) for p in items if isinstance(p, dict) and p.get("size")][:10]) filtered = [p for p in items if isinstance(p, dict) and str(p.get("contract") or "").strip() == c] - return filtered + out = [] + for p in filtered: + q = dict(p) + try: + ct_sz = float(q.get("size") or 0) + except Exception: + ct_sz = 0.0 + if abs(ct_sz) > 1e-12: + base_amt = client.contracts_signed_to_base_qty(contract=c, contracts_signed=ct_sz) + if base_amt > 0: + q["positionAmt"] = base_amt + out.append(q) + logger.info("Gate filtered positions for %s: %d items, sizes=%s", c, len(out), + [(p.get("size"), p.get("positionAmt")) for p in out]) + return out if isinstance(client, KucoinFuturesClient): raw = client.get_positions() @@ -782,7 +958,37 @@ def _fetch_exchange_positions_raw( return {"data": filtered} if isinstance(client, HtxClient): - return client.get_positions(symbol=symbol) + raw = client.get_positions(symbol=symbol) + data = (raw.get("data") if isinstance(raw, dict) else None) or [] + if not isinstance(data, list): + data = [] + out_items = [] + for p in data: + if not isinstance(p, dict): + continue + q = dict(p) + cc = str(q.get("contract_code") or "").strip() + if cc: + parts = cc.split("-", 1) + if len(parts) == 2: + q["symbol"] = f"{parts[0]}/{parts[1]}" + try: + vol = float(q.get("volume") or q.get("available") or 0) + except Exception: + vol = 0.0 + if abs(vol) > 1e-12 and cc: + try: + info = client.get_contract_info(symbol=symbol or cc) or {} + cs = float(info.get("contract_size") or 1) + if cs <= 0: + cs = 1.0 + q["positionAmt"] = abs(vol) * cs + except Exception: + pass + out_items.append(q) + logger.info("HTX positions for %s: %d items, sizes=%s", symbol, len(out_items), + [(p.get("contract_code"), p.get("volume"), p.get("positionAmt")) for p in out_items]) + return {"data": out_items} if isinstance(client, DeepcoinClient): return client.get_positions(symbol=symbol) @@ -860,6 +1066,21 @@ def _parse_positions(raw: Any) -> list: for item in items: if not isinstance(item, dict): continue + sym_raw = str( + item.get("symbol") + or item.get("instId") + or item.get("contract") + or item.get("contract_code") + or "" + ).strip() + display_symbol = sym_raw + if sym_raw and "/" not in sym_raw: + for sep in ("_", "-"): + if sep in sym_raw: + parts = sym_raw.split(sep, 1) + if len(parts) == 2 and parts[0] and parts[1]: + display_symbol = f"{parts[0]}/{parts[1]}" + break # For OKX, position size can be in different fields # SWAP: posAmt, pos # Binance futures: positionAmt @@ -876,6 +1097,7 @@ def _parse_positions(raw: Any) -> list: or item.get("bal") or item.get("availBal") or item.get("volume") + or item.get("current_qty") or 0 ) if abs(size) < 1e-10: @@ -910,11 +1132,12 @@ def _parse_positions(raw: Any) -> list: side = "short" result.append({ - "symbol": item.get("symbol") or item.get("instId") or "", + "symbol": display_symbol, "side": side, "size": abs(size), "entry_price": float( item.get("entryPrice") + or item.get("entry_price") or item.get("openPriceAvg") or item.get("avgEntryPrice") or item.get("avgPrice") @@ -928,15 +1151,17 @@ def _parse_positions(raw: Any) -> list: item.get("unRealizedProfit") or item.get("unrealizedProfit") or item.get("unrealizedPnl") + or item.get("unrealised_pnl") or item.get("upl") or item.get("unrealisedPnl") or item.get("profit_unreal") or item.get("pnl") or 0 ), - "leverage": float(item.get("leverage") or item.get("lever") or 1), + "leverage": float(item.get("leverage") or item.get("lever") or item.get("lever_rate") or item.get("cross_leverage_limit") or 1), "mark_price": float( item.get("markPrice") + or item.get("mark_price") or item.get("markPx") or item.get("last_price") or item.get("last") @@ -949,6 +1174,48 @@ def _parse_positions(raw: Any) -> list: return result +def _quick_trade_net_base_qty( + user_id: int, + credential_id: int, + symbol: str, + market_type: str, + position_side: str, +) -> float: + """ + Best-effort net base-asset qty from qd_quick_trades (filled buy − sell for long, vice versa for short). + + Used when user chooses to close only the portion accumulated via Quick Trade, not manual exchange orders. + Imperfect if the user also traded the same symbol elsewhere or records are incomplete. + """ + mt = (market_type or "swap").strip().lower() + ps = (position_side or "").strip().lower() + sym = str(symbol or "").strip() + with get_db_connection() as db: + cur = db.cursor() + cur.execute( + """ + SELECT + COALESCE(SUM(CASE WHEN side = 'buy' THEN filled_amount ELSE 0 END), 0) AS b, + COALESCE(SUM(CASE WHEN side = 'sell' THEN filled_amount ELSE 0 END), 0) AS s + FROM qd_quick_trades + WHERE user_id = %s AND credential_id = %s AND symbol = %s AND market_type = %s + AND status = 'filled' AND COALESCE(filled_amount, 0) > 0 + """, + (int(user_id), int(credential_id), sym, mt), + ) + row = cur.fetchone() or {} + cur.close() + buy_sum = float(row.get("b") or 0) + sell_sum = float(row.get("s") or 0) + if ps == "long": + net = buy_sum - sell_sum + elif ps == "short": + net = sell_sum - buy_sum + else: + net = 0.0 + return max(0.0, float(net)) + + @quick_trade_bp.route('/close-position', methods=['POST']) @login_required def close_position(): @@ -960,6 +1227,8 @@ def close_position(): symbol (str) — e.g. "BTC/USDT" market_type (str) — "swap" / "spot" (default: swap) size (float) — position size to close (optional, defaults to full position) + close_scope (str) — "full" (default) or "system_tracked" (swap only: min(position, net from qd_quick_trades)) + position_side (str) — optional "long" / "short"; required when both directions exist for the same symbol source (str) — "ai_radar" / "ai_analysis" / "indicator" / "manual" """ try: @@ -971,6 +1240,11 @@ def close_position(): market_type = str(body.get("market_type") or "swap").strip().lower() close_size = float(body.get("size") or 0) # 0 means close full position source = str(body.get("source") or "manual").strip() + close_scope_raw = str(body.get("close_scope") or body.get("closeScope") or "full").strip().lower() + if close_scope_raw in ("system", "system_tracked", "quick_trade", "app"): + close_scope = "system_tracked" + else: + close_scope = "full" # ---- validation ---- if not credential_id: @@ -1003,29 +1277,80 @@ def close_position(): if not positions: return jsonify({"code": 0, "msg": f"No position found for {symbol}"}), 404 - - # Find matching position for this symbol - position = None + + want_side = str(body.get("position_side") or body.get("close_side") or "").strip().lower() + if want_side not in ("", "long", "short"): + want_side = "" + + matches: list = [] for pos in positions: pos_symbol = pos.get("symbol", "").strip() - # Match by symbol (may need normalization) - if symbol.upper().replace("/", "") in pos_symbol.upper().replace("/", "").replace("-", ""): - position = pos - break - + if not _symbols_match_quick_trade(symbol, pos_symbol): + continue + ps = str(pos.get("side") or "").strip().lower() + if want_side in ("long", "short"): + if ps == want_side: + matches.append(pos) + else: + matches.append(pos) + + position = None + if len(matches) == 1: + position = matches[0] + elif len(matches) > 1: + if want_side in ("long", "short"): + position = matches[0] + else: + return jsonify( + { + "code": 0, + "msg": "该交易对同时存在多仓与空仓,请在请求中指定 position_side 为 long 或 short。", + } + ), 400 if not position: return jsonify({"code": 0, "msg": f"No position found for {symbol}"}), 404 - + position_side = str(position.get("side") or "").strip().lower() position_size = float(position.get("size") or 0) if position_size <= 0: return jsonify({"code": 0, "msg": "Position size is zero or invalid"}), 400 + if close_scope == "system_tracked" and market_type != "swap": + return jsonify({"code": 0, "msg": "system_tracked close_scope is only supported for swap/perp"}), 400 + + tracked_net = 0.0 + if close_scope == "system_tracked": + tracked_net = _quick_trade_net_base_qty( + user_id, credential_id, symbol, market_type, position_side=position_side + ) + if tracked_net <= 0: + return jsonify( + { + "code": 0, + "msg": "No filled Quick Trade volume found for this symbol; use full close or check history.", + } + ), 400 + # Determine close size - actual_close_size = close_size if close_size > 0 else position_size + if close_size > 0: + actual_close_size = min(close_size, position_size) + elif close_scope == "system_tracked": + actual_close_size = min(tracked_net, position_size) + logger.info( + "close_position system_tracked: symbol=%s side=%s position=%s tracked_net=%s close=%s", + symbol, + position.get("side"), + position_size, + tracked_net, + actual_close_size, + ) + else: + actual_close_size = position_size if actual_close_size > position_size: actual_close_size = position_size + if actual_close_size <= 0: + return jsonify({"code": 0, "msg": "Close size is zero"}), 400 # ---- determine signal type based on position side ---- if market_type == "spot": @@ -1111,6 +1436,8 @@ def close_position(): "avg_price": avg_fill, "closed_size": actual_close_size, "position_side": position_side, + "close_scope": close_scope, + "tracked_net_base": tracked_net if close_scope == "system_tracked" else None, "status": "filled" if filled > 0 else "submitted", }, }) @@ -1118,7 +1445,12 @@ def close_position(): except Exception as e: logger.error(f"close_position failed: {e}") logger.error(traceback.format_exc()) - return jsonify({"code": 0, "msg": str(e)}), 500 + err_str = str(e) + hint = _parse_trade_error_hint(err_str) + resp: Dict[str, Any] = {"code": 0, "msg": err_str} + if hint: + resp["error_hint"] = hint + return jsonify(resp), 500 @quick_trade_bp.route('/history', methods=['GET']) diff --git a/backend_api_python/app/routes/settings.py b/backend_api_python/app/routes/settings.py index 0b8460d..b837eb2 100644 --- a/backend_api_python/app/routes/settings.py +++ b/backend_api_python/app/routes/settings.py @@ -399,6 +399,15 @@ CONFIG_SCHEMA = { 'link_text': 'settings.link.getToken', 'description': 'Tiingo API key for Forex/Metals data' }, + { + 'key': 'TWELVE_DATA_API_KEY', + 'label': 'Twelve Data API Key', + 'type': 'password', + 'required': False, + 'link': 'https://twelvedata.com/apikey', + 'link_text': 'settings.link.getApiKey', + 'description': 'Twelve Data API key for CN/HK stock K-lines (free 800 credits/day)' + }, ] }, diff --git a/backend_api_python/app/routes/strategy.py b/backend_api_python/app/routes/strategy.py index e597055..1413c2b 100644 --- a/backend_api_python/app/routes/strategy.py +++ b/backend_api_python/app/routes/strategy.py @@ -15,6 +15,11 @@ from app.services.strategy_snapshot import StrategySnapshotResolver from app import get_trading_executor from app.utils.logger import get_logger from app.utils.db import get_db_connection + +try: + from psycopg2.errors import UndefinedTable as PgUndefinedTable +except Exception: # pragma: no cover + PgUndefinedTable = None # type: ignore from app.utils.auth import login_required from app.data_sources import DataSourceFactory @@ -662,6 +667,15 @@ def get_equity_curve(): (strategy_id,) ) rows = cur.fetchall() or [] + cur.execute( + """ + SELECT COALESCE(SUM(unrealized_pnl), 0) AS u + FROM qd_strategy_positions + WHERE strategy_id = ? + """, + (strategy_id,), + ) + prow = cur.fetchone() or {} cur.close() equity = initial @@ -678,7 +692,17 @@ def get_equity_curve(): ts = int(created_at) else: ts = int(time.time()) - curve.append({'time': ts, 'equity': equity}) + curve.append({'time': ts, 'equity': round(equity, 2)}) + + # 将未实现盈亏并入曲线末端,便于「持仓中」也能在绩效里看到浮动权益 + try: + unreal = float(prow.get('u') or prow.get('U') or 0) + except Exception: + unreal = 0.0 + live_equity = float(equity) + unreal + now_ts = int(time.time()) + if abs(unreal) > 1e-12 or not curve: + curve.append({'time': now_ts, 'equity': round(live_equity, 2)}) return jsonify({'code': 1, 'msg': 'success', 'data': curve}) except Exception as e: @@ -1391,11 +1415,16 @@ def get_strategy_performance(): def get_strategy_logs(): """Get strategy running logs.""" try: + user_id = g.user_id strategy_id = request.args.get('id') limit = int(request.args.get('limit', 200)) if not strategy_id: return jsonify({'code': 0, 'msg': 'Strategy ID required'}) + st = get_strategy_service().get_strategy(int(strategy_id), user_id=user_id) + if not st: + return jsonify({'code': 0, 'msg': 'Strategy not found'}), 404 + with get_db_connection() as db: cur = db.cursor() cur.execute( @@ -1411,10 +1440,22 @@ def get_strategy_logs(): rows = cur.fetchall() or [] cur.close() - logs = list(reversed(rows)) + out = [] + for r in rows or []: + if not isinstance(r, dict): + continue + rr = dict(r) + ts = rr.get('timestamp') + if ts is not None and hasattr(ts, 'isoformat'): + rr['timestamp'] = ts.isoformat() + out.append(rr) + logs = list(reversed(out)) return jsonify({'code': 1, 'msg': 'success', 'data': logs}) except Exception as e: - if 'qd_strategy_logs' in str(e) and ('does not exist' in str(e) or 'no such table' in str(e)): + if PgUndefinedTable is not None and isinstance(e, PgUndefinedTable): + return jsonify({'code': 1, 'msg': 'success', 'data': []}) + el = str(e).lower() + if 'qd_strategy_logs' in el and ('does not exist' in el or 'no such table' in el): return jsonify({'code': 1, 'msg': 'success', 'data': []}) logger.error(f"get_strategy_logs failed: {str(e)}") return jsonify({'code': 0, 'msg': str(e)}), 500 \ No newline at end of file diff --git a/backend_api_python/app/services/fast_analysis.py b/backend_api_python/app/services/fast_analysis.py index 605e572..eaaf9a5 100644 --- a/backend_api_python/app/services/fast_analysis.py +++ b/backend_api_python/app/services/fast_analysis.py @@ -1830,7 +1830,35 @@ IMPORTANT: # 但要做“可用信息重加权”:当某些模块缺失(如新闻/宏观没取到),不要用0分去稀释整体强度, # 而是重新归一化权重,让技术信号在缺失时仍可发挥主导作用。 market_type = str(data.get("market") or "") - fundamental_present = (market_type == "USStock") and bool(fundamental) + + def _fundamental_meaningful(fund: Dict[str, Any]) -> bool: + if not fund: + return False + for key in ( + "pe_ratio", + "pb_ratio", + "ps_ratio", + "market_cap", + "roe", + "eps", + "revenue_growth", + "profit_margin", + "dividend_yield", + ): + v = fund.get(key) + if v is None or v == "": + continue + try: + if isinstance(v, float) and v != v: # NaN + continue + return True + except Exception: + return True + return False + + fundamental_present = ( + market_type in ("USStock", "CNStock", "HKStock") and _fundamental_meaningful(fundamental) + ) sentiment_present = bool(news) macro_present = bool(macro) # indicators 一旦成功计算通常就存在,但这里也做一次保护 @@ -2057,9 +2085,9 @@ IMPORTANT: def _calculate_fundamental_score(self, fundamental: Dict, market: str) -> float: """计算基本面评分 (-100 to +100)""" - if market != "USStock" or not fundamental: - return 0.0 # 非美股或无基本面数据,返回中性 - + if market not in ("USStock", "CNStock", "HKStock") or not fundamental: + return 50.0 + score = 0.0 factors = 0 @@ -2142,7 +2170,9 @@ IMPORTANT: # 归一化(如果有多个因素) if factors > 0: score = score / factors * 100 / 4 # 最大可能分数是4个因素各20分=80,归一化到100 - + else: + return 50.0 + return max(-100, min(100, score)) def _calculate_sentiment_score(self, news: List[Dict]) -> float: diff --git a/backend_api_python/app/services/live_trading/base.py b/backend_api_python/app/services/live_trading/base.py index decf898..37ecda7 100644 --- a/backend_api_python/app/services/live_trading/base.py +++ b/backend_api_python/app/services/live_trading/base.py @@ -9,12 +9,75 @@ Notes: from __future__ import annotations import json +import logging +import os import time from dataclasses import dataclass -from typing import Any, Dict, Optional, Tuple +from typing import Any, Dict, Optional, Tuple, Union import requests +logger = logging.getLogger(__name__) + +# Cached SSL verify setting for all live-trading REST calls (requests + SOCKS proxy). +_requests_verify_value: Optional[Union[bool, str]] = None +_ssl_verify_disabled_logged = False + +# OS CA bundles (Docker / slim images: install ``ca-certificates``; corporate roots often added here too). +_SYSTEM_CA_BUNDLE_CANDIDATES: Tuple[str, ...] = ( + "/etc/ssl/certs/ca-certificates.crt", # Debian/Ubuntu + "/etc/ssl/cert.pem", # Alpine, some slim images + "/etc/pki/tls/certs/ca-bundle.crt", # RHEL/Fedora +) + + +def _get_requests_verify() -> Union[bool, str]: + """ + Resolve ``verify`` for ``requests`` when calling exchanges through proxies (e.g. PROXY_URL=socks5h://...). + + - LIVE_TRADING_SSL_VERIFY=0|false|no|off: disable verification (insecure; mitm risk). + - LIVE_TRADING_CA_BUNDLE / REQUESTS_CA_BUNDLE / SSL_CERT_FILE / CURL_CA_BUNDLE: path to a PEM CA bundle + (needed for corporate TLS inspection or custom roots). + - Else a non-empty OS CA file if present (helps Gate/HTX/hbdm etc. in minimal images). + - Otherwise certifi's bundle when available. + """ + global _requests_verify_value, _ssl_verify_disabled_logged + if _requests_verify_value is not None: + return _requests_verify_value + + flag = (os.environ.get("LIVE_TRADING_SSL_VERIFY") or "").strip().lower() + if flag in ("0", "false", "no", "off"): + if not _ssl_verify_disabled_logged: + logger.warning( + "LIVE_TRADING_SSL_VERIFY is disabled: HTTPS certificate verification is OFF for live trading " + "requests (MITM risk). Fix CA trust or set LIVE_TRADING_CA_BUNDLE instead for production." + ) + _ssl_verify_disabled_logged = True + _requests_verify_value = False + return _requests_verify_value + + for key in ("LIVE_TRADING_CA_BUNDLE", "REQUESTS_CA_BUNDLE", "SSL_CERT_FILE", "CURL_CA_BUNDLE"): + path = (os.environ.get(key) or "").strip() + if path and os.path.isfile(path): + _requests_verify_value = path + return _requests_verify_value + + for path in _SYSTEM_CA_BUNDLE_CANDIDATES: + try: + if path and os.path.isfile(path) and os.path.getsize(path) >= 256: + _requests_verify_value = path + return _requests_verify_value + except OSError: + continue + + try: + import certifi + + _requests_verify_value = certifi.where() + except ImportError: + _requests_verify_value = True + return _requests_verify_value + @dataclass class LiveOrderResult: @@ -51,15 +114,26 @@ class BaseRestClient: data: Optional[Any] = None, ) -> Tuple[int, Dict[str, Any], str]: url = self._url(path) - resp = requests.request( - method=str(method or "GET").upper(), - url=url, - params=params or None, - json=json_body if json_body is not None else None, - data=data, - headers=headers or None, - timeout=self.timeout_sec, - ) + try: + resp = requests.request( + method=str(method or "GET").upper(), + url=url, + params=params or None, + json=json_body if json_body is not None else None, + data=data, + headers=headers or None, + timeout=self.timeout_sec, + verify=_get_requests_verify(), + ) + except requests.exceptions.SSLError as e: + logger.warning( + "Exchange HTTPS TLS verify failed (%s). Same setting applies to all REST exchanges (Gate, HTX/hbdm, etc.). " + "Behind PROXY_URL/SOCKS or TLS inspection: set LIVE_TRADING_CA_BUNDLE to a PEM bundle (or REQUESTS_CA_BUNDLE), " + "ensure ca-certificates in the image, or dev-only LIVE_TRADING_SSL_VERIFY=false. %s", + url, + e, + ) + raise text = resp.text or "" parsed: Dict[str, Any] = {} try: diff --git a/backend_api_python/app/services/live_trading/bybit.py b/backend_api_python/app/services/live_trading/bybit.py index d80e2df..5422895 100644 --- a/backend_api_python/app/services/live_trading/bybit.py +++ b/backend_api_python/app/services/live_trading/bybit.py @@ -32,7 +32,7 @@ class BybitClient(BaseRestClient): base_url: str = "https://api.bybit.com", timeout_sec: float = 15.0, category: str = "linear", # "linear" (USDT perpetual) or "spot" - recv_window_ms: int = 5000, + recv_window_ms: int = 12000, broker_referer: str = "", hedge_mode: bool = False, ): @@ -45,11 +45,13 @@ class BybitClient(BaseRestClient): if self.category not in ("linear", "spot"): self.category = "linear" try: - self.recv_window_ms = int(recv_window_ms or 5000) + self.recv_window_ms = int(recv_window_ms or 12000) except Exception: + self.recv_window_ms = 12000 + if self.recv_window_ms < 5000: self.recv_window_ms = 5000 - if self.recv_window_ms <= 0: - self.recv_window_ms = 5000 + if self.recv_window_ms > 60000: + self.recv_window_ms = 60000 if not self.api_key or not self.secret_key: raise LiveTradingError("Missing Bybit api_key/secret_key") @@ -59,6 +61,12 @@ class BybitClient(BaseRestClient): self._inst_cache: Dict[str, Tuple[float, Dict[str, Any]]] = {} self._inst_cache_ttl_sec = 300.0 + # Bybit v5 rejects requests if local clock diverges from server (retCode 10002). + # Offset = server_ms - local_ms; signed timestamp uses local_ms + offset. + self._time_offset_ms: int = 0 + self._time_offset_at: float = 0.0 + self._time_sync_ttl_sec: float = 55.0 + @staticmethod def _to_dec(x: Any) -> Decimal: try: @@ -161,6 +169,48 @@ class BybitClient(BaseRestClient): def _sign(self, prehash: str) -> str: return hmac.new(self.secret_key.encode("utf-8"), prehash.encode("utf-8"), hashlib.sha256).hexdigest() + @staticmethod + def _parse_server_time_ms_from_market_time(raw: Dict[str, Any]) -> int: + """Parse milliseconds from GET /v5/market/time (or similar) JSON.""" + if not isinstance(raw, dict): + raise LiveTradingError("Bybit market/time: invalid response") + res = raw.get("result") + if isinstance(res, dict): + nano = res.get("timeNano") + if nano is not None and str(nano).strip() != "": + try: + return int(int(str(nano)) // 1_000_000) + except Exception: + pass + sec = res.get("timeSecond") + if sec is not None and str(sec).strip() != "": + try: + return int(float(sec) * 1000) + except Exception: + pass + t = raw.get("time") + if t is not None: + try: + return int(t) + except Exception: + pass + raise LiveTradingError("Bybit market/time: missing time fields") + + def sync_server_time_offset(self, *, force: bool = False) -> None: + """Align signing timestamp with Bybit server (public /v5/market/time).""" + now = time.time() + if ( + not force + and self._time_offset_at > 0 + and (now - self._time_offset_at) < float(self._time_sync_ttl_sec or 55.0) + ): + return + raw = self._public_request("GET", "/v5/market/time") + srv_ms = self._parse_server_time_ms_from_market_time(raw) + local_ms = int(time.time() * 1000) + self._time_offset_ms = int(srv_ms - local_ms) + self._time_offset_at = now + def _resolve_position_idx(self, pos_side: str) -> Optional[int]: if not self.hedge_mode: return None @@ -193,32 +243,55 @@ class BybitClient(BaseRestClient): json_body: Optional[Dict[str, Any]] = None, ) -> Dict[str, Any]: m = str(method or "GET").upper() - ts_ms = str(int(time.time() * 1000)) - body_str = self._json_dumps(json_body) if json_body is not None else "" - qs = "" + qs_base = "" if params: norm = {str(k): "" if v is None else str(v) for k, v in dict(params).items()} - qs = urlencode(sorted(norm.items()), doseq=True) + qs_base = urlencode(sorted(norm.items()), doseq=True) + payload_get = qs_base + payload_post = body_str - payload = qs if m == "GET" else body_str - prehash = f"{ts_ms}{self.api_key}{self.recv_window_ms}{payload}" - sign = self._sign(prehash) + last_err: Optional[LiveTradingError] = None + for attempt in range(2): + try: + self.sync_server_time_offset(force=(attempt > 0)) + except Exception as e: + if attempt == 0: + # First attempt: still try with raw local time; second pass may recover. + pass + else: + raise LiveTradingError(f"Bybit time sync failed: {e}") from e - code, data, text = self._request( - m, - path, - params=params if (m == "GET" and params) else (params or None), - data=body_str if body_str else None, - headers=self._headers(ts_ms, sign), - ) - if code >= 400: - raise LiveTradingError(f"Bybit HTTP {code}: {text[:500]}") - if isinstance(data, dict): - rc = data.get("retCode") - if rc not in (0, "0", None, ""): - raise LiveTradingError(f"Bybit error: {data}") - return data if isinstance(data, dict) else {"raw": data} + ts_ms = str(int(time.time() * 1000) + int(self._time_offset_ms or 0)) + payload = payload_get if m == "GET" else payload_post + prehash = f"{ts_ms}{self.api_key}{self.recv_window_ms}{payload}" + sign = self._sign(prehash) + + code, data, text = self._request( + m, + path, + params=params if (m == "GET" and params) else (params or None), + data=body_str if body_str else None, + headers=self._headers(ts_ms, sign), + ) + if code >= 400: + raise LiveTradingError(f"Bybit HTTP {code}: {text[:500]}") + if isinstance(data, dict): + rc = data.get("retCode") + try: + rc_int = int(rc) if rc is not None and str(rc).strip() != "" else 0 + except Exception: + rc_int = -1 + if rc_int == 10002 and attempt == 0: + last_err = LiveTradingError(f"Bybit error: {data}") + continue + if rc not in (0, "0", None, ""): + raise LiveTradingError(f"Bybit error: {data}") + return data if isinstance(data, dict) else {"raw": data} + + if last_err: + raise last_err + raise LiveTradingError("Bybit signed request failed after time resync") def _public_request(self, method: str, path: str, *, params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]: code, data, text = self._request(method, path, params=params, headers=None, json_body=None, data=None) @@ -237,6 +310,109 @@ class BybitClient(BaseRestClient): except Exception: return False + @staticmethod + def _row_to_ticker_out(row: Dict[str, Any]) -> Dict[str, Any]: + if not isinstance(row, dict): + return {} + last_raw = row.get("lastPrice") or row.get("last") or row.get("markPrice") or row.get("indexPrice") or 0 + try: + px = float(str(last_raw).replace(",", "").strip() or 0) + except Exception: + px = 0.0 + if px <= 0: + return {} + out: Dict[str, Any] = dict(row) + out["last"] = px + out["price"] = px + return out + + def get_ticker(self, *, symbol: str) -> Dict[str, Any]: + """ + Public market price for USDT notional -> base qty (quick_trade / execution). + + Tries: ``/v5/market/tickers`` (by symbol) → ``/v5/market/orderbook`` (mid) → + ``/v5/market/tickers`` (category-only, scan list). Some environments return an empty + ticker list for filtered queries; fallbacks avoid silent failure. + """ + sym = to_bybit_symbol(symbol) + if not sym: + return {} + cat = "spot" if (self.category or "").strip().lower() == "spot" else "linear" + sym_u = sym.upper() + + # 1) Filtered tickers (preferred) + try: + raw = self._public_request("GET", "/v5/market/tickers", params={"category": cat, "symbol": sym_u}) + lst = (((raw or {}).get("result") or {}).get("list")) if isinstance(raw, dict) else None + if isinstance(lst, list) and lst: + out = self._row_to_ticker_out(lst[0] if isinstance(lst[0], dict) else {}) + if out: + return out + except LiveTradingError: + pass + except Exception: + pass + + # 2) Order book mid (bid/ask) + try: + ob = self._public_request( + "GET", + "/v5/market/orderbook", + params={"category": cat, "symbol": sym_u, "limit": 25}, + ) + res = (ob.get("result") or {}) if isinstance(ob, dict) else {} + bids = res.get("b") or [] + asks = res.get("a") or [] + bid_p = 0.0 + ask_p = 0.0 + if isinstance(bids, list) and bids and isinstance(bids[0], (list, tuple)) and len(bids[0]) > 0: + try: + bid_p = float(str(bids[0][0]).replace(",", "")) + except Exception: + bid_p = 0.0 + if isinstance(asks, list) and asks and isinstance(asks[0], (list, tuple)) and len(asks[0]) > 0: + try: + ask_p = float(str(asks[0][0]).replace(",", "")) + except Exception: + ask_p = 0.0 + mid = 0.0 + if bid_p > 0 and ask_p > 0: + mid = (bid_p + ask_p) / 2.0 + else: + mid = bid_p or ask_p + if mid > 0: + return { + "symbol": sym_u, + "last": mid, + "price": mid, + "bid1Price": bid_p, + "ask1Price": ask_p, + } + except LiveTradingError: + pass + except Exception: + pass + + # 3) Full category ticker list, match symbol (larger payload; last resort) + try: + raw = self._public_request("GET", "/v5/market/tickers", params={"category": cat}) + lst = (((raw or {}).get("result") or {}).get("list")) if isinstance(raw, dict) else None + if isinstance(lst, list): + for row in lst: + if not isinstance(row, dict): + continue + if str(row.get("symbol") or "").strip().upper() != sym_u: + continue + out = self._row_to_ticker_out(row) + if out: + return out + except LiveTradingError: + pass + except Exception: + pass + + return {} + def get_wallet_balance(self, *, account_type: str = "UNIFIED") -> Dict[str, Any]: return self._signed_request("GET", "/v5/account/wallet-balance", params={"accountType": str(account_type or "UNIFIED")}) @@ -497,10 +673,28 @@ class BybitClient(BaseRestClient): return {"filled": filled, "avg_price": avg_price, "fee": fee, "fee_ccy": fee_ccy, "status": status, "order": last} time.sleep(float(poll_interval_sec or 0.5)) - def get_positions(self) -> Dict[str, Any]: + def get_positions( + self, + *, + symbol: str = "", + settle_coin: str = "", + ) -> Dict[str, Any]: + """ + GET /v5/position/list — Bybit v5 requires ``symbol`` OR ``settleCoin`` with ``category``. + + - Pass ``symbol`` (e.g. ETH/USDT) to query one contract. + - Omit ``symbol`` and pass ``settle_coin`` (default USDT) to list all USDT-linear positions. + """ if self.category != "linear": raise LiveTradingError("Bybit positions are only supported for linear category in this client") - return self._signed_request("GET", "/v5/position/list", params={"category": "linear"}) + params: Dict[str, Any] = {"category": "linear"} + sym = to_bybit_symbol(symbol) if (symbol or "").strip() else "" + if sym: + params["symbol"] = sym + else: + sc = (settle_coin or "USDT").strip().upper() or "USDT" + params["settleCoin"] = sc + return self._signed_request("GET", "/v5/position/list", params=params) def set_leverage(self, *, symbol: str, leverage: float) -> bool: if self.category != "linear": diff --git a/backend_api_python/app/services/live_trading/factory.py b/backend_api_python/app/services/live_trading/factory.py index 30b016c..7721197 100644 --- a/backend_api_python/app/services/live_trading/factory.py +++ b/backend_api_python/app/services/live_trading/factory.py @@ -117,7 +117,7 @@ def create_client(exchange_config: Dict[str, Any], *, market_type: str = "swap") default_bybit = "https://api-testnet.bybit.com" if is_demo else "https://api.bybit.com" base_url = _get(exchange_config, "base_url", "baseUrl") or default_bybit category = "spot" if mt == "spot" else "linear" - recv_window_ms = int(exchange_config.get("recv_window_ms") or exchange_config.get("recvWindow") or 5000) + recv_window_ms = int(exchange_config.get("recv_window_ms") or exchange_config.get("recvWindow") or 12000) broker_referer = _get(exchange_config, "bybit_referer", "broker_referer", "brokerReferer") or "Ri001020" hedge_mode_raw = exchange_config.get("hedge_mode") if hedge_mode_raw is None: diff --git a/backend_api_python/app/services/live_trading/gate.py b/backend_api_python/app/services/live_trading/gate.py index 4d79d8f..4e1b75d 100644 --- a/backend_api_python/app/services/live_trading/gate.py +++ b/backend_api_python/app/services/live_trading/gate.py @@ -4,7 +4,7 @@ Gate.io (direct REST) clients: - Futures USDT: /api/v4/futures/usdt/* Signing (apiv4): -SIGN = hex(hmac_sha512(secret, method + "\\n" + url + "\\n" + query + "\\n" + body + "\\n" + timestamp)) +SIGN = hex(hmac_sha512(secret, method + "\\n" + url + "\\n" + query + "\\n" + hexencode(sha512(payload)) + "\\n" + timestamp)) Headers: - KEY: api key - Timestamp: unix seconds @@ -15,14 +15,42 @@ from __future__ import annotations import hashlib import hmac +import logging import time -from decimal import Decimal, ROUND_DOWN -from typing import Any, Dict, Optional, Tuple +from decimal import Decimal, ROUND_DOWN, ROUND_UP +from typing import Any, Dict, Optional, Tuple, Union from urllib.parse import urlencode from app.services.live_trading.base import BaseRestClient, LiveOrderResult, LiveTradingError from app.services.live_trading.symbols import to_gate_currency_pair +logger = logging.getLogger(__name__) + + +def _gate_ticker_response_to_normalized(raw: Any) -> Dict[str, Any]: + """Parse Gate spot/futures tickers API (array of one row) into a dict with float ``last`` for quick_trade.""" + row: Dict[str, Any] = {} + if isinstance(raw, list) and raw and isinstance(raw[0], dict): + row = raw[0] + elif isinstance(raw, dict) and raw: + row = raw + else: + return {} + last = 0.0 + for key in ("last", "mark_price", "index_price", "close", "price"): + v = row.get(key) + if v is not None and str(v).strip(): + try: + last = float(str(v).replace(",", "")) + break + except Exception: + continue + out = dict(row) + out["last"] = last + out["close"] = last + out["price"] = last + return out + class _GateBase(BaseRestClient): def __init__(self, *, api_key: str, secret_key: str, base_url: str = "https://api.gateio.ws", timeout_sec: float = 15.0, channel_id: str = ""): @@ -34,7 +62,10 @@ class _GateBase(BaseRestClient): raise LiveTradingError("Missing Gate api_key/secret_key") def _sign(self, *, method: str, url: str, query_string: str, body_str: str, ts: str) -> str: - msg = f"{method.upper()}\n{url}\n{query_string}\n{body_str}\n{ts}" + # Per https://www.gate.com/docs/developers/apiv4/en/#authentication — payload slot is SHA512(body).hexdigest(), + # not the raw body (GET / no body => hash of empty string). + hashed_payload = hashlib.sha512((body_str or "").encode("utf-8")).hexdigest() + msg = f"{method.upper()}\n{url}\n{query_string}\n{hashed_payload}\n{ts}" return hmac.new(self.secret_key.encode("utf-8"), msg.encode("utf-8"), hashlib.sha512).hexdigest() def _headers(self, ts: str, sign: str) -> Dict[str, str]: @@ -58,7 +89,15 @@ class _GateBase(BaseRestClient): text = f"t-{text}" return text[:28] - def _signed_request(self, method: str, path: str, *, params: Optional[Dict[str, Any]] = None, json_body: Optional[Dict[str, Any]] = None) -> Any: + def _signed_request( + self, + method: str, + path: str, + *, + params: Optional[Dict[str, Any]] = None, + json_body: Optional[Dict[str, Any]] = None, + extra_headers: Optional[Dict[str, str]] = None, + ) -> Any: m = str(method or "GET").upper() ts = str(int(time.time())) body_str = self._json_dumps(json_body) if json_body is not None else "" @@ -67,7 +106,10 @@ class _GateBase(BaseRestClient): norm = {str(k): "" if v is None else str(v) for k, v in dict(params).items()} qs = urlencode(sorted(norm.items()), doseq=True) sign = self._sign(method=m, url=path, query_string=qs, body_str=body_str, ts=ts) - code, data, text = self._request(m, path, params=params, data=body_str if body_str else None, headers=self._headers(ts, sign)) + hdrs = dict(self._headers(ts, sign)) + if extra_headers: + hdrs.update({str(k): str(v) for k, v in extra_headers.items()}) + code, data, text = self._request(m, path, params=params, data=body_str if body_str else None, headers=hdrs) if code >= 400: raise LiveTradingError(f"Gate HTTP {code}: {text[:500]}") return data @@ -87,6 +129,11 @@ class GateSpotClient(_GateBase): except Exception: return False + def get_ticker(self, *, symbol: str) -> Dict[str, Any]: + pair = to_gate_currency_pair(symbol) + raw = self._public_request("GET", "/api/v4/spot/tickers", params={"currency_pair": pair}) + return _gate_ticker_response_to_normalized(raw) + def get_accounts(self) -> Any: return self._signed_request("GET", "/api/v4/spot/accounts") @@ -204,13 +251,21 @@ class GateUsdtFuturesClient(_GateBase): return Decimal("0") def ping(self) -> bool: + # Gate futures REST no longer serves /api/v4/futures/usdt/time (returns 400 on fx-api / api hosts). + # Use a lightweight public list call instead. try: - _ = self._public_request("GET", "/api/v4/futures/usdt/time") + _ = self._public_request("GET", "/api/v4/futures/usdt/contracts", params={"limit": 1}) return True except Exception: return False + def get_ticker(self, *, symbol: str) -> Dict[str, Any]: + contract = to_gate_currency_pair(symbol) + raw = self._public_request("GET", "/api/v4/futures/usdt/tickers", params={"contract": contract}) + return _gate_ticker_response_to_normalized(raw) + def get_contract(self, *, contract: str) -> Dict[str, Any]: + """Fetch contract metadata with ``X-Gate-Size-Decimal: 1`` to get accurate string-typed size fields.""" c = str(contract or "").strip() if not c: return {} @@ -220,33 +275,122 @@ class GateUsdtFuturesClient(_GateBase): ts, obj = cached if obj and (now - float(ts or 0.0)) <= float(self._contract_cache_ttl_sec or 300.0): return obj - raw = self._public_request("GET", f"/api/v4/futures/usdt/contracts/{c}") - obj = raw if isinstance(raw, dict) else {} + code, data, text = self._request( + "GET", f"/api/v4/futures/usdt/contracts/{c}", + params=None, headers={"X-Gate-Size-Decimal": "1"}, + json_body=None, data=None, + ) + if code >= 400: + raise LiveTradingError(f"Gate HTTP {code}: {text[:500]}") + obj = data if isinstance(data, dict) else {} if obj: self._contract_cache[c] = (now, obj) return obj - def _base_to_contracts(self, *, contract: str, base_size: float) -> int: + @staticmethod + def _decimal_places(d: Decimal) -> int: + """Return the number of decimal places in a Decimal value.""" + sign, digits, exponent = d.as_tuple() + return max(0, -int(exponent)) + + def _resolve_order_size(self, *, contract: str, side: str, base_size: float) -> Tuple[str, Optional[Dict[str, str]]]: + """ + Convert base-asset qty to a signed Gate ``size`` string and determine whether to use + the ``X-Gate-Size-Decimal`` header. + + Per Gate announcement (2025-12-18): + - ``size`` is always in **contracts** (not base-asset units). + - With ``X-Gate-Size-Decimal: 1``, ``size`` becomes a string that supports decimals. + - A contract supports fractional ordering when ``order_size_min`` (queried with the + decimal header) contains a fractional part (e.g. ``"0.1"``). + - Precision must align with ``order_size_min`` (e.g. if min is ``"0.1"`` → 1 dp). + """ + sd = (side or "").strip().lower() + sign = Decimal("1") if sd == "buy" else Decimal("-1") req = self._to_dec(base_size) if req <= 0: - return 0 + return ("0", None) + meta: Dict[str, Any] = {} try: meta = self.get_contract(contract=contract) or {} except Exception: meta = {} - qm = self._to_dec(meta.get("quanto_multiplier") or meta.get("quantoMultiplier") or meta.get("contract_size") or meta.get("contractSize") or "0") + + qm = self._to_dec(meta.get("quanto_multiplier") or meta.get("quantoMultiplier") or "0") if qm <= 0: - # Fallback: 1 contract ~= 1 base unit (best-effort) qm = Decimal("1") + contracts = req / qm - return int(self._floor(contracts)) + + order_min = self._to_dec(meta.get("order_size_min") or "1") + if order_min <= 0: + order_min = Decimal("1") + dp = self._decimal_places(order_min) + + if dp > 0: + step = Decimal(10) ** (-dp) + q = contracts.quantize(step, rounding=ROUND_DOWN) + if q < order_min and contracts > 0: + q = order_min + signed_q = q * sign + s = format(signed_q, "f") + if "." in s: + s = s.rstrip("0").rstrip(".") + return (s if s and s not in ("-", "+", "-0", "+0", "0") else "0", + {"X-Gate-Size-Decimal": "1"}) + else: + iv = int(self._floor(contracts)) + int_min = max(1, int(order_min)) + if iv < int_min and contracts > 0: + iv = int_min + signed_iv = int(Decimal(iv) * sign) + return (str(signed_iv), None) + + def _base_to_contracts(self, *, contract: str, base_size: float) -> int: + """Integer contracts estimate (for internal use like position sizing display).""" + meta: Dict[str, Any] = {} + try: + meta = self.get_contract(contract=contract) or {} + except Exception: + meta = {} + qm = self._to_dec(meta.get("quanto_multiplier") or "0") + if qm <= 0: + qm = Decimal("1") + return max(1, int(self._floor(self._to_dec(base_size) / qm))) + + def contracts_signed_to_base_qty(self, *, contract: str, contracts_signed: float) -> float: + """Convert signed position size (contracts) from Gate positions API to base-asset quantity.""" + try: + ct = abs(float(contracts_signed or 0.0)) + except Exception: + return 0.0 + if ct <= 0: + return 0.0 + meta: Dict[str, Any] = {} + try: + meta = self.get_contract(contract=str(contract)) or {} + except Exception: + meta = {} + qm = self._to_dec( + meta.get("quanto_multiplier") + or meta.get("quantoMultiplier") + or meta.get("contract_size") + or meta.get("contractSize") + or "0" + ) + if qm <= 0: + qm = Decimal("1") + return float(Decimal(str(ct)) * qm) def get_accounts(self) -> Any: return self._signed_request("GET", "/api/v4/futures/usdt/accounts") def get_positions(self) -> Any: - return self._signed_request("GET", "/api/v4/futures/usdt/positions") + return self._signed_request( + "GET", "/api/v4/futures/usdt/positions", + extra_headers={"X-Gate-Size-Decimal": "1"}, + ) def set_leverage(self, *, contract: str, leverage: float) -> bool: c = str(contract or "").strip() @@ -258,11 +402,26 @@ class GateUsdtFuturesClient(_GateBase): lv = 1 if lv < 1: lv = 1 - try: - _ = self._signed_request("POST", f"/api/v4/futures/usdt/positions/{c}/leverage", json_body={"leverage": str(lv)}) - return True - except Exception: - return False + path = f"/api/v4/futures/usdt/positions/{c}/leverage" + lv_s = str(lv) + # Gate expects ``leverage`` / ``cross_leverage_limit`` as **query parameters**, not JSON body + # (see gateapi-python: update_position_leverage). Cross / portfolio mode: leverage=0 + cross_leverage_limit. + attempts: Tuple[Dict[str, str], ...] = ( + {"leverage": lv_s}, + {"leverage": "0", "cross_leverage_limit": lv_s}, + {"leverage": lv_s, "cross_leverage_limit": lv_s}, + ) + last_err: Optional[Exception] = None + for qp in attempts: + try: + _ = self._signed_request("POST", path, params=qp, json_body=None) + return True + except LiveTradingError as e: + last_err = e + except Exception as e: + last_err = e + logger.warning("Gate set_leverage failed contract=%s leverage=%s: %s", c, lv, last_err) + return False def place_market_order( self, @@ -276,18 +435,27 @@ class GateUsdtFuturesClient(_GateBase): sd = (side or "").strip().lower() if sd not in ("buy", "sell"): raise LiveTradingError(f"Invalid side: {side}") + base_qty = float(size or 0.0) + if base_qty <= 0: + raise LiveTradingError("Invalid size (<= 0)") contract = to_gate_currency_pair(symbol) - csz = self._base_to_contracts(contract=contract, base_size=float(size or 0.0)) - if csz <= 0: - raise LiveTradingError("Invalid size (converted contracts <= 0)") - signed_size = int(csz) if sd == "buy" else -int(csz) - body: Dict[str, Any] = {"contract": contract, "size": signed_size, "price": "0", "tif": "ioc"} + size_str, extra_headers = self._resolve_order_size(contract=contract, side=sd, base_size=base_qty) + if size_str in ("0", "-0", ""): + raise LiveTradingError("Invalid size (resolved contracts == 0)") + logger.info("Gate futures market: contract=%s side=%s base_qty=%s size_str=%s decimal_hdr=%s", + contract, sd, base_qty, size_str, extra_headers is not None) + body: Dict[str, Any] = {"contract": contract, "size": size_str, "price": "0", "tif": "ioc"} if reduce_only: body["reduce_only"] = True text = self._format_text(client_order_id) if text: body["text"] = text - raw = self._signed_request("POST", "/api/v4/futures/usdt/orders", json_body=body) + raw = self._signed_request( + "POST", + "/api/v4/futures/usdt/orders", + json_body=body, + extra_headers=extra_headers, + ) oid = str(raw.get("id") or "") if isinstance(raw, dict) else "" return LiveOrderResult(exchange_id="gate", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw if isinstance(raw, dict) else {"raw": raw}) @@ -304,21 +472,28 @@ class GateUsdtFuturesClient(_GateBase): sd = (side or "").strip().lower() if sd not in ("buy", "sell"): raise LiveTradingError(f"Invalid side: {side}") - contract = to_gate_currency_pair(symbol) - csz = self._base_to_contracts(contract=contract, base_size=float(size or 0.0)) - if csz <= 0: - raise LiveTradingError("Invalid size (converted contracts <= 0)") + base_qty = float(size or 0.0) + if base_qty <= 0: + raise LiveTradingError("Invalid size (<= 0)") px = float(price or 0.0) if px <= 0: raise LiveTradingError("Invalid price") - signed_size = int(csz) if sd == "buy" else -int(csz) - body: Dict[str, Any] = {"contract": contract, "size": signed_size, "price": str(px), "tif": "gtc"} + contract = to_gate_currency_pair(symbol) + size_str, extra_headers = self._resolve_order_size(contract=contract, side=sd, base_size=base_qty) + if size_str in ("0", "-0", ""): + raise LiveTradingError("Invalid size (resolved contracts == 0)") + body: Dict[str, Any] = {"contract": contract, "size": size_str, "price": str(px), "tif": "gtc"} if reduce_only: body["reduce_only"] = True text = self._format_text(client_order_id) if text: body["text"] = text - raw = self._signed_request("POST", "/api/v4/futures/usdt/orders", json_body=body) + raw = self._signed_request( + "POST", + "/api/v4/futures/usdt/orders", + json_body=body, + extra_headers=extra_headers, + ) oid = str(raw.get("id") or "") if isinstance(raw, dict) else "" return LiveOrderResult(exchange_id="gate", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw if isinstance(raw, dict) else {"raw": raw}) diff --git a/backend_api_python/app/services/live_trading/htx.py b/backend_api_python/app/services/live_trading/htx.py index 3dc229c..a5f6d8a 100644 --- a/backend_api_python/app/services/live_trading/htx.py +++ b/backend_api_python/app/services/live_trading/htx.py @@ -19,9 +19,13 @@ from urllib.parse import urlencode, urlparse import datetime import time +import logging + from app.services.live_trading.base import BaseRestClient, LiveOrderResult, LiveTradingError from app.services.live_trading.symbols import to_htx_contract_code, to_htx_spot_symbol +logger = logging.getLogger(__name__) + class HtxClient(BaseRestClient): def __init__( @@ -53,6 +57,17 @@ class HtxClient(BaseRestClient): self._contract_cache_ttl_sec = 300.0 self._lever_cache: Dict[str, int] = {} + @staticmethod + def _format_swap_client_order_id(client_order_id: Optional[str]) -> Optional[int]: + """HTX swap/linear-swap client_order_id must be a pure numeric long (1~9223372036854775807).""" + if not client_order_id: + return None + digits = "".join(c for c in str(client_order_id) if c.isdigit()) + if not digits: + digits = str(int(time.time() * 1000)) + val = int(digits[-18:]) + return val if 0 < val <= 9223372036854775807 else None + def _format_spot_client_order_id(self, client_order_id: Optional[str]) -> str: prefix = str(self.broker_id or "").strip() raw = str(client_order_id or "").strip() @@ -202,11 +217,33 @@ class HtxClient(BaseRestClient): if self.market_type == "spot": account_id = self._get_spot_account_id() return self._spot_private_request("GET", f"/v1/account/accounts/{account_id}/balance") - raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_cross_account_info", json_body={"margin_account": "USDT"}) - data = raw.get("data") - if data: - return raw - return self._swap_private_request("POST", "/linear-swap-api/v1/swap_account_info", json_body={}) + # 1) v1 cross + try: + raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_cross_account_info", json_body={"margin_account": "USDT"}) + data = raw.get("data") + if data: + return raw + except LiveTradingError as e: + logger.debug("HTX v1 cross account_info failed: %s", e) + # 2) v3 unified (unified / multi-asset collateral accounts) + try: + raw = self._swap_private_request("GET", "/linear-swap-api/v3/unified_account_info") + v3_code = raw.get("code") + if v3_code is not None and int(v3_code) == 200: + data = raw.get("data") + if isinstance(data, list) and data: + logger.info("HTX v3 unified_account_info succeeded") + return raw + else: + logger.debug("HTX v3 unified_account_info returned code=%s", v3_code) + except (LiveTradingError, Exception) as e: + logger.debug("HTX v3 unified_account_info failed: %s", e) + # 3) v1 isolated + try: + return self._swap_private_request("POST", "/linear-swap-api/v1/swap_account_info", json_body={}) + except LiveTradingError as e: + logger.warning("HTX all balance endpoints failed, last error: %s", e) + return {"data": []} def get_positions(self, *, symbol: str = "") -> Any: if self.market_type == "spot": @@ -235,11 +272,35 @@ class HtxClient(BaseRestClient): return {"data": rows} body = {"contract_code": to_htx_contract_code(symbol)} if symbol else {} - raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_cross_position_info", json_body=body) - data = raw.get("data") - if data: - return raw - return self._swap_private_request("POST", "/linear-swap-api/v1/swap_position_info", json_body=body) + # 1) v1 cross + try: + raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_cross_position_info", json_body=body) + data = raw.get("data") + if data: + return raw + except LiveTradingError as e: + logger.debug("HTX v1 cross position_info failed: %s", e) + # 2) v1 isolated + try: + raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_position_info", json_body=body) + data = raw.get("data") + if data: + return raw + except LiveTradingError as e: + logger.debug("HTX v1 isolated position_info failed: %s", e) + # 3) v3 unified - extract positions from cross_swap sub-array + try: + raw = self._swap_private_request("GET", "/linear-swap-api/v3/unified_account_info") + v3_code = raw.get("code") + if v3_code is not None and int(v3_code) == 200: + v3_data = raw.get("data") or [] + if isinstance(v3_data, list) and v3_data: + logger.info("HTX v3 unified_account_info for positions succeeded") + return raw + except (LiveTradingError, Exception) as e: + logger.debug("HTX v3 unified_account_info (positions) failed: %s", e) + logger.warning("HTX all position endpoints failed for symbol=%s", symbol) + return {"data": []} def get_ticker(self, *, symbol: str) -> Dict[str, Any]: if self.market_type == "spot": @@ -355,7 +416,7 @@ class HtxClient(BaseRestClient): raise LiveTradingError(f"Invalid side: {side}") offset = "close" if reduce_only else "open" lever_rate = int(self._lever_cache.get(contract_code) or 5) - body = { + body: Dict[str, Any] = { "contract_code": contract_code, "volume": volume, "direction": sd, @@ -365,8 +426,18 @@ class HtxClient(BaseRestClient): } if self.broker_id: body["channel_code"] = self.broker_id - if client_order_id: - body["client_order_id"] = str(client_order_id)[:64] + swap_coid = self._format_swap_client_order_id(client_order_id) + if swap_coid is not None: + body["client_order_id"] = swap_coid + cross_body = dict(body) + cross_body["margin_account"] = "USDT" + try: + raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_cross_order", json_body=cross_body) + data = raw.get("data") or {} + oid = str(data.get("order_id_str") or data.get("order_id") or "") + return LiveOrderResult(exchange_id="htx", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw) + except LiveTradingError as e: + logger.info("HTX swap_cross_order failed, trying swap_order: %s", e) raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_order", json_body=body) data = raw.get("data") or {} oid = str(data.get("order_id_str") or data.get("order_id") or "") @@ -412,7 +483,7 @@ class HtxClient(BaseRestClient): contract_code = to_htx_contract_code(symbol) volume = self._base_to_contracts(symbol=symbol, qty=qty) lever_rate = int(self._lever_cache.get(contract_code) or 5) - body = { + body: Dict[str, Any] = { "contract_code": contract_code, "volume": volume, "direction": sd, @@ -423,8 +494,18 @@ class HtxClient(BaseRestClient): } if self.broker_id: body["channel_code"] = self.broker_id - if client_order_id: - body["client_order_id"] = str(client_order_id)[:64] + swap_coid = self._format_swap_client_order_id(client_order_id) + if swap_coid is not None: + body["client_order_id"] = swap_coid + cross_body = dict(body) + cross_body["margin_account"] = "USDT" + try: + raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_cross_order", json_body=cross_body) + data = raw.get("data") or {} + oid = str(data.get("order_id_str") or data.get("order_id") or "") + return LiveOrderResult(exchange_id="htx", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw) + except LiveTradingError: + pass raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_order", json_body=body) data = raw.get("data") or {} oid = str(data.get("order_id_str") or data.get("order_id") or "") diff --git a/backend_api_python/app/services/market_data_collector.py b/backend_api_python/app/services/market_data_collector.py index 4044240..2f0673f 100644 --- a/backend_api_python/app/services/market_data_collector.py +++ b/backend_api_python/app/services/market_data_collector.py @@ -129,7 +129,7 @@ class MarketDataCollector: } # 如果需要基本面,也并行获取 - if market == 'USStock': + if market in ('USStock', 'CNStock', 'HKStock'): core_futures[executor.submit(self._get_fundamental, market, symbol)] = "fundamental" core_futures[executor.submit(self._get_company, market, symbol)] = "company" elif market == 'Crypto': @@ -616,9 +616,94 @@ class MarketDataCollector: try: if market == 'USStock': return self._get_us_fundamental(symbol) + if market in ('CNStock', 'HKStock'): + return self._get_cn_hk_fundamental(market, symbol) except Exception as e: logger.warning(f"Fundamental data fetch failed for {market}:{symbol}: {e}") return None + + def _get_cn_hk_fundamental(self, market: str, symbol: str) -> Optional[Dict[str, Any]]: + """ + CN/HK fundamentals — multi-tier: + Tier 1: Twelve Data /statistics (globally stable, paid) + Tier 2: AkShare / Eastmoney (fragile overseas) + + Tencent quote for live price fields + """ + try: + from app.data_sources.tencent import ( + normalize_cn_code, + normalize_hk_code, + fetch_quote, + parse_quote_to_ticker, + ) + from app.data_sources.cn_hk_fundamentals import ( + fetch_twelvedata_fundamental, + fetch_cn_fundamental_akshare, + fetch_hk_fundamental_akshare, + ) + + code = normalize_cn_code(symbol) if market == 'CNStock' else normalize_hk_code(symbol) + is_hk = market == 'HKStock' + + parts = fetch_quote(code) + t = parse_quote_to_ticker(parts) if parts else {} + result: Dict[str, Any] = { + "pe_ratio": None, + "pb_ratio": None, + "ps_ratio": None, + "market_cap": None, + "dividend_yield": None, + "beta": None, + "52w_high": None, + "52w_low": None, + "roe": None, + "eps": None, + "last": t.get("last"), + "previous_close": t.get("previousClose"), + "change_percent": t.get("changePercent"), + "source": "tencent_quote", + } + + # Tier 1: Twelve Data + td = {} + try: + td = fetch_twelvedata_fundamental(code, is_hk) + except Exception as e: + logger.debug("TwelveData fundamental failed %s:%s: %s", market, symbol, e) + + if td: + result["source"] = "tencent_quote+twelvedata" + for k, v in td.items(): + if k == "source": + continue + if v is not None: + result[k] = v + + # Tier 2: AkShare (fill any remaining None fields) + has_valuation = result.get("pe_ratio") is not None or result.get("pb_ratio") is not None + if not has_valuation: + try: + ak_data = fetch_cn_fundamental_akshare(code) if not is_hk else fetch_hk_fundamental_akshare(code) + except Exception as e: + logger.debug("AkShare CN/HK fundamental failed %s:%s: %s", market, symbol, e) + ak_data = {} + if ak_data: + if "twelvedata" not in result.get("source", ""): + result["source"] = "tencent_quote+akshare_em" + else: + result["source"] += "+akshare_em" + for k, v in ak_data.items(): + if k == "source": + continue + if v is not None and result.get(k) is None: + result[k] = v + + if not parts and not td and not has_valuation: + return None + return result + except Exception as e: + logger.debug(f"CN/HK fundamental failed: {market}:{symbol}: {e}") + return None def _get_us_fundamental(self, symbol: str) -> Optional[Dict[str, Any]]: """ @@ -924,11 +1009,85 @@ class MarketDataCollector: 'market_cap': profile.get('marketCapitalization'), 'website': profile.get('weburl'), } + if market in ('CNStock', 'HKStock'): + return self._get_cn_hk_company(market, symbol) except Exception as e: logger.debug(f"Company info fetch failed for {market}:{symbol}: {e}") return None + + def _get_cn_hk_company(self, market: str, symbol: str) -> Optional[Dict[str, Any]]: + """ + CN/HK company info — multi-tier: + Tier 1: Twelve Data /profile (globally stable) + Tier 2: AkShare / Eastmoney (fragile overseas) + + Tencent quote for Chinese name + """ + try: + from app.data_sources.tencent import ( + normalize_cn_code, + normalize_hk_code, + fetch_quote, + ) + from app.data_sources.cn_hk_fundamentals import ( + fetch_twelvedata_profile, + fetch_cn_company_extras, + fetch_hk_company_extras, + ) + + code = normalize_cn_code(symbol) if market == 'CNStock' else normalize_hk_code(symbol) + is_hk = market == 'HKStock' + + parts = fetch_quote(code) + cn_name = "" + if parts: + cn_name = (parts[1] or "").strip() if len(parts) > 1 else "" + + row: Dict[str, Any] = { + "name": cn_name or code, + "country": "CN" if market == "CNStock" else "HK", + "exchange": "SSE/SZSE" if market == "CNStock" else "HKEX", + "symbol": code, + "source": "tencent_quote", + } + + # Tier 1: Twelve Data /profile + td_profile = {} + try: + td_profile = fetch_twelvedata_profile(code, is_hk) + except Exception as e: + logger.debug("TwelveData profile failed %s:%s: %s", market, symbol, e) + + if td_profile: + row["source"] = "tencent_quote+twelvedata" + for k in ("industry", "sector", "website", "description", "employees", "full_name"): + v = td_profile.get(k) + if v is not None: + row[k] = v + if not cn_name and td_profile.get("name"): + row["name"] = td_profile["name"] + + # Tier 2: AkShare (fill remaining gaps) + if not row.get("industry"): + try: + ex = fetch_cn_company_extras(code) if not is_hk else fetch_hk_company_extras(code) + except Exception: + ex = {} + if ex: + if "twelvedata" not in row.get("source", ""): + row["source"] = "tencent_quote+akshare_em" + else: + row["source"] += "+akshare_em" + for k in ("industry", "ipo_date", "website", "full_name"): + if ex.get(k) and not row.get(k): + row[k] = ex[k] + + if not parts and not td_profile and not row.get("industry"): + return None + return row + except Exception: + return None # ==================== 宏观数据 (复用全球金融板块) ==================== diff --git a/backend_api_python/app/services/pending_order_worker.py b/backend_api_python/app/services/pending_order_worker.py index 79f3cf3..9d9d35c 100644 --- a/backend_api_python/app/services/pending_order_worker.py +++ b/backend_api_python/app/services/pending_order_worker.py @@ -360,8 +360,8 @@ class PendingOrderWorker: exch_size.setdefault(hb_sym, {"long": 0.0, "short": 0.0})[side] = abs(float(total)) elif isinstance(client, BybitClient) and market_type == "swap": - # Bybit linear positions - resp = client.get_positions() + # Bybit v5 requires symbol or settleCoin — use USDT for full linear book + resp = client.get_positions(settle_coin="USDT") lst = (((resp.get("result") or {}).get("list")) if isinstance(resp, dict) else None) or [] if isinstance(lst, list): for p in lst: @@ -1234,13 +1234,14 @@ class PendingOrderWorker: actual_pos_size = pos_amt break elif isinstance(client, BybitClient): - pos_resp = client.get_positions() or {} + pos_resp = client.get_positions(symbol=str(symbol or "")) or {} pos_list = (pos_resp.get("result") or {}).get("list") or [] if isinstance(pos_resp, dict) else [] + want = str(symbol or "").replace("/", "").replace("-", "").upper() for pos in pos_list: if not isinstance(pos, dict): continue - pos_sym = str(pos.get("symbol") or "") - if pos_sym != str(symbol or "").replace("/", ""): + pos_sym = str(pos.get("symbol") or "").strip().upper() + if pos_sym != want: continue p_side = str(pos.get("side") or "").strip().lower() if (p_side == "buy" and pos_side == "long") or (p_side == "sell" and pos_side == "short"): diff --git a/backend_api_python/app/services/polymarket_worker.py b/backend_api_python/app/services/polymarket_worker.py index 1fa2ed2..97223c2 100644 --- a/backend_api_python/app/services/polymarket_worker.py +++ b/backend_api_python/app/services/polymarket_worker.py @@ -87,26 +87,20 @@ class PolymarketWorker: logger.info("Starting Polymarket data update and analysis...") start_time = time.time() - # 1. 更新市场数据(从所有主要分类获取) - categories = ["crypto", "politics", "economics", "sports", "tech", "finance", "geopolitics", "culture", "climate", "entertainment"] - all_markets = [] + # Gamma API /events has no category param — fetch ALL once, categorize locally. + all_markets = self.polymarket_source.get_trending_markets(category="all", limit=500) + logger.info(f"Fetched {len(all_markets)} markets from Gamma API (single request)") - for category in categories: - try: - markets = self.polymarket_source.get_trending_markets(category, limit=50) - all_markets.extend(markets) - logger.info(f"Fetched {len(markets)} markets from category: {category}") - except Exception as e: - logger.warning(f"Failed to fetch markets for category {category}: {e}") - - # 去重(按market_id) unique_markets = {} + cat_counts: Dict[str, int] = {} for market in all_markets: market_id = market.get('market_id') if market_id: unique_markets[market_id] = market + cat = market.get('category', 'other') + cat_counts[cat] = cat_counts.get(cat, 0) + 1 - logger.info(f"Total unique markets: {len(unique_markets)}") + logger.info(f"Total unique markets: {len(unique_markets)}, by category: {cat_counts}") # 2. 批量分析市场(一次性分析所有市场,由AI筛选机会) markets_list = list(unique_markets.values()) diff --git a/backend_api_python/app/services/signal_notifier.py b/backend_api_python/app/services/signal_notifier.py index 852c9ec..27b5428 100644 --- a/backend_api_python/app/services/signal_notifier.py +++ b/backend_api_python/app/services/signal_notifier.py @@ -28,6 +28,8 @@ from datetime import datetime, timezone from email.message import EmailMessage from typing import Any, Dict, List, Optional, Tuple +from zoneinfo import ZoneInfo + import requests from app.utils.db import get_db_connection @@ -78,6 +80,43 @@ def _signal_meta(signal_type: str) -> Dict[str, str]: return {"action": action, "side": side, "type": st} +def _load_user_timezone_for_strategy(strategy_id: int) -> str: + try: + sid = int(strategy_id) + except Exception: + return "" + try: + with get_db_connection() as db: + cur = db.cursor() + cur.execute( + """ + SELECT COALESCE(u.timezone, '') AS tz + FROM qd_strategies_trading s + JOIN qd_users u ON u.id = s.user_id + WHERE s.id = ? + """, + (sid,), + ) + row = cur.fetchone() or {} + cur.close() + return str(row.get("tz") or "").strip() + except Exception: + return "" + + +def _utc_ts_to_user_display(now: int, user_timezone: str) -> Tuple[str, str, str]: + """Return (utc_iso, display_local_str, label_for_plaintext).""" + iso = datetime.fromtimestamp(int(now), tz=timezone.utc).isoformat() + utz = (user_timezone or "").strip() + if not utz: + return iso, iso, "Time (UTC)" + try: + dt = datetime.fromtimestamp(int(now), tz=timezone.utc).astimezone(ZoneInfo(utz)) + return iso, dt.strftime("%Y-%m-%d %H:%M:%S"), f"Time ({utz})" + except Exception: + return iso, iso, "Time (UTC)" + + def _fmt_float(value: Any, *, max_decimals: int = 10) -> str: try: v = float(value or 0.0) @@ -150,6 +189,7 @@ class SignalNotifier: targets = _safe_json(cfg.get("targets") or {}) extra = extra if isinstance(extra, dict) else {} + user_tz = _load_user_timezone_for_strategy(int(strategy_id)) payload = self._build_payload( strategy_id=strategy_id, strategy_name=strategy_name, @@ -159,6 +199,7 @@ class SignalNotifier: stake_amount=stake_amount, direction=direction, extra=extra, + user_timezone=user_tz, ) rendered = self._render_messages(payload) title = rendered.get("title") or "" @@ -252,9 +293,10 @@ class SignalNotifier: stake_amount: float, direction: str, extra: Dict[str, Any], + user_timezone: str = "", ) -> Dict[str, Any]: now = int(time.time()) - iso = datetime.fromtimestamp(now, tz=timezone.utc).isoformat() + iso, disp, tlab = _utc_ts_to_user_display(now, user_timezone) meta = _signal_meta(signal_type) pending_id = None @@ -268,6 +310,8 @@ class SignalNotifier: "version": 1, "timestamp": now, "timestamp_iso": iso, + "timestamp_display": disp, + "time_label": tlab, "strategy": { "id": int(strategy_id), "name": str(strategy_name or ""), @@ -310,6 +354,8 @@ class SignalNotifier: pending_id = int(trace.get("pending_order_id") or 0) if trace.get("pending_order_id") else 0 mode = str(trace.get("mode") or "") ts_iso = str(payload.get("timestamp_iso") or "") + ts_disp = str(payload.get("timestamp_display") or "") or ts_iso + ts_lbl = str(payload.get("time_label") or "Time") plain_lines = [ "QuantDinger Signal", @@ -323,8 +369,8 @@ class SignalNotifier: plain_lines.append(f"PendingOrder: {pending_id}") if mode: plain_lines.append(f"Mode: {mode}") - if ts_iso: - plain_lines.append(f"Time(UTC): {ts_iso}") + if ts_disp: + plain_lines.append(f"{ts_lbl}: {ts_disp}") # Telegram (HTML) message. Escape all dynamic values. t_strategy = f"{strategy.get('name') or ''} (#{int(strategy.get('id') or 0)})" @@ -341,8 +387,8 @@ class SignalNotifier: telegram_lines.append(f"PendingOrder: {pending_id}") if mode: telegram_lines.append(f"Mode: {html.escape(mode)}") - if ts_iso: - telegram_lines.append(f"Time (UTC): {html.escape(ts_iso)}") + if ts_disp: + telegram_lines.append(f"{html.escape(ts_lbl)}: {html.escape(ts_disp)}") telegram_html = "\n".join([x for x in telegram_lines if x is not None]) # Email (HTML) message. Keep inline CSS for maximum compatibility. @@ -355,7 +401,8 @@ class SignalNotifier: stake_text=stake_s, pending_id=pending_id or None, mode_text=mode or "", - timestamp_iso=ts_iso or "", + timestamp_display=ts_disp or "", + time_row_label=ts_lbl or "Time", ) return { @@ -376,7 +423,8 @@ class SignalNotifier: stake_text: str, pending_id: Optional[int], mode_text: str, - timestamp_iso: str, + timestamp_display: str, + time_row_label: str, ) -> str: def esc(s: Any) -> str: return html.escape(str(s or "")) @@ -392,8 +440,8 @@ class SignalNotifier: rows.append(("PendingOrder", str(int(pending_id)))) if mode_text: rows.append(("Mode", mode_text)) - if timestamp_iso: - rows.append(("Time (UTC)", timestamp_iso)) + if timestamp_display: + rows.append((time_row_label or "Time", timestamp_display)) tr_html = "\n".join( [ @@ -418,7 +466,7 @@ class SignalNotifier:
{esc(title_text)}
-
{esc(timestamp_iso) if timestamp_iso else ""}
+
{esc(timestamp_display) if timestamp_display else ""}
diff --git a/backend_api_python/app/services/strategy.py b/backend_api_python/app/services/strategy.py index 96fd65a..61155f0 100644 --- a/backend_api_python/app/services/strategy.py +++ b/backend_api_python/app/services/strategy.py @@ -977,12 +977,24 @@ class StrategyService: leverage = (trading_config or {}).get('leverage') or existing.get('leverage') or 1 market_type = (trading_config or {}).get('market_type') or existing.get('market_type') or 'swap' + strategy_type = (payload.get('strategy_type') if payload.get('strategy_type') is not None + else existing.get('strategy_type')) or 'IndicatorStrategy' + strategy_mode = (payload.get('strategy_mode') if payload.get('strategy_mode') is not None + else existing.get('strategy_mode')) or 'signal' + if 'strategy_code' in payload: + strategy_code = payload.get('strategy_code') or '' + else: + strategy_code = existing.get('strategy_code') or '' + with get_db_connection() as db: cur = db.cursor() cur.execute( """ UPDATE qd_strategies_trading SET strategy_name = ?, + strategy_type = ?, + strategy_mode = ?, + strategy_code = ?, market_category = ?, execution_mode = ?, notification_config = ?, @@ -1000,6 +1012,9 @@ class StrategyService: """, ( name, + strategy_type, + strategy_mode, + strategy_code, market_category, execution_mode, self._dump_json_or_encrypt(notification_config, encrypt=False), diff --git a/backend_api_python/app/services/strategy_snapshot.py b/backend_api_python/app/services/strategy_snapshot.py index 1575723..f308a15 100644 --- a/backend_api_python/app/services/strategy_snapshot.py +++ b/backend_api_python/app/services/strategy_snapshot.py @@ -135,14 +135,29 @@ class StrategySnapshotResolver: timeframe = str(override.get("timeframe") or trading_config.get("timeframe") or strategy.get("timeframe") or "1D").strip() or "1D" initial_capital = self._to_float(override.get("initialCapital", trading_config.get("initial_capital", strategy.get("initial_capital", 10000))), 10000.0) leverage = self._to_int(override.get("leverage", trading_config.get("leverage", strategy.get("leverage", 1))), 1) - commission = self._percent_to_ratio(override.get("commission", trading_config.get("commission", 0))) - slippage = self._percent_to_ratio(override.get("slippage", trading_config.get("slippage", 0))) + # Commission/slippage are backtest-only assumptions (not used by live ScriptStrategy execution). + # Script strategies created from the UI may omit these; apply sensible backtest defaults. + commission_raw = override.get("commission") + if commission_raw is None: + commission_raw = trading_config.get("commission") + slippage_raw = override.get("slippage") + if slippage_raw is None: + slippage_raw = trading_config.get("slippage") + strategy_type_early = str(strategy.get("strategy_type") or "IndicatorStrategy").strip() or "IndicatorStrategy" + strategy_mode_early = str(strategy.get("strategy_mode") or "signal").strip() or "signal" + is_script_early = strategy_type_early == "ScriptStrategy" or strategy_mode_early == "script" + if commission_raw is None or commission_raw == "": + commission_raw = 0.05 if is_script_early else 0 + if slippage_raw is None or slippage_raw == "": + slippage_raw = 0.0 + commission = self._percent_to_ratio(commission_raw) + slippage = self._percent_to_ratio(slippage_raw) trade_direction = str(trading_config.get("trade_direction") or "long").strip().lower() or "long" enable_mtf = self._to_bool(override.get("enableMtf", market.lower() == "crypto")) - strategy_type = str(strategy.get("strategy_type") or "IndicatorStrategy").strip() or "IndicatorStrategy" - strategy_mode = str(strategy.get("strategy_mode") or "signal").strip() or "signal" - is_script = strategy_type == "ScriptStrategy" or strategy_mode == "script" + strategy_type = strategy_type_early + strategy_mode = strategy_mode_early + is_script = is_script_early indicator_id = indicator_config.get("indicator_id") or strategy.get("indicator_id") indicator_name = indicator_config.get("indicator_name") or "" diff --git a/backend_api_python/app/services/symbol_name.py b/backend_api_python/app/services/symbol_name.py index 236367b..fce4de9 100644 --- a/backend_api_python/app/services/symbol_name.py +++ b/backend_api_python/app/services/symbol_name.py @@ -21,6 +21,7 @@ import requests from app.utils.logger import get_logger from app.data.market_symbols_seed import get_symbol_name as seed_get_symbol_name +from app.data_sources.tencent import normalize_cn_code, normalize_hk_code logger = get_logger(__name__) @@ -28,6 +29,10 @@ logger = get_logger(__name__) def _normalize_symbol_for_market(market: str, symbol: str) -> str: m = (market or '').strip() s = (symbol or '').strip().upper() + if m == 'CNStock': + return normalize_cn_code(s) + if m == 'HKStock': + return normalize_hk_code(s) return s @@ -105,6 +110,17 @@ def resolve_symbol_name(market: str, symbol: str) -> Optional[str]: # otherwise fall back to yfinance. return _resolve_name_from_finnhub(s) or _resolve_name_from_yfinance(s) + # CN/HK stocks: try Tencent quote name first (no key), then yfinance best-effort. + if m in ('CNStock', 'HKStock'): + try: + from app.data_sources.tencent import fetch_quote + parts = fetch_quote(s) + if parts and len(parts) > 1 and parts[1]: + return str(parts[1]).strip() + except Exception: + pass + return _resolve_name_from_yfinance(s) + # Crypto: at least return base ticker-like display (not a "company", but better than empty) if m == 'Crypto': if '/' in s: diff --git a/backend_api_python/app/services/trading_executor.py b/backend_api_python/app/services/trading_executor.py index 69b6c9d..78eccf7 100644 --- a/backend_api_python/app/services/trading_executor.py +++ b/backend_api_python/app/services/trading_executor.py @@ -21,6 +21,7 @@ import numpy as np from app.utils.logger import get_logger from app.utils.db import get_db_connection +from app.utils.strategy_runtime_logs import append_strategy_log from app.data_sources import DataSourceFactory from app.services.kline import KlineService from app.services.indicator_params import IndicatorParamsParser, IndicatorCaller @@ -52,6 +53,8 @@ class TradingExecutor: self._signal_dedup = {} # type: Dict[int, Dict[str, float]] self._signal_dedup_lock = threading.Lock() self.kline_service = KlineService() # K线服务(带缓存) + # Throttle writes to qd_strategy_logs (heartbeat), per strategy_id -> monotonic time + self._strategy_ui_log_last_tick_ts = {} # type: Dict[int, float] # 单实例线程上限,避免无限制创建线程导致 can't start new thread/OOM self.max_threads = int(os.getenv('STRATEGY_MAX_THREADS', '64')) @@ -428,6 +431,7 @@ class TradingExecutor: logger.info(f"Strategy {strategy_id} started") self._console_print(f"[strategy:{strategy_id}] started") + append_strategy_log(strategy_id, "info", "策略执行线程已启动") return True except Exception as e: @@ -466,6 +470,7 @@ class TradingExecutor: logger.info(f"Strategy {strategy_id} stopped") self._console_print(f"[strategy:{strategy_id}] stopped (requested)") + append_strategy_log(strategy_id, "info", "已请求停止策略(运行标志已清除)") return True except Exception as e: @@ -933,6 +938,11 @@ class TradingExecutor: logger.info(f"Strategy {strategy_id} initialized; pending_signals={len(pending_signals)}") if pending_signals: logger.info(f"Initial signals: {pending_signals}") + append_strategy_log( + strategy_id, + "info", + f"实盘循环就绪 {symbol} {timeframe},待处理信号 {len(pending_signals or [])} 条", + ) # ============================================ # Main loop: unified tick cadence (default: 10s) @@ -1258,6 +1268,11 @@ class TradingExecutor: ) if ok: logger.info(f"Strategy {strategy_id} signal executed: {signal_type} @ {execute_price}") + append_strategy_log( + strategy_id, + "signal", + f"已提交信号 {signal_type} 参考价 {float(execute_price or 0):.6f}", + ) # Notify portfolio positions linked to this symbol try: from app.services.portfolio_monitor import notify_strategy_signal_for_positions @@ -1271,6 +1286,11 @@ class TradingExecutor: logger.warning(f"Strategy signal linkage notification failed: {link_e}") else: logger.warning(f"Strategy {strategy_id} signal rejected/failed: {signal_type}") + append_strategy_log( + strategy_id, + "error", + f"信号未执行或拒单: {signal_type}", + ) # Update positions once per tick. self._update_positions(strategy_id, symbol, current_price) @@ -1279,17 +1299,37 @@ class TradingExecutor: self._console_print( f"[strategy:{strategy_id}] tick price={float(current_price or 0.0):.8f} pending_signals={len(pending_signals or [])}" ) + try: + nowl = time.time() + lastl = float(self._strategy_ui_log_last_tick_ts.get(strategy_id) or 0.0) + if nowl - lastl >= 55.0: + self._strategy_ui_log_last_tick_ts[strategy_id] = nowl + append_strategy_log( + strategy_id, + "info", + f"tick price={float(current_price or 0.0):.8f} pending_signals={len(pending_signals or [])}", + ) + except Exception: + pass except Exception as e: logger.error(f"Strategy {strategy_id} loop error: {str(e)}") logger.error(traceback.format_exc()) self._console_print(f"[strategy:{strategy_id}] loop error: {e}") + try: + append_strategy_log(strategy_id, "error", f"循环异常: {e}") + except Exception: + pass time.sleep(5) except Exception as e: logger.error(f"Strategy {strategy_id} crashed: {str(e)}") logger.error(traceback.format_exc()) self._console_print(f"[strategy:{strategy_id}] fatal error: {e}") + try: + append_strategy_log(strategy_id, "error", f"策略线程致命错误: {e}") + except Exception: + pass finally: # 清理 with self.lock: @@ -1297,6 +1337,10 @@ class TradingExecutor: del self.running_strategies[strategy_id] self._console_print(f"[strategy:{strategy_id}] loop exited") logger.info(f"Strategy {strategy_id} loop exited") + try: + append_strategy_log(strategy_id, "info", "策略执行循环已退出") + except Exception: + pass def _sync_positions_with_exchange(self, strategy_id: int, exchange: Any, symbol: str, market_type: str): """ diff --git a/backend_api_python/app/utils/config_loader.py b/backend_api_python/app/utils/config_loader.py index be33aed..b10855e 100644 --- a/backend_api_python/app/utils/config_loader.py +++ b/backend_api_python/app/utils/config_loader.py @@ -116,6 +116,7 @@ def load_addon_config() -> Dict[str, Any]: ('AKSHARE_TIMEOUT', 'akshare.timeout', 'int'), ('TIINGO_API_KEY', 'tiingo.api_key', 'string'), ('TIINGO_TIMEOUT', 'tiingo.timeout', 'int'), + ('TWELVE_DATA_API_KEY', 'twelve_data.api_key', 'string'), # Search (Google CSE / Bing) ('SEARCH_PROVIDER', 'search.provider', 'string'), diff --git a/backend_api_python/app/utils/strategy_runtime_logs.py b/backend_api_python/app/utils/strategy_runtime_logs.py new file mode 100644 index 0000000..9843fa7 --- /dev/null +++ b/backend_api_python/app/utils/strategy_runtime_logs.py @@ -0,0 +1,29 @@ +"""Persist strategy runtime lines for the strategy management UI (`qd_strategy_logs`).""" + +from __future__ import annotations + +from app.utils.db import get_db_connection +from app.utils.logger import get_logger + +logger = get_logger(__name__) + + +def append_strategy_log(strategy_id: int, level: str, message: str) -> None: + """Best-effort insert; never raises to caller.""" + try: + sid = int(strategy_id) + lv = (level or "info").strip().lower()[:20] + msg = str(message or "").strip() + if not msg: + return + msg = msg[:8000] + with get_db_connection() as db: + cur = db.cursor() + cur.execute( + "INSERT INTO qd_strategy_logs (strategy_id, level, message) VALUES (?, ?, ?)", + (sid, lv, msg), + ) + db.commit() + cur.close() + except Exception as e: + logger.debug("append_strategy_log skip: %s", e) diff --git a/backend_api_python/env.example b/backend_api_python/env.example index b9004e0..07d69f6 100644 --- a/backend_api_python/env.example +++ b/backend_api_python/env.example @@ -69,6 +69,15 @@ SMTP_USE_SSL=false # PROXY_URL=socks5h://host.docker.internal:10808 # Docker PROXY_URL= +# Outbound HTTPS to exchanges when using PROXY_URL (especially SOCKS). If you see +# SSLCertVerificationError / "unable to get local issuer certificate": +# - Prefer: install OS ca-certificates in the image, or point to a PEM bundle: +# LIVE_TRADING_CA_BUNDLE=/path/to/ca-bundle.pem +# (REQUESTS_CA_BUNDLE / SSL_CERT_FILE are also honored.) +# - Last resort only: LIVE_TRADING_SSL_VERIFY=false # disables TLS verify — insecure +#LIVE_TRADING_CA_BUNDLE= +#LIVE_TRADING_SSL_VERIFY= + # ========================= # Captcha / OAuth (optional) # ========================= @@ -160,6 +169,10 @@ YFINANCE_TIMEOUT=30 TIINGO_API_KEY= TIINGO_TIMEOUT=10 +# Twelve Data (CN/HK stock K-lines — recommended for overseas servers) +# Free tier: 800 API credits/day, 8 requests/minute. https://twelvedata.com +TWELVE_DATA_API_KEY= + # AI search / news SEARCH_PROVIDER=google SEARCH_MAX_RESULTS=10 diff --git a/backend_api_python/migrations/init.sql b/backend_api_python/migrations/init.sql index 9abe79b..4bd3324 100644 --- a/backend_api_python/migrations/init.sql +++ b/backend_api_python/migrations/init.sql @@ -349,6 +349,21 @@ CREATE INDEX IF NOT EXISTS idx_notifications_user_id ON qd_strategy_notification CREATE INDEX IF NOT EXISTS idx_notifications_strategy_id ON qd_strategy_notifications(strategy_id); CREATE INDEX IF NOT EXISTS idx_notifications_is_read ON qd_strategy_notifications(is_read); +-- ============================================================================= +-- 6b. Strategy runtime logs (dashboard / API) +-- ============================================================================= + +CREATE TABLE IF NOT EXISTS qd_strategy_logs ( + id SERIAL PRIMARY KEY, + strategy_id INTEGER NOT NULL REFERENCES qd_strategies_trading(id) ON DELETE CASCADE, + level VARCHAR(20) DEFAULT 'info', + message TEXT NOT NULL, + timestamp TIMESTAMP DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_strategy_logs_strategy_id ON qd_strategy_logs(strategy_id); +CREATE INDEX IF NOT EXISTS idx_strategy_logs_timestamp ON qd_strategy_logs(timestamp); + -- ============================================================================= -- 7. Indicator Codes -- ============================================================================= @@ -647,7 +662,29 @@ INSERT INTO qd_market_symbols (market, symbol, name, exchange, currency, is_acti ('Futures', 'ZS', 'Soybeans', 'CBOT', 'USD', 1, 1, 94), ('Futures', 'ZW', 'Wheat', 'CBOT', 'USD', 1, 1, 93), ('Futures', 'ES', 'S&P 500 E-mini', 'CME', 'USD', 1, 1, 92), -('Futures', 'NQ', 'NASDAQ 100 E-mini', 'CME', 'USD', 1, 1, 91) +('Futures', 'NQ', 'NASDAQ 100 E-mini', 'CME', 'USD', 1, 1, 91), +-- A股 (CNStock) +('CNStock', '600519', '贵州茅台', 'SSE', 'CNY', 1, 1, 100), +('CNStock', '600036', '招商银行', 'SSE', 'CNY', 1, 1, 99), +('CNStock', '601318', '中国平安', 'SSE', 'CNY', 1, 1, 98), +('CNStock', '600900', '长江电力', 'SSE', 'CNY', 1, 1, 97), +('CNStock', '601899', '紫金矿业', 'SSE', 'CNY', 1, 1, 96), +('CNStock', '000858', '五粮液', 'SZSE', 'CNY', 1, 1, 95), +('CNStock', '000333', '美的集团', 'SZSE', 'CNY', 1, 1, 94), +('CNStock', '002594', '比亚迪', 'SZSE', 'CNY', 1, 1, 93), +('CNStock', '300750', '宁德时代', 'SZSE', 'CNY', 1, 1, 92), +('CNStock', '000001', '平安银行', 'SZSE', 'CNY', 1, 1, 91), +-- 港股/H股 (HKStock) +('HKStock', '00700', '腾讯控股', 'HKEX', 'HKD', 1, 1, 100), +('HKStock', '09988', '阿里巴巴-W', 'HKEX', 'HKD', 1, 1, 99), +('HKStock', '03690', '美团-W', 'HKEX', 'HKD', 1, 1, 98), +('HKStock', '01810', '小米集团-W', 'HKEX', 'HKD', 1, 1, 97), +('HKStock', '00939', '建设银行', 'HKEX', 'HKD', 1, 1, 96), +('HKStock', '01299', '友邦保险', 'HKEX', 'HKD', 1, 1, 95), +('HKStock', '02318', '中国平安', 'HKEX', 'HKD', 1, 1, 94), +('HKStock', '00388', '香港交易所', 'HKEX', 'HKD', 1, 1, 93), +('HKStock', '00883', '中国海洋石油', 'HKEX', 'HKD', 1, 1, 92), +('HKStock', '01398', '工商银行', 'HKEX', 'HKD', 1, 1, 91) ON CONFLICT (market, symbol) DO NOTHING; -- ============================================================================= diff --git a/backend_api_python/requirements.txt b/backend_api_python/requirements.txt index 59cbad8..76ce7ab 100644 --- a/backend_api_python/requirements.txt +++ b/backend_api_python/requirements.txt @@ -5,6 +5,7 @@ yfinance>=0.2.18 ccxt>=4.0.0 pandas>=1.5.0 requests>=2.28.0 +certifi>=2024.2.2 PySocks>=1.7.1 akshare>=1.12.0 pymysql>=1.0.2 diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 6b0c29a..f043f1a 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,6 +4,46 @@ This document records version updates, new features, bug fixes, and database mig --- +## 2026-04-07 — 数据库:`qd_market_symbols` 补充 A股 / H股热门标的 + +已在 **Docker** 内对运行中的 PostgreSQL 执行完毕(`INSERT 0 20`)。**新库**若使用当前仓库中的 `migrations/init.sql` 初始化,已包含同批种子数据,无需重复执行。 + +**在已有库上手动执行(等价 SQL,可重复执行,`ON CONFLICT DO NOTHING`):** + +```sql +INSERT INTO qd_market_symbols (market, symbol, name, exchange, currency, is_active, is_hot, sort_order) VALUES +('CNStock', '600519', '贵州茅台', 'SSE', 'CNY', 1, 1, 100), +('CNStock', '600036', '招商银行', 'SSE', 'CNY', 1, 1, 99), +('CNStock', '601318', '中国平安', 'SSE', 'CNY', 1, 1, 98), +('CNStock', '600900', '长江电力', 'SSE', 'CNY', 1, 1, 97), +('CNStock', '601899', '紫金矿业', 'SSE', 'CNY', 1, 1, 96), +('CNStock', '000858', '五粮液', 'SZSE', 'CNY', 1, 1, 95), +('CNStock', '000333', '美的集团', 'SZSE', 'CNY', 1, 1, 94), +('CNStock', '002594', '比亚迪', 'SZSE', 'CNY', 1, 1, 93), +('CNStock', '300750', '宁德时代', 'SZSE', 'CNY', 1, 1, 92), +('CNStock', '000001', '平安银行', 'SZSE', 'CNY', 1, 1, 91), +('HKStock', '00700', '腾讯控股', 'HKEX', 'HKD', 1, 1, 100), +('HKStock', '09988', '阿里巴巴-W', 'HKEX', 'HKD', 1, 1, 99), +('HKStock', '03690', '美团-W', 'HKEX', 'HKD', 1, 1, 98), +('HKStock', '01810', '小米集团-W', 'HKEX', 'HKD', 1, 1, 97), +('HKStock', '00939', '建设银行', 'HKEX', 'HKD', 1, 1, 96), +('HKStock', '01299', '友邦保险', 'HKEX', 'HKD', 1, 1, 95), +('HKStock', '02318', '中国平安', 'HKEX', 'HKD', 1, 1, 94), +('HKStock', '00388', '香港交易所', 'HKEX', 'HKD', 1, 1, 93), +('HKStock', '00883', '中国海洋石油', 'HKEX', 'HKD', 1, 1, 92), +('HKStock', '01398', '工商银行', 'HKEX', 'HKD', 1, 1, 91) +ON CONFLICT (market, symbol) DO NOTHING; +``` + +**Docker 一行示例(文件需 UTF-8):** + +```bash +docker cp backend_api_python/migrations/.sql quantdinger-db:/tmp/migrate.sql +docker compose exec -T postgres psql -U quantdinger -d quantdinger -f /tmp/migrate.sql +``` + +--- + ## V3.0.1 (2026-04-05) — Frontend / docs - **前端版本**:`QuantDinger-Vue-src/package.json`、页脚展示与 `frontend/VERSION` 统一为 **3.0.1**。 diff --git a/frontend/dist/css/156.ef3f8671.css b/frontend/dist/css/156.ef3f8671.css new file mode 100644 index 0000000..481c5a8 --- /dev/null +++ b/frontend/dist/css/156.ef3f8671.css @@ -0,0 +1 @@ +.fast-analysis-report[data-v-03feb1fa]{height:100%;overflow-y:auto;padding:24px;background:#f7f8fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar{width:4px}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#d0d4da;border-radius:2px}.fast-analysis-report .loading-container[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:420px}.fast-analysis-report .loading-container .loading-content-pro[data-v-03feb1fa]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{font-size:26px;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-03feb1fa]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{position:absolute;right:0;top:-22px;font-size:13px;font-weight:700;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;padding:10px 20px;background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);border-radius:8px;margin-bottom:20px;color:var(--primary-color,#1890ff);font-size:13px;font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-03feb1fa]{font-size:15px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:9px 14px;background:rgba(0,0,0,.02);border-radius:8px;font-size:12px;color:#999;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-03feb1fa]{width:7px;height:7px;border-radius:50%;background:#ddd;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-03feb1fa]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-03feb1fa]{color:#10b981;font-size:13px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff);font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#10b981}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-03feb1fa]{margin-top:20px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{font-size:12px;color:#999;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-03feb1fa]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-03feb1fa]{font-size:56px;color:#ccc}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-03feb1fa]{margin-top:14px;font-size:17px;font-weight:700;color:#1a1a2e}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-03feb1fa]{margin-top:6px;color:#999;font-size:13px}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]{padding:28px 24px;margin-bottom:2px;border-radius:16px 16px 0 0;background:#fff;position:relative;overflow:hidden}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#f59e0b),to(#fbbf24));background:linear-gradient(90deg,#f59e0b,#fbbf24)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-03feb1fa]{font-size:28px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:32px;font-weight:800;letter-spacing:1px;color:#1a1a2e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-03feb1fa]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-03feb1fa]{font-size:17px;font-weight:800;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-03feb1fa]{font-size:11px;color:#999;margin-top:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-03feb1fa]{font-size:14px;line-height:1.75;color:#555;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{margin-top:12px;padding:10px 14px;border-radius:8px;background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent);font-size:12px;color:#555}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-weight:700;margin-bottom:6px;color:var(--primary-color,#1890ff);font-size:12px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px 18px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-03feb1fa]{font-style:normal;color:#999;margin-right:4px}.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .decision-text[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .decision-text[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .decision-text[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .price-info-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .price-info-row.hold-mode[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]{padding:16px 14px;text-align:center;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:20%;height:60%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#999;margin-bottom:6px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{font-size:9px;color:#bbb;margin-top:4px}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-03feb1fa]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-03feb1fa]{font-size:13px;margin-top:3px;font-weight:700;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card[data-v-03feb1fa]{background:#fff;padding:18px 20px;margin-bottom:2px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#1a1a2e;margin-bottom:10px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);font-size:15px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{font-size:12px;line-height:1.65;color:#555;margin-bottom:12px;padding:10px 12px;background:rgba(0,0,0,.02);border-radius:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:10px;text-align:center}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend[data-v-03feb1fa]{font-size:13px;font-weight:700;margin-bottom:4px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{font-size:10px;color:#999;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}@media (max-width:992px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}}.fast-analysis-report .result-container .scores-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]{padding:14px 16px;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:16%;height:68%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#999;margin-bottom:8px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{font-size:14px;color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{text-align:right;font-size:22px;font-weight:800;color:#1a1a2e;margin-top:6px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:0;background:#fff;margin-bottom:2px;padding:0}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent;border-bottom:1px solid #ebeef2;position:relative}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:before{content:"";position:absolute;left:0;top:20px;bottom:20px;width:3px;border-radius:2px}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-03feb1fa]:before{background:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-03feb1fa]:before{background:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:10px;font-size:14px;font-weight:700;color:#1a1a2e;padding-left:12px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-03feb1fa]{font-size:16px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-03feb1fa]{color:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{font-size:13px;line-height:1.85;color:#555;padding-left:12px}.fast-analysis-report .result-container .analysis-details[data-v-03feb1fa]{display:grid;grid-template-columns:1fr 1fr;gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:1px solid #ebeef2}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;margin-bottom:12px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-03feb1fa]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{padding:8px 0;font-size:13px;line-height:1.65;color:#555;border-bottom:1px solid rgba(0,0,0,.04)}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;margin-right:10px;vertical-align:middle}.fast-analysis-report .result-container .analysis-details .detail-section.reasons .detail-list li[data-v-03feb1fa]:before{background:#10b981}.fast-analysis-report .result-container .analysis-details .detail-section.risks .detail-list li[data-v-03feb1fa]:before{background:#f59e0b}.fast-analysis-report .result-container .indicators-section[data-v-03feb1fa]{background:#fff;padding:20px 24px;margin-bottom:2px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .indicators-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;font-size:13px;font-weight:700;margin-bottom:8px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .section-title .indicators-pro-badge[data-v-03feb1fa]{margin:0;font-size:10px;line-height:16px;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;font-size:11px;line-height:1.5;color:#999;margin-bottom:14px;padding:8px 12px;background:rgba(0,0,0,.02);border-radius:6px;border:none}.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);margin-top:1px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{margin-top:18px;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#555;margin-bottom:10px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{font-size:11px;color:#999;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{font-size:11px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#10b981;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#ef4444;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:12px 10px;text-align:center;border:none;-webkit-transition:background .15s;transition:background .15s}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:rgba(0,0,0,.04)}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:6px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{font-size:15px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{font-size:10px;color:#999;margin-top:3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .feedback-section[data-v-03feb1fa]{background:#fff;border-radius:0 0 16px 16px;padding:18px 24px;text-align:center;border:none;-webkit-box-shadow:none;box-shadow:none}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-03feb1fa]{font-size:13px;color:#999;margin-bottom:10px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-03feb1fa]{min-width:90px;border-radius:8px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{font-size:11px;color:#bbb;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:14px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:none;border-bottom:1px solid #ebeef2}}@media (max-width:576px){.fast-analysis-report[data-v-03feb1fa]{padding:8px 6px}.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-03feb1fa]{padding:20px 16px}.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{gap:14px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-03feb1fa],.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:26px}}.fast-analysis-report.theme-dark[data-v-03feb1fa]{background:#111113}.fast-analysis-report.theme-dark[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#333}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .empty-content .empty-icon[data-v-03feb1fa]{color:#444}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .empty-content .empty-hint[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(16,185,129,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-text[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(239,68,68,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-text[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(245,158,11,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-text[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .decision-card .decision-text[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .decision-summary[data-v-03feb1fa]{color:#a0a0a8;border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-value[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa] .ant-progress-text{color:#e8e8ec!important}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .cm-item em[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .price-info-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#60a5fa}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{background:#222224;color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .scores-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}.fast-analysis-report.theme-dark .result-container .detailed-analysis[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .analysis-details[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{color:#a0a0a8;border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:hsla(0,0%,100%,.05)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-row,.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-view{border-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc th.ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc td.ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content>span{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#34d399!important}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#f87171!important}.fast-analysis-report.theme-dark .result-container .feedback-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .feedback-section .feedback-question[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]{background:#222224;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}@media (max-width:992px){.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:transparent;border-bottom-color:hsla(0,0%,100%,.06)}}.ai-analysis-container[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-0fce93ef]{height:auto;min-height:700px;background:transparent}@media (max-width:768px){.ai-analysis-container.embedded[data-v-0fce93ef]{min-height:0}}.ai-analysis-container.embedded .main-content-full[data-v-0fce93ef]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.ai-analysis-container.embedded .top-index-bar[data-v-0fce93ef]{margin-top:6px}.main-content-full[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-0fce93ef]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-0fce93ef],.top-index-bar[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-0fce93ef]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-0fce93ef]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-0fce93ef]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-0fce93ef]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-0fce93ef]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-0fce93ef]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-0fce93ef],.top-index-bar .indicator-box.vix.low .ind-value[data-v-0fce93ef]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-0fce93ef]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-0fce93ef]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-0fce93ef]{color:#2563eb}.top-index-bar .indices-marquee[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-0fce93ef 35s linear infinite;animation:marquee-0fce93ef 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-0fce93ef]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-0fce93ef]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-0fce93ef]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-0fce93ef]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-0fce93ef]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-0fce93ef]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-0fce93ef]{color:#dc2626}@-webkit-keyframes marquee-0fce93ef{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-0fce93ef{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-0fce93ef]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-0fce93ef]:hover{color:#1e293b}.main-body[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-0fce93ef]{width:280px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px;overflow-y:auto}.left-panel .heatmap-box[data-v-0fce93ef]{background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.left-panel .heatmap-box .box-header[data-v-0fce93ef]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;background:#f4f5f7;border-radius:8px;padding:2px}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;font-weight:600;padding:0 8px;height:24px;line-height:22px;border:none;border-radius:6px;background:transparent;color:#8c8c8c;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all .2s;transition:all .2s}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper:before{display:none}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper:hover{color:#555}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#fff;border-color:transparent;color:#111;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.left-panel .heatmap-box .heatmap-grid[data-v-0fce93ef]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-0fce93ef]{padding:6px 4px;border-radius:6px;text-align:center;font-size:9px;-webkit-transition:-webkit-transform .15s;transition:-webkit-transform .15s;transition:transform .15s;transition:transform .15s,-webkit-transform .15s}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-0fce93ef]:hover{-webkit-transform:scale(1.03);transform:scale(1.03)}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-0fce93ef]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-0fce93ef]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-0fce93ef]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-0fce93ef]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-0fce93ef]{font-size:12px;color:#555;font-weight:700;letter-spacing:-.1px}.left-panel .calendar-box .box-header .box-title .anticon[data-v-0fce93ef]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-0fce93ef]::-webkit-scrollbar{width:3px}.left-panel .calendar-box .calendar-list[data-v-0fce93ef]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-0fce93ef]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-0fce93ef]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-0fce93ef]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-0fce93ef]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-0fce93ef]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-0fce93ef]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-0fce93ef]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-0fce93ef]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-0fce93ef]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-0fce93ef]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-0fce93ef]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-0fce93ef]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.right-panel .analysis-toolbar[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f0f2f5;background:#fafbfc;border-radius:10px 10px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar[data-v-0fce93ef] .symbol-selector .wl-select-option-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap;gap:8px;min-width:0}.right-panel .analysis-toolbar[data-v-0fce93ef] .symbol-selector .wl-select-symbol{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:0}.right-panel .analysis-toolbar[data-v-0fce93ef] .symbol-selector .wl-select-name{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;margin-left:0;padding-left:4px;color:#8c8c8c;font-size:13px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:1px solid #f0f0f0}.right-panel .analysis-toolbar .analyze-button[data-v-0fce93ef]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);border-radius:8px;font-weight:600}.right-panel .analysis-toolbar .history-button[data-v-0fce93ef]{border-color:#d9d9d9;border-radius:8px}.right-panel .analysis-main[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;min-height:300px}.watchlist-panel[data-v-0fce93ef]{width:320px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #f0f2f5;background:#fafbfc}.watchlist-panel .panel-header .panel-title[data-v-0fce93ef]{font-size:13px;font-weight:700;color:#333;letter-spacing:-.1px}.watchlist-panel .panel-header .panel-title .anticon[data-v-0fce93ef]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:6px 8px}.watchlist-panel .watchlist-list[data-v-0fce93ef]::-webkit-scrollbar{width:3px}.watchlist-panel .watchlist-list[data-v-0fce93ef]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-empty[data-v-0fce93ef]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-0fce93ef]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-0fce93ef]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-0fce93ef{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-0fce93ef{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-0fce93ef]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto;overflow-x:hidden;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.main-content-full[data-v-0fce93ef]{height:auto;min-height:auto}.top-index-bar[data-v-0fce93ef]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:6px 8px}.top-index-bar .indicator-box[data-v-0fce93ef]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-0fce93ef]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:6px}.main-body[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:8px;gap:8px}.left-panel[data-v-0fce93ef]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:8px}.left-panel .calendar-box[data-v-0fce93ef],.left-panel .heatmap-box[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-0fce93ef]{max-height:200px}.right-panel .analysis-toolbar[data-v-0fce93ef]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-0fce93ef]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-0fce93ef],.right-panel .analysis-toolbar .history-button[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-0fce93ef]{width:100%;max-height:250px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.hero-stats[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hero-stats .hstat[data-v-0fce93ef]{width:100%;max-width:300px;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media (max-width:576px){.main-body[data-v-0fce93ef]{padding:4px 6px;gap:6px}.top-index-bar[data-v-0fce93ef]{padding:5px 6px;gap:6px}.top-index-bar .indicator-box[data-v-0fce93ef]{padding:2px 5px}.top-index-bar .indicator-box .ind-value[data-v-0fce93ef]{font-size:11px}.top-index-bar .indices-marquee .index-item[data-v-0fce93ef]{font-size:10px;padding:2px 5px}.left-panel[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:6px}.left-panel .calendar-box[data-v-0fce93ef],.left-panel .heatmap-box[data-v-0fce93ef]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%;min-width:0;padding:8px;border-radius:8px}.left-panel .calendar-box[data-v-0fce93ef]{max-height:220px}.left-panel .heatmap-box .box-header[data-v-0fce93ef]{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;padding:0 2px 6px}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;white-space:nowrap}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.right-panel[data-v-0fce93ef]{border-radius:8px}.right-panel .analysis-toolbar[data-v-0fce93ef]{padding:6px 8px;gap:6px}.right-panel .analysis-toolbar[data-v-0fce93ef] .ant-btn-lg{height:36px;padding:0 10px;font-size:13px}.right-panel .analysis-toolbar[data-v-0fce93ef] .symbol-selector .ant-select-selection--single{height:36px!important}.right-panel .analysis-toolbar[data-v-0fce93ef] .symbol-selector .ant-select-selection__rendered{line-height:34px!important}.right-panel .analysis-main[data-v-0fce93ef]{padding:6px 8px}.watchlist-panel[data-v-0fce93ef]{max-height:min(42vh,320px);border-radius:8px}.watchlist-panel .panel-header[data-v-0fce93ef]{padding:8px 10px}.watchlist-panel .watchlist-list[data-v-0fce93ef]{padding:4px 6px}.batch-bar[data-v-0fce93ef]{margin:6px 6px 4px;padding:8px 8px;gap:6px}.panel-summary[data-v-0fce93ef]{-ms-flex-wrap:wrap;flex-wrap:wrap}.panel-summary .summary-chip[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1 1 22%;flex:1 1 22%;min-width:0;padding:5px 2px}.panel-summary .sc-num[data-v-0fce93ef]{font-size:12px}.panel-summary .sc-label[data-v-0fce93ef]{font-size:8px;letter-spacing:.2px}.placeholder-hero .hero-body[data-v-0fce93ef]{padding:16px 10px;max-width:100%}.hero-title[data-v-0fce93ef]{font-size:20px}.hero-subtitle[data-v-0fce93ef]{font-size:13px;margin-bottom:14px}.hero-stats[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;gap:8px;margin-bottom:14px}.hero-stats .hstat[data-v-0fce93ef]{width:100%;max-width:none;-webkit-box-flex:0;-ms-flex:none;flex:none;padding:10px 10px}.hero-cta[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;gap:8px}.hero-cta .ant-btn[data-v-0fce93ef]{width:100%;height:40px}.wl-card[data-v-0fce93ef]{padding:8px 10px}}.ai-analysis-container.theme-dark[data-v-0fce93ef]{background:#0a0a0a;color:#d4d4d4}.ai-analysis-container.theme-dark .main-content-full[data-v-0fce93ef]{background:#141416;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.4);box-shadow:0 2px 8px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .top-index-bar[data-v-0fce93ef]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-0fce93ef]{color:#777}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-0fce93ef]:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-0fce93ef]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-0fce93ef]{color:#ccc}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary[data-v-0fce93ef]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .summary-chip[data-v-0fce93ef]{border-right-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-num[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-label[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar[data-v-0fce93ef]{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .batch-all-cb[data-v-0fce93ef]{color:#a0a0a8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary){background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list[data-v-0fce93ef]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card[data-v-0fce93ef]:hover{background:#222224;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-0fce93ef]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-symbol[data-v-0fce93ef]{color:#e0e0e0}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-market[data-v-0fce93ef]{color:#666;background:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-price[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-pnl-qty[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-badge.paused[data-v-0fce93ef]{background:hsla(0,0%,100%,.05);color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-next[data-v-0fce93ef]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions[data-v-0fce93ef]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#222224));background:linear-gradient(90deg,transparent,#222224 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-0fce93ef]{background:#1a1a1c;color:#888;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn.danger[data-v-0fce93ef]:hover{color:#f87171;background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-0fce93ef]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-0fce93ef]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .we-icon[data-v-0fce93ef]{color:#333}.ai-analysis-container.theme-dark .placeholder-hero .hero-bg-grid[data-v-0fce93ef]{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0)}.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-0fce93ef]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hero-title[data-v-0fce93ef]{color:#e0e0e0}.ai-analysis-container.theme-dark .placeholder-hero .hero-hint[data-v-0fce93ef],.ai-analysis-container.theme-dark .placeholder-hero .hero-subtitle[data-v-0fce93ef]{color:#777}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:none;box-shadow:none}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-0fce93ef]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-0fce93ef]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-val[data-v-0fce93ef]{color:#ddd}.ai-analysis-container.theme-dark .placeholder-hero .hstat-label[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-0fce93ef]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-0fce93ef]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-0fce93ef]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-0fce93ef],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-0fce93ef]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-0fce93ef]{color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-0fce93ef] .ant-radio-group{background:#111113}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper{background:transparent;border-color:transparent;color:#666}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper:hover{color:#aaa}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#2a2a2c;color:#e8e8e8;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-0fce93ef]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-0fce93ef]{border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-0fce93ef]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-0fce93ef]{color:#777}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-0fce93ef]{color:#ccc}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-0fce93ef]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .calendar-list[data-v-0fce93ef]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .right-panel[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-0fce93ef]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-0fce93ef]{background:#222224;border-color:hsla(0,0%,100%,.08);color:#ccc}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-0fce93ef]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary){background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark .wl-change.up[data-v-0fce93ef]{background:rgba(74,222,128,.1)}.ai-analysis-container.theme-dark .wl-change.down[data-v-0fce93ef]{background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .panel-header-icon[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .panel-header-icon[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.ai-analysis-container.theme-dark .panel-summary[data-v-0fce93ef]{background:#141416}.ai-analysis-container.theme-dark .batch-bar[data-v-0fce93ef]{background:#1c1c1c!important;border:1px solid #2a2a2a!important;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .batch-bar .batch-all-cb[data-v-0fce93ef]{color:#a0a0a8}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary){background:#2a2a2c!important;border-color:#3a3a3c!important;color:#b0b0b8!important}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{background:#333336!important;border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-0fce93ef]{background:#141414;border-top-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-0fce93ef]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-0fce93ef]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-0fce93ef],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-0fce93ef]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-0fce93ef]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark[data-v-0fce93ef] .symbol-selector .ant-select-selection{background-color:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .symbol-selector .wl-select-name{color:#888!important;border-left-color:#333!important}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-tab{color:#888}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-tab:hover{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-tab-active{color:#1890ff!important}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-ink-bar{background-color:#1890ff}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input::-webkit-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input::-moz-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input:-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input::-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input::placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input-number{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input-number .ant-input-number-handler-wrap{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-select-arrow{color:#666}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-checkbox-wrapper,.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-form-item-label>label,.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-radio-wrapper{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-alert-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-list-item-meta-title{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-list-item-meta-description{color:#888}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-empty-description{color:#666}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tooltip-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-badge-count{-webkit-box-shadow:0 0 0 1px #141414;box-shadow:0 0 0 1px #141414}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-popover-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-popover-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-popover-arrow{border-color:#1c1c1c}.placeholder-hero[data-v-0fce93ef]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;overflow:hidden}.hero-bg[data-v-0fce93ef]{position:absolute;inset:0;pointer-events:none}.hero-bg-circle[data-v-0fce93ef]{position:absolute;border-radius:50%;opacity:.5}.hero-bg-circle.c1[data-v-0fce93ef]{width:320px;height:320px;top:-80px;right:-60px;background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%);-webkit-animation:hero-float-0fce93ef 6s ease-in-out infinite;animation:hero-float-0fce93ef 6s ease-in-out infinite}.hero-bg-circle.c2[data-v-0fce93ef]{width:240px;height:240px;bottom:-40px;left:-40px;background:radial-gradient(circle,rgba(114,46,209,.08) 0,transparent 70%);animation:hero-float-0fce93ef 8s ease-in-out infinite reverse}.hero-bg-grid[data-v-0fce93ef]{position:absolute;inset:0;background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0);background-size:32px 32px}@-webkit-keyframes hero-float-0fce93ef{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}@keyframes hero-float-0fce93ef{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}.hero-body[data-v-0fce93ef]{position:relative;text-align:center;padding:40px 32px;max-width:560px}.hero-badge[data-v-0fce93ef]{display:inline-block;padding:3px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2);margin-bottom:16px}.hero-title[data-v-0fce93ef]{font-size:26px;font-weight:800;color:#0f172a;margin-bottom:8px;letter-spacing:-.3px;line-height:1.3}.hero-subtitle[data-v-0fce93ef]{font-size:14px;color:#64748b;margin-bottom:32px;line-height:1.5}.hero-stats[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:32px;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.hstat[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;text-align:left;-webkit-transition:all .25s;transition:all .25s}.hstat[data-v-0fce93ef]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.hstat-icon[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));font-size:16px;color:var(--primary-color,#1890ff);-ms-flex-negative:0;flex-shrink:0}.hstat-body[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0}.hstat-val[data-v-0fce93ef]{font-size:12px;font-weight:700;color:#0f172a}.hstat-label[data-v-0fce93ef],.hstat-val[data-v-0fce93ef]{line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hstat-label[data-v-0fce93ef]{font-size:10px;color:#94a3b8;margin-top:1px}.hero-cta[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:16px}.hero-cta .ant-btn[data-v-0fce93ef]{border-radius:10px;font-weight:600;height:42px;padding:0 24px;font-size:14px}.hero-cta .ant-btn-primary[data-v-0fce93ef]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}.hero-hint[data-v-0fce93ef]{font-size:12px;color:#94a3b8}.panel-header-actions[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.panel-header-icon[data-v-0fce93ef]{font-size:15px;color:#94a3b8;cursor:pointer;padding:4px;border-radius:6px;-webkit-transition:color .2s,background .2s;transition:color .2s,background .2s}.panel-header-icon[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.panel-summary[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;padding:0;border-bottom:1px solid #f1f5f9}.summary-chip[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;border-right:1px solid #f1f5f9}.summary-chip[data-v-0fce93ef]:last-child{border-right:none}.sc-num[data-v-0fce93ef]{font-size:14px;font-weight:700;color:#0f172a;line-height:1.2;font-family:SF Mono,Monaco,monospace}.sc-num.up[data-v-0fce93ef]{color:#16a34a}.sc-num.down[data-v-0fce93ef]{color:#dc2626}.sc-label[data-v-0fce93ef]{font-size:9px;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.batch-bar[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:10px 12px;margin:8px 10px;margin-bottom:4px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-ms-flex-wrap:wrap;flex-wrap:wrap}.batch-all-cb[data-v-0fce93ef]{font-size:12px;font-weight:500;color:#475569;margin-right:4px}.batch-bar .ant-btn[data-v-0fce93ef]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:all .2s;transition:all .2s}.batch-bar .ant-btn-primary[data-v-0fce93ef]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}.batch-bar .ant-btn-primary[data-v-0fce93ef]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05)}.batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary){background:#f8fafc;border-color:#e2e8f0;color:#64748b}.batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.wl-card[data-v-0fce93ef]{position:relative;padding:10px 12px;border-radius:8px;cursor:pointer;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);margin-bottom:3px;border:1px solid transparent}.wl-card[data-v-0fce93ef]:hover{background:#f5f7fa;border-color:#e8ecf1}.wl-card.active[data-v-0fce93ef]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.wl-card-cb[data-v-0fce93ef]{position:absolute;top:12px;left:4px;z-index:1}.wl-card-body[data-v-0fce93ef]{-webkit-transition:padding-left .2s;transition:padding-left .2s}.wl-card-body.with-cb[data-v-0fce93ef]{padding-left:24px}.wl-row-main[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:5px}.wl-symbol[data-v-0fce93ef]{font-size:13px;font-weight:700;color:#0f172a}.wl-market[data-v-0fce93ef]{font-size:9px;color:#94a3b8;letter-spacing:.3px;padding:1px 4px;background:#f1f5f9;border-radius:3px}.wl-spacer[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wl-price[data-v-0fce93ef]{font-size:12px;font-weight:600;color:#0f172a;font-family:SF Mono,Monaco,monospace}.wl-change[data-v-0fce93ef]{font-size:10px;font-weight:700;font-family:SF Mono,Monaco,monospace;padding:1px 5px;border-radius:4px;margin-left:4px}.wl-change.up[data-v-0fce93ef]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-change.down[data-v-0fce93ef]{color:#dc2626;background:rgba(220,38,38,.06)}.wl-row-pnl[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-top:4px;font-family:SF Mono,Monaco,monospace}.wl-pnl-qty[data-v-0fce93ef]{font-size:10px;color:#94a3b8}.wl-pnl-val[data-v-0fce93ef]{font-size:10px;font-weight:600;margin-left:auto}.wl-pnl-val.up[data-v-0fce93ef]{color:#16a34a}.wl-pnl-val.down[data-v-0fce93ef]{color:#dc2626}.wl-row-task[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:4px}.wl-row-task[data-v-0fce93ef],.wl-task-badge[data-v-0fce93ef]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wl-task-badge[data-v-0fce93ef]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:3px;font-size:10px;padding:1px 8px;border-radius:10px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.wl-task-badge.active[data-v-0fce93ef]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-task-badge.paused[data-v-0fce93ef]{color:#94a3b8;background:#f1f5f9}.wl-task-badge[data-v-0fce93ef]:hover{opacity:.75}.wl-task-next[data-v-0fce93ef]{font-size:10px;color:#94a3b8;margin-left:auto}.wl-card-hover-actions[data-v-0fce93ef]{position:absolute;top:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;padding-right:8px;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s;background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#f8fafc));background:linear-gradient(90deg,transparent,#f8fafc 30%);border-radius:0 8px 8px 0;pointer-events:none}.wl-card:hover .wl-card-hover-actions[data-v-0fce93ef]{opacity:1;pointer-events:auto}.wl-card.active .wl-card-hover-actions[data-v-0fce93ef]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}.wl-hover-btn[data-v-0fce93ef]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:13px;color:#64748b;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06)}.wl-hover-btn[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}.wl-hover-btn.danger[data-v-0fce93ef]:hover{color:#dc2626;background:#fef2f2}.watchlist-empty[data-v-0fce93ef]{text-align:center;padding:32px 16px}.we-icon[data-v-0fce93ef]{font-size:36px;color:#e2e8f0;margin-bottom:12px}.watchlist-empty p[data-v-0fce93ef]{font-size:12px;color:#94a3b8;margin-bottom:12px}.batch-modal-summary[data-v-0fce93ef]{margin-bottom:16px}.batch-modal-summary p[data-v-0fce93ef]{font-size:13px;color:#475569;margin-bottom:8px}.batch-symbols-preview[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:80px;overflow-y:auto}.task-drawer-empty[data-v-0fce93ef]{text-align:center;padding:48px 16px;color:#94a3b8}.task-drawer-empty p[data-v-0fce93ef]{margin-top:12px;font-size:13px}.task-drawer-list[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.task-item[data-v-0fce93ef]{padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;background:#fafafa;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.task-item[data-v-0fce93ef]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.task-item-header[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.task-item-name[data-v-0fce93ef]{font-size:13px;font-weight:600;color:#0f172a}.task-item-meta[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b;margin-bottom:10px}.task-item-meta .anticon[data-v-0fce93ef]{margin-right:4px}.task-item-actions[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-top:4px}.task-item-actions .ant-btn[data-v-0fce93ef]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-transition:all .2s;transition:all .2s;border-width:1px}.task-item-actions .ant-btn.ant-btn-primary[data-v-0fce93ef]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.04);box-shadow:0 1px 2px rgba(0,0,0,.04)}.task-item-actions .ant-btn.ant-btn-primary[data-v-0fce93ef]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05);-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}.task-item-actions .ant-btn.ant-btn-default[data-v-0fce93ef]{background:#f8fafc;border-color:#e2e8f0;color:#475569}.task-item-actions .ant-btn.ant-btn-default[data-v-0fce93ef]:hover{background:#f1f5f9;border-color:#cbd5e1;color:#334155}.task-item-actions .ant-btn.ant-btn-danger[data-v-0fce93ef]{background:#fef2f2;border-color:#fecaca;color:#dc2626}.task-item-actions .ant-btn.ant-btn-danger[data-v-0fce93ef]:hover{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.add-stock-modal-content .market-tabs[data-v-0fce93ef]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-0fce93ef],.add-stock-modal-content .search-results-section[data-v-0fce93ef],.add-stock-modal-content .symbol-search-section[data-v-0fce93ef]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-0fce93ef],.add-stock-modal-content .search-results-section .section-title[data-v-0fce93ef]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-0fce93ef]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-0fce93ef]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-0fce93ef]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-0fce93ef]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-0fce93ef]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-0fce93ef]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-0fce93ef]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-0fce93ef]{width:40px;height:9px}.skeleton-cell[data-v-0fce93ef]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-0fce93ef]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-0fce93ef]{width:50%;height:8px}.skeleton-item[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-0fce93ef]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-0fce93ef]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-0fce93ef],.indices-loading[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-0fce93ef]{margin-right:6px}.heatmap-empty[data-v-0fce93ef]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-0fce93ef{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-0fce93ef{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-0fce93ef],.theme-dark .skeleton-cell .skeleton-text[data-v-0fce93ef],.theme-dark .skeleton-item .skeleton-text[data-v-0fce93ef]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#2a2a2a),color-stop(50%,#333),color-stop(75%,#2a2a2a));background:linear-gradient(90deg,#2a2a2a 25%,#333 50%,#2a2a2a 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-0fce93ef]{background:#1c1c1c!important}.theme-dark .heatmap-empty[data-v-0fce93ef],.theme-dark .indices-empty[data-v-0fce93ef],.theme-dark .indices-loading[data-v-0fce93ef]{color:#666}.qd-dark-modal .ant-modal-content{background:#141414}.qd-dark-modal .ant-modal-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-modal .ant-modal-header .ant-modal-title{color:#d4d4d4}.qd-dark-modal .ant-modal-close-x{color:#888}.qd-dark-modal .ant-modal-body{background:#141414;color:#d4d4d4}.qd-dark-modal .ant-modal-footer{background:#141414;border-top-color:#2a2a2a}.qd-dark-modal .ant-modal-footer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-modal .ant-form-item-label>label{color:#d4d4d4}.qd-dark-modal .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-input::-webkit-input-placeholder{color:#555}.qd-dark-modal .ant-input::-moz-placeholder{color:#555}.qd-dark-modal .ant-input:-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::placeholder{color:#555}.qd-dark-modal .ant-input-number,.qd-dark-modal .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-arrow{color:#666}.qd-dark-modal .ant-checkbox-wrapper,.qd-dark-modal .ant-radio-wrapper{color:#d4d4d4}.qd-dark-modal .ant-tabs-bar{border-bottom-color:#2a2a2a}.qd-dark-modal .ant-tabs-tab{color:#888}.qd-dark-modal .ant-tabs-tab:hover{color:#d4d4d4}.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}.qd-dark-modal .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.qd-dark-modal .ant-alert-message{color:#d4d4d4}.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}.qd-dark-modal .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-title{color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-description{color:#888}.qd-dark-modal .ant-empty-description{color:#666}.qd-dark-modal .add-stock-modal-content,.qd-dark-modal p{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .section-title{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list{border-color:#2a2a2a;background:#1c1c1c}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item:hover{background:#252525!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-code{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-name{color:#888!important}.qd-dark-modal .add-stock-modal-content .selected-symbol-info strong{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .selected-symbol-info span{color:#888!important}.qd-dark-modal .batch-modal-summary p{color:#d4d4d4}.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-modal .task-item-name{color:#d4d4d4}.qd-dark-modal .task-item-meta{color:#888}.qd-dark-modal .task-drawer-empty{color:#666}.qd-dark-modal .history-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .search-result-item{color:#d4d4d4}.qd-dark-modal .search-result-item:hover{background:#1c1c1c}.qd-dark-modal .search-result-name{color:#d4d4d4}.qd-dark-modal .search-result-market{color:#888}.qd-dark-drawer .ant-drawer-content{background:#141414}.qd-dark-drawer .ant-drawer-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-drawer .ant-drawer-header .ant-drawer-title{color:#d4d4d4}.qd-dark-drawer .ant-drawer-header .ant-drawer-close{color:#888}.qd-dark-drawer .ant-drawer-body{background:#141414;color:#d4d4d4}.qd-dark-drawer .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-drawer .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-drawer .task-item-name{color:#d4d4d4}.qd-dark-drawer .task-item-meta{color:#888}.qd-dark-drawer .task-drawer-empty{color:#666}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary:hover{-webkit-filter:brightness(1.1);filter:brightness(1.1)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default{background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.25);color:#f87171}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger:hover{background:rgba(239,68,68,.18);border-color:rgba(239,68,68,.4);color:#fca5a5}.qd-dark-drawer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-drawer .ant-btn-danger{background:transparent}.qd-dark-drawer .ant-popover-inner{background:#1c1c1c}.qd-dark-drawer .ant-popover-message,.qd-dark-drawer .ant-popover-message-title{color:#d4d4d4}.qd-dark-drawer .ant-popover-buttons .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-dropdown,body.colorWeak .ant-select-dropdown{background:#1c1c1c}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d4d4d4}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-active,.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff} \ No newline at end of file diff --git a/frontend/dist/css/161.a7b2f719.css b/frontend/dist/css/161.a7b2f719.css deleted file mode 100644 index a9e627b..0000000 --- a/frontend/dist/css/161.a7b2f719.css +++ /dev/null @@ -1 +0,0 @@ -.profile-exchange-modal .exchange-account-form .egress-ip-block{width:100%}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin:0 0 16px;padding:12px 14px;border:1px solid rgba(24,144,255,.18);border-radius:10px;background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.06)),to(rgba(82,196,26,.04)));background:linear-gradient(90deg,rgba(24,144,255,.06),rgba(82,196,26,.04))}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;min-width:0}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__icon{width:28px;height:28px;border-radius:50%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:rgba(24,144,255,.12);color:#1890ff;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__text{min-width:0}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__title{color:rgba(0,0,0,.85);font-size:13px;font-weight:600;line-height:1.5}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__hint{color:rgba(0,0,0,.55);font-size:12px;line-height:1.5;margin-top:2px}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__action{padding:0;white-space:nowrap;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.profile-exchange-modal .exchange-account-form .egress-ip-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.profile-exchange-modal .exchange-account-form .egress-ip-refresh-row{margin-top:4px}.profile-exchange-modal .exchange-account-form .egress-ip-line{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:10px}.profile-exchange-modal .exchange-account-form .egress-ip-kind{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;min-width:42px;font-size:12px;color:rgba(0,0,0,.55)}.profile-exchange-modal .exchange-account-form .egress-ip-value{-webkit-box-flex:1;-ms-flex:1 1 160px;flex:1 1 160px;min-width:0;font-family:Consolas,ui-monospace,monospace;font-size:12px;padding:6px 10px;border-radius:4px;border:1px solid #d9d9d9;background:#fafafa;color:#262626;word-break:break-all}.profile-exchange-modal .exchange-account-form .exchange-demo-checkbox-label{color:rgba(0,0,0,.85)}.profile-exchange-modal .exchange-account-form .exchange-demo-hint{margin-top:6px}.profile-exchange-modal .exchange-account-form .field-hint{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:6px}.profile-exchange-modal .exchange-account-form .test-result-msg{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-exchange-modal .exchange-account-form .test-result-msg.success{color:#52c41a}.profile-exchange-modal .exchange-account-form .test-result-msg.error{color:#f5222d}.profile-exchange-modal--dark .ant-modal-content{background:#1c1c1c;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.45);box-shadow:0 8px 32px rgba(0,0,0,.45)}.profile-exchange-modal--dark .ant-modal-header{background:#1c1c1c;border-bottom:1px solid #2a2a2a}.profile-exchange-modal--dark .ant-modal-title{color:#e0e6ed}.profile-exchange-modal--dark .ant-modal-close{color:#8b949e}.profile-exchange-modal--dark .ant-modal-body,.profile-exchange-modal--dark .ant-modal-close:hover{color:#c9d1d9}.profile-exchange-modal--dark .ant-modal-footer{background:#1c1c1c;border-top:1px solid #2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-label>label{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-explain,.profile-exchange-modal--dark .exchange-account-form .ant-form-item-extra{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-number,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-password .ant-input{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-input-password-icon{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-wrap{background:#141414;border-left-color:#2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-down-inner,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-up-inner{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-select-selector{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-item,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection--single{background:#141414!important;border-color:#2a2a2a!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-selected-value,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection__rendered{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-arrow{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper,.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper span{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .exchange-demo-checkbox-label{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .egress-ip-hint,.profile-exchange-modal--dark .exchange-account-form .exchange-demo-hint{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout{background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.12)),to(rgba(82,196,26,.08)));background:linear-gradient(90deg,rgba(24,144,255,.12),rgba(82,196,26,.08));border-color:rgba(88,166,255,.26)}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__icon{background:rgba(88,166,255,.16);color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__title{color:#e0e6ed}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__hint{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__action{color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .egress-ip-value{border-color:#2a2a2a!important;background:#141414!important;color:#e0e6ed!important}.profile-exchange-modal--dark .exchange-account-form a.egress-ip-action{color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .egress-ip-kind{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .ant-alert{background:rgba(250,173,20,.12);border-color:rgba(250,173,20,.45)}.profile-exchange-modal--dark .exchange-account-form .ant-alert-message{color:#ffc53d}.profile-exchange-modal--dark .exchange-account-form .ant-alert-description{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-alert-icon{color:#faad14}.profile-exchange-modal--dark .exchange-account-form .field-hint{color:#8b949e;margin-top:6px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:6px}.profile-exchange-modal--dark .exchange-account-form .field-hint .anticon{color:#8b949e;margin-top:2px}.profile-exchange-modal--dark .exchange-account-form .test-result-msg{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.success{color:#73d13d}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.error{color:#ff7875}.profile-exchange-select-dropdown-dark.ant-select-dropdown{background:#1c1c1c}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item{color:#c9d1d9}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#2a2a2a}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:#2a2a2a!important;color:#e0e6ed;font-weight:500}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-group-title{color:#8b949e!important;font-size:12px}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item,.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{color:#c9d1d9!important}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-empty-description{color:#8b949e}.quick-trade-drawer[data-v-75b64b85] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-75b64b85]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-75b64b85],.qt-header[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-75b64b85]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-75b64b85]{font-size:20px;color:#595959}.qt-header .qt-header-left .qt-header-title[data-v-75b64b85]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-75b64b85]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-75b64b85]:hover{color:#333}.qt-symbol-bar[data-v-75b64b85]{padding:12px 20px;background:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f0f0f0));background:linear-gradient(180deg,#fafafa,#f0f0f0);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85],.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-75b64b85]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-75b64b85]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-75b64b85]{color:#999;font-size:12px}.qt-section[data-v-75b64b85]{padding:8px 20px}.qt-section .qt-label[data-v-75b64b85]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-75b64b85]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-75b64b85]{color:#999}.qt-balance .qt-balance-loading-text[data-v-75b64b85]{margin-left:4px}.qt-balance .qt-balance-value[data-v-75b64b85]{color:#52c41a;font-weight:600}.qt-balance .qt-balance-error[data-v-75b64b85]{color:#faad14;cursor:help}.qt-no-cred-actions[data-v-75b64b85]{margin-top:10px}.qt-manage-link[data-v-75b64b85]{margin-top:8px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.qt-manage-link .qt-manage-sep[data-v-75b64b85]{color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-75b64b85]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-75b64b85]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-75b64b85]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-75b64b85]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-75b64b85]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-75b64b85]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-leverage-input[data-v-75b64b85]{width:80px}.qt-card[data-v-75b64b85]{margin-left:16px;margin-right:16px;padding:12px 14px;border-radius:10px;background:#f5f5f5;border:1px solid #e8e8e8}.qt-section-title-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.qt-section-title[data-v-75b64b85]{font-size:13px;font-weight:600;color:#333}.qt-badge-contract[data-v-75b64b85]{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:#ebebeb;color:#595959;border:1px solid #d9d9d9}.qt-optional-tag[data-v-75b64b85]{font-size:10px;color:#8c8c8c;background:#f0f0f0;padding:1px 8px;border-radius:4px}.qt-label-spaced[data-v-75b64b85]{margin-top:10px}.qt-margin-radio[data-v-75b64b85]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-margin-radio[data-v-75b64b85] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px}.qt-hint-text[data-v-75b64b85]{font-size:11px;color:#8c8c8c;line-height:1.45;margin-top:8px}.qt-hint-inline[data-v-75b64b85]{margin-top:6px}.qt-spot-banner[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:4px 0}.qt-spot-banner-icon[data-v-75b64b85]{font-size:22px;color:#52c41a;margin-top:2px}.qt-spot-banner-title[data-v-75b64b85]{font-size:13px;font-weight:600;color:#333;margin-bottom:4px}.qt-spot-banner-text .qt-hint-text[data-v-75b64b85]{margin-top:0}.qt-tpsl-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-tp-label[data-v-75b64b85]{color:#389e0d!important}.qt-sl-label[data-v-75b64b85]{color:#cf1322!important}.qt-input-full[data-v-75b64b85]{width:100%}.qt-dir-btn.qt-dir-disabled[data-v-75b64b85]{opacity:.42;cursor:not-allowed;pointer-events:none}.qt-empty-icon[data-v-75b64b85]{font-size:28px;color:#d9d9d9;margin-bottom:8px}.qt-empty-desc[data-v-75b64b85]{font-size:12px;color:#8c8c8c;line-height:1.5}.qt-submit-section[data-v-75b64b85]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-75b64b85]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-75b64b85]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-75b64b85]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-75b64b85]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]:active{background:#cf1322!important}.qt-position-section[data-v-75b64b85]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-75b64b85]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-75b64b85]{padding:8px 20px 12px}.qt-history-section[data-v-75b64b85] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-75b64b85] .ant-collapse-item{border:none}.qt-history-section[data-v-75b64b85] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-75b64b85] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-75b64b85] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-75b64b85] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-75b64b85]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-75b64b85]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-75b64b85]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-75b64b85]{border-left-color:#52c41a}.qt-position-card.short[data-v-75b64b85]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-75b64b85]:first-child{color:#999}.qt-position-empty[data-v-75b64b85]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-green[data-v-75b64b85]{color:#52c41a!important}.qt-red[data-v-75b64b85]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-75b64b85]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-75b64b85]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-75b64b85]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-75b64b85]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-75b64b85]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-75b64b85]{border-bottom-color:#303030}.theme-dark .qt-header .qt-icon[data-v-75b64b85]{color:#a3a3a3}.theme-dark .qt-header .qt-header-title[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-75b64b85]{color:#666}.theme-dark .qt-header .qt-close[data-v-75b64b85]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-75b64b85]{background:-webkit-gradient(linear,left top,left bottom,from(#262626),to(#1f1f1f));background:linear-gradient(180deg,#262626,#1f1f1f)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-75b64b85] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-75b64b85] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-75b64b85]{color:#999}.theme-dark .qt-section .qt-label[data-v-75b64b85]{color:#777}.theme-dark .qt-position-card[data-v-75b64b85]{background:#262626}.theme-dark .qt-position-card .qt-pos-row span[data-v-75b64b85]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-75b64b85],.theme-dark .qt-position-card .qt-pos-row span[data-v-75b64b85]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-75b64b85]{color:#888}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-75b64b85]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-75b64b85]{color:#ccc}.theme-dark[data-v-75b64b85] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-75b64b85] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-75b64b85] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-75b64b85] .ant-drawer-content{background:#141414}.theme-dark[data-v-75b64b85] .ant-input-number,.theme-dark[data-v-75b64b85] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-75b64b85] .ant-radio-group .ant-radio-button-wrapper{background:#262626;border-color:#303030;color:#ccc}.theme-dark[data-v-75b64b85] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#434343;border-color:#595959;color:#fff}.theme-dark[data-v-75b64b85] .ant-slider-rail{background:#303030}.theme-dark[data-v-75b64b85] .ant-slider-track{background:#737373}.theme-dark .qt-manage-link a[data-v-75b64b85]{color:#58a6ff}.theme-dark .qt-manage-link .qt-manage-sep[data-v-75b64b85]{color:#555}.theme-dark .qt-card[data-v-75b64b85]{background:#262626;border-color:#3a3a3a}.theme-dark .qt-section-title[data-v-75b64b85]{color:#e8e8e8}.theme-dark .qt-badge-contract[data-v-75b64b85]{background:#333;color:#bfbfbf;border-color:#434343}.theme-dark .qt-optional-tag[data-v-75b64b85]{background:#2a2a2a;color:#888}.theme-dark .qt-hint-text[data-v-75b64b85]{color:#777}.theme-dark .qt-spot-banner-title[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-spot-banner-icon[data-v-75b64b85]{color:#73d13d}.theme-dark .qt-tp-label[data-v-75b64b85]{color:#95de64!important}.theme-dark .qt-sl-label[data-v-75b64b85]{color:#ff7875!important}.theme-dark .qt-position-empty[data-v-75b64b85]{background:#262626;border-color:#303030}.theme-dark .qt-empty-icon[data-v-75b64b85]{color:#434343}.theme-dark .qt-empty-desc[data-v-75b64b85]{color:#888}.polymarket-analysis-modal .input-section .input-actions[data-v-67e891d2]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-67e891d2]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-67e891d2]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-67e891d2]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-67e891d2]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-67e891d2]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-67e891d2]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-67e891d2]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-67e891d2]{text-align:center;padding:40px 0}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-bar{border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab-active{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-ink-bar{background:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider{color:#d4d4d4;border-top-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider-inner-text{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-affix-wrapper,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-number,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-textarea textarea{background:#141414!important;border-color:#2a2a2a!important;color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table{background:#1c1c1c;color:#d4d4d4}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-thead>tr>th{background:#252525;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-tbody>tr>td{background:#1c1c1c;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-btn-link{color:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert{background:#1c1c1c;border-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-message{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-description{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark .market-info h3[data-v-67e891d2]{color:#d4d4d4}.polymarket-analysis-modal.theme-dark .market-info .market-meta .meta-item[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:#b3b3b3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section h4[data-v-67e891d2]{color:#d4d4d4}.ai-asset-analysis-page[data-v-0d0a10d6]{padding:20px;min-height:calc(100vh - 120px);background:#f0f2f5;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow-x:hidden}.ai-asset-analysis-page .radar-section[data-v-0d0a10d6]{margin-bottom:20px}.ai-asset-analysis-page .radar-section .radar-header[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:14px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-0d0a10d6]{margin:0;font-size:16px;font-weight:700;color:#1a1a1a;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-0d0a10d6]{margin:2px 0 0;font-size:12px;color:#999}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]{border-radius:8px;border:1px solid #e0e0e0;background:#fff;color:#666;font-size:12px;font-weight:500}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]:hover{border-color:#6366f1;color:#6366f1}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]{overflow:hidden;position:relative;border-radius:12px;padding:2px 0}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{content:"";position:absolute;top:0;bottom:0;width:50px;z-index:2;pointer-events:none}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-track[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-animation:radar-scroll-0d0a10d6 60s linear infinite;animation:radar-scroll-0d0a10d6 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .radar-section .radar-track.paused[data-v-0d0a10d6]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes radar-scroll-0d0a10d6{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes radar-scroll-0d0a10d6{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:250px;background:#fff;border-radius:12px;padding:16px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0;border:1px solid #eaeaea;-webkit-transition:all .25s cubic-bezier(.4,0,.2,1);transition:all .25s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:before{content:"";position:absolute;inset:0;border-radius:12px;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s;background:linear-gradient(135deg,rgba(99,102,241,.04),rgba(139,92,246,.02))}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);border-color:rgba(99,102,241,.3);-webkit-box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1);box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1)}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:hover:before{opacity:1}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:290px}.ai-asset-analysis-page .radar-section .radar-card .rc-head[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{font-weight:800;font-size:15px;color:#111;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol.rc-prediction-title[data-v-0d0a10d6]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-market[data-v-0d0a10d6]{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;padding:2px 7px;border-radius:5px;-ms-flex-negative:0;flex-shrink:0;background:#f5f5f5;color:#888}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-crypto[data-v-0d0a10d6]{color:#7c3aed;background:rgba(124,58,237,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-usstock[data-v-0d0a10d6]{color:#16a34a;background:rgba(22,163,74,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-forex[data-v-0d0a10d6]{color:#d97706;background:rgba(217,119,6,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-0d0a10d6]{color:#0891b2;background:rgba(8,145,178,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:4px;margin-bottom:12px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:3px;padding:7px;border-radius:8px;background:#fafafa}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-label[data-v-0d0a10d6]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:#999}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{font-size:13px;font-weight:700;color:#222}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-0d0a10d6]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-0d0a10d6]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-val[data-v-0d0a10d6]{font-size:11px;font-weight:600}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-0d0a10d6]{color:#0891b2}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-0d0a10d6]{color:#d97706}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-0d0a10d6]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-0d0a10d6]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-footer[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-reason[data-v-0d0a10d6]{font-size:11px;color:#999;line-height:1.4;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-0d0a10d6]{font-size:11px;font-weight:700;color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:4px 12px;border-radius:8px;white-space:nowrap;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-0d0a10d6]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 12px rgba(99,102,241,.35);box-shadow:0 2px 12px rgba(99,102,241,.35)}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;cursor:pointer;-webkit-box-shadow:0 4px 20px rgba(99,102,241,.35);box-shadow:0 4px 20px rgba(99,102,241,.35);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-0d0a10d6 2.5s ease-in-out infinite;animation:qt-float-pulse-0d0a10d6 2.5s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]:hover{-webkit-transform:scale(1.08);transform:scale(1.08);-webkit-box-shadow:0 6px 28px rgba(99,102,241,.5);box-shadow:0 6px 28px rgba(99,102,241,.5)}@-webkit-keyframes qt-float-pulse-0d0a10d6{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-0d0a10d6{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6]{border-radius:14px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06);border:1px solid #e8e8e8}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{margin-bottom:0;padding:0 20px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:15px;font-weight:600;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-0d0a10d6] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-0d0a10d6] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-0d0a10d6]{font-size:64px;color:#6366f1;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{font-size:20px;font-weight:700;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{font-size:14px;color:rgba(0,0,0,.55);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-0d0a10d6]{background:#141414}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-title[data-v-0d0a10d6]{color:#e8e8e8}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-subtitle[data-v-0d0a10d6]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-0d0a10d6]{background:#1c1c1c;border-color:#2a2a2a;color:#999}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-0d0a10d6]:hover{border-color:#6366f1;color:#a78bfa}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-0d0a10d6]:before{background:-webkit-gradient(linear,left top,right top,from(#141414),to(transparent));background:linear-gradient(90deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-0d0a10d6]:after{background:-webkit-gradient(linear,right top,left top,from(#141414),to(transparent));background:linear-gradient(270deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]:before{background:linear-gradient(135deg,rgba(99,102,241,.06),rgba(139,92,246,.03))}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]:hover{border-color:rgba(99,102,241,.25);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15);box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{color:#f0f0f0}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market[data-v-0d0a10d6]{background:hsla(0,0%,100%,.06);color:#888}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-crypto[data-v-0d0a10d6]{color:#a78bfa;background:rgba(167,139,250,.12)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-usstock[data-v-0d0a10d6]{color:#4ade80;background:rgba(74,222,128,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-forex[data-v-0d0a10d6]{color:#fbbf24;background:rgba(251,191,36,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-0d0a10d6]{color:#22d3ee;background:rgba(34,211,238,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{background:hsla(0,0%,100%,.03)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-label[data-v-0d0a10d6]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{color:#ddd}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-0d0a10d6]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-0d0a10d6]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-0d0a10d6]{color:#22d3ee}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-0d0a10d6]{color:#fbbf24}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-0d0a10d6]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-0d0a10d6]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-reason[data-v-0d0a10d6]{color:#555}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-cta[data-v-0d0a10d6]{color:#fff}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-0d0a10d6]{background:#1c1c1c;border-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab-active{color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-ink-bar{background-color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{color:#d4d4d4}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{color:#a3a3a3}@media (max-width:768px){.ai-asset-analysis-page[data-v-0d0a10d6]{padding:8px;min-height:auto}.ai-asset-analysis-page .radar-section[data-v-0d0a10d6]{margin-bottom:10px}.ai-asset-analysis-page .radar-section .radar-header[data-v-0d0a10d6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-0d0a10d6]{font-size:15px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-0d0a10d6]{font-size:11px}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]{-ms-flex-item-align:end;align-self:flex-end}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{width:28px}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:210px;padding:12px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:248px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{font-size:14px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{padding:6px}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]{right:max(8px,env(safe-area-inset-right,0px));bottom:max(68px,calc(52px + env(safe-area-inset-bottom, 0px)));width:44px;height:44px;font-size:20px}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6]{border-radius:10px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{padding:0 6px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:14px;padding:10px 8px;margin-right:2px;white-space:nowrap}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:16px 8px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-0d0a10d6]{font-size:48px;margin-bottom:12px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{font-size:17px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{font-size:13px}}@media (max-width:480px){.ai-asset-analysis-page[data-v-0d0a10d6]{padding:4px}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:188px;padding:10px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:220px}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-0d0a10d6]{gap:3px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{font-size:12px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{padding:0 4px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:13px;padding:8px 6px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:12px 6px}} \ No newline at end of file diff --git a/frontend/dist/css/19.a7b2f719.css b/frontend/dist/css/19.a7b2f719.css deleted file mode 100644 index a9e627b..0000000 --- a/frontend/dist/css/19.a7b2f719.css +++ /dev/null @@ -1 +0,0 @@ -.profile-exchange-modal .exchange-account-form .egress-ip-block{width:100%}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin:0 0 16px;padding:12px 14px;border:1px solid rgba(24,144,255,.18);border-radius:10px;background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.06)),to(rgba(82,196,26,.04)));background:linear-gradient(90deg,rgba(24,144,255,.06),rgba(82,196,26,.04))}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;min-width:0}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__icon{width:28px;height:28px;border-radius:50%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:rgba(24,144,255,.12);color:#1890ff;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__text{min-width:0}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__title{color:rgba(0,0,0,.85);font-size:13px;font-weight:600;line-height:1.5}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__hint{color:rgba(0,0,0,.55);font-size:12px;line-height:1.5;margin-top:2px}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__action{padding:0;white-space:nowrap;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.profile-exchange-modal .exchange-account-form .egress-ip-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.profile-exchange-modal .exchange-account-form .egress-ip-refresh-row{margin-top:4px}.profile-exchange-modal .exchange-account-form .egress-ip-line{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:10px}.profile-exchange-modal .exchange-account-form .egress-ip-kind{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;min-width:42px;font-size:12px;color:rgba(0,0,0,.55)}.profile-exchange-modal .exchange-account-form .egress-ip-value{-webkit-box-flex:1;-ms-flex:1 1 160px;flex:1 1 160px;min-width:0;font-family:Consolas,ui-monospace,monospace;font-size:12px;padding:6px 10px;border-radius:4px;border:1px solid #d9d9d9;background:#fafafa;color:#262626;word-break:break-all}.profile-exchange-modal .exchange-account-form .exchange-demo-checkbox-label{color:rgba(0,0,0,.85)}.profile-exchange-modal .exchange-account-form .exchange-demo-hint{margin-top:6px}.profile-exchange-modal .exchange-account-form .field-hint{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:6px}.profile-exchange-modal .exchange-account-form .test-result-msg{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-exchange-modal .exchange-account-form .test-result-msg.success{color:#52c41a}.profile-exchange-modal .exchange-account-form .test-result-msg.error{color:#f5222d}.profile-exchange-modal--dark .ant-modal-content{background:#1c1c1c;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.45);box-shadow:0 8px 32px rgba(0,0,0,.45)}.profile-exchange-modal--dark .ant-modal-header{background:#1c1c1c;border-bottom:1px solid #2a2a2a}.profile-exchange-modal--dark .ant-modal-title{color:#e0e6ed}.profile-exchange-modal--dark .ant-modal-close{color:#8b949e}.profile-exchange-modal--dark .ant-modal-body,.profile-exchange-modal--dark .ant-modal-close:hover{color:#c9d1d9}.profile-exchange-modal--dark .ant-modal-footer{background:#1c1c1c;border-top:1px solid #2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-label>label{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-explain,.profile-exchange-modal--dark .exchange-account-form .ant-form-item-extra{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-number,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-password .ant-input{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-input-password-icon{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-wrap{background:#141414;border-left-color:#2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-down-inner,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-up-inner{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-select-selector{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-item,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection--single{background:#141414!important;border-color:#2a2a2a!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-selected-value,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection__rendered{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-arrow{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper,.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper span{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .exchange-demo-checkbox-label{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .egress-ip-hint,.profile-exchange-modal--dark .exchange-account-form .exchange-demo-hint{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout{background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.12)),to(rgba(82,196,26,.08)));background:linear-gradient(90deg,rgba(24,144,255,.12),rgba(82,196,26,.08));border-color:rgba(88,166,255,.26)}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__icon{background:rgba(88,166,255,.16);color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__title{color:#e0e6ed}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__hint{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__action{color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .egress-ip-value{border-color:#2a2a2a!important;background:#141414!important;color:#e0e6ed!important}.profile-exchange-modal--dark .exchange-account-form a.egress-ip-action{color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .egress-ip-kind{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .ant-alert{background:rgba(250,173,20,.12);border-color:rgba(250,173,20,.45)}.profile-exchange-modal--dark .exchange-account-form .ant-alert-message{color:#ffc53d}.profile-exchange-modal--dark .exchange-account-form .ant-alert-description{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-alert-icon{color:#faad14}.profile-exchange-modal--dark .exchange-account-form .field-hint{color:#8b949e;margin-top:6px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:6px}.profile-exchange-modal--dark .exchange-account-form .field-hint .anticon{color:#8b949e;margin-top:2px}.profile-exchange-modal--dark .exchange-account-form .test-result-msg{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.success{color:#73d13d}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.error{color:#ff7875}.profile-exchange-select-dropdown-dark.ant-select-dropdown{background:#1c1c1c}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item{color:#c9d1d9}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#2a2a2a}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:#2a2a2a!important;color:#e0e6ed;font-weight:500}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-group-title{color:#8b949e!important;font-size:12px}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item,.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{color:#c9d1d9!important}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-empty-description{color:#8b949e}.quick-trade-drawer[data-v-75b64b85] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-75b64b85]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-75b64b85],.qt-header[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-75b64b85]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-75b64b85]{font-size:20px;color:#595959}.qt-header .qt-header-left .qt-header-title[data-v-75b64b85]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-75b64b85]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-75b64b85]:hover{color:#333}.qt-symbol-bar[data-v-75b64b85]{padding:12px 20px;background:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f0f0f0));background:linear-gradient(180deg,#fafafa,#f0f0f0);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85],.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-75b64b85]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-75b64b85]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-75b64b85]{color:#999;font-size:12px}.qt-section[data-v-75b64b85]{padding:8px 20px}.qt-section .qt-label[data-v-75b64b85]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-75b64b85]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-75b64b85]{color:#999}.qt-balance .qt-balance-loading-text[data-v-75b64b85]{margin-left:4px}.qt-balance .qt-balance-value[data-v-75b64b85]{color:#52c41a;font-weight:600}.qt-balance .qt-balance-error[data-v-75b64b85]{color:#faad14;cursor:help}.qt-no-cred-actions[data-v-75b64b85]{margin-top:10px}.qt-manage-link[data-v-75b64b85]{margin-top:8px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.qt-manage-link .qt-manage-sep[data-v-75b64b85]{color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-75b64b85]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-75b64b85]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-75b64b85]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-75b64b85]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-75b64b85]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-75b64b85]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-leverage-input[data-v-75b64b85]{width:80px}.qt-card[data-v-75b64b85]{margin-left:16px;margin-right:16px;padding:12px 14px;border-radius:10px;background:#f5f5f5;border:1px solid #e8e8e8}.qt-section-title-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.qt-section-title[data-v-75b64b85]{font-size:13px;font-weight:600;color:#333}.qt-badge-contract[data-v-75b64b85]{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:#ebebeb;color:#595959;border:1px solid #d9d9d9}.qt-optional-tag[data-v-75b64b85]{font-size:10px;color:#8c8c8c;background:#f0f0f0;padding:1px 8px;border-radius:4px}.qt-label-spaced[data-v-75b64b85]{margin-top:10px}.qt-margin-radio[data-v-75b64b85]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-margin-radio[data-v-75b64b85] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px}.qt-hint-text[data-v-75b64b85]{font-size:11px;color:#8c8c8c;line-height:1.45;margin-top:8px}.qt-hint-inline[data-v-75b64b85]{margin-top:6px}.qt-spot-banner[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:4px 0}.qt-spot-banner-icon[data-v-75b64b85]{font-size:22px;color:#52c41a;margin-top:2px}.qt-spot-banner-title[data-v-75b64b85]{font-size:13px;font-weight:600;color:#333;margin-bottom:4px}.qt-spot-banner-text .qt-hint-text[data-v-75b64b85]{margin-top:0}.qt-tpsl-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-tp-label[data-v-75b64b85]{color:#389e0d!important}.qt-sl-label[data-v-75b64b85]{color:#cf1322!important}.qt-input-full[data-v-75b64b85]{width:100%}.qt-dir-btn.qt-dir-disabled[data-v-75b64b85]{opacity:.42;cursor:not-allowed;pointer-events:none}.qt-empty-icon[data-v-75b64b85]{font-size:28px;color:#d9d9d9;margin-bottom:8px}.qt-empty-desc[data-v-75b64b85]{font-size:12px;color:#8c8c8c;line-height:1.5}.qt-submit-section[data-v-75b64b85]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-75b64b85]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-75b64b85]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-75b64b85]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-75b64b85]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]:active{background:#cf1322!important}.qt-position-section[data-v-75b64b85]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-75b64b85]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-75b64b85]{padding:8px 20px 12px}.qt-history-section[data-v-75b64b85] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-75b64b85] .ant-collapse-item{border:none}.qt-history-section[data-v-75b64b85] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-75b64b85] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-75b64b85] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-75b64b85] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-75b64b85]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-75b64b85]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-75b64b85]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-75b64b85]{border-left-color:#52c41a}.qt-position-card.short[data-v-75b64b85]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-75b64b85]:first-child{color:#999}.qt-position-empty[data-v-75b64b85]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-green[data-v-75b64b85]{color:#52c41a!important}.qt-red[data-v-75b64b85]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-75b64b85]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-75b64b85]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-75b64b85]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-75b64b85]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-75b64b85]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-75b64b85]{border-bottom-color:#303030}.theme-dark .qt-header .qt-icon[data-v-75b64b85]{color:#a3a3a3}.theme-dark .qt-header .qt-header-title[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-75b64b85]{color:#666}.theme-dark .qt-header .qt-close[data-v-75b64b85]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-75b64b85]{background:-webkit-gradient(linear,left top,left bottom,from(#262626),to(#1f1f1f));background:linear-gradient(180deg,#262626,#1f1f1f)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-75b64b85] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-75b64b85] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-75b64b85]{color:#999}.theme-dark .qt-section .qt-label[data-v-75b64b85]{color:#777}.theme-dark .qt-position-card[data-v-75b64b85]{background:#262626}.theme-dark .qt-position-card .qt-pos-row span[data-v-75b64b85]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-75b64b85],.theme-dark .qt-position-card .qt-pos-row span[data-v-75b64b85]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-75b64b85]{color:#888}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-75b64b85]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-75b64b85]{color:#ccc}.theme-dark[data-v-75b64b85] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-75b64b85] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-75b64b85] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-75b64b85] .ant-drawer-content{background:#141414}.theme-dark[data-v-75b64b85] .ant-input-number,.theme-dark[data-v-75b64b85] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-75b64b85] .ant-radio-group .ant-radio-button-wrapper{background:#262626;border-color:#303030;color:#ccc}.theme-dark[data-v-75b64b85] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#434343;border-color:#595959;color:#fff}.theme-dark[data-v-75b64b85] .ant-slider-rail{background:#303030}.theme-dark[data-v-75b64b85] .ant-slider-track{background:#737373}.theme-dark .qt-manage-link a[data-v-75b64b85]{color:#58a6ff}.theme-dark .qt-manage-link .qt-manage-sep[data-v-75b64b85]{color:#555}.theme-dark .qt-card[data-v-75b64b85]{background:#262626;border-color:#3a3a3a}.theme-dark .qt-section-title[data-v-75b64b85]{color:#e8e8e8}.theme-dark .qt-badge-contract[data-v-75b64b85]{background:#333;color:#bfbfbf;border-color:#434343}.theme-dark .qt-optional-tag[data-v-75b64b85]{background:#2a2a2a;color:#888}.theme-dark .qt-hint-text[data-v-75b64b85]{color:#777}.theme-dark .qt-spot-banner-title[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-spot-banner-icon[data-v-75b64b85]{color:#73d13d}.theme-dark .qt-tp-label[data-v-75b64b85]{color:#95de64!important}.theme-dark .qt-sl-label[data-v-75b64b85]{color:#ff7875!important}.theme-dark .qt-position-empty[data-v-75b64b85]{background:#262626;border-color:#303030}.theme-dark .qt-empty-icon[data-v-75b64b85]{color:#434343}.theme-dark .qt-empty-desc[data-v-75b64b85]{color:#888}.polymarket-analysis-modal .input-section .input-actions[data-v-67e891d2]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-67e891d2]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-67e891d2]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-67e891d2]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-67e891d2]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-67e891d2]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-67e891d2]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-67e891d2]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-67e891d2]{text-align:center;padding:40px 0}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-bar{border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab-active{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-ink-bar{background:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider{color:#d4d4d4;border-top-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider-inner-text{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-affix-wrapper,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-number,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-textarea textarea{background:#141414!important;border-color:#2a2a2a!important;color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table{background:#1c1c1c;color:#d4d4d4}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-thead>tr>th{background:#252525;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-tbody>tr>td{background:#1c1c1c;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-btn-link{color:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert{background:#1c1c1c;border-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-message{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-description{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark .market-info h3[data-v-67e891d2]{color:#d4d4d4}.polymarket-analysis-modal.theme-dark .market-info .market-meta .meta-item[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:#b3b3b3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section h4[data-v-67e891d2]{color:#d4d4d4}.ai-asset-analysis-page[data-v-0d0a10d6]{padding:20px;min-height:calc(100vh - 120px);background:#f0f2f5;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow-x:hidden}.ai-asset-analysis-page .radar-section[data-v-0d0a10d6]{margin-bottom:20px}.ai-asset-analysis-page .radar-section .radar-header[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:14px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-0d0a10d6]{margin:0;font-size:16px;font-weight:700;color:#1a1a1a;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-0d0a10d6]{margin:2px 0 0;font-size:12px;color:#999}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]{border-radius:8px;border:1px solid #e0e0e0;background:#fff;color:#666;font-size:12px;font-weight:500}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]:hover{border-color:#6366f1;color:#6366f1}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]{overflow:hidden;position:relative;border-radius:12px;padding:2px 0}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{content:"";position:absolute;top:0;bottom:0;width:50px;z-index:2;pointer-events:none}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-track[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-animation:radar-scroll-0d0a10d6 60s linear infinite;animation:radar-scroll-0d0a10d6 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .radar-section .radar-track.paused[data-v-0d0a10d6]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes radar-scroll-0d0a10d6{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes radar-scroll-0d0a10d6{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:250px;background:#fff;border-radius:12px;padding:16px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0;border:1px solid #eaeaea;-webkit-transition:all .25s cubic-bezier(.4,0,.2,1);transition:all .25s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:before{content:"";position:absolute;inset:0;border-radius:12px;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s;background:linear-gradient(135deg,rgba(99,102,241,.04),rgba(139,92,246,.02))}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);border-color:rgba(99,102,241,.3);-webkit-box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1);box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1)}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:hover:before{opacity:1}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:290px}.ai-asset-analysis-page .radar-section .radar-card .rc-head[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{font-weight:800;font-size:15px;color:#111;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol.rc-prediction-title[data-v-0d0a10d6]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-market[data-v-0d0a10d6]{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;padding:2px 7px;border-radius:5px;-ms-flex-negative:0;flex-shrink:0;background:#f5f5f5;color:#888}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-crypto[data-v-0d0a10d6]{color:#7c3aed;background:rgba(124,58,237,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-usstock[data-v-0d0a10d6]{color:#16a34a;background:rgba(22,163,74,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-forex[data-v-0d0a10d6]{color:#d97706;background:rgba(217,119,6,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-0d0a10d6]{color:#0891b2;background:rgba(8,145,178,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:4px;margin-bottom:12px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:3px;padding:7px;border-radius:8px;background:#fafafa}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-label[data-v-0d0a10d6]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:#999}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{font-size:13px;font-weight:700;color:#222}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-0d0a10d6]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-0d0a10d6]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-val[data-v-0d0a10d6]{font-size:11px;font-weight:600}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-0d0a10d6]{color:#0891b2}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-0d0a10d6]{color:#d97706}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-0d0a10d6]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-0d0a10d6]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-footer[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-reason[data-v-0d0a10d6]{font-size:11px;color:#999;line-height:1.4;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-0d0a10d6]{font-size:11px;font-weight:700;color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:4px 12px;border-radius:8px;white-space:nowrap;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-0d0a10d6]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 12px rgba(99,102,241,.35);box-shadow:0 2px 12px rgba(99,102,241,.35)}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;cursor:pointer;-webkit-box-shadow:0 4px 20px rgba(99,102,241,.35);box-shadow:0 4px 20px rgba(99,102,241,.35);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-0d0a10d6 2.5s ease-in-out infinite;animation:qt-float-pulse-0d0a10d6 2.5s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]:hover{-webkit-transform:scale(1.08);transform:scale(1.08);-webkit-box-shadow:0 6px 28px rgba(99,102,241,.5);box-shadow:0 6px 28px rgba(99,102,241,.5)}@-webkit-keyframes qt-float-pulse-0d0a10d6{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-0d0a10d6{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6]{border-radius:14px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06);border:1px solid #e8e8e8}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{margin-bottom:0;padding:0 20px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:15px;font-weight:600;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-0d0a10d6] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-0d0a10d6] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-0d0a10d6]{font-size:64px;color:#6366f1;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{font-size:20px;font-weight:700;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{font-size:14px;color:rgba(0,0,0,.55);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-0d0a10d6]{background:#141414}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-title[data-v-0d0a10d6]{color:#e8e8e8}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-subtitle[data-v-0d0a10d6]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-0d0a10d6]{background:#1c1c1c;border-color:#2a2a2a;color:#999}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-0d0a10d6]:hover{border-color:#6366f1;color:#a78bfa}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-0d0a10d6]:before{background:-webkit-gradient(linear,left top,right top,from(#141414),to(transparent));background:linear-gradient(90deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-0d0a10d6]:after{background:-webkit-gradient(linear,right top,left top,from(#141414),to(transparent));background:linear-gradient(270deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]:before{background:linear-gradient(135deg,rgba(99,102,241,.06),rgba(139,92,246,.03))}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]:hover{border-color:rgba(99,102,241,.25);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15);box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{color:#f0f0f0}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market[data-v-0d0a10d6]{background:hsla(0,0%,100%,.06);color:#888}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-crypto[data-v-0d0a10d6]{color:#a78bfa;background:rgba(167,139,250,.12)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-usstock[data-v-0d0a10d6]{color:#4ade80;background:rgba(74,222,128,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-forex[data-v-0d0a10d6]{color:#fbbf24;background:rgba(251,191,36,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-0d0a10d6]{color:#22d3ee;background:rgba(34,211,238,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{background:hsla(0,0%,100%,.03)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-label[data-v-0d0a10d6]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{color:#ddd}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-0d0a10d6]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-0d0a10d6]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-0d0a10d6]{color:#22d3ee}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-0d0a10d6]{color:#fbbf24}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-0d0a10d6]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-0d0a10d6]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-reason[data-v-0d0a10d6]{color:#555}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-cta[data-v-0d0a10d6]{color:#fff}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-0d0a10d6]{background:#1c1c1c;border-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab-active{color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-ink-bar{background-color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{color:#d4d4d4}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{color:#a3a3a3}@media (max-width:768px){.ai-asset-analysis-page[data-v-0d0a10d6]{padding:8px;min-height:auto}.ai-asset-analysis-page .radar-section[data-v-0d0a10d6]{margin-bottom:10px}.ai-asset-analysis-page .radar-section .radar-header[data-v-0d0a10d6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-0d0a10d6]{font-size:15px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-0d0a10d6]{font-size:11px}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]{-ms-flex-item-align:end;align-self:flex-end}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{width:28px}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:210px;padding:12px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:248px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{font-size:14px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{padding:6px}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]{right:max(8px,env(safe-area-inset-right,0px));bottom:max(68px,calc(52px + env(safe-area-inset-bottom, 0px)));width:44px;height:44px;font-size:20px}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6]{border-radius:10px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{padding:0 6px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:14px;padding:10px 8px;margin-right:2px;white-space:nowrap}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:16px 8px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-0d0a10d6]{font-size:48px;margin-bottom:12px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{font-size:17px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{font-size:13px}}@media (max-width:480px){.ai-asset-analysis-page[data-v-0d0a10d6]{padding:4px}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:188px;padding:10px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:220px}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-0d0a10d6]{gap:3px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{font-size:12px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{padding:0 4px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:13px;padding:8px 6px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:12px 6px}} \ No newline at end of file diff --git a/frontend/dist/css/222.7606786c.css b/frontend/dist/css/222.7606786c.css new file mode 100644 index 0000000..7d6416c --- /dev/null +++ b/frontend/dist/css/222.7606786c.css @@ -0,0 +1 @@ +.trading-records[data-v-46c92dab]{width:100%;min-height:300px;padding:0;overflow-x:visible;overflow-y:visible}.trading-records .empty-state[data-v-46c92dab]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:220px;padding:40px 16px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.trading-records.theme-dark .empty-state[data-v-46c92dab]{background:#141414;border-color:hsla(0,0%,100%,.08)}.trading-records[data-v-46c92dab] .ant-spin-container,.trading-records[data-v-46c92dab] .ant-spin-nested-loading{overflow-x:visible}.trading-records[data-v-46c92dab] .ant-table-wrapper{overflow-x:visible;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-46c92dab] .ant-table{font-size:13px;color:#333}.trading-records[data-v-46c92dab] .ant-table-container{overflow-x:visible}.trading-records[data-v-46c92dab] .ant-table-body{overflow-x:auto;overflow-y:visible;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-46c92dab] .ant-table-container{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-46c92dab] .ant-table-content{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-46c92dab] .ant-table-content::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-46c92dab] .ant-table-content::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-content::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-content::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-46c92dab] .ant-table-tbody>tr>td,.trading-records[data-v-46c92dab] .ant-table-thead>tr>th{white-space:nowrap}.trading-records[data-v-46c92dab] .ant-table-thead>tr>th{background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9);font-weight:600;color:#475569;border-bottom:2px solid #e2e8f0;padding:12px 16px;font-size:13px}.trading-records[data-v-46c92dab] .ant-table-tbody>tr>td{padding:12px 16px;color:#334155;border-bottom:1px solid #f1f5f9;-webkit-transition:background .2s ease;transition:background .2s ease}.trading-records[data-v-46c92dab] .ant-table-tbody>tr:hover>td{background:#f0f7ff!important}.trading-records[data-v-46c92dab] .ant-tag{border-radius:6px;padding:3px 10px;font-weight:600;font-size:11px;border:none;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-46c92dab] .ant-tag[color=cyan],.trading-records[data-v-46c92dab] .ant-tag[color=green],.trading-records[data-v-46c92dab] .ant-tag[color=lime]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.trading-records[data-v-46c92dab] .ant-tag[color=magenta],.trading-records[data-v-46c92dab] .ant-tag[color=red]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.trading-records[data-v-46c92dab] .ant-tag[color=orange]{background:linear-gradient(135deg,rgba(250,173,20,.15),rgba(250,173,20,.08));color:#d48806;border:1px solid rgba(250,173,20,.3)}.trading-records[data-v-46c92dab] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}.trading-records[data-v-46c92dab] .ant-pagination{margin-top:16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item{border-radius:8px;border:1px solid #e2e8f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item.ant-pagination-item-active a{color:#fff}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{border-radius:8px;border:1px solid #e2e8f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}.theme-dark .trading-records[data-v-46c92dab] .ant-table,.trading-records.theme-dark[data-v-46c92dab] .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v-46c92dab] .ant-table-thead>tr>th,.trading-records.theme-dark[data-v-46c92dab] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600}.theme-dark .trading-records[data-v-46c92dab] .ant-table-tbody>tr>td,.trading-records.theme-dark[data-v-46c92dab] .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v-46c92dab] .ant-table-tbody>tr:hover>td,.trading-records.theme-dark[data-v-46c92dab] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records[data-v-46c92dab] .ant-table-tbody>tr>td span,.trading-records.theme-dark[data-v-46c92dab] .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records[data-v-46c92dab] .ant-empty .ant-empty-description,.trading-records.theme-dark[data-v-46c92dab] .ant-empty .ant-empty-description{color:hsla(0,0%,100%,.35)}.trading-records[data-v-46c92dab] .ant-table-tbody>tr:hover>td{background:#fafafa}@media (max-width:768px){.trading-records[data-v-46c92dab]{min-height:200px;overflow-x:visible}.trading-records[data-v-46c92dab] .ant-table{font-size:12px}.trading-records[data-v-46c92dab] .ant-table-body,.trading-records[data-v-46c92dab] .ant-table-container,.trading-records[data-v-46c92dab] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar,.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar,.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar{height:4px;width:4px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-track,.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-track,.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:2px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-thumb,.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-thumb,.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-thumb:hover,.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-thumb:hover,.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-46c92dab] .ant-table-tbody>tr>td,.trading-records[data-v-46c92dab] .ant-table-thead>tr>th{padding:8px 10px;font-size:11px;white-space:nowrap}.trading-records[data-v-46c92dab] .ant-pagination{margin-top:12px;text-align:center}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item,.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-next,.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-prev{margin:0 2px;min-width:28px;height:28px;line-height:26px;font-size:12px}}@media (max-width:480px){.trading-records[data-v-46c92dab] .ant-table{font-size:11px}.trading-records[data-v-46c92dab] .ant-table-tbody>tr>td,.trading-records[data-v-46c92dab] .ant-table-thead>tr>th{padding:6px 8px;font-size:10px}}.theme-dark .trading-records .ant-table-tbody>tr>td,.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td,body.dark .trading-records .ant-table-tbody>tr>td,body.realdark .trading-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records .ant-table-thead>tr>th,.theme-dark .trading-records[data-v] .ant-table-thead>tr>th,body.dark .trading-records .ant-table-thead>tr>th,body.realdark .trading-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600!important}.theme-dark .trading-records .ant-table,.theme-dark .trading-records[data-v] .ant-table,body.dark .trading-records .ant-table,body.realdark .trading-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records .ant-table-tbody>tr>td *,.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td *,body.dark .trading-records .ant-table-tbody>tr>td *,body.realdark .trading-records .ant-table-tbody>tr>td *{color:#d1d4dc!important}.theme-dark .trading-records .ant-table-tbody>tr:hover>td,.theme-dark .trading-records[data-v] .ant-table-tbody>tr:hover>td,body.dark .trading-records .ant-table-tbody>tr:hover>td,body.realdark .trading-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records .ant-table-thead>tr>th .ant-table-column-title,.theme-dark .trading-records[data-v] .ant-table-thead>tr>th .ant-table-column-title,body.dark .trading-records .ant-table-thead>tr>th .ant-table-column-title,body.realdark .trading-records .ant-table-thead>tr>th .ant-table-column-title{color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr>td,body.realdark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}body.dark .trading-records[data-v-8a68b65a] .ant-table-thead>tr>th,body.realdark .trading-records[data-v-8a68b65a] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td,body.dark .trading-records[data-v] .ant-table-tbody>tr>td,body.realdark .trading-records[data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-table-thead>tr>th,body.dark .trading-records[data-v] .ant-table-thead>tr>th,body.realdark .trading-records[data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item,body.dark .trading-records[data-v] .ant-pagination-item,body.realdark .trading-records[data-v] .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-pagination-item a,body.dark .trading-records[data-v] .ant-pagination-item a,body.realdark .trading-records[data-v] .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item-active a,body.dark .trading-records[data-v] .ant-pagination-item-active a,body.realdark .trading-records[data-v] .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper,body.dark .trading-records[data-v-8a68b65a] .ant-table-body,body.dark .trading-records[data-v-8a68b65a] .ant-table-container,body.dark .trading-records[data-v-8a68b65a] .ant-table-content,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records[data-v] .ant-table-body,.theme-dark .trading-records[data-v] .ant-table-container,.theme-dark .trading-records[data-v] .ant-table-content,.theme-dark .trading-records[data-v] .ant-table-wrapper,body.dark .trading-records[data-v] .ant-table-body,body.dark .trading-records[data-v] .ant-table-container,body.dark .trading-records[data-v] .ant-table-content,body.dark .trading-records[data-v] .ant-table-wrapper,body.realdark .trading-records[data-v] .ant-table-body,body.realdark .trading-records[data-v] .ant-table-container,body.realdark .trading-records[data-v] .ant-table-content,body.realdark .trading-records[data-v] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}.theme-dark .trading-records ::v-deep .ant-table-body,.theme-dark .trading-records ::v-deep .ant-table-container,.theme-dark .trading-records ::v-deep .ant-table-content,.theme-dark .trading-records ::v-deep .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table,body.realdark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table table,body.realdark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-table-tbody,body.realdark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .trading-records ::v-deep .ant-table-placeholder,body.realdark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}body.dark .trading-records ::v-deep .ant-table-body,body.dark .trading-records ::v-deep .ant-table-container,body.dark .trading-records ::v-deep .ant-table-content,body.dark .trading-records ::v-deep .ant-table-wrapper,body.realdark .trading-records ::v-deep .ant-table-body,body.realdark .trading-records ::v-deep .ant-table-container,body.realdark .trading-records ::v-deep .ant-table-content,body.realdark .trading-records ::v-deep .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table,.theme-dark .trading-records ::v-deep .ant-table,body.dark .trading-records * ::v-deep .ant-table,body.dark .trading-records ::v-deep .ant-table,body.realdark .trading-records * ::v-deep .ant-table,body.realdark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table table,.theme-dark .trading-records ::v-deep .ant-table table,body.dark .trading-records * ::v-deep .ant-table table,body.dark .trading-records ::v-deep .ant-table table,body.realdark .trading-records * ::v-deep .ant-table table,body.realdark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-thead>tr>th,.theme-dark .trading-records ::v-deep .ant-table-thead>tr>th,body.dark .trading-records * ::v-deep .ant-table-thead>tr>th,body.dark .trading-records ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records * ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody,.theme-dark .trading-records ::v-deep .ant-table-tbody,body.dark .trading-records * ::v-deep .ant-table-tbody,body.dark .trading-records ::v-deep .ant-table-tbody,body.realdark .trading-records * ::v-deep .ant-table-tbody,body.realdark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td span,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td span,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records * ::v-deep .ant-table-placeholder,.theme-dark .trading-records ::v-deep .ant-table-placeholder,body.dark .trading-records * ::v-deep .ant-table-placeholder,body.dark .trading-records ::v-deep .ant-table-placeholder,body.realdark .trading-records * ::v-deep .ant-table-placeholder,body.realdark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.position-records[data-v-6ba7d922]{width:100%;min-height:300px;padding:0}.position-records .empty-state[data-v-6ba7d922]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:220px;padding:40px 16px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.position-records.theme-dark .empty-state[data-v-6ba7d922]{background:#141414;border-color:hsla(0,0%,100%,.08)}.position-records[data-v-6ba7d922] .ant-table{font-size:13px;color:#333}.position-records[data-v-6ba7d922] .ant-table-body{overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-container{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-content,.position-records[data-v-6ba7d922] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9);font-weight:600;color:#475569;border-bottom:2px solid #e2e8f0;padding:12px 16px;font-size:13px}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td{padding:12px 16px;color:#334155;border-bottom:1px solid #f1f5f9;-webkit-transition:background .2s ease;transition:background .2s ease}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td strong{color:#262626;font-weight:600}.position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#f0f7ff!important}.position-records[data-v-6ba7d922] .ant-tag{border-radius:6px;padding:2px 10px;font-weight:600;font-size:11px;border:none}.position-records[data-v-6ba7d922] .ant-tag[color=green]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.position-records[data-v-6ba7d922] .ant-tag[color=red]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.position-records.theme-dark[data-v-6ba7d922] .ant-table,.theme-dark .position-records[data-v-6ba7d922] .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-thead>tr>th,.theme-dark .position-records[data-v-6ba7d922] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr>td,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr:hover>td,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr>td strong,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr>td strong{color:#d1d4dc!important}.position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#fafafa}.position-records[data-v-6ba7d922] .ant-empty{margin:40px 0}.position-records[data-v-6ba7d922] .ant-empty .ant-empty-description{color:#8c8c8c}.position-records.theme-dark[data-v-6ba7d922] .ant-empty .ant-empty-description{color:hsla(0,0%,100%,.35)}.position-records .profit[data-v-6ba7d922]{color:#0ecb81;font-weight:700;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:linear-gradient(135deg,rgba(14,203,129,.12),rgba(14,203,129,.06));border-radius:6px}.position-records .profit[data-v-6ba7d922]:before{content:"▲";font-size:8px}.position-records .loss[data-v-6ba7d922]{color:#f6465d;font-weight:700;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:linear-gradient(135deg,rgba(246,70,93,.12),rgba(246,70,93,.06));border-radius:6px}.position-records .loss[data-v-6ba7d922]:before{content:"▼";font-size:8px}@media (max-width:768px){.position-records[data-v-6ba7d922]{min-height:200px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922]::-webkit-scrollbar{height:4px;width:4px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-track{background:transparent;border-radius:2px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records .empty-state[data-v-6ba7d922]{min-height:150px;padding:20px 0}.position-records[data-v-6ba7d922] .ant-table{font-size:12px;min-width:700px}.position-records[data-v-6ba7d922] .ant-table-body,.position-records[data-v-6ba7d922] .ant-table-container,.position-records[data-v-6ba7d922] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar{height:4px;width:4px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:2px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td,.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{padding:8px 10px;font-size:11px;white-space:nowrap}.position-records[data-v-6ba7d922] .ant-empty{margin:20px 0}}@media (max-width:480px){.position-records[data-v-6ba7d922] .ant-table{font-size:11px;min-width:600px}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td,.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{padding:6px 8px;font-size:10px}.position-records .loss[data-v-6ba7d922],.position-records .profit[data-v-6ba7d922]{font-size:11px}}.theme-dark .position-records .ant-table-tbody>tr>td,.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,body.dark .position-records .ant-table-tbody>tr>td,body.realdark .position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records .ant-table-thead>tr>th,.theme-dark .position-records[data-v] .ant-table-thead>tr>th,body.dark .position-records .ant-table-thead>tr>th,body.realdark .position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600!important}.theme-dark .position-records .ant-table,.theme-dark .position-records[data-v] .ant-table,body.dark .position-records .ant-table,body.realdark .position-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .position-records .ant-table-tbody>tr>td *,.theme-dark .position-records[data-v] .ant-table-tbody>tr>td *,body.dark .position-records .ant-table-tbody>tr>td *,body.realdark .position-records .ant-table-tbody>tr>td *{color:#d1d4dc!important}.theme-dark .position-records .ant-table-tbody>tr:hover>td,.theme-dark .position-records[data-v] .ant-table-tbody>tr:hover>td,body.dark .position-records .ant-table-tbody>tr:hover>td,body.realdark .position-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .position-records .ant-table-thead>tr>th .ant-table-column-title,.theme-dark .position-records[data-v] .ant-table-thead>tr>th .ant-table-column-title,body.dark .position-records .ant-table-thead>tr>th .ant-table-column-title,body.realdark .position-records .ant-table-thead>tr>th .ant-table-column-title{color:#d1d4dc!important}.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,.theme-dark [class*=position-records][data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-thead>tr>th,.theme-dark [class*=position-records][data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,.theme-dark [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table,.theme-dark [data-v-6c1eb557].position-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr:hover>td,.theme-dark [data-v-6c1eb557].position-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.realdark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}body.dark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.dark [data-v-6c1eb557] .ant-table-thead>tr>th,body.dark [data-v-6c1eb557] .position-records .ant-table-thead>tr>th,body.dark [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.realdark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557] .position-records .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,body.dark .position-records[data-v] .ant-table-tbody>tr>td,body.realdark .position-records[data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-thead>tr>th,body.dark .position-records[data-v] .ant-table-thead>tr>th,body.realdark .position-records[data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description,body.dark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description,body.realdark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description{color:#868993!important}.theme-dark .position-records[data-v-6c1eb557] .profit,body.dark .position-records[data-v-6c1eb557] .profit,body.realdark .position-records[data-v-6c1eb557] .profit{color:#52c41a!important}.theme-dark .position-records[data-v-6c1eb557] .loss,body.dark .position-records[data-v-6c1eb557] .loss,body.realdark .position-records[data-v-6c1eb557] .loss{color:#ff4d4f!important}.theme-dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.realdark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,.theme-dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.realdark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper,body.dark .position-records[data-v-6c1eb557] .ant-table-body,body.dark .position-records[data-v-6c1eb557] .ant-table-container,body.dark .position-records[data-v-6c1eb557] .ant-table-content,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper,body.realdark .position-records[data-v-6c1eb557] .ant-table-body,body.realdark .position-records[data-v-6c1eb557] .ant-table-container,body.realdark .position-records[data-v-6c1eb557] .ant-table-content,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .position-records[data-v] .ant-table-body,.theme-dark .position-records[data-v] .ant-table-container,.theme-dark .position-records[data-v] .ant-table-content,.theme-dark .position-records[data-v] .ant-table-wrapper,body.dark .position-records[data-v] .ant-table-body,body.dark .position-records[data-v] .ant-table-container,body.dark .position-records[data-v] .ant-table-content,body.dark .position-records[data-v] .ant-table-wrapper,body.realdark .position-records[data-v] .ant-table-body,body.realdark .position-records[data-v] .ant-table-container,body.realdark .position-records[data-v] .ant-table-content,body.realdark .position-records[data-v] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.strategy-type-selector[data-v-8ec7ab14]{padding:8px 0}.selector-header[data-v-8ec7ab14]{text-align:center;margin-bottom:24px}.selector-header h3[data-v-8ec7ab14]{margin:0 0 4px;font-size:18px;font-weight:600}.selector-header .selector-hint[data-v-8ec7ab14]{color:#999;font-size:13px;margin:0}.mode-cards[data-v-8ec7ab14]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px}@media (max-width:768px){.mode-cards[data-v-8ec7ab14]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.mode-card[data-v-8ec7ab14]{-webkit-box-flex:1;-ms-flex:1;flex:1;border:2px solid #f0f0f0;border-radius:12px;padding:24px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;position:relative;overflow:hidden}.mode-card[data-v-8ec7ab14]:hover{border-color:#1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.12);box-shadow:0 4px 16px rgba(24,144,255,.12);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.mode-card.selected[data-v-8ec7ab14]{border-color:#1890ff;background:rgba(24,144,255,.02)}.mode-card.selected[data-v-8ec7ab14]:after{content:"✓";position:absolute;top:8px;right:12px;color:#1890ff;font-size:18px;font-weight:700}.card-icon[data-v-8ec7ab14]{width:56px;height:56px;border-radius:14px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:26px;margin-bottom:16px}.card-icon.signal-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}.card-icon.script-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,#f6ffed,#d9f7be);color:#52c41a}.card-body[data-v-8ec7ab14]{-webkit-box-flex:1;-ms-flex:1;flex:1}.card-body .card-badge-row[data-v-8ec7ab14]{margin-bottom:10px}.card-body .card-badge[data-v-8ec7ab14]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px;border-radius:999px;background:rgba(24,144,255,.08);color:#1890ff;font-size:12px;font-weight:600;line-height:1.4}.card-body .card-badge.card-badge--script[data-v-8ec7ab14]{background:rgba(82,196,26,.12);color:#389e0d}.card-body h4[data-v-8ec7ab14]{font-size:16px;font-weight:600;margin:0 0 8px}.card-body .card-desc[data-v-8ec7ab14]{color:#666;font-size:13px;line-height:1.5;margin-bottom:12px}.card-features[data-v-8ec7ab14]{list-style:none;padding:0;margin:0 0 16px;text-align:left}.card-features li[data-v-8ec7ab14]{font-size:13px;color:#555;padding:3px 0}.card-features li .anticon[data-v-8ec7ab14]{color:#52c41a;margin-right:6px;font-size:12px}.card-btn[data-v-8ec7ab14]{width:100%}.template-quick-start[data-v-8ec7ab14]{margin-top:8px}.template-quick-start .divider-text[data-v-8ec7ab14]{color:#999;font-size:13px}.template-tags[data-v-8ec7ab14]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px}.template-tag[data-v-8ec7ab14]{cursor:pointer;padding:4px 12px;font-size:13px;border-radius:16px;-webkit-transition:all .2s;transition:all .2s}.template-tag .tpl-icon[data-v-8ec7ab14]{margin-right:4px}.template-tag[data-v-8ec7ab14]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}.theme-dark .selector-header h3[data-v-8ec7ab14]{color:#e0e6ed}.theme-dark .selector-header .selector-hint[data-v-8ec7ab14]{color:hsla(0,0%,100%,.4)}.theme-dark .mode-card[data-v-8ec7ab14]{border-color:hsla(0,0%,100%,.08);background:#1c1c1c}.theme-dark .mode-card[data-v-8ec7ab14]:hover{border-color:#177ddc;-webkit-box-shadow:0 4px 16px rgba(23,125,220,.2);box-shadow:0 4px 16px rgba(23,125,220,.2)}.theme-dark .mode-card.selected[data-v-8ec7ab14]{border-color:#177ddc;background:rgba(23,125,220,.06)}.theme-dark .mode-card.selected[data-v-8ec7ab14]:after{color:#40a9ff}.theme-dark .card-icon.signal-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}.theme-dark .card-icon.script-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,rgba(82,196,26,.15),rgba(82,196,26,.08));color:#73d13d}.theme-dark .card-body h4[data-v-8ec7ab14]{color:#e0e6ed}.theme-dark .card-body .card-desc[data-v-8ec7ab14]{color:hsla(0,0%,100%,.45)}.theme-dark .card-body .card-badge[data-v-8ec7ab14]{background:rgba(64,169,255,.12);color:#69c0ff}.theme-dark .card-body .card-badge.card-badge--script[data-v-8ec7ab14]{background:rgba(115,209,61,.16);color:#95de64}.theme-dark .card-features li[data-v-8ec7ab14]{color:hsla(0,0%,100%,.6)}.theme-dark .card-features li .anticon[data-v-8ec7ab14]{color:#73d13d}.theme-dark .card-btn[data-v-8ec7ab14]{border-color:rgba(24,144,255,.4);color:#40a9ff}.theme-dark .card-btn[data-v-8ec7ab14]:hover{border-color:#1890ff;color:#1890ff}.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider-inner-text{color:hsla(0,0%,100%,.35)}.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider:after,.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider:before{border-top-color:hsla(0,0%,100%,.08)}.theme-dark .divider-text[data-v-8ec7ab14]{color:hsla(0,0%,100%,.35)}.theme-dark .template-tag[data-v-8ec7ab14]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.65)}.theme-dark .template-tag[data-v-8ec7ab14]:hover{color:#40a9ff;border-color:#177ddc;background:rgba(23,125,220,.1)}.strategy-editor[data-v-35a0a386]{width:100%}.editor-layout[data-v-35a0a386]{min-height:450px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.code-col[data-v-35a0a386],.side-col[data-v-35a0a386]{-ms-flex-direction:column;flex-direction:column}.code-col[data-v-35a0a386],.code-section[data-v-35a0a386],.side-col[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.code-section[data-v-35a0a386]{border:1px solid #e8e8e8;border-radius:8px;overflow:hidden;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column}.section-header[data-v-35a0a386]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:8px 12px;background:#fafafa;border-bottom:1px solid #e8e8e8}.section-header[data-v-35a0a386],.section-title-wrap[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-title-wrap[data-v-35a0a386]{gap:8px;min-width:0}.section-title[data-v-35a0a386]{font-weight:600;font-size:14px}.section-title .anticon[data-v-35a0a386]{margin-right:6px}.current-template-tag[data-v-35a0a386]{margin-right:0}.verify-btn[data-v-35a0a386]{color:#52c41a;font-weight:600}.code-editor-container[data-v-35a0a386]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:420px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-editor-container[data-v-35a0a386] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;background:#fff}.code-editor-container[data-v-35a0a386] .CodeMirror-scroll{min-height:100%;overflow-x:auto!important;overflow-y:auto!important}.code-editor-container[data-v-35a0a386] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5)}.code-editor-container[data-v-35a0a386] .CodeMirror-linenumber{padding:0 8px 0 0;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-35a0a386] .CodeMirror-lines{padding:12px 0}.code-editor-container[data-v-35a0a386] .CodeMirror pre.CodeMirror-line,.code-editor-container[data-v-35a0a386] .CodeMirror pre.CodeMirror-line-like{padding:0 12px 0 12px}.code-editor-container[data-v-35a0a386] .CodeMirror-cursor{border-left:2px solid #1890ff}.side-tabs[data-v-35a0a386]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden}.side-tabs[data-v-35a0a386] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;padding:0 12px;background:#fafafa;border-bottom:1px solid #f0f0f0}.side-tabs[data-v-35a0a386] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:280px;overflow-x:hidden;overflow-y:auto;padding:12px}.ai-actions[data-v-35a0a386]{margin-top:12px}.params-panel[data-v-35a0a386]{min-height:120px}.panel-intro[data-v-35a0a386]{margin-bottom:12px;padding:12px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.panel-intro__title[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:14px;font-weight:600;color:#262626}.panel-intro__desc[data-v-35a0a386]{margin-top:4px;font-size:12px;line-height:1.6;color:#8c8c8c}.template-list[data-v-35a0a386]{padding:4px 0}.template-item[data-v-35a0a386]{padding:12px;border:1px solid #f0f0f0;border-radius:8px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.template-item.active[data-v-35a0a386],.template-item[data-v-35a0a386]:hover{border-color:#1890ff;background:#fafafa}.template-item .tpl-header[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:4px}.template-item .tpl-icon[data-v-35a0a386]{font-size:16px;margin-right:8px}.template-item .tpl-name[data-v-35a0a386]{font-weight:600;font-size:14px}.template-item .tpl-desc[data-v-35a0a386]{font-size:12px;color:#888;margin:0 0 4px}.template-item .tpl-use-btn[data-v-35a0a386]{padding:0;font-size:12px}.params-tip[data-v-35a0a386]{margin-bottom:12px}.param-list[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.param-item[data-v-35a0a386]{padding:12px;border:1px solid #f0f0f0;border-radius:8px;background:#fff}.param-item__label-row[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin-bottom:4px}.param-item__label[data-v-35a0a386]{font-size:13px;font-weight:600;color:#262626}.param-item__type[data-v-35a0a386]{font-size:11px;color:#8c8c8c}.param-item__desc[data-v-35a0a386]{margin-bottom:8px;font-size:12px;line-height:1.5;color:#8c8c8c}.param-item__switch[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.params-actions[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;margin-top:16px}.ai-suggestions[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:10px}.prompt-tag[data-v-35a0a386]{cursor:pointer}.ai-status[data-v-35a0a386]{margin-top:8px;color:#1890ff;font-size:13px;text-align:center}.params-empty-guide[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:200px}.theme-dark .code-section[data-v-35a0a386]{border-color:hsla(0,0%,100%,.1)}.theme-dark .section-header[data-v-35a0a386]{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}.theme-dark .section-title[data-v-35a0a386]{color:#e0e6ed}.theme-dark .side-tabs[data-v-35a0a386]{border-color:hsla(0,0%,100%,.1)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-bar{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.08)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab{color:hsla(0,0%,100%,.55)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab:hover{color:hsla(0,0%,100%,.85)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}.theme-dark .panel-intro[data-v-35a0a386]{background:#1c1c1c;border-color:hsla(0,0%,100%,.08)}.theme-dark .panel-intro__title[data-v-35a0a386],.theme-dark .param-item__label[data-v-35a0a386]{color:#e0e6ed}.theme-dark .panel-intro__desc[data-v-35a0a386],.theme-dark .param-item__desc[data-v-35a0a386],.theme-dark .param-item__type[data-v-35a0a386]{color:hsla(0,0%,100%,.45)}.theme-dark .param-item[data-v-35a0a386],.theme-dark .template-item[data-v-35a0a386]{border-color:hsla(0,0%,100%,.08);background:#1c1c1c}.theme-dark .template-item.active[data-v-35a0a386],.theme-dark .template-item[data-v-35a0a386]:hover{border-color:#177ddc;background:rgba(23,125,220,.06)}.theme-dark .tpl-name[data-v-35a0a386]{color:#e0e6ed}.theme-dark .tpl-desc[data-v-35a0a386]{color:hsla(0,0%,100%,.4)}.theme-dark .prompt-tag[data-v-35a0a386]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.7)}.theme-dark[data-v-35a0a386] .ant-input,.theme-dark[data-v-35a0a386] .ant-input-number,.theme-dark[data-v-35a0a386] .ant-input-number-input,.theme-dark[data-v-35a0a386] .ant-select-selection,.theme-dark[data-v-35a0a386] .ant-select-selection--single,.theme-dark[data-v-35a0a386] textarea.ant-input{background:#141414!important;border-color:hsla(0,0%,100%,.1)!important;color:#d1d4dc!important}.theme-dark[data-v-35a0a386] .ant-select-selection-placeholder,.theme-dark[data-v-35a0a386] .ant-select-selection-selected-value{color:#d1d4dc!important}.theme-dark .ai-status[data-v-35a0a386]{color:#40a9ff}.theme-dark[data-v-35a0a386] .ant-empty-description{color:hsla(0,0%,100%,.45)}.theme-dark[data-v-35a0a386] .ant-alert-info{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}.theme-dark[data-v-35a0a386] .ant-alert-info .ant-alert-message{color:hsla(0,0%,100%,.65)}.theme-dark .verify-btn[data-v-35a0a386]{color:#52c41a}.theme-dark .ai-panel[data-v-35a0a386]{color:hsla(0,0%,100%,.78)}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror{background:#141414;color:#d1d4dc}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror-gutters{border-right-color:hsla(0,0%,100%,.08);background:-webkit-gradient(linear,left top,right top,from(#1a1a1a),to(#1c1c1c));background:linear-gradient(90deg,#1a1a1a 0,#1c1c1c)}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror-linenumber{color:hsla(0,0%,100%,.32)}.performance-analysis[data-v-01ff5f5a]{padding:4px 0}.strategy-tab-empty[data-v-01ff5f5a]{padding:48px 16px;margin:0 auto;max-width:360px}.metrics-grid[data-v-01ff5f5a]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}@media (max-width:768px){.metrics-grid[data-v-01ff5f5a]{grid-template-columns:repeat(2,1fr)}}.metric-card[data-v-01ff5f5a]{background:#fafafa;border-radius:8px;padding:12px 16px;text-align:center}.metric-card.positive .metric-value[data-v-01ff5f5a]{color:#52c41a}.metric-card.negative .metric-value[data-v-01ff5f5a]{color:#ff4d4f}.metric-card .metric-label[data-v-01ff5f5a]{font-size:12px;color:#999;margin-bottom:4px}.metric-card .metric-value[data-v-01ff5f5a]{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.chart-section[data-v-01ff5f5a]{margin-bottom:20px}.chart-section .chart-title[data-v-01ff5f5a]{font-size:14px;font-weight:600;margin-bottom:8px;padding-left:4px}.chart-container[data-v-01ff5f5a]{width:100%;height:300px;border-radius:8px;overflow:hidden}.theme-dark .metrics-grid .metric-card[data-v-01ff5f5a]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06)}.theme-dark .metrics-grid .metric-card .metric-label[data-v-01ff5f5a]{color:hsla(0,0%,100%,.4)}.theme-dark .metrics-grid .metric-card .metric-value[data-v-01ff5f5a]{color:#e0e6ed}.theme-dark .metrics-grid .metric-card.positive .metric-value[data-v-01ff5f5a]{color:#52c41a}.theme-dark .metrics-grid .metric-card.negative .metric-value[data-v-01ff5f5a]{color:#ff4d4f}.theme-dark .chart-section .chart-title[data-v-01ff5f5a]{color:#e0e6ed}.theme-dark .chart-container[data-v-01ff5f5a]{background:#141414;border:1px solid hsla(0,0%,100%,.06)}.theme-dark .strategy-tab-empty[data-v-01ff5f5a] .ant-empty-description,.theme-dark[data-v-01ff5f5a] .ant-empty-description{color:hsla(0,0%,100%,.35)}.strategy-logs[data-v-5ea7be7d]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.logs-toolbar[data-v-5ea7be7d]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:8px 0;margin-bottom:8px}.logs-toolbar .toolbar-right[data-v-5ea7be7d],.logs-toolbar[data-v-5ea7be7d]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.logs-toolbar .toolbar-right[data-v-5ea7be7d]{gap:6px}.logs-toolbar .toolbar-right .auto-refresh-label[data-v-5ea7be7d]{font-size:12px;color:#999}.logs-container[data-v-5ea7be7d]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:300px;max-height:500px;overflow-y:auto;border:1px solid #f0f0f0;border-radius:8px;padding:8px;font-family:Fira Code,Consolas,monospace;font-size:12px;line-height:1.7;background:#fafafa}.logs-empty[data-v-5ea7be7d]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:200px;color:#ccc}.logs-empty p[data-v-5ea7be7d]{margin-top:8px;font-family:-apple-system,BlinkMacSystemFont,sans-serif}.log-entry[data-v-5ea7be7d]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;padding:2px 4px;border-radius:3px}.log-entry[data-v-5ea7be7d]:hover{background:rgba(0,0,0,.02)}.log-entry.level-error[data-v-5ea7be7d]{background:rgba(255,77,79,.04)}.log-entry.level-trade[data-v-5ea7be7d]{background:rgba(82,196,26,.04)}.log-time[data-v-5ea7be7d]{color:#999;white-space:nowrap;font-size:11px;min-width:65px}.log-level[data-v-5ea7be7d]{-ms-flex-negative:0;flex-shrink:0;font-size:10px}.log-message[data-v-5ea7be7d]{-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-all}.theme-dark .logs-toolbar .toolbar-right .auto-refresh-label[data-v-5ea7be7d]{color:hsla(0,0%,100%,.4)}.theme-dark .logs-toolbar[data-v-5ea7be7d] .ant-radio-group .ant-radio-button-wrapper{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.55)}.theme-dark .logs-toolbar[data-v-5ea7be7d] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}.theme-dark .logs-toolbar[data-v-5ea7be7d] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark .logs-container[data-v-5ea7be7d]{background:#141414;border-color:hsla(0,0%,100%,.08)}.theme-dark .logs-empty[data-v-5ea7be7d]{color:hsla(0,0%,100%,.25)}.theme-dark .logs-empty .anticon[data-v-5ea7be7d]{color:hsla(0,0%,100%,.15)!important}.theme-dark .logs-empty p[data-v-5ea7be7d]{color:hsla(0,0%,100%,.3)}.theme-dark .log-entry[data-v-5ea7be7d]:hover{background:hsla(0,0%,100%,.03)}.theme-dark .log-entry.level-error[data-v-5ea7be7d]{background:rgba(255,77,79,.06)}.theme-dark .log-entry.level-trade[data-v-5ea7be7d]{background:rgba(82,196,26,.06)}.theme-dark .log-time[data-v-5ea7be7d]{color:hsla(0,0%,100%,.3)}.theme-dark .log-message[data-v-5ea7be7d]{color:hsla(0,0%,100%,.75)}.dashboard-pro[data-v-23d6ebe6]{min-height:100vh;padding:20px;background:#f8fafc;-webkit-transition:background .3s;transition:background .3s}.dashboard-pro.theme-dark[data-v-23d6ebe6]{background:#141414}.dashboard-pro.theme-dark .kpi-card[data-v-23d6ebe6]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .kpi-card .kpi-label[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .kpi-card .kpi-value .amount[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .kpi-card .kpi-sub[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .chart-panel[data-v-23d6ebe6],.dashboard-pro.theme-dark .table-panel[data-v-23d6ebe6]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header[data-v-23d6ebe6],.dashboard-pro.theme-dark .table-panel .panel-header[data-v-23d6ebe6]{border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header .panel-title[data-v-23d6ebe6],.dashboard-pro.theme-dark .table-panel .panel-header .panel-title[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .setup-guide-card[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(23,125,220,.14),rgba(139,92,246,.12));border-color:rgba(23,125,220,.26)}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-title[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-desc[data-v-23d6ebe6]{color:hsla(0,0%,100%,.72)}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-path[data-v-23d6ebe6]{color:hsla(0,0%,100%,.48)}.dashboard-pro.theme-dark .calendar-nav .current-month[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .calendar-nav .ant-btn-link[data-v-23d6ebe6],.dashboard-pro.theme-dark .profit-calendar .calendar-empty[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .profit-calendar .calendar-empty .anticon[data-v-23d6ebe6]{color:#888;opacity:.45}.dashboard-pro.theme-dark .profit-calendar .month-summary[data-v-23d6ebe6]{background:hsla(0,0%,100%,.04)}.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-label[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-value[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-value.positive[data-v-23d6ebe6]{color:#34d399}.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-value.negative[data-v-23d6ebe6]{color:#f87171}.dashboard-pro.theme-dark .profit-calendar .calendar-weekdays .weekday[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell[data-v-23d6ebe6]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-23d6ebe6]{background:hsla(0,0%,100%,.02)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.profit[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(34,197,94,.15),rgba(34,197,94,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.loss[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(239,68,68,.15),rgba(239,68,68,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.zero[data-v-23d6ebe6]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-profit.positive[data-v-23d6ebe6]{color:#34d399}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-profit.negative[data-v-23d6ebe6]{color:#f87171}.dashboard-pro.theme-dark .strategy-ranking .empty-state[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .strategy-ranking .empty-state .anticon[data-v-23d6ebe6]{color:#888;opacity:.45}.dashboard-pro.theme-dark .strategy-ranking .ranking-card[data-v-23d6ebe6]{background:hsla(0,0%,100%,.04);border-color:#2a2a2a}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-name[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-stats label[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .strategy-ranking .ranking-card.rank-top[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(59,130,246,.12),rgba(139,92,246,.1));border-color:rgba(59,130,246,.22)}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-badge[data-v-23d6ebe6]:not(.rank-1):not(.rank-2):not(.rank-3){background:#888;color:#f8fafc}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-stats .stat span[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-stats .stat span.positive[data-v-23d6ebe6]{color:#34d399}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-stats .stat span.negative[data-v-23d6ebe6]{color:#f87171}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-pnl-bar[data-v-23d6ebe6]{background:hsla(0,0%,100%,.06)}.dashboard-pro.theme-dark .chart-panel .panel-legend[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .chart-panel .panel-legend .legend-item .dot[data-v-23d6ebe6]{opacity:.95}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table{background:transparent;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table-thead>tr>th{background:#141414;color:#888;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table-tbody>tr>td{border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table-tbody>tr:hover>td{background:#252525}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table-placeholder{background:transparent}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table-placeholder .ant-empty-description{color:#888}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-total-text{color:#888!important}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-item a{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:#3b82f6;border-color:#3b82f6}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-item.ant-pagination-item-active a{color:#fff}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-options .ant-pagination-options-size-changer .ant-select-selection,.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-options .ant-select-selection__rendered{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-options .ant-pagination-options-quick-jumper{color:#888}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-options .ant-pagination-options-quick-jumper input{background:#1c1c1c;border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro .kpi-grid[data-v-23d6ebe6]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.dashboard-pro .setup-guide-card[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;margin-bottom:20px;padding:18px 20px;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08));border:1px solid rgba(59,130,246,.16);border-radius:16px}.dashboard-pro .setup-guide-card .setup-guide-copy[data-v-23d6ebe6]{min-width:0}.dashboard-pro .setup-guide-card .setup-guide-title[data-v-23d6ebe6]{font-size:16px;font-weight:700;color:#1e293b}.dashboard-pro .setup-guide-card .setup-guide-desc[data-v-23d6ebe6]{margin-top:4px;color:#64748b;line-height:1.7}.dashboard-pro .setup-guide-card .setup-guide-path[data-v-23d6ebe6]{margin-top:6px;font-size:12px;color:#64748b}.dashboard-pro .setup-guide-card .setup-guide-actions[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .kpi-card[data-v-23d6ebe6]{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:20px;overflow:hidden;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.dashboard-pro .kpi-card[data-v-23d6ebe6]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 10px 40px rgba(0,0,0,.1);box-shadow:0 10px 40px rgba(0,0,0,.1)}.dashboard-pro .kpi-card.clickable[data-v-23d6ebe6]{cursor:pointer}.dashboard-pro .kpi-card.clickable .card-arrow[data-v-23d6ebe6]{position:absolute;right:16px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:.4;-webkit-transition:all .3s;transition:all .3s}.dashboard-pro .kpi-card.clickable:hover .card-arrow[data-v-23d6ebe6]{opacity:1;right:12px}.dashboard-pro .kpi-card .kpi-glow[data-v-23d6ebe6]{position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle,rgba(59,130,246,.15) 0,transparent 70%);pointer-events:none}.dashboard-pro .kpi-card .kpi-content[data-v-23d6ebe6]{position:relative;z-index:1}.dashboard-pro .kpi-card .kpi-header[data-v-23d6ebe6]{gap:8px;margin-bottom:12px}.dashboard-pro .kpi-card .kpi-header[data-v-23d6ebe6],.dashboard-pro .kpi-card .kpi-icon[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .kpi-card .kpi-icon[data-v-23d6ebe6]{width:32px;height:32px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;background:rgba(59,130,246,.1);color:#3b82f6;font-size:16px}.dashboard-pro .kpi-card .kpi-label[data-v-23d6ebe6]{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .kpi-card .kpi-value[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:2px}.dashboard-pro .kpi-card .kpi-value .currency[data-v-23d6ebe6]{font-size:18px;font-weight:500;color:#64748b}.dashboard-pro .kpi-card .kpi-value .amount[data-v-23d6ebe6]{font-size:28px;font-weight:700;color:#1e293b;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}.dashboard-pro .kpi-card .kpi-value .unit[data-v-23d6ebe6]{font-size:14px;font-weight:500;color:#64748b;margin-left:4px}.dashboard-pro .kpi-card .kpi-sub[data-v-23d6ebe6]{margin-top:8px;font-size:12px;color:#64748b}.dashboard-pro .kpi-card .kpi-sub .label[data-v-23d6ebe6]{margin:0 2px}.dashboard-pro .kpi-card .kpi-sub .divider[data-v-23d6ebe6]{margin:0 6px;opacity:.5}.dashboard-pro .kpi-card .kpi-sub .highlight[data-v-23d6ebe6]{font-weight:600;color:#3b82f6}.dashboard-pro .kpi-card.kpi-primary[data-v-23d6ebe6]{background:linear-gradient(135deg,#1e40af,#3b82f6 50%,#60a5fa);border:none}.dashboard-pro .kpi-card.kpi-primary .kpi-icon[data-v-23d6ebe6]{background:hsla(0,0%,100%,.2);color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-label[data-v-23d6ebe6]{color:hsla(0,0%,100%,.8)}.dashboard-pro .kpi-card.kpi-primary .kpi-value .amount[data-v-23d6ebe6],.dashboard-pro .kpi-card.kpi-primary .kpi-value .currency[data-v-23d6ebe6],.dashboard-pro .kpi-card.kpi-primary .kpi-value .unit[data-v-23d6ebe6]{color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-sub[data-v-23d6ebe6]{color:hsla(0,0%,100%,.7)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-23d6ebe6]{position:absolute;right:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:60px;height:60px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg[data-v-23d6ebe6]{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-bg[data-v-23d6ebe6]{fill:none;stroke:rgba(16,185,129,.15);stroke-width:3}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-progress[data-v-23d6ebe6]{fill:none;stroke:#10b981;stroke-width:3;stroke-linecap:round;-webkit-transition:stroke-dasharray .5s ease;transition:stroke-dasharray .5s ease}.dashboard-pro .kpi-card.kpi-win-rate .kpi-icon[data-v-23d6ebe6]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .kpi-card.kpi-profit-factor .kpi-icon[data-v-23d6ebe6]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .kpi-card.kpi-drawdown .kpi-icon[data-v-23d6ebe6]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .kpi-card.kpi-drawdown .kpi-value .amount[data-v-23d6ebe6]{color:#ef4444}.dashboard-pro .kpi-card.kpi-trades .kpi-icon[data-v-23d6ebe6]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .kpi-card.kpi-strategies .kpi-icon[data-v-23d6ebe6]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .chart-row[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .chart-row[data-v-23d6ebe6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .chart-panel[data-v-23d6ebe6]{background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .chart-panel.chart-main[data-v-23d6ebe6]{-webkit-box-flex:2;-ms-flex:2;flex:2}.dashboard-pro .chart-panel.chart-side[data-v-23d6ebe6]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:300px}.dashboard-pro .chart-panel.chart-half[data-v-23d6ebe6]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .chart-panel .panel-header[data-v-23d6ebe6]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .chart-panel .panel-header[data-v-23d6ebe6],.dashboard-pro .chart-panel .panel-title[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .chart-panel .panel-title[data-v-23d6ebe6]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .chart-panel .panel-title .anticon[data-v-23d6ebe6]{color:#3b82f6}.dashboard-pro .chart-panel .panel-legend[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b}.dashboard-pro .chart-panel .panel-legend .legend-item[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot[data-v-23d6ebe6]{width:10px;height:10px;border-radius:2px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.bar[data-v-23d6ebe6]{background:-webkit-gradient(linear,left top,left bottom,from(#34d399),to(#10b981));background:linear-gradient(180deg,#34d399,#10b981)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.line[data-v-23d6ebe6]{background:-webkit-gradient(linear,left top,right top,from(#3b82f6),to(#8b5cf6));background:linear-gradient(90deg,#3b82f6,#8b5cf6)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.loss[data-v-23d6ebe6]{background:#ef4444}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.profit[data-v-23d6ebe6]{background:#10b981}.dashboard-pro .chart-panel .panel-legend.calendar-legend[data-v-23d6ebe6]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.dashboard-pro .chart-panel .panel-legend.calendar-legend .legend-gradient[data-v-23d6ebe6]{width:80px;height:10px;border-radius:3px;background:-webkit-gradient(linear,left top,right top,from(#ef4444),color-stop(#fca5a5),color-stop(#f4f4f5),color-stop(#86efac),to(#22c55e));background:linear-gradient(90deg,#ef4444,#fca5a5,#f4f4f5,#86efac,#22c55e)}.dashboard-pro .chart-panel .panel-badge[data-v-23d6ebe6]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .chart-panel .chart-body[data-v-23d6ebe6]{height:320px;padding:16px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-23d6ebe6]{height:220px}.dashboard-pro .chart-panel .chart-body.calendar-chart[data-v-23d6ebe6]{height:280px}.dashboard-pro .chart-panel .calendar-nav[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.dashboard-pro .chart-panel .calendar-nav .current-month[data-v-23d6ebe6]{font-size:14px;font-weight:600;color:#1e293b;min-width:80px;text-align:center}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-23d6ebe6]{padding:0;height:auto;color:#64748b}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-23d6ebe6]:hover:not(:disabled){color:#3b82f6}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-23d6ebe6]:disabled{opacity:.3}.dashboard-pro .chart-panel .profit-calendar[data-v-23d6ebe6]{padding:12px 16px;overflow:hidden}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-23d6ebe6],.dashboard-pro .chart-panel .profit-calendar[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-23d6ebe6]{height:280px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#64748b}.dashboard-pro .chart-panel .profit-calendar .calendar-empty .anticon[data-v-23d6ebe6]{font-size:40px;margin-bottom:10px;opacity:.3}.dashboard-pro .chart-panel .profit-calendar .month-summary[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;margin-bottom:10px;padding:8px 12px;background:rgba(241,245,249,.5);border-radius:8px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-label[data-v-23d6ebe6]{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value[data-v-23d6ebe6]{font-size:15px;font-weight:700;font-family:JetBrains Mono,monospace}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.positive[data-v-23d6ebe6]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.negative[data-v-23d6ebe6]{color:#ef4444}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays[data-v-23d6ebe6]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays .weekday[data-v-23d6ebe6]{text-align:center;font-size:10px;font-weight:600;color:#64748b;padding:4px 0}.dashboard-pro .chart-panel .profit-calendar .calendar-grid[data-v-23d6ebe6]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell[data-v-23d6ebe6]{height:36px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;background:rgba(241,245,249,.5);border:1px solid transparent;-webkit-transition:all .2s ease;transition:all .2s ease;position:relative}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.empty[data-v-23d6ebe6]{background:transparent;border:none}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-23d6ebe6]{background:rgba(241,245,249,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(34,197,94,.12),rgba(34,197,94,.2));border-color:rgba(34,197,94,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-23d6ebe6]:hover{background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(34,197,94,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(34,197,94,.2);box-shadow:0 4px 12px rgba(34,197,94,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(239,68,68,.12),rgba(239,68,68,.2));border-color:rgba(239,68,68,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-23d6ebe6]:hover{background:linear-gradient(135deg,rgba(239,68,68,.2),rgba(239,68,68,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(239,68,68,.2);box-shadow:0 4px 12px rgba(239,68,68,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.zero[data-v-23d6ebe6]{background:hsla(240,5%,65%,.1);border-color:hsla(240,5%,65%,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-23d6ebe6]{font-size:11px;font-weight:600;color:#1e293b;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit[data-v-23d6ebe6]{font-size:9px;font-weight:600;font-family:JetBrains Mono,monospace;margin-top:1px;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.positive[data-v-23d6ebe6]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.negative[data-v-23d6ebe6]{color:#ef4444}.dashboard-pro .strategy-ranking[data-v-23d6ebe6]{padding:16px}.dashboard-pro .strategy-ranking .empty-state[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:40px;color:#64748b}.dashboard-pro .strategy-ranking .empty-state .anticon[data-v-23d6ebe6]{font-size:40px;margin-bottom:12px;opacity:.3}.dashboard-pro .strategy-ranking .ranking-grid[data-v-23d6ebe6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.dashboard-pro .strategy-ranking .ranking-card[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:14px 16px;background:rgba(241,245,249,.5);border:1px solid #e2e8f0;border-radius:12px;position:relative;overflow:hidden}.dashboard-pro .strategy-ranking .ranking-card.rank-top[data-v-23d6ebe6]{border-color:transparent;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08))}.dashboard-pro .strategy-ranking .ranking-card .rank-badge[data-v-23d6ebe6]{width:28px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;font-size:12px;font-weight:700;background:#64748b;color:#fff;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-1[data-v-23d6ebe6]{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-2[data-v-23d6ebe6]{background:linear-gradient(135deg,#9ca3af,#6b7280)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-3[data-v-23d6ebe6]{background:linear-gradient(135deg,#cd7f32,#b87333)}.dashboard-pro .strategy-ranking .ranking-card .rank-info[data-v-23d6ebe6]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-name[data-v-23d6ebe6]{font-size:13px;font-weight:600;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat[data-v-23d6ebe6]{font-size:11px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat label[data-v-23d6ebe6]{color:#64748b;margin-right:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar[data-v-23d6ebe6]{position:absolute;bottom:0;left:0;right:0;height:3px;background:rgba(0,0,0,.05)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill[data-v-23d6ebe6]{height:100%;border-radius:0 3px 3px 0;-webkit-transition:width .5s ease;transition:width .5s ease}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.positive[data-v-23d6ebe6]{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.negative[data-v-23d6ebe6]{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.dashboard-pro .table-row[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-top:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .table-row[data-v-23d6ebe6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .table-panel[data-v-23d6ebe6]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .table-panel .panel-header[data-v-23d6ebe6]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .table-panel .panel-header[data-v-23d6ebe6],.dashboard-pro .table-panel .panel-title[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .table-panel .panel-title[data-v-23d6ebe6]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .table-panel .panel-title .anticon[data-v-23d6ebe6]{color:#3b82f6}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-23d6ebe6]{margin-left:8px;font-size:16px;cursor:pointer;color:#10b981;-webkit-transition:all .2s;transition:all .2s}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-23d6ebe6]:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.dashboard-pro .table-panel .panel-title .sound-toggle.sound-off[data-v-23d6ebe6]{color:#64748b}.dashboard-pro .table-panel .panel-badge[data-v-23d6ebe6]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .orders-panel[data-v-23d6ebe6]{margin-bottom:20px}.dashboard-pro .pro-table[data-v-23d6ebe6] .ant-table{font-size:13px}.dashboard-pro .pro-table[data-v-23d6ebe6] .ant-table-thead>tr>th{background:rgba(241,245,249,.8);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#64748b;border-bottom:1px solid #e2e8f0;padding:12px 16px}.dashboard-pro .pro-table[data-v-23d6ebe6] .ant-table-tbody>tr>td{padding:12px 16px;border-bottom:1px solid #e2e8f0}.dashboard-pro .pro-table[data-v-23d6ebe6] .ant-table-tbody>tr:hover>td{background:rgba(59,130,246,.04)}.dashboard-pro .pro-table[data-v-23d6ebe6] .ant-pagination{padding:12px 16px;margin:0}.dashboard-pro .symbol-cell .symbol-name[data-v-23d6ebe6]{font-weight:600;display:block}.dashboard-pro .symbol-cell .symbol-strategy[data-v-23d6ebe6]{font-size:11px;color:#64748b}.dashboard-pro .side-tag[data-v-23d6ebe6]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .side-tag.long[data-v-23d6ebe6]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .side-tag.short[data-v-23d6ebe6]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag[data-v-23d6ebe6]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .type-tag.long[data-v-23d6ebe6]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .type-tag.short[data-v-23d6ebe6]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag.close-long[data-v-23d6ebe6]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .type-tag.close-short[data-v-23d6ebe6]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .symbol-tag[data-v-23d6ebe6]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .exchange-tag[data-v-23d6ebe6],.dashboard-pro .symbol-tag[data-v-23d6ebe6]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .exchange-tag.binance[data-v-23d6ebe6]{background:rgba(240,185,11,.1);color:#f0b90b}.dashboard-pro .exchange-tag.okx[data-v-23d6ebe6]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .exchange-tag.bitget[data-v-23d6ebe6]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .exchange-tag.signal[data-v-23d6ebe6]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .market-type[data-v-23d6ebe6]{font-size:10px;color:#64748b;margin-top:2px}.dashboard-pro .status-tag[data-v-23d6ebe6]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .status-tag.pending[data-v-23d6ebe6]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .status-tag.processing[data-v-23d6ebe6]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .status-tag.completed[data-v-23d6ebe6]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .status-tag.failed[data-v-23d6ebe6]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .status-tag.cancelled[data-v-23d6ebe6]{background:rgba(100,116,139,.1);color:#64748b}.dashboard-pro .error-hint[data-v-23d6ebe6]{font-size:11px;color:#ef4444;margin-top:4px;cursor:pointer}.dashboard-pro .error-hint .anticon[data-v-23d6ebe6]{margin-right:4px}.dashboard-pro .notify-icons[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.dashboard-pro .notify-icons .notify-icon[data-v-23d6ebe6]{color:#64748b;font-size:14px}.dashboard-pro .pnl-cell[data-v-23d6ebe6]{text-align:right}.dashboard-pro .pnl-cell .pnl-percent[data-v-23d6ebe6]{display:block;font-size:11px}.dashboard-pro .time-cell[data-v-23d6ebe6]{font-size:12px;color:#64748b}.dashboard-pro .sub-text[data-v-23d6ebe6]{font-size:11px;color:#64748b}.dashboard-pro .text-muted[data-v-23d6ebe6]{color:#64748b}.dashboard-pro .positive[data-v-23d6ebe6]{color:#10b981}.dashboard-pro .negative[data-v-23d6ebe6]{color:#ef4444}@media (max-width:768px){.dashboard-pro[data-v-23d6ebe6]{padding:12px}.dashboard-pro .setup-guide-card[data-v-23d6ebe6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:16px}.dashboard-pro .setup-guide-card .setup-guide-actions[data-v-23d6ebe6]{width:100%}.dashboard-pro .setup-guide-card .setup-guide-actions .ant-btn[data-v-23d6ebe6]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .kpi-grid[data-v-23d6ebe6]{grid-template-columns:repeat(2,1fr);gap:10px}.dashboard-pro .kpi-card[data-v-23d6ebe6]{padding:14px}.dashboard-pro .kpi-card .kpi-value .amount[data-v-23d6ebe6]{font-size:22px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-23d6ebe6]{width:48px;height:48px;right:8px}.dashboard-pro .chart-panel .chart-body[data-v-23d6ebe6]{height:260px;padding:12px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-23d6ebe6]{height:180px}.dashboard-pro .ranking-grid[data-v-23d6ebe6]{grid-template-columns:1fr}}.top-level-tabs[data-v-7a5d79cc] .ant-tabs-bar{margin-bottom:16px;border-bottom:1px solid #e8e8e8}.top-level-tabs[data-v-7a5d79cc] .ant-tabs-tab{font-size:15px;padding:12px 20px}.theme-dark .top-level-tabs[data-v-7a5d79cc] .ant-tabs-bar{border-bottom-color:#303030}.theme-dark .top-level-tabs[data-v-7a5d79cc] .ant-tabs-tab{color:hsla(0,0%,100%,.65)}.theme-dark .top-level-tabs[data-v-7a5d79cc] .ant-tabs-tab-active{color:#177ddc}.theme-dark .top-level-tabs[data-v-7a5d79cc] .ant-tabs-ink-bar{background:#177ddc}.assistant-guide-bar[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;padding:16px 18px;margin-bottom:16px;border:1px solid rgba(24,144,255,.14);border-radius:16px;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06))}.assistant-guide-bar .assistant-guide-copy[data-v-7a5d79cc]{min-width:0;-webkit-box-flex:1;-ms-flex:1 1 240px;flex:1 1 240px}.assistant-guide-bar .assistant-guide-eyebrow[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 10px;margin-bottom:8px;border-radius:999px;background:rgba(24,144,255,.12);color:#1677ff;font-size:12px;font-weight:600}.assistant-guide-bar .assistant-guide-title[data-v-7a5d79cc]{font-size:16px;font-weight:700;color:#1f2937}.assistant-guide-bar .assistant-guide-desc[data-v-7a5d79cc]{margin-top:4px;color:#475569;line-height:1.6}.assistant-guide-bar .assistant-guide-steps[data-v-7a5d79cc]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;-webkit-box-flex:1;-ms-flex:1 1 520px;flex:1 1 520px}.assistant-guide-bar .assistant-step-card[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;min-height:92px;padding:12px;border-radius:14px;background:hsla(0,0%,100%,.66);border:1px solid rgba(148,163,184,.16);-webkit-box-shadow:0 4px 12px rgba(15,23,42,.04);box-shadow:0 4px 12px rgba(15,23,42,.04)}.assistant-guide-bar .assistant-step-index[data-v-7a5d79cc]{width:28px;height:28px;border-radius:999px;background:linear-gradient(135deg,#1677ff,#6d28d9);color:#fff;font-size:13px;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.assistant-guide-bar .assistant-step-body[data-v-7a5d79cc]{min-width:0}.assistant-guide-bar .assistant-step-title[data-v-7a5d79cc]{font-size:13px;font-weight:700;color:#1f2937}.assistant-guide-bar .assistant-step-desc[data-v-7a5d79cc]{margin-top:4px;font-size:12px;line-height:1.6;color:#64748b}.assistant-guide-bar .assistant-guide-actions[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-ms-flex-negative:0;flex-shrink:0}.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-7a5d79cc]{min-width:36px;width:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-color:rgba(148,163,184,.28);color:#64748b;background:hsla(0,0%,100%,.72)}.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-7a5d79cc]:focus,.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-7a5d79cc]:hover{color:#1677ff;border-color:rgba(24,144,255,.35);background:#fff}.strategy-empty-state[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:10px;padding:28px 16px 32px;text-align:center}.strategy-empty-state .strategy-empty-desc[data-v-7a5d79cc]{max-width:420px;color:#475569;line-height:1.7}.strategy-empty-state .strategy-empty-path[data-v-7a5d79cc]{font-size:12px;color:#64748b}.trading-assistant[data-v-7a5d79cc]{padding:0;height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.trading-assistant .strategy-layout[data-v-7a5d79cc]{height:calc(100vh - 120px);-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}@media (max-width:768px){.trading-assistant[data-v-7a5d79cc]{min-height:auto;margin:-24px}.trading-assistant .assistant-guide-bar[data-v-7a5d79cc]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0 12px 12px;padding:14px}.trading-assistant .assistant-guide-bar .assistant-guide-steps[data-v-7a5d79cc]{grid-template-columns:1fr}.trading-assistant .assistant-guide-bar .assistant-guide-actions[data-v-7a5d79cc]{width:100%}.trading-assistant .assistant-guide-bar .assistant-guide-actions .ant-btn[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-layout[data-v-7a5d79cc]{height:auto;min-height:calc(100vh - 120px)}.trading-assistant .strategy-list-col[data-v-7a5d79cc]{margin-bottom:12px;height:auto;max-height:50vh}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc]{height:auto;max-height:50vh}.trading-assistant .strategy-list-col .strategy-list-card .card-title[data-v-7a5d79cc]{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;padding:12px 16px}.trading-assistant .strategy-list-col .strategy-list-card .card-title span[data-v-7a5d79cc]{font-size:14px;font-weight:600}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn[data-v-7a5d79cc]{font-size:12px;padding:0 10px;height:28px;line-height:28px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-body{max-height:calc(50vh - 60px);overflow-y:auto;padding:8px;-webkit-overflow-scrolling:touch}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-head{padding:0;min-height:48px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc]{padding:12px 8px;margin-bottom:4px;border-radius:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta{width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-action{margin-left:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-7a5d79cc]{width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper[data-v-7a5d79cc]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-bottom:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag[data-v-7a5d79cc],.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag[data-v-7a5d79cc]{font-size:10px;padding:2px 6px;line-height:1.4;margin:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag .anticon[data-v-7a5d79cc]{font-size:10px;margin-right:2px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-7a5d79cc]{font-size:14px;font-weight:600;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:4px;font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .info-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:3px;-ms-flex-negative:0;flex-shrink:0;font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .info-item .anticon{font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-label{font-size:10px;padding:2px 6px;line-height:1.4}.trading-assistant .strategy-detail-col[data-v-7a5d79cc]{height:auto;min-height:calc(50vh - 60px)}.trading-assistant .strategy-detail-col .strategy-detail-panel[data-v-7a5d79cc]{gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc] .ant-card-body{padding:16px 12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc] .ant-card-head{padding:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header[data-v-7a5d79cc]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left[data-v-7a5d79cc]{width:100%}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title[data-v-7a5d79cc]{font-size:18px;font-weight:600;margin-bottom:12px;line-height:1.4;word-break:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-7a5d79cc]{display:grid;grid-template-columns:1fr 1fr;gap:8px;-webkit-box-align:start;-ms-flex-align:start;align-items:start}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-7a5d79cc] .ant-tag{grid-column:-1;justify-self:start;margin:0;font-size:11px;padding:4px 8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:4px;font-size:12px;line-height:1.5;word-break:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item .anticon[data-v-7a5d79cc]{font-size:12px;-ms-flex-negative:0;flex-shrink:0;margin-top:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item>span[data-v-7a5d79cc]{word-break:break-word;line-height:1.5;-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item span[data-v-7a5d79cc]:not(.anticon){display:inline;word-break:break-word;overflow-wrap:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right[data-v-7a5d79cc]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:100px;font-size:13px;padding:0 12px;height:36px;line-height:36px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn .anticon[data-v-7a5d79cc]{margin-right:4px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body{padding:12px 8px;overflow-x:hidden}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-head{padding:0 8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav{padding:0 4px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-tab{font-size:13px;padding:8px 10px;margin:0 2px;white-space:nowrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-content{padding-top:12px;overflow-x:hidden}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-content .ant-tabs-tabpane{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:768px) and (max-width:480px){.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-7a5d79cc]{grid-template-columns:1fr}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-7a5d79cc] .ant-tag{grid-column:1}}@media (max-width:480px){.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc],.trading-assistant .strategy-list-col[data-v-7a5d79cc]{max-height:45vh}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-body{max-height:calc(45vh - 60px)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-7a5d79cc]{grid-template-columns:1fr;gap:6px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item[data-v-7a5d79cc]{font-size:11px;line-height:1.6}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn[data-v-7a5d79cc]{width:100%;-webkit-box-flex:0;-ms-flex:none;flex:none}}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc],.trading-assistant .strategy-list-col[data-v-7a5d79cc]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc]{border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);border:none;overflow:hidden;-webkit-transition:-webkit-box-shadow .3s ease;transition:-webkit-box-shadow .3s ease;transition:box-shadow .3s ease;transition:box-shadow .3s ease,-webkit-box-shadow .3s ease}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-list-col .strategy-list-card .card-title[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.trading-assistant .strategy-list-col .strategy-list-card .card-title span[data-v-7a5d79cc]{font-size:16px;font-weight:700;background:linear-gradient(135deg,#1e3a5f,#2d5a87);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-7a5d79cc]{border-radius:8px;background:linear-gradient(135deg,#1890ff,#40a9ff);border:none;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35);-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-7a5d79cc]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 0 12px;border-bottom:1px solid #f0f0f0;margin-bottom:12px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch .group-mode-label[data-v-7a5d79cc]{font-size:13px;color:#8c8c8c;font-weight:500}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-7a5d79cc] .ant-radio-group .ant-radio-button-wrapper{font-size:12px;padding:0 10px;height:26px;line-height:24px;border-radius:4px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-7a5d79cc] .ant-radio-group .ant-radio-button-wrapper:first-child{border-radius:4px 0 0 4px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-7a5d79cc] .ant-radio-group .ant-radio-button-wrapper:last-child{border-radius:0 4px 4px 0}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-7a5d79cc] .ant-radio-group .ant-radio-button-wrapper .anticon{margin-right:4px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;background:#fff;padding:12px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-head{background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fafbfc));background:linear-gradient(180deg,#fff,#fafbfc);border-bottom:1px solid #f0f0f0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group[data-v-7a5d79cc]{margin-bottom:12px;background:#fff;border-radius:12px;border:1px solid #e8ecf1;overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 12px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header[data-v-7a5d79cc]:hover{background:linear-gradient(135deg,#e8f4fd,#e3f0fc)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .collapse-icon[data-v-7a5d79cc]{font-size:12px;color:#8c8c8c;-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-7a5d79cc]{font-size:16px;color:#1890ff}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-name[data-v-7a5d79cc]{font-weight:600;font-size:14px;color:#1e3a5f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status[data-v-7a5d79cc]{font-size:11px;padding:2px 8px;border-radius:10px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status.running[data-v-7a5d79cc]{background:rgba(14,203,129,.1);color:#0ecb81}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status.stopped[data-v-7a5d79cc]{background:rgba(246,70,93,.1);color:#f6465d}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content[data-v-7a5d79cc]{padding:6px 8px 10px 6px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:10px 12px;margin-bottom:6px;margin-left:4px;border:1px solid #eef2f6;border-left:3px solid #dbe4ee;background:#fbfcfe;border-radius:8px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,.04);box-shadow:0 1px 2px rgba(15,23,42,.04)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:last-child{margin-bottom:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:hover{background:#f0f7ff;border-left-color:#1890ff;border-color:rgba(24,144,255,.22);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.08);box-shadow:0 2px 8px rgba(24,144,255,.08);-webkit-transform:none;transform:none}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-7a5d79cc]{background:linear-gradient(135deg,#e8f4ff,#f0f9ff);border-color:rgba(24,144,255,.35);border-left-color:#1890ff;border-left-width:3px;-webkit-box-shadow:0 2px 12px rgba(24,144,255,.12);box-shadow:0 2px 12px rgba(24,144,255,.12)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-content[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header[data-v-7a5d79cc]{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-actions[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:center;align-self:center;padding-top:0;margin-left:4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-actions[data-v-7a5d79cc] .ant-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;font-size:12px;color:#8c8c8c}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .info-item[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .info-item .anticon[data-v-7a5d79cc]{font-size:12px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:3px 10px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-running[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-stopped[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-error[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-item-header[data-v-7a5d79cc]{margin-bottom:2px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-name-wrapper[data-v-7a5d79cc]{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-name[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-item-info[data-v-7a5d79cc]{gap:10px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;cursor:pointer;padding:14px 16px;border-radius:12px;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;margin-bottom:8px;background:#fafbfc;border:1px solid transparent}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-content[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-actions[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:center;align-self:center;margin-left:4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-actions[data-v-7a5d79cc] .ant-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;font-size:12px;color:#8c8c8c}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .info-item[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .info-item .anticon[data-v-7a5d79cc]{font-size:12px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:3px 10px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-running[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-stopped[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-error[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc]:hover{background:linear-gradient(135deg,#f0f7ff,#f5f9ff);border-color:rgba(24,144,255,.2);-webkit-transform:none;transform:none;-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-7a5d79cc]{background:linear-gradient(135deg,#e6f4ff,#f0f9ff);border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}@media (max-width:768px){.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc]{padding:12px 8px;margin:0 4px 4px 4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-7a5d79cc]{border-left-width:2px}}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-7a5d79cc]{font-weight:600;font-size:14px;-ms-flex-negative:0;flex-shrink:0;color:#1e3a5f;-webkit-transition:color .2s ease;transition:color .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:11px;line-height:1.5;padding:2px 8px;border-radius:6px;background:linear-gradient(135deg,rgba(102,126,234,.1),rgba(118,75,162,.1));border:1px solid rgba(102,126,234,.2);color:#667eea;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag .anticon[data-v-7a5d79cc]{font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:10px;line-height:1.5;margin-left:4px;padding:2px 8px;border-radius:6px;background:linear-gradient(135deg,rgba(156,39,176,.1),rgba(103,58,183,.1));border:1px solid rgba(156,39,176,.2)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag .anticon[data-v-7a5d79cc]{font-size:10px;margin-right:3px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped[data-v-7a5d79cc]{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-line-pack:start;align-content:flex-start;row-gap:6px;-webkit-column-gap:6px;-moz-column-gap:6px;column-gap:6px;width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped[data-v-7a5d79cc] .ant-tag{margin-right:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped .status-label[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-7a5d79cc] .status-stopped{color:#f6465d!important;border-color:#f6465d!important}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description{max-width:calc(100% - 20px);overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;gap:12px;margin-top:8px;font-size:12px;color:var(--text-color-secondary,#8c8c8c);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-width:100%;overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-label:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-running{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3);-webkit-box-shadow:0 2px 8px rgba(14,203,129,.2);box-shadow:0 2px 8px rgba(14,203,129,.2)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-running:before{-webkit-animation:statusPulse-7a5d79cc 2s infinite;animation:statusPulse-7a5d79cc 2s infinite;-webkit-box-shadow:0 0 8px #0ecb81;box-shadow:0 0 8px #0ecb81}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-stopped{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-error{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}@-webkit-keyframes statusPulse-7a5d79cc{0%,to{opacity:1}50%{opacity:.5}}@keyframes statusPulse-7a5d79cc{0%,to{opacity:1}50%{opacity:.5}}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .info-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-ms-flex-negative:1;flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .info-item.strategy-name-text{font-weight:500;color:#1e3a5f;max-width:100%;white-space:normal;line-height:1.35}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info/deep/.ant-tag{margin-right:0;font-size:11px;line-height:18px;padding:0 6px}.trading-assistant .strategy-detail-col[data-v-7a5d79cc]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.trading-assistant .strategy-detail-col .strategy-empty-detail[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:320px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:24px 16px}.trading-assistant .strategy-detail-col .strategy-empty-detail-card[data-v-7a5d79cc]{max-width:420px;width:100%;text-align:center;padding:40px 32px 36px;border-radius:16px;background:linear-gradient(165deg,#fff,#f8fafc 55%,#f1f5f9);border:1px solid #e8ecf1;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.trading-assistant .strategy-detail-col .strategy-empty-detail-icon[data-v-7a5d79cc]{width:72px;height:72px;margin:0 auto 20px;border-radius:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(64,169,255,.08));color:#1890ff;font-size:32px}.trading-assistant .strategy-detail-col .strategy-empty-detail-title[data-v-7a5d79cc]{margin:0 0 12px;font-size:18px;font-weight:700;color:#1e3a5f;letter-spacing:.02em}.trading-assistant .strategy-detail-col .strategy-empty-detail-hint[data-v-7a5d79cc]{margin:0 0 24px;font-size:14px;line-height:1.65;color:#64748b}.trading-assistant .strategy-detail-col .strategy-empty-detail-actions[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px;min-height:100%}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#fff,#f8fafc);border:none;border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc] .ant-card-head{background:transparent;border-bottom:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc] .ant-card-body{background:transparent;padding:20px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:24px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .strategy-title[data-v-7a5d79cc]{font-size:20px;font-weight:700;margin:0;background:linear-gradient(135deg,#1e3a5f,#2d5a87);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 14px;border-radius:20px;font-size:13px;font-weight:600;-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge .status-dot[data-v-7a5d79cc]{width:8px;height:8px;border-radius:50%;-webkit-animation:pulse-7a5d79cc 2s infinite;animation:pulse-7a5d79cc 2s infinite}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-running[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-running .status-dot[data-v-7a5d79cc]{background:#0ecb81;-webkit-box-shadow:0 0 12px #0ecb81;box-shadow:0 0 12px #0ecb81}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-stopped[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-stopped .status-dot[data-v-7a5d79cc]{background:#f6465d;-webkit-animation:none;animation:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-error[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border:1px solid rgba(255,77,79,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-error .status-dot[data-v-7a5d79cc]{background:#ff4d4f;-webkit-animation:none;animation:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px;margin-bottom:14px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:10px 14px;background:#fff;border-radius:8px;border:1px solid #f0f0f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon[data-v-7a5d79cc]{width:36px;height:36px;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:16px;-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.investment[data-v-7a5d79cc]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.equity[data-v-7a5d79cc]{background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.pnl[data-v-7a5d79cc]{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-label[data-v-7a5d79cc]{font-size:11px;color:#8c8c8c;margin-bottom:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-value[data-v-7a5d79cc]{font-size:15px;font-weight:700;color:#1e3a5f;line-height:1.2}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-value .pnl-percent[data-v-7a5d79cc]{font-size:12px;font-weight:500;opacity:.8}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card.pnl-card.profit .stat-content .stat-value[data-v-7a5d79cc]{color:#0ecb81}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card.pnl-card.loss .stat-content .stat-value[data-v-7a5d79cc]{color:#f6465d}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 10px;background:#f5f7fa;border-radius:14px;font-size:12px;color:#5a6872;border:1px solid #e8ecf1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-7a5d79cc]{font-size:12px;color:#1890ff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn[data-v-7a5d79cc]{min-width:120px;height:38px;border-radius:8px;font-size:14px;font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn .anticon[data-v-7a5d79cc]{font-size:16px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.start-btn[data-v-7a5d79cc]{background:linear-gradient(135deg,#0ecb81,#26d87d);border:none;-webkit-box-shadow:0 2px 8px rgba(14,203,129,.3);box-shadow:0 2px 8px rgba(14,203,129,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.start-btn[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 4px 12px rgba(14,203,129,.4);box-shadow:0 4px 12px rgba(14,203,129,.4)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.stop-btn[data-v-7a5d79cc]{background:linear-gradient(135deg,#f6465d,#ff6b7a);border:none;-webkit-box-shadow:0 2px 8px rgba(246,70,93,.3);box-shadow:0 2px 8px rgba(246,70,93,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.stop-btn[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 4px 12px rgba(246,70,93,.4);box-shadow:0 4px 12px rgba(246,70,93,.4)}@-webkit-keyframes pulse-7a5d79cc{0%,to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.6;-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes pulse-7a5d79cc{0%,to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.6;-webkit-transform:scale(1.1);transform:scale(1.1)}}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fff;border:none;border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);-webkit-transition:all .3s ease;transition:all .3s ease;min-height:400px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-head{background:-webkit-gradient(linear,left top,left bottom,from(#fafbfc),to(#fff));background:linear-gradient(180deg,#fafbfc,#fff);border-bottom:1px solid #f0f0f0;-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body{padding:16px;background:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body,.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs .ant-tabs-bar{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs .ant-tabs-tabpane .strategy-tab-pane-inner{min-height:304px;padding-top:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs .ant-tabs-tabpane .position-records,.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs .ant-tabs-tabpane .trading-records{width:100%}.trading-assistant.theme-dark[data-v-7a5d79cc]{background:#141414;color:var(--dark-text-color,#fff)}.trading-assistant.theme-dark .creation-mode-toggle[data-v-7a5d79cc]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}.trading-assistant.theme-dark .creation-mode-toggle .mode-hint[data-v-7a5d79cc]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .card-title span[data-v-7a5d79cc]{background:linear-gradient(135deg,#e0e6ed,#c5ccd6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-head{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-head .ant-card-head-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-empty-description{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group[data-v-7a5d79cc]{background:rgba(30,30,30,.96);border:1px solid hsla(0,0%,100%,.08)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header[data-v-7a5d79cc]{background:hsla(0,0%,100%,.06);border-bottom:1px solid hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-name[data-v-7a5d79cc]{color:hsla(0,0%,100%,.92)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-icon[data-v-7a5d79cc]{color:#69c0ff}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .collapse-icon[data-v-7a5d79cc]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]{background:hsla(0,0%,100%,.05);border:1px solid hsla(0,0%,100%,.1);border-left:3px solid hsla(0,0%,100%,.12);-webkit-box-shadow:none;box-shadow:none}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:hover{background:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.14);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-7a5d79cc]{background:rgba(24,144,255,.15);border-color:rgba(24,144,255,.35);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info[data-v-7a5d79cc]{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .info-item[data-v-7a5d79cc]{color:hsla(0,0%,100%,.55)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]{background:hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.65);border-color:hsla(0,0%,100%,.12)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header .strategy-name-wrapper .info-item[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name-text[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list>.strategy-list-item .strategy-item-header .strategy-name-wrapper .info-item[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list>.strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name-text[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list>.strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-7a5d79cc]{color:hsla(0,0%,100%,.92)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header .strategy-name-wrapper .anticon[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list>.strategy-list-item .strategy-item-header .strategy-name-wrapper .anticon[data-v-7a5d79cc]{color:hsla(0,0%,100%,.55)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-list .ant-list-item{border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-list .ant-list-item .ant-list-item-meta-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-list .ant-list-item .ant-list-item-meta-description{color:#868993}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-7a5d79cc]{border-bottom-color:hsla(0,0%,100%,.08)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch .group-mode-label[data-v-7a5d79cc]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-7a5d79cc] .ant-radio-button-wrapper{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.65)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-7a5d79cc] .ant-radio-button-wrapper:hover{color:#69c0ff}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-7a5d79cc] .ant-radio-button-wrapper-checked{background:rgba(24,144,255,.25)!important;border-color:#1890ff!important;color:#fff!important}.trading-assistant.theme-dark .strategy-list-col .strategy-group[data-v-7a5d79cc]{background:rgba(0,0,0,.18);border-color:hsla(0,0%,100%,.08)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header[data-v-7a5d79cc]{background:hsla(0,0%,100%,.04)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header[data-v-7a5d79cc]:hover{background:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header .group-name[data-v-7a5d79cc]{color:hsla(0,0%,100%,.88)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header .collapse-icon[data-v-7a5d79cc]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item[data-v-7a5d79cc]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08);border-left-color:hsla(0,0%,100%,.12)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:hover{background:hsla(0,0%,100%,.05);border-color:hsla(0,0%,100%,.12);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item.active[data-v-7a5d79cc]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.28);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info[data-v-7a5d79cc]{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .info-item[data-v-7a5d79cc]{color:hsla(0,0%,100%,.55)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]{background:hsla(0,0%,100%,.06);color:hsla(0,0%,100%,.45);border-color:hsla(0,0%,100%,.1)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-running[data-v-7a5d79cc]{background:rgba(14,203,129,.12);color:#52c41a;border-color:rgba(14,203,129,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-stopped[data-v-7a5d79cc]{background:rgba(246,70,93,.12);color:#f6465d;border-color:rgba(246,70,93,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-error[data-v-7a5d79cc]{background:rgba(255,77,79,.12);color:#ff4d4f;border-color:rgba(255,77,79,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-name-wrapper .info-item[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-name-wrapper .strategy-name-text[data-v-7a5d79cc]{color:hsla(0,0%,100%,.88)!important}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-7a5d79cc]{background:hsla(0,0%,100%,.02);border:1px solid hsla(0,0%,100%,.04)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-7a5d79cc]:hover{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);-webkit-transform:none;transform:none}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-7a5d79cc]{background:rgba(24,144,255,.1);border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-name[data-v-7a5d79cc]{color:#e0e6ed}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-info[data-v-7a5d79cc]{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .exchange-tag[data-v-7a5d79cc]{background:rgba(102,126,234,.15);border-color:rgba(102,126,234,.3);color:#8da2f0}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .strategy-type-tag[data-v-7a5d79cc]{background:rgba(177,130,255,.15);border-color:rgba(177,130,255,.3);color:#b182ff}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .strategy-name[data-v-7a5d79cc]{color:hsla(0,0%,100%,.88)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-7a5d79cc]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-7a5d79cc] .ant-card-head{background:transparent;border-bottom:none}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-7a5d79cc] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-header .header-left .strategy-title-row .strategy-title[data-v-7a5d79cc]{background:none!important;-webkit-background-clip:border-box!important;background-clip:border-box!important;color:#e0e6ed!important;-webkit-text-fill-color:#e0e6ed!important}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card[data-v-7a5d79cc]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card[data-v-7a5d79cc]:hover{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.1)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card .stat-content .stat-label[data-v-7a5d79cc]{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card .stat-content .stat-value[data-v-7a5d79cc]{color:#e0e6ed}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-7a5d79cc]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.08);color:#a0a8b3}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-7a5d79cc]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-card-head{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-card-head .ant-card-head-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-tab{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-tab:hover{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-content{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-empty-description{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-card[data-v-7a5d79cc]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.08);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.35);box-shadow:0 8px 32px rgba(0,0,0,.35)}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-icon[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.22),rgba(64,169,255,.1));color:#69c0ff}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-title[data-v-7a5d79cc]{color:hsla(0,0%,100%,.92)}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-hint[data-v-7a5d79cc]{color:hsla(0,0%,100%,.55)}.theme-dark .assistant-guide-bar[data-v-7a5d79cc]{border-color:rgba(23,125,220,.28);background:linear-gradient(135deg,rgba(23,125,220,.14),rgba(114,46,209,.12))}.theme-dark .assistant-guide-bar .assistant-guide-eyebrow[data-v-7a5d79cc]{background:rgba(23,125,220,.2);color:#69c0ff}.theme-dark .assistant-guide-bar .assistant-guide-title[data-v-7a5d79cc]{color:hsla(0,0%,100%,.92)}.theme-dark .assistant-guide-bar .assistant-guide-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.72)}.theme-dark .assistant-guide-bar .assistant-step-card[data-v-7a5d79cc]{background:rgba(30,30,30,.6);border-color:hsla(0,0%,100%,.08)}.theme-dark .assistant-guide-bar .assistant-step-title[data-v-7a5d79cc]{color:hsla(0,0%,100%,.9)}.theme-dark .assistant-guide-bar .assistant-step-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.58)}.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-7a5d79cc]{background:rgba(30,30,30,.5);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.72)}.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-7a5d79cc]:focus,.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-7a5d79cc]:hover{background:rgba(50,50,50,.7);border-color:rgba(105,192,255,.45);color:#91d5ff}.theme-dark .strategy-empty-state .strategy-empty-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.72)}.theme-dark .strategy-empty-state .strategy-empty-path[data-v-7a5d79cc]{color:hsla(0,0%,100%,.48)}.strategy-params-collapse[data-v-7a5d79cc]{background:#fafafa;border-radius:10px;overflow:hidden}.strategy-params-collapse[data-v-7a5d79cc] .ant-collapse-item{border-bottom-color:#f0f0f0}.strategy-params-collapse[data-v-7a5d79cc] .ant-collapse-header{font-weight:500;font-size:13px}.strategy-params-collapse[data-v-7a5d79cc] .ant-collapse-content-box{padding:12px 16px}.strategy-params-collapse[data-v-7a5d79cc] .ant-input-number{width:100%}.ai-filter-box[data-v-7a5d79cc]{margin-top:12px;padding:14px 14px 12px;border:1px solid #e8e8e8;border-radius:10px;background:-webkit-gradient(linear,left top,left bottom,from(#fafcff),to(#fff));background:linear-gradient(180deg,#fafcff,#fff)}.ai-filter-header[data-v-7a5d79cc]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px}.ai-filter-header[data-v-7a5d79cc],.ai-filter-title[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ai-filter-title[data-v-7a5d79cc]{gap:8px;font-weight:600;color:#262626}.ai-filter-title .anticon[data-v-7a5d79cc]{color:#1890ff}.ai-filter-hint[data-v-7a5d79cc]{margin-top:6px;font-size:12px;line-height:1.5;color:#8c8c8c}.symbol-option[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-name[data-v-7a5d79cc]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-name-extra[data-v-7a5d79cc]{font-size:12px;color:#999;margin-left:4px}.creation-mode-toggle[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;margin-bottom:16px;padding:14px 16px;background:rgba(24,144,255,.04);border-radius:8px;border:1px solid rgba(24,144,255,.12)}.creation-mode-toggle .mode-meta[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px}.creation-mode-toggle .mode-title[data-v-7a5d79cc]{font-size:14px;font-weight:600;color:#262626}.creation-mode-toggle .mode-hint[data-v-7a5d79cc]{color:rgba(0,0,0,.45);font-size:12px}@media (max-width:768px){.creation-mode-toggle[data-v-7a5d79cc]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}}.section-block-title[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px;margin-bottom:16px;font-size:14px;font-weight:600;color:#262626}.section-block-desc[data-v-7a5d79cc]{font-size:12px;font-weight:400;color:#8c8c8c}.simple-mode-hero[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding:14px 16px;margin-bottom:16px;border-radius:10px;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06));border:1px solid rgba(24,144,255,.14)}.simple-mode-hero-main[data-v-7a5d79cc]{min-width:0}.simple-mode-kicker[data-v-7a5d79cc]{font-size:12px;font-weight:600;color:#1890ff;margin-bottom:4px}.simple-mode-hero-desc[data-v-7a5d79cc]{font-size:12px;line-height:1.6;color:#595959}.simple-mode-badges[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}.advanced-settings-shell[data-v-7a5d79cc],.selected-indicator-card[data-v-7a5d79cc],.simple-essentials-card[data-v-7a5d79cc]{padding:20px;margin-bottom:18px;border-radius:12px;background:#fafcff;border:1px solid rgba(24,144,255,.12);-webkit-box-shadow:0 8px 24px rgba(15,23,42,.04);box-shadow:0 8px 24px rgba(15,23,42,.04)}.required-label[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.required-star[data-v-7a5d79cc]{color:#f5222d;margin-right:4px}.compact-form-item[data-v-7a5d79cc]{margin-bottom:18px}.compact-grid-row[data-v-7a5d79cc]{margin-bottom:4px}.execution-step-layout[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px}.execution-step-hero[data-v-7a5d79cc]{padding:16px 18px;border-radius:12px;background:linear-gradient(135deg,rgba(82,196,26,.08),rgba(24,144,255,.08));border:1px solid rgba(24,144,255,.14)}.execution-step-hero-desc[data-v-7a5d79cc]{font-size:12px;line-height:1.7;color:#595959}.execution-section-card[data-v-7a5d79cc]{padding:18px 20px;border-radius:12px;background:#fafcff;border:1px solid rgba(24,144,255,.12);-webkit-box-shadow:0 8px 24px rgba(15,23,42,.04);box-shadow:0 8px 24px rgba(15,23,42,.04)}.section-inline-alert[data-v-7a5d79cc]{margin-top:4px}.notify-channel-grid[data-v-7a5d79cc]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px}.execution-warn-text[data-v-7a5d79cc]{color:#ff9800}.execution-mode-cards[data-v-7a5d79cc]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.execution-mode-card[data-v-7a5d79cc]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:14px;min-height:110px;padding:16px;border-radius:12px;border:1px solid rgba(24,144,255,.12);background:#fff;cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease}.execution-mode-card[data-v-7a5d79cc]:hover{border-color:rgba(24,144,255,.35);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.08);box-shadow:0 8px 24px rgba(24,144,255,.08)}.execution-mode-card.active[data-v-7a5d79cc]{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.03));-webkit-box-shadow:0 10px 28px rgba(24,144,255,.12);box-shadow:0 10px 28px rgba(24,144,255,.12)}.execution-mode-card.disabled[data-v-7a5d79cc]{cursor:not-allowed;opacity:.68;background:#fafafa}.execution-mode-card.disabled[data-v-7a5d79cc]:hover{border-color:rgba(24,144,255,.12);-webkit-box-shadow:none;box-shadow:none}.execution-mode-card-icon[data-v-7a5d79cc]{-webkit-box-flex:0;-ms-flex:0 0 42px;flex:0 0 42px;width:42px;height:42px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:12px;font-size:18px}.execution-mode-card-icon.signal[data-v-7a5d79cc]{color:#1890ff;background:rgba(24,144,255,.1)}.execution-mode-card-icon.live[data-v-7a5d79cc]{color:#fa8c16;background:rgba(250,140,22,.12)}.execution-mode-card-body[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.execution-mode-card-title[data-v-7a5d79cc]{font-size:14px;font-weight:600;color:#262626;margin-bottom:6px}.execution-mode-card-desc[data-v-7a5d79cc]{font-size:12px;line-height:1.6;color:#8c8c8c}.execution-mode-card-check[data-v-7a5d79cc]{position:absolute;top:12px;right:12px;color:#1890ff;font-size:18px}.steps-container[data-v-7a5d79cc]{margin-bottom:24px}@media (max-width:768px){.steps-container[data-v-7a5d79cc]{margin-bottom:16px}.steps-container[data-v-7a5d79cc] .ant-steps-item-title{font-size:12px}.steps-container[data-v-7a5d79cc] .ant-steps-item-icon{width:24px;height:24px;line-height:24px;font-size:12px}}.form-container[data-v-7a5d79cc]{min-height:400px;padding:24px 0}.form-container .step-content[data-v-7a5d79cc]{-webkit-animation:fadeIn-7a5d79cc .3s;animation:fadeIn-7a5d79cc .3s}.form-container[data-v-7a5d79cc] .ant-form-item{margin-bottom:20px}@media (max-width:768px){.form-container[data-v-7a5d79cc]{min-height:300px;padding:16px 0}.form-container .simple-mode-hero[data-v-7a5d79cc]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.form-container .simple-mode-badges[data-v-7a5d79cc]{width:100%}.form-container .notify-channel-grid[data-v-7a5d79cc]{grid-template-columns:repeat(2,minmax(0,1fr))}.form-container .execution-mode-cards[data-v-7a5d79cc]{grid-template-columns:1fr}.form-container .execution-section-card[data-v-7a5d79cc],.form-container .execution-step-hero[data-v-7a5d79cc]{padding:16px}.form-container[data-v-7a5d79cc] .ant-form-item-label{padding-bottom:4px}.form-container[data-v-7a5d79cc] .ant-form-item-label label{font-size:13px}.form-container[data-v-7a5d79cc] .ant-input,.form-container[data-v-7a5d79cc] .ant-input-number,.form-container[data-v-7a5d79cc] .ant-select{font-size:14px}.form-container[data-v-7a5d79cc] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.form-container[data-v-7a5d79cc] .ant-radio-group .ant-radio-wrapper{font-size:13px}}@media (max-width:480px){.form-container[data-v-7a5d79cc]{min-height:250px;padding:12px 0}.form-container[data-v-7a5d79cc] .ant-form-item-label label{font-size:12px}.form-container[data-v-7a5d79cc] .ant-input,.form-container[data-v-7a5d79cc] .ant-input-number,.form-container[data-v-7a5d79cc] .ant-select{font-size:13px}}.strategy-type-selector[data-v-7a5d79cc]{padding:16px 0}.strategy-type-selector .market-category-selector[data-v-7a5d79cc]{margin-bottom:16px}.strategy-type-selector .market-category-selector .selector-label[data-v-7a5d79cc]{font-weight:600;margin-bottom:8px;color:#262626}.strategy-type-selector .market-category-selector[data-v-7a5d79cc] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}.strategy-type-selector .strategy-type-card[data-v-7a5d79cc]{cursor:pointer;-webkit-transition:all .3s;transition:all .3s;height:100%;min-height:180px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.strategy-type-selector .strategy-type-card[data-v-7a5d79cc]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.strategy-type-selector .strategy-type-card.selected[data-v-7a5d79cc]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}.strategy-type-selector .strategy-type-card .strategy-type-content[data-v-7a5d79cc]{text-align:center;padding:16px}.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-7a5d79cc]{font-size:48px;color:#1890ff;margin-bottom:16px}.strategy-type-selector .strategy-type-card .strategy-type-content h3[data-v-7a5d79cc]{font-size:18px;font-weight:600;margin-bottom:8px;color:#1f1f1f}.strategy-type-selector .strategy-type-card .strategy-type-content p[data-v-7a5d79cc]{font-size:14px;color:#8c8c8c;margin:0;line-height:1.6}.indicator-option[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:12px}.indicator-option .indicator-option-main[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1}.indicator-option .indicator-name[data-v-7a5d79cc]{display:block;color:#262626;font-weight:600}.indicator-option-desc[data-v-7a5d79cc]{display:block;margin-top:2px;color:#8c8c8c;font-size:12px;line-height:1.5}.selected-indicator-header[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin-bottom:8px}.selected-indicator-name[data-v-7a5d79cc]{font-weight:600;color:#262626}.indicator-description[data-v-7a5d79cc]{border-radius:4px;color:var(--text-color,#666);font-size:14px;line-height:1.6}.theme-dark .advanced-settings-shell[data-v-7a5d79cc],.theme-dark .creation-mode-toggle[data-v-7a5d79cc],.theme-dark .selected-indicator-card[data-v-7a5d79cc],.theme-dark .simple-essentials-card[data-v-7a5d79cc]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1)}.theme-dark .indicator-option .indicator-name[data-v-7a5d79cc],.theme-dark .mode-title[data-v-7a5d79cc],.theme-dark .section-block-title[data-v-7a5d79cc],.theme-dark .selected-indicator-name[data-v-7a5d79cc]{color:hsla(0,0%,100%,.9)}.theme-dark .indicator-option-desc[data-v-7a5d79cc],.theme-dark .mode-hint[data-v-7a5d79cc],.theme-dark .section-block-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.6)}.theme-dark .simple-mode-hero[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.14),rgba(114,46,209,.12));border-color:rgba(64,169,255,.18)}.theme-dark .execution-step-hero[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(82,196,26,.14),rgba(24,144,255,.14));border-color:rgba(64,169,255,.18)}.theme-dark .execution-mode-card[data-v-7a5d79cc]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08)}.theme-dark .execution-mode-card[data-v-7a5d79cc]:hover{border-color:rgba(64,169,255,.3);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)}.theme-dark .execution-mode-card.active[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff}.theme-dark .execution-mode-card.disabled[data-v-7a5d79cc]{background:hsla(0,0%,100%,.02)}.theme-dark .execution-mode-card-title[data-v-7a5d79cc]{color:#e0e6ed}.theme-dark .execution-mode-card-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.6)}.theme-dark .simple-mode-kicker[data-v-7a5d79cc]{color:#69c0ff}.theme-dark .execution-step-hero-desc[data-v-7a5d79cc],.theme-dark .simple-mode-hero-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.72)}.indicator-params-form[data-v-7a5d79cc]{padding:12px;background-color:var(--bg-color-secondary,#f5f7fa);border-radius:6px;border:1px dashed var(--border-color,#e0e0e0)}.indicator-params-form .param-item[data-v-7a5d79cc]{margin-bottom:12px}.indicator-params-form .param-label[data-v-7a5d79cc]{display:block;font-size:13px;color:var(--text-color,#666);margin-bottom:4px;font-weight:500}.form-item-hint[data-v-7a5d79cc]{margin-top:4px;font-size:12px;color:var(--text-color-secondary,#8c8c8c)}.test-result[data-v-7a5d79cc]{margin-top:8px;padding:8px;border-radius:4px;font-size:14px}.test-result.success[data-v-7a5d79cc]{background-color:#f6ffed;border:1px solid #b7eb8f;color:#52c41a}.ip-whitelist-tip[data-v-7a5d79cc]{margin-top:12px;padding:12px;background-color:#e6f7ff;border:1px solid #91d5ff;border-radius:4px;font-size:13px;color:#1890ff;line-height:1.6}.ip-whitelist-tip .anticon[data-v-7a5d79cc]{margin-right:6px;color:#1890ff}.ip-whitelist-tip .ip-list[data-v-7a5d79cc]{margin-top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.ip-whitelist-tip .ip-list .ant-tag[data-v-7a5d79cc]{margin:0;font-family:Courier New,monospace;font-size:12px}.ip-whitelist-tip.error[data-v-7a5d79cc]{background-color:#fff2f0;border:1px solid #ffccc7;color:#ff4d4f}@-webkit-keyframes fadeIn-7a5d79cc{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeIn-7a5d79cc{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}[data-v-7a5d79cc] .danger-item{color:#ff4d4f}[data-v-7a5d79cc] .mobile-modal .ant-modal{top:20px;padding-bottom:0}[data-v-7a5d79cc] .mobile-modal .ant-modal-content{max-height:calc(100vh - 40px);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}[data-v-7a5d79cc] .mobile-modal .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px}[data-v-7a5d79cc] .mobile-modal .ant-modal-footer{padding:12px 16px;border-top:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}[data-v-7a5d79cc] .mobile-modal .ant-modal-footer .ant-btn{font-size:13px;padding:0 12px;height:32px}.add-symbol-modal-content .market-tabs[data-v-7a5d79cc],.add-symbol-modal-content .symbol-search-section[data-v-7a5d79cc]{margin-bottom:16px}.add-symbol-modal-content .section-title[data-v-7a5d79cc]{font-weight:500;margin-bottom:8px;color:rgba(0,0,0,.85);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-symbol-modal-content .hot-symbols-section[data-v-7a5d79cc],.add-symbol-modal-content .search-results-section[data-v-7a5d79cc]{margin-bottom:16px}.add-symbol-modal-content .symbol-list .symbol-list-item[data-v-7a5d79cc]{cursor:pointer;-webkit-transition:background-color .3s;transition:background-color .3s;padding:8px 12px;border-radius:4px}.add-symbol-modal-content .symbol-list .symbol-list-item[data-v-7a5d79cc]:hover{background-color:#f5f5f5}.add-symbol-modal-content .symbol-item-content[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-symbol-modal-content .symbol-item-content .symbol-code[data-v-7a5d79cc]{font-weight:500;margin-right:8px}.add-symbol-modal-content .symbol-item-content .symbol-name[data-v-7a5d79cc]{color:rgba(0,0,0,.45)}.add-symbol-modal-content .selected-symbol-section[data-v-7a5d79cc]{padding:12px;background-color:#f6ffed;border:1px solid #b7eb8f;border-radius:4px;margin-top:16px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:8px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info .symbol-code[data-v-7a5d79cc]{font-weight:500;margin-right:8px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info .symbol-name[data-v-7a5d79cc]{color:rgba(0,0,0,.45)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-body{background:#1e1e1e}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-title{color:hsla(0,0%,100%,.88)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-content{color:hsla(0,0%,100%,.65)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns{border-top:1px solid hsla(0,0%,100%,.06);padding-top:12px}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns .ant-btn-default{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.85)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns .ant-btn-danger{background:#ff4d4f;border-color:#ff4d4f;color:#fff}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body>.anticon{color:#faad14}body.dark .mode-selector-modal .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .mode-selector-modal .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-body{color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08);-webkit-box-shadow:0 18px 48px rgba(0,0,0,.45);box-shadow:0 18px 48px rgba(0,0,0,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-body{color:#d1d4dc;background:#1e1e1e}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle .mode-hint,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle .mode-title{color:hsla(0,0%,100%,.72)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-title{color:hsla(0,0%,100%,.65)!important}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-description{color:hsla(0,0%,100%,.35)!important}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-wait .ant-steps-item-icon{background:transparent;border-color:hsla(0,0%,100%,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-wait .ant-steps-item-icon .ant-steps-icon{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-process .ant-steps-item-icon{background:#1890ff;border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon{color:#fff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-finish .ant-steps-item-icon{background:transparent;border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-finish .ant-steps-item-icon .ant-steps-icon{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-tail:after{background:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .notify-channel-grid .ant-checkbox-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:40px;padding:0 12px;border-radius:10px;background:hsla(0,0%,100%,.03);border:1px solid hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.72)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-webkit-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-moz-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:-ms-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-ms-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:focus,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:hover,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:focus,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:hover{border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap{background:#252525;border-left-color:hsla(0,0%,100%,.12)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap .ant-input-number-handler{border-bottom-color:hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection .ant-select-arrow{color:hsla(0,0%,100%,.35)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection:hover{border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-wrapper{color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-switch{background:hsla(0,0%,100%,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-switch.ant-switch-checked{background:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-moz-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-explain,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-extra{color:hsla(0,0%,100%,.35)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-item-label>label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse{background:#1c1c1c!important;border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-item{border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-header{color:hsla(0,0%,100%,.85)!important;background:hsla(0,0%,100%,.03)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-content{background:#1c1c1c;border-color:hsla(0,0%,100%,.06);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .advanced-settings-shell,body.dark .strategy-form-modal.strategy-form-modal-dark .execution-section-card,body.dark .strategy-form-modal.strategy-form-modal-dark .selected-indicator-card,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-essentials-card{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08);-webkit-box-shadow:none;box-shadow:none}body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(114,46,209,.14));border-color:rgba(64,169,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero{background:linear-gradient(135deg,rgba(82,196,26,.16),rgba(24,144,255,.14));border-color:rgba(64,169,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .mode-title,body.dark .strategy-form-modal.strategy-form-modal-dark .section-block-title,body.dark .strategy-form-modal.strategy-form-modal-dark .selected-indicator-name{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .form-item-hint,body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-description,body.dark .strategy-form-modal.strategy-form-modal-dark .section-block-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero-desc{color:hsla(0,0%,100%,.62)}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box .ai-filter-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box .ai-filter-hint{color:hsla(0,0%,100%,.4)}body.dark .strategy-form-modal.strategy-form-modal-dark .form-container{color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .form-container .ant-form-item-label>label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-description{background:#1c1c1c;color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-params-form{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-params-form .param-label{color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card{border-color:hsla(0,0%,100%,.1);background:#1c1c1c;color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card:hover{border-color:#177ddc}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card.selected{border-color:#177ddc;background:rgba(23,125,220,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card .strategy-type-content h3{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card .strategy-type-content p{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .market-category-selector .selector-label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-option .indicator-name{color:hsla(0,0%,100%,.9)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-option-desc{color:hsla(0,0%,100%,.6)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select-selection-selected-value{color:#d1d4dc!important}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card:hover{border-color:rgba(64,169,255,.3);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card.active{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card.disabled{background:hsla(0,0%,100%,.02)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-icon.signal{color:#69c0ff;background:rgba(24,144,255,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-icon.live{color:#ffc069;background:rgba(250,140,22,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-desc{color:hsla(0,0%,100%,.6)}body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-kicker{color:#69c0ff}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero-desc{color:hsla(0,0%,100%,.72)}body.dark .ant-modal-wrap .ant-modal-content{background:#1e1e1e}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-body{color:#d1d4dc}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-footer{border-top-color:hsla(0,0%,100%,.06);background:#252525}body.dark .ant-select-dropdown{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.1);-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4);box-shadow:0 4px 12px rgba(0,0,0,.4)}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d1d4dc}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-disabled{color:hsla(0,0%,100%,.25)}body.dark .ant-select-dropdown .ant-select-search__field{background:#141414;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .ant-select-dropdown .ant-select-dropdown-menu{background:#1e1e1e}body.dark .ant-select-dropdown .ant-empty-description{color:hsla(0,0%,100%,.35)}body.dark .ant-modal-wrap .ant-collapse{background:#1c1c1c!important;border-color:hsla(0,0%,100%,.08)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-item{border-color:hsla(0,0%,100%,.08)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-header{color:hsla(0,0%,100%,.85)!important;background:hsla(0,0%,100%,.03)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-header .anticon{color:hsla(0,0%,100%,.45)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-content{background:#1c1c1c;border-color:hsla(0,0%,100%,.06);color:#d1d4dc}body.dark .ant-modal-wrap .ant-spin-text{color:hsla(0,0%,100%,.65)}body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)}body.dark .ant-modal-wrap .ant-alert .ant-alert-message{color:hsla(0,0%,100%,.75)}body.dark .ant-modal-wrap .ant-alert .ant-alert-description{color:hsla(0,0%,100%,.55)} \ No newline at end of file diff --git a/frontend/dist/css/230.2035e6e3.css b/frontend/dist/css/230.2035e6e3.css deleted file mode 100644 index a2fe643..0000000 --- a/frontend/dist/css/230.2035e6e3.css +++ /dev/null @@ -1 +0,0 @@ -.trading-records[data-v-bdf54cd6]{width:100%;min-height:300px;padding:0;overflow-x:visible;overflow-y:visible}.trading-records .empty-state[data-v-bdf54cd6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:220px;padding:40px 16px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.trading-records.theme-dark .empty-state[data-v-bdf54cd6]{background:#141414;border-color:hsla(0,0%,100%,.08)}.trading-records[data-v-bdf54cd6] .ant-spin-container,.trading-records[data-v-bdf54cd6] .ant-spin-nested-loading{overflow-x:visible}.trading-records[data-v-bdf54cd6] .ant-table-wrapper{overflow-x:visible;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-bdf54cd6] .ant-table{font-size:13px;color:#333}.trading-records[data-v-bdf54cd6] .ant-table-container{overflow-x:visible}.trading-records[data-v-bdf54cd6] .ant-table-body{overflow-x:auto;overflow-y:visible;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-bdf54cd6] .ant-table-container{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-bdf54cd6] .ant-table-content{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-bdf54cd6] .ant-table-content::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-bdf54cd6] .ant-table-content::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-content::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-content::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td,.trading-records[data-v-bdf54cd6] .ant-table-thead>tr>th{white-space:nowrap}.trading-records[data-v-bdf54cd6] .ant-table-thead>tr>th{background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9);font-weight:600;color:#475569;border-bottom:2px solid #e2e8f0;padding:12px 16px;font-size:13px}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td{padding:12px 16px;color:#334155;border-bottom:1px solid #f1f5f9;-webkit-transition:background .2s ease;transition:background .2s ease}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr:hover>td{background:#f0f7ff!important}.trading-records[data-v-bdf54cd6] .ant-tag{border-radius:6px;padding:3px 10px;font-weight:600;font-size:11px;border:none;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-bdf54cd6] .ant-tag[color=cyan],.trading-records[data-v-bdf54cd6] .ant-tag[color=green],.trading-records[data-v-bdf54cd6] .ant-tag[color=lime]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.trading-records[data-v-bdf54cd6] .ant-tag[color=magenta],.trading-records[data-v-bdf54cd6] .ant-tag[color=red]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.trading-records[data-v-bdf54cd6] .ant-tag[color=orange]{background:linear-gradient(135deg,rgba(250,173,20,.15),rgba(250,173,20,.08));color:#d48806;border:1px solid rgba(250,173,20,.3)}.trading-records[data-v-bdf54cd6] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}.trading-records[data-v-bdf54cd6] .ant-pagination{margin-top:16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item{border-radius:8px;border:1px solid #e2e8f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item.ant-pagination-item-active a{color:#fff}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{border-radius:8px;border:1px solid #e2e8f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}.theme-dark .trading-records[data-v-bdf54cd6] .ant-table,.trading-records.theme-dark[data-v-bdf54cd6] .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v-bdf54cd6] .ant-table-thead>tr>th,.trading-records.theme-dark[data-v-bdf54cd6] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600}.theme-dark .trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td,.trading-records.theme-dark[data-v-bdf54cd6] .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v-bdf54cd6] .ant-table-tbody>tr:hover>td,.trading-records.theme-dark[data-v-bdf54cd6] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td span,.trading-records.theme-dark[data-v-bdf54cd6] .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records[data-v-bdf54cd6] .ant-empty .ant-empty-description,.trading-records.theme-dark[data-v-bdf54cd6] .ant-empty .ant-empty-description{color:hsla(0,0%,100%,.35)}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr:hover>td{background:#fafafa}@media (max-width:768px){.trading-records[data-v-bdf54cd6]{min-height:200px;overflow-x:visible}.trading-records[data-v-bdf54cd6] .ant-table{font-size:12px}.trading-records[data-v-bdf54cd6] .ant-table-body,.trading-records[data-v-bdf54cd6] .ant-table-container,.trading-records[data-v-bdf54cd6] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar,.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar,.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar{height:4px;width:4px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-track,.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-track,.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:2px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-thumb,.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-thumb,.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-thumb:hover,.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-thumb:hover,.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td,.trading-records[data-v-bdf54cd6] .ant-table-thead>tr>th{padding:8px 10px;font-size:11px;white-space:nowrap}.trading-records[data-v-bdf54cd6] .ant-pagination{margin-top:12px;text-align:center}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item,.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-next,.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-prev{margin:0 2px;min-width:28px;height:28px;line-height:26px;font-size:12px}}@media (max-width:480px){.trading-records[data-v-bdf54cd6] .ant-table{font-size:11px}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td,.trading-records[data-v-bdf54cd6] .ant-table-thead>tr>th{padding:6px 8px;font-size:10px}}.theme-dark .trading-records .ant-table-tbody>tr>td,.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td,body.dark .trading-records .ant-table-tbody>tr>td,body.realdark .trading-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records .ant-table-thead>tr>th,.theme-dark .trading-records[data-v] .ant-table-thead>tr>th,body.dark .trading-records .ant-table-thead>tr>th,body.realdark .trading-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600!important}.theme-dark .trading-records .ant-table,.theme-dark .trading-records[data-v] .ant-table,body.dark .trading-records .ant-table,body.realdark .trading-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records .ant-table-tbody>tr>td *,.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td *,body.dark .trading-records .ant-table-tbody>tr>td *,body.realdark .trading-records .ant-table-tbody>tr>td *{color:#d1d4dc!important}.theme-dark .trading-records .ant-table-tbody>tr:hover>td,.theme-dark .trading-records[data-v] .ant-table-tbody>tr:hover>td,body.dark .trading-records .ant-table-tbody>tr:hover>td,body.realdark .trading-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records .ant-table-thead>tr>th .ant-table-column-title,.theme-dark .trading-records[data-v] .ant-table-thead>tr>th .ant-table-column-title,body.dark .trading-records .ant-table-thead>tr>th .ant-table-column-title,body.realdark .trading-records .ant-table-thead>tr>th .ant-table-column-title{color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr>td,body.realdark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}body.dark .trading-records[data-v-8a68b65a] .ant-table-thead>tr>th,body.realdark .trading-records[data-v-8a68b65a] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td,body.dark .trading-records[data-v] .ant-table-tbody>tr>td,body.realdark .trading-records[data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-table-thead>tr>th,body.dark .trading-records[data-v] .ant-table-thead>tr>th,body.realdark .trading-records[data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item,body.dark .trading-records[data-v] .ant-pagination-item,body.realdark .trading-records[data-v] .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-pagination-item a,body.dark .trading-records[data-v] .ant-pagination-item a,body.realdark .trading-records[data-v] .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item-active a,body.dark .trading-records[data-v] .ant-pagination-item-active a,body.realdark .trading-records[data-v] .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper,body.dark .trading-records[data-v-8a68b65a] .ant-table-body,body.dark .trading-records[data-v-8a68b65a] .ant-table-container,body.dark .trading-records[data-v-8a68b65a] .ant-table-content,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records[data-v] .ant-table-body,.theme-dark .trading-records[data-v] .ant-table-container,.theme-dark .trading-records[data-v] .ant-table-content,.theme-dark .trading-records[data-v] .ant-table-wrapper,body.dark .trading-records[data-v] .ant-table-body,body.dark .trading-records[data-v] .ant-table-container,body.dark .trading-records[data-v] .ant-table-content,body.dark .trading-records[data-v] .ant-table-wrapper,body.realdark .trading-records[data-v] .ant-table-body,body.realdark .trading-records[data-v] .ant-table-container,body.realdark .trading-records[data-v] .ant-table-content,body.realdark .trading-records[data-v] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}.theme-dark .trading-records ::v-deep .ant-table-body,.theme-dark .trading-records ::v-deep .ant-table-container,.theme-dark .trading-records ::v-deep .ant-table-content,.theme-dark .trading-records ::v-deep .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table,body.realdark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table table,body.realdark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-table-tbody,body.realdark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .trading-records ::v-deep .ant-table-placeholder,body.realdark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}body.dark .trading-records ::v-deep .ant-table-body,body.dark .trading-records ::v-deep .ant-table-container,body.dark .trading-records ::v-deep .ant-table-content,body.dark .trading-records ::v-deep .ant-table-wrapper,body.realdark .trading-records ::v-deep .ant-table-body,body.realdark .trading-records ::v-deep .ant-table-container,body.realdark .trading-records ::v-deep .ant-table-content,body.realdark .trading-records ::v-deep .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table,.theme-dark .trading-records ::v-deep .ant-table,body.dark .trading-records * ::v-deep .ant-table,body.dark .trading-records ::v-deep .ant-table,body.realdark .trading-records * ::v-deep .ant-table,body.realdark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table table,.theme-dark .trading-records ::v-deep .ant-table table,body.dark .trading-records * ::v-deep .ant-table table,body.dark .trading-records ::v-deep .ant-table table,body.realdark .trading-records * ::v-deep .ant-table table,body.realdark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-thead>tr>th,.theme-dark .trading-records ::v-deep .ant-table-thead>tr>th,body.dark .trading-records * ::v-deep .ant-table-thead>tr>th,body.dark .trading-records ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records * ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody,.theme-dark .trading-records ::v-deep .ant-table-tbody,body.dark .trading-records * ::v-deep .ant-table-tbody,body.dark .trading-records ::v-deep .ant-table-tbody,body.realdark .trading-records * ::v-deep .ant-table-tbody,body.realdark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td span,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td span,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records * ::v-deep .ant-table-placeholder,.theme-dark .trading-records ::v-deep .ant-table-placeholder,body.dark .trading-records * ::v-deep .ant-table-placeholder,body.dark .trading-records ::v-deep .ant-table-placeholder,body.realdark .trading-records * ::v-deep .ant-table-placeholder,body.realdark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.position-records[data-v-6ba7d922]{width:100%;min-height:300px;padding:0}.position-records .empty-state[data-v-6ba7d922]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:220px;padding:40px 16px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.position-records.theme-dark .empty-state[data-v-6ba7d922]{background:#141414;border-color:hsla(0,0%,100%,.08)}.position-records[data-v-6ba7d922] .ant-table{font-size:13px;color:#333}.position-records[data-v-6ba7d922] .ant-table-body{overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-container{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-content,.position-records[data-v-6ba7d922] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9);font-weight:600;color:#475569;border-bottom:2px solid #e2e8f0;padding:12px 16px;font-size:13px}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td{padding:12px 16px;color:#334155;border-bottom:1px solid #f1f5f9;-webkit-transition:background .2s ease;transition:background .2s ease}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td strong{color:#262626;font-weight:600}.position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#f0f7ff!important}.position-records[data-v-6ba7d922] .ant-tag{border-radius:6px;padding:2px 10px;font-weight:600;font-size:11px;border:none}.position-records[data-v-6ba7d922] .ant-tag[color=green]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.position-records[data-v-6ba7d922] .ant-tag[color=red]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.position-records.theme-dark[data-v-6ba7d922] .ant-table,.theme-dark .position-records[data-v-6ba7d922] .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-thead>tr>th,.theme-dark .position-records[data-v-6ba7d922] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr>td,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr:hover>td,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr>td strong,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr>td strong{color:#d1d4dc!important}.position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#fafafa}.position-records[data-v-6ba7d922] .ant-empty{margin:40px 0}.position-records[data-v-6ba7d922] .ant-empty .ant-empty-description{color:#8c8c8c}.position-records.theme-dark[data-v-6ba7d922] .ant-empty .ant-empty-description{color:hsla(0,0%,100%,.35)}.position-records .profit[data-v-6ba7d922]{color:#0ecb81;font-weight:700;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:linear-gradient(135deg,rgba(14,203,129,.12),rgba(14,203,129,.06));border-radius:6px}.position-records .profit[data-v-6ba7d922]:before{content:"▲";font-size:8px}.position-records .loss[data-v-6ba7d922]{color:#f6465d;font-weight:700;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:linear-gradient(135deg,rgba(246,70,93,.12),rgba(246,70,93,.06));border-radius:6px}.position-records .loss[data-v-6ba7d922]:before{content:"▼";font-size:8px}@media (max-width:768px){.position-records[data-v-6ba7d922]{min-height:200px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922]::-webkit-scrollbar{height:4px;width:4px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-track{background:transparent;border-radius:2px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records .empty-state[data-v-6ba7d922]{min-height:150px;padding:20px 0}.position-records[data-v-6ba7d922] .ant-table{font-size:12px;min-width:700px}.position-records[data-v-6ba7d922] .ant-table-body,.position-records[data-v-6ba7d922] .ant-table-container,.position-records[data-v-6ba7d922] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar{height:4px;width:4px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:2px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td,.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{padding:8px 10px;font-size:11px;white-space:nowrap}.position-records[data-v-6ba7d922] .ant-empty{margin:20px 0}}@media (max-width:480px){.position-records[data-v-6ba7d922] .ant-table{font-size:11px;min-width:600px}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td,.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{padding:6px 8px;font-size:10px}.position-records .loss[data-v-6ba7d922],.position-records .profit[data-v-6ba7d922]{font-size:11px}}.theme-dark .position-records .ant-table-tbody>tr>td,.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,body.dark .position-records .ant-table-tbody>tr>td,body.realdark .position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records .ant-table-thead>tr>th,.theme-dark .position-records[data-v] .ant-table-thead>tr>th,body.dark .position-records .ant-table-thead>tr>th,body.realdark .position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600!important}.theme-dark .position-records .ant-table,.theme-dark .position-records[data-v] .ant-table,body.dark .position-records .ant-table,body.realdark .position-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .position-records .ant-table-tbody>tr>td *,.theme-dark .position-records[data-v] .ant-table-tbody>tr>td *,body.dark .position-records .ant-table-tbody>tr>td *,body.realdark .position-records .ant-table-tbody>tr>td *{color:#d1d4dc!important}.theme-dark .position-records .ant-table-tbody>tr:hover>td,.theme-dark .position-records[data-v] .ant-table-tbody>tr:hover>td,body.dark .position-records .ant-table-tbody>tr:hover>td,body.realdark .position-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .position-records .ant-table-thead>tr>th .ant-table-column-title,.theme-dark .position-records[data-v] .ant-table-thead>tr>th .ant-table-column-title,body.dark .position-records .ant-table-thead>tr>th .ant-table-column-title,body.realdark .position-records .ant-table-thead>tr>th .ant-table-column-title{color:#d1d4dc!important}.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,.theme-dark [class*=position-records][data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-thead>tr>th,.theme-dark [class*=position-records][data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,.theme-dark [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table,.theme-dark [data-v-6c1eb557].position-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr:hover>td,.theme-dark [data-v-6c1eb557].position-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.realdark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}body.dark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.dark [data-v-6c1eb557] .ant-table-thead>tr>th,body.dark [data-v-6c1eb557] .position-records .ant-table-thead>tr>th,body.dark [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.realdark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557] .position-records .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,body.dark .position-records[data-v] .ant-table-tbody>tr>td,body.realdark .position-records[data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-thead>tr>th,body.dark .position-records[data-v] .ant-table-thead>tr>th,body.realdark .position-records[data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description,body.dark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description,body.realdark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description{color:#868993!important}.theme-dark .position-records[data-v-6c1eb557] .profit,body.dark .position-records[data-v-6c1eb557] .profit,body.realdark .position-records[data-v-6c1eb557] .profit{color:#52c41a!important}.theme-dark .position-records[data-v-6c1eb557] .loss,body.dark .position-records[data-v-6c1eb557] .loss,body.realdark .position-records[data-v-6c1eb557] .loss{color:#ff4d4f!important}.theme-dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.realdark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,.theme-dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.realdark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper,body.dark .position-records[data-v-6c1eb557] .ant-table-body,body.dark .position-records[data-v-6c1eb557] .ant-table-container,body.dark .position-records[data-v-6c1eb557] .ant-table-content,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper,body.realdark .position-records[data-v-6c1eb557] .ant-table-body,body.realdark .position-records[data-v-6c1eb557] .ant-table-container,body.realdark .position-records[data-v-6c1eb557] .ant-table-content,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .position-records[data-v] .ant-table-body,.theme-dark .position-records[data-v] .ant-table-container,.theme-dark .position-records[data-v] .ant-table-content,.theme-dark .position-records[data-v] .ant-table-wrapper,body.dark .position-records[data-v] .ant-table-body,body.dark .position-records[data-v] .ant-table-container,body.dark .position-records[data-v] .ant-table-content,body.dark .position-records[data-v] .ant-table-wrapper,body.realdark .position-records[data-v] .ant-table-body,body.realdark .position-records[data-v] .ant-table-container,body.realdark .position-records[data-v] .ant-table-content,body.realdark .position-records[data-v] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.strategy-type-selector[data-v-8ec7ab14]{padding:8px 0}.selector-header[data-v-8ec7ab14]{text-align:center;margin-bottom:24px}.selector-header h3[data-v-8ec7ab14]{margin:0 0 4px;font-size:18px;font-weight:600}.selector-header .selector-hint[data-v-8ec7ab14]{color:#999;font-size:13px;margin:0}.mode-cards[data-v-8ec7ab14]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px}@media (max-width:768px){.mode-cards[data-v-8ec7ab14]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.mode-card[data-v-8ec7ab14]{-webkit-box-flex:1;-ms-flex:1;flex:1;border:2px solid #f0f0f0;border-radius:12px;padding:24px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;position:relative;overflow:hidden}.mode-card[data-v-8ec7ab14]:hover{border-color:#1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.12);box-shadow:0 4px 16px rgba(24,144,255,.12);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.mode-card.selected[data-v-8ec7ab14]{border-color:#1890ff;background:rgba(24,144,255,.02)}.mode-card.selected[data-v-8ec7ab14]:after{content:"✓";position:absolute;top:8px;right:12px;color:#1890ff;font-size:18px;font-weight:700}.card-icon[data-v-8ec7ab14]{width:56px;height:56px;border-radius:14px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:26px;margin-bottom:16px}.card-icon.signal-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}.card-icon.script-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,#f6ffed,#d9f7be);color:#52c41a}.card-body[data-v-8ec7ab14]{-webkit-box-flex:1;-ms-flex:1;flex:1}.card-body .card-badge-row[data-v-8ec7ab14]{margin-bottom:10px}.card-body .card-badge[data-v-8ec7ab14]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px;border-radius:999px;background:rgba(24,144,255,.08);color:#1890ff;font-size:12px;font-weight:600;line-height:1.4}.card-body .card-badge.card-badge--script[data-v-8ec7ab14]{background:rgba(82,196,26,.12);color:#389e0d}.card-body h4[data-v-8ec7ab14]{font-size:16px;font-weight:600;margin:0 0 8px}.card-body .card-desc[data-v-8ec7ab14]{color:#666;font-size:13px;line-height:1.5;margin-bottom:12px}.card-features[data-v-8ec7ab14]{list-style:none;padding:0;margin:0 0 16px;text-align:left}.card-features li[data-v-8ec7ab14]{font-size:13px;color:#555;padding:3px 0}.card-features li .anticon[data-v-8ec7ab14]{color:#52c41a;margin-right:6px;font-size:12px}.card-btn[data-v-8ec7ab14]{width:100%}.template-quick-start[data-v-8ec7ab14]{margin-top:8px}.template-quick-start .divider-text[data-v-8ec7ab14]{color:#999;font-size:13px}.template-tags[data-v-8ec7ab14]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px}.template-tag[data-v-8ec7ab14]{cursor:pointer;padding:4px 12px;font-size:13px;border-radius:16px;-webkit-transition:all .2s;transition:all .2s}.template-tag .tpl-icon[data-v-8ec7ab14]{margin-right:4px}.template-tag[data-v-8ec7ab14]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}.theme-dark .selector-header h3[data-v-8ec7ab14]{color:#e0e6ed}.theme-dark .selector-header .selector-hint[data-v-8ec7ab14]{color:hsla(0,0%,100%,.4)}.theme-dark .mode-card[data-v-8ec7ab14]{border-color:hsla(0,0%,100%,.08);background:#1c1c1c}.theme-dark .mode-card[data-v-8ec7ab14]:hover{border-color:#177ddc;-webkit-box-shadow:0 4px 16px rgba(23,125,220,.2);box-shadow:0 4px 16px rgba(23,125,220,.2)}.theme-dark .mode-card.selected[data-v-8ec7ab14]{border-color:#177ddc;background:rgba(23,125,220,.06)}.theme-dark .mode-card.selected[data-v-8ec7ab14]:after{color:#40a9ff}.theme-dark .card-icon.signal-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}.theme-dark .card-icon.script-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,rgba(82,196,26,.15),rgba(82,196,26,.08));color:#73d13d}.theme-dark .card-body h4[data-v-8ec7ab14]{color:#e0e6ed}.theme-dark .card-body .card-desc[data-v-8ec7ab14]{color:hsla(0,0%,100%,.45)}.theme-dark .card-body .card-badge[data-v-8ec7ab14]{background:rgba(64,169,255,.12);color:#69c0ff}.theme-dark .card-body .card-badge.card-badge--script[data-v-8ec7ab14]{background:rgba(115,209,61,.16);color:#95de64}.theme-dark .card-features li[data-v-8ec7ab14]{color:hsla(0,0%,100%,.6)}.theme-dark .card-features li .anticon[data-v-8ec7ab14]{color:#73d13d}.theme-dark .card-btn[data-v-8ec7ab14]{border-color:rgba(24,144,255,.4);color:#40a9ff}.theme-dark .card-btn[data-v-8ec7ab14]:hover{border-color:#1890ff;color:#1890ff}.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider-inner-text{color:hsla(0,0%,100%,.35)}.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider:after,.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider:before{border-top-color:hsla(0,0%,100%,.08)}.theme-dark .divider-text[data-v-8ec7ab14]{color:hsla(0,0%,100%,.35)}.theme-dark .template-tag[data-v-8ec7ab14]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.65)}.theme-dark .template-tag[data-v-8ec7ab14]:hover{color:#40a9ff;border-color:#177ddc;background:rgba(23,125,220,.1)}.strategy-editor[data-v-35a0a386]{width:100%}.editor-layout[data-v-35a0a386]{min-height:450px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.code-col[data-v-35a0a386],.side-col[data-v-35a0a386]{-ms-flex-direction:column;flex-direction:column}.code-col[data-v-35a0a386],.code-section[data-v-35a0a386],.side-col[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.code-section[data-v-35a0a386]{border:1px solid #e8e8e8;border-radius:8px;overflow:hidden;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column}.section-header[data-v-35a0a386]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:8px 12px;background:#fafafa;border-bottom:1px solid #e8e8e8}.section-header[data-v-35a0a386],.section-title-wrap[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-title-wrap[data-v-35a0a386]{gap:8px;min-width:0}.section-title[data-v-35a0a386]{font-weight:600;font-size:14px}.section-title .anticon[data-v-35a0a386]{margin-right:6px}.current-template-tag[data-v-35a0a386]{margin-right:0}.verify-btn[data-v-35a0a386]{color:#52c41a;font-weight:600}.code-editor-container[data-v-35a0a386]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:420px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-editor-container[data-v-35a0a386] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;background:#fff}.code-editor-container[data-v-35a0a386] .CodeMirror-scroll{min-height:100%;overflow-x:auto!important;overflow-y:auto!important}.code-editor-container[data-v-35a0a386] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5)}.code-editor-container[data-v-35a0a386] .CodeMirror-linenumber{padding:0 8px 0 0;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-35a0a386] .CodeMirror-lines{padding:12px 0}.code-editor-container[data-v-35a0a386] .CodeMirror pre.CodeMirror-line,.code-editor-container[data-v-35a0a386] .CodeMirror pre.CodeMirror-line-like{padding:0 12px 0 12px}.code-editor-container[data-v-35a0a386] .CodeMirror-cursor{border-left:2px solid #1890ff}.side-tabs[data-v-35a0a386]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden}.side-tabs[data-v-35a0a386] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;padding:0 12px;background:#fafafa;border-bottom:1px solid #f0f0f0}.side-tabs[data-v-35a0a386] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:280px;overflow-x:hidden;overflow-y:auto;padding:12px}.ai-actions[data-v-35a0a386]{margin-top:12px}.params-panel[data-v-35a0a386]{min-height:120px}.panel-intro[data-v-35a0a386]{margin-bottom:12px;padding:12px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.panel-intro__title[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:14px;font-weight:600;color:#262626}.panel-intro__desc[data-v-35a0a386]{margin-top:4px;font-size:12px;line-height:1.6;color:#8c8c8c}.template-list[data-v-35a0a386]{padding:4px 0}.template-item[data-v-35a0a386]{padding:12px;border:1px solid #f0f0f0;border-radius:8px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.template-item.active[data-v-35a0a386],.template-item[data-v-35a0a386]:hover{border-color:#1890ff;background:#fafafa}.template-item .tpl-header[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:4px}.template-item .tpl-icon[data-v-35a0a386]{font-size:16px;margin-right:8px}.template-item .tpl-name[data-v-35a0a386]{font-weight:600;font-size:14px}.template-item .tpl-desc[data-v-35a0a386]{font-size:12px;color:#888;margin:0 0 4px}.template-item .tpl-use-btn[data-v-35a0a386]{padding:0;font-size:12px}.params-tip[data-v-35a0a386]{margin-bottom:12px}.param-list[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.param-item[data-v-35a0a386]{padding:12px;border:1px solid #f0f0f0;border-radius:8px;background:#fff}.param-item__label-row[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin-bottom:4px}.param-item__label[data-v-35a0a386]{font-size:13px;font-weight:600;color:#262626}.param-item__type[data-v-35a0a386]{font-size:11px;color:#8c8c8c}.param-item__desc[data-v-35a0a386]{margin-bottom:8px;font-size:12px;line-height:1.5;color:#8c8c8c}.param-item__switch[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.params-actions[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;margin-top:16px}.ai-suggestions[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:10px}.prompt-tag[data-v-35a0a386]{cursor:pointer}.ai-status[data-v-35a0a386]{margin-top:8px;color:#1890ff;font-size:13px;text-align:center}.params-empty-guide[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:200px}.theme-dark .code-section[data-v-35a0a386]{border-color:hsla(0,0%,100%,.1)}.theme-dark .section-header[data-v-35a0a386]{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}.theme-dark .section-title[data-v-35a0a386]{color:#e0e6ed}.theme-dark .side-tabs[data-v-35a0a386]{border-color:hsla(0,0%,100%,.1)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-bar{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.08)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab{color:hsla(0,0%,100%,.55)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab:hover{color:hsla(0,0%,100%,.85)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}.theme-dark .panel-intro[data-v-35a0a386]{background:#1c1c1c;border-color:hsla(0,0%,100%,.08)}.theme-dark .panel-intro__title[data-v-35a0a386],.theme-dark .param-item__label[data-v-35a0a386]{color:#e0e6ed}.theme-dark .panel-intro__desc[data-v-35a0a386],.theme-dark .param-item__desc[data-v-35a0a386],.theme-dark .param-item__type[data-v-35a0a386]{color:hsla(0,0%,100%,.45)}.theme-dark .param-item[data-v-35a0a386],.theme-dark .template-item[data-v-35a0a386]{border-color:hsla(0,0%,100%,.08);background:#1c1c1c}.theme-dark .template-item.active[data-v-35a0a386],.theme-dark .template-item[data-v-35a0a386]:hover{border-color:#177ddc;background:rgba(23,125,220,.06)}.theme-dark .tpl-name[data-v-35a0a386]{color:#e0e6ed}.theme-dark .tpl-desc[data-v-35a0a386]{color:hsla(0,0%,100%,.4)}.theme-dark .prompt-tag[data-v-35a0a386]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.7)}.theme-dark[data-v-35a0a386] .ant-input,.theme-dark[data-v-35a0a386] .ant-input-number,.theme-dark[data-v-35a0a386] .ant-input-number-input,.theme-dark[data-v-35a0a386] .ant-select-selection,.theme-dark[data-v-35a0a386] .ant-select-selection--single,.theme-dark[data-v-35a0a386] textarea.ant-input{background:#141414!important;border-color:hsla(0,0%,100%,.1)!important;color:#d1d4dc!important}.theme-dark[data-v-35a0a386] .ant-select-selection-placeholder,.theme-dark[data-v-35a0a386] .ant-select-selection-selected-value{color:#d1d4dc!important}.theme-dark .ai-status[data-v-35a0a386]{color:#40a9ff}.theme-dark[data-v-35a0a386] .ant-empty-description{color:hsla(0,0%,100%,.45)}.theme-dark[data-v-35a0a386] .ant-alert-info{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}.theme-dark[data-v-35a0a386] .ant-alert-info .ant-alert-message{color:hsla(0,0%,100%,.65)}.theme-dark .verify-btn[data-v-35a0a386]{color:#52c41a}.theme-dark .ai-panel[data-v-35a0a386]{color:hsla(0,0%,100%,.78)}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror{background:#141414;color:#d1d4dc}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror-gutters{border-right-color:hsla(0,0%,100%,.08);background:-webkit-gradient(linear,left top,right top,from(#1a1a1a),to(#1c1c1c));background:linear-gradient(90deg,#1a1a1a 0,#1c1c1c)}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror-linenumber{color:hsla(0,0%,100%,.32)}.performance-analysis[data-v-01ff5f5a]{padding:4px 0}.strategy-tab-empty[data-v-01ff5f5a]{padding:48px 16px;margin:0 auto;max-width:360px}.metrics-grid[data-v-01ff5f5a]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}@media (max-width:768px){.metrics-grid[data-v-01ff5f5a]{grid-template-columns:repeat(2,1fr)}}.metric-card[data-v-01ff5f5a]{background:#fafafa;border-radius:8px;padding:12px 16px;text-align:center}.metric-card.positive .metric-value[data-v-01ff5f5a]{color:#52c41a}.metric-card.negative .metric-value[data-v-01ff5f5a]{color:#ff4d4f}.metric-card .metric-label[data-v-01ff5f5a]{font-size:12px;color:#999;margin-bottom:4px}.metric-card .metric-value[data-v-01ff5f5a]{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.chart-section[data-v-01ff5f5a]{margin-bottom:20px}.chart-section .chart-title[data-v-01ff5f5a]{font-size:14px;font-weight:600;margin-bottom:8px;padding-left:4px}.chart-container[data-v-01ff5f5a]{width:100%;height:300px;border-radius:8px;overflow:hidden}.theme-dark .metrics-grid .metric-card[data-v-01ff5f5a]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06)}.theme-dark .metrics-grid .metric-card .metric-label[data-v-01ff5f5a]{color:hsla(0,0%,100%,.4)}.theme-dark .metrics-grid .metric-card .metric-value[data-v-01ff5f5a]{color:#e0e6ed}.theme-dark .metrics-grid .metric-card.positive .metric-value[data-v-01ff5f5a]{color:#52c41a}.theme-dark .metrics-grid .metric-card.negative .metric-value[data-v-01ff5f5a]{color:#ff4d4f}.theme-dark .chart-section .chart-title[data-v-01ff5f5a]{color:#e0e6ed}.theme-dark .chart-container[data-v-01ff5f5a]{background:#141414;border:1px solid hsla(0,0%,100%,.06)}.theme-dark .strategy-tab-empty[data-v-01ff5f5a] .ant-empty-description,.theme-dark[data-v-01ff5f5a] .ant-empty-description{color:hsla(0,0%,100%,.35)}.strategy-logs[data-v-73589ce4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.logs-toolbar[data-v-73589ce4]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:8px 0;margin-bottom:8px}.logs-toolbar .toolbar-right[data-v-73589ce4],.logs-toolbar[data-v-73589ce4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.logs-toolbar .toolbar-right[data-v-73589ce4]{gap:6px}.logs-toolbar .toolbar-right .auto-refresh-label[data-v-73589ce4]{font-size:12px;color:#999}.logs-container[data-v-73589ce4]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:300px;max-height:500px;overflow-y:auto;border:1px solid #f0f0f0;border-radius:8px;padding:8px;font-family:Fira Code,Consolas,monospace;font-size:12px;line-height:1.7;background:#fafafa}.logs-empty[data-v-73589ce4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:200px;color:#ccc}.logs-empty p[data-v-73589ce4]{margin-top:8px;font-family:-apple-system,BlinkMacSystemFont,sans-serif}.log-entry[data-v-73589ce4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;padding:2px 4px;border-radius:3px}.log-entry[data-v-73589ce4]:hover{background:rgba(0,0,0,.02)}.log-entry.level-error[data-v-73589ce4]{background:rgba(255,77,79,.04)}.log-entry.level-trade[data-v-73589ce4]{background:rgba(82,196,26,.04)}.log-time[data-v-73589ce4]{color:#999;white-space:nowrap;font-size:11px;min-width:65px}.log-level[data-v-73589ce4]{-ms-flex-negative:0;flex-shrink:0;font-size:10px}.log-message[data-v-73589ce4]{-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-all}.theme-dark .logs-toolbar .toolbar-right .auto-refresh-label[data-v-73589ce4]{color:hsla(0,0%,100%,.4)}.theme-dark .logs-toolbar[data-v-73589ce4] .ant-radio-group .ant-radio-button-wrapper{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.55)}.theme-dark .logs-toolbar[data-v-73589ce4] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}.theme-dark .logs-toolbar[data-v-73589ce4] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark .logs-container[data-v-73589ce4]{background:#141414;border-color:hsla(0,0%,100%,.08)}.theme-dark .logs-empty[data-v-73589ce4]{color:hsla(0,0%,100%,.25)}.theme-dark .logs-empty .anticon[data-v-73589ce4]{color:hsla(0,0%,100%,.15)!important}.theme-dark .logs-empty p[data-v-73589ce4]{color:hsla(0,0%,100%,.3)}.theme-dark .log-entry[data-v-73589ce4]:hover{background:hsla(0,0%,100%,.03)}.theme-dark .log-entry.level-error[data-v-73589ce4]{background:rgba(255,77,79,.06)}.theme-dark .log-entry.level-trade[data-v-73589ce4]{background:rgba(82,196,26,.06)}.theme-dark .log-time[data-v-73589ce4]{color:hsla(0,0%,100%,.3)}.theme-dark .log-message[data-v-73589ce4]{color:hsla(0,0%,100%,.75)}.dashboard-pro[data-v-80b7f8d0]{min-height:100vh;padding:20px;background:#f8fafc;-webkit-transition:background .3s;transition:background .3s}.dashboard-pro.theme-dark[data-v-80b7f8d0]{background:#141414}.dashboard-pro.theme-dark .kpi-card[data-v-80b7f8d0]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .kpi-card .kpi-label[data-v-80b7f8d0]{color:#888}.dashboard-pro.theme-dark .kpi-card .kpi-value .amount[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .kpi-card .kpi-sub[data-v-80b7f8d0]{color:#888}.dashboard-pro.theme-dark .chart-panel[data-v-80b7f8d0],.dashboard-pro.theme-dark .table-panel[data-v-80b7f8d0]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header[data-v-80b7f8d0],.dashboard-pro.theme-dark .table-panel .panel-header[data-v-80b7f8d0]{border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header .panel-title[data-v-80b7f8d0],.dashboard-pro.theme-dark .table-panel .panel-header .panel-title[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .setup-guide-card[data-v-80b7f8d0]{background:linear-gradient(135deg,rgba(23,125,220,.14),rgba(139,92,246,.12));border-color:rgba(23,125,220,.26)}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-title[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-desc[data-v-80b7f8d0]{color:hsla(0,0%,100%,.72)}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-path[data-v-80b7f8d0]{color:hsla(0,0%,100%,.48)}.dashboard-pro.theme-dark .ranking-card[data-v-80b7f8d0]{background:hsla(0,0%,100%,.03);border-color:#2a2a2a}.dashboard-pro.theme-dark .ranking-card .rank-name[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .ranking-card .rank-stats label[data-v-80b7f8d0]{color:#888}.dashboard-pro.theme-dark .calendar-nav .current-month[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .calendar-nav .ant-btn-link[data-v-80b7f8d0],.dashboard-pro.theme-dark .profit-calendar .calendar-empty[data-v-80b7f8d0]{color:#888}.dashboard-pro.theme-dark .profit-calendar .month-summary[data-v-80b7f8d0]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-weekdays .weekday[data-v-80b7f8d0],.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-label[data-v-80b7f8d0]{color:#888}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell[data-v-80b7f8d0]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-80b7f8d0]{background:hsla(0,0%,100%,.02)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.profit[data-v-80b7f8d0]{background:linear-gradient(135deg,rgba(34,197,94,.15),rgba(34,197,94,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.loss[data-v-80b7f8d0]{background:linear-gradient(135deg,rgba(239,68,68,.15),rgba(239,68,68,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.zero[data-v-80b7f8d0]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table{background:transparent;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table-thead>tr>th{background:#141414;color:#888;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table-tbody>tr>td{border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table-tbody>tr:hover>td{background:#252525}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table-placeholder{background:transparent}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table-placeholder .ant-empty-description{color:#888}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-pagination .ant-pagination-item a{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:#3b82f6;border-color:#3b82f6}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro .kpi-grid[data-v-80b7f8d0]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.dashboard-pro .setup-guide-card[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;margin-bottom:20px;padding:18px 20px;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08));border:1px solid rgba(59,130,246,.16);border-radius:16px}.dashboard-pro .setup-guide-card .setup-guide-copy[data-v-80b7f8d0]{min-width:0}.dashboard-pro .setup-guide-card .setup-guide-title[data-v-80b7f8d0]{font-size:16px;font-weight:700;color:#1e293b}.dashboard-pro .setup-guide-card .setup-guide-desc[data-v-80b7f8d0]{margin-top:4px;color:#64748b;line-height:1.7}.dashboard-pro .setup-guide-card .setup-guide-path[data-v-80b7f8d0]{margin-top:6px;font-size:12px;color:#64748b}.dashboard-pro .setup-guide-card .setup-guide-actions[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .kpi-card[data-v-80b7f8d0]{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:20px;overflow:hidden;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.dashboard-pro .kpi-card[data-v-80b7f8d0]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 10px 40px rgba(0,0,0,.1);box-shadow:0 10px 40px rgba(0,0,0,.1)}.dashboard-pro .kpi-card.clickable[data-v-80b7f8d0]{cursor:pointer}.dashboard-pro .kpi-card.clickable .card-arrow[data-v-80b7f8d0]{position:absolute;right:16px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:.4;-webkit-transition:all .3s;transition:all .3s}.dashboard-pro .kpi-card.clickable:hover .card-arrow[data-v-80b7f8d0]{opacity:1;right:12px}.dashboard-pro .kpi-card .kpi-glow[data-v-80b7f8d0]{position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle,rgba(59,130,246,.15) 0,transparent 70%);pointer-events:none}.dashboard-pro .kpi-card .kpi-content[data-v-80b7f8d0]{position:relative;z-index:1}.dashboard-pro .kpi-card .kpi-header[data-v-80b7f8d0]{gap:8px;margin-bottom:12px}.dashboard-pro .kpi-card .kpi-header[data-v-80b7f8d0],.dashboard-pro .kpi-card .kpi-icon[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .kpi-card .kpi-icon[data-v-80b7f8d0]{width:32px;height:32px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;background:rgba(59,130,246,.1);color:#3b82f6;font-size:16px}.dashboard-pro .kpi-card .kpi-label[data-v-80b7f8d0]{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .kpi-card .kpi-value[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:2px}.dashboard-pro .kpi-card .kpi-value .currency[data-v-80b7f8d0]{font-size:18px;font-weight:500;color:#64748b}.dashboard-pro .kpi-card .kpi-value .amount[data-v-80b7f8d0]{font-size:28px;font-weight:700;color:#1e293b;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}.dashboard-pro .kpi-card .kpi-value .unit[data-v-80b7f8d0]{font-size:14px;font-weight:500;color:#64748b;margin-left:4px}.dashboard-pro .kpi-card .kpi-sub[data-v-80b7f8d0]{margin-top:8px;font-size:12px;color:#64748b}.dashboard-pro .kpi-card .kpi-sub .label[data-v-80b7f8d0]{margin:0 2px}.dashboard-pro .kpi-card .kpi-sub .divider[data-v-80b7f8d0]{margin:0 6px;opacity:.5}.dashboard-pro .kpi-card .kpi-sub .highlight[data-v-80b7f8d0]{font-weight:600;color:#3b82f6}.dashboard-pro .kpi-card.kpi-primary[data-v-80b7f8d0]{background:linear-gradient(135deg,#1e40af,#3b82f6 50%,#60a5fa);border:none}.dashboard-pro .kpi-card.kpi-primary .kpi-icon[data-v-80b7f8d0]{background:hsla(0,0%,100%,.2);color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-label[data-v-80b7f8d0]{color:hsla(0,0%,100%,.8)}.dashboard-pro .kpi-card.kpi-primary .kpi-value .amount[data-v-80b7f8d0],.dashboard-pro .kpi-card.kpi-primary .kpi-value .currency[data-v-80b7f8d0],.dashboard-pro .kpi-card.kpi-primary .kpi-value .unit[data-v-80b7f8d0]{color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-sub[data-v-80b7f8d0]{color:hsla(0,0%,100%,.7)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-80b7f8d0]{position:absolute;right:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:60px;height:60px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg[data-v-80b7f8d0]{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-bg[data-v-80b7f8d0]{fill:none;stroke:rgba(16,185,129,.15);stroke-width:3}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-progress[data-v-80b7f8d0]{fill:none;stroke:#10b981;stroke-width:3;stroke-linecap:round;-webkit-transition:stroke-dasharray .5s ease;transition:stroke-dasharray .5s ease}.dashboard-pro .kpi-card.kpi-win-rate .kpi-icon[data-v-80b7f8d0]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .kpi-card.kpi-profit-factor .kpi-icon[data-v-80b7f8d0]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .kpi-card.kpi-drawdown .kpi-icon[data-v-80b7f8d0]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .kpi-card.kpi-drawdown .kpi-value .amount[data-v-80b7f8d0]{color:#ef4444}.dashboard-pro .kpi-card.kpi-trades .kpi-icon[data-v-80b7f8d0]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .kpi-card.kpi-strategies .kpi-icon[data-v-80b7f8d0]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .chart-row[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .chart-row[data-v-80b7f8d0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .chart-panel[data-v-80b7f8d0]{background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .chart-panel.chart-main[data-v-80b7f8d0]{-webkit-box-flex:2;-ms-flex:2;flex:2}.dashboard-pro .chart-panel.chart-side[data-v-80b7f8d0]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:300px}.dashboard-pro .chart-panel.chart-half[data-v-80b7f8d0]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .chart-panel .panel-header[data-v-80b7f8d0]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .chart-panel .panel-header[data-v-80b7f8d0],.dashboard-pro .chart-panel .panel-title[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .chart-panel .panel-title[data-v-80b7f8d0]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .chart-panel .panel-title .anticon[data-v-80b7f8d0]{color:#3b82f6}.dashboard-pro .chart-panel .panel-legend[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b}.dashboard-pro .chart-panel .panel-legend .legend-item[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot[data-v-80b7f8d0]{width:10px;height:10px;border-radius:2px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.bar[data-v-80b7f8d0]{background:-webkit-gradient(linear,left top,left bottom,from(#34d399),to(#10b981));background:linear-gradient(180deg,#34d399,#10b981)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.line[data-v-80b7f8d0]{background:-webkit-gradient(linear,left top,right top,from(#3b82f6),to(#8b5cf6));background:linear-gradient(90deg,#3b82f6,#8b5cf6)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.loss[data-v-80b7f8d0]{background:#ef4444}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.profit[data-v-80b7f8d0]{background:#10b981}.dashboard-pro .chart-panel .panel-legend.calendar-legend[data-v-80b7f8d0]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.dashboard-pro .chart-panel .panel-legend.calendar-legend .legend-gradient[data-v-80b7f8d0]{width:80px;height:10px;border-radius:3px;background:-webkit-gradient(linear,left top,right top,from(#ef4444),color-stop(#fca5a5),color-stop(#f4f4f5),color-stop(#86efac),to(#22c55e));background:linear-gradient(90deg,#ef4444,#fca5a5,#f4f4f5,#86efac,#22c55e)}.dashboard-pro .chart-panel .panel-badge[data-v-80b7f8d0]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .chart-panel .chart-body[data-v-80b7f8d0]{height:320px;padding:16px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-80b7f8d0]{height:220px}.dashboard-pro .chart-panel .chart-body.calendar-chart[data-v-80b7f8d0]{height:280px}.dashboard-pro .chart-panel .calendar-nav[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.dashboard-pro .chart-panel .calendar-nav .current-month[data-v-80b7f8d0]{font-size:14px;font-weight:600;color:#1e293b;min-width:80px;text-align:center}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-80b7f8d0]{padding:0;height:auto;color:#64748b}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-80b7f8d0]:hover:not(:disabled){color:#3b82f6}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-80b7f8d0]:disabled{opacity:.3}.dashboard-pro .chart-panel .profit-calendar[data-v-80b7f8d0]{padding:12px 16px;overflow:hidden}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-80b7f8d0],.dashboard-pro .chart-panel .profit-calendar[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-80b7f8d0]{height:280px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#64748b}.dashboard-pro .chart-panel .profit-calendar .calendar-empty .anticon[data-v-80b7f8d0]{font-size:40px;margin-bottom:10px;opacity:.3}.dashboard-pro .chart-panel .profit-calendar .month-summary[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;margin-bottom:10px;padding:8px 12px;background:rgba(241,245,249,.5);border-radius:8px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-label[data-v-80b7f8d0]{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value[data-v-80b7f8d0]{font-size:15px;font-weight:700;font-family:JetBrains Mono,monospace}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.positive[data-v-80b7f8d0]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.negative[data-v-80b7f8d0]{color:#ef4444}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays[data-v-80b7f8d0]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays .weekday[data-v-80b7f8d0]{text-align:center;font-size:10px;font-weight:600;color:#64748b;padding:4px 0}.dashboard-pro .chart-panel .profit-calendar .calendar-grid[data-v-80b7f8d0]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell[data-v-80b7f8d0]{height:36px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;background:rgba(241,245,249,.5);border:1px solid transparent;-webkit-transition:all .2s ease;transition:all .2s ease;position:relative}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.empty[data-v-80b7f8d0]{background:transparent;border:none}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-80b7f8d0]{background:rgba(241,245,249,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-80b7f8d0]{background:linear-gradient(135deg,rgba(34,197,94,.12),rgba(34,197,94,.2));border-color:rgba(34,197,94,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-80b7f8d0]:hover{background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(34,197,94,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(34,197,94,.2);box-shadow:0 4px 12px rgba(34,197,94,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-80b7f8d0]{background:linear-gradient(135deg,rgba(239,68,68,.12),rgba(239,68,68,.2));border-color:rgba(239,68,68,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-80b7f8d0]:hover{background:linear-gradient(135deg,rgba(239,68,68,.2),rgba(239,68,68,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(239,68,68,.2);box-shadow:0 4px 12px rgba(239,68,68,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.zero[data-v-80b7f8d0]{background:hsla(240,5%,65%,.1);border-color:hsla(240,5%,65%,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-80b7f8d0]{font-size:11px;font-weight:600;color:#1e293b;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit[data-v-80b7f8d0]{font-size:9px;font-weight:600;font-family:JetBrains Mono,monospace;margin-top:1px;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.positive[data-v-80b7f8d0]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.negative[data-v-80b7f8d0]{color:#ef4444}.dashboard-pro .strategy-ranking[data-v-80b7f8d0]{padding:16px}.dashboard-pro .strategy-ranking .empty-state[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:40px;color:#64748b}.dashboard-pro .strategy-ranking .empty-state .anticon[data-v-80b7f8d0]{font-size:40px;margin-bottom:12px;opacity:.3}.dashboard-pro .strategy-ranking .ranking-grid[data-v-80b7f8d0]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.dashboard-pro .strategy-ranking .ranking-card[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:14px 16px;background:rgba(241,245,249,.5);border:1px solid #e2e8f0;border-radius:12px;position:relative;overflow:hidden}.dashboard-pro .strategy-ranking .ranking-card.rank-top[data-v-80b7f8d0]{border-color:transparent;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08))}.dashboard-pro .strategy-ranking .ranking-card .rank-badge[data-v-80b7f8d0]{width:28px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;font-size:12px;font-weight:700;background:#64748b;color:#fff;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-1[data-v-80b7f8d0]{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-2[data-v-80b7f8d0]{background:linear-gradient(135deg,#9ca3af,#6b7280)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-3[data-v-80b7f8d0]{background:linear-gradient(135deg,#cd7f32,#b87333)}.dashboard-pro .strategy-ranking .ranking-card .rank-info[data-v-80b7f8d0]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-name[data-v-80b7f8d0]{font-size:13px;font-weight:600;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat[data-v-80b7f8d0]{font-size:11px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat label[data-v-80b7f8d0]{color:#64748b;margin-right:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar[data-v-80b7f8d0]{position:absolute;bottom:0;left:0;right:0;height:3px;background:rgba(0,0,0,.05)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill[data-v-80b7f8d0]{height:100%;border-radius:0 3px 3px 0;-webkit-transition:width .5s ease;transition:width .5s ease}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.positive[data-v-80b7f8d0]{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.negative[data-v-80b7f8d0]{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.dashboard-pro .table-row[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-top:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .table-row[data-v-80b7f8d0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .table-panel[data-v-80b7f8d0]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .table-panel .panel-header[data-v-80b7f8d0]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .table-panel .panel-header[data-v-80b7f8d0],.dashboard-pro .table-panel .panel-title[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .table-panel .panel-title[data-v-80b7f8d0]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .table-panel .panel-title .anticon[data-v-80b7f8d0]{color:#3b82f6}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-80b7f8d0]{margin-left:8px;font-size:16px;cursor:pointer;color:#10b981;-webkit-transition:all .2s;transition:all .2s}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-80b7f8d0]:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.dashboard-pro .table-panel .panel-title .sound-toggle.sound-off[data-v-80b7f8d0]{color:#64748b}.dashboard-pro .table-panel .panel-badge[data-v-80b7f8d0]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .orders-panel[data-v-80b7f8d0]{margin-bottom:20px}.dashboard-pro .pro-table[data-v-80b7f8d0] .ant-table{font-size:13px}.dashboard-pro .pro-table[data-v-80b7f8d0] .ant-table-thead>tr>th{background:rgba(241,245,249,.8);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#64748b;border-bottom:1px solid #e2e8f0;padding:12px 16px}.dashboard-pro .pro-table[data-v-80b7f8d0] .ant-table-tbody>tr>td{padding:12px 16px;border-bottom:1px solid #e2e8f0}.dashboard-pro .pro-table[data-v-80b7f8d0] .ant-table-tbody>tr:hover>td{background:rgba(59,130,246,.04)}.dashboard-pro .pro-table[data-v-80b7f8d0] .ant-pagination{padding:12px 16px;margin:0}.dashboard-pro .symbol-cell .symbol-name[data-v-80b7f8d0]{font-weight:600;display:block}.dashboard-pro .symbol-cell .symbol-strategy[data-v-80b7f8d0]{font-size:11px;color:#64748b}.dashboard-pro .side-tag[data-v-80b7f8d0]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .side-tag.long[data-v-80b7f8d0]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .side-tag.short[data-v-80b7f8d0]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag[data-v-80b7f8d0]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .type-tag.long[data-v-80b7f8d0]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .type-tag.short[data-v-80b7f8d0]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag.close-long[data-v-80b7f8d0]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .type-tag.close-short[data-v-80b7f8d0]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .symbol-tag[data-v-80b7f8d0]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .exchange-tag[data-v-80b7f8d0],.dashboard-pro .symbol-tag[data-v-80b7f8d0]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .exchange-tag.binance[data-v-80b7f8d0]{background:rgba(240,185,11,.1);color:#f0b90b}.dashboard-pro .exchange-tag.okx[data-v-80b7f8d0]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .exchange-tag.bitget[data-v-80b7f8d0]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .exchange-tag.signal[data-v-80b7f8d0]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .market-type[data-v-80b7f8d0]{font-size:10px;color:#64748b;margin-top:2px}.dashboard-pro .status-tag[data-v-80b7f8d0]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .status-tag.pending[data-v-80b7f8d0]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .status-tag.processing[data-v-80b7f8d0]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .status-tag.completed[data-v-80b7f8d0]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .status-tag.failed[data-v-80b7f8d0]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .status-tag.cancelled[data-v-80b7f8d0]{background:rgba(100,116,139,.1);color:#64748b}.dashboard-pro .error-hint[data-v-80b7f8d0]{font-size:11px;color:#ef4444;margin-top:4px;cursor:pointer}.dashboard-pro .error-hint .anticon[data-v-80b7f8d0]{margin-right:4px}.dashboard-pro .notify-icons[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.dashboard-pro .notify-icons .notify-icon[data-v-80b7f8d0]{color:#64748b;font-size:14px}.dashboard-pro .pnl-cell[data-v-80b7f8d0]{text-align:right}.dashboard-pro .pnl-cell .pnl-percent[data-v-80b7f8d0]{display:block;font-size:11px}.dashboard-pro .time-cell[data-v-80b7f8d0]{font-size:12px;color:#64748b}.dashboard-pro .sub-text[data-v-80b7f8d0]{font-size:11px;color:#64748b}.dashboard-pro .text-muted[data-v-80b7f8d0]{color:#64748b}.dashboard-pro .positive[data-v-80b7f8d0]{color:#10b981}.dashboard-pro .negative[data-v-80b7f8d0]{color:#ef4444}@media (max-width:768px){.dashboard-pro[data-v-80b7f8d0]{padding:12px}.dashboard-pro .setup-guide-card[data-v-80b7f8d0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:16px}.dashboard-pro .setup-guide-card .setup-guide-actions[data-v-80b7f8d0]{width:100%}.dashboard-pro .setup-guide-card .setup-guide-actions .ant-btn[data-v-80b7f8d0]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .kpi-grid[data-v-80b7f8d0]{grid-template-columns:repeat(2,1fr);gap:10px}.dashboard-pro .kpi-card[data-v-80b7f8d0]{padding:14px}.dashboard-pro .kpi-card .kpi-value .amount[data-v-80b7f8d0]{font-size:22px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-80b7f8d0]{width:48px;height:48px;right:8px}.dashboard-pro .chart-panel .chart-body[data-v-80b7f8d0]{height:260px;padding:12px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-80b7f8d0]{height:180px}.dashboard-pro .ranking-grid[data-v-80b7f8d0]{grid-template-columns:1fr}}.top-level-tabs[data-v-533cb131] .ant-tabs-bar{margin-bottom:16px;border-bottom:1px solid #e8e8e8}.top-level-tabs[data-v-533cb131] .ant-tabs-tab{font-size:15px;padding:12px 20px}.theme-dark .top-level-tabs[data-v-533cb131] .ant-tabs-bar{border-bottom-color:#303030}.theme-dark .top-level-tabs[data-v-533cb131] .ant-tabs-tab{color:hsla(0,0%,100%,.65)}.theme-dark .top-level-tabs[data-v-533cb131] .ant-tabs-tab-active{color:#177ddc}.theme-dark .top-level-tabs[data-v-533cb131] .ant-tabs-ink-bar{background:#177ddc}.assistant-guide-bar[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;padding:16px 18px;margin-bottom:16px;border:1px solid rgba(24,144,255,.14);border-radius:16px;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06))}.assistant-guide-bar .assistant-guide-copy[data-v-533cb131]{min-width:0;-webkit-box-flex:1;-ms-flex:1 1 240px;flex:1 1 240px}.assistant-guide-bar .assistant-guide-eyebrow[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 10px;margin-bottom:8px;border-radius:999px;background:rgba(24,144,255,.12);color:#1677ff;font-size:12px;font-weight:600}.assistant-guide-bar .assistant-guide-title[data-v-533cb131]{font-size:16px;font-weight:700;color:#1f2937}.assistant-guide-bar .assistant-guide-desc[data-v-533cb131]{margin-top:4px;color:#475569;line-height:1.6}.assistant-guide-bar .assistant-guide-steps[data-v-533cb131]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;-webkit-box-flex:1;-ms-flex:1 1 520px;flex:1 1 520px}.assistant-guide-bar .assistant-step-card[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;min-height:92px;padding:12px;border-radius:14px;background:hsla(0,0%,100%,.66);border:1px solid rgba(148,163,184,.16);-webkit-box-shadow:0 4px 12px rgba(15,23,42,.04);box-shadow:0 4px 12px rgba(15,23,42,.04)}.assistant-guide-bar .assistant-step-index[data-v-533cb131]{width:28px;height:28px;border-radius:999px;background:linear-gradient(135deg,#1677ff,#6d28d9);color:#fff;font-size:13px;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.assistant-guide-bar .assistant-step-body[data-v-533cb131]{min-width:0}.assistant-guide-bar .assistant-step-title[data-v-533cb131]{font-size:13px;font-weight:700;color:#1f2937}.assistant-guide-bar .assistant-step-desc[data-v-533cb131]{margin-top:4px;font-size:12px;line-height:1.6;color:#64748b}.assistant-guide-bar .assistant-guide-actions[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-ms-flex-negative:0;flex-shrink:0}.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-533cb131]{min-width:36px;width:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-color:rgba(148,163,184,.28);color:#64748b;background:hsla(0,0%,100%,.72)}.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-533cb131]:focus,.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-533cb131]:hover{color:#1677ff;border-color:rgba(24,144,255,.35);background:#fff}.strategy-empty-state[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:10px;padding:28px 16px 32px;text-align:center}.strategy-empty-state .strategy-empty-desc[data-v-533cb131]{max-width:420px;color:#475569;line-height:1.7}.strategy-empty-state .strategy-empty-path[data-v-533cb131]{font-size:12px;color:#64748b}.trading-assistant[data-v-533cb131]{padding:0;height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.trading-assistant .strategy-layout[data-v-533cb131]{height:calc(100vh - 120px);-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}@media (max-width:768px){.trading-assistant[data-v-533cb131]{min-height:auto;margin:-24px}.trading-assistant .assistant-guide-bar[data-v-533cb131]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0 12px 12px;padding:14px}.trading-assistant .assistant-guide-bar .assistant-guide-steps[data-v-533cb131]{grid-template-columns:1fr}.trading-assistant .assistant-guide-bar .assistant-guide-actions[data-v-533cb131]{width:100%}.trading-assistant .assistant-guide-bar .assistant-guide-actions .ant-btn[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-layout[data-v-533cb131]{height:auto;min-height:calc(100vh - 120px)}.trading-assistant .strategy-list-col[data-v-533cb131]{margin-bottom:12px;height:auto;max-height:50vh}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131]{height:auto;max-height:50vh}.trading-assistant .strategy-list-col .strategy-list-card .card-title[data-v-533cb131]{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;padding:12px 16px}.trading-assistant .strategy-list-col .strategy-list-card .card-title span[data-v-533cb131]{font-size:14px;font-weight:600}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn[data-v-533cb131]{font-size:12px;padding:0 10px;height:28px;line-height:28px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-body{max-height:calc(50vh - 60px);overflow-y:auto;padding:8px;-webkit-overflow-scrolling:touch}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-head{padding:0;min-height:48px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131]{padding:12px 8px;margin-bottom:4px;border-radius:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta{width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-action{margin-left:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-533cb131]{width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper[data-v-533cb131]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-bottom:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag[data-v-533cb131],.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag[data-v-533cb131]{font-size:10px;padding:2px 6px;line-height:1.4;margin:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag .anticon[data-v-533cb131]{font-size:10px;margin-right:2px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-533cb131]{font-size:14px;font-weight:600;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:4px;font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .info-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:3px;-ms-flex-negative:0;flex-shrink:0;font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .info-item .anticon{font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-label{font-size:10px;padding:2px 6px;line-height:1.4}.trading-assistant .strategy-detail-col[data-v-533cb131]{height:auto;min-height:calc(50vh - 60px)}.trading-assistant .strategy-detail-col .strategy-detail-panel[data-v-533cb131]{gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131] .ant-card-body{padding:16px 12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131] .ant-card-head{padding:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header[data-v-533cb131]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left[data-v-533cb131]{width:100%}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title[data-v-533cb131]{font-size:18px;font-weight:600;margin-bottom:12px;line-height:1.4;word-break:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-533cb131]{display:grid;grid-template-columns:1fr 1fr;gap:8px;-webkit-box-align:start;-ms-flex-align:start;align-items:start}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-533cb131] .ant-tag{grid-column:-1;justify-self:start;margin:0;font-size:11px;padding:4px 8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:4px;font-size:12px;line-height:1.5;word-break:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item .anticon[data-v-533cb131]{font-size:12px;-ms-flex-negative:0;flex-shrink:0;margin-top:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item>span[data-v-533cb131]{word-break:break-word;line-height:1.5;-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item span[data-v-533cb131]:not(.anticon){display:inline;word-break:break-word;overflow-wrap:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right[data-v-533cb131]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:100px;font-size:13px;padding:0 12px;height:36px;line-height:36px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn .anticon[data-v-533cb131]{margin-right:4px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body{padding:12px 8px;overflow-x:hidden}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-head{padding:0 8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav{padding:0 4px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-tab{font-size:13px;padding:8px 10px;margin:0 2px;white-space:nowrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-content{padding-top:12px;overflow-x:hidden}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-content .ant-tabs-tabpane{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:768px) and (max-width:480px){.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-533cb131]{grid-template-columns:1fr}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-533cb131] .ant-tag{grid-column:1}}@media (max-width:480px){.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131],.trading-assistant .strategy-list-col[data-v-533cb131]{max-height:45vh}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-body{max-height:calc(45vh - 60px)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-533cb131]{grid-template-columns:1fr;gap:6px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item[data-v-533cb131]{font-size:11px;line-height:1.6}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn[data-v-533cb131]{width:100%;-webkit-box-flex:0;-ms-flex:none;flex:none}}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131],.trading-assistant .strategy-list-col[data-v-533cb131]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131]{border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);border:none;overflow:hidden;-webkit-transition:-webkit-box-shadow .3s ease;transition:-webkit-box-shadow .3s ease;transition:box-shadow .3s ease;transition:box-shadow .3s ease,-webkit-box-shadow .3s ease}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-list-col .strategy-list-card .card-title[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.trading-assistant .strategy-list-col .strategy-list-card .card-title span[data-v-533cb131]{font-size:16px;font-weight:700;background:linear-gradient(135deg,#1e3a5f,#2d5a87);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-533cb131]{border-radius:8px;background:linear-gradient(135deg,#1890ff,#40a9ff);border:none;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35);-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-533cb131]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 0 12px;border-bottom:1px solid #f0f0f0;margin-bottom:12px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch .group-mode-label[data-v-533cb131]{font-size:13px;color:#8c8c8c;font-weight:500}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-533cb131] .ant-radio-group .ant-radio-button-wrapper{font-size:12px;padding:0 10px;height:26px;line-height:24px;border-radius:4px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-533cb131] .ant-radio-group .ant-radio-button-wrapper:first-child{border-radius:4px 0 0 4px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-533cb131] .ant-radio-group .ant-radio-button-wrapper:last-child{border-radius:0 4px 4px 0}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-533cb131] .ant-radio-group .ant-radio-button-wrapper .anticon{margin-right:4px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;background:#fff;padding:12px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-head{background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fafbfc));background:linear-gradient(180deg,#fff,#fafbfc);border-bottom:1px solid #f0f0f0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group[data-v-533cb131]{margin-bottom:12px;background:#fff;border-radius:12px;border:1px solid #e8ecf1;overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 12px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header[data-v-533cb131]:hover{background:linear-gradient(135deg,#e8f4fd,#e3f0fc)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .collapse-icon[data-v-533cb131]{font-size:12px;color:#8c8c8c;-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-533cb131]{font-size:16px;color:#1890ff}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-name[data-v-533cb131]{font-weight:600;font-size:14px;color:#1e3a5f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status[data-v-533cb131]{font-size:11px;padding:2px 8px;border-radius:10px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status.running[data-v-533cb131]{background:rgba(14,203,129,.1);color:#0ecb81}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status.stopped[data-v-533cb131]{background:rgba(246,70,93,.1);color:#f6465d}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content[data-v-533cb131]{padding:6px 8px 10px 6px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:10px 12px;margin-bottom:6px;margin-left:4px;border:1px solid #eef2f6;border-left:3px solid #dbe4ee;background:#fbfcfe;border-radius:8px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,.04);box-shadow:0 1px 2px rgba(15,23,42,.04)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-533cb131]:last-child{margin-bottom:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-533cb131]:hover{background:#f0f7ff;border-left-color:#1890ff;border-color:rgba(24,144,255,.22);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.08);box-shadow:0 2px 8px rgba(24,144,255,.08);-webkit-transform:none;transform:none}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-533cb131]{background:linear-gradient(135deg,#e8f4ff,#f0f9ff);border-color:rgba(24,144,255,.35);border-left-color:#1890ff;border-left-width:3px;-webkit-box-shadow:0 2px 12px rgba(24,144,255,.12);box-shadow:0 2px 12px rgba(24,144,255,.12)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-content[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header[data-v-533cb131]{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-actions[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:center;align-self:center;padding-top:0;margin-left:4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-actions[data-v-533cb131] .ant-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;font-size:12px;color:#8c8c8c}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .info-item[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .info-item .anticon[data-v-533cb131]{font-size:12px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:3px 10px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-533cb131]:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-running[data-v-533cb131]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-stopped[data-v-533cb131]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-error[data-v-533cb131]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-item-header[data-v-533cb131]{margin-bottom:2px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-name-wrapper[data-v-533cb131]{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-name[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-item-info[data-v-533cb131]{gap:10px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;cursor:pointer;padding:14px 16px;border-radius:12px;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;margin-bottom:8px;background:#fafbfc;border:1px solid transparent}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-content[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-actions[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:center;align-self:center;margin-left:4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-actions[data-v-533cb131] .ant-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;font-size:12px;color:#8c8c8c}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .info-item[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .info-item .anticon[data-v-533cb131]{font-size:12px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-label[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:3px 10px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-label[data-v-533cb131]:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-running[data-v-533cb131]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-stopped[data-v-533cb131]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-error[data-v-533cb131]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131]:hover{background:linear-gradient(135deg,#f0f7ff,#f5f9ff);border-color:rgba(24,144,255,.2);-webkit-transform:none;transform:none;-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-533cb131]{background:linear-gradient(135deg,#e6f4ff,#f0f9ff);border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}@media (max-width:768px){.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131]{padding:12px 8px;margin:0 4px 4px 4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-533cb131]{border-left-width:2px}}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-533cb131]{font-weight:600;font-size:14px;-ms-flex-negative:0;flex-shrink:0;color:#1e3a5f;-webkit-transition:color .2s ease;transition:color .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:11px;line-height:1.5;padding:2px 8px;border-radius:6px;background:linear-gradient(135deg,rgba(102,126,234,.1),rgba(118,75,162,.1));border:1px solid rgba(102,126,234,.2);color:#667eea;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag .anticon[data-v-533cb131]{font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:10px;line-height:1.5;margin-left:4px;padding:2px 8px;border-radius:6px;background:linear-gradient(135deg,rgba(156,39,176,.1),rgba(103,58,183,.1));border:1px solid rgba(156,39,176,.2)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag .anticon[data-v-533cb131]{font-size:10px;margin-right:3px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped[data-v-533cb131]{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-line-pack:start;align-content:flex-start;row-gap:6px;-webkit-column-gap:6px;-moz-column-gap:6px;column-gap:6px;width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped[data-v-533cb131] .ant-tag{margin-right:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped .status-label[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-533cb131] .status-stopped{color:#f6465d!important;border-color:#f6465d!important}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description{max-width:calc(100% - 20px);overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;gap:12px;margin-top:8px;font-size:12px;color:var(--text-color-secondary,#8c8c8c);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-width:100%;overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-label:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-running{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3);-webkit-box-shadow:0 2px 8px rgba(14,203,129,.2);box-shadow:0 2px 8px rgba(14,203,129,.2)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-running:before{-webkit-animation:statusPulse-533cb131 2s infinite;animation:statusPulse-533cb131 2s infinite;-webkit-box-shadow:0 0 8px #0ecb81;box-shadow:0 0 8px #0ecb81}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-stopped{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-error{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}@-webkit-keyframes statusPulse-533cb131{0%,to{opacity:1}50%{opacity:.5}}@keyframes statusPulse-533cb131{0%,to{opacity:1}50%{opacity:.5}}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .info-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-ms-flex-negative:1;flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .info-item.strategy-name-text{font-weight:500;color:#1e3a5f;max-width:100%;white-space:normal;line-height:1.35}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info/deep/.ant-tag{margin-right:0;font-size:11px;line-height:18px;padding:0 6px}.trading-assistant .strategy-detail-col[data-v-533cb131]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.trading-assistant .strategy-detail-col .strategy-empty-detail[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:320px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:24px 16px}.trading-assistant .strategy-detail-col .strategy-empty-detail-card[data-v-533cb131]{max-width:420px;width:100%;text-align:center;padding:40px 32px 36px;border-radius:16px;background:linear-gradient(165deg,#fff,#f8fafc 55%,#f1f5f9);border:1px solid #e8ecf1;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.trading-assistant .strategy-detail-col .strategy-empty-detail-icon[data-v-533cb131]{width:72px;height:72px;margin:0 auto 20px;border-radius:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(64,169,255,.08));color:#1890ff;font-size:32px}.trading-assistant .strategy-detail-col .strategy-empty-detail-title[data-v-533cb131]{margin:0 0 12px;font-size:18px;font-weight:700;color:#1e3a5f;letter-spacing:.02em}.trading-assistant .strategy-detail-col .strategy-empty-detail-hint[data-v-533cb131]{margin:0 0 24px;font-size:14px;line-height:1.65;color:#64748b}.trading-assistant .strategy-detail-col .strategy-empty-detail-actions[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px;min-height:100%}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#fff,#f8fafc);border:none;border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131] .ant-card-head{background:transparent;border-bottom:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131] .ant-card-body{background:transparent;padding:20px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:24px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .strategy-title[data-v-533cb131]{font-size:20px;font-weight:700;margin:0;background:linear-gradient(135deg,#1e3a5f,#2d5a87);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 14px;border-radius:20px;font-size:13px;font-weight:600;-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge .status-dot[data-v-533cb131]{width:8px;height:8px;border-radius:50%;-webkit-animation:pulse-533cb131 2s infinite;animation:pulse-533cb131 2s infinite}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-running[data-v-533cb131]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-running .status-dot[data-v-533cb131]{background:#0ecb81;-webkit-box-shadow:0 0 12px #0ecb81;box-shadow:0 0 12px #0ecb81}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-stopped[data-v-533cb131]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-stopped .status-dot[data-v-533cb131]{background:#f6465d;-webkit-animation:none;animation:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-error[data-v-533cb131]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border:1px solid rgba(255,77,79,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-error .status-dot[data-v-533cb131]{background:#ff4d4f;-webkit-animation:none;animation:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px;margin-bottom:14px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:10px 14px;background:#fff;border-radius:8px;border:1px solid #f0f0f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card[data-v-533cb131]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon[data-v-533cb131]{width:36px;height:36px;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:16px;-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.investment[data-v-533cb131]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.equity[data-v-533cb131]{background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.pnl[data-v-533cb131]{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-label[data-v-533cb131]{font-size:11px;color:#8c8c8c;margin-bottom:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-value[data-v-533cb131]{font-size:15px;font-weight:700;color:#1e3a5f;line-height:1.2}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-value .pnl-percent[data-v-533cb131]{font-size:12px;font-weight:500;opacity:.8}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card.pnl-card.profit .stat-content .stat-value[data-v-533cb131]{color:#0ecb81}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card.pnl-card.loss .stat-content .stat-value[data-v-533cb131]{color:#f6465d}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 10px;background:#f5f7fa;border-radius:14px;font-size:12px;color:#5a6872;border:1px solid #e8ecf1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-533cb131]{font-size:12px;color:#1890ff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn[data-v-533cb131]{min-width:120px;height:38px;border-radius:8px;font-size:14px;font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn .anticon[data-v-533cb131]{font-size:16px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.start-btn[data-v-533cb131]{background:linear-gradient(135deg,#0ecb81,#26d87d);border:none;-webkit-box-shadow:0 2px 8px rgba(14,203,129,.3);box-shadow:0 2px 8px rgba(14,203,129,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.start-btn[data-v-533cb131]:hover{-webkit-box-shadow:0 4px 12px rgba(14,203,129,.4);box-shadow:0 4px 12px rgba(14,203,129,.4)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.stop-btn[data-v-533cb131]{background:linear-gradient(135deg,#f6465d,#ff6b7a);border:none;-webkit-box-shadow:0 2px 8px rgba(246,70,93,.3);box-shadow:0 2px 8px rgba(246,70,93,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.stop-btn[data-v-533cb131]:hover{-webkit-box-shadow:0 4px 12px rgba(246,70,93,.4);box-shadow:0 4px 12px rgba(246,70,93,.4)}@-webkit-keyframes pulse-533cb131{0%,to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.6;-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes pulse-533cb131{0%,to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.6;-webkit-transform:scale(1.1);transform:scale(1.1)}}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fff;border:none;border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);-webkit-transition:all .3s ease;transition:all .3s ease;min-height:400px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-head{background:-webkit-gradient(linear,left top,left bottom,from(#fafbfc),to(#fff));background:linear-gradient(180deg,#fafbfc,#fff);border-bottom:1px solid #f0f0f0;-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body{padding:16px;background:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body,.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs .ant-tabs-bar{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs .ant-tabs-tabpane .strategy-tab-pane-inner{min-height:304px;padding-top:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs .ant-tabs-tabpane .position-records,.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs .ant-tabs-tabpane .trading-records{width:100%}.trading-assistant.theme-dark[data-v-533cb131]{background:#141414;color:var(--dark-text-color,#fff)}.trading-assistant.theme-dark .creation-mode-toggle[data-v-533cb131]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}.trading-assistant.theme-dark .creation-mode-toggle .mode-hint[data-v-533cb131]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .card-title span[data-v-533cb131]{background:linear-gradient(135deg,#e0e6ed,#c5ccd6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-head{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-head .ant-card-head-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-empty-description{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-list .ant-list-item{border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-list .ant-list-item .ant-list-item-meta-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-list .ant-list-item .ant-list-item-meta-description{color:#868993}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-533cb131]{border-bottom-color:hsla(0,0%,100%,.08)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch .group-mode-label[data-v-533cb131]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-533cb131] .ant-radio-button-wrapper{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.65)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-533cb131] .ant-radio-button-wrapper:hover{color:#69c0ff}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-533cb131] .ant-radio-button-wrapper-checked{background:rgba(24,144,255,.25)!important;border-color:#1890ff!important;color:#fff!important}.trading-assistant.theme-dark .strategy-list-col .strategy-group[data-v-533cb131]{background:rgba(0,0,0,.18);border-color:hsla(0,0%,100%,.08)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header[data-v-533cb131]{background:hsla(0,0%,100%,.04)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header[data-v-533cb131]:hover{background:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header .group-name[data-v-533cb131]{color:hsla(0,0%,100%,.88)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header .collapse-icon[data-v-533cb131]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item[data-v-533cb131]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08);border-left-color:hsla(0,0%,100%,.12)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item[data-v-533cb131]:hover{background:hsla(0,0%,100%,.05);border-color:hsla(0,0%,100%,.12);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item.active[data-v-533cb131]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.28);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info[data-v-533cb131]{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .info-item[data-v-533cb131]{color:hsla(0,0%,100%,.55)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-533cb131]{background:hsla(0,0%,100%,.06);color:hsla(0,0%,100%,.45);border-color:hsla(0,0%,100%,.1)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-running[data-v-533cb131]{background:rgba(14,203,129,.12);color:#52c41a;border-color:rgba(14,203,129,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-stopped[data-v-533cb131]{background:rgba(246,70,93,.12);color:#f6465d;border-color:rgba(246,70,93,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-error[data-v-533cb131]{background:rgba(255,77,79,.12);color:#ff4d4f;border-color:rgba(255,77,79,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-name-wrapper .info-item[data-v-533cb131],.trading-assistant.theme-dark .strategy-list-col .strategy-name-wrapper .strategy-name-text[data-v-533cb131]{color:hsla(0,0%,100%,.88)!important}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-533cb131]{background:hsla(0,0%,100%,.02);border:1px solid hsla(0,0%,100%,.04)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-533cb131]:hover{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);-webkit-transform:none;transform:none}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-533cb131]{background:rgba(24,144,255,.1);border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-name[data-v-533cb131]{color:#e0e6ed}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-info[data-v-533cb131]{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .exchange-tag[data-v-533cb131]{background:rgba(102,126,234,.15);border-color:rgba(102,126,234,.3);color:#8da2f0}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .strategy-type-tag[data-v-533cb131]{background:rgba(177,130,255,.15);border-color:rgba(177,130,255,.3);color:#b182ff}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .strategy-name[data-v-533cb131]{color:hsla(0,0%,100%,.88)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-533cb131]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-533cb131] .ant-card-head{background:transparent;border-bottom:none}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-533cb131] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-title-row .strategy-title[data-v-533cb131]{background:none;color:#e0e6ed;-webkit-text-fill-color:initial}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card[data-v-533cb131]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card[data-v-533cb131]:hover{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.1)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card .stat-content .stat-label[data-v-533cb131]{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card .stat-content .stat-value[data-v-533cb131]{color:#e0e6ed}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-533cb131]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.08);color:#a0a8b3}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-533cb131]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-card-head{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-card-head .ant-card-head-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-tab{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-tab:hover{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-content{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-empty-description{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-card[data-v-533cb131]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.08);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.35);box-shadow:0 8px 32px rgba(0,0,0,.35)}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-icon[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.22),rgba(64,169,255,.1));color:#69c0ff}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-title[data-v-533cb131]{color:hsla(0,0%,100%,.92)}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-hint[data-v-533cb131]{color:hsla(0,0%,100%,.55)}.theme-dark .assistant-guide-bar[data-v-533cb131]{border-color:rgba(23,125,220,.28);background:linear-gradient(135deg,rgba(23,125,220,.14),rgba(114,46,209,.12))}.theme-dark .assistant-guide-bar .assistant-guide-eyebrow[data-v-533cb131]{background:rgba(23,125,220,.2);color:#69c0ff}.theme-dark .assistant-guide-bar .assistant-guide-title[data-v-533cb131]{color:hsla(0,0%,100%,.92)}.theme-dark .assistant-guide-bar .assistant-guide-desc[data-v-533cb131]{color:hsla(0,0%,100%,.72)}.theme-dark .assistant-guide-bar .assistant-step-card[data-v-533cb131]{background:rgba(30,30,30,.6);border-color:hsla(0,0%,100%,.08)}.theme-dark .assistant-guide-bar .assistant-step-title[data-v-533cb131]{color:hsla(0,0%,100%,.9)}.theme-dark .assistant-guide-bar .assistant-step-desc[data-v-533cb131]{color:hsla(0,0%,100%,.58)}.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-533cb131]{background:rgba(30,30,30,.5);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.72)}.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-533cb131]:focus,.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-533cb131]:hover{background:rgba(50,50,50,.7);border-color:rgba(105,192,255,.45);color:#91d5ff}.theme-dark .strategy-empty-state .strategy-empty-desc[data-v-533cb131]{color:hsla(0,0%,100%,.72)}.theme-dark .strategy-empty-state .strategy-empty-path[data-v-533cb131]{color:hsla(0,0%,100%,.48)}.strategy-params-collapse[data-v-533cb131]{background:#fafafa;border-radius:10px;overflow:hidden}.strategy-params-collapse[data-v-533cb131] .ant-collapse-item{border-bottom-color:#f0f0f0}.strategy-params-collapse[data-v-533cb131] .ant-collapse-header{font-weight:500;font-size:13px}.strategy-params-collapse[data-v-533cb131] .ant-collapse-content-box{padding:12px 16px}.strategy-params-collapse[data-v-533cb131] .ant-input-number{width:100%}.ai-filter-box[data-v-533cb131]{margin-top:12px;padding:14px 14px 12px;border:1px solid #e8e8e8;border-radius:10px;background:-webkit-gradient(linear,left top,left bottom,from(#fafcff),to(#fff));background:linear-gradient(180deg,#fafcff,#fff)}.ai-filter-header[data-v-533cb131]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px}.ai-filter-header[data-v-533cb131],.ai-filter-title[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ai-filter-title[data-v-533cb131]{gap:8px;font-weight:600;color:#262626}.ai-filter-title .anticon[data-v-533cb131]{color:#1890ff}.ai-filter-hint[data-v-533cb131]{margin-top:6px;font-size:12px;line-height:1.5;color:#8c8c8c}.symbol-option[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-name[data-v-533cb131]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-name-extra[data-v-533cb131]{font-size:12px;color:#999;margin-left:4px}.creation-mode-toggle[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;margin-bottom:16px;padding:14px 16px;background:rgba(24,144,255,.04);border-radius:8px;border:1px solid rgba(24,144,255,.12)}.creation-mode-toggle .mode-meta[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px}.creation-mode-toggle .mode-title[data-v-533cb131]{font-size:14px;font-weight:600;color:#262626}.creation-mode-toggle .mode-hint[data-v-533cb131]{color:rgba(0,0,0,.45);font-size:12px}@media (max-width:768px){.creation-mode-toggle[data-v-533cb131]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}}.section-block-title[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px;margin-bottom:16px;font-size:14px;font-weight:600;color:#262626}.section-block-desc[data-v-533cb131]{font-size:12px;font-weight:400;color:#8c8c8c}.simple-mode-hero[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding:14px 16px;margin-bottom:16px;border-radius:10px;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06));border:1px solid rgba(24,144,255,.14)}.simple-mode-hero-main[data-v-533cb131]{min-width:0}.simple-mode-kicker[data-v-533cb131]{font-size:12px;font-weight:600;color:#1890ff;margin-bottom:4px}.simple-mode-hero-desc[data-v-533cb131]{font-size:12px;line-height:1.6;color:#595959}.simple-mode-badges[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}.advanced-settings-shell[data-v-533cb131],.selected-indicator-card[data-v-533cb131],.simple-essentials-card[data-v-533cb131]{padding:20px;margin-bottom:18px;border-radius:12px;background:#fafcff;border:1px solid rgba(24,144,255,.12);-webkit-box-shadow:0 8px 24px rgba(15,23,42,.04);box-shadow:0 8px 24px rgba(15,23,42,.04)}.required-label[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.required-star[data-v-533cb131]{color:#f5222d;margin-right:4px}.compact-form-item[data-v-533cb131]{margin-bottom:18px}.compact-grid-row[data-v-533cb131]{margin-bottom:4px}.execution-step-layout[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px}.execution-step-hero[data-v-533cb131]{padding:16px 18px;border-radius:12px;background:linear-gradient(135deg,rgba(82,196,26,.08),rgba(24,144,255,.08));border:1px solid rgba(24,144,255,.14)}.execution-step-hero-desc[data-v-533cb131]{font-size:12px;line-height:1.7;color:#595959}.execution-section-card[data-v-533cb131]{padding:18px 20px;border-radius:12px;background:#fafcff;border:1px solid rgba(24,144,255,.12);-webkit-box-shadow:0 8px 24px rgba(15,23,42,.04);box-shadow:0 8px 24px rgba(15,23,42,.04)}.section-inline-alert[data-v-533cb131]{margin-top:4px}.notify-channel-grid[data-v-533cb131]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px}.execution-warn-text[data-v-533cb131]{color:#ff9800}.execution-mode-cards[data-v-533cb131]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.execution-mode-card[data-v-533cb131]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:14px;min-height:110px;padding:16px;border-radius:12px;border:1px solid rgba(24,144,255,.12);background:#fff;cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease}.execution-mode-card[data-v-533cb131]:hover{border-color:rgba(24,144,255,.35);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.08);box-shadow:0 8px 24px rgba(24,144,255,.08)}.execution-mode-card.active[data-v-533cb131]{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.03));-webkit-box-shadow:0 10px 28px rgba(24,144,255,.12);box-shadow:0 10px 28px rgba(24,144,255,.12)}.execution-mode-card.disabled[data-v-533cb131]{cursor:not-allowed;opacity:.68;background:#fafafa}.execution-mode-card.disabled[data-v-533cb131]:hover{border-color:rgba(24,144,255,.12);-webkit-box-shadow:none;box-shadow:none}.execution-mode-card-icon[data-v-533cb131]{-webkit-box-flex:0;-ms-flex:0 0 42px;flex:0 0 42px;width:42px;height:42px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:12px;font-size:18px}.execution-mode-card-icon.signal[data-v-533cb131]{color:#1890ff;background:rgba(24,144,255,.1)}.execution-mode-card-icon.live[data-v-533cb131]{color:#fa8c16;background:rgba(250,140,22,.12)}.execution-mode-card-body[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.execution-mode-card-title[data-v-533cb131]{font-size:14px;font-weight:600;color:#262626;margin-bottom:6px}.execution-mode-card-desc[data-v-533cb131]{font-size:12px;line-height:1.6;color:#8c8c8c}.execution-mode-card-check[data-v-533cb131]{position:absolute;top:12px;right:12px;color:#1890ff;font-size:18px}.steps-container[data-v-533cb131]{margin-bottom:24px}@media (max-width:768px){.steps-container[data-v-533cb131]{margin-bottom:16px}.steps-container[data-v-533cb131] .ant-steps-item-title{font-size:12px}.steps-container[data-v-533cb131] .ant-steps-item-icon{width:24px;height:24px;line-height:24px;font-size:12px}}.form-container[data-v-533cb131]{min-height:400px;padding:24px 0}.form-container .step-content[data-v-533cb131]{-webkit-animation:fadeIn-533cb131 .3s;animation:fadeIn-533cb131 .3s}.form-container[data-v-533cb131] .ant-form-item{margin-bottom:20px}@media (max-width:768px){.form-container[data-v-533cb131]{min-height:300px;padding:16px 0}.form-container .simple-mode-hero[data-v-533cb131]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.form-container .simple-mode-badges[data-v-533cb131]{width:100%}.form-container .notify-channel-grid[data-v-533cb131]{grid-template-columns:repeat(2,minmax(0,1fr))}.form-container .execution-mode-cards[data-v-533cb131]{grid-template-columns:1fr}.form-container .execution-section-card[data-v-533cb131],.form-container .execution-step-hero[data-v-533cb131]{padding:16px}.form-container[data-v-533cb131] .ant-form-item-label{padding-bottom:4px}.form-container[data-v-533cb131] .ant-form-item-label label{font-size:13px}.form-container[data-v-533cb131] .ant-input,.form-container[data-v-533cb131] .ant-input-number,.form-container[data-v-533cb131] .ant-select{font-size:14px}.form-container[data-v-533cb131] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.form-container[data-v-533cb131] .ant-radio-group .ant-radio-wrapper{font-size:13px}}@media (max-width:480px){.form-container[data-v-533cb131]{min-height:250px;padding:12px 0}.form-container[data-v-533cb131] .ant-form-item-label label{font-size:12px}.form-container[data-v-533cb131] .ant-input,.form-container[data-v-533cb131] .ant-input-number,.form-container[data-v-533cb131] .ant-select{font-size:13px}}.strategy-type-selector[data-v-533cb131]{padding:16px 0}.strategy-type-selector .market-category-selector[data-v-533cb131]{margin-bottom:16px}.strategy-type-selector .market-category-selector .selector-label[data-v-533cb131]{font-weight:600;margin-bottom:8px;color:#262626}.strategy-type-selector .market-category-selector[data-v-533cb131] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}.strategy-type-selector .strategy-type-card[data-v-533cb131]{cursor:pointer;-webkit-transition:all .3s;transition:all .3s;height:100%;min-height:180px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.strategy-type-selector .strategy-type-card[data-v-533cb131]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.strategy-type-selector .strategy-type-card.selected[data-v-533cb131]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}.strategy-type-selector .strategy-type-card .strategy-type-content[data-v-533cb131]{text-align:center;padding:16px}.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-533cb131]{font-size:48px;color:#1890ff;margin-bottom:16px}.strategy-type-selector .strategy-type-card .strategy-type-content h3[data-v-533cb131]{font-size:18px;font-weight:600;margin-bottom:8px;color:#1f1f1f}.strategy-type-selector .strategy-type-card .strategy-type-content p[data-v-533cb131]{font-size:14px;color:#8c8c8c;margin:0;line-height:1.6}.indicator-option[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:12px}.indicator-option .indicator-option-main[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1}.indicator-option .indicator-name[data-v-533cb131]{display:block;color:#262626;font-weight:600}.indicator-option-desc[data-v-533cb131]{display:block;margin-top:2px;color:#8c8c8c;font-size:12px;line-height:1.5}.selected-indicator-header[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin-bottom:8px}.selected-indicator-name[data-v-533cb131]{font-weight:600;color:#262626}.indicator-description[data-v-533cb131]{border-radius:4px;color:var(--text-color,#666);font-size:14px;line-height:1.6}.theme-dark .advanced-settings-shell[data-v-533cb131],.theme-dark .creation-mode-toggle[data-v-533cb131],.theme-dark .selected-indicator-card[data-v-533cb131],.theme-dark .simple-essentials-card[data-v-533cb131]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1)}.theme-dark .indicator-option .indicator-name[data-v-533cb131],.theme-dark .mode-title[data-v-533cb131],.theme-dark .section-block-title[data-v-533cb131],.theme-dark .selected-indicator-name[data-v-533cb131]{color:hsla(0,0%,100%,.9)}.theme-dark .indicator-option-desc[data-v-533cb131],.theme-dark .mode-hint[data-v-533cb131],.theme-dark .section-block-desc[data-v-533cb131]{color:hsla(0,0%,100%,.6)}.theme-dark .simple-mode-hero[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.14),rgba(114,46,209,.12));border-color:rgba(64,169,255,.18)}.theme-dark .execution-step-hero[data-v-533cb131]{background:linear-gradient(135deg,rgba(82,196,26,.14),rgba(24,144,255,.14));border-color:rgba(64,169,255,.18)}.theme-dark .execution-mode-card[data-v-533cb131]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08)}.theme-dark .execution-mode-card[data-v-533cb131]:hover{border-color:rgba(64,169,255,.3);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)}.theme-dark .execution-mode-card.active[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff}.theme-dark .execution-mode-card.disabled[data-v-533cb131]{background:hsla(0,0%,100%,.02)}.theme-dark .execution-mode-card-title[data-v-533cb131]{color:#e0e6ed}.theme-dark .execution-mode-card-desc[data-v-533cb131]{color:hsla(0,0%,100%,.6)}.theme-dark .simple-mode-kicker[data-v-533cb131]{color:#69c0ff}.theme-dark .execution-step-hero-desc[data-v-533cb131],.theme-dark .simple-mode-hero-desc[data-v-533cb131]{color:hsla(0,0%,100%,.72)}.indicator-params-form[data-v-533cb131]{padding:12px;background-color:var(--bg-color-secondary,#f5f7fa);border-radius:6px;border:1px dashed var(--border-color,#e0e0e0)}.indicator-params-form .param-item[data-v-533cb131]{margin-bottom:12px}.indicator-params-form .param-label[data-v-533cb131]{display:block;font-size:13px;color:var(--text-color,#666);margin-bottom:4px;font-weight:500}.form-item-hint[data-v-533cb131]{margin-top:4px;font-size:12px;color:var(--text-color-secondary,#8c8c8c)}.test-result[data-v-533cb131]{margin-top:8px;padding:8px;border-radius:4px;font-size:14px}.test-result.success[data-v-533cb131]{background-color:#f6ffed;border:1px solid #b7eb8f;color:#52c41a}.ip-whitelist-tip[data-v-533cb131]{margin-top:12px;padding:12px;background-color:#e6f7ff;border:1px solid #91d5ff;border-radius:4px;font-size:13px;color:#1890ff;line-height:1.6}.ip-whitelist-tip .anticon[data-v-533cb131]{margin-right:6px;color:#1890ff}.ip-whitelist-tip .ip-list[data-v-533cb131]{margin-top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.ip-whitelist-tip .ip-list .ant-tag[data-v-533cb131]{margin:0;font-family:Courier New,monospace;font-size:12px}.ip-whitelist-tip.error[data-v-533cb131]{background-color:#fff2f0;border:1px solid #ffccc7;color:#ff4d4f}@-webkit-keyframes fadeIn-533cb131{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeIn-533cb131{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}[data-v-533cb131] .danger-item{color:#ff4d4f}[data-v-533cb131] .mobile-modal .ant-modal{top:20px;padding-bottom:0}[data-v-533cb131] .mobile-modal .ant-modal-content{max-height:calc(100vh - 40px);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}[data-v-533cb131] .mobile-modal .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px}[data-v-533cb131] .mobile-modal .ant-modal-footer{padding:12px 16px;border-top:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}[data-v-533cb131] .mobile-modal .ant-modal-footer .ant-btn{font-size:13px;padding:0 12px;height:32px}.add-symbol-modal-content .market-tabs[data-v-533cb131],.add-symbol-modal-content .symbol-search-section[data-v-533cb131]{margin-bottom:16px}.add-symbol-modal-content .section-title[data-v-533cb131]{font-weight:500;margin-bottom:8px;color:rgba(0,0,0,.85);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-symbol-modal-content .hot-symbols-section[data-v-533cb131],.add-symbol-modal-content .search-results-section[data-v-533cb131]{margin-bottom:16px}.add-symbol-modal-content .symbol-list .symbol-list-item[data-v-533cb131]{cursor:pointer;-webkit-transition:background-color .3s;transition:background-color .3s;padding:8px 12px;border-radius:4px}.add-symbol-modal-content .symbol-list .symbol-list-item[data-v-533cb131]:hover{background-color:#f5f5f5}.add-symbol-modal-content .symbol-item-content[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-symbol-modal-content .symbol-item-content .symbol-code[data-v-533cb131]{font-weight:500;margin-right:8px}.add-symbol-modal-content .symbol-item-content .symbol-name[data-v-533cb131]{color:rgba(0,0,0,.45)}.add-symbol-modal-content .selected-symbol-section[data-v-533cb131]{padding:12px;background-color:#f6ffed;border:1px solid #b7eb8f;border-radius:4px;margin-top:16px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:8px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info .symbol-code[data-v-533cb131]{font-weight:500;margin-right:8px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info .symbol-name[data-v-533cb131]{color:rgba(0,0,0,.45)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-body{background:#1e1e1e}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-title{color:hsla(0,0%,100%,.88)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-content{color:hsla(0,0%,100%,.65)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns{border-top:1px solid hsla(0,0%,100%,.06);padding-top:12px}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns .ant-btn-default{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.85)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns .ant-btn-danger{background:#ff4d4f;border-color:#ff4d4f;color:#fff}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body>.anticon{color:#faad14}body.dark .mode-selector-modal .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .mode-selector-modal .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-body{color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08);-webkit-box-shadow:0 18px 48px rgba(0,0,0,.45);box-shadow:0 18px 48px rgba(0,0,0,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-body{color:#d1d4dc;background:#1e1e1e}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle .mode-hint,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle .mode-title{color:hsla(0,0%,100%,.72)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-title{color:hsla(0,0%,100%,.65)!important}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-description{color:hsla(0,0%,100%,.35)!important}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-wait .ant-steps-item-icon{background:transparent;border-color:hsla(0,0%,100%,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-wait .ant-steps-item-icon .ant-steps-icon{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-process .ant-steps-item-icon{background:#1890ff;border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon{color:#fff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-finish .ant-steps-item-icon{background:transparent;border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-finish .ant-steps-item-icon .ant-steps-icon{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-tail:after{background:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .notify-channel-grid .ant-checkbox-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:40px;padding:0 12px;border-radius:10px;background:hsla(0,0%,100%,.03);border:1px solid hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.72)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-webkit-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-moz-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:-ms-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-ms-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:focus,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:hover,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:focus,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:hover{border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap{background:#252525;border-left-color:hsla(0,0%,100%,.12)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap .ant-input-number-handler{border-bottom-color:hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection .ant-select-arrow{color:hsla(0,0%,100%,.35)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection:hover{border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-wrapper{color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-switch{background:hsla(0,0%,100%,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-switch.ant-switch-checked{background:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-moz-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-explain,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-extra{color:hsla(0,0%,100%,.35)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-item-label>label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse{background:#1c1c1c!important;border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-item{border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-header{color:hsla(0,0%,100%,.85)!important;background:hsla(0,0%,100%,.03)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-content{background:#1c1c1c;border-color:hsla(0,0%,100%,.06);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .advanced-settings-shell,body.dark .strategy-form-modal.strategy-form-modal-dark .execution-section-card,body.dark .strategy-form-modal.strategy-form-modal-dark .selected-indicator-card,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-essentials-card{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08);-webkit-box-shadow:none;box-shadow:none}body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(114,46,209,.14));border-color:rgba(64,169,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero{background:linear-gradient(135deg,rgba(82,196,26,.16),rgba(24,144,255,.14));border-color:rgba(64,169,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .mode-title,body.dark .strategy-form-modal.strategy-form-modal-dark .section-block-title,body.dark .strategy-form-modal.strategy-form-modal-dark .selected-indicator-name{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .form-item-hint,body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-description,body.dark .strategy-form-modal.strategy-form-modal-dark .section-block-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero-desc{color:hsla(0,0%,100%,.62)}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box .ai-filter-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box .ai-filter-hint{color:hsla(0,0%,100%,.4)}body.dark .strategy-form-modal.strategy-form-modal-dark .form-container{color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .form-container .ant-form-item-label>label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-description{background:#1c1c1c;color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-params-form{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-params-form .param-label{color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card{border-color:hsla(0,0%,100%,.1);background:#1c1c1c;color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card:hover{border-color:#177ddc}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card.selected{border-color:#177ddc;background:rgba(23,125,220,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card .strategy-type-content h3{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card .strategy-type-content p{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .market-category-selector .selector-label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-option .indicator-name{color:hsla(0,0%,100%,.9)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-option-desc{color:hsla(0,0%,100%,.6)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select-selection-selected-value{color:#d1d4dc!important}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card:hover{border-color:rgba(64,169,255,.3);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card.active{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card.disabled{background:hsla(0,0%,100%,.02)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-icon.signal{color:#69c0ff;background:rgba(24,144,255,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-icon.live{color:#ffc069;background:rgba(250,140,22,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-desc{color:hsla(0,0%,100%,.6)}body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-kicker{color:#69c0ff}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero-desc{color:hsla(0,0%,100%,.72)}body.dark .ant-modal-wrap .ant-modal-content{background:#1e1e1e}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-body{color:#d1d4dc}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-footer{border-top-color:hsla(0,0%,100%,.06);background:#252525}body.dark .ant-select-dropdown{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.1);-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4);box-shadow:0 4px 12px rgba(0,0,0,.4)}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d1d4dc}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-disabled{color:hsla(0,0%,100%,.25)}body.dark .ant-select-dropdown .ant-select-search__field{background:#141414;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .ant-select-dropdown .ant-select-dropdown-menu{background:#1e1e1e}body.dark .ant-select-dropdown .ant-empty-description{color:hsla(0,0%,100%,.35)}body.dark .ant-modal-wrap .ant-collapse{background:#1c1c1c!important;border-color:hsla(0,0%,100%,.08)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-item{border-color:hsla(0,0%,100%,.08)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-header{color:hsla(0,0%,100%,.85)!important;background:hsla(0,0%,100%,.03)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-header .anticon{color:hsla(0,0%,100%,.45)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-content{background:#1c1c1c;border-color:hsla(0,0%,100%,.06);color:#d1d4dc}body.dark .ant-modal-wrap .ant-spin-text{color:hsla(0,0%,100%,.65)}body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)}body.dark .ant-modal-wrap .ant-alert .ant-alert-message{color:hsla(0,0%,100%,.75)}body.dark .ant-modal-wrap .ant-alert .ant-alert-description{color:hsla(0,0%,100%,.55)} \ No newline at end of file diff --git a/frontend/dist/css/254.2035e6e3.css b/frontend/dist/css/254.2035e6e3.css deleted file mode 100644 index a2fe643..0000000 --- a/frontend/dist/css/254.2035e6e3.css +++ /dev/null @@ -1 +0,0 @@ -.trading-records[data-v-bdf54cd6]{width:100%;min-height:300px;padding:0;overflow-x:visible;overflow-y:visible}.trading-records .empty-state[data-v-bdf54cd6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:220px;padding:40px 16px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.trading-records.theme-dark .empty-state[data-v-bdf54cd6]{background:#141414;border-color:hsla(0,0%,100%,.08)}.trading-records[data-v-bdf54cd6] .ant-spin-container,.trading-records[data-v-bdf54cd6] .ant-spin-nested-loading{overflow-x:visible}.trading-records[data-v-bdf54cd6] .ant-table-wrapper{overflow-x:visible;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-bdf54cd6] .ant-table{font-size:13px;color:#333}.trading-records[data-v-bdf54cd6] .ant-table-container{overflow-x:visible}.trading-records[data-v-bdf54cd6] .ant-table-body{overflow-x:auto;overflow-y:visible;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-bdf54cd6] .ant-table-container{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-bdf54cd6] .ant-table-content{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-bdf54cd6] .ant-table-content::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-bdf54cd6] .ant-table-content::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-content::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-bdf54cd6] .ant-table-content::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td,.trading-records[data-v-bdf54cd6] .ant-table-thead>tr>th{white-space:nowrap}.trading-records[data-v-bdf54cd6] .ant-table-thead>tr>th{background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9);font-weight:600;color:#475569;border-bottom:2px solid #e2e8f0;padding:12px 16px;font-size:13px}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td{padding:12px 16px;color:#334155;border-bottom:1px solid #f1f5f9;-webkit-transition:background .2s ease;transition:background .2s ease}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr:hover>td{background:#f0f7ff!important}.trading-records[data-v-bdf54cd6] .ant-tag{border-radius:6px;padding:3px 10px;font-weight:600;font-size:11px;border:none;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-bdf54cd6] .ant-tag[color=cyan],.trading-records[data-v-bdf54cd6] .ant-tag[color=green],.trading-records[data-v-bdf54cd6] .ant-tag[color=lime]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.trading-records[data-v-bdf54cd6] .ant-tag[color=magenta],.trading-records[data-v-bdf54cd6] .ant-tag[color=red]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.trading-records[data-v-bdf54cd6] .ant-tag[color=orange]{background:linear-gradient(135deg,rgba(250,173,20,.15),rgba(250,173,20,.08));color:#d48806;border:1px solid rgba(250,173,20,.3)}.trading-records[data-v-bdf54cd6] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}.trading-records[data-v-bdf54cd6] .ant-pagination{margin-top:16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item{border-radius:8px;border:1px solid #e2e8f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item.ant-pagination-item-active a{color:#fff}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{border-radius:8px;border:1px solid #e2e8f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}.theme-dark .trading-records[data-v-bdf54cd6] .ant-table,.trading-records.theme-dark[data-v-bdf54cd6] .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v-bdf54cd6] .ant-table-thead>tr>th,.trading-records.theme-dark[data-v-bdf54cd6] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600}.theme-dark .trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td,.trading-records.theme-dark[data-v-bdf54cd6] .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v-bdf54cd6] .ant-table-tbody>tr:hover>td,.trading-records.theme-dark[data-v-bdf54cd6] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td span,.trading-records.theme-dark[data-v-bdf54cd6] .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records[data-v-bdf54cd6] .ant-empty .ant-empty-description,.trading-records.theme-dark[data-v-bdf54cd6] .ant-empty .ant-empty-description{color:hsla(0,0%,100%,.35)}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr:hover>td{background:#fafafa}@media (max-width:768px){.trading-records[data-v-bdf54cd6]{min-height:200px;overflow-x:visible}.trading-records[data-v-bdf54cd6] .ant-table{font-size:12px}.trading-records[data-v-bdf54cd6] .ant-table-body,.trading-records[data-v-bdf54cd6] .ant-table-container,.trading-records[data-v-bdf54cd6] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar,.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar,.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar{height:4px;width:4px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-track,.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-track,.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:2px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-thumb,.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-thumb,.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.trading-records[data-v-bdf54cd6] .ant-table-body::-webkit-scrollbar-thumb:hover,.trading-records[data-v-bdf54cd6] .ant-table-container::-webkit-scrollbar-thumb:hover,.trading-records[data-v-bdf54cd6] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td,.trading-records[data-v-bdf54cd6] .ant-table-thead>tr>th{padding:8px 10px;font-size:11px;white-space:nowrap}.trading-records[data-v-bdf54cd6] .ant-pagination{margin-top:12px;text-align:center}.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item,.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-next,.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-prev{margin:0 2px;min-width:28px;height:28px;line-height:26px;font-size:12px}}@media (max-width:480px){.trading-records[data-v-bdf54cd6] .ant-table{font-size:11px}.trading-records[data-v-bdf54cd6] .ant-table-tbody>tr>td,.trading-records[data-v-bdf54cd6] .ant-table-thead>tr>th{padding:6px 8px;font-size:10px}}.theme-dark .trading-records .ant-table-tbody>tr>td,.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td,body.dark .trading-records .ant-table-tbody>tr>td,body.realdark .trading-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records .ant-table-thead>tr>th,.theme-dark .trading-records[data-v] .ant-table-thead>tr>th,body.dark .trading-records .ant-table-thead>tr>th,body.realdark .trading-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600!important}.theme-dark .trading-records .ant-table,.theme-dark .trading-records[data-v] .ant-table,body.dark .trading-records .ant-table,body.realdark .trading-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records .ant-table-tbody>tr>td *,.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td *,body.dark .trading-records .ant-table-tbody>tr>td *,body.realdark .trading-records .ant-table-tbody>tr>td *{color:#d1d4dc!important}.theme-dark .trading-records .ant-table-tbody>tr:hover>td,.theme-dark .trading-records[data-v] .ant-table-tbody>tr:hover>td,body.dark .trading-records .ant-table-tbody>tr:hover>td,body.realdark .trading-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records .ant-table-thead>tr>th .ant-table-column-title,.theme-dark .trading-records[data-v] .ant-table-thead>tr>th .ant-table-column-title,body.dark .trading-records .ant-table-thead>tr>th .ant-table-column-title,body.realdark .trading-records .ant-table-thead>tr>th .ant-table-column-title{color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr>td,body.realdark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}body.dark .trading-records[data-v-8a68b65a] .ant-table-thead>tr>th,body.realdark .trading-records[data-v-8a68b65a] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td,body.dark .trading-records[data-v] .ant-table-tbody>tr>td,body.realdark .trading-records[data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-table-thead>tr>th,body.dark .trading-records[data-v] .ant-table-thead>tr>th,body.realdark .trading-records[data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item,body.dark .trading-records[data-v] .ant-pagination-item,body.realdark .trading-records[data-v] .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-pagination-item a,body.dark .trading-records[data-v] .ant-pagination-item a,body.realdark .trading-records[data-v] .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item-active a,body.dark .trading-records[data-v] .ant-pagination-item-active a,body.realdark .trading-records[data-v] .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper,body.dark .trading-records[data-v-8a68b65a] .ant-table-body,body.dark .trading-records[data-v-8a68b65a] .ant-table-container,body.dark .trading-records[data-v-8a68b65a] .ant-table-content,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records[data-v] .ant-table-body,.theme-dark .trading-records[data-v] .ant-table-container,.theme-dark .trading-records[data-v] .ant-table-content,.theme-dark .trading-records[data-v] .ant-table-wrapper,body.dark .trading-records[data-v] .ant-table-body,body.dark .trading-records[data-v] .ant-table-container,body.dark .trading-records[data-v] .ant-table-content,body.dark .trading-records[data-v] .ant-table-wrapper,body.realdark .trading-records[data-v] .ant-table-body,body.realdark .trading-records[data-v] .ant-table-container,body.realdark .trading-records[data-v] .ant-table-content,body.realdark .trading-records[data-v] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}.theme-dark .trading-records ::v-deep .ant-table-body,.theme-dark .trading-records ::v-deep .ant-table-container,.theme-dark .trading-records ::v-deep .ant-table-content,.theme-dark .trading-records ::v-deep .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table,body.realdark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table table,body.realdark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-table-tbody,body.realdark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .trading-records ::v-deep .ant-table-placeholder,body.realdark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}body.dark .trading-records ::v-deep .ant-table-body,body.dark .trading-records ::v-deep .ant-table-container,body.dark .trading-records ::v-deep .ant-table-content,body.dark .trading-records ::v-deep .ant-table-wrapper,body.realdark .trading-records ::v-deep .ant-table-body,body.realdark .trading-records ::v-deep .ant-table-container,body.realdark .trading-records ::v-deep .ant-table-content,body.realdark .trading-records ::v-deep .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table,.theme-dark .trading-records ::v-deep .ant-table,body.dark .trading-records * ::v-deep .ant-table,body.dark .trading-records ::v-deep .ant-table,body.realdark .trading-records * ::v-deep .ant-table,body.realdark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table table,.theme-dark .trading-records ::v-deep .ant-table table,body.dark .trading-records * ::v-deep .ant-table table,body.dark .trading-records ::v-deep .ant-table table,body.realdark .trading-records * ::v-deep .ant-table table,body.realdark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-thead>tr>th,.theme-dark .trading-records ::v-deep .ant-table-thead>tr>th,body.dark .trading-records * ::v-deep .ant-table-thead>tr>th,body.dark .trading-records ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records * ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody,.theme-dark .trading-records ::v-deep .ant-table-tbody,body.dark .trading-records * ::v-deep .ant-table-tbody,body.dark .trading-records ::v-deep .ant-table-tbody,body.realdark .trading-records * ::v-deep .ant-table-tbody,body.realdark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td span,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td span,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records * ::v-deep .ant-table-placeholder,.theme-dark .trading-records ::v-deep .ant-table-placeholder,body.dark .trading-records * ::v-deep .ant-table-placeholder,body.dark .trading-records ::v-deep .ant-table-placeholder,body.realdark .trading-records * ::v-deep .ant-table-placeholder,body.realdark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.position-records[data-v-6ba7d922]{width:100%;min-height:300px;padding:0}.position-records .empty-state[data-v-6ba7d922]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:220px;padding:40px 16px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.position-records.theme-dark .empty-state[data-v-6ba7d922]{background:#141414;border-color:hsla(0,0%,100%,.08)}.position-records[data-v-6ba7d922] .ant-table{font-size:13px;color:#333}.position-records[data-v-6ba7d922] .ant-table-body{overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-container{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-content,.position-records[data-v-6ba7d922] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9);font-weight:600;color:#475569;border-bottom:2px solid #e2e8f0;padding:12px 16px;font-size:13px}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td{padding:12px 16px;color:#334155;border-bottom:1px solid #f1f5f9;-webkit-transition:background .2s ease;transition:background .2s ease}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td strong{color:#262626;font-weight:600}.position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#f0f7ff!important}.position-records[data-v-6ba7d922] .ant-tag{border-radius:6px;padding:2px 10px;font-weight:600;font-size:11px;border:none}.position-records[data-v-6ba7d922] .ant-tag[color=green]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.position-records[data-v-6ba7d922] .ant-tag[color=red]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.position-records.theme-dark[data-v-6ba7d922] .ant-table,.theme-dark .position-records[data-v-6ba7d922] .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-thead>tr>th,.theme-dark .position-records[data-v-6ba7d922] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr>td,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr:hover>td,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr>td strong,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr>td strong{color:#d1d4dc!important}.position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#fafafa}.position-records[data-v-6ba7d922] .ant-empty{margin:40px 0}.position-records[data-v-6ba7d922] .ant-empty .ant-empty-description{color:#8c8c8c}.position-records.theme-dark[data-v-6ba7d922] .ant-empty .ant-empty-description{color:hsla(0,0%,100%,.35)}.position-records .profit[data-v-6ba7d922]{color:#0ecb81;font-weight:700;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:linear-gradient(135deg,rgba(14,203,129,.12),rgba(14,203,129,.06));border-radius:6px}.position-records .profit[data-v-6ba7d922]:before{content:"▲";font-size:8px}.position-records .loss[data-v-6ba7d922]{color:#f6465d;font-weight:700;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:linear-gradient(135deg,rgba(246,70,93,.12),rgba(246,70,93,.06));border-radius:6px}.position-records .loss[data-v-6ba7d922]:before{content:"▼";font-size:8px}@media (max-width:768px){.position-records[data-v-6ba7d922]{min-height:200px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922]::-webkit-scrollbar{height:4px;width:4px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-track{background:transparent;border-radius:2px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records .empty-state[data-v-6ba7d922]{min-height:150px;padding:20px 0}.position-records[data-v-6ba7d922] .ant-table{font-size:12px;min-width:700px}.position-records[data-v-6ba7d922] .ant-table-body,.position-records[data-v-6ba7d922] .ant-table-container,.position-records[data-v-6ba7d922] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar{height:4px;width:4px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:2px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td,.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{padding:8px 10px;font-size:11px;white-space:nowrap}.position-records[data-v-6ba7d922] .ant-empty{margin:20px 0}}@media (max-width:480px){.position-records[data-v-6ba7d922] .ant-table{font-size:11px;min-width:600px}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td,.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{padding:6px 8px;font-size:10px}.position-records .loss[data-v-6ba7d922],.position-records .profit[data-v-6ba7d922]{font-size:11px}}.theme-dark .position-records .ant-table-tbody>tr>td,.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,body.dark .position-records .ant-table-tbody>tr>td,body.realdark .position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records .ant-table-thead>tr>th,.theme-dark .position-records[data-v] .ant-table-thead>tr>th,body.dark .position-records .ant-table-thead>tr>th,body.realdark .position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600!important}.theme-dark .position-records .ant-table,.theme-dark .position-records[data-v] .ant-table,body.dark .position-records .ant-table,body.realdark .position-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .position-records .ant-table-tbody>tr>td *,.theme-dark .position-records[data-v] .ant-table-tbody>tr>td *,body.dark .position-records .ant-table-tbody>tr>td *,body.realdark .position-records .ant-table-tbody>tr>td *{color:#d1d4dc!important}.theme-dark .position-records .ant-table-tbody>tr:hover>td,.theme-dark .position-records[data-v] .ant-table-tbody>tr:hover>td,body.dark .position-records .ant-table-tbody>tr:hover>td,body.realdark .position-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .position-records .ant-table-thead>tr>th .ant-table-column-title,.theme-dark .position-records[data-v] .ant-table-thead>tr>th .ant-table-column-title,body.dark .position-records .ant-table-thead>tr>th .ant-table-column-title,body.realdark .position-records .ant-table-thead>tr>th .ant-table-column-title{color:#d1d4dc!important}.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,.theme-dark [class*=position-records][data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-thead>tr>th,.theme-dark [class*=position-records][data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,.theme-dark [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table,.theme-dark [data-v-6c1eb557].position-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr:hover>td,.theme-dark [data-v-6c1eb557].position-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.realdark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}body.dark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.dark [data-v-6c1eb557] .ant-table-thead>tr>th,body.dark [data-v-6c1eb557] .position-records .ant-table-thead>tr>th,body.dark [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.realdark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557] .position-records .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,body.dark .position-records[data-v] .ant-table-tbody>tr>td,body.realdark .position-records[data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-thead>tr>th,body.dark .position-records[data-v] .ant-table-thead>tr>th,body.realdark .position-records[data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description,body.dark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description,body.realdark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description{color:#868993!important}.theme-dark .position-records[data-v-6c1eb557] .profit,body.dark .position-records[data-v-6c1eb557] .profit,body.realdark .position-records[data-v-6c1eb557] .profit{color:#52c41a!important}.theme-dark .position-records[data-v-6c1eb557] .loss,body.dark .position-records[data-v-6c1eb557] .loss,body.realdark .position-records[data-v-6c1eb557] .loss{color:#ff4d4f!important}.theme-dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.realdark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,.theme-dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.realdark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper,body.dark .position-records[data-v-6c1eb557] .ant-table-body,body.dark .position-records[data-v-6c1eb557] .ant-table-container,body.dark .position-records[data-v-6c1eb557] .ant-table-content,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper,body.realdark .position-records[data-v-6c1eb557] .ant-table-body,body.realdark .position-records[data-v-6c1eb557] .ant-table-container,body.realdark .position-records[data-v-6c1eb557] .ant-table-content,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .position-records[data-v] .ant-table-body,.theme-dark .position-records[data-v] .ant-table-container,.theme-dark .position-records[data-v] .ant-table-content,.theme-dark .position-records[data-v] .ant-table-wrapper,body.dark .position-records[data-v] .ant-table-body,body.dark .position-records[data-v] .ant-table-container,body.dark .position-records[data-v] .ant-table-content,body.dark .position-records[data-v] .ant-table-wrapper,body.realdark .position-records[data-v] .ant-table-body,body.realdark .position-records[data-v] .ant-table-container,body.realdark .position-records[data-v] .ant-table-content,body.realdark .position-records[data-v] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.strategy-type-selector[data-v-8ec7ab14]{padding:8px 0}.selector-header[data-v-8ec7ab14]{text-align:center;margin-bottom:24px}.selector-header h3[data-v-8ec7ab14]{margin:0 0 4px;font-size:18px;font-weight:600}.selector-header .selector-hint[data-v-8ec7ab14]{color:#999;font-size:13px;margin:0}.mode-cards[data-v-8ec7ab14]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px}@media (max-width:768px){.mode-cards[data-v-8ec7ab14]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.mode-card[data-v-8ec7ab14]{-webkit-box-flex:1;-ms-flex:1;flex:1;border:2px solid #f0f0f0;border-radius:12px;padding:24px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;position:relative;overflow:hidden}.mode-card[data-v-8ec7ab14]:hover{border-color:#1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.12);box-shadow:0 4px 16px rgba(24,144,255,.12);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.mode-card.selected[data-v-8ec7ab14]{border-color:#1890ff;background:rgba(24,144,255,.02)}.mode-card.selected[data-v-8ec7ab14]:after{content:"✓";position:absolute;top:8px;right:12px;color:#1890ff;font-size:18px;font-weight:700}.card-icon[data-v-8ec7ab14]{width:56px;height:56px;border-radius:14px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:26px;margin-bottom:16px}.card-icon.signal-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}.card-icon.script-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,#f6ffed,#d9f7be);color:#52c41a}.card-body[data-v-8ec7ab14]{-webkit-box-flex:1;-ms-flex:1;flex:1}.card-body .card-badge-row[data-v-8ec7ab14]{margin-bottom:10px}.card-body .card-badge[data-v-8ec7ab14]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px;border-radius:999px;background:rgba(24,144,255,.08);color:#1890ff;font-size:12px;font-weight:600;line-height:1.4}.card-body .card-badge.card-badge--script[data-v-8ec7ab14]{background:rgba(82,196,26,.12);color:#389e0d}.card-body h4[data-v-8ec7ab14]{font-size:16px;font-weight:600;margin:0 0 8px}.card-body .card-desc[data-v-8ec7ab14]{color:#666;font-size:13px;line-height:1.5;margin-bottom:12px}.card-features[data-v-8ec7ab14]{list-style:none;padding:0;margin:0 0 16px;text-align:left}.card-features li[data-v-8ec7ab14]{font-size:13px;color:#555;padding:3px 0}.card-features li .anticon[data-v-8ec7ab14]{color:#52c41a;margin-right:6px;font-size:12px}.card-btn[data-v-8ec7ab14]{width:100%}.template-quick-start[data-v-8ec7ab14]{margin-top:8px}.template-quick-start .divider-text[data-v-8ec7ab14]{color:#999;font-size:13px}.template-tags[data-v-8ec7ab14]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px}.template-tag[data-v-8ec7ab14]{cursor:pointer;padding:4px 12px;font-size:13px;border-radius:16px;-webkit-transition:all .2s;transition:all .2s}.template-tag .tpl-icon[data-v-8ec7ab14]{margin-right:4px}.template-tag[data-v-8ec7ab14]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}.theme-dark .selector-header h3[data-v-8ec7ab14]{color:#e0e6ed}.theme-dark .selector-header .selector-hint[data-v-8ec7ab14]{color:hsla(0,0%,100%,.4)}.theme-dark .mode-card[data-v-8ec7ab14]{border-color:hsla(0,0%,100%,.08);background:#1c1c1c}.theme-dark .mode-card[data-v-8ec7ab14]:hover{border-color:#177ddc;-webkit-box-shadow:0 4px 16px rgba(23,125,220,.2);box-shadow:0 4px 16px rgba(23,125,220,.2)}.theme-dark .mode-card.selected[data-v-8ec7ab14]{border-color:#177ddc;background:rgba(23,125,220,.06)}.theme-dark .mode-card.selected[data-v-8ec7ab14]:after{color:#40a9ff}.theme-dark .card-icon.signal-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}.theme-dark .card-icon.script-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,rgba(82,196,26,.15),rgba(82,196,26,.08));color:#73d13d}.theme-dark .card-body h4[data-v-8ec7ab14]{color:#e0e6ed}.theme-dark .card-body .card-desc[data-v-8ec7ab14]{color:hsla(0,0%,100%,.45)}.theme-dark .card-body .card-badge[data-v-8ec7ab14]{background:rgba(64,169,255,.12);color:#69c0ff}.theme-dark .card-body .card-badge.card-badge--script[data-v-8ec7ab14]{background:rgba(115,209,61,.16);color:#95de64}.theme-dark .card-features li[data-v-8ec7ab14]{color:hsla(0,0%,100%,.6)}.theme-dark .card-features li .anticon[data-v-8ec7ab14]{color:#73d13d}.theme-dark .card-btn[data-v-8ec7ab14]{border-color:rgba(24,144,255,.4);color:#40a9ff}.theme-dark .card-btn[data-v-8ec7ab14]:hover{border-color:#1890ff;color:#1890ff}.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider-inner-text{color:hsla(0,0%,100%,.35)}.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider:after,.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider:before{border-top-color:hsla(0,0%,100%,.08)}.theme-dark .divider-text[data-v-8ec7ab14]{color:hsla(0,0%,100%,.35)}.theme-dark .template-tag[data-v-8ec7ab14]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.65)}.theme-dark .template-tag[data-v-8ec7ab14]:hover{color:#40a9ff;border-color:#177ddc;background:rgba(23,125,220,.1)}.strategy-editor[data-v-35a0a386]{width:100%}.editor-layout[data-v-35a0a386]{min-height:450px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.code-col[data-v-35a0a386],.side-col[data-v-35a0a386]{-ms-flex-direction:column;flex-direction:column}.code-col[data-v-35a0a386],.code-section[data-v-35a0a386],.side-col[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.code-section[data-v-35a0a386]{border:1px solid #e8e8e8;border-radius:8px;overflow:hidden;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column}.section-header[data-v-35a0a386]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:8px 12px;background:#fafafa;border-bottom:1px solid #e8e8e8}.section-header[data-v-35a0a386],.section-title-wrap[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-title-wrap[data-v-35a0a386]{gap:8px;min-width:0}.section-title[data-v-35a0a386]{font-weight:600;font-size:14px}.section-title .anticon[data-v-35a0a386]{margin-right:6px}.current-template-tag[data-v-35a0a386]{margin-right:0}.verify-btn[data-v-35a0a386]{color:#52c41a;font-weight:600}.code-editor-container[data-v-35a0a386]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:420px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-editor-container[data-v-35a0a386] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;background:#fff}.code-editor-container[data-v-35a0a386] .CodeMirror-scroll{min-height:100%;overflow-x:auto!important;overflow-y:auto!important}.code-editor-container[data-v-35a0a386] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5)}.code-editor-container[data-v-35a0a386] .CodeMirror-linenumber{padding:0 8px 0 0;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-35a0a386] .CodeMirror-lines{padding:12px 0}.code-editor-container[data-v-35a0a386] .CodeMirror pre.CodeMirror-line,.code-editor-container[data-v-35a0a386] .CodeMirror pre.CodeMirror-line-like{padding:0 12px 0 12px}.code-editor-container[data-v-35a0a386] .CodeMirror-cursor{border-left:2px solid #1890ff}.side-tabs[data-v-35a0a386]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden}.side-tabs[data-v-35a0a386] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;padding:0 12px;background:#fafafa;border-bottom:1px solid #f0f0f0}.side-tabs[data-v-35a0a386] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:280px;overflow-x:hidden;overflow-y:auto;padding:12px}.ai-actions[data-v-35a0a386]{margin-top:12px}.params-panel[data-v-35a0a386]{min-height:120px}.panel-intro[data-v-35a0a386]{margin-bottom:12px;padding:12px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.panel-intro__title[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:14px;font-weight:600;color:#262626}.panel-intro__desc[data-v-35a0a386]{margin-top:4px;font-size:12px;line-height:1.6;color:#8c8c8c}.template-list[data-v-35a0a386]{padding:4px 0}.template-item[data-v-35a0a386]{padding:12px;border:1px solid #f0f0f0;border-radius:8px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.template-item.active[data-v-35a0a386],.template-item[data-v-35a0a386]:hover{border-color:#1890ff;background:#fafafa}.template-item .tpl-header[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:4px}.template-item .tpl-icon[data-v-35a0a386]{font-size:16px;margin-right:8px}.template-item .tpl-name[data-v-35a0a386]{font-weight:600;font-size:14px}.template-item .tpl-desc[data-v-35a0a386]{font-size:12px;color:#888;margin:0 0 4px}.template-item .tpl-use-btn[data-v-35a0a386]{padding:0;font-size:12px}.params-tip[data-v-35a0a386]{margin-bottom:12px}.param-list[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.param-item[data-v-35a0a386]{padding:12px;border:1px solid #f0f0f0;border-radius:8px;background:#fff}.param-item__label-row[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin-bottom:4px}.param-item__label[data-v-35a0a386]{font-size:13px;font-weight:600;color:#262626}.param-item__type[data-v-35a0a386]{font-size:11px;color:#8c8c8c}.param-item__desc[data-v-35a0a386]{margin-bottom:8px;font-size:12px;line-height:1.5;color:#8c8c8c}.param-item__switch[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.params-actions[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;margin-top:16px}.ai-suggestions[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:10px}.prompt-tag[data-v-35a0a386]{cursor:pointer}.ai-status[data-v-35a0a386]{margin-top:8px;color:#1890ff;font-size:13px;text-align:center}.params-empty-guide[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:200px}.theme-dark .code-section[data-v-35a0a386]{border-color:hsla(0,0%,100%,.1)}.theme-dark .section-header[data-v-35a0a386]{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}.theme-dark .section-title[data-v-35a0a386]{color:#e0e6ed}.theme-dark .side-tabs[data-v-35a0a386]{border-color:hsla(0,0%,100%,.1)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-bar{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.08)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab{color:hsla(0,0%,100%,.55)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab:hover{color:hsla(0,0%,100%,.85)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}.theme-dark .panel-intro[data-v-35a0a386]{background:#1c1c1c;border-color:hsla(0,0%,100%,.08)}.theme-dark .panel-intro__title[data-v-35a0a386],.theme-dark .param-item__label[data-v-35a0a386]{color:#e0e6ed}.theme-dark .panel-intro__desc[data-v-35a0a386],.theme-dark .param-item__desc[data-v-35a0a386],.theme-dark .param-item__type[data-v-35a0a386]{color:hsla(0,0%,100%,.45)}.theme-dark .param-item[data-v-35a0a386],.theme-dark .template-item[data-v-35a0a386]{border-color:hsla(0,0%,100%,.08);background:#1c1c1c}.theme-dark .template-item.active[data-v-35a0a386],.theme-dark .template-item[data-v-35a0a386]:hover{border-color:#177ddc;background:rgba(23,125,220,.06)}.theme-dark .tpl-name[data-v-35a0a386]{color:#e0e6ed}.theme-dark .tpl-desc[data-v-35a0a386]{color:hsla(0,0%,100%,.4)}.theme-dark .prompt-tag[data-v-35a0a386]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.7)}.theme-dark[data-v-35a0a386] .ant-input,.theme-dark[data-v-35a0a386] .ant-input-number,.theme-dark[data-v-35a0a386] .ant-input-number-input,.theme-dark[data-v-35a0a386] .ant-select-selection,.theme-dark[data-v-35a0a386] .ant-select-selection--single,.theme-dark[data-v-35a0a386] textarea.ant-input{background:#141414!important;border-color:hsla(0,0%,100%,.1)!important;color:#d1d4dc!important}.theme-dark[data-v-35a0a386] .ant-select-selection-placeholder,.theme-dark[data-v-35a0a386] .ant-select-selection-selected-value{color:#d1d4dc!important}.theme-dark .ai-status[data-v-35a0a386]{color:#40a9ff}.theme-dark[data-v-35a0a386] .ant-empty-description{color:hsla(0,0%,100%,.45)}.theme-dark[data-v-35a0a386] .ant-alert-info{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}.theme-dark[data-v-35a0a386] .ant-alert-info .ant-alert-message{color:hsla(0,0%,100%,.65)}.theme-dark .verify-btn[data-v-35a0a386]{color:#52c41a}.theme-dark .ai-panel[data-v-35a0a386]{color:hsla(0,0%,100%,.78)}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror{background:#141414;color:#d1d4dc}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror-gutters{border-right-color:hsla(0,0%,100%,.08);background:-webkit-gradient(linear,left top,right top,from(#1a1a1a),to(#1c1c1c));background:linear-gradient(90deg,#1a1a1a 0,#1c1c1c)}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror-linenumber{color:hsla(0,0%,100%,.32)}.performance-analysis[data-v-01ff5f5a]{padding:4px 0}.strategy-tab-empty[data-v-01ff5f5a]{padding:48px 16px;margin:0 auto;max-width:360px}.metrics-grid[data-v-01ff5f5a]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}@media (max-width:768px){.metrics-grid[data-v-01ff5f5a]{grid-template-columns:repeat(2,1fr)}}.metric-card[data-v-01ff5f5a]{background:#fafafa;border-radius:8px;padding:12px 16px;text-align:center}.metric-card.positive .metric-value[data-v-01ff5f5a]{color:#52c41a}.metric-card.negative .metric-value[data-v-01ff5f5a]{color:#ff4d4f}.metric-card .metric-label[data-v-01ff5f5a]{font-size:12px;color:#999;margin-bottom:4px}.metric-card .metric-value[data-v-01ff5f5a]{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.chart-section[data-v-01ff5f5a]{margin-bottom:20px}.chart-section .chart-title[data-v-01ff5f5a]{font-size:14px;font-weight:600;margin-bottom:8px;padding-left:4px}.chart-container[data-v-01ff5f5a]{width:100%;height:300px;border-radius:8px;overflow:hidden}.theme-dark .metrics-grid .metric-card[data-v-01ff5f5a]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06)}.theme-dark .metrics-grid .metric-card .metric-label[data-v-01ff5f5a]{color:hsla(0,0%,100%,.4)}.theme-dark .metrics-grid .metric-card .metric-value[data-v-01ff5f5a]{color:#e0e6ed}.theme-dark .metrics-grid .metric-card.positive .metric-value[data-v-01ff5f5a]{color:#52c41a}.theme-dark .metrics-grid .metric-card.negative .metric-value[data-v-01ff5f5a]{color:#ff4d4f}.theme-dark .chart-section .chart-title[data-v-01ff5f5a]{color:#e0e6ed}.theme-dark .chart-container[data-v-01ff5f5a]{background:#141414;border:1px solid hsla(0,0%,100%,.06)}.theme-dark .strategy-tab-empty[data-v-01ff5f5a] .ant-empty-description,.theme-dark[data-v-01ff5f5a] .ant-empty-description{color:hsla(0,0%,100%,.35)}.strategy-logs[data-v-73589ce4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.logs-toolbar[data-v-73589ce4]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:8px 0;margin-bottom:8px}.logs-toolbar .toolbar-right[data-v-73589ce4],.logs-toolbar[data-v-73589ce4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.logs-toolbar .toolbar-right[data-v-73589ce4]{gap:6px}.logs-toolbar .toolbar-right .auto-refresh-label[data-v-73589ce4]{font-size:12px;color:#999}.logs-container[data-v-73589ce4]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:300px;max-height:500px;overflow-y:auto;border:1px solid #f0f0f0;border-radius:8px;padding:8px;font-family:Fira Code,Consolas,monospace;font-size:12px;line-height:1.7;background:#fafafa}.logs-empty[data-v-73589ce4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:200px;color:#ccc}.logs-empty p[data-v-73589ce4]{margin-top:8px;font-family:-apple-system,BlinkMacSystemFont,sans-serif}.log-entry[data-v-73589ce4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;padding:2px 4px;border-radius:3px}.log-entry[data-v-73589ce4]:hover{background:rgba(0,0,0,.02)}.log-entry.level-error[data-v-73589ce4]{background:rgba(255,77,79,.04)}.log-entry.level-trade[data-v-73589ce4]{background:rgba(82,196,26,.04)}.log-time[data-v-73589ce4]{color:#999;white-space:nowrap;font-size:11px;min-width:65px}.log-level[data-v-73589ce4]{-ms-flex-negative:0;flex-shrink:0;font-size:10px}.log-message[data-v-73589ce4]{-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-all}.theme-dark .logs-toolbar .toolbar-right .auto-refresh-label[data-v-73589ce4]{color:hsla(0,0%,100%,.4)}.theme-dark .logs-toolbar[data-v-73589ce4] .ant-radio-group .ant-radio-button-wrapper{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.55)}.theme-dark .logs-toolbar[data-v-73589ce4] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}.theme-dark .logs-toolbar[data-v-73589ce4] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark .logs-container[data-v-73589ce4]{background:#141414;border-color:hsla(0,0%,100%,.08)}.theme-dark .logs-empty[data-v-73589ce4]{color:hsla(0,0%,100%,.25)}.theme-dark .logs-empty .anticon[data-v-73589ce4]{color:hsla(0,0%,100%,.15)!important}.theme-dark .logs-empty p[data-v-73589ce4]{color:hsla(0,0%,100%,.3)}.theme-dark .log-entry[data-v-73589ce4]:hover{background:hsla(0,0%,100%,.03)}.theme-dark .log-entry.level-error[data-v-73589ce4]{background:rgba(255,77,79,.06)}.theme-dark .log-entry.level-trade[data-v-73589ce4]{background:rgba(82,196,26,.06)}.theme-dark .log-time[data-v-73589ce4]{color:hsla(0,0%,100%,.3)}.theme-dark .log-message[data-v-73589ce4]{color:hsla(0,0%,100%,.75)}.dashboard-pro[data-v-80b7f8d0]{min-height:100vh;padding:20px;background:#f8fafc;-webkit-transition:background .3s;transition:background .3s}.dashboard-pro.theme-dark[data-v-80b7f8d0]{background:#141414}.dashboard-pro.theme-dark .kpi-card[data-v-80b7f8d0]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .kpi-card .kpi-label[data-v-80b7f8d0]{color:#888}.dashboard-pro.theme-dark .kpi-card .kpi-value .amount[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .kpi-card .kpi-sub[data-v-80b7f8d0]{color:#888}.dashboard-pro.theme-dark .chart-panel[data-v-80b7f8d0],.dashboard-pro.theme-dark .table-panel[data-v-80b7f8d0]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header[data-v-80b7f8d0],.dashboard-pro.theme-dark .table-panel .panel-header[data-v-80b7f8d0]{border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header .panel-title[data-v-80b7f8d0],.dashboard-pro.theme-dark .table-panel .panel-header .panel-title[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .setup-guide-card[data-v-80b7f8d0]{background:linear-gradient(135deg,rgba(23,125,220,.14),rgba(139,92,246,.12));border-color:rgba(23,125,220,.26)}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-title[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-desc[data-v-80b7f8d0]{color:hsla(0,0%,100%,.72)}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-path[data-v-80b7f8d0]{color:hsla(0,0%,100%,.48)}.dashboard-pro.theme-dark .ranking-card[data-v-80b7f8d0]{background:hsla(0,0%,100%,.03);border-color:#2a2a2a}.dashboard-pro.theme-dark .ranking-card .rank-name[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .ranking-card .rank-stats label[data-v-80b7f8d0]{color:#888}.dashboard-pro.theme-dark .calendar-nav .current-month[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .calendar-nav .ant-btn-link[data-v-80b7f8d0],.dashboard-pro.theme-dark .profit-calendar .calendar-empty[data-v-80b7f8d0]{color:#888}.dashboard-pro.theme-dark .profit-calendar .month-summary[data-v-80b7f8d0]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-weekdays .weekday[data-v-80b7f8d0],.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-label[data-v-80b7f8d0]{color:#888}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell[data-v-80b7f8d0]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-80b7f8d0]{background:hsla(0,0%,100%,.02)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.profit[data-v-80b7f8d0]{background:linear-gradient(135deg,rgba(34,197,94,.15),rgba(34,197,94,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.loss[data-v-80b7f8d0]{background:linear-gradient(135deg,rgba(239,68,68,.15),rgba(239,68,68,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.zero[data-v-80b7f8d0]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-80b7f8d0]{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table{background:transparent;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table-thead>tr>th{background:#141414;color:#888;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table-tbody>tr>td{border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table-tbody>tr:hover>td{background:#252525}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table-placeholder{background:transparent}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-table-placeholder .ant-empty-description{color:#888}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-pagination .ant-pagination-item a{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:#3b82f6;border-color:#3b82f6}.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.dashboard-pro.theme-dark .pro-table[data-v-80b7f8d0] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro .kpi-grid[data-v-80b7f8d0]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.dashboard-pro .setup-guide-card[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;margin-bottom:20px;padding:18px 20px;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08));border:1px solid rgba(59,130,246,.16);border-radius:16px}.dashboard-pro .setup-guide-card .setup-guide-copy[data-v-80b7f8d0]{min-width:0}.dashboard-pro .setup-guide-card .setup-guide-title[data-v-80b7f8d0]{font-size:16px;font-weight:700;color:#1e293b}.dashboard-pro .setup-guide-card .setup-guide-desc[data-v-80b7f8d0]{margin-top:4px;color:#64748b;line-height:1.7}.dashboard-pro .setup-guide-card .setup-guide-path[data-v-80b7f8d0]{margin-top:6px;font-size:12px;color:#64748b}.dashboard-pro .setup-guide-card .setup-guide-actions[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .kpi-card[data-v-80b7f8d0]{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:20px;overflow:hidden;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.dashboard-pro .kpi-card[data-v-80b7f8d0]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 10px 40px rgba(0,0,0,.1);box-shadow:0 10px 40px rgba(0,0,0,.1)}.dashboard-pro .kpi-card.clickable[data-v-80b7f8d0]{cursor:pointer}.dashboard-pro .kpi-card.clickable .card-arrow[data-v-80b7f8d0]{position:absolute;right:16px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:.4;-webkit-transition:all .3s;transition:all .3s}.dashboard-pro .kpi-card.clickable:hover .card-arrow[data-v-80b7f8d0]{opacity:1;right:12px}.dashboard-pro .kpi-card .kpi-glow[data-v-80b7f8d0]{position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle,rgba(59,130,246,.15) 0,transparent 70%);pointer-events:none}.dashboard-pro .kpi-card .kpi-content[data-v-80b7f8d0]{position:relative;z-index:1}.dashboard-pro .kpi-card .kpi-header[data-v-80b7f8d0]{gap:8px;margin-bottom:12px}.dashboard-pro .kpi-card .kpi-header[data-v-80b7f8d0],.dashboard-pro .kpi-card .kpi-icon[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .kpi-card .kpi-icon[data-v-80b7f8d0]{width:32px;height:32px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;background:rgba(59,130,246,.1);color:#3b82f6;font-size:16px}.dashboard-pro .kpi-card .kpi-label[data-v-80b7f8d0]{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .kpi-card .kpi-value[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:2px}.dashboard-pro .kpi-card .kpi-value .currency[data-v-80b7f8d0]{font-size:18px;font-weight:500;color:#64748b}.dashboard-pro .kpi-card .kpi-value .amount[data-v-80b7f8d0]{font-size:28px;font-weight:700;color:#1e293b;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}.dashboard-pro .kpi-card .kpi-value .unit[data-v-80b7f8d0]{font-size:14px;font-weight:500;color:#64748b;margin-left:4px}.dashboard-pro .kpi-card .kpi-sub[data-v-80b7f8d0]{margin-top:8px;font-size:12px;color:#64748b}.dashboard-pro .kpi-card .kpi-sub .label[data-v-80b7f8d0]{margin:0 2px}.dashboard-pro .kpi-card .kpi-sub .divider[data-v-80b7f8d0]{margin:0 6px;opacity:.5}.dashboard-pro .kpi-card .kpi-sub .highlight[data-v-80b7f8d0]{font-weight:600;color:#3b82f6}.dashboard-pro .kpi-card.kpi-primary[data-v-80b7f8d0]{background:linear-gradient(135deg,#1e40af,#3b82f6 50%,#60a5fa);border:none}.dashboard-pro .kpi-card.kpi-primary .kpi-icon[data-v-80b7f8d0]{background:hsla(0,0%,100%,.2);color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-label[data-v-80b7f8d0]{color:hsla(0,0%,100%,.8)}.dashboard-pro .kpi-card.kpi-primary .kpi-value .amount[data-v-80b7f8d0],.dashboard-pro .kpi-card.kpi-primary .kpi-value .currency[data-v-80b7f8d0],.dashboard-pro .kpi-card.kpi-primary .kpi-value .unit[data-v-80b7f8d0]{color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-sub[data-v-80b7f8d0]{color:hsla(0,0%,100%,.7)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-80b7f8d0]{position:absolute;right:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:60px;height:60px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg[data-v-80b7f8d0]{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-bg[data-v-80b7f8d0]{fill:none;stroke:rgba(16,185,129,.15);stroke-width:3}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-progress[data-v-80b7f8d0]{fill:none;stroke:#10b981;stroke-width:3;stroke-linecap:round;-webkit-transition:stroke-dasharray .5s ease;transition:stroke-dasharray .5s ease}.dashboard-pro .kpi-card.kpi-win-rate .kpi-icon[data-v-80b7f8d0]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .kpi-card.kpi-profit-factor .kpi-icon[data-v-80b7f8d0]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .kpi-card.kpi-drawdown .kpi-icon[data-v-80b7f8d0]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .kpi-card.kpi-drawdown .kpi-value .amount[data-v-80b7f8d0]{color:#ef4444}.dashboard-pro .kpi-card.kpi-trades .kpi-icon[data-v-80b7f8d0]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .kpi-card.kpi-strategies .kpi-icon[data-v-80b7f8d0]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .chart-row[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .chart-row[data-v-80b7f8d0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .chart-panel[data-v-80b7f8d0]{background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .chart-panel.chart-main[data-v-80b7f8d0]{-webkit-box-flex:2;-ms-flex:2;flex:2}.dashboard-pro .chart-panel.chart-side[data-v-80b7f8d0]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:300px}.dashboard-pro .chart-panel.chart-half[data-v-80b7f8d0]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .chart-panel .panel-header[data-v-80b7f8d0]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .chart-panel .panel-header[data-v-80b7f8d0],.dashboard-pro .chart-panel .panel-title[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .chart-panel .panel-title[data-v-80b7f8d0]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .chart-panel .panel-title .anticon[data-v-80b7f8d0]{color:#3b82f6}.dashboard-pro .chart-panel .panel-legend[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b}.dashboard-pro .chart-panel .panel-legend .legend-item[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot[data-v-80b7f8d0]{width:10px;height:10px;border-radius:2px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.bar[data-v-80b7f8d0]{background:-webkit-gradient(linear,left top,left bottom,from(#34d399),to(#10b981));background:linear-gradient(180deg,#34d399,#10b981)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.line[data-v-80b7f8d0]{background:-webkit-gradient(linear,left top,right top,from(#3b82f6),to(#8b5cf6));background:linear-gradient(90deg,#3b82f6,#8b5cf6)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.loss[data-v-80b7f8d0]{background:#ef4444}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.profit[data-v-80b7f8d0]{background:#10b981}.dashboard-pro .chart-panel .panel-legend.calendar-legend[data-v-80b7f8d0]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.dashboard-pro .chart-panel .panel-legend.calendar-legend .legend-gradient[data-v-80b7f8d0]{width:80px;height:10px;border-radius:3px;background:-webkit-gradient(linear,left top,right top,from(#ef4444),color-stop(#fca5a5),color-stop(#f4f4f5),color-stop(#86efac),to(#22c55e));background:linear-gradient(90deg,#ef4444,#fca5a5,#f4f4f5,#86efac,#22c55e)}.dashboard-pro .chart-panel .panel-badge[data-v-80b7f8d0]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .chart-panel .chart-body[data-v-80b7f8d0]{height:320px;padding:16px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-80b7f8d0]{height:220px}.dashboard-pro .chart-panel .chart-body.calendar-chart[data-v-80b7f8d0]{height:280px}.dashboard-pro .chart-panel .calendar-nav[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.dashboard-pro .chart-panel .calendar-nav .current-month[data-v-80b7f8d0]{font-size:14px;font-weight:600;color:#1e293b;min-width:80px;text-align:center}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-80b7f8d0]{padding:0;height:auto;color:#64748b}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-80b7f8d0]:hover:not(:disabled){color:#3b82f6}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-80b7f8d0]:disabled{opacity:.3}.dashboard-pro .chart-panel .profit-calendar[data-v-80b7f8d0]{padding:12px 16px;overflow:hidden}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-80b7f8d0],.dashboard-pro .chart-panel .profit-calendar[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-80b7f8d0]{height:280px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#64748b}.dashboard-pro .chart-panel .profit-calendar .calendar-empty .anticon[data-v-80b7f8d0]{font-size:40px;margin-bottom:10px;opacity:.3}.dashboard-pro .chart-panel .profit-calendar .month-summary[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;margin-bottom:10px;padding:8px 12px;background:rgba(241,245,249,.5);border-radius:8px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-label[data-v-80b7f8d0]{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value[data-v-80b7f8d0]{font-size:15px;font-weight:700;font-family:JetBrains Mono,monospace}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.positive[data-v-80b7f8d0]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.negative[data-v-80b7f8d0]{color:#ef4444}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays[data-v-80b7f8d0]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays .weekday[data-v-80b7f8d0]{text-align:center;font-size:10px;font-weight:600;color:#64748b;padding:4px 0}.dashboard-pro .chart-panel .profit-calendar .calendar-grid[data-v-80b7f8d0]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell[data-v-80b7f8d0]{height:36px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;background:rgba(241,245,249,.5);border:1px solid transparent;-webkit-transition:all .2s ease;transition:all .2s ease;position:relative}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.empty[data-v-80b7f8d0]{background:transparent;border:none}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-80b7f8d0]{background:rgba(241,245,249,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-80b7f8d0]{background:linear-gradient(135deg,rgba(34,197,94,.12),rgba(34,197,94,.2));border-color:rgba(34,197,94,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-80b7f8d0]:hover{background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(34,197,94,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(34,197,94,.2);box-shadow:0 4px 12px rgba(34,197,94,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-80b7f8d0]{background:linear-gradient(135deg,rgba(239,68,68,.12),rgba(239,68,68,.2));border-color:rgba(239,68,68,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-80b7f8d0]:hover{background:linear-gradient(135deg,rgba(239,68,68,.2),rgba(239,68,68,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(239,68,68,.2);box-shadow:0 4px 12px rgba(239,68,68,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.zero[data-v-80b7f8d0]{background:hsla(240,5%,65%,.1);border-color:hsla(240,5%,65%,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-80b7f8d0]{font-size:11px;font-weight:600;color:#1e293b;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit[data-v-80b7f8d0]{font-size:9px;font-weight:600;font-family:JetBrains Mono,monospace;margin-top:1px;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.positive[data-v-80b7f8d0]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.negative[data-v-80b7f8d0]{color:#ef4444}.dashboard-pro .strategy-ranking[data-v-80b7f8d0]{padding:16px}.dashboard-pro .strategy-ranking .empty-state[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:40px;color:#64748b}.dashboard-pro .strategy-ranking .empty-state .anticon[data-v-80b7f8d0]{font-size:40px;margin-bottom:12px;opacity:.3}.dashboard-pro .strategy-ranking .ranking-grid[data-v-80b7f8d0]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.dashboard-pro .strategy-ranking .ranking-card[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:14px 16px;background:rgba(241,245,249,.5);border:1px solid #e2e8f0;border-radius:12px;position:relative;overflow:hidden}.dashboard-pro .strategy-ranking .ranking-card.rank-top[data-v-80b7f8d0]{border-color:transparent;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08))}.dashboard-pro .strategy-ranking .ranking-card .rank-badge[data-v-80b7f8d0]{width:28px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;font-size:12px;font-weight:700;background:#64748b;color:#fff;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-1[data-v-80b7f8d0]{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-2[data-v-80b7f8d0]{background:linear-gradient(135deg,#9ca3af,#6b7280)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-3[data-v-80b7f8d0]{background:linear-gradient(135deg,#cd7f32,#b87333)}.dashboard-pro .strategy-ranking .ranking-card .rank-info[data-v-80b7f8d0]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-name[data-v-80b7f8d0]{font-size:13px;font-weight:600;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat[data-v-80b7f8d0]{font-size:11px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat label[data-v-80b7f8d0]{color:#64748b;margin-right:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar[data-v-80b7f8d0]{position:absolute;bottom:0;left:0;right:0;height:3px;background:rgba(0,0,0,.05)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill[data-v-80b7f8d0]{height:100%;border-radius:0 3px 3px 0;-webkit-transition:width .5s ease;transition:width .5s ease}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.positive[data-v-80b7f8d0]{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.negative[data-v-80b7f8d0]{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.dashboard-pro .table-row[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-top:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .table-row[data-v-80b7f8d0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .table-panel[data-v-80b7f8d0]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .table-panel .panel-header[data-v-80b7f8d0]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .table-panel .panel-header[data-v-80b7f8d0],.dashboard-pro .table-panel .panel-title[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .table-panel .panel-title[data-v-80b7f8d0]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .table-panel .panel-title .anticon[data-v-80b7f8d0]{color:#3b82f6}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-80b7f8d0]{margin-left:8px;font-size:16px;cursor:pointer;color:#10b981;-webkit-transition:all .2s;transition:all .2s}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-80b7f8d0]:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.dashboard-pro .table-panel .panel-title .sound-toggle.sound-off[data-v-80b7f8d0]{color:#64748b}.dashboard-pro .table-panel .panel-badge[data-v-80b7f8d0]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .orders-panel[data-v-80b7f8d0]{margin-bottom:20px}.dashboard-pro .pro-table[data-v-80b7f8d0] .ant-table{font-size:13px}.dashboard-pro .pro-table[data-v-80b7f8d0] .ant-table-thead>tr>th{background:rgba(241,245,249,.8);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#64748b;border-bottom:1px solid #e2e8f0;padding:12px 16px}.dashboard-pro .pro-table[data-v-80b7f8d0] .ant-table-tbody>tr>td{padding:12px 16px;border-bottom:1px solid #e2e8f0}.dashboard-pro .pro-table[data-v-80b7f8d0] .ant-table-tbody>tr:hover>td{background:rgba(59,130,246,.04)}.dashboard-pro .pro-table[data-v-80b7f8d0] .ant-pagination{padding:12px 16px;margin:0}.dashboard-pro .symbol-cell .symbol-name[data-v-80b7f8d0]{font-weight:600;display:block}.dashboard-pro .symbol-cell .symbol-strategy[data-v-80b7f8d0]{font-size:11px;color:#64748b}.dashboard-pro .side-tag[data-v-80b7f8d0]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .side-tag.long[data-v-80b7f8d0]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .side-tag.short[data-v-80b7f8d0]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag[data-v-80b7f8d0]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .type-tag.long[data-v-80b7f8d0]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .type-tag.short[data-v-80b7f8d0]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag.close-long[data-v-80b7f8d0]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .type-tag.close-short[data-v-80b7f8d0]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .symbol-tag[data-v-80b7f8d0]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .exchange-tag[data-v-80b7f8d0],.dashboard-pro .symbol-tag[data-v-80b7f8d0]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .exchange-tag.binance[data-v-80b7f8d0]{background:rgba(240,185,11,.1);color:#f0b90b}.dashboard-pro .exchange-tag.okx[data-v-80b7f8d0]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .exchange-tag.bitget[data-v-80b7f8d0]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .exchange-tag.signal[data-v-80b7f8d0]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .market-type[data-v-80b7f8d0]{font-size:10px;color:#64748b;margin-top:2px}.dashboard-pro .status-tag[data-v-80b7f8d0]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .status-tag.pending[data-v-80b7f8d0]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .status-tag.processing[data-v-80b7f8d0]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .status-tag.completed[data-v-80b7f8d0]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .status-tag.failed[data-v-80b7f8d0]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .status-tag.cancelled[data-v-80b7f8d0]{background:rgba(100,116,139,.1);color:#64748b}.dashboard-pro .error-hint[data-v-80b7f8d0]{font-size:11px;color:#ef4444;margin-top:4px;cursor:pointer}.dashboard-pro .error-hint .anticon[data-v-80b7f8d0]{margin-right:4px}.dashboard-pro .notify-icons[data-v-80b7f8d0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.dashboard-pro .notify-icons .notify-icon[data-v-80b7f8d0]{color:#64748b;font-size:14px}.dashboard-pro .pnl-cell[data-v-80b7f8d0]{text-align:right}.dashboard-pro .pnl-cell .pnl-percent[data-v-80b7f8d0]{display:block;font-size:11px}.dashboard-pro .time-cell[data-v-80b7f8d0]{font-size:12px;color:#64748b}.dashboard-pro .sub-text[data-v-80b7f8d0]{font-size:11px;color:#64748b}.dashboard-pro .text-muted[data-v-80b7f8d0]{color:#64748b}.dashboard-pro .positive[data-v-80b7f8d0]{color:#10b981}.dashboard-pro .negative[data-v-80b7f8d0]{color:#ef4444}@media (max-width:768px){.dashboard-pro[data-v-80b7f8d0]{padding:12px}.dashboard-pro .setup-guide-card[data-v-80b7f8d0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:16px}.dashboard-pro .setup-guide-card .setup-guide-actions[data-v-80b7f8d0]{width:100%}.dashboard-pro .setup-guide-card .setup-guide-actions .ant-btn[data-v-80b7f8d0]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .kpi-grid[data-v-80b7f8d0]{grid-template-columns:repeat(2,1fr);gap:10px}.dashboard-pro .kpi-card[data-v-80b7f8d0]{padding:14px}.dashboard-pro .kpi-card .kpi-value .amount[data-v-80b7f8d0]{font-size:22px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-80b7f8d0]{width:48px;height:48px;right:8px}.dashboard-pro .chart-panel .chart-body[data-v-80b7f8d0]{height:260px;padding:12px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-80b7f8d0]{height:180px}.dashboard-pro .ranking-grid[data-v-80b7f8d0]{grid-template-columns:1fr}}.top-level-tabs[data-v-533cb131] .ant-tabs-bar{margin-bottom:16px;border-bottom:1px solid #e8e8e8}.top-level-tabs[data-v-533cb131] .ant-tabs-tab{font-size:15px;padding:12px 20px}.theme-dark .top-level-tabs[data-v-533cb131] .ant-tabs-bar{border-bottom-color:#303030}.theme-dark .top-level-tabs[data-v-533cb131] .ant-tabs-tab{color:hsla(0,0%,100%,.65)}.theme-dark .top-level-tabs[data-v-533cb131] .ant-tabs-tab-active{color:#177ddc}.theme-dark .top-level-tabs[data-v-533cb131] .ant-tabs-ink-bar{background:#177ddc}.assistant-guide-bar[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;padding:16px 18px;margin-bottom:16px;border:1px solid rgba(24,144,255,.14);border-radius:16px;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06))}.assistant-guide-bar .assistant-guide-copy[data-v-533cb131]{min-width:0;-webkit-box-flex:1;-ms-flex:1 1 240px;flex:1 1 240px}.assistant-guide-bar .assistant-guide-eyebrow[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 10px;margin-bottom:8px;border-radius:999px;background:rgba(24,144,255,.12);color:#1677ff;font-size:12px;font-weight:600}.assistant-guide-bar .assistant-guide-title[data-v-533cb131]{font-size:16px;font-weight:700;color:#1f2937}.assistant-guide-bar .assistant-guide-desc[data-v-533cb131]{margin-top:4px;color:#475569;line-height:1.6}.assistant-guide-bar .assistant-guide-steps[data-v-533cb131]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;-webkit-box-flex:1;-ms-flex:1 1 520px;flex:1 1 520px}.assistant-guide-bar .assistant-step-card[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;min-height:92px;padding:12px;border-radius:14px;background:hsla(0,0%,100%,.66);border:1px solid rgba(148,163,184,.16);-webkit-box-shadow:0 4px 12px rgba(15,23,42,.04);box-shadow:0 4px 12px rgba(15,23,42,.04)}.assistant-guide-bar .assistant-step-index[data-v-533cb131]{width:28px;height:28px;border-radius:999px;background:linear-gradient(135deg,#1677ff,#6d28d9);color:#fff;font-size:13px;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.assistant-guide-bar .assistant-step-body[data-v-533cb131]{min-width:0}.assistant-guide-bar .assistant-step-title[data-v-533cb131]{font-size:13px;font-weight:700;color:#1f2937}.assistant-guide-bar .assistant-step-desc[data-v-533cb131]{margin-top:4px;font-size:12px;line-height:1.6;color:#64748b}.assistant-guide-bar .assistant-guide-actions[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-ms-flex-negative:0;flex-shrink:0}.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-533cb131]{min-width:36px;width:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-color:rgba(148,163,184,.28);color:#64748b;background:hsla(0,0%,100%,.72)}.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-533cb131]:focus,.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-533cb131]:hover{color:#1677ff;border-color:rgba(24,144,255,.35);background:#fff}.strategy-empty-state[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:10px;padding:28px 16px 32px;text-align:center}.strategy-empty-state .strategy-empty-desc[data-v-533cb131]{max-width:420px;color:#475569;line-height:1.7}.strategy-empty-state .strategy-empty-path[data-v-533cb131]{font-size:12px;color:#64748b}.trading-assistant[data-v-533cb131]{padding:0;height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.trading-assistant .strategy-layout[data-v-533cb131]{height:calc(100vh - 120px);-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}@media (max-width:768px){.trading-assistant[data-v-533cb131]{min-height:auto;margin:-24px}.trading-assistant .assistant-guide-bar[data-v-533cb131]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0 12px 12px;padding:14px}.trading-assistant .assistant-guide-bar .assistant-guide-steps[data-v-533cb131]{grid-template-columns:1fr}.trading-assistant .assistant-guide-bar .assistant-guide-actions[data-v-533cb131]{width:100%}.trading-assistant .assistant-guide-bar .assistant-guide-actions .ant-btn[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-layout[data-v-533cb131]{height:auto;min-height:calc(100vh - 120px)}.trading-assistant .strategy-list-col[data-v-533cb131]{margin-bottom:12px;height:auto;max-height:50vh}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131]{height:auto;max-height:50vh}.trading-assistant .strategy-list-col .strategy-list-card .card-title[data-v-533cb131]{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;padding:12px 16px}.trading-assistant .strategy-list-col .strategy-list-card .card-title span[data-v-533cb131]{font-size:14px;font-weight:600}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn[data-v-533cb131]{font-size:12px;padding:0 10px;height:28px;line-height:28px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-body{max-height:calc(50vh - 60px);overflow-y:auto;padding:8px;-webkit-overflow-scrolling:touch}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-head{padding:0;min-height:48px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131]{padding:12px 8px;margin-bottom:4px;border-radius:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta{width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-action{margin-left:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-533cb131]{width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper[data-v-533cb131]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-bottom:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag[data-v-533cb131],.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag[data-v-533cb131]{font-size:10px;padding:2px 6px;line-height:1.4;margin:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag .anticon[data-v-533cb131]{font-size:10px;margin-right:2px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-533cb131]{font-size:14px;font-weight:600;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:4px;font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .info-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:3px;-ms-flex-negative:0;flex-shrink:0;font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .info-item .anticon{font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-label{font-size:10px;padding:2px 6px;line-height:1.4}.trading-assistant .strategy-detail-col[data-v-533cb131]{height:auto;min-height:calc(50vh - 60px)}.trading-assistant .strategy-detail-col .strategy-detail-panel[data-v-533cb131]{gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131] .ant-card-body{padding:16px 12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131] .ant-card-head{padding:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header[data-v-533cb131]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left[data-v-533cb131]{width:100%}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title[data-v-533cb131]{font-size:18px;font-weight:600;margin-bottom:12px;line-height:1.4;word-break:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-533cb131]{display:grid;grid-template-columns:1fr 1fr;gap:8px;-webkit-box-align:start;-ms-flex-align:start;align-items:start}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-533cb131] .ant-tag{grid-column:-1;justify-self:start;margin:0;font-size:11px;padding:4px 8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:4px;font-size:12px;line-height:1.5;word-break:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item .anticon[data-v-533cb131]{font-size:12px;-ms-flex-negative:0;flex-shrink:0;margin-top:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item>span[data-v-533cb131]{word-break:break-word;line-height:1.5;-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item span[data-v-533cb131]:not(.anticon){display:inline;word-break:break-word;overflow-wrap:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right[data-v-533cb131]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:100px;font-size:13px;padding:0 12px;height:36px;line-height:36px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn .anticon[data-v-533cb131]{margin-right:4px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body{padding:12px 8px;overflow-x:hidden}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-head{padding:0 8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav{padding:0 4px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-tab{font-size:13px;padding:8px 10px;margin:0 2px;white-space:nowrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-content{padding-top:12px;overflow-x:hidden}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-content .ant-tabs-tabpane{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:768px) and (max-width:480px){.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-533cb131]{grid-template-columns:1fr}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-533cb131] .ant-tag{grid-column:1}}@media (max-width:480px){.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131],.trading-assistant .strategy-list-col[data-v-533cb131]{max-height:45vh}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-body{max-height:calc(45vh - 60px)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-533cb131]{grid-template-columns:1fr;gap:6px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item[data-v-533cb131]{font-size:11px;line-height:1.6}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn[data-v-533cb131]{width:100%;-webkit-box-flex:0;-ms-flex:none;flex:none}}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131],.trading-assistant .strategy-list-col[data-v-533cb131]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131]{border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);border:none;overflow:hidden;-webkit-transition:-webkit-box-shadow .3s ease;transition:-webkit-box-shadow .3s ease;transition:box-shadow .3s ease;transition:box-shadow .3s ease,-webkit-box-shadow .3s ease}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-list-col .strategy-list-card .card-title[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.trading-assistant .strategy-list-col .strategy-list-card .card-title span[data-v-533cb131]{font-size:16px;font-weight:700;background:linear-gradient(135deg,#1e3a5f,#2d5a87);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-533cb131]{border-radius:8px;background:linear-gradient(135deg,#1890ff,#40a9ff);border:none;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35);-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-533cb131]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 0 12px;border-bottom:1px solid #f0f0f0;margin-bottom:12px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch .group-mode-label[data-v-533cb131]{font-size:13px;color:#8c8c8c;font-weight:500}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-533cb131] .ant-radio-group .ant-radio-button-wrapper{font-size:12px;padding:0 10px;height:26px;line-height:24px;border-radius:4px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-533cb131] .ant-radio-group .ant-radio-button-wrapper:first-child{border-radius:4px 0 0 4px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-533cb131] .ant-radio-group .ant-radio-button-wrapper:last-child{border-radius:0 4px 4px 0}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-533cb131] .ant-radio-group .ant-radio-button-wrapper .anticon{margin-right:4px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;background:#fff;padding:12px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-head{background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fafbfc));background:linear-gradient(180deg,#fff,#fafbfc);border-bottom:1px solid #f0f0f0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group[data-v-533cb131]{margin-bottom:12px;background:#fff;border-radius:12px;border:1px solid #e8ecf1;overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 12px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header[data-v-533cb131]:hover{background:linear-gradient(135deg,#e8f4fd,#e3f0fc)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .collapse-icon[data-v-533cb131]{font-size:12px;color:#8c8c8c;-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-533cb131]{font-size:16px;color:#1890ff}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-name[data-v-533cb131]{font-weight:600;font-size:14px;color:#1e3a5f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status[data-v-533cb131]{font-size:11px;padding:2px 8px;border-radius:10px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status.running[data-v-533cb131]{background:rgba(14,203,129,.1);color:#0ecb81}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status.stopped[data-v-533cb131]{background:rgba(246,70,93,.1);color:#f6465d}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content[data-v-533cb131]{padding:6px 8px 10px 6px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:10px 12px;margin-bottom:6px;margin-left:4px;border:1px solid #eef2f6;border-left:3px solid #dbe4ee;background:#fbfcfe;border-radius:8px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,.04);box-shadow:0 1px 2px rgba(15,23,42,.04)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-533cb131]:last-child{margin-bottom:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-533cb131]:hover{background:#f0f7ff;border-left-color:#1890ff;border-color:rgba(24,144,255,.22);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.08);box-shadow:0 2px 8px rgba(24,144,255,.08);-webkit-transform:none;transform:none}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-533cb131]{background:linear-gradient(135deg,#e8f4ff,#f0f9ff);border-color:rgba(24,144,255,.35);border-left-color:#1890ff;border-left-width:3px;-webkit-box-shadow:0 2px 12px rgba(24,144,255,.12);box-shadow:0 2px 12px rgba(24,144,255,.12)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-content[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header[data-v-533cb131]{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-actions[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:center;align-self:center;padding-top:0;margin-left:4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-actions[data-v-533cb131] .ant-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;font-size:12px;color:#8c8c8c}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .info-item[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .info-item .anticon[data-v-533cb131]{font-size:12px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:3px 10px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-533cb131]:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-running[data-v-533cb131]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-stopped[data-v-533cb131]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-error[data-v-533cb131]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-item-header[data-v-533cb131]{margin-bottom:2px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-name-wrapper[data-v-533cb131]{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-name[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-item-info[data-v-533cb131]{gap:10px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;cursor:pointer;padding:14px 16px;border-radius:12px;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;margin-bottom:8px;background:#fafbfc;border:1px solid transparent}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-content[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-actions[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:center;align-self:center;margin-left:4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-actions[data-v-533cb131] .ant-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;font-size:12px;color:#8c8c8c}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .info-item[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .info-item .anticon[data-v-533cb131]{font-size:12px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-label[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:3px 10px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-label[data-v-533cb131]:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-running[data-v-533cb131]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-stopped[data-v-533cb131]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-error[data-v-533cb131]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131]:hover{background:linear-gradient(135deg,#f0f7ff,#f5f9ff);border-color:rgba(24,144,255,.2);-webkit-transform:none;transform:none;-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-533cb131]{background:linear-gradient(135deg,#e6f4ff,#f0f9ff);border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}@media (max-width:768px){.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131]{padding:12px 8px;margin:0 4px 4px 4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-533cb131]{border-left-width:2px}}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-533cb131]{font-weight:600;font-size:14px;-ms-flex-negative:0;flex-shrink:0;color:#1e3a5f;-webkit-transition:color .2s ease;transition:color .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:11px;line-height:1.5;padding:2px 8px;border-radius:6px;background:linear-gradient(135deg,rgba(102,126,234,.1),rgba(118,75,162,.1));border:1px solid rgba(102,126,234,.2);color:#667eea;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag .anticon[data-v-533cb131]{font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:10px;line-height:1.5;margin-left:4px;padding:2px 8px;border-radius:6px;background:linear-gradient(135deg,rgba(156,39,176,.1),rgba(103,58,183,.1));border:1px solid rgba(156,39,176,.2)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag .anticon[data-v-533cb131]{font-size:10px;margin-right:3px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped[data-v-533cb131]{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-line-pack:start;align-content:flex-start;row-gap:6px;-webkit-column-gap:6px;-moz-column-gap:6px;column-gap:6px;width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped[data-v-533cb131] .ant-tag{margin-right:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped .status-label[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-533cb131] .status-stopped{color:#f6465d!important;border-color:#f6465d!important}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description{max-width:calc(100% - 20px);overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;gap:12px;margin-top:8px;font-size:12px;color:var(--text-color-secondary,#8c8c8c);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-width:100%;overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-label:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-running{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3);-webkit-box-shadow:0 2px 8px rgba(14,203,129,.2);box-shadow:0 2px 8px rgba(14,203,129,.2)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-running:before{-webkit-animation:statusPulse-533cb131 2s infinite;animation:statusPulse-533cb131 2s infinite;-webkit-box-shadow:0 0 8px #0ecb81;box-shadow:0 0 8px #0ecb81}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-stopped{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .status-error{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}@-webkit-keyframes statusPulse-533cb131{0%,to{opacity:1}50%{opacity:.5}}@keyframes statusPulse-533cb131{0%,to{opacity:1}50%{opacity:.5}}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .info-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-ms-flex-negative:1;flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info .info-item.strategy-name-text{font-weight:500;color:#1e3a5f;max-width:100%;white-space:normal;line-height:1.35}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131] .ant-list-item-meta-description .strategy-item-info/deep/.ant-tag{margin-right:0;font-size:11px;line-height:18px;padding:0 6px}.trading-assistant .strategy-detail-col[data-v-533cb131]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.trading-assistant .strategy-detail-col .strategy-empty-detail[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:320px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:24px 16px}.trading-assistant .strategy-detail-col .strategy-empty-detail-card[data-v-533cb131]{max-width:420px;width:100%;text-align:center;padding:40px 32px 36px;border-radius:16px;background:linear-gradient(165deg,#fff,#f8fafc 55%,#f1f5f9);border:1px solid #e8ecf1;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.trading-assistant .strategy-detail-col .strategy-empty-detail-icon[data-v-533cb131]{width:72px;height:72px;margin:0 auto 20px;border-radius:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(64,169,255,.08));color:#1890ff;font-size:32px}.trading-assistant .strategy-detail-col .strategy-empty-detail-title[data-v-533cb131]{margin:0 0 12px;font-size:18px;font-weight:700;color:#1e3a5f;letter-spacing:.02em}.trading-assistant .strategy-detail-col .strategy-empty-detail-hint[data-v-533cb131]{margin:0 0 24px;font-size:14px;line-height:1.65;color:#64748b}.trading-assistant .strategy-detail-col .strategy-empty-detail-actions[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px;min-height:100%}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#fff,#f8fafc);border:none;border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131] .ant-card-head{background:transparent;border-bottom:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-533cb131] .ant-card-body{background:transparent;padding:20px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:24px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .strategy-title[data-v-533cb131]{font-size:20px;font-weight:700;margin:0;background:linear-gradient(135deg,#1e3a5f,#2d5a87);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 14px;border-radius:20px;font-size:13px;font-weight:600;-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge .status-dot[data-v-533cb131]{width:8px;height:8px;border-radius:50%;-webkit-animation:pulse-533cb131 2s infinite;animation:pulse-533cb131 2s infinite}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-running[data-v-533cb131]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-running .status-dot[data-v-533cb131]{background:#0ecb81;-webkit-box-shadow:0 0 12px #0ecb81;box-shadow:0 0 12px #0ecb81}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-stopped[data-v-533cb131]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-stopped .status-dot[data-v-533cb131]{background:#f6465d;-webkit-animation:none;animation:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-error[data-v-533cb131]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border:1px solid rgba(255,77,79,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-error .status-dot[data-v-533cb131]{background:#ff4d4f;-webkit-animation:none;animation:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px;margin-bottom:14px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:10px 14px;background:#fff;border-radius:8px;border:1px solid #f0f0f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card[data-v-533cb131]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon[data-v-533cb131]{width:36px;height:36px;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:16px;-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.investment[data-v-533cb131]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.equity[data-v-533cb131]{background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.pnl[data-v-533cb131]{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-label[data-v-533cb131]{font-size:11px;color:#8c8c8c;margin-bottom:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-value[data-v-533cb131]{font-size:15px;font-weight:700;color:#1e3a5f;line-height:1.2}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-value .pnl-percent[data-v-533cb131]{font-size:12px;font-weight:500;opacity:.8}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card.pnl-card.profit .stat-content .stat-value[data-v-533cb131]{color:#0ecb81}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card.pnl-card.loss .stat-content .stat-value[data-v-533cb131]{color:#f6465d}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 10px;background:#f5f7fa;border-radius:14px;font-size:12px;color:#5a6872;border:1px solid #e8ecf1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-533cb131]{font-size:12px;color:#1890ff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right[data-v-533cb131]{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn[data-v-533cb131]{min-width:120px;height:38px;border-radius:8px;font-size:14px;font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn .anticon[data-v-533cb131]{font-size:16px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.start-btn[data-v-533cb131]{background:linear-gradient(135deg,#0ecb81,#26d87d);border:none;-webkit-box-shadow:0 2px 8px rgba(14,203,129,.3);box-shadow:0 2px 8px rgba(14,203,129,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.start-btn[data-v-533cb131]:hover{-webkit-box-shadow:0 4px 12px rgba(14,203,129,.4);box-shadow:0 4px 12px rgba(14,203,129,.4)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.stop-btn[data-v-533cb131]{background:linear-gradient(135deg,#f6465d,#ff6b7a);border:none;-webkit-box-shadow:0 2px 8px rgba(246,70,93,.3);box-shadow:0 2px 8px rgba(246,70,93,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.stop-btn[data-v-533cb131]:hover{-webkit-box-shadow:0 4px 12px rgba(246,70,93,.4);box-shadow:0 4px 12px rgba(246,70,93,.4)}@-webkit-keyframes pulse-533cb131{0%,to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.6;-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes pulse-533cb131{0%,to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.6;-webkit-transform:scale(1.1);transform:scale(1.1)}}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fff;border:none;border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);-webkit-transition:all .3s ease;transition:all .3s ease;min-height:400px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-head{background:-webkit-gradient(linear,left top,left bottom,from(#fafbfc),to(#fff));background:linear-gradient(180deg,#fafbfc,#fff);border-bottom:1px solid #f0f0f0;-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body{padding:16px;background:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body,.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs .ant-tabs-bar{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs .ant-tabs-tabpane .strategy-tab-pane-inner{min-height:304px;padding-top:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs .ant-tabs-tabpane .position-records,.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-533cb131] .ant-card-body .ant-tabs .ant-tabs-tabpane .trading-records{width:100%}.trading-assistant.theme-dark[data-v-533cb131]{background:#141414;color:var(--dark-text-color,#fff)}.trading-assistant.theme-dark .creation-mode-toggle[data-v-533cb131]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}.trading-assistant.theme-dark .creation-mode-toggle .mode-hint[data-v-533cb131]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .card-title span[data-v-533cb131]{background:linear-gradient(135deg,#e0e6ed,#c5ccd6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-head{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-head .ant-card-head-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-empty-description{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-list .ant-list-item{border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-list .ant-list-item .ant-list-item-meta-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-533cb131] .ant-list .ant-list-item .ant-list-item-meta-description{color:#868993}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-533cb131]{border-bottom-color:hsla(0,0%,100%,.08)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch .group-mode-label[data-v-533cb131]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-533cb131] .ant-radio-button-wrapper{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.65)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-533cb131] .ant-radio-button-wrapper:hover{color:#69c0ff}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-533cb131] .ant-radio-button-wrapper-checked{background:rgba(24,144,255,.25)!important;border-color:#1890ff!important;color:#fff!important}.trading-assistant.theme-dark .strategy-list-col .strategy-group[data-v-533cb131]{background:rgba(0,0,0,.18);border-color:hsla(0,0%,100%,.08)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header[data-v-533cb131]{background:hsla(0,0%,100%,.04)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header[data-v-533cb131]:hover{background:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header .group-name[data-v-533cb131]{color:hsla(0,0%,100%,.88)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header .collapse-icon[data-v-533cb131]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item[data-v-533cb131]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08);border-left-color:hsla(0,0%,100%,.12)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item[data-v-533cb131]:hover{background:hsla(0,0%,100%,.05);border-color:hsla(0,0%,100%,.12);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item.active[data-v-533cb131]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.28);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info[data-v-533cb131]{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .info-item[data-v-533cb131]{color:hsla(0,0%,100%,.55)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-533cb131]{background:hsla(0,0%,100%,.06);color:hsla(0,0%,100%,.45);border-color:hsla(0,0%,100%,.1)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-running[data-v-533cb131]{background:rgba(14,203,129,.12);color:#52c41a;border-color:rgba(14,203,129,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-stopped[data-v-533cb131]{background:rgba(246,70,93,.12);color:#f6465d;border-color:rgba(246,70,93,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-error[data-v-533cb131]{background:rgba(255,77,79,.12);color:#ff4d4f;border-color:rgba(255,77,79,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-name-wrapper .info-item[data-v-533cb131],.trading-assistant.theme-dark .strategy-list-col .strategy-name-wrapper .strategy-name-text[data-v-533cb131]{color:hsla(0,0%,100%,.88)!important}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-533cb131]{background:hsla(0,0%,100%,.02);border:1px solid hsla(0,0%,100%,.04)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-533cb131]:hover{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);-webkit-transform:none;transform:none}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-533cb131]{background:rgba(24,144,255,.1);border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-name[data-v-533cb131]{color:#e0e6ed}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-info[data-v-533cb131]{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .exchange-tag[data-v-533cb131]{background:rgba(102,126,234,.15);border-color:rgba(102,126,234,.3);color:#8da2f0}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .strategy-type-tag[data-v-533cb131]{background:rgba(177,130,255,.15);border-color:rgba(177,130,255,.3);color:#b182ff}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .strategy-name[data-v-533cb131]{color:hsla(0,0%,100%,.88)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-533cb131]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-533cb131] .ant-card-head{background:transparent;border-bottom:none}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-533cb131] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-title-row .strategy-title[data-v-533cb131]{background:none;color:#e0e6ed;-webkit-text-fill-color:initial}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card[data-v-533cb131]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card[data-v-533cb131]:hover{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.1)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card .stat-content .stat-label[data-v-533cb131]{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card .stat-content .stat-value[data-v-533cb131]{color:#e0e6ed}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-533cb131]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.08);color:#a0a8b3}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-533cb131]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-card-head{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-card-head .ant-card-head-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-tab{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-tab:hover{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-content{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-empty-description{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-card[data-v-533cb131]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.08);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.35);box-shadow:0 8px 32px rgba(0,0,0,.35)}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-icon[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.22),rgba(64,169,255,.1));color:#69c0ff}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-title[data-v-533cb131]{color:hsla(0,0%,100%,.92)}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-hint[data-v-533cb131]{color:hsla(0,0%,100%,.55)}.theme-dark .assistant-guide-bar[data-v-533cb131]{border-color:rgba(23,125,220,.28);background:linear-gradient(135deg,rgba(23,125,220,.14),rgba(114,46,209,.12))}.theme-dark .assistant-guide-bar .assistant-guide-eyebrow[data-v-533cb131]{background:rgba(23,125,220,.2);color:#69c0ff}.theme-dark .assistant-guide-bar .assistant-guide-title[data-v-533cb131]{color:hsla(0,0%,100%,.92)}.theme-dark .assistant-guide-bar .assistant-guide-desc[data-v-533cb131]{color:hsla(0,0%,100%,.72)}.theme-dark .assistant-guide-bar .assistant-step-card[data-v-533cb131]{background:rgba(30,30,30,.6);border-color:hsla(0,0%,100%,.08)}.theme-dark .assistant-guide-bar .assistant-step-title[data-v-533cb131]{color:hsla(0,0%,100%,.9)}.theme-dark .assistant-guide-bar .assistant-step-desc[data-v-533cb131]{color:hsla(0,0%,100%,.58)}.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-533cb131]{background:rgba(30,30,30,.5);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.72)}.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-533cb131]:focus,.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-533cb131]:hover{background:rgba(50,50,50,.7);border-color:rgba(105,192,255,.45);color:#91d5ff}.theme-dark .strategy-empty-state .strategy-empty-desc[data-v-533cb131]{color:hsla(0,0%,100%,.72)}.theme-dark .strategy-empty-state .strategy-empty-path[data-v-533cb131]{color:hsla(0,0%,100%,.48)}.strategy-params-collapse[data-v-533cb131]{background:#fafafa;border-radius:10px;overflow:hidden}.strategy-params-collapse[data-v-533cb131] .ant-collapse-item{border-bottom-color:#f0f0f0}.strategy-params-collapse[data-v-533cb131] .ant-collapse-header{font-weight:500;font-size:13px}.strategy-params-collapse[data-v-533cb131] .ant-collapse-content-box{padding:12px 16px}.strategy-params-collapse[data-v-533cb131] .ant-input-number{width:100%}.ai-filter-box[data-v-533cb131]{margin-top:12px;padding:14px 14px 12px;border:1px solid #e8e8e8;border-radius:10px;background:-webkit-gradient(linear,left top,left bottom,from(#fafcff),to(#fff));background:linear-gradient(180deg,#fafcff,#fff)}.ai-filter-header[data-v-533cb131]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px}.ai-filter-header[data-v-533cb131],.ai-filter-title[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ai-filter-title[data-v-533cb131]{gap:8px;font-weight:600;color:#262626}.ai-filter-title .anticon[data-v-533cb131]{color:#1890ff}.ai-filter-hint[data-v-533cb131]{margin-top:6px;font-size:12px;line-height:1.5;color:#8c8c8c}.symbol-option[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-name[data-v-533cb131]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-name-extra[data-v-533cb131]{font-size:12px;color:#999;margin-left:4px}.creation-mode-toggle[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;margin-bottom:16px;padding:14px 16px;background:rgba(24,144,255,.04);border-radius:8px;border:1px solid rgba(24,144,255,.12)}.creation-mode-toggle .mode-meta[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px}.creation-mode-toggle .mode-title[data-v-533cb131]{font-size:14px;font-weight:600;color:#262626}.creation-mode-toggle .mode-hint[data-v-533cb131]{color:rgba(0,0,0,.45);font-size:12px}@media (max-width:768px){.creation-mode-toggle[data-v-533cb131]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}}.section-block-title[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px;margin-bottom:16px;font-size:14px;font-weight:600;color:#262626}.section-block-desc[data-v-533cb131]{font-size:12px;font-weight:400;color:#8c8c8c}.simple-mode-hero[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding:14px 16px;margin-bottom:16px;border-radius:10px;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06));border:1px solid rgba(24,144,255,.14)}.simple-mode-hero-main[data-v-533cb131]{min-width:0}.simple-mode-kicker[data-v-533cb131]{font-size:12px;font-weight:600;color:#1890ff;margin-bottom:4px}.simple-mode-hero-desc[data-v-533cb131]{font-size:12px;line-height:1.6;color:#595959}.simple-mode-badges[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}.advanced-settings-shell[data-v-533cb131],.selected-indicator-card[data-v-533cb131],.simple-essentials-card[data-v-533cb131]{padding:20px;margin-bottom:18px;border-radius:12px;background:#fafcff;border:1px solid rgba(24,144,255,.12);-webkit-box-shadow:0 8px 24px rgba(15,23,42,.04);box-shadow:0 8px 24px rgba(15,23,42,.04)}.required-label[data-v-533cb131]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.required-star[data-v-533cb131]{color:#f5222d;margin-right:4px}.compact-form-item[data-v-533cb131]{margin-bottom:18px}.compact-grid-row[data-v-533cb131]{margin-bottom:4px}.execution-step-layout[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px}.execution-step-hero[data-v-533cb131]{padding:16px 18px;border-radius:12px;background:linear-gradient(135deg,rgba(82,196,26,.08),rgba(24,144,255,.08));border:1px solid rgba(24,144,255,.14)}.execution-step-hero-desc[data-v-533cb131]{font-size:12px;line-height:1.7;color:#595959}.execution-section-card[data-v-533cb131]{padding:18px 20px;border-radius:12px;background:#fafcff;border:1px solid rgba(24,144,255,.12);-webkit-box-shadow:0 8px 24px rgba(15,23,42,.04);box-shadow:0 8px 24px rgba(15,23,42,.04)}.section-inline-alert[data-v-533cb131]{margin-top:4px}.notify-channel-grid[data-v-533cb131]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px}.execution-warn-text[data-v-533cb131]{color:#ff9800}.execution-mode-cards[data-v-533cb131]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.execution-mode-card[data-v-533cb131]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:14px;min-height:110px;padding:16px;border-radius:12px;border:1px solid rgba(24,144,255,.12);background:#fff;cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease}.execution-mode-card[data-v-533cb131]:hover{border-color:rgba(24,144,255,.35);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.08);box-shadow:0 8px 24px rgba(24,144,255,.08)}.execution-mode-card.active[data-v-533cb131]{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.03));-webkit-box-shadow:0 10px 28px rgba(24,144,255,.12);box-shadow:0 10px 28px rgba(24,144,255,.12)}.execution-mode-card.disabled[data-v-533cb131]{cursor:not-allowed;opacity:.68;background:#fafafa}.execution-mode-card.disabled[data-v-533cb131]:hover{border-color:rgba(24,144,255,.12);-webkit-box-shadow:none;box-shadow:none}.execution-mode-card-icon[data-v-533cb131]{-webkit-box-flex:0;-ms-flex:0 0 42px;flex:0 0 42px;width:42px;height:42px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:12px;font-size:18px}.execution-mode-card-icon.signal[data-v-533cb131]{color:#1890ff;background:rgba(24,144,255,.1)}.execution-mode-card-icon.live[data-v-533cb131]{color:#fa8c16;background:rgba(250,140,22,.12)}.execution-mode-card-body[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.execution-mode-card-title[data-v-533cb131]{font-size:14px;font-weight:600;color:#262626;margin-bottom:6px}.execution-mode-card-desc[data-v-533cb131]{font-size:12px;line-height:1.6;color:#8c8c8c}.execution-mode-card-check[data-v-533cb131]{position:absolute;top:12px;right:12px;color:#1890ff;font-size:18px}.steps-container[data-v-533cb131]{margin-bottom:24px}@media (max-width:768px){.steps-container[data-v-533cb131]{margin-bottom:16px}.steps-container[data-v-533cb131] .ant-steps-item-title{font-size:12px}.steps-container[data-v-533cb131] .ant-steps-item-icon{width:24px;height:24px;line-height:24px;font-size:12px}}.form-container[data-v-533cb131]{min-height:400px;padding:24px 0}.form-container .step-content[data-v-533cb131]{-webkit-animation:fadeIn-533cb131 .3s;animation:fadeIn-533cb131 .3s}.form-container[data-v-533cb131] .ant-form-item{margin-bottom:20px}@media (max-width:768px){.form-container[data-v-533cb131]{min-height:300px;padding:16px 0}.form-container .simple-mode-hero[data-v-533cb131]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.form-container .simple-mode-badges[data-v-533cb131]{width:100%}.form-container .notify-channel-grid[data-v-533cb131]{grid-template-columns:repeat(2,minmax(0,1fr))}.form-container .execution-mode-cards[data-v-533cb131]{grid-template-columns:1fr}.form-container .execution-section-card[data-v-533cb131],.form-container .execution-step-hero[data-v-533cb131]{padding:16px}.form-container[data-v-533cb131] .ant-form-item-label{padding-bottom:4px}.form-container[data-v-533cb131] .ant-form-item-label label{font-size:13px}.form-container[data-v-533cb131] .ant-input,.form-container[data-v-533cb131] .ant-input-number,.form-container[data-v-533cb131] .ant-select{font-size:14px}.form-container[data-v-533cb131] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.form-container[data-v-533cb131] .ant-radio-group .ant-radio-wrapper{font-size:13px}}@media (max-width:480px){.form-container[data-v-533cb131]{min-height:250px;padding:12px 0}.form-container[data-v-533cb131] .ant-form-item-label label{font-size:12px}.form-container[data-v-533cb131] .ant-input,.form-container[data-v-533cb131] .ant-input-number,.form-container[data-v-533cb131] .ant-select{font-size:13px}}.strategy-type-selector[data-v-533cb131]{padding:16px 0}.strategy-type-selector .market-category-selector[data-v-533cb131]{margin-bottom:16px}.strategy-type-selector .market-category-selector .selector-label[data-v-533cb131]{font-weight:600;margin-bottom:8px;color:#262626}.strategy-type-selector .market-category-selector[data-v-533cb131] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}.strategy-type-selector .strategy-type-card[data-v-533cb131]{cursor:pointer;-webkit-transition:all .3s;transition:all .3s;height:100%;min-height:180px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.strategy-type-selector .strategy-type-card[data-v-533cb131]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.strategy-type-selector .strategy-type-card.selected[data-v-533cb131]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}.strategy-type-selector .strategy-type-card .strategy-type-content[data-v-533cb131]{text-align:center;padding:16px}.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-533cb131]{font-size:48px;color:#1890ff;margin-bottom:16px}.strategy-type-selector .strategy-type-card .strategy-type-content h3[data-v-533cb131]{font-size:18px;font-weight:600;margin-bottom:8px;color:#1f1f1f}.strategy-type-selector .strategy-type-card .strategy-type-content p[data-v-533cb131]{font-size:14px;color:#8c8c8c;margin:0;line-height:1.6}.indicator-option[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:12px}.indicator-option .indicator-option-main[data-v-533cb131]{-webkit-box-flex:1;-ms-flex:1;flex:1}.indicator-option .indicator-name[data-v-533cb131]{display:block;color:#262626;font-weight:600}.indicator-option-desc[data-v-533cb131]{display:block;margin-top:2px;color:#8c8c8c;font-size:12px;line-height:1.5}.selected-indicator-header[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin-bottom:8px}.selected-indicator-name[data-v-533cb131]{font-weight:600;color:#262626}.indicator-description[data-v-533cb131]{border-radius:4px;color:var(--text-color,#666);font-size:14px;line-height:1.6}.theme-dark .advanced-settings-shell[data-v-533cb131],.theme-dark .creation-mode-toggle[data-v-533cb131],.theme-dark .selected-indicator-card[data-v-533cb131],.theme-dark .simple-essentials-card[data-v-533cb131]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1)}.theme-dark .indicator-option .indicator-name[data-v-533cb131],.theme-dark .mode-title[data-v-533cb131],.theme-dark .section-block-title[data-v-533cb131],.theme-dark .selected-indicator-name[data-v-533cb131]{color:hsla(0,0%,100%,.9)}.theme-dark .indicator-option-desc[data-v-533cb131],.theme-dark .mode-hint[data-v-533cb131],.theme-dark .section-block-desc[data-v-533cb131]{color:hsla(0,0%,100%,.6)}.theme-dark .simple-mode-hero[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.14),rgba(114,46,209,.12));border-color:rgba(64,169,255,.18)}.theme-dark .execution-step-hero[data-v-533cb131]{background:linear-gradient(135deg,rgba(82,196,26,.14),rgba(24,144,255,.14));border-color:rgba(64,169,255,.18)}.theme-dark .execution-mode-card[data-v-533cb131]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08)}.theme-dark .execution-mode-card[data-v-533cb131]:hover{border-color:rgba(64,169,255,.3);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)}.theme-dark .execution-mode-card.active[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff}.theme-dark .execution-mode-card.disabled[data-v-533cb131]{background:hsla(0,0%,100%,.02)}.theme-dark .execution-mode-card-title[data-v-533cb131]{color:#e0e6ed}.theme-dark .execution-mode-card-desc[data-v-533cb131]{color:hsla(0,0%,100%,.6)}.theme-dark .simple-mode-kicker[data-v-533cb131]{color:#69c0ff}.theme-dark .execution-step-hero-desc[data-v-533cb131],.theme-dark .simple-mode-hero-desc[data-v-533cb131]{color:hsla(0,0%,100%,.72)}.indicator-params-form[data-v-533cb131]{padding:12px;background-color:var(--bg-color-secondary,#f5f7fa);border-radius:6px;border:1px dashed var(--border-color,#e0e0e0)}.indicator-params-form .param-item[data-v-533cb131]{margin-bottom:12px}.indicator-params-form .param-label[data-v-533cb131]{display:block;font-size:13px;color:var(--text-color,#666);margin-bottom:4px;font-weight:500}.form-item-hint[data-v-533cb131]{margin-top:4px;font-size:12px;color:var(--text-color-secondary,#8c8c8c)}.test-result[data-v-533cb131]{margin-top:8px;padding:8px;border-radius:4px;font-size:14px}.test-result.success[data-v-533cb131]{background-color:#f6ffed;border:1px solid #b7eb8f;color:#52c41a}.ip-whitelist-tip[data-v-533cb131]{margin-top:12px;padding:12px;background-color:#e6f7ff;border:1px solid #91d5ff;border-radius:4px;font-size:13px;color:#1890ff;line-height:1.6}.ip-whitelist-tip .anticon[data-v-533cb131]{margin-right:6px;color:#1890ff}.ip-whitelist-tip .ip-list[data-v-533cb131]{margin-top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.ip-whitelist-tip .ip-list .ant-tag[data-v-533cb131]{margin:0;font-family:Courier New,monospace;font-size:12px}.ip-whitelist-tip.error[data-v-533cb131]{background-color:#fff2f0;border:1px solid #ffccc7;color:#ff4d4f}@-webkit-keyframes fadeIn-533cb131{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeIn-533cb131{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}[data-v-533cb131] .danger-item{color:#ff4d4f}[data-v-533cb131] .mobile-modal .ant-modal{top:20px;padding-bottom:0}[data-v-533cb131] .mobile-modal .ant-modal-content{max-height:calc(100vh - 40px);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}[data-v-533cb131] .mobile-modal .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px}[data-v-533cb131] .mobile-modal .ant-modal-footer{padding:12px 16px;border-top:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}[data-v-533cb131] .mobile-modal .ant-modal-footer .ant-btn{font-size:13px;padding:0 12px;height:32px}.add-symbol-modal-content .market-tabs[data-v-533cb131],.add-symbol-modal-content .symbol-search-section[data-v-533cb131]{margin-bottom:16px}.add-symbol-modal-content .section-title[data-v-533cb131]{font-weight:500;margin-bottom:8px;color:rgba(0,0,0,.85);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-symbol-modal-content .hot-symbols-section[data-v-533cb131],.add-symbol-modal-content .search-results-section[data-v-533cb131]{margin-bottom:16px}.add-symbol-modal-content .symbol-list .symbol-list-item[data-v-533cb131]{cursor:pointer;-webkit-transition:background-color .3s;transition:background-color .3s;padding:8px 12px;border-radius:4px}.add-symbol-modal-content .symbol-list .symbol-list-item[data-v-533cb131]:hover{background-color:#f5f5f5}.add-symbol-modal-content .symbol-item-content[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-symbol-modal-content .symbol-item-content .symbol-code[data-v-533cb131]{font-weight:500;margin-right:8px}.add-symbol-modal-content .symbol-item-content .symbol-name[data-v-533cb131]{color:rgba(0,0,0,.45)}.add-symbol-modal-content .selected-symbol-section[data-v-533cb131]{padding:12px;background-color:#f6ffed;border:1px solid #b7eb8f;border-radius:4px;margin-top:16px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info[data-v-533cb131]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:8px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info .symbol-code[data-v-533cb131]{font-weight:500;margin-right:8px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info .symbol-name[data-v-533cb131]{color:rgba(0,0,0,.45)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-body{background:#1e1e1e}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-title{color:hsla(0,0%,100%,.88)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-content{color:hsla(0,0%,100%,.65)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns{border-top:1px solid hsla(0,0%,100%,.06);padding-top:12px}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns .ant-btn-default{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.85)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns .ant-btn-danger{background:#ff4d4f;border-color:#ff4d4f;color:#fff}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body>.anticon{color:#faad14}body.dark .mode-selector-modal .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .mode-selector-modal .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-body{color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08);-webkit-box-shadow:0 18px 48px rgba(0,0,0,.45);box-shadow:0 18px 48px rgba(0,0,0,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-body{color:#d1d4dc;background:#1e1e1e}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle .mode-hint,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle .mode-title{color:hsla(0,0%,100%,.72)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-title{color:hsla(0,0%,100%,.65)!important}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-description{color:hsla(0,0%,100%,.35)!important}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-wait .ant-steps-item-icon{background:transparent;border-color:hsla(0,0%,100%,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-wait .ant-steps-item-icon .ant-steps-icon{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-process .ant-steps-item-icon{background:#1890ff;border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon{color:#fff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-finish .ant-steps-item-icon{background:transparent;border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-finish .ant-steps-item-icon .ant-steps-icon{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-tail:after{background:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .notify-channel-grid .ant-checkbox-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:40px;padding:0 12px;border-radius:10px;background:hsla(0,0%,100%,.03);border:1px solid hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.72)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-webkit-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-moz-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:-ms-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-ms-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:focus,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:hover,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:focus,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:hover{border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap{background:#252525;border-left-color:hsla(0,0%,100%,.12)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap .ant-input-number-handler{border-bottom-color:hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection .ant-select-arrow{color:hsla(0,0%,100%,.35)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection:hover{border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-wrapper{color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-switch{background:hsla(0,0%,100%,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-switch.ant-switch-checked{background:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-moz-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-explain,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-extra{color:hsla(0,0%,100%,.35)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-item-label>label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse{background:#1c1c1c!important;border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-item{border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-header{color:hsla(0,0%,100%,.85)!important;background:hsla(0,0%,100%,.03)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-content{background:#1c1c1c;border-color:hsla(0,0%,100%,.06);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .advanced-settings-shell,body.dark .strategy-form-modal.strategy-form-modal-dark .execution-section-card,body.dark .strategy-form-modal.strategy-form-modal-dark .selected-indicator-card,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-essentials-card{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08);-webkit-box-shadow:none;box-shadow:none}body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(114,46,209,.14));border-color:rgba(64,169,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero{background:linear-gradient(135deg,rgba(82,196,26,.16),rgba(24,144,255,.14));border-color:rgba(64,169,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .mode-title,body.dark .strategy-form-modal.strategy-form-modal-dark .section-block-title,body.dark .strategy-form-modal.strategy-form-modal-dark .selected-indicator-name{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .form-item-hint,body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-description,body.dark .strategy-form-modal.strategy-form-modal-dark .section-block-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero-desc{color:hsla(0,0%,100%,.62)}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box .ai-filter-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box .ai-filter-hint{color:hsla(0,0%,100%,.4)}body.dark .strategy-form-modal.strategy-form-modal-dark .form-container{color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .form-container .ant-form-item-label>label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-description{background:#1c1c1c;color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-params-form{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-params-form .param-label{color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card{border-color:hsla(0,0%,100%,.1);background:#1c1c1c;color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card:hover{border-color:#177ddc}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card.selected{border-color:#177ddc;background:rgba(23,125,220,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card .strategy-type-content h3{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card .strategy-type-content p{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .market-category-selector .selector-label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-option .indicator-name{color:hsla(0,0%,100%,.9)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-option-desc{color:hsla(0,0%,100%,.6)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select-selection-selected-value{color:#d1d4dc!important}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card:hover{border-color:rgba(64,169,255,.3);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card.active{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card.disabled{background:hsla(0,0%,100%,.02)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-icon.signal{color:#69c0ff;background:rgba(24,144,255,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-icon.live{color:#ffc069;background:rgba(250,140,22,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-desc{color:hsla(0,0%,100%,.6)}body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-kicker{color:#69c0ff}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero-desc{color:hsla(0,0%,100%,.72)}body.dark .ant-modal-wrap .ant-modal-content{background:#1e1e1e}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-body{color:#d1d4dc}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-footer{border-top-color:hsla(0,0%,100%,.06);background:#252525}body.dark .ant-select-dropdown{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.1);-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4);box-shadow:0 4px 12px rgba(0,0,0,.4)}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d1d4dc}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-disabled{color:hsla(0,0%,100%,.25)}body.dark .ant-select-dropdown .ant-select-search__field{background:#141414;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .ant-select-dropdown .ant-select-dropdown-menu{background:#1e1e1e}body.dark .ant-select-dropdown .ant-empty-description{color:hsla(0,0%,100%,.35)}body.dark .ant-modal-wrap .ant-collapse{background:#1c1c1c!important;border-color:hsla(0,0%,100%,.08)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-item{border-color:hsla(0,0%,100%,.08)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-header{color:hsla(0,0%,100%,.85)!important;background:hsla(0,0%,100%,.03)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-header .anticon{color:hsla(0,0%,100%,.45)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-content{background:#1c1c1c;border-color:hsla(0,0%,100%,.06);color:#d1d4dc}body.dark .ant-modal-wrap .ant-spin-text{color:hsla(0,0%,100%,.65)}body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)}body.dark .ant-modal-wrap .ant-alert .ant-alert-message{color:hsla(0,0%,100%,.75)}body.dark .ant-modal-wrap .ant-alert .ant-alert-description{color:hsla(0,0%,100%,.55)} \ No newline at end of file diff --git a/frontend/dist/css/305.7fc536c1.css b/frontend/dist/css/305.7fc536c1.css new file mode 100644 index 0000000..62ff957 --- /dev/null +++ b/frontend/dist/css/305.7fc536c1.css @@ -0,0 +1 @@ +.profile-exchange-modal .exchange-account-form .egress-ip-block{width:100%}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin:0 0 16px;padding:12px 14px;border:1px solid rgba(24,144,255,.18);border-radius:10px;background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.06)),to(rgba(82,196,26,.04)));background:linear-gradient(90deg,rgba(24,144,255,.06),rgba(82,196,26,.04))}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;min-width:0}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__icon{width:28px;height:28px;border-radius:50%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:rgba(24,144,255,.12);color:#1890ff;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__text{min-width:0}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__title{color:rgba(0,0,0,.85);font-size:13px;font-weight:600;line-height:1.5}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__hint{color:rgba(0,0,0,.55);font-size:12px;line-height:1.5;margin-top:2px}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__action{padding:0;white-space:nowrap;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.profile-exchange-modal .exchange-account-form .egress-ip-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.profile-exchange-modal .exchange-account-form .egress-ip-refresh-row{margin-top:4px}.profile-exchange-modal .exchange-account-form .egress-ip-line{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:10px}.profile-exchange-modal .exchange-account-form .egress-ip-kind{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;min-width:42px;font-size:12px;color:rgba(0,0,0,.55)}.profile-exchange-modal .exchange-account-form .egress-ip-value{-webkit-box-flex:1;-ms-flex:1 1 160px;flex:1 1 160px;min-width:0;font-family:Consolas,ui-monospace,monospace;font-size:12px;padding:6px 10px;border-radius:4px;border:1px solid #d9d9d9;background:#fafafa;color:#262626;word-break:break-all}.profile-exchange-modal .exchange-account-form .exchange-demo-checkbox-label{color:rgba(0,0,0,.85)}.profile-exchange-modal .exchange-account-form .exchange-demo-hint{margin-top:6px}.profile-exchange-modal .exchange-account-form .field-hint{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:6px}.profile-exchange-modal .exchange-account-form .test-result-msg{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-exchange-modal .exchange-account-form .test-result-msg.success{color:#52c41a}.profile-exchange-modal .exchange-account-form .test-result-msg.error{color:#f5222d}.profile-exchange-modal--dark .ant-modal-content{background:#1c1c1c;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.45);box-shadow:0 8px 32px rgba(0,0,0,.45)}.profile-exchange-modal--dark .ant-modal-header{background:#1c1c1c;border-bottom:1px solid #2a2a2a}.profile-exchange-modal--dark .ant-modal-title{color:#e0e6ed}.profile-exchange-modal--dark .ant-modal-close{color:#8b949e}.profile-exchange-modal--dark .ant-modal-body,.profile-exchange-modal--dark .ant-modal-close:hover{color:#c9d1d9}.profile-exchange-modal--dark .ant-modal-footer{background:#1c1c1c;border-top:1px solid #2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-label>label{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-explain,.profile-exchange-modal--dark .exchange-account-form .ant-form-item-extra{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-number,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-password .ant-input{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-input-password-icon{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-wrap{background:#141414;border-left-color:#2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-down-inner,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-up-inner{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-select-selector{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-item,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection--single{background:#141414!important;border-color:#2a2a2a!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-selected-value,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection__rendered{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-arrow{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper,.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper span{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .exchange-demo-checkbox-label{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .egress-ip-hint,.profile-exchange-modal--dark .exchange-account-form .exchange-demo-hint{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout{background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.12)),to(rgba(82,196,26,.08)));background:linear-gradient(90deg,rgba(24,144,255,.12),rgba(82,196,26,.08));border-color:rgba(88,166,255,.26)}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__icon{background:rgba(88,166,255,.16);color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__title{color:#e0e6ed}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__hint{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__action{color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .egress-ip-value{border-color:#2a2a2a!important;background:#141414!important;color:#e0e6ed!important}.profile-exchange-modal--dark .exchange-account-form a.egress-ip-action{color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .egress-ip-kind{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .ant-alert{background:rgba(250,173,20,.12);border-color:rgba(250,173,20,.45)}.profile-exchange-modal--dark .exchange-account-form .ant-alert-message{color:#ffc53d}.profile-exchange-modal--dark .exchange-account-form .ant-alert-description{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-alert-icon{color:#faad14}.profile-exchange-modal--dark .exchange-account-form .field-hint{color:#8b949e;margin-top:6px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:6px}.profile-exchange-modal--dark .exchange-account-form .field-hint .anticon{color:#8b949e;margin-top:2px}.profile-exchange-modal--dark .exchange-account-form .test-result-msg{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.success{color:#73d13d}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.error{color:#ff7875}.profile-exchange-select-dropdown-dark.ant-select-dropdown{background:#1c1c1c}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item{color:#c9d1d9}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#2a2a2a}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:#2a2a2a!important;color:#e0e6ed;font-weight:500}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-group-title{color:#8b949e!important;font-size:12px}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item,.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{color:#c9d1d9!important}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-empty-description{color:#8b949e}.quick-trade-drawer[data-v-66414eaf] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-66414eaf]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-66414eaf],.qt-header[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-66414eaf]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-66414eaf]{font-size:20px;color:#595959}.qt-header .qt-header-left .qt-header-title[data-v-66414eaf]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-66414eaf]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-66414eaf]:hover{color:#333}.qt-symbol-bar[data-v-66414eaf]{padding:12px 20px;background:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f0f0f0));background:linear-gradient(180deg,#fafafa,#f0f0f0);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf],.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-66414eaf]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-66414eaf]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-66414eaf]{color:#999;font-size:12px}.qt-section[data-v-66414eaf]{padding:8px 20px}.qt-section .qt-label[data-v-66414eaf]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-66414eaf]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-66414eaf]{color:#999}.qt-balance .qt-balance-loading-text[data-v-66414eaf]{margin-left:4px}.qt-balance .qt-balance-value[data-v-66414eaf]{color:#52c41a;font-weight:600}.qt-balance .qt-balance-error[data-v-66414eaf]{color:#faad14;cursor:help}.qt-no-cred-actions[data-v-66414eaf]{margin-top:10px}.qt-manage-link[data-v-66414eaf]{margin-top:8px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.qt-manage-link .qt-manage-sep[data-v-66414eaf]{color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-66414eaf]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-66414eaf]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-66414eaf]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-66414eaf]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-66414eaf]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-66414eaf]:hover:not(.active){border-color:#f5222d}.qt-amount-block[data-v-66414eaf]{padding-bottom:14px}.qt-quick-amounts[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:8px;margin-bottom:4px}.qt-quick-amounts button[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-leverage-input[data-v-66414eaf]{width:80px}.qt-card[data-v-66414eaf]{margin-left:16px;margin-right:16px;padding:12px 14px;border-radius:10px;background:#f5f5f5;border:1px solid #e8e8e8}.qt-mode-card[data-v-66414eaf],.qt-tpsl-card[data-v-66414eaf]{margin-top:16px}.qt-section-title-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.qt-section-title[data-v-66414eaf]{font-size:13px;font-weight:600;color:#333}.qt-badge-contract[data-v-66414eaf]{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:#ebebeb;color:#595959;border:1px solid #d9d9d9}.qt-optional-tag[data-v-66414eaf]{font-size:10px;color:#8c8c8c;background:#f0f0f0;padding:1px 8px;border-radius:4px}.qt-label-spaced[data-v-66414eaf]{margin-top:10px}.qt-margin-radio[data-v-66414eaf]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-margin-radio[data-v-66414eaf] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px}.qt-hint-text[data-v-66414eaf]{font-size:11px;color:#8c8c8c;line-height:1.45;margin-top:8px}.qt-hint-inline[data-v-66414eaf]{margin-top:6px}.qt-spot-banner[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:4px 0}.qt-spot-banner-icon[data-v-66414eaf]{font-size:22px;color:#52c41a;margin-top:2px}.qt-spot-banner-title[data-v-66414eaf]{font-size:13px;font-weight:600;color:#333;margin-bottom:4px}.qt-spot-banner-text .qt-hint-text[data-v-66414eaf]{margin-top:0}.qt-tpsl-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-tpsl-record-hint[data-v-66414eaf]{margin-top:10px;margin-bottom:0}.qt-close-scope[data-v-66414eaf]{margin-top:12px;padding-top:10px;border-top:1px dashed #e8e8e8}.qt-label-close-scope[data-v-66414eaf]{margin-bottom:6px}.qt-close-scope-radio[data-v-66414eaf]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-close-scope-radio[data-v-66414eaf] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px;font-size:12px}.qt-tp-label[data-v-66414eaf]{color:#389e0d!important}.qt-sl-label[data-v-66414eaf]{color:#cf1322!important}.qt-input-full[data-v-66414eaf]{width:100%}.qt-dir-btn.qt-dir-disabled[data-v-66414eaf]{opacity:.42;cursor:not-allowed;pointer-events:none}.qt-empty-icon[data-v-66414eaf]{font-size:28px;color:#d9d9d9;margin-bottom:8px}.qt-empty-desc[data-v-66414eaf]{font-size:12px;color:#8c8c8c;line-height:1.5}.qt-submit-section[data-v-66414eaf]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-66414eaf]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-66414eaf]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-66414eaf]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-66414eaf]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]:active{background:#cf1322!important}.qt-position-section[data-v-66414eaf]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-66414eaf]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-position-section .qt-position-count[data-v-66414eaf]{font-size:12px;color:#999;font-weight:400}.qt-position-section .qt-close-scope-global[data-v-66414eaf]{margin-bottom:10px}.qt-history-section[data-v-66414eaf]{padding:8px 20px 12px}.qt-history-section[data-v-66414eaf] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-66414eaf] .ant-collapse-item{border:none}.qt-history-section[data-v-66414eaf] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-66414eaf] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-66414eaf] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-66414eaf] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-66414eaf]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-66414eaf]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-66414eaf]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card+.qt-position-card[data-v-66414eaf]{margin-top:10px}.qt-position-card.long[data-v-66414eaf]{border-left-color:#52c41a}.qt-position-card.short[data-v-66414eaf]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-66414eaf]:first-child{color:#999}.qt-position-empty[data-v-66414eaf]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-green[data-v-66414eaf]{color:#52c41a!important}.qt-red[data-v-66414eaf]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-66414eaf]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-66414eaf]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-66414eaf]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-66414eaf]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-66414eaf]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-66414eaf]{border-bottom-color:#303030}.theme-dark .qt-header .qt-icon[data-v-66414eaf]{color:#a3a3a3}.theme-dark .qt-header .qt-header-title[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-66414eaf]{color:#666}.theme-dark .qt-header .qt-close[data-v-66414eaf]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-66414eaf]{background:-webkit-gradient(linear,left top,left bottom,from(#262626),to(#1f1f1f));background:linear-gradient(180deg,#262626,#1f1f1f)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-66414eaf] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-66414eaf] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-66414eaf]{color:#999}.theme-dark .qt-section .qt-label[data-v-66414eaf]{color:#777}.theme-dark .qt-position-section .qt-section-header[data-v-66414eaf]{color:#ccc}.theme-dark .qt-position-section .qt-position-count[data-v-66414eaf]{color:#888}.theme-dark .qt-position-card[data-v-66414eaf]{background:#262626}.theme-dark .qt-position-card .qt-pos-row span[data-v-66414eaf]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-66414eaf],.theme-dark .qt-position-card .qt-pos-row span[data-v-66414eaf]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-66414eaf]{color:#888}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-66414eaf]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-66414eaf]{color:#ccc}.theme-dark[data-v-66414eaf] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-66414eaf] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-66414eaf] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-66414eaf] .ant-drawer-content{background:#141414}.theme-dark[data-v-66414eaf] .ant-input-number,.theme-dark[data-v-66414eaf] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-66414eaf] .ant-radio-group .ant-radio-button-wrapper{background:#262626;border-color:#303030;color:#ccc}.theme-dark[data-v-66414eaf] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#434343;border-color:#595959;color:#fff}.theme-dark[data-v-66414eaf] .ant-slider-rail{background:#303030}.theme-dark[data-v-66414eaf] .ant-slider-track{background:#737373}.theme-dark .qt-manage-link a[data-v-66414eaf]{color:#58a6ff}.theme-dark .qt-manage-link .qt-manage-sep[data-v-66414eaf]{color:#555}.theme-dark .qt-card[data-v-66414eaf]{background:#262626;border-color:#3a3a3a}.theme-dark .qt-section-title[data-v-66414eaf]{color:#e8e8e8}.theme-dark .qt-badge-contract[data-v-66414eaf]{background:#333;color:#bfbfbf;border-color:#434343}.theme-dark .qt-optional-tag[data-v-66414eaf]{background:#2a2a2a;color:#888}.theme-dark .qt-hint-text[data-v-66414eaf]{color:#777}.theme-dark .qt-spot-banner-title[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-spot-banner-icon[data-v-66414eaf]{color:#73d13d}.theme-dark .qt-tp-label[data-v-66414eaf]{color:#95de64!important}.theme-dark .qt-sl-label[data-v-66414eaf]{color:#ff7875!important}.theme-dark .qt-close-scope[data-v-66414eaf]{border-top-color:#3a3a3a}.theme-dark .qt-position-empty[data-v-66414eaf]{background:#262626;border-color:#303030}.theme-dark .qt-empty-icon[data-v-66414eaf]{color:#434343}.theme-dark .qt-empty-desc[data-v-66414eaf]{color:#888}.polymarket-analysis-modal .input-section .input-actions[data-v-67e891d2]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-67e891d2]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-67e891d2]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-67e891d2]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-67e891d2]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-67e891d2]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-67e891d2]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-67e891d2]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-67e891d2]{text-align:center;padding:40px 0}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-bar{border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab-active{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-ink-bar{background:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider{color:#d4d4d4;border-top-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider-inner-text{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-affix-wrapper,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-number,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-textarea textarea{background:#141414!important;border-color:#2a2a2a!important;color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table{background:#1c1c1c;color:#d4d4d4}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-thead>tr>th{background:#252525;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-tbody>tr>td{background:#1c1c1c;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-btn-link{color:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert{background:#1c1c1c;border-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-message{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-description{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark .market-info h3[data-v-67e891d2]{color:#d4d4d4}.polymarket-analysis-modal.theme-dark .market-info .market-meta .meta-item[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:#b3b3b3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section h4[data-v-67e891d2]{color:#d4d4d4}.ai-asset-analysis-page[data-v-4f6cc952]{padding:20px;min-height:calc(100vh - 120px);background:#f0f2f5;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow-x:hidden}.ai-asset-analysis-page .radar-section[data-v-4f6cc952]{margin-bottom:20px}.ai-asset-analysis-page .radar-section .radar-header[data-v-4f6cc952]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:14px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-4f6cc952]{margin:0;font-size:16px;font-weight:700;color:#1a1a1a;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-4f6cc952]{margin:2px 0 0;font-size:12px;color:#999}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-4f6cc952]{border-radius:8px;border:1px solid #e0e0e0;background:#fff;color:#666;font-size:12px;font-weight:500}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-4f6cc952]:hover{border-color:#6366f1;color:#6366f1}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]{overflow:hidden;position:relative;border-radius:12px;padding:2px 0}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:before{content:"";position:absolute;top:0;bottom:0;width:50px;z-index:2;pointer-events:none}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-track[data-v-4f6cc952]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-animation:radar-scroll-4f6cc952 60s linear infinite;animation:radar-scroll-4f6cc952 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .radar-section .radar-track.paused[data-v-4f6cc952]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes radar-scroll-4f6cc952{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes radar-scroll-4f6cc952{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]{width:250px;background:#fff;border-radius:12px;padding:16px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0;border:1px solid #eaeaea;-webkit-transition:all .25s cubic-bezier(.4,0,.2,1);transition:all .25s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]:before{content:"";position:absolute;inset:0;border-radius:12px;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s;background:linear-gradient(135deg,rgba(99,102,241,.04),rgba(139,92,246,.02))}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);border-color:rgba(99,102,241,.3);-webkit-box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1);box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1)}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]:hover:before{opacity:1}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-4f6cc952]{width:290px}.ai-asset-analysis-page .radar-section .radar-card .rc-head[data-v-4f6cc952]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-4f6cc952]{font-weight:800;font-size:15px;color:#111;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol.rc-prediction-title[data-v-4f6cc952]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-market[data-v-4f6cc952]{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;padding:2px 7px;border-radius:5px;-ms-flex-negative:0;flex-shrink:0;background:#f5f5f5;color:#888}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-crypto[data-v-4f6cc952]{color:#7c3aed;background:rgba(124,58,237,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-usstock[data-v-4f6cc952]{color:#16a34a;background:rgba(22,163,74,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-forex[data-v-4f6cc952]{color:#d97706;background:rgba(217,119,6,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-4f6cc952]{color:#0891b2;background:rgba(8,145,178,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-4f6cc952]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:4px;margin-bottom:12px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-4f6cc952]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:3px;padding:7px;border-radius:8px;background:#fafafa}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-label[data-v-4f6cc952]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:#999}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-4f6cc952]{font-size:13px;font-weight:700;color:#222}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-4f6cc952]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-4f6cc952]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-val[data-v-4f6cc952]{font-size:11px;font-weight:600}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-4f6cc952]{color:#0891b2}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-4f6cc952]{color:#d97706}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-4f6cc952]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-4f6cc952]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-footer[data-v-4f6cc952]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-reason[data-v-4f6cc952]{font-size:11px;color:#999;line-height:1.4;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-4f6cc952]{font-size:11px;font-weight:700;color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:4px 12px;border-radius:8px;white-space:nowrap;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-4f6cc952]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 12px rgba(99,102,241,.35);box-shadow:0 2px 12px rgba(99,102,241,.35)}.ai-asset-analysis-page .qt-floating-btn[data-v-4f6cc952]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;cursor:pointer;-webkit-box-shadow:0 4px 20px rgba(99,102,241,.35);box-shadow:0 4px 20px rgba(99,102,241,.35);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-4f6cc952 2.5s ease-in-out infinite;animation:qt-float-pulse-4f6cc952 2.5s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-4f6cc952]:hover{-webkit-transform:scale(1.08);transform:scale(1.08);-webkit-box-shadow:0 6px 28px rgba(99,102,241,.5);box-shadow:0 6px 28px rgba(99,102,241,.5)}@-webkit-keyframes qt-float-pulse-4f6cc952{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-4f6cc952{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-4f6cc952]{border-radius:14px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06);border:1px solid #e8e8e8}.ai-asset-analysis-page .workspace-card[data-v-4f6cc952] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-bar{margin-bottom:0;padding:0 20px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab{font-size:15px;font-weight:600;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-4f6cc952] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-4f6cc952] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-4f6cc952]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-4f6cc952]{font-size:64px;color:#6366f1;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-4f6cc952]{font-size:20px;font-weight:700;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-4f6cc952]{font-size:14px;color:rgba(0,0,0,.55);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-4f6cc952]{background:#141414}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-title[data-v-4f6cc952]{color:#e8e8e8}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-subtitle[data-v-4f6cc952]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-4f6cc952]{background:#1c1c1c;border-color:#2a2a2a;color:#999}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-4f6cc952]:hover{border-color:#6366f1;color:#a78bfa}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-4f6cc952]:before{background:-webkit-gradient(linear,left top,right top,from(#141414),to(transparent));background:linear-gradient(90deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-4f6cc952]:after{background:-webkit-gradient(linear,right top,left top,from(#141414),to(transparent));background:linear-gradient(270deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-4f6cc952]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-4f6cc952]:before{background:linear-gradient(135deg,rgba(99,102,241,.06),rgba(139,92,246,.03))}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-4f6cc952]:hover{border-color:rgba(99,102,241,.25);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15);box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-symbol[data-v-4f6cc952]{color:#f0f0f0}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market[data-v-4f6cc952]{background:hsla(0,0%,100%,.06);color:#888}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-crypto[data-v-4f6cc952]{color:#a78bfa;background:rgba(167,139,250,.12)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-usstock[data-v-4f6cc952]{color:#4ade80;background:rgba(74,222,128,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-forex[data-v-4f6cc952]{color:#fbbf24;background:rgba(251,191,36,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-4f6cc952]{color:#22d3ee;background:rgba(34,211,238,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric[data-v-4f6cc952]{background:hsla(0,0%,100%,.03)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-label[data-v-4f6cc952]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value[data-v-4f6cc952]{color:#ddd}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-4f6cc952]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-4f6cc952]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-4f6cc952]{color:#22d3ee}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-4f6cc952]{color:#fbbf24}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-4f6cc952]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-4f6cc952]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-reason[data-v-4f6cc952]{color:#555}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-cta[data-v-4f6cc952]{color:#fff}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-4f6cc952]{background:#1c1c1c;border-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab-active{color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-ink-bar{background-color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder h3[data-v-4f6cc952]{color:#d4d4d4}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder p[data-v-4f6cc952]{color:#a3a3a3}@media (max-width:768px){.ai-asset-analysis-page[data-v-4f6cc952]{padding:8px;min-height:auto}.ai-asset-analysis-page .radar-section[data-v-4f6cc952]{margin-bottom:10px}.ai-asset-analysis-page .radar-section .radar-header[data-v-4f6cc952]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-4f6cc952]{font-size:15px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-4f6cc952]{font-size:11px}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-4f6cc952]{-ms-flex-item-align:end;align-self:flex-end}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:before{width:28px}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]{width:210px;padding:12px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-4f6cc952]{width:248px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-4f6cc952]{font-size:14px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-4f6cc952]{padding:6px}.ai-asset-analysis-page .qt-floating-btn[data-v-4f6cc952]{right:max(8px,env(safe-area-inset-right,0px));bottom:max(68px,calc(52px + env(safe-area-inset-bottom, 0px)));width:44px;height:44px;font-size:20px}.ai-asset-analysis-page .workspace-card[data-v-4f6cc952]{border-radius:10px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-bar{padding:0 6px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab{font-size:14px;padding:10px 8px;margin-right:2px;white-space:nowrap}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-4f6cc952]{padding:16px 8px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-4f6cc952]{font-size:48px;margin-bottom:12px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-4f6cc952]{font-size:17px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-4f6cc952]{font-size:13px}}@media (max-width:480px){.ai-asset-analysis-page[data-v-4f6cc952]{padding:4px}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]{width:188px;padding:10px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-4f6cc952]{width:220px}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-4f6cc952]{gap:3px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-4f6cc952]{font-size:12px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-bar{padding:0 4px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab{font-size:13px;padding:8px 6px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-4f6cc952]{padding:12px 6px}} \ No newline at end of file diff --git a/frontend/dist/css/313.ef3f8671.css b/frontend/dist/css/313.ef3f8671.css new file mode 100644 index 0000000..481c5a8 --- /dev/null +++ b/frontend/dist/css/313.ef3f8671.css @@ -0,0 +1 @@ +.fast-analysis-report[data-v-03feb1fa]{height:100%;overflow-y:auto;padding:24px;background:#f7f8fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar{width:4px}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#d0d4da;border-radius:2px}.fast-analysis-report .loading-container[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:420px}.fast-analysis-report .loading-container .loading-content-pro[data-v-03feb1fa]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{font-size:26px;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-03feb1fa]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{position:absolute;right:0;top:-22px;font-size:13px;font-weight:700;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;padding:10px 20px;background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);border-radius:8px;margin-bottom:20px;color:var(--primary-color,#1890ff);font-size:13px;font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-03feb1fa]{font-size:15px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:9px 14px;background:rgba(0,0,0,.02);border-radius:8px;font-size:12px;color:#999;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-03feb1fa]{width:7px;height:7px;border-radius:50%;background:#ddd;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-03feb1fa]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-03feb1fa]{color:#10b981;font-size:13px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff);font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#10b981}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-03feb1fa]{margin-top:20px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{font-size:12px;color:#999;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-03feb1fa]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-03feb1fa]{font-size:56px;color:#ccc}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-03feb1fa]{margin-top:14px;font-size:17px;font-weight:700;color:#1a1a2e}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-03feb1fa]{margin-top:6px;color:#999;font-size:13px}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]{padding:28px 24px;margin-bottom:2px;border-radius:16px 16px 0 0;background:#fff;position:relative;overflow:hidden}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#f59e0b),to(#fbbf24));background:linear-gradient(90deg,#f59e0b,#fbbf24)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-03feb1fa]{font-size:28px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:32px;font-weight:800;letter-spacing:1px;color:#1a1a2e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-03feb1fa]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-03feb1fa]{font-size:17px;font-weight:800;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-03feb1fa]{font-size:11px;color:#999;margin-top:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-03feb1fa]{font-size:14px;line-height:1.75;color:#555;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{margin-top:12px;padding:10px 14px;border-radius:8px;background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent);font-size:12px;color:#555}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-weight:700;margin-bottom:6px;color:var(--primary-color,#1890ff);font-size:12px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px 18px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-03feb1fa]{font-style:normal;color:#999;margin-right:4px}.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .decision-text[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .decision-text[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .decision-text[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .price-info-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .price-info-row.hold-mode[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]{padding:16px 14px;text-align:center;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:20%;height:60%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#999;margin-bottom:6px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{font-size:9px;color:#bbb;margin-top:4px}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-03feb1fa]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-03feb1fa]{font-size:13px;margin-top:3px;font-weight:700;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card[data-v-03feb1fa]{background:#fff;padding:18px 20px;margin-bottom:2px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#1a1a2e;margin-bottom:10px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);font-size:15px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{font-size:12px;line-height:1.65;color:#555;margin-bottom:12px;padding:10px 12px;background:rgba(0,0,0,.02);border-radius:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:10px;text-align:center}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend[data-v-03feb1fa]{font-size:13px;font-weight:700;margin-bottom:4px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{font-size:10px;color:#999;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}@media (max-width:992px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}}.fast-analysis-report .result-container .scores-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]{padding:14px 16px;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:16%;height:68%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#999;margin-bottom:8px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{font-size:14px;color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{text-align:right;font-size:22px;font-weight:800;color:#1a1a2e;margin-top:6px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:0;background:#fff;margin-bottom:2px;padding:0}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent;border-bottom:1px solid #ebeef2;position:relative}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:before{content:"";position:absolute;left:0;top:20px;bottom:20px;width:3px;border-radius:2px}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-03feb1fa]:before{background:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-03feb1fa]:before{background:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:10px;font-size:14px;font-weight:700;color:#1a1a2e;padding-left:12px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-03feb1fa]{font-size:16px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-03feb1fa]{color:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{font-size:13px;line-height:1.85;color:#555;padding-left:12px}.fast-analysis-report .result-container .analysis-details[data-v-03feb1fa]{display:grid;grid-template-columns:1fr 1fr;gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:1px solid #ebeef2}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;margin-bottom:12px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-03feb1fa]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{padding:8px 0;font-size:13px;line-height:1.65;color:#555;border-bottom:1px solid rgba(0,0,0,.04)}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;margin-right:10px;vertical-align:middle}.fast-analysis-report .result-container .analysis-details .detail-section.reasons .detail-list li[data-v-03feb1fa]:before{background:#10b981}.fast-analysis-report .result-container .analysis-details .detail-section.risks .detail-list li[data-v-03feb1fa]:before{background:#f59e0b}.fast-analysis-report .result-container .indicators-section[data-v-03feb1fa]{background:#fff;padding:20px 24px;margin-bottom:2px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .indicators-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;font-size:13px;font-weight:700;margin-bottom:8px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .section-title .indicators-pro-badge[data-v-03feb1fa]{margin:0;font-size:10px;line-height:16px;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;font-size:11px;line-height:1.5;color:#999;margin-bottom:14px;padding:8px 12px;background:rgba(0,0,0,.02);border-radius:6px;border:none}.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);margin-top:1px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{margin-top:18px;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#555;margin-bottom:10px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{font-size:11px;color:#999;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{font-size:11px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#10b981;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#ef4444;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:12px 10px;text-align:center;border:none;-webkit-transition:background .15s;transition:background .15s}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:rgba(0,0,0,.04)}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:6px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{font-size:15px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{font-size:10px;color:#999;margin-top:3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .feedback-section[data-v-03feb1fa]{background:#fff;border-radius:0 0 16px 16px;padding:18px 24px;text-align:center;border:none;-webkit-box-shadow:none;box-shadow:none}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-03feb1fa]{font-size:13px;color:#999;margin-bottom:10px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-03feb1fa]{min-width:90px;border-radius:8px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{font-size:11px;color:#bbb;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:14px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:none;border-bottom:1px solid #ebeef2}}@media (max-width:576px){.fast-analysis-report[data-v-03feb1fa]{padding:8px 6px}.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-03feb1fa]{padding:20px 16px}.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{gap:14px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-03feb1fa],.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:26px}}.fast-analysis-report.theme-dark[data-v-03feb1fa]{background:#111113}.fast-analysis-report.theme-dark[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#333}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .empty-content .empty-icon[data-v-03feb1fa]{color:#444}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .empty-content .empty-hint[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(16,185,129,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-text[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(239,68,68,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-text[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(245,158,11,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-text[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .decision-card .decision-text[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .decision-summary[data-v-03feb1fa]{color:#a0a0a8;border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-value[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa] .ant-progress-text{color:#e8e8ec!important}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .cm-item em[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .price-info-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#60a5fa}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{background:#222224;color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .scores-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}.fast-analysis-report.theme-dark .result-container .detailed-analysis[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .analysis-details[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{color:#a0a0a8;border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:hsla(0,0%,100%,.05)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-row,.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-view{border-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc th.ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc td.ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content>span{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#34d399!important}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#f87171!important}.fast-analysis-report.theme-dark .result-container .feedback-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .feedback-section .feedback-question[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]{background:#222224;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}@media (max-width:992px){.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:transparent;border-bottom-color:hsla(0,0%,100%,.06)}}.ai-analysis-container[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-0fce93ef]{height:auto;min-height:700px;background:transparent}@media (max-width:768px){.ai-analysis-container.embedded[data-v-0fce93ef]{min-height:0}}.ai-analysis-container.embedded .main-content-full[data-v-0fce93ef]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.ai-analysis-container.embedded .top-index-bar[data-v-0fce93ef]{margin-top:6px}.main-content-full[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-0fce93ef]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-0fce93ef],.top-index-bar[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-0fce93ef]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-0fce93ef]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-0fce93ef]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-0fce93ef]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-0fce93ef]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-0fce93ef]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-0fce93ef],.top-index-bar .indicator-box.vix.low .ind-value[data-v-0fce93ef]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-0fce93ef]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-0fce93ef]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-0fce93ef]{color:#2563eb}.top-index-bar .indices-marquee[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-0fce93ef 35s linear infinite;animation:marquee-0fce93ef 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-0fce93ef]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-0fce93ef]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-0fce93ef]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-0fce93ef]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-0fce93ef]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-0fce93ef]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-0fce93ef]{color:#dc2626}@-webkit-keyframes marquee-0fce93ef{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-0fce93ef{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-0fce93ef]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-0fce93ef]:hover{color:#1e293b}.main-body[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-0fce93ef]{width:280px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px;overflow-y:auto}.left-panel .heatmap-box[data-v-0fce93ef]{background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.left-panel .heatmap-box .box-header[data-v-0fce93ef]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;background:#f4f5f7;border-radius:8px;padding:2px}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;font-weight:600;padding:0 8px;height:24px;line-height:22px;border:none;border-radius:6px;background:transparent;color:#8c8c8c;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all .2s;transition:all .2s}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper:before{display:none}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper:hover{color:#555}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#fff;border-color:transparent;color:#111;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.left-panel .heatmap-box .heatmap-grid[data-v-0fce93ef]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-0fce93ef]{padding:6px 4px;border-radius:6px;text-align:center;font-size:9px;-webkit-transition:-webkit-transform .15s;transition:-webkit-transform .15s;transition:transform .15s;transition:transform .15s,-webkit-transform .15s}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-0fce93ef]:hover{-webkit-transform:scale(1.03);transform:scale(1.03)}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-0fce93ef]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-0fce93ef]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-0fce93ef]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-0fce93ef]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-0fce93ef]{font-size:12px;color:#555;font-weight:700;letter-spacing:-.1px}.left-panel .calendar-box .box-header .box-title .anticon[data-v-0fce93ef]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-0fce93ef]::-webkit-scrollbar{width:3px}.left-panel .calendar-box .calendar-list[data-v-0fce93ef]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-0fce93ef]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-0fce93ef]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-0fce93ef]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-0fce93ef]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-0fce93ef]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-0fce93ef]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-0fce93ef]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-0fce93ef]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-0fce93ef]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-0fce93ef]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-0fce93ef]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-0fce93ef]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.right-panel .analysis-toolbar[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f0f2f5;background:#fafbfc;border-radius:10px 10px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar[data-v-0fce93ef] .symbol-selector .wl-select-option-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap;gap:8px;min-width:0}.right-panel .analysis-toolbar[data-v-0fce93ef] .symbol-selector .wl-select-symbol{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:0}.right-panel .analysis-toolbar[data-v-0fce93ef] .symbol-selector .wl-select-name{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;margin-left:0;padding-left:4px;color:#8c8c8c;font-size:13px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:1px solid #f0f0f0}.right-panel .analysis-toolbar .analyze-button[data-v-0fce93ef]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);border-radius:8px;font-weight:600}.right-panel .analysis-toolbar .history-button[data-v-0fce93ef]{border-color:#d9d9d9;border-radius:8px}.right-panel .analysis-main[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;min-height:300px}.watchlist-panel[data-v-0fce93ef]{width:320px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #f0f2f5;background:#fafbfc}.watchlist-panel .panel-header .panel-title[data-v-0fce93ef]{font-size:13px;font-weight:700;color:#333;letter-spacing:-.1px}.watchlist-panel .panel-header .panel-title .anticon[data-v-0fce93ef]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:6px 8px}.watchlist-panel .watchlist-list[data-v-0fce93ef]::-webkit-scrollbar{width:3px}.watchlist-panel .watchlist-list[data-v-0fce93ef]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-empty[data-v-0fce93ef]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-0fce93ef]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-0fce93ef]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-0fce93ef{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-0fce93ef{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-0fce93ef]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto;overflow-x:hidden;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.main-content-full[data-v-0fce93ef]{height:auto;min-height:auto}.top-index-bar[data-v-0fce93ef]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:6px 8px}.top-index-bar .indicator-box[data-v-0fce93ef]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-0fce93ef]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:6px}.main-body[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:8px;gap:8px}.left-panel[data-v-0fce93ef]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:8px}.left-panel .calendar-box[data-v-0fce93ef],.left-panel .heatmap-box[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-0fce93ef]{max-height:200px}.right-panel .analysis-toolbar[data-v-0fce93ef]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-0fce93ef]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-0fce93ef],.right-panel .analysis-toolbar .history-button[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-0fce93ef]{width:100%;max-height:250px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.hero-stats[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hero-stats .hstat[data-v-0fce93ef]{width:100%;max-width:300px;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media (max-width:576px){.main-body[data-v-0fce93ef]{padding:4px 6px;gap:6px}.top-index-bar[data-v-0fce93ef]{padding:5px 6px;gap:6px}.top-index-bar .indicator-box[data-v-0fce93ef]{padding:2px 5px}.top-index-bar .indicator-box .ind-value[data-v-0fce93ef]{font-size:11px}.top-index-bar .indices-marquee .index-item[data-v-0fce93ef]{font-size:10px;padding:2px 5px}.left-panel[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:6px}.left-panel .calendar-box[data-v-0fce93ef],.left-panel .heatmap-box[data-v-0fce93ef]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%;min-width:0;padding:8px;border-radius:8px}.left-panel .calendar-box[data-v-0fce93ef]{max-height:220px}.left-panel .heatmap-box .box-header[data-v-0fce93ef]{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;padding:0 2px 6px}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;white-space:nowrap}.left-panel .heatmap-box .box-header[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.right-panel[data-v-0fce93ef]{border-radius:8px}.right-panel .analysis-toolbar[data-v-0fce93ef]{padding:6px 8px;gap:6px}.right-panel .analysis-toolbar[data-v-0fce93ef] .ant-btn-lg{height:36px;padding:0 10px;font-size:13px}.right-panel .analysis-toolbar[data-v-0fce93ef] .symbol-selector .ant-select-selection--single{height:36px!important}.right-panel .analysis-toolbar[data-v-0fce93ef] .symbol-selector .ant-select-selection__rendered{line-height:34px!important}.right-panel .analysis-main[data-v-0fce93ef]{padding:6px 8px}.watchlist-panel[data-v-0fce93ef]{max-height:min(42vh,320px);border-radius:8px}.watchlist-panel .panel-header[data-v-0fce93ef]{padding:8px 10px}.watchlist-panel .watchlist-list[data-v-0fce93ef]{padding:4px 6px}.batch-bar[data-v-0fce93ef]{margin:6px 6px 4px;padding:8px 8px;gap:6px}.panel-summary[data-v-0fce93ef]{-ms-flex-wrap:wrap;flex-wrap:wrap}.panel-summary .summary-chip[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1 1 22%;flex:1 1 22%;min-width:0;padding:5px 2px}.panel-summary .sc-num[data-v-0fce93ef]{font-size:12px}.panel-summary .sc-label[data-v-0fce93ef]{font-size:8px;letter-spacing:.2px}.placeholder-hero .hero-body[data-v-0fce93ef]{padding:16px 10px;max-width:100%}.hero-title[data-v-0fce93ef]{font-size:20px}.hero-subtitle[data-v-0fce93ef]{font-size:13px;margin-bottom:14px}.hero-stats[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;gap:8px;margin-bottom:14px}.hero-stats .hstat[data-v-0fce93ef]{width:100%;max-width:none;-webkit-box-flex:0;-ms-flex:none;flex:none;padding:10px 10px}.hero-cta[data-v-0fce93ef]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;gap:8px}.hero-cta .ant-btn[data-v-0fce93ef]{width:100%;height:40px}.wl-card[data-v-0fce93ef]{padding:8px 10px}}.ai-analysis-container.theme-dark[data-v-0fce93ef]{background:#0a0a0a;color:#d4d4d4}.ai-analysis-container.theme-dark .main-content-full[data-v-0fce93ef]{background:#141416;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.4);box-shadow:0 2px 8px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .top-index-bar[data-v-0fce93ef]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-0fce93ef]{color:#777}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-0fce93ef]:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-0fce93ef]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-0fce93ef]{color:#ccc}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary[data-v-0fce93ef]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .summary-chip[data-v-0fce93ef]{border-right-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-num[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-label[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar[data-v-0fce93ef]{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .batch-all-cb[data-v-0fce93ef]{color:#a0a0a8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary){background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list[data-v-0fce93ef]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card[data-v-0fce93ef]:hover{background:#222224;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-0fce93ef]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-symbol[data-v-0fce93ef]{color:#e0e0e0}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-market[data-v-0fce93ef]{color:#666;background:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-price[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-pnl-qty[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-badge.paused[data-v-0fce93ef]{background:hsla(0,0%,100%,.05);color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-next[data-v-0fce93ef]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions[data-v-0fce93ef]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#222224));background:linear-gradient(90deg,transparent,#222224 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-0fce93ef]{background:#1a1a1c;color:#888;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn.danger[data-v-0fce93ef]:hover{color:#f87171;background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-0fce93ef]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-0fce93ef]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .we-icon[data-v-0fce93ef]{color:#333}.ai-analysis-container.theme-dark .placeholder-hero .hero-bg-grid[data-v-0fce93ef]{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0)}.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-0fce93ef]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hero-title[data-v-0fce93ef]{color:#e0e0e0}.ai-analysis-container.theme-dark .placeholder-hero .hero-hint[data-v-0fce93ef],.ai-analysis-container.theme-dark .placeholder-hero .hero-subtitle[data-v-0fce93ef]{color:#777}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:none;box-shadow:none}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-0fce93ef]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-0fce93ef]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-val[data-v-0fce93ef]{color:#ddd}.ai-analysis-container.theme-dark .placeholder-hero .hstat-label[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-0fce93ef]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-0fce93ef]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-0fce93ef]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-0fce93ef],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-0fce93ef]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-0fce93ef]{color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-0fce93ef] .ant-radio-group{background:#111113}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper{background:transparent;border-color:transparent;color:#666}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper:hover{color:#aaa}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-0fce93ef] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#2a2a2c;color:#e8e8e8;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-0fce93ef]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-0fce93ef]{border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-0fce93ef]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-0fce93ef]{color:#777}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-0fce93ef]{color:#ccc}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-0fce93ef]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .calendar-list[data-v-0fce93ef]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .right-panel[data-v-0fce93ef]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-0fce93ef]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-0fce93ef]{background:#222224;border-color:hsla(0,0%,100%,.08);color:#ccc}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-0fce93ef]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary){background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark .wl-change.up[data-v-0fce93ef]{background:rgba(74,222,128,.1)}.ai-analysis-container.theme-dark .wl-change.down[data-v-0fce93ef]{background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .panel-header-icon[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark .panel-header-icon[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.ai-analysis-container.theme-dark .panel-summary[data-v-0fce93ef]{background:#141416}.ai-analysis-container.theme-dark .batch-bar[data-v-0fce93ef]{background:#1c1c1c!important;border:1px solid #2a2a2a!important;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .batch-bar .batch-all-cb[data-v-0fce93ef]{color:#a0a0a8}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary){background:#2a2a2c!important;border-color:#3a3a3c!important;color:#b0b0b8!important}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{background:#333336!important;border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-0fce93ef]{background:#141414;border-top-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-0fce93ef]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-0fce93ef]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-0fce93ef],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-0fce93ef]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-0fce93ef]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-0fce93ef]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-0fce93ef]{color:#666}.ai-analysis-container.theme-dark[data-v-0fce93ef] .symbol-selector .ant-select-selection{background-color:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .symbol-selector .wl-select-name{color:#888!important;border-left-color:#333!important}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-tab{color:#888}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-tab:hover{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-tab-active{color:#1890ff!important}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-ink-bar{background-color:#1890ff}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input::-webkit-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input::-moz-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input:-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input::-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input::placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input-number{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-input-number .ant-input-number-handler-wrap{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-select-arrow{color:#666}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-checkbox-wrapper,.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-form-item-label>label,.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-radio-wrapper{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-alert-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-list-item-meta-title{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-list-item-meta-description{color:#888}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-empty-description{color:#666}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tooltip-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-badge-count{-webkit-box-shadow:0 0 0 1px #141414;box-shadow:0 0 0 1px #141414}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-popover-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-popover-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-popover-arrow{border-color:#1c1c1c}.placeholder-hero[data-v-0fce93ef]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;overflow:hidden}.hero-bg[data-v-0fce93ef]{position:absolute;inset:0;pointer-events:none}.hero-bg-circle[data-v-0fce93ef]{position:absolute;border-radius:50%;opacity:.5}.hero-bg-circle.c1[data-v-0fce93ef]{width:320px;height:320px;top:-80px;right:-60px;background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%);-webkit-animation:hero-float-0fce93ef 6s ease-in-out infinite;animation:hero-float-0fce93ef 6s ease-in-out infinite}.hero-bg-circle.c2[data-v-0fce93ef]{width:240px;height:240px;bottom:-40px;left:-40px;background:radial-gradient(circle,rgba(114,46,209,.08) 0,transparent 70%);animation:hero-float-0fce93ef 8s ease-in-out infinite reverse}.hero-bg-grid[data-v-0fce93ef]{position:absolute;inset:0;background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0);background-size:32px 32px}@-webkit-keyframes hero-float-0fce93ef{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}@keyframes hero-float-0fce93ef{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}.hero-body[data-v-0fce93ef]{position:relative;text-align:center;padding:40px 32px;max-width:560px}.hero-badge[data-v-0fce93ef]{display:inline-block;padding:3px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2);margin-bottom:16px}.hero-title[data-v-0fce93ef]{font-size:26px;font-weight:800;color:#0f172a;margin-bottom:8px;letter-spacing:-.3px;line-height:1.3}.hero-subtitle[data-v-0fce93ef]{font-size:14px;color:#64748b;margin-bottom:32px;line-height:1.5}.hero-stats[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:32px;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.hstat[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;text-align:left;-webkit-transition:all .25s;transition:all .25s}.hstat[data-v-0fce93ef]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.hstat-icon[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));font-size:16px;color:var(--primary-color,#1890ff);-ms-flex-negative:0;flex-shrink:0}.hstat-body[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0}.hstat-val[data-v-0fce93ef]{font-size:12px;font-weight:700;color:#0f172a}.hstat-label[data-v-0fce93ef],.hstat-val[data-v-0fce93ef]{line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hstat-label[data-v-0fce93ef]{font-size:10px;color:#94a3b8;margin-top:1px}.hero-cta[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:16px}.hero-cta .ant-btn[data-v-0fce93ef]{border-radius:10px;font-weight:600;height:42px;padding:0 24px;font-size:14px}.hero-cta .ant-btn-primary[data-v-0fce93ef]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}.hero-hint[data-v-0fce93ef]{font-size:12px;color:#94a3b8}.panel-header-actions[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.panel-header-icon[data-v-0fce93ef]{font-size:15px;color:#94a3b8;cursor:pointer;padding:4px;border-radius:6px;-webkit-transition:color .2s,background .2s;transition:color .2s,background .2s}.panel-header-icon[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.panel-summary[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;padding:0;border-bottom:1px solid #f1f5f9}.summary-chip[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;border-right:1px solid #f1f5f9}.summary-chip[data-v-0fce93ef]:last-child{border-right:none}.sc-num[data-v-0fce93ef]{font-size:14px;font-weight:700;color:#0f172a;line-height:1.2;font-family:SF Mono,Monaco,monospace}.sc-num.up[data-v-0fce93ef]{color:#16a34a}.sc-num.down[data-v-0fce93ef]{color:#dc2626}.sc-label[data-v-0fce93ef]{font-size:9px;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.batch-bar[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:10px 12px;margin:8px 10px;margin-bottom:4px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-ms-flex-wrap:wrap;flex-wrap:wrap}.batch-all-cb[data-v-0fce93ef]{font-size:12px;font-weight:500;color:#475569;margin-right:4px}.batch-bar .ant-btn[data-v-0fce93ef]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:all .2s;transition:all .2s}.batch-bar .ant-btn-primary[data-v-0fce93ef]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}.batch-bar .ant-btn-primary[data-v-0fce93ef]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05)}.batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary){background:#f8fafc;border-color:#e2e8f0;color:#64748b}.batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.wl-card[data-v-0fce93ef]{position:relative;padding:10px 12px;border-radius:8px;cursor:pointer;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);margin-bottom:3px;border:1px solid transparent}.wl-card[data-v-0fce93ef]:hover{background:#f5f7fa;border-color:#e8ecf1}.wl-card.active[data-v-0fce93ef]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.wl-card-cb[data-v-0fce93ef]{position:absolute;top:12px;left:4px;z-index:1}.wl-card-body[data-v-0fce93ef]{-webkit-transition:padding-left .2s;transition:padding-left .2s}.wl-card-body.with-cb[data-v-0fce93ef]{padding-left:24px}.wl-row-main[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:5px}.wl-symbol[data-v-0fce93ef]{font-size:13px;font-weight:700;color:#0f172a}.wl-market[data-v-0fce93ef]{font-size:9px;color:#94a3b8;letter-spacing:.3px;padding:1px 4px;background:#f1f5f9;border-radius:3px}.wl-spacer[data-v-0fce93ef]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wl-price[data-v-0fce93ef]{font-size:12px;font-weight:600;color:#0f172a;font-family:SF Mono,Monaco,monospace}.wl-change[data-v-0fce93ef]{font-size:10px;font-weight:700;font-family:SF Mono,Monaco,monospace;padding:1px 5px;border-radius:4px;margin-left:4px}.wl-change.up[data-v-0fce93ef]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-change.down[data-v-0fce93ef]{color:#dc2626;background:rgba(220,38,38,.06)}.wl-row-pnl[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-top:4px;font-family:SF Mono,Monaco,monospace}.wl-pnl-qty[data-v-0fce93ef]{font-size:10px;color:#94a3b8}.wl-pnl-val[data-v-0fce93ef]{font-size:10px;font-weight:600;margin-left:auto}.wl-pnl-val.up[data-v-0fce93ef]{color:#16a34a}.wl-pnl-val.down[data-v-0fce93ef]{color:#dc2626}.wl-row-task[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:4px}.wl-row-task[data-v-0fce93ef],.wl-task-badge[data-v-0fce93ef]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wl-task-badge[data-v-0fce93ef]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:3px;font-size:10px;padding:1px 8px;border-radius:10px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.wl-task-badge.active[data-v-0fce93ef]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-task-badge.paused[data-v-0fce93ef]{color:#94a3b8;background:#f1f5f9}.wl-task-badge[data-v-0fce93ef]:hover{opacity:.75}.wl-task-next[data-v-0fce93ef]{font-size:10px;color:#94a3b8;margin-left:auto}.wl-card-hover-actions[data-v-0fce93ef]{position:absolute;top:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;padding-right:8px;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s;background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#f8fafc));background:linear-gradient(90deg,transparent,#f8fafc 30%);border-radius:0 8px 8px 0;pointer-events:none}.wl-card:hover .wl-card-hover-actions[data-v-0fce93ef]{opacity:1;pointer-events:auto}.wl-card.active .wl-card-hover-actions[data-v-0fce93ef]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}.wl-hover-btn[data-v-0fce93ef]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:13px;color:#64748b;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06)}.wl-hover-btn[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}.wl-hover-btn.danger[data-v-0fce93ef]:hover{color:#dc2626;background:#fef2f2}.watchlist-empty[data-v-0fce93ef]{text-align:center;padding:32px 16px}.we-icon[data-v-0fce93ef]{font-size:36px;color:#e2e8f0;margin-bottom:12px}.watchlist-empty p[data-v-0fce93ef]{font-size:12px;color:#94a3b8;margin-bottom:12px}.batch-modal-summary[data-v-0fce93ef]{margin-bottom:16px}.batch-modal-summary p[data-v-0fce93ef]{font-size:13px;color:#475569;margin-bottom:8px}.batch-symbols-preview[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:80px;overflow-y:auto}.task-drawer-empty[data-v-0fce93ef]{text-align:center;padding:48px 16px;color:#94a3b8}.task-drawer-empty p[data-v-0fce93ef]{margin-top:12px;font-size:13px}.task-drawer-list[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.task-item[data-v-0fce93ef]{padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;background:#fafafa;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.task-item[data-v-0fce93ef]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.task-item-header[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.task-item-name[data-v-0fce93ef]{font-size:13px;font-weight:600;color:#0f172a}.task-item-meta[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b;margin-bottom:10px}.task-item-meta .anticon[data-v-0fce93ef]{margin-right:4px}.task-item-actions[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-top:4px}.task-item-actions .ant-btn[data-v-0fce93ef]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-transition:all .2s;transition:all .2s;border-width:1px}.task-item-actions .ant-btn.ant-btn-primary[data-v-0fce93ef]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.04);box-shadow:0 1px 2px rgba(0,0,0,.04)}.task-item-actions .ant-btn.ant-btn-primary[data-v-0fce93ef]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05);-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}.task-item-actions .ant-btn.ant-btn-default[data-v-0fce93ef]{background:#f8fafc;border-color:#e2e8f0;color:#475569}.task-item-actions .ant-btn.ant-btn-default[data-v-0fce93ef]:hover{background:#f1f5f9;border-color:#cbd5e1;color:#334155}.task-item-actions .ant-btn.ant-btn-danger[data-v-0fce93ef]{background:#fef2f2;border-color:#fecaca;color:#dc2626}.task-item-actions .ant-btn.ant-btn-danger[data-v-0fce93ef]:hover{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.add-stock-modal-content .market-tabs[data-v-0fce93ef]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-0fce93ef],.add-stock-modal-content .search-results-section[data-v-0fce93ef],.add-stock-modal-content .symbol-search-section[data-v-0fce93ef]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-0fce93ef],.add-stock-modal-content .search-results-section .section-title[data-v-0fce93ef]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-0fce93ef]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-0fce93ef]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-0fce93ef]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-0fce93ef]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-0fce93ef]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-0fce93ef]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-0fce93ef]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-0fce93ef]{width:40px;height:9px}.skeleton-cell[data-v-0fce93ef]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-0fce93ef]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-0fce93ef]{width:50%;height:8px}.skeleton-item[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-0fce93ef]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;animation:skeleton-pulse-0fce93ef 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-0fce93ef]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-0fce93ef],.indices-loading[data-v-0fce93ef]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-0fce93ef]{margin-right:6px}.heatmap-empty[data-v-0fce93ef]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-0fce93ef{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-0fce93ef{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-0fce93ef],.theme-dark .skeleton-cell .skeleton-text[data-v-0fce93ef],.theme-dark .skeleton-item .skeleton-text[data-v-0fce93ef]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#2a2a2a),color-stop(50%,#333),color-stop(75%,#2a2a2a));background:linear-gradient(90deg,#2a2a2a 25%,#333 50%,#2a2a2a 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-0fce93ef]{background:#1c1c1c!important}.theme-dark .heatmap-empty[data-v-0fce93ef],.theme-dark .indices-empty[data-v-0fce93ef],.theme-dark .indices-loading[data-v-0fce93ef]{color:#666}.qd-dark-modal .ant-modal-content{background:#141414}.qd-dark-modal .ant-modal-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-modal .ant-modal-header .ant-modal-title{color:#d4d4d4}.qd-dark-modal .ant-modal-close-x{color:#888}.qd-dark-modal .ant-modal-body{background:#141414;color:#d4d4d4}.qd-dark-modal .ant-modal-footer{background:#141414;border-top-color:#2a2a2a}.qd-dark-modal .ant-modal-footer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-modal .ant-form-item-label>label{color:#d4d4d4}.qd-dark-modal .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-input::-webkit-input-placeholder{color:#555}.qd-dark-modal .ant-input::-moz-placeholder{color:#555}.qd-dark-modal .ant-input:-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::placeholder{color:#555}.qd-dark-modal .ant-input-number,.qd-dark-modal .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-arrow{color:#666}.qd-dark-modal .ant-checkbox-wrapper,.qd-dark-modal .ant-radio-wrapper{color:#d4d4d4}.qd-dark-modal .ant-tabs-bar{border-bottom-color:#2a2a2a}.qd-dark-modal .ant-tabs-tab{color:#888}.qd-dark-modal .ant-tabs-tab:hover{color:#d4d4d4}.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}.qd-dark-modal .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.qd-dark-modal .ant-alert-message{color:#d4d4d4}.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}.qd-dark-modal .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-title{color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-description{color:#888}.qd-dark-modal .ant-empty-description{color:#666}.qd-dark-modal .add-stock-modal-content,.qd-dark-modal p{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .section-title{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list{border-color:#2a2a2a;background:#1c1c1c}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item:hover{background:#252525!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-code{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-name{color:#888!important}.qd-dark-modal .add-stock-modal-content .selected-symbol-info strong{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .selected-symbol-info span{color:#888!important}.qd-dark-modal .batch-modal-summary p{color:#d4d4d4}.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-modal .task-item-name{color:#d4d4d4}.qd-dark-modal .task-item-meta{color:#888}.qd-dark-modal .task-drawer-empty{color:#666}.qd-dark-modal .history-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .search-result-item{color:#d4d4d4}.qd-dark-modal .search-result-item:hover{background:#1c1c1c}.qd-dark-modal .search-result-name{color:#d4d4d4}.qd-dark-modal .search-result-market{color:#888}.qd-dark-drawer .ant-drawer-content{background:#141414}.qd-dark-drawer .ant-drawer-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-drawer .ant-drawer-header .ant-drawer-title{color:#d4d4d4}.qd-dark-drawer .ant-drawer-header .ant-drawer-close{color:#888}.qd-dark-drawer .ant-drawer-body{background:#141414;color:#d4d4d4}.qd-dark-drawer .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-drawer .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-drawer .task-item-name{color:#d4d4d4}.qd-dark-drawer .task-item-meta{color:#888}.qd-dark-drawer .task-drawer-empty{color:#666}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary:hover{-webkit-filter:brightness(1.1);filter:brightness(1.1)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default{background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.25);color:#f87171}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger:hover{background:rgba(239,68,68,.18);border-color:rgba(239,68,68,.4);color:#fca5a5}.qd-dark-drawer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-drawer .ant-btn-danger{background:transparent}.qd-dark-drawer .ant-popover-inner{background:#1c1c1c}.qd-dark-drawer .ant-popover-message,.qd-dark-drawer .ant-popover-message-title{color:#d4d4d4}.qd-dark-drawer .ant-popover-buttons .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-dropdown,body.colorWeak .ant-select-dropdown{background:#1c1c1c}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d4d4d4}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-active,.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff} \ No newline at end of file diff --git a/frontend/dist/css/37.7606786c.css b/frontend/dist/css/37.7606786c.css new file mode 100644 index 0000000..7d6416c --- /dev/null +++ b/frontend/dist/css/37.7606786c.css @@ -0,0 +1 @@ +.trading-records[data-v-46c92dab]{width:100%;min-height:300px;padding:0;overflow-x:visible;overflow-y:visible}.trading-records .empty-state[data-v-46c92dab]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:220px;padding:40px 16px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.trading-records.theme-dark .empty-state[data-v-46c92dab]{background:#141414;border-color:hsla(0,0%,100%,.08)}.trading-records[data-v-46c92dab] .ant-spin-container,.trading-records[data-v-46c92dab] .ant-spin-nested-loading{overflow-x:visible}.trading-records[data-v-46c92dab] .ant-table-wrapper{overflow-x:visible;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-46c92dab] .ant-table{font-size:13px;color:#333}.trading-records[data-v-46c92dab] .ant-table-container{overflow-x:visible}.trading-records[data-v-46c92dab] .ant-table-body{overflow-x:auto;overflow-y:visible;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-46c92dab] .ant-table-container{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-46c92dab] .ant-table-content{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-46c92dab] .ant-table-content::-webkit-scrollbar{height:6px;width:6px}.trading-records[data-v-46c92dab] .ant-table-content::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-content::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.trading-records[data-v-46c92dab] .ant-table-content::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-46c92dab] .ant-table-tbody>tr>td,.trading-records[data-v-46c92dab] .ant-table-thead>tr>th{white-space:nowrap}.trading-records[data-v-46c92dab] .ant-table-thead>tr>th{background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9);font-weight:600;color:#475569;border-bottom:2px solid #e2e8f0;padding:12px 16px;font-size:13px}.trading-records[data-v-46c92dab] .ant-table-tbody>tr>td{padding:12px 16px;color:#334155;border-bottom:1px solid #f1f5f9;-webkit-transition:background .2s ease;transition:background .2s ease}.trading-records[data-v-46c92dab] .ant-table-tbody>tr:hover>td{background:#f0f7ff!important}.trading-records[data-v-46c92dab] .ant-tag{border-radius:6px;padding:3px 10px;font-weight:600;font-size:11px;border:none;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-46c92dab] .ant-tag[color=cyan],.trading-records[data-v-46c92dab] .ant-tag[color=green],.trading-records[data-v-46c92dab] .ant-tag[color=lime]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.trading-records[data-v-46c92dab] .ant-tag[color=magenta],.trading-records[data-v-46c92dab] .ant-tag[color=red]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.trading-records[data-v-46c92dab] .ant-tag[color=orange]{background:linear-gradient(135deg,rgba(250,173,20,.15),rgba(250,173,20,.08));color:#d48806;border:1px solid rgba(250,173,20,.3)}.trading-records[data-v-46c92dab] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}.trading-records[data-v-46c92dab] .ant-pagination{margin-top:16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item{border-radius:8px;border:1px solid #e2e8f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item.ant-pagination-item-active a{color:#fff}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{border-radius:8px;border:1px solid #e2e8f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}.theme-dark .trading-records[data-v-46c92dab] .ant-table,.trading-records.theme-dark[data-v-46c92dab] .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v-46c92dab] .ant-table-thead>tr>th,.trading-records.theme-dark[data-v-46c92dab] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600}.theme-dark .trading-records[data-v-46c92dab] .ant-table-tbody>tr>td,.trading-records.theme-dark[data-v-46c92dab] .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v-46c92dab] .ant-table-tbody>tr:hover>td,.trading-records.theme-dark[data-v-46c92dab] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records[data-v-46c92dab] .ant-table-tbody>tr>td span,.trading-records.theme-dark[data-v-46c92dab] .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records[data-v-46c92dab] .ant-empty .ant-empty-description,.trading-records.theme-dark[data-v-46c92dab] .ant-empty .ant-empty-description{color:hsla(0,0%,100%,.35)}.trading-records[data-v-46c92dab] .ant-table-tbody>tr:hover>td{background:#fafafa}@media (max-width:768px){.trading-records[data-v-46c92dab]{min-height:200px;overflow-x:visible}.trading-records[data-v-46c92dab] .ant-table{font-size:12px}.trading-records[data-v-46c92dab] .ant-table-body,.trading-records[data-v-46c92dab] .ant-table-container,.trading-records[data-v-46c92dab] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar,.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar,.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar{height:4px;width:4px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-track,.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-track,.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:2px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-thumb,.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-thumb,.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.trading-records[data-v-46c92dab] .ant-table-body::-webkit-scrollbar-thumb:hover,.trading-records[data-v-46c92dab] .ant-table-container::-webkit-scrollbar-thumb:hover,.trading-records[data-v-46c92dab] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.trading-records[data-v-46c92dab] .ant-table-tbody>tr>td,.trading-records[data-v-46c92dab] .ant-table-thead>tr>th{padding:8px 10px;font-size:11px;white-space:nowrap}.trading-records[data-v-46c92dab] .ant-pagination{margin-top:12px;text-align:center}.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item,.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-next,.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-prev{margin:0 2px;min-width:28px;height:28px;line-height:26px;font-size:12px}}@media (max-width:480px){.trading-records[data-v-46c92dab] .ant-table{font-size:11px}.trading-records[data-v-46c92dab] .ant-table-tbody>tr>td,.trading-records[data-v-46c92dab] .ant-table-thead>tr>th{padding:6px 8px;font-size:10px}}.theme-dark .trading-records .ant-table-tbody>tr>td,.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td,body.dark .trading-records .ant-table-tbody>tr>td,body.realdark .trading-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records .ant-table-thead>tr>th,.theme-dark .trading-records[data-v] .ant-table-thead>tr>th,body.dark .trading-records .ant-table-thead>tr>th,body.realdark .trading-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600!important}.theme-dark .trading-records .ant-table,.theme-dark .trading-records[data-v] .ant-table,body.dark .trading-records .ant-table,body.realdark .trading-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records .ant-table-tbody>tr>td *,.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td *,body.dark .trading-records .ant-table-tbody>tr>td *,body.realdark .trading-records .ant-table-tbody>tr>td *{color:#d1d4dc!important}.theme-dark .trading-records .ant-table-tbody>tr:hover>td,.theme-dark .trading-records[data-v] .ant-table-tbody>tr:hover>td,body.dark .trading-records .ant-table-tbody>tr:hover>td,body.realdark .trading-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records .ant-table-thead>tr>th .ant-table-column-title,.theme-dark .trading-records[data-v] .ant-table-thead>tr>th .ant-table-column-title,body.dark .trading-records .ant-table-thead>tr>th .ant-table-column-title,body.realdark .trading-records .ant-table-thead>tr>th .ant-table-column-title{color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr>td,body.realdark .trading-records[data-v-8a68b65a] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}body.dark .trading-records[data-v-8a68b65a] .ant-table-thead>tr>th,body.realdark .trading-records[data-v-8a68b65a] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-table-tbody>tr>td,body.dark .trading-records[data-v] .ant-table-tbody>tr>td,body.realdark .trading-records[data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-table-thead>tr>th,body.dark .trading-records[data-v] .ant-table-thead>tr>th,body.realdark .trading-records[data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item,body.dark .trading-records[data-v] .ant-pagination-item,body.realdark .trading-records[data-v] .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records[data-v] .ant-pagination-item a,body.dark .trading-records[data-v] .ant-pagination-item a,body.realdark .trading-records[data-v] .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records[data-v] .ant-pagination-item-active a,body.dark .trading-records[data-v] .ant-pagination-item-active a,body.realdark .trading-records[data-v] .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper,body.dark .trading-records[data-v-8a68b65a] .ant-table-body,body.dark .trading-records[data-v-8a68b65a] .ant-table-container,body.dark .trading-records[data-v-8a68b65a] .ant-table-content,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records[data-v] .ant-table-body,.theme-dark .trading-records[data-v] .ant-table-container,.theme-dark .trading-records[data-v] .ant-table-content,.theme-dark .trading-records[data-v] .ant-table-wrapper,body.dark .trading-records[data-v] .ant-table-body,body.dark .trading-records[data-v] .ant-table-container,body.dark .trading-records[data-v] .ant-table-content,body.dark .trading-records[data-v] .ant-table-wrapper,body.realdark .trading-records[data-v] .ant-table-body,body.realdark .trading-records[data-v] .ant-table-container,body.realdark .trading-records[data-v] .ant-table-content,body.realdark .trading-records[data-v] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}.theme-dark .trading-records ::v-deep .ant-table-body,.theme-dark .trading-records ::v-deep .ant-table-container,.theme-dark .trading-records ::v-deep .ant-table-content,.theme-dark .trading-records ::v-deep .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table,body.realdark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table table,body.realdark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-table-tbody,body.realdark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .trading-records ::v-deep .ant-table-placeholder,body.realdark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}body.dark .trading-records ::v-deep .ant-table-body,body.dark .trading-records ::v-deep .ant-table-container,body.dark .trading-records ::v-deep .ant-table-content,body.dark .trading-records ::v-deep .ant-table-wrapper,body.realdark .trading-records ::v-deep .ant-table-body,body.realdark .trading-records ::v-deep .ant-table-container,body.realdark .trading-records ::v-deep .ant-table-content,body.realdark .trading-records ::v-deep .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-track,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}body.dark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .trading-records ::v-deep .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table,.theme-dark .trading-records ::v-deep .ant-table,body.dark .trading-records * ::v-deep .ant-table,body.dark .trading-records ::v-deep .ant-table,body.realdark .trading-records * ::v-deep .ant-table,body.realdark .trading-records ::v-deep .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table table,.theme-dark .trading-records ::v-deep .ant-table table,body.dark .trading-records * ::v-deep .ant-table table,body.dark .trading-records ::v-deep .ant-table table,body.realdark .trading-records * ::v-deep .ant-table table,body.realdark .trading-records ::v-deep .ant-table table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-thead>tr>th,.theme-dark .trading-records ::v-deep .ant-table-thead>tr>th,body.dark .trading-records * ::v-deep .ant-table-thead>tr>th,body.dark .trading-records ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records * ::v-deep .ant-table-thead>tr>th,body.realdark .trading-records ::v-deep .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody,.theme-dark .trading-records ::v-deep .ant-table-tbody,body.dark .trading-records * ::v-deep .ant-table-tbody,body.dark .trading-records ::v-deep .ant-table-tbody,body.realdark .trading-records * ::v-deep .ant-table-tbody,body.realdark .trading-records ::v-deep .ant-table-tbody{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr>td span,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td div,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records * ::v-deep .ant-table-tbody>tr>td span,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.dark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.dark .trading-records ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr>td span,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td :not(.ant-tag),body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td div,body.realdark .trading-records ::v-deep .ant-table-tbody>tr>td span{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,.theme-dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.dark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,body.dark .trading-records ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records * ::v-deep .ant-table-tbody>tr:hover>td,body.realdark .trading-records ::v-deep .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .trading-records * ::v-deep .ant-table-placeholder,.theme-dark .trading-records ::v-deep .ant-table-placeholder,body.dark .trading-records * ::v-deep .ant-table-placeholder,body.dark .trading-records ::v-deep .ant-table-placeholder,body.realdark .trading-records * ::v-deep .ant-table-placeholder,body.realdark .trading-records ::v-deep .ant-table-placeholder{background:#1c1c1c!important;color:#868993!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item{background:#1c1c1c!important;border-color:#363c4e!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item a{color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active a{color:#fff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-options .ant-select .ant-select-selector{background:#1c1c1c!important;border-color:#363c4e!important;color:#d1d4dc!important}.position-records[data-v-6ba7d922]{width:100%;min-height:300px;padding:0}.position-records .empty-state[data-v-6ba7d922]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:220px;padding:40px 16px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.position-records.theme-dark .empty-state[data-v-6ba7d922]{background:#141414;border-color:hsla(0,0%,100%,.08)}.position-records[data-v-6ba7d922] .ant-table{font-size:13px;color:#333}.position-records[data-v-6ba7d922] .ant-table-body{overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-container{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-content,.position-records[data-v-6ba7d922] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:3px}.position-records[data-v-6ba7d922] .ant-table-content::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9);font-weight:600;color:#475569;border-bottom:2px solid #e2e8f0;padding:12px 16px;font-size:13px}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td{padding:12px 16px;color:#334155;border-bottom:1px solid #f1f5f9;-webkit-transition:background .2s ease;transition:background .2s ease}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td strong{color:#262626;font-weight:600}.position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#f0f7ff!important}.position-records[data-v-6ba7d922] .ant-tag{border-radius:6px;padding:2px 10px;font-weight:600;font-size:11px;border:none}.position-records[data-v-6ba7d922] .ant-tag[color=green]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.position-records[data-v-6ba7d922] .ant-tag[color=red]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.position-records.theme-dark[data-v-6ba7d922] .ant-table,.theme-dark .position-records[data-v-6ba7d922] .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-thead>tr>th,.theme-dark .position-records[data-v-6ba7d922] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr>td,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr>td{background:#1c1c1c!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr:hover>td,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.position-records.theme-dark[data-v-6ba7d922] .ant-table-tbody>tr>td strong,.theme-dark .position-records[data-v-6ba7d922] .ant-table-tbody>tr>td strong{color:#d1d4dc!important}.position-records[data-v-6ba7d922] .ant-table-tbody>tr:hover>td{background:#fafafa}.position-records[data-v-6ba7d922] .ant-empty{margin:40px 0}.position-records[data-v-6ba7d922] .ant-empty .ant-empty-description{color:#8c8c8c}.position-records.theme-dark[data-v-6ba7d922] .ant-empty .ant-empty-description{color:hsla(0,0%,100%,.35)}.position-records .profit[data-v-6ba7d922]{color:#0ecb81;font-weight:700;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:linear-gradient(135deg,rgba(14,203,129,.12),rgba(14,203,129,.06));border-radius:6px}.position-records .profit[data-v-6ba7d922]:before{content:"▲";font-size:8px}.position-records .loss[data-v-6ba7d922]{color:#f6465d;font-weight:700;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:linear-gradient(135deg,rgba(246,70,93,.12),rgba(246,70,93,.06));border-radius:6px}.position-records .loss[data-v-6ba7d922]:before{content:"▼";font-size:8px}@media (max-width:768px){.position-records[data-v-6ba7d922]{min-height:200px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922]::-webkit-scrollbar{height:4px;width:4px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-track{background:transparent;border-radius:2px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.position-records[data-v-6ba7d922]::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records .empty-state[data-v-6ba7d922]{min-height:150px;padding:20px 0}.position-records[data-v-6ba7d922] .ant-table{font-size:12px;min-width:700px}.position-records[data-v-6ba7d922] .ant-table-body,.position-records[data-v-6ba7d922] .ant-table-container,.position-records[data-v-6ba7d922] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar{height:4px;width:4px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-track,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:2px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.position-records[data-v-6ba7d922] .ant-table-body::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-container::-webkit-scrollbar-thumb:hover,.position-records[data-v-6ba7d922] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td,.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{padding:8px 10px;font-size:11px;white-space:nowrap}.position-records[data-v-6ba7d922] .ant-empty{margin:20px 0}}@media (max-width:480px){.position-records[data-v-6ba7d922] .ant-table{font-size:11px;min-width:600px}.position-records[data-v-6ba7d922] .ant-table-tbody>tr>td,.position-records[data-v-6ba7d922] .ant-table-thead>tr>th{padding:6px 8px;font-size:10px}.position-records .loss[data-v-6ba7d922],.position-records .profit[data-v-6ba7d922]{font-size:11px}}.theme-dark .position-records .ant-table-tbody>tr>td,.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,body.dark .position-records .ant-table-tbody>tr>td,body.realdark .position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records .ant-table-thead>tr>th,.theme-dark .position-records[data-v] .ant-table-thead>tr>th,body.dark .position-records .ant-table-thead>tr>th,body.realdark .position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important;font-weight:600!important}.theme-dark .position-records .ant-table,.theme-dark .position-records[data-v] .ant-table,body.dark .position-records .ant-table,body.realdark .position-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .position-records .ant-table-tbody>tr>td *,.theme-dark .position-records[data-v] .ant-table-tbody>tr>td *,body.dark .position-records .ant-table-tbody>tr>td *,body.realdark .position-records .ant-table-tbody>tr>td *{color:#d1d4dc!important}.theme-dark .position-records .ant-table-tbody>tr:hover>td,.theme-dark .position-records[data-v] .ant-table-tbody>tr:hover>td,body.dark .position-records .ant-table-tbody>tr:hover>td,body.realdark .position-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}.theme-dark .position-records .ant-table-thead>tr>th .ant-table-column-title,.theme-dark .position-records[data-v] .ant-table-thead>tr>th .ant-table-column-title,body.dark .position-records .ant-table-thead>tr>th .ant-table-column-title,body.realdark .position-records .ant-table-thead>tr>th .ant-table-column-title{color:#d1d4dc!important}.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,.theme-dark [class*=position-records][data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-thead>tr>th,.theme-dark [class*=position-records][data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,.theme-dark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,.theme-dark [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table,.theme-dark [data-v-6c1eb557].position-records .ant-table{background:#1c1c1c!important;color:#d1d4dc!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr:hover>td,.theme-dark [data-v-6c1eb557].position-records .ant-table-tbody>tr:hover>td{background:#2a2e39!important}body.dark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,body.dark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.realdark .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557] .position-records .ant-table-tbody>tr>td,body.realdark [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}body.dark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.dark [data-v-6c1eb557] .ant-table-thead>tr>th,body.dark [data-v-6c1eb557] .position-records .ant-table-thead>tr>th,body.dark [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.realdark .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557] .position-records .ant-table-thead>tr>th,body.realdark [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-tbody>tr>td,body.dark .position-records[data-v] .ant-table-tbody>tr>td,body.realdark .position-records[data-v] .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v] .ant-table-thead>tr>th,body.dark .position-records[data-v] .ant-table-thead>tr>th,body.realdark .position-records[data-v] .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description,body.dark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description,body.realdark .position-records[data-v-6c1eb557] .ant-empty .ant-empty-description{color:#868993!important}.theme-dark .position-records[data-v-6c1eb557] .profit,body.dark .position-records[data-v-6c1eb557] .profit,body.realdark .position-records[data-v-6c1eb557] .profit{color:#52c41a!important}.theme-dark .position-records[data-v-6c1eb557] .loss,body.dark .position-records[data-v-6c1eb557] .loss,body.realdark .position-records[data-v-6c1eb557] .loss{color:#ff4d4f!important}.theme-dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,.theme-dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td,body.realdark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-tbody>tr>td,body.realdark .trading-assistant [data-v-6c1eb557].position-records .ant-table-tbody>tr>td{color:#d1d4dc!important;background:#1c1c1c!important;border-bottom-color:#363c4e!important}.theme-dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,.theme-dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.dark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.dark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th,body.realdark .trading-assistant .position-records[data-v-6c1eb557] .ant-table-thead>tr>th,body.realdark .trading-assistant [data-v-6c1eb557].position-records .ant-table-thead>tr>th{background:#2a2e39!important;color:#d1d4dc!important;border-bottom-color:#363c4e!important}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper,body.dark .position-records[data-v-6c1eb557] .ant-table-body,body.dark .position-records[data-v-6c1eb557] .ant-table-container,body.dark .position-records[data-v-6c1eb557] .ant-table-content,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper,body.realdark .position-records[data-v-6c1eb557] .ant-table-body,body.realdark .position-records[data-v-6c1eb557] .ant-table-container,body.realdark .position-records[data-v-6c1eb557] .ant-table-content,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-track,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v-6c1eb557] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.theme-dark .position-records[data-v] .ant-table-body,.theme-dark .position-records[data-v] .ant-table-container,.theme-dark .position-records[data-v] .ant-table-content,.theme-dark .position-records[data-v] .ant-table-wrapper,body.dark .position-records[data-v] .ant-table-body,body.dark .position-records[data-v] .ant-table-container,body.dark .position-records[data-v] .ant-table-content,body.dark .position-records[data-v] .ant-table-wrapper,body.realdark .position-records[data-v] .ant-table-body,body.realdark .position-records[data-v] .ant-table-container,body.realdark .position-records[data-v] .ant-table-content,body.realdark .position-records[data-v] .ant-table-wrapper{scrollbar-width:thin;scrollbar-color:rgba(209,212,220,.3) transparent}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar{height:6px;width:6px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-track,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-track{background:transparent;border-radius:3px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb{background:rgba(209,212,220,.3);border-radius:3px}.theme-dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,.theme-dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.dark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-body::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-container::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-content::-webkit-scrollbar-thumb:hover,body.realdark .position-records[data-v] .ant-table-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(209,212,220,.5)}.strategy-type-selector[data-v-8ec7ab14]{padding:8px 0}.selector-header[data-v-8ec7ab14]{text-align:center;margin-bottom:24px}.selector-header h3[data-v-8ec7ab14]{margin:0 0 4px;font-size:18px;font-weight:600}.selector-header .selector-hint[data-v-8ec7ab14]{color:#999;font-size:13px;margin:0}.mode-cards[data-v-8ec7ab14]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px}@media (max-width:768px){.mode-cards[data-v-8ec7ab14]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.mode-card[data-v-8ec7ab14]{-webkit-box-flex:1;-ms-flex:1;flex:1;border:2px solid #f0f0f0;border-radius:12px;padding:24px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;position:relative;overflow:hidden}.mode-card[data-v-8ec7ab14]:hover{border-color:#1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.12);box-shadow:0 4px 16px rgba(24,144,255,.12);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.mode-card.selected[data-v-8ec7ab14]{border-color:#1890ff;background:rgba(24,144,255,.02)}.mode-card.selected[data-v-8ec7ab14]:after{content:"✓";position:absolute;top:8px;right:12px;color:#1890ff;font-size:18px;font-weight:700}.card-icon[data-v-8ec7ab14]{width:56px;height:56px;border-radius:14px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:26px;margin-bottom:16px}.card-icon.signal-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}.card-icon.script-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,#f6ffed,#d9f7be);color:#52c41a}.card-body[data-v-8ec7ab14]{-webkit-box-flex:1;-ms-flex:1;flex:1}.card-body .card-badge-row[data-v-8ec7ab14]{margin-bottom:10px}.card-body .card-badge[data-v-8ec7ab14]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px;border-radius:999px;background:rgba(24,144,255,.08);color:#1890ff;font-size:12px;font-weight:600;line-height:1.4}.card-body .card-badge.card-badge--script[data-v-8ec7ab14]{background:rgba(82,196,26,.12);color:#389e0d}.card-body h4[data-v-8ec7ab14]{font-size:16px;font-weight:600;margin:0 0 8px}.card-body .card-desc[data-v-8ec7ab14]{color:#666;font-size:13px;line-height:1.5;margin-bottom:12px}.card-features[data-v-8ec7ab14]{list-style:none;padding:0;margin:0 0 16px;text-align:left}.card-features li[data-v-8ec7ab14]{font-size:13px;color:#555;padding:3px 0}.card-features li .anticon[data-v-8ec7ab14]{color:#52c41a;margin-right:6px;font-size:12px}.card-btn[data-v-8ec7ab14]{width:100%}.template-quick-start[data-v-8ec7ab14]{margin-top:8px}.template-quick-start .divider-text[data-v-8ec7ab14]{color:#999;font-size:13px}.template-tags[data-v-8ec7ab14]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px}.template-tag[data-v-8ec7ab14]{cursor:pointer;padding:4px 12px;font-size:13px;border-radius:16px;-webkit-transition:all .2s;transition:all .2s}.template-tag .tpl-icon[data-v-8ec7ab14]{margin-right:4px}.template-tag[data-v-8ec7ab14]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}.theme-dark .selector-header h3[data-v-8ec7ab14]{color:#e0e6ed}.theme-dark .selector-header .selector-hint[data-v-8ec7ab14]{color:hsla(0,0%,100%,.4)}.theme-dark .mode-card[data-v-8ec7ab14]{border-color:hsla(0,0%,100%,.08);background:#1c1c1c}.theme-dark .mode-card[data-v-8ec7ab14]:hover{border-color:#177ddc;-webkit-box-shadow:0 4px 16px rgba(23,125,220,.2);box-shadow:0 4px 16px rgba(23,125,220,.2)}.theme-dark .mode-card.selected[data-v-8ec7ab14]{border-color:#177ddc;background:rgba(23,125,220,.06)}.theme-dark .mode-card.selected[data-v-8ec7ab14]:after{color:#40a9ff}.theme-dark .card-icon.signal-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}.theme-dark .card-icon.script-icon[data-v-8ec7ab14]{background:linear-gradient(135deg,rgba(82,196,26,.15),rgba(82,196,26,.08));color:#73d13d}.theme-dark .card-body h4[data-v-8ec7ab14]{color:#e0e6ed}.theme-dark .card-body .card-desc[data-v-8ec7ab14]{color:hsla(0,0%,100%,.45)}.theme-dark .card-body .card-badge[data-v-8ec7ab14]{background:rgba(64,169,255,.12);color:#69c0ff}.theme-dark .card-body .card-badge.card-badge--script[data-v-8ec7ab14]{background:rgba(115,209,61,.16);color:#95de64}.theme-dark .card-features li[data-v-8ec7ab14]{color:hsla(0,0%,100%,.6)}.theme-dark .card-features li .anticon[data-v-8ec7ab14]{color:#73d13d}.theme-dark .card-btn[data-v-8ec7ab14]{border-color:rgba(24,144,255,.4);color:#40a9ff}.theme-dark .card-btn[data-v-8ec7ab14]:hover{border-color:#1890ff;color:#1890ff}.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider-inner-text{color:hsla(0,0%,100%,.35)}.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider:after,.theme-dark .template-quick-start[data-v-8ec7ab14] .ant-divider:before{border-top-color:hsla(0,0%,100%,.08)}.theme-dark .divider-text[data-v-8ec7ab14]{color:hsla(0,0%,100%,.35)}.theme-dark .template-tag[data-v-8ec7ab14]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.65)}.theme-dark .template-tag[data-v-8ec7ab14]:hover{color:#40a9ff;border-color:#177ddc;background:rgba(23,125,220,.1)}.strategy-editor[data-v-35a0a386]{width:100%}.editor-layout[data-v-35a0a386]{min-height:450px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.code-col[data-v-35a0a386],.side-col[data-v-35a0a386]{-ms-flex-direction:column;flex-direction:column}.code-col[data-v-35a0a386],.code-section[data-v-35a0a386],.side-col[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.code-section[data-v-35a0a386]{border:1px solid #e8e8e8;border-radius:8px;overflow:hidden;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column}.section-header[data-v-35a0a386]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:8px 12px;background:#fafafa;border-bottom:1px solid #e8e8e8}.section-header[data-v-35a0a386],.section-title-wrap[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-title-wrap[data-v-35a0a386]{gap:8px;min-width:0}.section-title[data-v-35a0a386]{font-weight:600;font-size:14px}.section-title .anticon[data-v-35a0a386]{margin-right:6px}.current-template-tag[data-v-35a0a386]{margin-right:0}.verify-btn[data-v-35a0a386]{color:#52c41a;font-weight:600}.code-editor-container[data-v-35a0a386]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:420px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-editor-container[data-v-35a0a386] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;background:#fff}.code-editor-container[data-v-35a0a386] .CodeMirror-scroll{min-height:100%;overflow-x:auto!important;overflow-y:auto!important}.code-editor-container[data-v-35a0a386] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5)}.code-editor-container[data-v-35a0a386] .CodeMirror-linenumber{padding:0 8px 0 0;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-35a0a386] .CodeMirror-lines{padding:12px 0}.code-editor-container[data-v-35a0a386] .CodeMirror pre.CodeMirror-line,.code-editor-container[data-v-35a0a386] .CodeMirror pre.CodeMirror-line-like{padding:0 12px 0 12px}.code-editor-container[data-v-35a0a386] .CodeMirror-cursor{border-left:2px solid #1890ff}.side-tabs[data-v-35a0a386]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden}.side-tabs[data-v-35a0a386] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;padding:0 12px;background:#fafafa;border-bottom:1px solid #f0f0f0}.side-tabs[data-v-35a0a386] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:280px;overflow-x:hidden;overflow-y:auto;padding:12px}.ai-actions[data-v-35a0a386]{margin-top:12px}.params-panel[data-v-35a0a386]{min-height:120px}.panel-intro[data-v-35a0a386]{margin-bottom:12px;padding:12px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.panel-intro__title[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:14px;font-weight:600;color:#262626}.panel-intro__desc[data-v-35a0a386]{margin-top:4px;font-size:12px;line-height:1.6;color:#8c8c8c}.template-list[data-v-35a0a386]{padding:4px 0}.template-item[data-v-35a0a386]{padding:12px;border:1px solid #f0f0f0;border-radius:8px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.template-item.active[data-v-35a0a386],.template-item[data-v-35a0a386]:hover{border-color:#1890ff;background:#fafafa}.template-item .tpl-header[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:4px}.template-item .tpl-icon[data-v-35a0a386]{font-size:16px;margin-right:8px}.template-item .tpl-name[data-v-35a0a386]{font-weight:600;font-size:14px}.template-item .tpl-desc[data-v-35a0a386]{font-size:12px;color:#888;margin:0 0 4px}.template-item .tpl-use-btn[data-v-35a0a386]{padding:0;font-size:12px}.params-tip[data-v-35a0a386]{margin-bottom:12px}.param-list[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.param-item[data-v-35a0a386]{padding:12px;border:1px solid #f0f0f0;border-radius:8px;background:#fff}.param-item__label-row[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin-bottom:4px}.param-item__label[data-v-35a0a386]{font-size:13px;font-weight:600;color:#262626}.param-item__type[data-v-35a0a386]{font-size:11px;color:#8c8c8c}.param-item__desc[data-v-35a0a386]{margin-bottom:8px;font-size:12px;line-height:1.5;color:#8c8c8c}.param-item__switch[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.params-actions[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;margin-top:16px}.ai-suggestions[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:10px}.prompt-tag[data-v-35a0a386]{cursor:pointer}.ai-status[data-v-35a0a386]{margin-top:8px;color:#1890ff;font-size:13px;text-align:center}.params-empty-guide[data-v-35a0a386]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:200px}.theme-dark .code-section[data-v-35a0a386]{border-color:hsla(0,0%,100%,.1)}.theme-dark .section-header[data-v-35a0a386]{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}.theme-dark .section-title[data-v-35a0a386]{color:#e0e6ed}.theme-dark .side-tabs[data-v-35a0a386]{border-color:hsla(0,0%,100%,.1)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-bar{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.08)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab{color:hsla(0,0%,100%,.55)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab:hover{color:hsla(0,0%,100%,.85)}.theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}.theme-dark .panel-intro[data-v-35a0a386]{background:#1c1c1c;border-color:hsla(0,0%,100%,.08)}.theme-dark .panel-intro__title[data-v-35a0a386],.theme-dark .param-item__label[data-v-35a0a386]{color:#e0e6ed}.theme-dark .panel-intro__desc[data-v-35a0a386],.theme-dark .param-item__desc[data-v-35a0a386],.theme-dark .param-item__type[data-v-35a0a386]{color:hsla(0,0%,100%,.45)}.theme-dark .param-item[data-v-35a0a386],.theme-dark .template-item[data-v-35a0a386]{border-color:hsla(0,0%,100%,.08);background:#1c1c1c}.theme-dark .template-item.active[data-v-35a0a386],.theme-dark .template-item[data-v-35a0a386]:hover{border-color:#177ddc;background:rgba(23,125,220,.06)}.theme-dark .tpl-name[data-v-35a0a386]{color:#e0e6ed}.theme-dark .tpl-desc[data-v-35a0a386]{color:hsla(0,0%,100%,.4)}.theme-dark .prompt-tag[data-v-35a0a386]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.7)}.theme-dark[data-v-35a0a386] .ant-input,.theme-dark[data-v-35a0a386] .ant-input-number,.theme-dark[data-v-35a0a386] .ant-input-number-input,.theme-dark[data-v-35a0a386] .ant-select-selection,.theme-dark[data-v-35a0a386] .ant-select-selection--single,.theme-dark[data-v-35a0a386] textarea.ant-input{background:#141414!important;border-color:hsla(0,0%,100%,.1)!important;color:#d1d4dc!important}.theme-dark[data-v-35a0a386] .ant-select-selection-placeholder,.theme-dark[data-v-35a0a386] .ant-select-selection-selected-value{color:#d1d4dc!important}.theme-dark .ai-status[data-v-35a0a386]{color:#40a9ff}.theme-dark[data-v-35a0a386] .ant-empty-description{color:hsla(0,0%,100%,.45)}.theme-dark[data-v-35a0a386] .ant-alert-info{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}.theme-dark[data-v-35a0a386] .ant-alert-info .ant-alert-message{color:hsla(0,0%,100%,.65)}.theme-dark .verify-btn[data-v-35a0a386]{color:#52c41a}.theme-dark .ai-panel[data-v-35a0a386]{color:hsla(0,0%,100%,.78)}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror{background:#141414;color:#d1d4dc}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror-gutters{border-right-color:hsla(0,0%,100%,.08);background:-webkit-gradient(linear,left top,right top,from(#1a1a1a),to(#1c1c1c));background:linear-gradient(90deg,#1a1a1a 0,#1c1c1c)}.theme-dark .code-editor-container[data-v-35a0a386] .CodeMirror-linenumber{color:hsla(0,0%,100%,.32)}.performance-analysis[data-v-01ff5f5a]{padding:4px 0}.strategy-tab-empty[data-v-01ff5f5a]{padding:48px 16px;margin:0 auto;max-width:360px}.metrics-grid[data-v-01ff5f5a]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}@media (max-width:768px){.metrics-grid[data-v-01ff5f5a]{grid-template-columns:repeat(2,1fr)}}.metric-card[data-v-01ff5f5a]{background:#fafafa;border-radius:8px;padding:12px 16px;text-align:center}.metric-card.positive .metric-value[data-v-01ff5f5a]{color:#52c41a}.metric-card.negative .metric-value[data-v-01ff5f5a]{color:#ff4d4f}.metric-card .metric-label[data-v-01ff5f5a]{font-size:12px;color:#999;margin-bottom:4px}.metric-card .metric-value[data-v-01ff5f5a]{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.chart-section[data-v-01ff5f5a]{margin-bottom:20px}.chart-section .chart-title[data-v-01ff5f5a]{font-size:14px;font-weight:600;margin-bottom:8px;padding-left:4px}.chart-container[data-v-01ff5f5a]{width:100%;height:300px;border-radius:8px;overflow:hidden}.theme-dark .metrics-grid .metric-card[data-v-01ff5f5a]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06)}.theme-dark .metrics-grid .metric-card .metric-label[data-v-01ff5f5a]{color:hsla(0,0%,100%,.4)}.theme-dark .metrics-grid .metric-card .metric-value[data-v-01ff5f5a]{color:#e0e6ed}.theme-dark .metrics-grid .metric-card.positive .metric-value[data-v-01ff5f5a]{color:#52c41a}.theme-dark .metrics-grid .metric-card.negative .metric-value[data-v-01ff5f5a]{color:#ff4d4f}.theme-dark .chart-section .chart-title[data-v-01ff5f5a]{color:#e0e6ed}.theme-dark .chart-container[data-v-01ff5f5a]{background:#141414;border:1px solid hsla(0,0%,100%,.06)}.theme-dark .strategy-tab-empty[data-v-01ff5f5a] .ant-empty-description,.theme-dark[data-v-01ff5f5a] .ant-empty-description{color:hsla(0,0%,100%,.35)}.strategy-logs[data-v-5ea7be7d]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.logs-toolbar[data-v-5ea7be7d]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:8px 0;margin-bottom:8px}.logs-toolbar .toolbar-right[data-v-5ea7be7d],.logs-toolbar[data-v-5ea7be7d]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.logs-toolbar .toolbar-right[data-v-5ea7be7d]{gap:6px}.logs-toolbar .toolbar-right .auto-refresh-label[data-v-5ea7be7d]{font-size:12px;color:#999}.logs-container[data-v-5ea7be7d]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:300px;max-height:500px;overflow-y:auto;border:1px solid #f0f0f0;border-radius:8px;padding:8px;font-family:Fira Code,Consolas,monospace;font-size:12px;line-height:1.7;background:#fafafa}.logs-empty[data-v-5ea7be7d]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:200px;color:#ccc}.logs-empty p[data-v-5ea7be7d]{margin-top:8px;font-family:-apple-system,BlinkMacSystemFont,sans-serif}.log-entry[data-v-5ea7be7d]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;padding:2px 4px;border-radius:3px}.log-entry[data-v-5ea7be7d]:hover{background:rgba(0,0,0,.02)}.log-entry.level-error[data-v-5ea7be7d]{background:rgba(255,77,79,.04)}.log-entry.level-trade[data-v-5ea7be7d]{background:rgba(82,196,26,.04)}.log-time[data-v-5ea7be7d]{color:#999;white-space:nowrap;font-size:11px;min-width:65px}.log-level[data-v-5ea7be7d]{-ms-flex-negative:0;flex-shrink:0;font-size:10px}.log-message[data-v-5ea7be7d]{-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-all}.theme-dark .logs-toolbar .toolbar-right .auto-refresh-label[data-v-5ea7be7d]{color:hsla(0,0%,100%,.4)}.theme-dark .logs-toolbar[data-v-5ea7be7d] .ant-radio-group .ant-radio-button-wrapper{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.55)}.theme-dark .logs-toolbar[data-v-5ea7be7d] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}.theme-dark .logs-toolbar[data-v-5ea7be7d] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark .logs-container[data-v-5ea7be7d]{background:#141414;border-color:hsla(0,0%,100%,.08)}.theme-dark .logs-empty[data-v-5ea7be7d]{color:hsla(0,0%,100%,.25)}.theme-dark .logs-empty .anticon[data-v-5ea7be7d]{color:hsla(0,0%,100%,.15)!important}.theme-dark .logs-empty p[data-v-5ea7be7d]{color:hsla(0,0%,100%,.3)}.theme-dark .log-entry[data-v-5ea7be7d]:hover{background:hsla(0,0%,100%,.03)}.theme-dark .log-entry.level-error[data-v-5ea7be7d]{background:rgba(255,77,79,.06)}.theme-dark .log-entry.level-trade[data-v-5ea7be7d]{background:rgba(82,196,26,.06)}.theme-dark .log-time[data-v-5ea7be7d]{color:hsla(0,0%,100%,.3)}.theme-dark .log-message[data-v-5ea7be7d]{color:hsla(0,0%,100%,.75)}.dashboard-pro[data-v-23d6ebe6]{min-height:100vh;padding:20px;background:#f8fafc;-webkit-transition:background .3s;transition:background .3s}.dashboard-pro.theme-dark[data-v-23d6ebe6]{background:#141414}.dashboard-pro.theme-dark .kpi-card[data-v-23d6ebe6]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .kpi-card .kpi-label[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .kpi-card .kpi-value .amount[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .kpi-card .kpi-sub[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .chart-panel[data-v-23d6ebe6],.dashboard-pro.theme-dark .table-panel[data-v-23d6ebe6]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header[data-v-23d6ebe6],.dashboard-pro.theme-dark .table-panel .panel-header[data-v-23d6ebe6]{border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header .panel-title[data-v-23d6ebe6],.dashboard-pro.theme-dark .table-panel .panel-header .panel-title[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .setup-guide-card[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(23,125,220,.14),rgba(139,92,246,.12));border-color:rgba(23,125,220,.26)}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-title[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-desc[data-v-23d6ebe6]{color:hsla(0,0%,100%,.72)}.dashboard-pro.theme-dark .setup-guide-card .setup-guide-path[data-v-23d6ebe6]{color:hsla(0,0%,100%,.48)}.dashboard-pro.theme-dark .calendar-nav .current-month[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .calendar-nav .ant-btn-link[data-v-23d6ebe6],.dashboard-pro.theme-dark .profit-calendar .calendar-empty[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .profit-calendar .calendar-empty .anticon[data-v-23d6ebe6]{color:#888;opacity:.45}.dashboard-pro.theme-dark .profit-calendar .month-summary[data-v-23d6ebe6]{background:hsla(0,0%,100%,.04)}.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-label[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-value[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-value.positive[data-v-23d6ebe6]{color:#34d399}.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-value.negative[data-v-23d6ebe6]{color:#f87171}.dashboard-pro.theme-dark .profit-calendar .calendar-weekdays .weekday[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell[data-v-23d6ebe6]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-23d6ebe6]{background:hsla(0,0%,100%,.02)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.profit[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(34,197,94,.15),rgba(34,197,94,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.loss[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(239,68,68,.15),rgba(239,68,68,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.zero[data-v-23d6ebe6]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-profit.positive[data-v-23d6ebe6]{color:#34d399}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-profit.negative[data-v-23d6ebe6]{color:#f87171}.dashboard-pro.theme-dark .strategy-ranking .empty-state[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .strategy-ranking .empty-state .anticon[data-v-23d6ebe6]{color:#888;opacity:.45}.dashboard-pro.theme-dark .strategy-ranking .ranking-card[data-v-23d6ebe6]{background:hsla(0,0%,100%,.04);border-color:#2a2a2a}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-name[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-stats label[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .strategy-ranking .ranking-card.rank-top[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(59,130,246,.12),rgba(139,92,246,.1));border-color:rgba(59,130,246,.22)}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-badge[data-v-23d6ebe6]:not(.rank-1):not(.rank-2):not(.rank-3){background:#888;color:#f8fafc}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-stats .stat span[data-v-23d6ebe6]{color:#f1f5f9}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-stats .stat span.positive[data-v-23d6ebe6]{color:#34d399}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-stats .stat span.negative[data-v-23d6ebe6]{color:#f87171}.dashboard-pro.theme-dark .strategy-ranking .ranking-card .rank-pnl-bar[data-v-23d6ebe6]{background:hsla(0,0%,100%,.06)}.dashboard-pro.theme-dark .chart-panel .panel-legend[data-v-23d6ebe6]{color:#888}.dashboard-pro.theme-dark .chart-panel .panel-legend .legend-item .dot[data-v-23d6ebe6]{opacity:.95}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table{background:transparent;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table-thead>tr>th{background:#141414;color:#888;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table-tbody>tr>td{border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table-tbody>tr:hover>td{background:#252525}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table-placeholder{background:transparent}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-table-placeholder .ant-empty-description{color:#888}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-total-text{color:#888!important}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-item a{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:#3b82f6;border-color:#3b82f6}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-item.ant-pagination-item-active a{color:#fff}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-options .ant-pagination-options-size-changer .ant-select-selection,.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-options .ant-select-selection__rendered{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-options .ant-pagination-options-quick-jumper{color:#888}.dashboard-pro.theme-dark .pro-table[data-v-23d6ebe6] .ant-pagination .ant-pagination-options .ant-pagination-options-quick-jumper input{background:#1c1c1c;border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro .kpi-grid[data-v-23d6ebe6]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.dashboard-pro .setup-guide-card[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;margin-bottom:20px;padding:18px 20px;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08));border:1px solid rgba(59,130,246,.16);border-radius:16px}.dashboard-pro .setup-guide-card .setup-guide-copy[data-v-23d6ebe6]{min-width:0}.dashboard-pro .setup-guide-card .setup-guide-title[data-v-23d6ebe6]{font-size:16px;font-weight:700;color:#1e293b}.dashboard-pro .setup-guide-card .setup-guide-desc[data-v-23d6ebe6]{margin-top:4px;color:#64748b;line-height:1.7}.dashboard-pro .setup-guide-card .setup-guide-path[data-v-23d6ebe6]{margin-top:6px;font-size:12px;color:#64748b}.dashboard-pro .setup-guide-card .setup-guide-actions[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .kpi-card[data-v-23d6ebe6]{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:20px;overflow:hidden;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.dashboard-pro .kpi-card[data-v-23d6ebe6]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 10px 40px rgba(0,0,0,.1);box-shadow:0 10px 40px rgba(0,0,0,.1)}.dashboard-pro .kpi-card.clickable[data-v-23d6ebe6]{cursor:pointer}.dashboard-pro .kpi-card.clickable .card-arrow[data-v-23d6ebe6]{position:absolute;right:16px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:.4;-webkit-transition:all .3s;transition:all .3s}.dashboard-pro .kpi-card.clickable:hover .card-arrow[data-v-23d6ebe6]{opacity:1;right:12px}.dashboard-pro .kpi-card .kpi-glow[data-v-23d6ebe6]{position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle,rgba(59,130,246,.15) 0,transparent 70%);pointer-events:none}.dashboard-pro .kpi-card .kpi-content[data-v-23d6ebe6]{position:relative;z-index:1}.dashboard-pro .kpi-card .kpi-header[data-v-23d6ebe6]{gap:8px;margin-bottom:12px}.dashboard-pro .kpi-card .kpi-header[data-v-23d6ebe6],.dashboard-pro .kpi-card .kpi-icon[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .kpi-card .kpi-icon[data-v-23d6ebe6]{width:32px;height:32px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;background:rgba(59,130,246,.1);color:#3b82f6;font-size:16px}.dashboard-pro .kpi-card .kpi-label[data-v-23d6ebe6]{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .kpi-card .kpi-value[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:2px}.dashboard-pro .kpi-card .kpi-value .currency[data-v-23d6ebe6]{font-size:18px;font-weight:500;color:#64748b}.dashboard-pro .kpi-card .kpi-value .amount[data-v-23d6ebe6]{font-size:28px;font-weight:700;color:#1e293b;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}.dashboard-pro .kpi-card .kpi-value .unit[data-v-23d6ebe6]{font-size:14px;font-weight:500;color:#64748b;margin-left:4px}.dashboard-pro .kpi-card .kpi-sub[data-v-23d6ebe6]{margin-top:8px;font-size:12px;color:#64748b}.dashboard-pro .kpi-card .kpi-sub .label[data-v-23d6ebe6]{margin:0 2px}.dashboard-pro .kpi-card .kpi-sub .divider[data-v-23d6ebe6]{margin:0 6px;opacity:.5}.dashboard-pro .kpi-card .kpi-sub .highlight[data-v-23d6ebe6]{font-weight:600;color:#3b82f6}.dashboard-pro .kpi-card.kpi-primary[data-v-23d6ebe6]{background:linear-gradient(135deg,#1e40af,#3b82f6 50%,#60a5fa);border:none}.dashboard-pro .kpi-card.kpi-primary .kpi-icon[data-v-23d6ebe6]{background:hsla(0,0%,100%,.2);color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-label[data-v-23d6ebe6]{color:hsla(0,0%,100%,.8)}.dashboard-pro .kpi-card.kpi-primary .kpi-value .amount[data-v-23d6ebe6],.dashboard-pro .kpi-card.kpi-primary .kpi-value .currency[data-v-23d6ebe6],.dashboard-pro .kpi-card.kpi-primary .kpi-value .unit[data-v-23d6ebe6]{color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-sub[data-v-23d6ebe6]{color:hsla(0,0%,100%,.7)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-23d6ebe6]{position:absolute;right:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:60px;height:60px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg[data-v-23d6ebe6]{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-bg[data-v-23d6ebe6]{fill:none;stroke:rgba(16,185,129,.15);stroke-width:3}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-progress[data-v-23d6ebe6]{fill:none;stroke:#10b981;stroke-width:3;stroke-linecap:round;-webkit-transition:stroke-dasharray .5s ease;transition:stroke-dasharray .5s ease}.dashboard-pro .kpi-card.kpi-win-rate .kpi-icon[data-v-23d6ebe6]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .kpi-card.kpi-profit-factor .kpi-icon[data-v-23d6ebe6]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .kpi-card.kpi-drawdown .kpi-icon[data-v-23d6ebe6]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .kpi-card.kpi-drawdown .kpi-value .amount[data-v-23d6ebe6]{color:#ef4444}.dashboard-pro .kpi-card.kpi-trades .kpi-icon[data-v-23d6ebe6]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .kpi-card.kpi-strategies .kpi-icon[data-v-23d6ebe6]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .chart-row[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .chart-row[data-v-23d6ebe6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .chart-panel[data-v-23d6ebe6]{background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .chart-panel.chart-main[data-v-23d6ebe6]{-webkit-box-flex:2;-ms-flex:2;flex:2}.dashboard-pro .chart-panel.chart-side[data-v-23d6ebe6]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:300px}.dashboard-pro .chart-panel.chart-half[data-v-23d6ebe6]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .chart-panel .panel-header[data-v-23d6ebe6]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .chart-panel .panel-header[data-v-23d6ebe6],.dashboard-pro .chart-panel .panel-title[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .chart-panel .panel-title[data-v-23d6ebe6]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .chart-panel .panel-title .anticon[data-v-23d6ebe6]{color:#3b82f6}.dashboard-pro .chart-panel .panel-legend[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b}.dashboard-pro .chart-panel .panel-legend .legend-item[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot[data-v-23d6ebe6]{width:10px;height:10px;border-radius:2px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.bar[data-v-23d6ebe6]{background:-webkit-gradient(linear,left top,left bottom,from(#34d399),to(#10b981));background:linear-gradient(180deg,#34d399,#10b981)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.line[data-v-23d6ebe6]{background:-webkit-gradient(linear,left top,right top,from(#3b82f6),to(#8b5cf6));background:linear-gradient(90deg,#3b82f6,#8b5cf6)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.loss[data-v-23d6ebe6]{background:#ef4444}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.profit[data-v-23d6ebe6]{background:#10b981}.dashboard-pro .chart-panel .panel-legend.calendar-legend[data-v-23d6ebe6]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.dashboard-pro .chart-panel .panel-legend.calendar-legend .legend-gradient[data-v-23d6ebe6]{width:80px;height:10px;border-radius:3px;background:-webkit-gradient(linear,left top,right top,from(#ef4444),color-stop(#fca5a5),color-stop(#f4f4f5),color-stop(#86efac),to(#22c55e));background:linear-gradient(90deg,#ef4444,#fca5a5,#f4f4f5,#86efac,#22c55e)}.dashboard-pro .chart-panel .panel-badge[data-v-23d6ebe6]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .chart-panel .chart-body[data-v-23d6ebe6]{height:320px;padding:16px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-23d6ebe6]{height:220px}.dashboard-pro .chart-panel .chart-body.calendar-chart[data-v-23d6ebe6]{height:280px}.dashboard-pro .chart-panel .calendar-nav[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.dashboard-pro .chart-panel .calendar-nav .current-month[data-v-23d6ebe6]{font-size:14px;font-weight:600;color:#1e293b;min-width:80px;text-align:center}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-23d6ebe6]{padding:0;height:auto;color:#64748b}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-23d6ebe6]:hover:not(:disabled){color:#3b82f6}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-23d6ebe6]:disabled{opacity:.3}.dashboard-pro .chart-panel .profit-calendar[data-v-23d6ebe6]{padding:12px 16px;overflow:hidden}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-23d6ebe6],.dashboard-pro .chart-panel .profit-calendar[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-23d6ebe6]{height:280px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#64748b}.dashboard-pro .chart-panel .profit-calendar .calendar-empty .anticon[data-v-23d6ebe6]{font-size:40px;margin-bottom:10px;opacity:.3}.dashboard-pro .chart-panel .profit-calendar .month-summary[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;margin-bottom:10px;padding:8px 12px;background:rgba(241,245,249,.5);border-radius:8px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-label[data-v-23d6ebe6]{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value[data-v-23d6ebe6]{font-size:15px;font-weight:700;font-family:JetBrains Mono,monospace}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.positive[data-v-23d6ebe6]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.negative[data-v-23d6ebe6]{color:#ef4444}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays[data-v-23d6ebe6]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays .weekday[data-v-23d6ebe6]{text-align:center;font-size:10px;font-weight:600;color:#64748b;padding:4px 0}.dashboard-pro .chart-panel .profit-calendar .calendar-grid[data-v-23d6ebe6]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell[data-v-23d6ebe6]{height:36px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;background:rgba(241,245,249,.5);border:1px solid transparent;-webkit-transition:all .2s ease;transition:all .2s ease;position:relative}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.empty[data-v-23d6ebe6]{background:transparent;border:none}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-23d6ebe6]{background:rgba(241,245,249,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(34,197,94,.12),rgba(34,197,94,.2));border-color:rgba(34,197,94,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-23d6ebe6]:hover{background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(34,197,94,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(34,197,94,.2);box-shadow:0 4px 12px rgba(34,197,94,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-23d6ebe6]{background:linear-gradient(135deg,rgba(239,68,68,.12),rgba(239,68,68,.2));border-color:rgba(239,68,68,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-23d6ebe6]:hover{background:linear-gradient(135deg,rgba(239,68,68,.2),rgba(239,68,68,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(239,68,68,.2);box-shadow:0 4px 12px rgba(239,68,68,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.zero[data-v-23d6ebe6]{background:hsla(240,5%,65%,.1);border-color:hsla(240,5%,65%,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-23d6ebe6]{font-size:11px;font-weight:600;color:#1e293b;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit[data-v-23d6ebe6]{font-size:9px;font-weight:600;font-family:JetBrains Mono,monospace;margin-top:1px;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.positive[data-v-23d6ebe6]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.negative[data-v-23d6ebe6]{color:#ef4444}.dashboard-pro .strategy-ranking[data-v-23d6ebe6]{padding:16px}.dashboard-pro .strategy-ranking .empty-state[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:40px;color:#64748b}.dashboard-pro .strategy-ranking .empty-state .anticon[data-v-23d6ebe6]{font-size:40px;margin-bottom:12px;opacity:.3}.dashboard-pro .strategy-ranking .ranking-grid[data-v-23d6ebe6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.dashboard-pro .strategy-ranking .ranking-card[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:14px 16px;background:rgba(241,245,249,.5);border:1px solid #e2e8f0;border-radius:12px;position:relative;overflow:hidden}.dashboard-pro .strategy-ranking .ranking-card.rank-top[data-v-23d6ebe6]{border-color:transparent;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08))}.dashboard-pro .strategy-ranking .ranking-card .rank-badge[data-v-23d6ebe6]{width:28px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;font-size:12px;font-weight:700;background:#64748b;color:#fff;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-1[data-v-23d6ebe6]{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-2[data-v-23d6ebe6]{background:linear-gradient(135deg,#9ca3af,#6b7280)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-3[data-v-23d6ebe6]{background:linear-gradient(135deg,#cd7f32,#b87333)}.dashboard-pro .strategy-ranking .ranking-card .rank-info[data-v-23d6ebe6]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-name[data-v-23d6ebe6]{font-size:13px;font-weight:600;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat[data-v-23d6ebe6]{font-size:11px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat label[data-v-23d6ebe6]{color:#64748b;margin-right:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar[data-v-23d6ebe6]{position:absolute;bottom:0;left:0;right:0;height:3px;background:rgba(0,0,0,.05)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill[data-v-23d6ebe6]{height:100%;border-radius:0 3px 3px 0;-webkit-transition:width .5s ease;transition:width .5s ease}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.positive[data-v-23d6ebe6]{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.negative[data-v-23d6ebe6]{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.dashboard-pro .table-row[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-top:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .table-row[data-v-23d6ebe6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .table-panel[data-v-23d6ebe6]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .table-panel .panel-header[data-v-23d6ebe6]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .table-panel .panel-header[data-v-23d6ebe6],.dashboard-pro .table-panel .panel-title[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .table-panel .panel-title[data-v-23d6ebe6]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .table-panel .panel-title .anticon[data-v-23d6ebe6]{color:#3b82f6}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-23d6ebe6]{margin-left:8px;font-size:16px;cursor:pointer;color:#10b981;-webkit-transition:all .2s;transition:all .2s}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-23d6ebe6]:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.dashboard-pro .table-panel .panel-title .sound-toggle.sound-off[data-v-23d6ebe6]{color:#64748b}.dashboard-pro .table-panel .panel-badge[data-v-23d6ebe6]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .orders-panel[data-v-23d6ebe6]{margin-bottom:20px}.dashboard-pro .pro-table[data-v-23d6ebe6] .ant-table{font-size:13px}.dashboard-pro .pro-table[data-v-23d6ebe6] .ant-table-thead>tr>th{background:rgba(241,245,249,.8);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#64748b;border-bottom:1px solid #e2e8f0;padding:12px 16px}.dashboard-pro .pro-table[data-v-23d6ebe6] .ant-table-tbody>tr>td{padding:12px 16px;border-bottom:1px solid #e2e8f0}.dashboard-pro .pro-table[data-v-23d6ebe6] .ant-table-tbody>tr:hover>td{background:rgba(59,130,246,.04)}.dashboard-pro .pro-table[data-v-23d6ebe6] .ant-pagination{padding:12px 16px;margin:0}.dashboard-pro .symbol-cell .symbol-name[data-v-23d6ebe6]{font-weight:600;display:block}.dashboard-pro .symbol-cell .symbol-strategy[data-v-23d6ebe6]{font-size:11px;color:#64748b}.dashboard-pro .side-tag[data-v-23d6ebe6]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .side-tag.long[data-v-23d6ebe6]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .side-tag.short[data-v-23d6ebe6]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag[data-v-23d6ebe6]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .type-tag.long[data-v-23d6ebe6]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .type-tag.short[data-v-23d6ebe6]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag.close-long[data-v-23d6ebe6]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .type-tag.close-short[data-v-23d6ebe6]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .symbol-tag[data-v-23d6ebe6]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .exchange-tag[data-v-23d6ebe6],.dashboard-pro .symbol-tag[data-v-23d6ebe6]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .exchange-tag.binance[data-v-23d6ebe6]{background:rgba(240,185,11,.1);color:#f0b90b}.dashboard-pro .exchange-tag.okx[data-v-23d6ebe6]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .exchange-tag.bitget[data-v-23d6ebe6]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .exchange-tag.signal[data-v-23d6ebe6]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .market-type[data-v-23d6ebe6]{font-size:10px;color:#64748b;margin-top:2px}.dashboard-pro .status-tag[data-v-23d6ebe6]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .status-tag.pending[data-v-23d6ebe6]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .status-tag.processing[data-v-23d6ebe6]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .status-tag.completed[data-v-23d6ebe6]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .status-tag.failed[data-v-23d6ebe6]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .status-tag.cancelled[data-v-23d6ebe6]{background:rgba(100,116,139,.1);color:#64748b}.dashboard-pro .error-hint[data-v-23d6ebe6]{font-size:11px;color:#ef4444;margin-top:4px;cursor:pointer}.dashboard-pro .error-hint .anticon[data-v-23d6ebe6]{margin-right:4px}.dashboard-pro .notify-icons[data-v-23d6ebe6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.dashboard-pro .notify-icons .notify-icon[data-v-23d6ebe6]{color:#64748b;font-size:14px}.dashboard-pro .pnl-cell[data-v-23d6ebe6]{text-align:right}.dashboard-pro .pnl-cell .pnl-percent[data-v-23d6ebe6]{display:block;font-size:11px}.dashboard-pro .time-cell[data-v-23d6ebe6]{font-size:12px;color:#64748b}.dashboard-pro .sub-text[data-v-23d6ebe6]{font-size:11px;color:#64748b}.dashboard-pro .text-muted[data-v-23d6ebe6]{color:#64748b}.dashboard-pro .positive[data-v-23d6ebe6]{color:#10b981}.dashboard-pro .negative[data-v-23d6ebe6]{color:#ef4444}@media (max-width:768px){.dashboard-pro[data-v-23d6ebe6]{padding:12px}.dashboard-pro .setup-guide-card[data-v-23d6ebe6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:16px}.dashboard-pro .setup-guide-card .setup-guide-actions[data-v-23d6ebe6]{width:100%}.dashboard-pro .setup-guide-card .setup-guide-actions .ant-btn[data-v-23d6ebe6]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .kpi-grid[data-v-23d6ebe6]{grid-template-columns:repeat(2,1fr);gap:10px}.dashboard-pro .kpi-card[data-v-23d6ebe6]{padding:14px}.dashboard-pro .kpi-card .kpi-value .amount[data-v-23d6ebe6]{font-size:22px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-23d6ebe6]{width:48px;height:48px;right:8px}.dashboard-pro .chart-panel .chart-body[data-v-23d6ebe6]{height:260px;padding:12px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-23d6ebe6]{height:180px}.dashboard-pro .ranking-grid[data-v-23d6ebe6]{grid-template-columns:1fr}}.top-level-tabs[data-v-7a5d79cc] .ant-tabs-bar{margin-bottom:16px;border-bottom:1px solid #e8e8e8}.top-level-tabs[data-v-7a5d79cc] .ant-tabs-tab{font-size:15px;padding:12px 20px}.theme-dark .top-level-tabs[data-v-7a5d79cc] .ant-tabs-bar{border-bottom-color:#303030}.theme-dark .top-level-tabs[data-v-7a5d79cc] .ant-tabs-tab{color:hsla(0,0%,100%,.65)}.theme-dark .top-level-tabs[data-v-7a5d79cc] .ant-tabs-tab-active{color:#177ddc}.theme-dark .top-level-tabs[data-v-7a5d79cc] .ant-tabs-ink-bar{background:#177ddc}.assistant-guide-bar[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;padding:16px 18px;margin-bottom:16px;border:1px solid rgba(24,144,255,.14);border-radius:16px;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06))}.assistant-guide-bar .assistant-guide-copy[data-v-7a5d79cc]{min-width:0;-webkit-box-flex:1;-ms-flex:1 1 240px;flex:1 1 240px}.assistant-guide-bar .assistant-guide-eyebrow[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 10px;margin-bottom:8px;border-radius:999px;background:rgba(24,144,255,.12);color:#1677ff;font-size:12px;font-weight:600}.assistant-guide-bar .assistant-guide-title[data-v-7a5d79cc]{font-size:16px;font-weight:700;color:#1f2937}.assistant-guide-bar .assistant-guide-desc[data-v-7a5d79cc]{margin-top:4px;color:#475569;line-height:1.6}.assistant-guide-bar .assistant-guide-steps[data-v-7a5d79cc]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;-webkit-box-flex:1;-ms-flex:1 1 520px;flex:1 1 520px}.assistant-guide-bar .assistant-step-card[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;min-height:92px;padding:12px;border-radius:14px;background:hsla(0,0%,100%,.66);border:1px solid rgba(148,163,184,.16);-webkit-box-shadow:0 4px 12px rgba(15,23,42,.04);box-shadow:0 4px 12px rgba(15,23,42,.04)}.assistant-guide-bar .assistant-step-index[data-v-7a5d79cc]{width:28px;height:28px;border-radius:999px;background:linear-gradient(135deg,#1677ff,#6d28d9);color:#fff;font-size:13px;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.assistant-guide-bar .assistant-step-body[data-v-7a5d79cc]{min-width:0}.assistant-guide-bar .assistant-step-title[data-v-7a5d79cc]{font-size:13px;font-weight:700;color:#1f2937}.assistant-guide-bar .assistant-step-desc[data-v-7a5d79cc]{margin-top:4px;font-size:12px;line-height:1.6;color:#64748b}.assistant-guide-bar .assistant-guide-actions[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-ms-flex-negative:0;flex-shrink:0}.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-7a5d79cc]{min-width:36px;width:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-color:rgba(148,163,184,.28);color:#64748b;background:hsla(0,0%,100%,.72)}.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-7a5d79cc]:focus,.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-7a5d79cc]:hover{color:#1677ff;border-color:rgba(24,144,255,.35);background:#fff}.strategy-empty-state[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:10px;padding:28px 16px 32px;text-align:center}.strategy-empty-state .strategy-empty-desc[data-v-7a5d79cc]{max-width:420px;color:#475569;line-height:1.7}.strategy-empty-state .strategy-empty-path[data-v-7a5d79cc]{font-size:12px;color:#64748b}.trading-assistant[data-v-7a5d79cc]{padding:0;height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.trading-assistant .strategy-layout[data-v-7a5d79cc]{height:calc(100vh - 120px);-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}@media (max-width:768px){.trading-assistant[data-v-7a5d79cc]{min-height:auto;margin:-24px}.trading-assistant .assistant-guide-bar[data-v-7a5d79cc]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0 12px 12px;padding:14px}.trading-assistant .assistant-guide-bar .assistant-guide-steps[data-v-7a5d79cc]{grid-template-columns:1fr}.trading-assistant .assistant-guide-bar .assistant-guide-actions[data-v-7a5d79cc]{width:100%}.trading-assistant .assistant-guide-bar .assistant-guide-actions .ant-btn[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-layout[data-v-7a5d79cc]{height:auto;min-height:calc(100vh - 120px)}.trading-assistant .strategy-list-col[data-v-7a5d79cc]{margin-bottom:12px;height:auto;max-height:50vh}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc]{height:auto;max-height:50vh}.trading-assistant .strategy-list-col .strategy-list-card .card-title[data-v-7a5d79cc]{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;padding:12px 16px}.trading-assistant .strategy-list-col .strategy-list-card .card-title span[data-v-7a5d79cc]{font-size:14px;font-weight:600}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn[data-v-7a5d79cc]{font-size:12px;padding:0 10px;height:28px;line-height:28px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-body{max-height:calc(50vh - 60px);overflow-y:auto;padding:8px;-webkit-overflow-scrolling:touch}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-head{padding:0;min-height:48px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc]{padding:12px 8px;margin-bottom:4px;border-radius:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta{width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-action{margin-left:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-7a5d79cc]{width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper[data-v-7a5d79cc]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-bottom:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag[data-v-7a5d79cc],.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag[data-v-7a5d79cc]{font-size:10px;padding:2px 6px;line-height:1.4;margin:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag .anticon[data-v-7a5d79cc]{font-size:10px;margin-right:2px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-7a5d79cc]{font-size:14px;font-weight:600;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:4px;font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .info-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:3px;-ms-flex-negative:0;flex-shrink:0;font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .info-item .anticon{font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-label{font-size:10px;padding:2px 6px;line-height:1.4}.trading-assistant .strategy-detail-col[data-v-7a5d79cc]{height:auto;min-height:calc(50vh - 60px)}.trading-assistant .strategy-detail-col .strategy-detail-panel[data-v-7a5d79cc]{gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc] .ant-card-body{padding:16px 12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc] .ant-card-head{padding:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header[data-v-7a5d79cc]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left[data-v-7a5d79cc]{width:100%}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title[data-v-7a5d79cc]{font-size:18px;font-weight:600;margin-bottom:12px;line-height:1.4;word-break:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-7a5d79cc]{display:grid;grid-template-columns:1fr 1fr;gap:8px;-webkit-box-align:start;-ms-flex-align:start;align-items:start}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-7a5d79cc] .ant-tag{grid-column:-1;justify-self:start;margin:0;font-size:11px;padding:4px 8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:4px;font-size:12px;line-height:1.5;word-break:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item .anticon[data-v-7a5d79cc]{font-size:12px;-ms-flex-negative:0;flex-shrink:0;margin-top:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item>span[data-v-7a5d79cc]{word-break:break-word;line-height:1.5;-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item span[data-v-7a5d79cc]:not(.anticon){display:inline;word-break:break-word;overflow-wrap:break-word}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right[data-v-7a5d79cc]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:100px;font-size:13px;padding:0 12px;height:36px;line-height:36px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn .anticon[data-v-7a5d79cc]{margin-right:4px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body{padding:12px 8px;overflow-x:hidden}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-head{padding:0 8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav{padding:0 4px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-tab{font-size:13px;padding:8px 10px;margin:0 2px;white-space:nowrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-content{padding-top:12px;overflow-x:hidden}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-content .ant-tabs-tabpane{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:768px) and (max-width:480px){.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-7a5d79cc]{grid-template-columns:1fr}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-7a5d79cc] .ant-tag{grid-column:1}}@media (max-width:480px){.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc],.trading-assistant .strategy-list-col[data-v-7a5d79cc]{max-height:45vh}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-body{max-height:calc(45vh - 60px)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta[data-v-7a5d79cc]{grid-template-columns:1fr;gap:6px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-meta .meta-item[data-v-7a5d79cc]{font-size:11px;line-height:1.6}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .ant-btn[data-v-7a5d79cc]{width:100%;-webkit-box-flex:0;-ms-flex:none;flex:none}}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc],.trading-assistant .strategy-list-col[data-v-7a5d79cc]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc]{border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);border:none;overflow:hidden;-webkit-transition:-webkit-box-shadow .3s ease;transition:-webkit-box-shadow .3s ease;transition:box-shadow .3s ease;transition:box-shadow .3s ease,-webkit-box-shadow .3s ease}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-list-col .strategy-list-card .card-title[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.trading-assistant .strategy-list-col .strategy-list-card .card-title span[data-v-7a5d79cc]{font-size:16px;font-weight:700;background:linear-gradient(135deg,#1e3a5f,#2d5a87);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-7a5d79cc]{border-radius:8px;background:linear-gradient(135deg,#1890ff,#40a9ff);border:none;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35);-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-7a5d79cc]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 0 12px;border-bottom:1px solid #f0f0f0;margin-bottom:12px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch .group-mode-label[data-v-7a5d79cc]{font-size:13px;color:#8c8c8c;font-weight:500}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-7a5d79cc] .ant-radio-group .ant-radio-button-wrapper{font-size:12px;padding:0 10px;height:26px;line-height:24px;border-radius:4px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-7a5d79cc] .ant-radio-group .ant-radio-button-wrapper:first-child{border-radius:4px 0 0 4px}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-7a5d79cc] .ant-radio-group .ant-radio-button-wrapper:last-child{border-radius:0 4px 4px 0}.trading-assistant .strategy-list-col .strategy-list-card .group-mode-switch[data-v-7a5d79cc] .ant-radio-group .ant-radio-button-wrapper .anticon{margin-right:4px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;background:#fff;padding:12px}.trading-assistant .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-head{background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fafbfc));background:linear-gradient(180deg,#fff,#fafbfc);border-bottom:1px solid #f0f0f0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group[data-v-7a5d79cc]{margin-bottom:12px;background:#fff;border-radius:12px;border:1px solid #e8ecf1;overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 12px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header[data-v-7a5d79cc]:hover{background:linear-gradient(135deg,#e8f4fd,#e3f0fc)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .collapse-icon[data-v-7a5d79cc]{font-size:12px;color:#8c8c8c;-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-7a5d79cc]{font-size:16px;color:#1890ff}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-name[data-v-7a5d79cc]{font-weight:600;font-size:14px;color:#1e3a5f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status[data-v-7a5d79cc]{font-size:11px;padding:2px 8px;border-radius:10px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status.running[data-v-7a5d79cc]{background:rgba(14,203,129,.1);color:#0ecb81}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-right .group-status.stopped[data-v-7a5d79cc]{background:rgba(246,70,93,.1);color:#f6465d}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content[data-v-7a5d79cc]{padding:6px 8px 10px 6px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:10px 12px;margin-bottom:6px;margin-left:4px;border:1px solid #eef2f6;border-left:3px solid #dbe4ee;background:#fbfcfe;border-radius:8px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,.04);box-shadow:0 1px 2px rgba(15,23,42,.04)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:last-child{margin-bottom:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:hover{background:#f0f7ff;border-left-color:#1890ff;border-color:rgba(24,144,255,.22);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.08);box-shadow:0 2px 8px rgba(24,144,255,.08);-webkit-transform:none;transform:none}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-7a5d79cc]{background:linear-gradient(135deg,#e8f4ff,#f0f9ff);border-color:rgba(24,144,255,.35);border-left-color:#1890ff;border-left-width:3px;-webkit-box-shadow:0 2px 12px rgba(24,144,255,.12);box-shadow:0 2px 12px rgba(24,144,255,.12)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-content[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header[data-v-7a5d79cc]{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-actions[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:center;align-self:center;padding-top:0;margin-left:4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-actions[data-v-7a5d79cc] .ant-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;font-size:12px;color:#8c8c8c}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .info-item[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .info-item .anticon[data-v-7a5d79cc]{font-size:12px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:3px 10px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-running[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-stopped[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-error[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-item-header[data-v-7a5d79cc]{margin-bottom:2px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-name-wrapper[data-v-7a5d79cc]{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-name[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.strategy-list-item--strategy-group .strategy-item-info[data-v-7a5d79cc]{gap:10px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;cursor:pointer;padding:14px 16px;border-radius:12px;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;margin-bottom:8px;background:#fafbfc;border:1px solid transparent}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-content[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-actions[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:center;align-self:center;margin-left:4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-actions[data-v-7a5d79cc] .ant-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;font-size:12px;color:#8c8c8c}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .info-item[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .info-item .anticon[data-v-7a5d79cc]{font-size:12px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:3px 10px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-running[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-stopped[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-info .status-error[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc]:hover{background:linear-gradient(135deg,#f0f7ff,#f5f9ff);border-color:rgba(24,144,255,.2);-webkit-transform:none;transform:none;-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-7a5d79cc]{background:linear-gradient(135deg,#e6f4ff,#f0f9ff);border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}@media (max-width:768px){.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc]{padding:12px 8px;margin:0 4px 4px 4px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-7a5d79cc]{border-left-width:2px}}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-7a5d79cc]{font-weight:600;font-size:14px;-ms-flex-negative:0;flex-shrink:0;color:#1e3a5f;-webkit-transition:color .2s ease;transition:color .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:11px;line-height:1.5;padding:2px 8px;border-radius:6px;background:linear-gradient(135deg,rgba(102,126,234,.1),rgba(118,75,162,.1));border:1px solid rgba(102,126,234,.2);color:#667eea;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .exchange-tag .anticon[data-v-7a5d79cc]{font-size:11px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:10px;line-height:1.5;margin-left:4px;padding:2px 8px;border-radius:6px;background:linear-gradient(135deg,rgba(156,39,176,.1),rgba(103,58,183,.1));border:1px solid rgba(156,39,176,.2)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-type-tag .anticon[data-v-7a5d79cc]{font-size:10px;margin-right:3px}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped[data-v-7a5d79cc]{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-line-pack:start;align-content:flex-start;row-gap:6px;-webkit-column-gap:6px;-moz-column-gap:6px;column-gap:6px;width:100%}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped[data-v-7a5d79cc] .ant-tag{margin-right:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header .strategy-name-wrapper.strategy-name-wrapper--grouped .status-label[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item .strategy-item-header[data-v-7a5d79cc] .status-stopped{color:#f6465d!important;border-color:#f6465d!important}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description{max-width:calc(100% - 20px);overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;gap:12px;margin-top:8px;font-size:12px;color:var(--text-color-secondary,#8c8c8c);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap;max-width:100%;overflow:hidden}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#f0f2f5,#e8eaed);color:#595959;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-label:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-running{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border-color:rgba(14,203,129,.3);-webkit-box-shadow:0 2px 8px rgba(14,203,129,.2);box-shadow:0 2px 8px rgba(14,203,129,.2)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-running:before{-webkit-animation:statusPulse-7a5d79cc 2s infinite;animation:statusPulse-7a5d79cc 2s infinite;-webkit-box-shadow:0 0 8px #0ecb81;box-shadow:0 0 8px #0ecb81}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-stopped{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border-color:rgba(246,70,93,.3)}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .status-error{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border-color:rgba(255,77,79,.3)}@-webkit-keyframes statusPulse-7a5d79cc{0%,to{opacity:1}50%{opacity:.5}}@keyframes statusPulse-7a5d79cc{0%,to{opacity:1}50%{opacity:.5}}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .info-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-ms-flex-negative:1;flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info .info-item.strategy-name-text{font-weight:500;color:#1e3a5f;max-width:100%;white-space:normal;line-height:1.35}.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc] .ant-list-item-meta-description .strategy-item-info/deep/.ant-tag{margin-right:0;font-size:11px;line-height:18px;padding:0 6px}.trading-assistant .strategy-detail-col[data-v-7a5d79cc]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.trading-assistant .strategy-detail-col .strategy-empty-detail[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:320px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:24px 16px}.trading-assistant .strategy-detail-col .strategy-empty-detail-card[data-v-7a5d79cc]{max-width:420px;width:100%;text-align:center;padding:40px 32px 36px;border-radius:16px;background:linear-gradient(165deg,#fff,#f8fafc 55%,#f1f5f9);border:1px solid #e8ecf1;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.trading-assistant .strategy-detail-col .strategy-empty-detail-icon[data-v-7a5d79cc]{width:72px;height:72px;margin:0 auto 20px;border-radius:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(64,169,255,.08));color:#1890ff;font-size:32px}.trading-assistant .strategy-detail-col .strategy-empty-detail-title[data-v-7a5d79cc]{margin:0 0 12px;font-size:18px;font-weight:700;color:#1e3a5f;letter-spacing:.02em}.trading-assistant .strategy-detail-col .strategy-empty-detail-hint[data-v-7a5d79cc]{margin:0 0 24px;font-size:14px;line-height:1.65;color:#64748b}.trading-assistant .strategy-detail-col .strategy-empty-detail-actions[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px}.trading-assistant .strategy-detail-col .strategy-detail-panel[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px;min-height:100%}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0;background:linear-gradient(135deg,#fff,#f8fafc);border:none;border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc] .ant-card-head{background:transparent;border-bottom:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card[data-v-7a5d79cc] .ant-card-body{background:transparent;padding:20px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:24px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .strategy-title[data-v-7a5d79cc]{font-size:20px;font-weight:700;margin:0;background:linear-gradient(135deg,#1e3a5f,#2d5a87);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 14px;border-radius:20px;font-size:13px;font-weight:600;-webkit-transition:all .3s ease;transition:all .3s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge .status-dot[data-v-7a5d79cc]{width:8px;height:8px;border-radius:50%;-webkit-animation:pulse-7a5d79cc 2s infinite;animation:pulse-7a5d79cc 2s infinite}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-running[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(14,203,129,.15),rgba(14,203,129,.08));color:#0ecb81;border:1px solid rgba(14,203,129,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-running .status-dot[data-v-7a5d79cc]{background:#0ecb81;-webkit-box-shadow:0 0 12px #0ecb81;box-shadow:0 0 12px #0ecb81}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-stopped[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(246,70,93,.15),rgba(246,70,93,.08));color:#f6465d;border:1px solid rgba(246,70,93,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-stopped .status-dot[data-v-7a5d79cc]{background:#f6465d;-webkit-animation:none;animation:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-error[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(255,77,79,.15),rgba(255,77,79,.08));color:#ff4d4f;border:1px solid rgba(255,77,79,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-title-row .status-badge.status-error .status-dot[data-v-7a5d79cc]{background:#ff4d4f;-webkit-animation:none;animation:none}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px;margin-bottom:14px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:10px 14px;background:#fff;border-radius:8px;border:1px solid #f0f0f0;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon[data-v-7a5d79cc]{width:36px;height:36px;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:16px;-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.investment[data-v-7a5d79cc]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.equity[data-v-7a5d79cc]{background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-icon.pnl[data-v-7a5d79cc]{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-label[data-v-7a5d79cc]{font-size:11px;color:#8c8c8c;margin-bottom:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-value[data-v-7a5d79cc]{font-size:15px;font-weight:700;color:#1e3a5f;line-height:1.2}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card .stat-content .stat-value .pnl-percent[data-v-7a5d79cc]{font-size:12px;font-weight:500;opacity:.8}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card.pnl-card.profit .stat-content .stat-value[data-v-7a5d79cc]{color:#0ecb81}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .key-stats-grid .stat-card.pnl-card.loss .stat-content .stat-value[data-v-7a5d79cc]{color:#f6465d}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 10px;background:#f5f7fa;border-radius:14px;font-size:12px;color:#5a6872;border:1px solid #e8ecf1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-7a5d79cc]{font-size:12px;color:#1890ff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right[data-v-7a5d79cc]{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn[data-v-7a5d79cc]{min-width:120px;height:38px;border-radius:8px;font-size:14px;font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-transition:all .2s ease;transition:all .2s ease}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn .anticon[data-v-7a5d79cc]{font-size:16px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.start-btn[data-v-7a5d79cc]{background:linear-gradient(135deg,#0ecb81,#26d87d);border:none;-webkit-box-shadow:0 2px 8px rgba(14,203,129,.3);box-shadow:0 2px 8px rgba(14,203,129,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.start-btn[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 4px 12px rgba(14,203,129,.4);box-shadow:0 4px 12px rgba(14,203,129,.4)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.stop-btn[data-v-7a5d79cc]{background:linear-gradient(135deg,#f6465d,#ff6b7a);border:none;-webkit-box-shadow:0 2px 8px rgba(246,70,93,.3);box-shadow:0 2px 8px rgba(246,70,93,.3)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-right .action-btn.stop-btn[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 4px 12px rgba(246,70,93,.4);box-shadow:0 4px 12px rgba(246,70,93,.4)}@-webkit-keyframes pulse-7a5d79cc{0%,to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.6;-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes pulse-7a5d79cc{0%,to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:.6;-webkit-transform:scale(1.1);transform:scale(1.1)}}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fff;border:none;border-radius:16px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);-webkit-transition:all .3s ease;transition:all .3s ease;min-height:400px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 8px 32px rgba(0,0,0,.12);box-shadow:0 8px 32px rgba(0,0,0,.12)}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-head{background:-webkit-gradient(linear,left top,left bottom,from(#fafbfc),to(#fff));background:linear-gradient(180deg,#fafbfc,#fff);border-bottom:1px solid #f0f0f0;-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body{padding:16px;background:#fff}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body,.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs .ant-tabs-bar{-ms-flex-negative:0;flex-shrink:0}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs .ant-tabs-tabpane .strategy-tab-pane-inner{min-height:304px;padding-top:2px}.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs .ant-tabs-tabpane .position-records,.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-content-card[data-v-7a5d79cc] .ant-card-body .ant-tabs .ant-tabs-tabpane .trading-records{width:100%}.trading-assistant.theme-dark[data-v-7a5d79cc]{background:#141414;color:var(--dark-text-color,#fff)}.trading-assistant.theme-dark .creation-mode-toggle[data-v-7a5d79cc]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}.trading-assistant.theme-dark .creation-mode-toggle .mode-hint[data-v-7a5d79cc]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .card-title span[data-v-7a5d79cc]{background:linear-gradient(135deg,#e0e6ed,#c5ccd6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-head{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-head .ant-card-head-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-empty-description{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group[data-v-7a5d79cc]{background:rgba(30,30,30,.96);border:1px solid hsla(0,0%,100%,.08)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header[data-v-7a5d79cc]{background:hsla(0,0%,100%,.06);border-bottom:1px solid hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-name[data-v-7a5d79cc]{color:hsla(0,0%,100%,.92)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-icon[data-v-7a5d79cc]{color:#69c0ff}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .collapse-icon[data-v-7a5d79cc]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]{background:hsla(0,0%,100%,.05);border:1px solid hsla(0,0%,100%,.1);border-left:3px solid hsla(0,0%,100%,.12);-webkit-box-shadow:none;box-shadow:none}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:hover{background:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.14);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-7a5d79cc]{background:rgba(24,144,255,.15);border-color:rgba(24,144,255,.35);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info[data-v-7a5d79cc]{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .info-item[data-v-7a5d79cc]{color:hsla(0,0%,100%,.55)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]{background:hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.65);border-color:hsla(0,0%,100%,.12)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header .strategy-name-wrapper .info-item[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name-text[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list>.strategy-list-item .strategy-item-header .strategy-name-wrapper .info-item[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list>.strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name-text[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list>.strategy-list-item .strategy-item-header .strategy-name-wrapper .strategy-name[data-v-7a5d79cc]{color:hsla(0,0%,100%,.92)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item .strategy-item-header .strategy-name-wrapper .anticon[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list>.strategy-list-item .strategy-item-header .strategy-name-wrapper .anticon[data-v-7a5d79cc]{color:hsla(0,0%,100%,.55)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-list .ant-list-item{border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-list .ant-list-item .ant-list-item-meta-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-list-col .strategy-list-card[data-v-7a5d79cc] .ant-list .ant-list-item .ant-list-item-meta-description{color:#868993}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-7a5d79cc]{border-bottom-color:hsla(0,0%,100%,.08)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch .group-mode-label[data-v-7a5d79cc]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-7a5d79cc] .ant-radio-button-wrapper{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.65)}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-7a5d79cc] .ant-radio-button-wrapper:hover{color:#69c0ff}.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-7a5d79cc] .ant-radio-button-wrapper-checked{background:rgba(24,144,255,.25)!important;border-color:#1890ff!important;color:#fff!important}.trading-assistant.theme-dark .strategy-list-col .strategy-group[data-v-7a5d79cc]{background:rgba(0,0,0,.18);border-color:hsla(0,0%,100%,.08)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header[data-v-7a5d79cc]{background:hsla(0,0%,100%,.04)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header[data-v-7a5d79cc]:hover{background:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header .group-name[data-v-7a5d79cc]{color:hsla(0,0%,100%,.88)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-header .collapse-icon[data-v-7a5d79cc]{color:hsla(0,0%,100%,.45)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item[data-v-7a5d79cc]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08);border-left-color:hsla(0,0%,100%,.12)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:hover{background:hsla(0,0%,100%,.05);border-color:hsla(0,0%,100%,.12);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item.active[data-v-7a5d79cc]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.28);border-left-color:#1890ff}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info[data-v-7a5d79cc]{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .info-item[data-v-7a5d79cc]{color:hsla(0,0%,100%,.55)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-label[data-v-7a5d79cc]{background:hsla(0,0%,100%,.06);color:hsla(0,0%,100%,.45);border-color:hsla(0,0%,100%,.1)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-running[data-v-7a5d79cc]{background:rgba(14,203,129,.12);color:#52c41a;border-color:rgba(14,203,129,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-stopped[data-v-7a5d79cc]{background:rgba(246,70,93,.12);color:#f6465d;border-color:rgba(246,70,93,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item .strategy-item-info .status-error[data-v-7a5d79cc]{background:rgba(255,77,79,.12);color:#ff4d4f;border-color:rgba(255,77,79,.25)}.trading-assistant.theme-dark .strategy-list-col .strategy-name-wrapper .info-item[data-v-7a5d79cc],.trading-assistant.theme-dark .strategy-list-col .strategy-name-wrapper .strategy-name-text[data-v-7a5d79cc]{color:hsla(0,0%,100%,.88)!important}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-7a5d79cc]{background:hsla(0,0%,100%,.02);border:1px solid hsla(0,0%,100%,.04)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-7a5d79cc]:hover{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1);-webkit-transform:none;transform:none}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-7a5d79cc]{background:rgba(24,144,255,.1);border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-name[data-v-7a5d79cc]{color:#e0e6ed}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-info[data-v-7a5d79cc]{color:#868993}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .exchange-tag[data-v-7a5d79cc]{background:rgba(102,126,234,.15);border-color:rgba(102,126,234,.3);color:#8da2f0}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .strategy-type-tag[data-v-7a5d79cc]{background:rgba(177,130,255,.15);border-color:rgba(177,130,255,.3);color:#b182ff}.trading-assistant.theme-dark .strategy-list-col .strategy-list-item .strategy-item-header .strategy-name[data-v-7a5d79cc]{color:hsla(0,0%,100%,.88)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-7a5d79cc]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-7a5d79cc] .ant-card-head{background:transparent;border-bottom:none}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card[data-v-7a5d79cc] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-header .header-left .strategy-title-row .strategy-title[data-v-7a5d79cc]{background:none!important;-webkit-background-clip:border-box!important;background-clip:border-box!important;color:#e0e6ed!important;-webkit-text-fill-color:#e0e6ed!important}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card[data-v-7a5d79cc]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card[data-v-7a5d79cc]:hover{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.1)}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card .stat-content .stat-label[data-v-7a5d79cc]{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .key-stats-grid .stat-card .stat-content .stat-value[data-v-7a5d79cc]{color:#e0e6ed}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-7a5d79cc]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.08);color:#a0a8b3}.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-7a5d79cc]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-card-head{background:#1c1c1c;border-bottom-color:hsla(0,0%,100%,.06)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-card-head .ant-card-head-title{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-card-body{background:transparent}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-tab{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-tab:hover{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-content{color:#d1d4dc}.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-empty-description{color:#868993}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-card[data-v-7a5d79cc]{background:#1c1c1c;border:1px solid hsla(0,0%,100%,.08);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.35);box-shadow:0 8px 32px rgba(0,0,0,.35)}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-icon[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.22),rgba(64,169,255,.1));color:#69c0ff}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-title[data-v-7a5d79cc]{color:hsla(0,0%,100%,.92)}.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-hint[data-v-7a5d79cc]{color:hsla(0,0%,100%,.55)}.theme-dark .assistant-guide-bar[data-v-7a5d79cc]{border-color:rgba(23,125,220,.28);background:linear-gradient(135deg,rgba(23,125,220,.14),rgba(114,46,209,.12))}.theme-dark .assistant-guide-bar .assistant-guide-eyebrow[data-v-7a5d79cc]{background:rgba(23,125,220,.2);color:#69c0ff}.theme-dark .assistant-guide-bar .assistant-guide-title[data-v-7a5d79cc]{color:hsla(0,0%,100%,.92)}.theme-dark .assistant-guide-bar .assistant-guide-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.72)}.theme-dark .assistant-guide-bar .assistant-step-card[data-v-7a5d79cc]{background:rgba(30,30,30,.6);border-color:hsla(0,0%,100%,.08)}.theme-dark .assistant-guide-bar .assistant-step-title[data-v-7a5d79cc]{color:hsla(0,0%,100%,.9)}.theme-dark .assistant-guide-bar .assistant-step-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.58)}.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-7a5d79cc]{background:rgba(30,30,30,.5);border-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.72)}.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-7a5d79cc]:focus,.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-7a5d79cc]:hover{background:rgba(50,50,50,.7);border-color:rgba(105,192,255,.45);color:#91d5ff}.theme-dark .strategy-empty-state .strategy-empty-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.72)}.theme-dark .strategy-empty-state .strategy-empty-path[data-v-7a5d79cc]{color:hsla(0,0%,100%,.48)}.strategy-params-collapse[data-v-7a5d79cc]{background:#fafafa;border-radius:10px;overflow:hidden}.strategy-params-collapse[data-v-7a5d79cc] .ant-collapse-item{border-bottom-color:#f0f0f0}.strategy-params-collapse[data-v-7a5d79cc] .ant-collapse-header{font-weight:500;font-size:13px}.strategy-params-collapse[data-v-7a5d79cc] .ant-collapse-content-box{padding:12px 16px}.strategy-params-collapse[data-v-7a5d79cc] .ant-input-number{width:100%}.ai-filter-box[data-v-7a5d79cc]{margin-top:12px;padding:14px 14px 12px;border:1px solid #e8e8e8;border-radius:10px;background:-webkit-gradient(linear,left top,left bottom,from(#fafcff),to(#fff));background:linear-gradient(180deg,#fafcff,#fff)}.ai-filter-header[data-v-7a5d79cc]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px}.ai-filter-header[data-v-7a5d79cc],.ai-filter-title[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ai-filter-title[data-v-7a5d79cc]{gap:8px;font-weight:600;color:#262626}.ai-filter-title .anticon[data-v-7a5d79cc]{color:#1890ff}.ai-filter-hint[data-v-7a5d79cc]{margin-top:6px;font-size:12px;line-height:1.5;color:#8c8c8c}.symbol-option[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-name[data-v-7a5d79cc]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-name-extra[data-v-7a5d79cc]{font-size:12px;color:#999;margin-left:4px}.creation-mode-toggle[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;margin-bottom:16px;padding:14px 16px;background:rgba(24,144,255,.04);border-radius:8px;border:1px solid rgba(24,144,255,.12)}.creation-mode-toggle .mode-meta[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px}.creation-mode-toggle .mode-title[data-v-7a5d79cc]{font-size:14px;font-weight:600;color:#262626}.creation-mode-toggle .mode-hint[data-v-7a5d79cc]{color:rgba(0,0,0,.45);font-size:12px}@media (max-width:768px){.creation-mode-toggle[data-v-7a5d79cc]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}}.section-block-title[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px;margin-bottom:16px;font-size:14px;font-weight:600;color:#262626}.section-block-desc[data-v-7a5d79cc]{font-size:12px;font-weight:400;color:#8c8c8c}.simple-mode-hero[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding:14px 16px;margin-bottom:16px;border-radius:10px;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06));border:1px solid rgba(24,144,255,.14)}.simple-mode-hero-main[data-v-7a5d79cc]{min-width:0}.simple-mode-kicker[data-v-7a5d79cc]{font-size:12px;font-weight:600;color:#1890ff;margin-bottom:4px}.simple-mode-hero-desc[data-v-7a5d79cc]{font-size:12px;line-height:1.6;color:#595959}.simple-mode-badges[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}.advanced-settings-shell[data-v-7a5d79cc],.selected-indicator-card[data-v-7a5d79cc],.simple-essentials-card[data-v-7a5d79cc]{padding:20px;margin-bottom:18px;border-radius:12px;background:#fafcff;border:1px solid rgba(24,144,255,.12);-webkit-box-shadow:0 8px 24px rgba(15,23,42,.04);box-shadow:0 8px 24px rgba(15,23,42,.04)}.required-label[data-v-7a5d79cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.required-star[data-v-7a5d79cc]{color:#f5222d;margin-right:4px}.compact-form-item[data-v-7a5d79cc]{margin-bottom:18px}.compact-grid-row[data-v-7a5d79cc]{margin-bottom:4px}.execution-step-layout[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px}.execution-step-hero[data-v-7a5d79cc]{padding:16px 18px;border-radius:12px;background:linear-gradient(135deg,rgba(82,196,26,.08),rgba(24,144,255,.08));border:1px solid rgba(24,144,255,.14)}.execution-step-hero-desc[data-v-7a5d79cc]{font-size:12px;line-height:1.7;color:#595959}.execution-section-card[data-v-7a5d79cc]{padding:18px 20px;border-radius:12px;background:#fafcff;border:1px solid rgba(24,144,255,.12);-webkit-box-shadow:0 8px 24px rgba(15,23,42,.04);box-shadow:0 8px 24px rgba(15,23,42,.04)}.section-inline-alert[data-v-7a5d79cc]{margin-top:4px}.notify-channel-grid[data-v-7a5d79cc]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px}.execution-warn-text[data-v-7a5d79cc]{color:#ff9800}.execution-mode-cards[data-v-7a5d79cc]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.execution-mode-card[data-v-7a5d79cc]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:14px;min-height:110px;padding:16px;border-radius:12px;border:1px solid rgba(24,144,255,.12);background:#fff;cursor:pointer;-webkit-transition:all .2s ease;transition:all .2s ease}.execution-mode-card[data-v-7a5d79cc]:hover{border-color:rgba(24,144,255,.35);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.08);box-shadow:0 8px 24px rgba(24,144,255,.08)}.execution-mode-card.active[data-v-7a5d79cc]{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.03));-webkit-box-shadow:0 10px 28px rgba(24,144,255,.12);box-shadow:0 10px 28px rgba(24,144,255,.12)}.execution-mode-card.disabled[data-v-7a5d79cc]{cursor:not-allowed;opacity:.68;background:#fafafa}.execution-mode-card.disabled[data-v-7a5d79cc]:hover{border-color:rgba(24,144,255,.12);-webkit-box-shadow:none;box-shadow:none}.execution-mode-card-icon[data-v-7a5d79cc]{-webkit-box-flex:0;-ms-flex:0 0 42px;flex:0 0 42px;width:42px;height:42px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:12px;font-size:18px}.execution-mode-card-icon.signal[data-v-7a5d79cc]{color:#1890ff;background:rgba(24,144,255,.1)}.execution-mode-card-icon.live[data-v-7a5d79cc]{color:#fa8c16;background:rgba(250,140,22,.12)}.execution-mode-card-body[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.execution-mode-card-title[data-v-7a5d79cc]{font-size:14px;font-weight:600;color:#262626;margin-bottom:6px}.execution-mode-card-desc[data-v-7a5d79cc]{font-size:12px;line-height:1.6;color:#8c8c8c}.execution-mode-card-check[data-v-7a5d79cc]{position:absolute;top:12px;right:12px;color:#1890ff;font-size:18px}.steps-container[data-v-7a5d79cc]{margin-bottom:24px}@media (max-width:768px){.steps-container[data-v-7a5d79cc]{margin-bottom:16px}.steps-container[data-v-7a5d79cc] .ant-steps-item-title{font-size:12px}.steps-container[data-v-7a5d79cc] .ant-steps-item-icon{width:24px;height:24px;line-height:24px;font-size:12px}}.form-container[data-v-7a5d79cc]{min-height:400px;padding:24px 0}.form-container .step-content[data-v-7a5d79cc]{-webkit-animation:fadeIn-7a5d79cc .3s;animation:fadeIn-7a5d79cc .3s}.form-container[data-v-7a5d79cc] .ant-form-item{margin-bottom:20px}@media (max-width:768px){.form-container[data-v-7a5d79cc]{min-height:300px;padding:16px 0}.form-container .simple-mode-hero[data-v-7a5d79cc]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.form-container .simple-mode-badges[data-v-7a5d79cc]{width:100%}.form-container .notify-channel-grid[data-v-7a5d79cc]{grid-template-columns:repeat(2,minmax(0,1fr))}.form-container .execution-mode-cards[data-v-7a5d79cc]{grid-template-columns:1fr}.form-container .execution-section-card[data-v-7a5d79cc],.form-container .execution-step-hero[data-v-7a5d79cc]{padding:16px}.form-container[data-v-7a5d79cc] .ant-form-item-label{padding-bottom:4px}.form-container[data-v-7a5d79cc] .ant-form-item-label label{font-size:13px}.form-container[data-v-7a5d79cc] .ant-input,.form-container[data-v-7a5d79cc] .ant-input-number,.form-container[data-v-7a5d79cc] .ant-select{font-size:14px}.form-container[data-v-7a5d79cc] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.form-container[data-v-7a5d79cc] .ant-radio-group .ant-radio-wrapper{font-size:13px}}@media (max-width:480px){.form-container[data-v-7a5d79cc]{min-height:250px;padding:12px 0}.form-container[data-v-7a5d79cc] .ant-form-item-label label{font-size:12px}.form-container[data-v-7a5d79cc] .ant-input,.form-container[data-v-7a5d79cc] .ant-input-number,.form-container[data-v-7a5d79cc] .ant-select{font-size:13px}}.strategy-type-selector[data-v-7a5d79cc]{padding:16px 0}.strategy-type-selector .market-category-selector[data-v-7a5d79cc]{margin-bottom:16px}.strategy-type-selector .market-category-selector .selector-label[data-v-7a5d79cc]{font-weight:600;margin-bottom:8px;color:#262626}.strategy-type-selector .market-category-selector[data-v-7a5d79cc] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}.strategy-type-selector .strategy-type-card[data-v-7a5d79cc]{cursor:pointer;-webkit-transition:all .3s;transition:all .3s;height:100%;min-height:180px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.strategy-type-selector .strategy-type-card[data-v-7a5d79cc]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.strategy-type-selector .strategy-type-card.selected[data-v-7a5d79cc]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}.strategy-type-selector .strategy-type-card .strategy-type-content[data-v-7a5d79cc]{text-align:center;padding:16px}.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-7a5d79cc]{font-size:48px;color:#1890ff;margin-bottom:16px}.strategy-type-selector .strategy-type-card .strategy-type-content h3[data-v-7a5d79cc]{font-size:18px;font-weight:600;margin-bottom:8px;color:#1f1f1f}.strategy-type-selector .strategy-type-card .strategy-type-content p[data-v-7a5d79cc]{font-size:14px;color:#8c8c8c;margin:0;line-height:1.6}.indicator-option[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:12px}.indicator-option .indicator-option-main[data-v-7a5d79cc]{-webkit-box-flex:1;-ms-flex:1;flex:1}.indicator-option .indicator-name[data-v-7a5d79cc]{display:block;color:#262626;font-weight:600}.indicator-option-desc[data-v-7a5d79cc]{display:block;margin-top:2px;color:#8c8c8c;font-size:12px;line-height:1.5}.selected-indicator-header[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin-bottom:8px}.selected-indicator-name[data-v-7a5d79cc]{font-weight:600;color:#262626}.indicator-description[data-v-7a5d79cc]{border-radius:4px;color:var(--text-color,#666);font-size:14px;line-height:1.6}.theme-dark .advanced-settings-shell[data-v-7a5d79cc],.theme-dark .creation-mode-toggle[data-v-7a5d79cc],.theme-dark .selected-indicator-card[data-v-7a5d79cc],.theme-dark .simple-essentials-card[data-v-7a5d79cc]{background:hsla(0,0%,100%,.04);border-color:hsla(0,0%,100%,.1)}.theme-dark .indicator-option .indicator-name[data-v-7a5d79cc],.theme-dark .mode-title[data-v-7a5d79cc],.theme-dark .section-block-title[data-v-7a5d79cc],.theme-dark .selected-indicator-name[data-v-7a5d79cc]{color:hsla(0,0%,100%,.9)}.theme-dark .indicator-option-desc[data-v-7a5d79cc],.theme-dark .mode-hint[data-v-7a5d79cc],.theme-dark .section-block-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.6)}.theme-dark .simple-mode-hero[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.14),rgba(114,46,209,.12));border-color:rgba(64,169,255,.18)}.theme-dark .execution-step-hero[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(82,196,26,.14),rgba(24,144,255,.14));border-color:rgba(64,169,255,.18)}.theme-dark .execution-mode-card[data-v-7a5d79cc]{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08)}.theme-dark .execution-mode-card[data-v-7a5d79cc]:hover{border-color:rgba(64,169,255,.3);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)}.theme-dark .execution-mode-card.active[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff}.theme-dark .execution-mode-card.disabled[data-v-7a5d79cc]{background:hsla(0,0%,100%,.02)}.theme-dark .execution-mode-card-title[data-v-7a5d79cc]{color:#e0e6ed}.theme-dark .execution-mode-card-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.6)}.theme-dark .simple-mode-kicker[data-v-7a5d79cc]{color:#69c0ff}.theme-dark .execution-step-hero-desc[data-v-7a5d79cc],.theme-dark .simple-mode-hero-desc[data-v-7a5d79cc]{color:hsla(0,0%,100%,.72)}.indicator-params-form[data-v-7a5d79cc]{padding:12px;background-color:var(--bg-color-secondary,#f5f7fa);border-radius:6px;border:1px dashed var(--border-color,#e0e0e0)}.indicator-params-form .param-item[data-v-7a5d79cc]{margin-bottom:12px}.indicator-params-form .param-label[data-v-7a5d79cc]{display:block;font-size:13px;color:var(--text-color,#666);margin-bottom:4px;font-weight:500}.form-item-hint[data-v-7a5d79cc]{margin-top:4px;font-size:12px;color:var(--text-color-secondary,#8c8c8c)}.test-result[data-v-7a5d79cc]{margin-top:8px;padding:8px;border-radius:4px;font-size:14px}.test-result.success[data-v-7a5d79cc]{background-color:#f6ffed;border:1px solid #b7eb8f;color:#52c41a}.ip-whitelist-tip[data-v-7a5d79cc]{margin-top:12px;padding:12px;background-color:#e6f7ff;border:1px solid #91d5ff;border-radius:4px;font-size:13px;color:#1890ff;line-height:1.6}.ip-whitelist-tip .anticon[data-v-7a5d79cc]{margin-right:6px;color:#1890ff}.ip-whitelist-tip .ip-list[data-v-7a5d79cc]{margin-top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.ip-whitelist-tip .ip-list .ant-tag[data-v-7a5d79cc]{margin:0;font-family:Courier New,monospace;font-size:12px}.ip-whitelist-tip.error[data-v-7a5d79cc]{background-color:#fff2f0;border:1px solid #ffccc7;color:#ff4d4f}@-webkit-keyframes fadeIn-7a5d79cc{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeIn-7a5d79cc{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}[data-v-7a5d79cc] .danger-item{color:#ff4d4f}[data-v-7a5d79cc] .mobile-modal .ant-modal{top:20px;padding-bottom:0}[data-v-7a5d79cc] .mobile-modal .ant-modal-content{max-height:calc(100vh - 40px);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}[data-v-7a5d79cc] .mobile-modal .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px}[data-v-7a5d79cc] .mobile-modal .ant-modal-footer{padding:12px 16px;border-top:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}[data-v-7a5d79cc] .mobile-modal .ant-modal-footer .ant-btn{font-size:13px;padding:0 12px;height:32px}.add-symbol-modal-content .market-tabs[data-v-7a5d79cc],.add-symbol-modal-content .symbol-search-section[data-v-7a5d79cc]{margin-bottom:16px}.add-symbol-modal-content .section-title[data-v-7a5d79cc]{font-weight:500;margin-bottom:8px;color:rgba(0,0,0,.85);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-symbol-modal-content .hot-symbols-section[data-v-7a5d79cc],.add-symbol-modal-content .search-results-section[data-v-7a5d79cc]{margin-bottom:16px}.add-symbol-modal-content .symbol-list .symbol-list-item[data-v-7a5d79cc]{cursor:pointer;-webkit-transition:background-color .3s;transition:background-color .3s;padding:8px 12px;border-radius:4px}.add-symbol-modal-content .symbol-list .symbol-list-item[data-v-7a5d79cc]:hover{background-color:#f5f5f5}.add-symbol-modal-content .symbol-item-content[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-symbol-modal-content .symbol-item-content .symbol-code[data-v-7a5d79cc]{font-weight:500;margin-right:8px}.add-symbol-modal-content .symbol-item-content .symbol-name[data-v-7a5d79cc]{color:rgba(0,0,0,.45)}.add-symbol-modal-content .selected-symbol-section[data-v-7a5d79cc]{padding:12px;background-color:#f6ffed;border:1px solid #b7eb8f;border-radius:4px;margin-top:16px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info[data-v-7a5d79cc]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:8px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info .symbol-code[data-v-7a5d79cc]{font-weight:500;margin-right:8px}.add-symbol-modal-content .selected-symbol-section .selected-symbol-info .symbol-name[data-v-7a5d79cc]{color:rgba(0,0,0,.45)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-body{background:#1e1e1e}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-title{color:hsla(0,0%,100%,.88)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body .ant-modal-confirm-content{color:hsla(0,0%,100%,.65)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns{border-top:1px solid hsla(0,0%,100%,.06);padding-top:12px}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns .ant-btn-default{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.85)}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-btns .ant-btn-danger{background:#ff4d4f;border-color:#ff4d4f;color:#fff}body.dark .ta-strategy-confirm-modal.ant-modal-confirm .ant-modal-confirm-body>.anticon{color:#faad14}body.dark .mode-selector-modal .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .mode-selector-modal .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .mode-selector-modal .ant-modal-content .ant-modal-body{color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.08);-webkit-box-shadow:0 18px 48px rgba(0,0,0,.45);box-shadow:0 18px 48px rgba(0,0,0,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .ant-modal-body{color:#d1d4dc;background:#1e1e1e}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle .mode-hint,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle .mode-title{color:hsla(0,0%,100%,.72)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-title{color:hsla(0,0%,100%,.65)!important}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-description{color:hsla(0,0%,100%,.35)!important}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-wait .ant-steps-item-icon{background:transparent;border-color:hsla(0,0%,100%,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-wait .ant-steps-item-icon .ant-steps-icon{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-process .ant-steps-item-icon{background:#1890ff;border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon{color:#fff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-finish .ant-steps-item-icon{background:transparent;border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-finish .ant-steps-item-icon .ant-steps-icon{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-tail:after{background:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .notify-channel-grid .ant-checkbox-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:40px;padding:0 12px;border-radius:10px;background:hsla(0,0%,100%,.03);border:1px solid hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.72)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-webkit-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-moz-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:-ms-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::-ms-input-placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number::placeholder,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input::placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:focus,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:hover,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:focus,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:hover{border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap{background:#252525;border-left-color:hsla(0,0%,100%,.12)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap .ant-input-number-handler{border-bottom-color:hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection .ant-select-arrow{color:hsla(0,0%,100%,.35)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection:hover{border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-wrapper{color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-switch{background:hsla(0,0%,100%,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-switch.ant-switch-checked{background:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input{background:#1c1c1c;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-moz-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark textarea.ant-input::placeholder{color:hsla(0,0%,100%,.25)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-explain,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-extra{color:hsla(0,0%,100%,.35)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-form-item-label>label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse{background:#1c1c1c!important;border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-item{border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-header{color:hsla(0,0%,100%,.85)!important;background:hsla(0,0%,100%,.03)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-params-collapse .ant-collapse-content{background:#1c1c1c;border-color:hsla(0,0%,100%,.06);color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .advanced-settings-shell,body.dark .strategy-form-modal.strategy-form-modal-dark .execution-section-card,body.dark .strategy-form-modal.strategy-form-modal-dark .selected-indicator-card,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-essentials-card{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08);-webkit-box-shadow:none;box-shadow:none}body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(114,46,209,.14));border-color:rgba(64,169,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero{background:linear-gradient(135deg,rgba(82,196,26,.16),rgba(24,144,255,.14));border-color:rgba(64,169,255,.2)}body.dark .strategy-form-modal.strategy-form-modal-dark .mode-title,body.dark .strategy-form-modal.strategy-form-modal-dark .section-block-title,body.dark .strategy-form-modal.strategy-form-modal-dark .selected-indicator-name{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .form-item-hint,body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-description,body.dark .strategy-form-modal.strategy-form-modal-dark .section-block-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero-desc{color:hsla(0,0%,100%,.62)}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box .ai-filter-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .ai-filter-box .ai-filter-hint{color:hsla(0,0%,100%,.4)}body.dark .strategy-form-modal.strategy-form-modal-dark .form-container{color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .form-container .ant-form-item-label>label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-description{background:#1c1c1c;color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-params-form{background:#1c1c1c;border-color:hsla(0,0%,100%,.1)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-params-form .param-label{color:hsla(0,0%,100%,.65)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card{border-color:hsla(0,0%,100%,.1);background:#1c1c1c;color:#d1d4dc}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card:hover{border-color:#177ddc}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card.selected{border-color:#177ddc;background:rgba(23,125,220,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card .strategy-type-content h3{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .strategy-type-card .strategy-type-content p{color:hsla(0,0%,100%,.45)}body.dark .strategy-form-modal.strategy-form-modal-dark .strategy-type-selector .market-category-selector .selector-label{color:hsla(0,0%,100%,.75)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-option .indicator-name{color:hsla(0,0%,100%,.9)}body.dark .strategy-form-modal.strategy-form-modal-dark .indicator-option-desc{color:hsla(0,0%,100%,.6)}body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select-selection-selected-value{color:#d1d4dc!important}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card{background:hsla(0,0%,100%,.03);border-color:hsla(0,0%,100%,.08)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card:hover{border-color:rgba(64,169,255,.3);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card.active{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card.disabled{background:hsla(0,0%,100%,.02)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-icon.signal{color:#69c0ff;background:rgba(24,144,255,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-icon.live{color:#ffc069;background:rgba(250,140,22,.15)}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-title{color:#e0e6ed}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-mode-card-desc{color:hsla(0,0%,100%,.6)}body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-kicker{color:#69c0ff}body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero-desc,body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero-desc{color:hsla(0,0%,100%,.72)}body.dark .ant-modal-wrap .ant-modal-content{background:#1e1e1e}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-header{background:#252525;border-bottom-color:hsla(0,0%,100%,.06)}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-header .ant-modal-title{color:#e0e6ed}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-close-x{color:hsla(0,0%,100%,.45)}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-body{color:#d1d4dc}body.dark .ant-modal-wrap .ant-modal-content .ant-modal-footer{border-top-color:hsla(0,0%,100%,.06);background:#252525}body.dark .ant-select-dropdown{background:#1e1e1e;border:1px solid hsla(0,0%,100%,.1);-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4);box-shadow:0 4px 12px rgba(0,0,0,.4)}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d1d4dc}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-disabled{color:hsla(0,0%,100%,.25)}body.dark .ant-select-dropdown .ant-select-search__field{background:#141414;border-color:hsla(0,0%,100%,.12);color:#d1d4dc}body.dark .ant-select-dropdown .ant-select-dropdown-menu{background:#1e1e1e}body.dark .ant-select-dropdown .ant-empty-description{color:hsla(0,0%,100%,.35)}body.dark .ant-modal-wrap .ant-collapse{background:#1c1c1c!important;border-color:hsla(0,0%,100%,.08)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-item{border-color:hsla(0,0%,100%,.08)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-header{color:hsla(0,0%,100%,.85)!important;background:hsla(0,0%,100%,.03)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-header .anticon{color:hsla(0,0%,100%,.45)}body.dark .ant-modal-wrap .ant-collapse .ant-collapse-content{background:#1c1c1c;border-color:hsla(0,0%,100%,.06);color:#d1d4dc}body.dark .ant-modal-wrap .ant-spin-text{color:hsla(0,0%,100%,.65)}body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)}body.dark .ant-modal-wrap .ant-alert .ant-alert-message{color:hsla(0,0%,100%,.75)}body.dark .ant-modal-wrap .ant-alert .ant-alert-description{color:hsla(0,0%,100%,.55)} \ No newline at end of file diff --git a/frontend/dist/css/394.130d598a.css b/frontend/dist/css/394.130d598a.css new file mode 100644 index 0000000..584ddfa --- /dev/null +++ b/frontend/dist/css/394.130d598a.css @@ -0,0 +1 @@ +[data-v-4fea1865] .ant-modal{top:20px!important}.visual-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;background:#fafafa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:500px;overflow:hidden}.visual-modules-list[data-v-4fea1865]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px}.empty-visual-state[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;color:#999}.visual-module-card[data-v-4fea1865]{background:#fff;border:1px solid #e8e8e8;border-radius:4px;margin-bottom:12px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.visual-module-card .module-header[data-v-4fea1865]{padding:8px 12px;border-bottom:1px solid #f0f0f0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#f9f9f9}.visual-module-card .module-header .module-title[data-v-4fea1865],.visual-module-card .module-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.visual-module-card .module-header .module-title[data-v-4fea1865]{font-weight:500;gap:8px}.visual-module-card .module-header .remove-icon[data-v-4fea1865]{cursor:pointer;color:#999}.visual-module-card .module-header .remove-icon[data-v-4fea1865]:hover{color:#ff4d4f}.visual-module-card .module-body[data-v-4fea1865]{padding:12px}.visual-module-card .style-config[data-v-4fea1865]{margin-top:12px;padding-top:12px;border-top:1px dashed #f0f0f0}.visual-module-card .style-config .label[data-v-4fea1865]{margin-right:8px;color:#666}.add-module-bar[data-v-4fea1865]{padding:12px;background:#fff;border-top:1px solid #e8e8e8}@media (max-width:768px){.visual-editor-container[data-v-4fea1865]{height:auto;min-height:400px}}.ant-form-item[data-v-4fea1865]{margin-bottom:16px}.editor-content[data-v-4fea1865]{padding:24px;background:#fff;min-height:500px;max-height:82vh;overflow-y:auto}.editor-layout[data-v-4fea1865]{min-height:450px}.code-editor-column[data-v-4fea1865]{height:100%}.code-editor-column[data-v-4fea1865],.code-section[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-section[data-v-4fea1865]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;padding-bottom:12px;border-bottom:2px solid #f0f0f0}.code-section .section-header .section-title[data-v-4fea1865],.code-section .section-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.code-section .section-header .section-title[data-v-4fea1865]{font-weight:600;font-size:14px;color:#262626;gap:8px}.code-section .section-header .section-title[data-v-4fea1865]:before{content:"";display:inline-block;width:4px;height:14px;background:#1890ff;border-radius:2px}.code-section .section-header .section-actions[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff;padding:0 8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff}.code-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;overflow:hidden;height:62vh;min-height:520px;max-height:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05);box-shadow:inset 0 1px 3px rgba(0,0,0,.05);-webkit-transition:all .3s ease;transition:all .3s ease}.code-editor-container[data-v-4fea1865]:hover{border-color:#40a9ff}.code-editor-container[data-v-4fea1865]:focus-within{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05);box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05)}.code-editor-container[data-v-4fea1865] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fafafa}.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:100%;max-height:none;overflow-y:auto;overflow-x:auto}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:100%!important;padding-left:12px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5);width:45px;padding-right:4px}.code-editor-container[data-v-4fea1865] .CodeMirror-linenumber{padding:0 8px 0 4px;min-width:30px;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-4fea1865] .CodeMirror-lines{padding:12px 8px;background:#fff}.code-editor-container[data-v-4fea1865] .CodeMirror-line{padding-left:0}.code-editor-container[data-v-4fea1865] .CodeMirror-cursor{border-left:2px solid #1890ff}.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}.code-mode-split[data-v-4fea1865]{width:100%}.ai-pane[data-v-4fea1865],.ai-panel[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ai-panel[data-v-4fea1865]{border:1px solid #e8e8e8;border-radius:6px;background:#fafafa;padding:12px;height:62vh;min-height:520px}.ai-panel-title[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:10px;color:#262626}.ai-panel-hint[data-v-4fea1865]{margin-top:10px;color:#8c8c8c;font-size:12px;line-height:1.5}.ai-panel[data-v-4fea1865] textarea.ant-input{-webkit-box-flex:1;-ms-flex:1;flex:1;resize:none}.editor-footer[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.editor-footer[data-v-4fea1865] .ant-btn{height:36px;padding:0 20px;font-weight:500;border-radius:4px;-webkit-transition:all .3s ease;transition:all .3s ease}.editor-footer[data-v-4fea1865] .ant-btn:not(.ant-btn-primary):hover{border-color:#40a9ff;color:#40a9ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary{-webkit-box-shadow:0 2px 4px rgba(24,144,255,.3);box-shadow:0 2px 4px rgba(24,144,255,.3)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary:hover{-webkit-box-shadow:0 4px 12px rgba(24,144,255,.4);box-shadow:0 4px 12px rgba(24,144,255,.4);-webkit-transform:translateY(-1px);transform:translateY(-1px)}@media (max-width:768px){.indicator-editor-modal[data-v-4fea1865] .ant-modal{width:100%!important;max-width:100%!important;margin:0!important;top:0!important;padding-bottom:0!important;max-height:100vh!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-content{height:100vh!important;max-height:100vh!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-header{-ms-flex-negative:0;flex-shrink:0;padding:16px;border-bottom:1px solid #e8e8e8}.indicator-editor-modal[data-v-4fea1865] .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:0!important;min-height:0}.indicator-editor-modal[data-v-4fea1865] .ant-modal-footer{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;border-top:1px solid #e8e8e8}.editor-content[data-v-4fea1865]{padding:16px!important;min-height:auto!important;max-height:none!important;overflow-y:visible!important}.editor-layout[data-v-4fea1865]{min-height:auto!important}.code-editor-column[data-v-4fea1865]{width:100%!important;margin-bottom:16px}.code-section[data-v-4fea1865]{margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{padding-bottom:8px;margin-bottom:8px}.code-section .section-header .section-title[data-v-4fea1865]{font-size:13px}.code-editor-container[data-v-4fea1865]{height:250px!important}.code-editor-container[data-v-4fea1865],.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{min-height:250px!important;max-height:250px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:250px!important}.ai-panel[data-v-4fea1865]{height:auto!important;min-height:auto!important}.editor-footer[data-v-4fea1865]{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:8px;padding:0}.editor-footer[data-v-4fea1865] .ant-btn{width:100%;height:40px;margin:0}}.chart-left[data-v-076675b8]{width:70%!important;-webkit-box-flex:0!important;-ms-flex:0 0 70%!important;flex:0 0 70%!important;position:relative;border-right:1px solid #e8e8e8;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.chart-left.theme-dark[data-v-076675b8]{background:#141414;border-right-color:#2a2a2a}.chart-wrapper[data-v-076675b8]{width:100%;height:100%;position:relative;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;display:-webkit-box;display:-ms-flexbox;display:flex}.theme-dark .chart-wrapper[data-v-076675b8]{background:#141414}.drawing-toolbar[data-v-076675b8]{-ms-flex-negative:0;flex-shrink:0;width:40px;background:#fff;border-right:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;gap:4px;z-index:10;overflow-y:auto;overflow-x:hidden}.chart-left.theme-dark .drawing-toolbar[data-v-076675b8]{background:#141414;border-right-color:#2a2a2a}.drawing-tool-btn[data-v-076675b8]{width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;border-radius:4px;-webkit-transition:all .2s;transition:all .2s;color:#666;font-size:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .drawing-tool-btn[data-v-076675b8]{color:#d1d4dc}.drawing-tool-btn[data-v-076675b8]:hover{background:#f0f2f5;color:#1890ff}.chart-left.theme-dark .drawing-tool-btn[data-v-076675b8]:hover{background:#252525;color:#13c2c2}.drawing-tool-btn.active[data-v-076675b8]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff}.chart-left.theme-dark .drawing-tool-btn.active[data-v-076675b8]{background:#252525;color:#13c2c2;border-color:#13c2c2}.drawing-toolbar .ant-divider-vertical[data-v-076675b8]{margin:8px 0;height:20px}.indicator-toolbar[data-v-076675b8]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #e8e8e8;-ms-flex-wrap:wrap;flex-wrap:wrap;z-index:1;position:relative;width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.indicator-toolbar[data-v-076675b8]::-webkit-scrollbar{display:none;width:0;height:0}.chart-content-area[data-v-076675b8]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden}.chart-left.theme-dark .indicator-toolbar[data-v-076675b8]{background:#141414;border-bottom-color:#2a2a2a}.indicator-btn[data-v-076675b8]{padding:4px 12px;font-size:12px;font-weight:600;color:#666;background:#f0f2f5;border:1px solid #e8e8e8;border-radius:4px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;white-space:nowrap;min-width:40px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .indicator-btn[data-v-076675b8]{color:#d1d4dc;background:#252525;border-color:#2a2a2a}.indicator-btn[data-v-076675b8]:hover{color:#1890ff;border-color:#1890ff;background:#f0f8ff}.chart-left.theme-dark .indicator-btn[data-v-076675b8]:hover{color:#13c2c2;border-color:#13c2c2;background:#252525}.indicator-btn.active[data-v-076675b8]{color:#1890ff;background:#fff;border-color:#1890ff;border-width:2px;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)}.chart-left.theme-dark .indicator-btn.active[data-v-076675b8]{color:#13c2c2;background:#252525;border-color:#13c2c2;-webkit-box-shadow:0 0 0 2px rgba(19,194,194,.2);box-shadow:0 0 0 2px rgba(19,194,194,.2)}.kline-chart-container[data-v-076675b8]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;min-width:0;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;overflow:hidden}.theme-dark .kline-chart-container[data-v-076675b8]{background:#141414}.chart-overlay[data-v-076675b8]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.95);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;backdrop-filter:blur(2px)}.chart-left.theme-dark .chart-overlay[data-v-076675b8]{background:hsla(0,0%,8%,.95)}.error-box[data-v-076675b8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#333}.initial-hint[data-v-076675b8]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .initial-hint[data-v-076675b8]{background:hsla(0,0%,8%,.98)}.hint-box[data-v-076675b8]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:400px;padding:20px}.pyodide-warning[data-v-076675b8]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .pyodide-warning[data-v-076675b8]{background:hsla(0,0%,8%,.98)}.warning-box[data-v-076675b8]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:500px;padding:20px}.warning-title[data-v-076675b8]{font-size:16px;font-weight:600;color:#faad14;margin-bottom:8px}.warning-desc[data-v-076675b8]{font-size:14px;color:#666;line-height:1.6}.chart-left.theme-dark .warning-box[data-v-076675b8]{color:#d1d4dc}.chart-left.theme-dark .warning-title[data-v-076675b8]{color:#faad14}.chart-left.theme-dark .warning-desc[data-v-076675b8]{color:#868993}.chart-left.theme-dark .hint-box[data-v-076675b8]{color:#d1d4dc}.hint-title[data-v-076675b8]{font-size:18px;font-weight:600;color:#333;margin-bottom:12px}.chart-left.theme-dark .hint-title[data-v-076675b8]{color:#d1d4dc}.hint-desc[data-v-076675b8]{font-size:14px;color:#999;line-height:1.6}.chart-left.theme-dark .hint-desc[data-v-076675b8]{color:#787b86}.history-loading-hint[data-v-076675b8]{position:absolute;left:20px;top:60px;z-index:1000!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 16px;background:hsla(0,0%,100%,.98)!important;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);font-size:14px;color:#666!important;backdrop-filter:blur(4px);pointer-events:none;visibility:visible!important;opacity:1!important}.chart-left.theme-dark .history-loading-hint[data-v-076675b8]{background:hsla(0,0%,8%,.98)!important;border-color:#2a2a2a;color:#d1d4dc!important}.loading-text[data-v-076675b8]{white-space:nowrap;margin-left:4px}@media (max-width:768px){.drawing-toolbar[data-v-076675b8]{display:none}.indicator-toolbar[data-v-076675b8]{padding-left:12px;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.indicator-toolbar[data-v-076675b8]::-webkit-scrollbar{display:none;width:0;height:0}.indicator-btn[data-v-076675b8]{-ms-flex-negative:0;flex-shrink:0}}@media (max-width:1200px){.drawing-toolbar[data-v-076675b8]{display:none}.indicator-toolbar[data-v-076675b8]{padding-left:12px}.kline-chart-container[data-v-076675b8]{margin-left:0}.chart-left[data-v-076675b8]{width:100%!important;min-width:100%!important;border-right:none;border-bottom:1px solid #e8e8e8;height:600px!important;min-height:600px!important}.chart-wrapper[data-v-076675b8],.kline-chart-container[data-v-076675b8]{height:100%!important;min-height:600px!important}}@media (max-width:992px){.chart-left[data-v-076675b8]{height:650px!important;min-height:650px!important}.chart-wrapper[data-v-076675b8],.kline-chart-container[data-v-076675b8]{height:100%!important;min-height:650px!important}}@media (max-width:768px){.chart-left[data-v-076675b8]{height:60vh!important;min-height:400px!important;max-height:80vh!important}.chart-wrapper[data-v-076675b8]{height:100%!important;min-height:400px!important;max-height:100%!important}.kline-chart-container[data-v-076675b8]{height:calc(100% - 45px)!important;min-height:350px!important;max-height:calc(100% - 45px)!important}}@media (max-width:576px){.chart-left[data-v-076675b8]{height:55vh!important;min-height:350px!important;max-height:75vh!important}.chart-wrapper[data-v-076675b8]{height:100%!important;min-height:350px!important;max-height:100%!important}.kline-chart-container[data-v-076675b8]{height:calc(100% - 45px)!important;min-height:300px!important;max-height:calc(100% - 45px)!important}}.quick-trade-drawer[data-v-66414eaf] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-66414eaf]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-66414eaf],.qt-header[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-66414eaf]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-66414eaf]{font-size:20px;color:#595959}.qt-header .qt-header-left .qt-header-title[data-v-66414eaf]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-66414eaf]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-66414eaf]:hover{color:#333}.qt-symbol-bar[data-v-66414eaf]{padding:12px 20px;background:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f0f0f0));background:linear-gradient(180deg,#fafafa,#f0f0f0);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf],.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-66414eaf]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-66414eaf]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-66414eaf]{color:#999;font-size:12px}.qt-section[data-v-66414eaf]{padding:8px 20px}.qt-section .qt-label[data-v-66414eaf]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-66414eaf]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-66414eaf]{color:#999}.qt-balance .qt-balance-loading-text[data-v-66414eaf]{margin-left:4px}.qt-balance .qt-balance-value[data-v-66414eaf]{color:#52c41a;font-weight:600}.qt-balance .qt-balance-error[data-v-66414eaf]{color:#faad14;cursor:help}.qt-no-cred-actions[data-v-66414eaf]{margin-top:10px}.qt-manage-link[data-v-66414eaf]{margin-top:8px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.qt-manage-link .qt-manage-sep[data-v-66414eaf]{color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-66414eaf]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-66414eaf]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-66414eaf]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-66414eaf]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-66414eaf]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-66414eaf]:hover:not(.active){border-color:#f5222d}.qt-amount-block[data-v-66414eaf]{padding-bottom:14px}.qt-quick-amounts[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:8px;margin-bottom:4px}.qt-quick-amounts button[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-leverage-input[data-v-66414eaf]{width:80px}.qt-card[data-v-66414eaf]{margin-left:16px;margin-right:16px;padding:12px 14px;border-radius:10px;background:#f5f5f5;border:1px solid #e8e8e8}.qt-mode-card[data-v-66414eaf],.qt-tpsl-card[data-v-66414eaf]{margin-top:16px}.qt-section-title-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.qt-section-title[data-v-66414eaf]{font-size:13px;font-weight:600;color:#333}.qt-badge-contract[data-v-66414eaf]{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:#ebebeb;color:#595959;border:1px solid #d9d9d9}.qt-optional-tag[data-v-66414eaf]{font-size:10px;color:#8c8c8c;background:#f0f0f0;padding:1px 8px;border-radius:4px}.qt-label-spaced[data-v-66414eaf]{margin-top:10px}.qt-margin-radio[data-v-66414eaf]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-margin-radio[data-v-66414eaf] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px}.qt-hint-text[data-v-66414eaf]{font-size:11px;color:#8c8c8c;line-height:1.45;margin-top:8px}.qt-hint-inline[data-v-66414eaf]{margin-top:6px}.qt-spot-banner[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:4px 0}.qt-spot-banner-icon[data-v-66414eaf]{font-size:22px;color:#52c41a;margin-top:2px}.qt-spot-banner-title[data-v-66414eaf]{font-size:13px;font-weight:600;color:#333;margin-bottom:4px}.qt-spot-banner-text .qt-hint-text[data-v-66414eaf]{margin-top:0}.qt-tpsl-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-tpsl-record-hint[data-v-66414eaf]{margin-top:10px;margin-bottom:0}.qt-close-scope[data-v-66414eaf]{margin-top:12px;padding-top:10px;border-top:1px dashed #e8e8e8}.qt-label-close-scope[data-v-66414eaf]{margin-bottom:6px}.qt-close-scope-radio[data-v-66414eaf]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-close-scope-radio[data-v-66414eaf] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px;font-size:12px}.qt-tp-label[data-v-66414eaf]{color:#389e0d!important}.qt-sl-label[data-v-66414eaf]{color:#cf1322!important}.qt-input-full[data-v-66414eaf]{width:100%}.qt-dir-btn.qt-dir-disabled[data-v-66414eaf]{opacity:.42;cursor:not-allowed;pointer-events:none}.qt-empty-icon[data-v-66414eaf]{font-size:28px;color:#d9d9d9;margin-bottom:8px}.qt-empty-desc[data-v-66414eaf]{font-size:12px;color:#8c8c8c;line-height:1.5}.qt-submit-section[data-v-66414eaf]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-66414eaf]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-66414eaf]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-66414eaf]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-66414eaf]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]:active{background:#cf1322!important}.qt-position-section[data-v-66414eaf]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-66414eaf]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-position-section .qt-position-count[data-v-66414eaf]{font-size:12px;color:#999;font-weight:400}.qt-position-section .qt-close-scope-global[data-v-66414eaf]{margin-bottom:10px}.qt-history-section[data-v-66414eaf]{padding:8px 20px 12px}.qt-history-section[data-v-66414eaf] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-66414eaf] .ant-collapse-item{border:none}.qt-history-section[data-v-66414eaf] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-66414eaf] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-66414eaf] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-66414eaf] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-66414eaf]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-66414eaf]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-66414eaf]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card+.qt-position-card[data-v-66414eaf]{margin-top:10px}.qt-position-card.long[data-v-66414eaf]{border-left-color:#52c41a}.qt-position-card.short[data-v-66414eaf]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-66414eaf]:first-child{color:#999}.qt-position-empty[data-v-66414eaf]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-green[data-v-66414eaf]{color:#52c41a!important}.qt-red[data-v-66414eaf]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-66414eaf]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-66414eaf]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-66414eaf]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-66414eaf]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-66414eaf]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-66414eaf]{border-bottom-color:#303030}.theme-dark .qt-header .qt-icon[data-v-66414eaf]{color:#a3a3a3}.theme-dark .qt-header .qt-header-title[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-66414eaf]{color:#666}.theme-dark .qt-header .qt-close[data-v-66414eaf]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-66414eaf]{background:-webkit-gradient(linear,left top,left bottom,from(#262626),to(#1f1f1f));background:linear-gradient(180deg,#262626,#1f1f1f)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-66414eaf] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-66414eaf] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-66414eaf]{color:#999}.theme-dark .qt-section .qt-label[data-v-66414eaf]{color:#777}.theme-dark .qt-position-section .qt-section-header[data-v-66414eaf]{color:#ccc}.theme-dark .qt-position-section .qt-position-count[data-v-66414eaf]{color:#888}.theme-dark .qt-position-card[data-v-66414eaf]{background:#262626}.theme-dark .qt-position-card .qt-pos-row span[data-v-66414eaf]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-66414eaf],.theme-dark .qt-position-card .qt-pos-row span[data-v-66414eaf]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-66414eaf]{color:#888}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-66414eaf]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-66414eaf]{color:#ccc}.theme-dark[data-v-66414eaf] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-66414eaf] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-66414eaf] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-66414eaf] .ant-drawer-content{background:#141414}.theme-dark[data-v-66414eaf] .ant-input-number,.theme-dark[data-v-66414eaf] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-66414eaf] .ant-radio-group .ant-radio-button-wrapper{background:#262626;border-color:#303030;color:#ccc}.theme-dark[data-v-66414eaf] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#434343;border-color:#595959;color:#fff}.theme-dark[data-v-66414eaf] .ant-slider-rail{background:#303030}.theme-dark[data-v-66414eaf] .ant-slider-track{background:#737373}.theme-dark .qt-manage-link a[data-v-66414eaf]{color:#58a6ff}.theme-dark .qt-manage-link .qt-manage-sep[data-v-66414eaf]{color:#555}.theme-dark .qt-card[data-v-66414eaf]{background:#262626;border-color:#3a3a3a}.theme-dark .qt-section-title[data-v-66414eaf]{color:#e8e8e8}.theme-dark .qt-badge-contract[data-v-66414eaf]{background:#333;color:#bfbfbf;border-color:#434343}.theme-dark .qt-optional-tag[data-v-66414eaf]{background:#2a2a2a;color:#888}.theme-dark .qt-hint-text[data-v-66414eaf]{color:#777}.theme-dark .qt-spot-banner-title[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-spot-banner-icon[data-v-66414eaf]{color:#73d13d}.theme-dark .qt-tp-label[data-v-66414eaf]{color:#95de64!important}.theme-dark .qt-sl-label[data-v-66414eaf]{color:#ff7875!important}.theme-dark .qt-close-scope[data-v-66414eaf]{border-top-color:#3a3a3a}.theme-dark .qt-position-empty[data-v-66414eaf]{background:#262626;border-color:#303030}.theme-dark .qt-empty-icon[data-v-66414eaf]{color:#434343}.theme-dark .qt-empty-desc[data-v-66414eaf]{color:#888}.chart-container[data-v-11d8a5e2]{background:#f0f2f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.chart-container[data-v-11d8a5e2],.chart-header[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-header[data-v-11d8a5e2]{max-width:100%;background:#fff;border-bottom:1px solid #e8e8e8;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.02);box-shadow:0 2px 4px rgba(0,0,0,.02)}.header-top[data-v-11d8a5e2]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;height:60px}.header-left[data-v-11d8a5e2],.header-top[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header-left[data-v-11d8a5e2]{gap:20px}.symbol-select[data-v-11d8a5e2]{width:220px}.symbol-select[data-v-11d8a5e2] .ant-select-selection{background-color:#fff;border:1px solid #e8e8e8;color:#333;border-radius:4px;-webkit-box-shadow:none;box-shadow:none}.symbol-select[data-v-11d8a5e2] .ant-select-selection:hover{border-color:#1890ff}.symbol-select[data-v-11d8a5e2] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}.symbol-select[data-v-11d8a5e2] .ant-select-arrow,.symbol-select[data-v-11d8a5e2] .ant-select-selection__placeholder{color:#999}.timeframe-group[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;background:#f0f2f5;border-radius:4px;padding:2px}.timeframe-item[data-v-11d8a5e2]{padding:4px 12px;font-size:13px;font-weight:600;color:#666;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-radius:4px}.timeframe-item[data-v-11d8a5e2]:hover{color:#1890ff;background:#fff}.timeframe-item.active[data-v-11d8a5e2]{color:#1890ff;background:#fff;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.current-symbol[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:24px}.symbol-info[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.symbol-label[data-v-11d8a5e2]{font-size:16px;font-weight:700;color:#333;line-height:1.2}.market-tag[data-v-11d8a5e2]{font-size:10px;color:#666;background:#f0f2f5;padding:1px 4px;border-radius:2px;margin-top:2px}.price-info[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.price-info.color-up[data-v-11d8a5e2]{color:#0ecb81}.price-info.color-down[data-v-11d8a5e2]{color:#f6465d}.symbol-price[data-v-11d8a5e2]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace;line-height:1.2}.symbol-change[data-v-11d8a5e2]{font-size:12px}.mobile-symbol-price[data-v-11d8a5e2]{display:none}.panel-header .theme-switcher[data-v-11d8a5e2]{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.panel-header .realtime-toggle-btn[data-v-11d8a5e2],.panel-header .theme-toggle-btn[data-v-11d8a5e2]{color:#666;border:none;padding:4px 8px;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;min-width:32px;height:32px}.panel-header .realtime-toggle-btn[data-v-11d8a5e2]:hover,.panel-header .theme-toggle-btn[data-v-11d8a5e2]:hover{color:#1890ff;background:#f0f2f5}.panel-header .realtime-toggle-btn.active[data-v-11d8a5e2],.panel-header .theme-toggle-btn.active[data-v-11d8a5e2]{color:#1890ff;background:#e6f7ff}.panel-header .realtime-toggle-btn .anticon[data-v-11d8a5e2],.panel-header .theme-toggle-btn .anticon[data-v-11d8a5e2]{font-size:16px}.chart-content[data-v-11d8a5e2]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-content[data-v-11d8a5e2],.chart-main-row[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;width:100%}.chart-main-row[data-v-11d8a5e2]{height:80vh!important;min-height:500px!important;max-height:80vh!important;-ms-flex-negative:0;flex-shrink:0}.chart-right[data-v-11d8a5e2]{width:30%!important;-webkit-box-flex:0!important;-ms-flex:0 0 30%!important;flex:0 0 30%!important;border-left:1px solid #e8e8e8}.chart-right[data-v-11d8a5e2],.indicators-panel[data-v-11d8a5e2]{background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicators-panel[data-v-11d8a5e2]{height:100%}.panel-header[data-v-11d8a5e2]{height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;border-bottom:1px solid #e8e8e8;font-weight:600;color:#333;background:#fff}.panel-header .mobile-header-create-btn[data-v-11d8a5e2]{margin-right:0}.panel-body[data-v-11d8a5e2]{padding:0;overflow:hidden}.indicator-section[data-v-11d8a5e2],.panel-body[data-v-11d8a5e2]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicator-section[data-v-11d8a5e2]{min-height:0;border-bottom:1px solid #e8e8e8}.indicator-section[data-v-11d8a5e2]:last-child{border-bottom:none}.indicator-section.section-empty[data-v-11d8a5e2]{min-height:200px}.section-label[data-v-11d8a5e2]{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;background:#fafafa;border-bottom:1px solid #e8e8e8;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.section-label .section-label-left[data-v-11d8a5e2],.section-label[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-label .section-label-left[data-v-11d8a5e2]{gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1}.section-label .section-label-left .collapse-icon[data-v-11d8a5e2]{font-size:12px;color:#999;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.section-label .section-label-left span[data-v-11d8a5e2]{font-weight:500}.section-label .buy-indicator-btn[data-v-11d8a5e2]{padding:0;height:auto;margin-left:8px}.create-indicator-btn[data-v-11d8a5e2]{margin-left:auto;margin-right:0}@media (max-width:768px){.create-indicator-btn[data-v-11d8a5e2]{display:none!important}}.section-content[data-v-11d8a5e2]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px 16px;min-height:0}.indicator-card[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;padding:10px 12px;border-radius:6px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:1px solid #e8e8e8}.indicator-card[data-v-11d8a5e2]:hover{background:#f0f2f5;border-color:#1890ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.05);box-shadow:0 2px 4px rgba(0,0,0,.05)}.indicator-card.active[data-v-11d8a5e2]{background:#e6f7ff;border-color:#1890ff}.indicator-card.active .card-name[data-v-11d8a5e2]{color:#1890ff}.indicator-card.indicator-active[data-v-11d8a5e2]{border-color:#52c41a;border-width:2px;background:#f6ffed}.indicator-card.indicator-active[data-v-11d8a5e2]:hover{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.2);box-shadow:0 2px 8px rgba(82,196,26,.2)}.indicator-card.indicator-active .card-name[data-v-11d8a5e2]{color:#52c41a}.indicator-card.disabled[data-v-11d8a5e2]{opacity:.5;cursor:not-allowed}.indicator-card.disabled[data-v-11d8a5e2]:hover{-webkit-transform:none;transform:none;background:#fff;border-color:#e8e8e8;-webkit-box-shadow:none;box-shadow:none}.card-content[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.card-header[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:4px}.card-name[data-v-11d8a5e2]{font-size:13px;color:#333;font-weight:500;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:8px}.card-params[data-v-11d8a5e2]{font-size:11px;color:#999;margin-top:2px}.card-desc[data-v-11d8a5e2]{font-size:11px;color:#999;margin-top:0;display:-webkit-box;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.4;min-height:1.4em;max-height:2.8em}.card-action[data-v-11d8a5e2]{color:#999;font-size:12px}.card-action[data-v-11d8a5e2]:hover{color:#1890ff}.card-actions[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;-ms-flex-negative:0;flex-shrink:0}.action-icon[data-v-11d8a5e2]{font-size:16px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;color:#999}.action-icon.edit-icon[data-v-11d8a5e2]{color:#1890ff}.action-icon.edit-icon[data-v-11d8a5e2]:hover{color:#40a9ff}.action-icon.delete-icon[data-v-11d8a5e2]{color:#ff4d4f}.action-icon.delete-icon[data-v-11d8a5e2]:hover{color:#ff7875}.action-icon[data-v-11d8a5e2]:hover{color:#1890ff}.action-icon.toggle-icon.active[data-v-11d8a5e2]{color:#52c41a}.action-icon.backtest-icon[data-v-11d8a5e2]{color:#722ed1}.action-icon.backtest-icon[data-v-11d8a5e2]:hover{color:#9254de}.action-icon.backtest-history-icon[data-v-11d8a5e2]{color:#13c2c2}.action-icon.backtest-history-icon[data-v-11d8a5e2]:hover{color:#08979c}.action-icon.publish-icon[data-v-11d8a5e2]{color:#1890ff}.action-icon.publish-icon[data-v-11d8a5e2]:hover{color:#40a9ff}.action-icon.publish-icon.published[data-v-11d8a5e2]{color:#52c41a}.action-icon.publish-icon.published[data-v-11d8a5e2]:hover{color:#73d13d}.action-icon.create-strategy-icon[data-v-11d8a5e2]{color:#fa8c16}.action-icon.create-strategy-icon[data-v-11d8a5e2]:hover{color:#ffa940}.action-icon.status-icon.status-normal[data-v-11d8a5e2]{color:#52c41a}.action-icon.status-icon.status-expired[data-v-11d8a5e2]{color:#ff4d4f}.action-icon.expiry-icon[data-v-11d8a5e2]{color:#1890ff}.empty-indicators[data-v-11d8a5e2]{padding:40px 20px;gap:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.empty-indicators[data-v-11d8a5e2],.loading-indicators[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#999;font-size:13px}.loading-indicators[data-v-11d8a5e2]{padding:20px}.custom-scrollbar[data-v-11d8a5e2]{scrollbar-width:none;-ms-overflow-style:none}.custom-scrollbar[data-v-11d8a5e2]::-webkit-scrollbar{display:none;width:0;height:0}.dark-dropdown{background-color:#fff;border:1px solid #e8e8e8;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15)}.dark-dropdown .ant-select-dropdown-menu-item{color:#333}.dark-dropdown .ant-select-dropdown-menu-item:hover{background-color:#f0f2f5}.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}.dark-dropdown .ant-empty-description{color:#999}.symbol-option[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-option .symbol-name[data-v-11d8a5e2]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-option .symbol-name-extra[data-v-11d8a5e2]{font-size:12px;color:#999;margin-left:4px}.empty-watchlist-hint[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#666;font-size:12px}@media (max-width:768px){.chart-container[data-v-11d8a5e2]{padding:0;width:calc(100% + 44px)!important;margin:-22px}.chart-header[data-v-11d8a5e2]{padding:12px}.chart-header .header-top[data-v-11d8a5e2],.chart-header[data-v-11d8a5e2]{gap:12px;height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-header .header-top[data-v-11d8a5e2]{padding:0}.chart-header .header-left[data-v-11d8a5e2]{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.chart-header .search-section[data-v-11d8a5e2]{width:100%}.chart-header .search-section .symbol-select[data-v-11d8a5e2]{width:100%!important}.chart-header .timeframe-group[data-v-11d8a5e2]{width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.chart-header .timeframe-group .timeframe-item[data-v-11d8a5e2]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:calc(14.28% - 4px);text-align:center;padding:6px 8px;font-size:12px}.chart-header .current-symbol[data-v-11d8a5e2]{display:none}.chart-content[data-v-11d8a5e2]{overflow-y:auto}.chart-content[data-v-11d8a5e2],.chart-main-row[data-v-11d8a5e2]{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important;height:auto!important;min-height:auto!important;max-height:none!important}.mobile-symbol-price[data-v-11d8a5e2]{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 16px;background:#fff;width:100%}.mobile-symbol-price .mobile-price-info[data-v-11d8a5e2],.mobile-symbol-price[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-symbol-price .mobile-price-info[data-v-11d8a5e2]{gap:12px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mobile-symbol-price .mobile-price-info.color-up[data-v-11d8a5e2]{color:#0ecb81}.mobile-symbol-price .mobile-price-info.color-down[data-v-11d8a5e2]{color:#f6465d}.mobile-symbol-price .mobile-price-info .mobile-symbol-price[data-v-11d8a5e2]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace}.mobile-symbol-price .mobile-price-info .mobile-symbol-change[data-v-11d8a5e2]{font-size:14px;font-weight:500}kline-chart[data-v-11d8a5e2]{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important;width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;display:block!important;margin-bottom:0!important}kline-chart[data-v-11d8a5e2] .chart-left{width:100%!important;height:350px!important;min-height:350px!important;max-height:350px!important;border-right:none!important;border-bottom:1px solid #e8e8e8!important}.chart-right[data-v-11d8a5e2]{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;width:100%!important;min-width:100%!important;max-width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;height:auto!important;max-height:calc(100vh - 470px)!important;border-left:none!important;border-top:none!important;margin-top:0!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;visibility:visible!important;opacity:1!important}.chart-right .indicators-panel[data-v-11d8a5e2]{height:auto!important;min-height:600px!important;max-height:calc(100vh - 410px)!important;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .panel-header[data-v-11d8a5e2]{position:sticky;top:0;background:#fff;z-index:10;border-bottom:1px solid #e8e8e8;padding:12px;font-size:14px;-ms-flex-negative:0;flex-shrink:0}.chart-right .indicators-panel .panel-header .mobile-header-create-btn[data-v-11d8a5e2]{margin-right:0;font-size:12px;height:28px;padding:0 12px}.chart-right .indicators-panel .panel-body[data-v-11d8a5e2]{padding:0;overflow:visible;min-height:400px!important}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2],.chart-right .indicators-panel .panel-body[data-v-11d8a5e2]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2]{overflow:hidden;min-height:0;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;border-bottom:1px solid #e8e8e8}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tab{color:#666;font-size:14px}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tab-active{color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-ink-bar{background-color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tabpane{height:100%;overflow:hidden;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tabpane-active{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;height:100%;overflow:hidden}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-11d8a5e2],.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-content-holder{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-11d8a5e2]{width:100%}.chart-right .indicators-panel .mobile-indicator-tabs .section-content[data-v-11d8a5e2]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto!important;overflow-x:hidden;padding:12px;min-height:0;height:100%;-webkit-overflow-scrolling:touch;position:relative}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-11d8a5e2],.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn[data-v-11d8a5e2]{display:none!important}.chart-right .indicators-panel .indicator-section .section-label[data-v-11d8a5e2]{padding:10px 12px;font-size:13px}.chart-right .indicators-panel .section-content[data-v-11d8a5e2]{padding:10px 12px}.chart-right .indicators-panel .indicator-card[data-v-11d8a5e2]{padding:10px}.chart-right .indicators-panel .indicator-card .card-name[data-v-11d8a5e2]{font-size:13px}.chart-right .indicators-panel .indicator-card .card-desc[data-v-11d8a5e2],.chart-right .indicators-panel .indicator-card .card-params[data-v-11d8a5e2]{font-size:11px}}.qt-header-btn[data-v-11d8a5e2]{margin-left:16px;background:linear-gradient(135deg,#1890ff,#722ed1);border:none;color:#fff;border-radius:6px;font-weight:600;font-size:12px;padding:0 12px;height:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3);-webkit-transition:all .3s;transition:all .3s}.qt-header-btn[data-v-11d8a5e2]:focus,.qt-header-btn[data-v-11d8a5e2]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);color:#fff;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45);-webkit-transform:translateY(-1px);transform:translateY(-1px)}.qt-floating-btn[data-v-11d8a5e2]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:999;-webkit-transition:all .3s;transition:all .3s;font-size:22px}.qt-floating-btn[data-v-11d8a5e2]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark[data-v-11d8a5e2],body.dark,body.realdark{background:#141414;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.3);box-shadow:0 2px 4px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .symbol-label[data-v-11d8a5e2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .market-tag[data-v-11d8a5e2],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-up[data-v-11d8a5e2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-down[data-v-11d8a5e2],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-11d8a5e2],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 2px 8px rgba(23,125,220,.35);box-shadow:0 2px 8px rgba(23,125,220,.35)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-11d8a5e2]:focus,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-11d8a5e2]:hover,body.dark,body.realdark{background:linear-gradient(135deg,#3c9ae8,#854eca);-webkit-box-shadow:0 4px 12px rgba(23,125,220,.5);box-shadow:0 4px 12px rgba(23,125,220,.5)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-11d8a5e2],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 4px 16px rgba(23,125,220,.45);box-shadow:0 4px 16px rgba(23,125,220,.45)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-11d8a5e2]:hover,body.dark,body.realdark{-webkit-box-shadow:0 6px 24px rgba(23,125,220,.6);box-shadow:0 6px 24px rgba(23,125,220,.6)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-selection,body.dark,body.realdark{background-color:#1c1c1c;border-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-arrow,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-selection__placeholder,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group[data-v-11d8a5e2],body.dark,body.realdark{background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#1890ff;background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff;background:#1c1c1c;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-11d8a5e2],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-11d8a5e2],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-11d8a5e2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-11d8a5e2],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-left-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#1890ff;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-body[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-section[data-v-11d8a5e2],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label[data-v-11d8a5e2],body.dark,body.realdark{color:#868993;background:#2a2a2a;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left .collapse-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left span[data-v-11d8a5e2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-11d8a5e2]:hover,body.dark,body.realdark{background:#2a2a2a;border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-11d8a5e2],body.dark,body.realdark{border-color:#52c41a;background:#1e3a1e}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-11d8a5e2]:hover,body.dark,body.realdark{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.3);box-shadow:0 2px 8px rgba(82,196,26,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active .card-name[data-v-11d8a5e2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-name[data-v-11d8a5e2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-desc[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-params[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#ff4d4f}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#ff7875}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#b37feb}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#d3adf7}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#5cdbd3}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#87e8de}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-11d8a5e2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#73d13d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.toggle-icon.active[data-v-11d8a5e2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .empty-indicators[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}@media (max-width:768px){.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .current-symbol[data-v-11d8a5e2],body.dark,body.realdark{border-top-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-left[data-v-11d8a5e2],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-11d8a5e2],body.dark,body.realdark{border-top-color:#2a2a2a;max-height:500px!important}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-bar,body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tab,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tab-active,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-ink-bar,body.dark,body.realdark{background-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-11d8a5e2],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-11d8a5e2],body.dark,body.realdark{color:#868993;background:#2a3932}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-11d8a5e2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-11d8a5e2],body.dark,body.realdark{color:#f6465d}}.add-stock-modal-content .market-tabs[data-v-11d8a5e2]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-11d8a5e2],.add-stock-modal-content .search-results-section[data-v-11d8a5e2],.add-stock-modal-content .symbol-search-section[data-v-11d8a5e2]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-11d8a5e2],.add-stock-modal-content .search-results-section .section-title[data-v-11d8a5e2]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-11d8a5e2]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-11d8a5e2]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-11d8a5e2]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-11d8a5e2]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-11d8a5e2]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-11d8a5e2]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chart-container.theme-dark .add-stock-modal-content .hot-symbols-section .section-title[data-v-11d8a5e2],.chart-container.theme-dark .add-stock-modal-content .search-results-section .section-title[data-v-11d8a5e2],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list[data-v-11d8a5e2],body.dark,body.realdark{border-color:#363c4e;background-color:#2a2a2a}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item[data-v-11d8a5e2]:hover,body.dark,body.realdark{background-color:#363c4e}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-11d8a5e2],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}.params-config-modal .indicator-info[data-v-11d8a5e2]{text-align:center;margin-bottom:8px}.params-config-modal .indicator-info .indicator-name[data-v-11d8a5e2]{font-size:16px;font-weight:600;color:#1f1f1f}.params-config-modal .params-form .param-item[data-v-11d8a5e2]{margin-bottom:16px}.params-config-modal .params-form .param-item .param-header[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:6px}.params-config-modal .params-form .param-item .param-header .param-label[data-v-11d8a5e2]{font-weight:500;color:#333}.theme-dark .params-config-modal .indicator-info .indicator-name[data-v-11d8a5e2]{color:#e0e0e0}.theme-dark .params-config-modal .params-form .param-item .param-header .param-label[data-v-11d8a5e2]{color:#d0d0d0} \ No newline at end of file diff --git a/frontend/dist/css/417.7fc536c1.css b/frontend/dist/css/417.7fc536c1.css new file mode 100644 index 0000000..62ff957 --- /dev/null +++ b/frontend/dist/css/417.7fc536c1.css @@ -0,0 +1 @@ +.profile-exchange-modal .exchange-account-form .egress-ip-block{width:100%}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;margin:0 0 16px;padding:12px 14px;border:1px solid rgba(24,144,255,.18);border-radius:10px;background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.06)),to(rgba(82,196,26,.04)));background:linear-gradient(90deg,rgba(24,144,255,.06),rgba(82,196,26,.04))}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;min-width:0}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__icon{width:28px;height:28px;border-radius:50%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:rgba(24,144,255,.12);color:#1890ff;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__text{min-width:0}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__title{color:rgba(0,0,0,.85);font-size:13px;font-weight:600;line-height:1.5}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__hint{color:rgba(0,0,0,.55);font-size:12px;line-height:1.5;margin-top:2px}.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__action{padding:0;white-space:nowrap;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.profile-exchange-modal .exchange-account-form .egress-ip-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.profile-exchange-modal .exchange-account-form .egress-ip-refresh-row{margin-top:4px}.profile-exchange-modal .exchange-account-form .egress-ip-line{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:10px}.profile-exchange-modal .exchange-account-form .egress-ip-kind{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;min-width:42px;font-size:12px;color:rgba(0,0,0,.55)}.profile-exchange-modal .exchange-account-form .egress-ip-value{-webkit-box-flex:1;-ms-flex:1 1 160px;flex:1 1 160px;min-width:0;font-family:Consolas,ui-monospace,monospace;font-size:12px;padding:6px 10px;border-radius:4px;border:1px solid #d9d9d9;background:#fafafa;color:#262626;word-break:break-all}.profile-exchange-modal .exchange-account-form .exchange-demo-checkbox-label{color:rgba(0,0,0,.85)}.profile-exchange-modal .exchange-account-form .exchange-demo-hint{margin-top:6px}.profile-exchange-modal .exchange-account-form .field-hint{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:6px}.profile-exchange-modal .exchange-account-form .test-result-msg{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-exchange-modal .exchange-account-form .test-result-msg.success{color:#52c41a}.profile-exchange-modal .exchange-account-form .test-result-msg.error{color:#f5222d}.profile-exchange-modal--dark .ant-modal-content{background:#1c1c1c;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.45);box-shadow:0 8px 32px rgba(0,0,0,.45)}.profile-exchange-modal--dark .ant-modal-header{background:#1c1c1c;border-bottom:1px solid #2a2a2a}.profile-exchange-modal--dark .ant-modal-title{color:#e0e6ed}.profile-exchange-modal--dark .ant-modal-close{color:#8b949e}.profile-exchange-modal--dark .ant-modal-body,.profile-exchange-modal--dark .ant-modal-close:hover{color:#c9d1d9}.profile-exchange-modal--dark .ant-modal-footer{background:#1c1c1c;border-top:1px solid #2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-label>label{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-explain,.profile-exchange-modal--dark .exchange-account-form .ant-form-item-extra{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-number,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-password .ant-input{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-input-password-icon{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-wrap{background:#141414;border-left-color:#2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-down-inner,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-up-inner{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-select-selector{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-item,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection--single{background:#141414!important;border-color:#2a2a2a!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-selected-value,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection__rendered{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-arrow{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper,.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper span{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .exchange-demo-checkbox-label{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .egress-ip-hint,.profile-exchange-modal--dark .exchange-account-form .exchange-demo-hint{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout{background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.12)),to(rgba(82,196,26,.08)));background:linear-gradient(90deg,rgba(24,144,255,.12),rgba(82,196,26,.08));border-color:rgba(88,166,255,.26)}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__icon{background:rgba(88,166,255,.16);color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__title{color:#e0e6ed}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__hint{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout__action{color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .egress-ip-value{border-color:#2a2a2a!important;background:#141414!important;color:#e0e6ed!important}.profile-exchange-modal--dark .exchange-account-form a.egress-ip-action{color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .egress-ip-kind{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .ant-alert{background:rgba(250,173,20,.12);border-color:rgba(250,173,20,.45)}.profile-exchange-modal--dark .exchange-account-form .ant-alert-message{color:#ffc53d}.profile-exchange-modal--dark .exchange-account-form .ant-alert-description{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-alert-icon{color:#faad14}.profile-exchange-modal--dark .exchange-account-form .field-hint{color:#8b949e;margin-top:6px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:6px}.profile-exchange-modal--dark .exchange-account-form .field-hint .anticon{color:#8b949e;margin-top:2px}.profile-exchange-modal--dark .exchange-account-form .test-result-msg{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.success{color:#73d13d}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.error{color:#ff7875}.profile-exchange-select-dropdown-dark.ant-select-dropdown{background:#1c1c1c}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item{color:#c9d1d9}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#2a2a2a}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:#2a2a2a!important;color:#e0e6ed;font-weight:500}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-group-title{color:#8b949e!important;font-size:12px}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item,.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{color:#c9d1d9!important}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-empty-description{color:#8b949e}.quick-trade-drawer[data-v-66414eaf] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-66414eaf]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-66414eaf],.qt-header[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-66414eaf]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-66414eaf]{font-size:20px;color:#595959}.qt-header .qt-header-left .qt-header-title[data-v-66414eaf]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-66414eaf]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-66414eaf]:hover{color:#333}.qt-symbol-bar[data-v-66414eaf]{padding:12px 20px;background:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f0f0f0));background:linear-gradient(180deg,#fafafa,#f0f0f0);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf],.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-66414eaf]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-66414eaf]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-66414eaf]{color:#999;font-size:12px}.qt-section[data-v-66414eaf]{padding:8px 20px}.qt-section .qt-label[data-v-66414eaf]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-66414eaf]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-66414eaf]{color:#999}.qt-balance .qt-balance-loading-text[data-v-66414eaf]{margin-left:4px}.qt-balance .qt-balance-value[data-v-66414eaf]{color:#52c41a;font-weight:600}.qt-balance .qt-balance-error[data-v-66414eaf]{color:#faad14;cursor:help}.qt-no-cred-actions[data-v-66414eaf]{margin-top:10px}.qt-manage-link[data-v-66414eaf]{margin-top:8px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.qt-manage-link .qt-manage-sep[data-v-66414eaf]{color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-66414eaf]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-66414eaf]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-66414eaf]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-66414eaf]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-66414eaf]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-66414eaf]:hover:not(.active){border-color:#f5222d}.qt-amount-block[data-v-66414eaf]{padding-bottom:14px}.qt-quick-amounts[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:8px;margin-bottom:4px}.qt-quick-amounts button[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-leverage-input[data-v-66414eaf]{width:80px}.qt-card[data-v-66414eaf]{margin-left:16px;margin-right:16px;padding:12px 14px;border-radius:10px;background:#f5f5f5;border:1px solid #e8e8e8}.qt-mode-card[data-v-66414eaf],.qt-tpsl-card[data-v-66414eaf]{margin-top:16px}.qt-section-title-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.qt-section-title[data-v-66414eaf]{font-size:13px;font-weight:600;color:#333}.qt-badge-contract[data-v-66414eaf]{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:#ebebeb;color:#595959;border:1px solid #d9d9d9}.qt-optional-tag[data-v-66414eaf]{font-size:10px;color:#8c8c8c;background:#f0f0f0;padding:1px 8px;border-radius:4px}.qt-label-spaced[data-v-66414eaf]{margin-top:10px}.qt-margin-radio[data-v-66414eaf]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-margin-radio[data-v-66414eaf] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px}.qt-hint-text[data-v-66414eaf]{font-size:11px;color:#8c8c8c;line-height:1.45;margin-top:8px}.qt-hint-inline[data-v-66414eaf]{margin-top:6px}.qt-spot-banner[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:4px 0}.qt-spot-banner-icon[data-v-66414eaf]{font-size:22px;color:#52c41a;margin-top:2px}.qt-spot-banner-title[data-v-66414eaf]{font-size:13px;font-weight:600;color:#333;margin-bottom:4px}.qt-spot-banner-text .qt-hint-text[data-v-66414eaf]{margin-top:0}.qt-tpsl-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-tpsl-record-hint[data-v-66414eaf]{margin-top:10px;margin-bottom:0}.qt-close-scope[data-v-66414eaf]{margin-top:12px;padding-top:10px;border-top:1px dashed #e8e8e8}.qt-label-close-scope[data-v-66414eaf]{margin-bottom:6px}.qt-close-scope-radio[data-v-66414eaf]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-close-scope-radio[data-v-66414eaf] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px;font-size:12px}.qt-tp-label[data-v-66414eaf]{color:#389e0d!important}.qt-sl-label[data-v-66414eaf]{color:#cf1322!important}.qt-input-full[data-v-66414eaf]{width:100%}.qt-dir-btn.qt-dir-disabled[data-v-66414eaf]{opacity:.42;cursor:not-allowed;pointer-events:none}.qt-empty-icon[data-v-66414eaf]{font-size:28px;color:#d9d9d9;margin-bottom:8px}.qt-empty-desc[data-v-66414eaf]{font-size:12px;color:#8c8c8c;line-height:1.5}.qt-submit-section[data-v-66414eaf]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-66414eaf]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-66414eaf]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-66414eaf]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-66414eaf]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]:active{background:#cf1322!important}.qt-position-section[data-v-66414eaf]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-66414eaf]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-position-section .qt-position-count[data-v-66414eaf]{font-size:12px;color:#999;font-weight:400}.qt-position-section .qt-close-scope-global[data-v-66414eaf]{margin-bottom:10px}.qt-history-section[data-v-66414eaf]{padding:8px 20px 12px}.qt-history-section[data-v-66414eaf] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-66414eaf] .ant-collapse-item{border:none}.qt-history-section[data-v-66414eaf] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-66414eaf] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-66414eaf] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-66414eaf] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-66414eaf]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-66414eaf]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-66414eaf]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card+.qt-position-card[data-v-66414eaf]{margin-top:10px}.qt-position-card.long[data-v-66414eaf]{border-left-color:#52c41a}.qt-position-card.short[data-v-66414eaf]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-66414eaf]:first-child{color:#999}.qt-position-empty[data-v-66414eaf]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-green[data-v-66414eaf]{color:#52c41a!important}.qt-red[data-v-66414eaf]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-66414eaf]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-66414eaf]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-66414eaf]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-66414eaf]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-66414eaf]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-66414eaf]{border-bottom-color:#303030}.theme-dark .qt-header .qt-icon[data-v-66414eaf]{color:#a3a3a3}.theme-dark .qt-header .qt-header-title[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-66414eaf]{color:#666}.theme-dark .qt-header .qt-close[data-v-66414eaf]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-66414eaf]{background:-webkit-gradient(linear,left top,left bottom,from(#262626),to(#1f1f1f));background:linear-gradient(180deg,#262626,#1f1f1f)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-66414eaf] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-66414eaf] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-66414eaf]{color:#999}.theme-dark .qt-section .qt-label[data-v-66414eaf]{color:#777}.theme-dark .qt-position-section .qt-section-header[data-v-66414eaf]{color:#ccc}.theme-dark .qt-position-section .qt-position-count[data-v-66414eaf]{color:#888}.theme-dark .qt-position-card[data-v-66414eaf]{background:#262626}.theme-dark .qt-position-card .qt-pos-row span[data-v-66414eaf]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-66414eaf],.theme-dark .qt-position-card .qt-pos-row span[data-v-66414eaf]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-66414eaf]{color:#888}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-66414eaf]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-66414eaf]{color:#ccc}.theme-dark[data-v-66414eaf] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-66414eaf] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-66414eaf] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-66414eaf] .ant-drawer-content{background:#141414}.theme-dark[data-v-66414eaf] .ant-input-number,.theme-dark[data-v-66414eaf] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-66414eaf] .ant-radio-group .ant-radio-button-wrapper{background:#262626;border-color:#303030;color:#ccc}.theme-dark[data-v-66414eaf] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#434343;border-color:#595959;color:#fff}.theme-dark[data-v-66414eaf] .ant-slider-rail{background:#303030}.theme-dark[data-v-66414eaf] .ant-slider-track{background:#737373}.theme-dark .qt-manage-link a[data-v-66414eaf]{color:#58a6ff}.theme-dark .qt-manage-link .qt-manage-sep[data-v-66414eaf]{color:#555}.theme-dark .qt-card[data-v-66414eaf]{background:#262626;border-color:#3a3a3a}.theme-dark .qt-section-title[data-v-66414eaf]{color:#e8e8e8}.theme-dark .qt-badge-contract[data-v-66414eaf]{background:#333;color:#bfbfbf;border-color:#434343}.theme-dark .qt-optional-tag[data-v-66414eaf]{background:#2a2a2a;color:#888}.theme-dark .qt-hint-text[data-v-66414eaf]{color:#777}.theme-dark .qt-spot-banner-title[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-spot-banner-icon[data-v-66414eaf]{color:#73d13d}.theme-dark .qt-tp-label[data-v-66414eaf]{color:#95de64!important}.theme-dark .qt-sl-label[data-v-66414eaf]{color:#ff7875!important}.theme-dark .qt-close-scope[data-v-66414eaf]{border-top-color:#3a3a3a}.theme-dark .qt-position-empty[data-v-66414eaf]{background:#262626;border-color:#303030}.theme-dark .qt-empty-icon[data-v-66414eaf]{color:#434343}.theme-dark .qt-empty-desc[data-v-66414eaf]{color:#888}.polymarket-analysis-modal .input-section .input-actions[data-v-67e891d2]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-67e891d2]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-67e891d2]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-67e891d2]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-67e891d2]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-67e891d2]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-67e891d2]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-67e891d2]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-67e891d2]{text-align:center;padding:40px 0}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-bar{border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab-active{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-ink-bar{background:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider{color:#d4d4d4;border-top-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider-inner-text{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-affix-wrapper,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-number,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-textarea textarea{background:#141414!important;border-color:#2a2a2a!important;color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table{background:#1c1c1c;color:#d4d4d4}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-thead>tr>th{background:#252525;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-tbody>tr>td{background:#1c1c1c;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-btn-link{color:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert{background:#1c1c1c;border-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-message{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-description{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark .market-info h3[data-v-67e891d2]{color:#d4d4d4}.polymarket-analysis-modal.theme-dark .market-info .market-meta .meta-item[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:#b3b3b3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section h4[data-v-67e891d2]{color:#d4d4d4}.ai-asset-analysis-page[data-v-4f6cc952]{padding:20px;min-height:calc(100vh - 120px);background:#f0f2f5;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow-x:hidden}.ai-asset-analysis-page .radar-section[data-v-4f6cc952]{margin-bottom:20px}.ai-asset-analysis-page .radar-section .radar-header[data-v-4f6cc952]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:14px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-4f6cc952]{margin:0;font-size:16px;font-weight:700;color:#1a1a1a;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-4f6cc952]{margin:2px 0 0;font-size:12px;color:#999}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-4f6cc952]{border-radius:8px;border:1px solid #e0e0e0;background:#fff;color:#666;font-size:12px;font-weight:500}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-4f6cc952]:hover{border-color:#6366f1;color:#6366f1}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]{overflow:hidden;position:relative;border-radius:12px;padding:2px 0}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:before{content:"";position:absolute;top:0;bottom:0;width:50px;z-index:2;pointer-events:none}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-track[data-v-4f6cc952]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-animation:radar-scroll-4f6cc952 60s linear infinite;animation:radar-scroll-4f6cc952 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .radar-section .radar-track.paused[data-v-4f6cc952]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes radar-scroll-4f6cc952{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes radar-scroll-4f6cc952{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]{width:250px;background:#fff;border-radius:12px;padding:16px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0;border:1px solid #eaeaea;-webkit-transition:all .25s cubic-bezier(.4,0,.2,1);transition:all .25s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]:before{content:"";position:absolute;inset:0;border-radius:12px;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s;background:linear-gradient(135deg,rgba(99,102,241,.04),rgba(139,92,246,.02))}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);border-color:rgba(99,102,241,.3);-webkit-box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1);box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1)}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]:hover:before{opacity:1}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-4f6cc952]{width:290px}.ai-asset-analysis-page .radar-section .radar-card .rc-head[data-v-4f6cc952]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-4f6cc952]{font-weight:800;font-size:15px;color:#111;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol.rc-prediction-title[data-v-4f6cc952]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-market[data-v-4f6cc952]{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;padding:2px 7px;border-radius:5px;-ms-flex-negative:0;flex-shrink:0;background:#f5f5f5;color:#888}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-crypto[data-v-4f6cc952]{color:#7c3aed;background:rgba(124,58,237,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-usstock[data-v-4f6cc952]{color:#16a34a;background:rgba(22,163,74,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-forex[data-v-4f6cc952]{color:#d97706;background:rgba(217,119,6,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-4f6cc952]{color:#0891b2;background:rgba(8,145,178,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-4f6cc952]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:4px;margin-bottom:12px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-4f6cc952]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:3px;padding:7px;border-radius:8px;background:#fafafa}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-label[data-v-4f6cc952]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:#999}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-4f6cc952]{font-size:13px;font-weight:700;color:#222}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-4f6cc952]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-4f6cc952]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-val[data-v-4f6cc952]{font-size:11px;font-weight:600}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-4f6cc952]{color:#0891b2}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-4f6cc952]{color:#d97706}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-4f6cc952]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-4f6cc952]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-footer[data-v-4f6cc952]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-reason[data-v-4f6cc952]{font-size:11px;color:#999;line-height:1.4;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-4f6cc952]{font-size:11px;font-weight:700;color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:4px 12px;border-radius:8px;white-space:nowrap;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-4f6cc952]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 12px rgba(99,102,241,.35);box-shadow:0 2px 12px rgba(99,102,241,.35)}.ai-asset-analysis-page .qt-floating-btn[data-v-4f6cc952]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;cursor:pointer;-webkit-box-shadow:0 4px 20px rgba(99,102,241,.35);box-shadow:0 4px 20px rgba(99,102,241,.35);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-4f6cc952 2.5s ease-in-out infinite;animation:qt-float-pulse-4f6cc952 2.5s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-4f6cc952]:hover{-webkit-transform:scale(1.08);transform:scale(1.08);-webkit-box-shadow:0 6px 28px rgba(99,102,241,.5);box-shadow:0 6px 28px rgba(99,102,241,.5)}@-webkit-keyframes qt-float-pulse-4f6cc952{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-4f6cc952{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-4f6cc952]{border-radius:14px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06);border:1px solid #e8e8e8}.ai-asset-analysis-page .workspace-card[data-v-4f6cc952] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-bar{margin-bottom:0;padding:0 20px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab{font-size:15px;font-weight:600;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-4f6cc952] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-4f6cc952] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-4f6cc952]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-4f6cc952]{font-size:64px;color:#6366f1;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-4f6cc952]{font-size:20px;font-weight:700;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-4f6cc952]{font-size:14px;color:rgba(0,0,0,.55);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-4f6cc952]{background:#141414}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-title[data-v-4f6cc952]{color:#e8e8e8}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-subtitle[data-v-4f6cc952]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-4f6cc952]{background:#1c1c1c;border-color:#2a2a2a;color:#999}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-4f6cc952]:hover{border-color:#6366f1;color:#a78bfa}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-4f6cc952]:before{background:-webkit-gradient(linear,left top,right top,from(#141414),to(transparent));background:linear-gradient(90deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-4f6cc952]:after{background:-webkit-gradient(linear,right top,left top,from(#141414),to(transparent));background:linear-gradient(270deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-4f6cc952]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-4f6cc952]:before{background:linear-gradient(135deg,rgba(99,102,241,.06),rgba(139,92,246,.03))}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-4f6cc952]:hover{border-color:rgba(99,102,241,.25);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15);box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-symbol[data-v-4f6cc952]{color:#f0f0f0}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market[data-v-4f6cc952]{background:hsla(0,0%,100%,.06);color:#888}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-crypto[data-v-4f6cc952]{color:#a78bfa;background:rgba(167,139,250,.12)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-usstock[data-v-4f6cc952]{color:#4ade80;background:rgba(74,222,128,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-forex[data-v-4f6cc952]{color:#fbbf24;background:rgba(251,191,36,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-4f6cc952]{color:#22d3ee;background:rgba(34,211,238,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric[data-v-4f6cc952]{background:hsla(0,0%,100%,.03)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-label[data-v-4f6cc952]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value[data-v-4f6cc952]{color:#ddd}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-4f6cc952]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-4f6cc952]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-4f6cc952]{color:#22d3ee}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-4f6cc952]{color:#fbbf24}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-4f6cc952]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-4f6cc952]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-reason[data-v-4f6cc952]{color:#555}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-cta[data-v-4f6cc952]{color:#fff}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-4f6cc952]{background:#1c1c1c;border-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab-active{color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-ink-bar{background-color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder h3[data-v-4f6cc952]{color:#d4d4d4}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder p[data-v-4f6cc952]{color:#a3a3a3}@media (max-width:768px){.ai-asset-analysis-page[data-v-4f6cc952]{padding:8px;min-height:auto}.ai-asset-analysis-page .radar-section[data-v-4f6cc952]{margin-bottom:10px}.ai-asset-analysis-page .radar-section .radar-header[data-v-4f6cc952]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-4f6cc952]{font-size:15px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-4f6cc952]{font-size:11px}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-4f6cc952]{-ms-flex-item-align:end;align-self:flex-end}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-4f6cc952]:before{width:28px}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]{width:210px;padding:12px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-4f6cc952]{width:248px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-4f6cc952]{font-size:14px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-4f6cc952]{padding:6px}.ai-asset-analysis-page .qt-floating-btn[data-v-4f6cc952]{right:max(8px,env(safe-area-inset-right,0px));bottom:max(68px,calc(52px + env(safe-area-inset-bottom, 0px)));width:44px;height:44px;font-size:20px}.ai-asset-analysis-page .workspace-card[data-v-4f6cc952]{border-radius:10px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-bar{padding:0 6px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab{font-size:14px;padding:10px 8px;margin-right:2px;white-space:nowrap}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-4f6cc952]{padding:16px 8px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-4f6cc952]{font-size:48px;margin-bottom:12px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-4f6cc952]{font-size:17px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-4f6cc952]{font-size:13px}}@media (max-width:480px){.ai-asset-analysis-page[data-v-4f6cc952]{padding:4px}.ai-asset-analysis-page .radar-section .radar-card[data-v-4f6cc952]{width:188px;padding:10px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-4f6cc952]{width:220px}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-4f6cc952]{gap:3px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-4f6cc952]{font-size:12px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-bar{padding:0 4px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-4f6cc952] .ant-tabs-tab{font-size:13px;padding:8px 6px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-4f6cc952]{padding:12px 6px}} \ No newline at end of file diff --git a/frontend/dist/css/447.091cab00.css b/frontend/dist/css/447.091cab00.css deleted file mode 100644 index 9804294..0000000 --- a/frontend/dist/css/447.091cab00.css +++ /dev/null @@ -1 +0,0 @@ -[data-v-4fea1865] .ant-modal{top:20px!important}.visual-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;background:#fafafa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:500px;overflow:hidden}.visual-modules-list[data-v-4fea1865]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px}.empty-visual-state[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;color:#999}.visual-module-card[data-v-4fea1865]{background:#fff;border:1px solid #e8e8e8;border-radius:4px;margin-bottom:12px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.visual-module-card .module-header[data-v-4fea1865]{padding:8px 12px;border-bottom:1px solid #f0f0f0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#f9f9f9}.visual-module-card .module-header .module-title[data-v-4fea1865],.visual-module-card .module-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.visual-module-card .module-header .module-title[data-v-4fea1865]{font-weight:500;gap:8px}.visual-module-card .module-header .remove-icon[data-v-4fea1865]{cursor:pointer;color:#999}.visual-module-card .module-header .remove-icon[data-v-4fea1865]:hover{color:#ff4d4f}.visual-module-card .module-body[data-v-4fea1865]{padding:12px}.visual-module-card .style-config[data-v-4fea1865]{margin-top:12px;padding-top:12px;border-top:1px dashed #f0f0f0}.visual-module-card .style-config .label[data-v-4fea1865]{margin-right:8px;color:#666}.add-module-bar[data-v-4fea1865]{padding:12px;background:#fff;border-top:1px solid #e8e8e8}@media (max-width:768px){.visual-editor-container[data-v-4fea1865]{height:auto;min-height:400px}}.ant-form-item[data-v-4fea1865]{margin-bottom:16px}.editor-content[data-v-4fea1865]{padding:24px;background:#fff;min-height:500px;max-height:82vh;overflow-y:auto}.editor-layout[data-v-4fea1865]{min-height:450px}.code-editor-column[data-v-4fea1865]{height:100%}.code-editor-column[data-v-4fea1865],.code-section[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-section[data-v-4fea1865]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;padding-bottom:12px;border-bottom:2px solid #f0f0f0}.code-section .section-header .section-title[data-v-4fea1865],.code-section .section-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.code-section .section-header .section-title[data-v-4fea1865]{font-weight:600;font-size:14px;color:#262626;gap:8px}.code-section .section-header .section-title[data-v-4fea1865]:before{content:"";display:inline-block;width:4px;height:14px;background:#1890ff;border-radius:2px}.code-section .section-header .section-actions[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff;padding:0 8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff}.code-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;overflow:hidden;height:62vh;min-height:520px;max-height:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05);box-shadow:inset 0 1px 3px rgba(0,0,0,.05);-webkit-transition:all .3s ease;transition:all .3s ease}.code-editor-container[data-v-4fea1865]:hover{border-color:#40a9ff}.code-editor-container[data-v-4fea1865]:focus-within{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05);box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05)}.code-editor-container[data-v-4fea1865] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fafafa}.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:100%;max-height:none;overflow-y:auto;overflow-x:auto}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:100%!important;padding-left:12px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5);width:45px;padding-right:4px}.code-editor-container[data-v-4fea1865] .CodeMirror-linenumber{padding:0 8px 0 4px;min-width:30px;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-4fea1865] .CodeMirror-lines{padding:12px 8px;background:#fff}.code-editor-container[data-v-4fea1865] .CodeMirror-line{padding-left:0}.code-editor-container[data-v-4fea1865] .CodeMirror-cursor{border-left:2px solid #1890ff}.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}.code-mode-split[data-v-4fea1865]{width:100%}.ai-pane[data-v-4fea1865],.ai-panel[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ai-panel[data-v-4fea1865]{border:1px solid #e8e8e8;border-radius:6px;background:#fafafa;padding:12px;height:62vh;min-height:520px}.ai-panel-title[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:10px;color:#262626}.ai-panel-hint[data-v-4fea1865]{margin-top:10px;color:#8c8c8c;font-size:12px;line-height:1.5}.ai-panel[data-v-4fea1865] textarea.ant-input{-webkit-box-flex:1;-ms-flex:1;flex:1;resize:none}.editor-footer[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.editor-footer[data-v-4fea1865] .ant-btn{height:36px;padding:0 20px;font-weight:500;border-radius:4px;-webkit-transition:all .3s ease;transition:all .3s ease}.editor-footer[data-v-4fea1865] .ant-btn:not(.ant-btn-primary):hover{border-color:#40a9ff;color:#40a9ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary{-webkit-box-shadow:0 2px 4px rgba(24,144,255,.3);box-shadow:0 2px 4px rgba(24,144,255,.3)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary:hover{-webkit-box-shadow:0 4px 12px rgba(24,144,255,.4);box-shadow:0 4px 12px rgba(24,144,255,.4);-webkit-transform:translateY(-1px);transform:translateY(-1px)}@media (max-width:768px){.indicator-editor-modal[data-v-4fea1865] .ant-modal{width:100%!important;max-width:100%!important;margin:0!important;top:0!important;padding-bottom:0!important;max-height:100vh!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-content{height:100vh!important;max-height:100vh!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-header{-ms-flex-negative:0;flex-shrink:0;padding:16px;border-bottom:1px solid #e8e8e8}.indicator-editor-modal[data-v-4fea1865] .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:0!important;min-height:0}.indicator-editor-modal[data-v-4fea1865] .ant-modal-footer{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;border-top:1px solid #e8e8e8}.editor-content[data-v-4fea1865]{padding:16px!important;min-height:auto!important;max-height:none!important;overflow-y:visible!important}.editor-layout[data-v-4fea1865]{min-height:auto!important}.code-editor-column[data-v-4fea1865]{width:100%!important;margin-bottom:16px}.code-section[data-v-4fea1865]{margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{padding-bottom:8px;margin-bottom:8px}.code-section .section-header .section-title[data-v-4fea1865]{font-size:13px}.code-editor-container[data-v-4fea1865]{height:250px!important}.code-editor-container[data-v-4fea1865],.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{min-height:250px!important;max-height:250px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:250px!important}.ai-panel[data-v-4fea1865]{height:auto!important;min-height:auto!important}.editor-footer[data-v-4fea1865]{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:8px;padding:0}.editor-footer[data-v-4fea1865] .ant-btn{width:100%;height:40px;margin:0}}.chart-left[data-v-58f93984]{width:70%!important;-webkit-box-flex:0!important;-ms-flex:0 0 70%!important;flex:0 0 70%!important;position:relative;border-right:1px solid #e8e8e8;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.chart-left.theme-dark[data-v-58f93984]{background:#141414;border-right-color:#2a2a2a}.chart-wrapper[data-v-58f93984]{width:100%;height:100%;position:relative;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;display:-webkit-box;display:-ms-flexbox;display:flex}.theme-dark .chart-wrapper[data-v-58f93984]{background:#141414}.drawing-toolbar[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0;width:40px;background:#fff;border-right:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;gap:4px;z-index:10;overflow-y:auto;overflow-x:hidden}.chart-left.theme-dark .drawing-toolbar[data-v-58f93984]{background:#141414;border-right-color:#2a2a2a}.drawing-tool-btn[data-v-58f93984]{width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;border-radius:4px;-webkit-transition:all .2s;transition:all .2s;color:#666;font-size:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .drawing-tool-btn[data-v-58f93984]{color:#d1d4dc}.drawing-tool-btn[data-v-58f93984]:hover{background:#f0f2f5;color:#1890ff}.chart-left.theme-dark .drawing-tool-btn[data-v-58f93984]:hover{background:#252525;color:#13c2c2}.drawing-tool-btn.active[data-v-58f93984]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff}.chart-left.theme-dark .drawing-tool-btn.active[data-v-58f93984]{background:#252525;color:#13c2c2;border-color:#13c2c2}.drawing-toolbar .ant-divider-vertical[data-v-58f93984]{margin:8px 0;height:20px}.indicator-toolbar[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #e8e8e8;-ms-flex-wrap:wrap;flex-wrap:wrap;z-index:1;position:relative;width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.indicator-toolbar[data-v-58f93984]::-webkit-scrollbar{display:none;width:0;height:0}.chart-content-area[data-v-58f93984]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden}.chart-left.theme-dark .indicator-toolbar[data-v-58f93984]{background:#141414;border-bottom-color:#2a2a2a}.indicator-btn[data-v-58f93984]{padding:4px 12px;font-size:12px;font-weight:600;color:#666;background:#f0f2f5;border:1px solid #e8e8e8;border-radius:4px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;white-space:nowrap;min-width:40px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .indicator-btn[data-v-58f93984]{color:#d1d4dc;background:#252525;border-color:#2a2a2a}.indicator-btn[data-v-58f93984]:hover{color:#1890ff;border-color:#1890ff;background:#f0f8ff}.chart-left.theme-dark .indicator-btn[data-v-58f93984]:hover{color:#13c2c2;border-color:#13c2c2;background:#252525}.indicator-btn.active[data-v-58f93984]{color:#1890ff;background:#fff;border-color:#1890ff;border-width:2px;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)}.chart-left.theme-dark .indicator-btn.active[data-v-58f93984]{color:#13c2c2;background:#252525;border-color:#13c2c2;-webkit-box-shadow:0 0 0 2px rgba(19,194,194,.2);box-shadow:0 0 0 2px rgba(19,194,194,.2)}.kline-chart-container[data-v-58f93984]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;min-width:0;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;overflow:hidden}.theme-dark .kline-chart-container[data-v-58f93984]{background:#141414}.chart-overlay[data-v-58f93984]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.95);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;backdrop-filter:blur(2px)}.chart-left.theme-dark .chart-overlay[data-v-58f93984]{background:hsla(0,0%,8%,.95)}.error-box[data-v-58f93984]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#333}.initial-hint[data-v-58f93984]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .initial-hint[data-v-58f93984]{background:hsla(0,0%,8%,.98)}.hint-box[data-v-58f93984]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:400px;padding:20px}.pyodide-warning[data-v-58f93984]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .pyodide-warning[data-v-58f93984]{background:hsla(0,0%,8%,.98)}.warning-box[data-v-58f93984]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:500px;padding:20px}.warning-title[data-v-58f93984]{font-size:16px;font-weight:600;color:#faad14;margin-bottom:8px}.warning-desc[data-v-58f93984]{font-size:14px;color:#666;line-height:1.6}.chart-left.theme-dark .warning-box[data-v-58f93984]{color:#d1d4dc}.chart-left.theme-dark .warning-title[data-v-58f93984]{color:#faad14}.chart-left.theme-dark .warning-desc[data-v-58f93984]{color:#868993}.chart-left.theme-dark .hint-box[data-v-58f93984]{color:#d1d4dc}.hint-title[data-v-58f93984]{font-size:18px;font-weight:600;color:#333;margin-bottom:12px}.chart-left.theme-dark .hint-title[data-v-58f93984]{color:#d1d4dc}.hint-desc[data-v-58f93984]{font-size:14px;color:#999;line-height:1.6}.chart-left.theme-dark .hint-desc[data-v-58f93984]{color:#787b86}.history-loading-hint[data-v-58f93984]{position:absolute;left:20px;top:60px;z-index:1000!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 16px;background:hsla(0,0%,100%,.98)!important;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);font-size:14px;color:#666!important;backdrop-filter:blur(4px);pointer-events:none;visibility:visible!important;opacity:1!important}.chart-left.theme-dark .history-loading-hint[data-v-58f93984]{background:hsla(0,0%,8%,.98)!important;border-color:#2a2a2a;color:#d1d4dc!important}.loading-text[data-v-58f93984]{white-space:nowrap;margin-left:4px}@media (max-width:768px){.drawing-toolbar[data-v-58f93984]{display:none}.indicator-toolbar[data-v-58f93984]{padding-left:12px;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.indicator-toolbar[data-v-58f93984]::-webkit-scrollbar{display:none;width:0;height:0}.indicator-btn[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0}}@media (max-width:1200px){.drawing-toolbar[data-v-58f93984]{display:none}.indicator-toolbar[data-v-58f93984]{padding-left:12px}.kline-chart-container[data-v-58f93984]{margin-left:0}.chart-left[data-v-58f93984]{width:100%!important;min-width:100%!important;border-right:none;border-bottom:1px solid #e8e8e8;height:600px!important;min-height:600px!important}.chart-wrapper[data-v-58f93984],.kline-chart-container[data-v-58f93984]{height:100%!important;min-height:600px!important}}@media (max-width:992px){.chart-left[data-v-58f93984]{height:650px!important;min-height:650px!important}.chart-wrapper[data-v-58f93984],.kline-chart-container[data-v-58f93984]{height:100%!important;min-height:650px!important}}@media (max-width:768px){.chart-left[data-v-58f93984]{height:60vh!important;min-height:400px!important;max-height:80vh!important}.chart-wrapper[data-v-58f93984]{height:100%!important;min-height:400px!important;max-height:100%!important}.kline-chart-container[data-v-58f93984]{height:calc(100% - 45px)!important;min-height:350px!important;max-height:calc(100% - 45px)!important}}@media (max-width:576px){.chart-left[data-v-58f93984]{height:55vh!important;min-height:350px!important;max-height:75vh!important}.chart-wrapper[data-v-58f93984]{height:100%!important;min-height:350px!important;max-height:100%!important}.kline-chart-container[data-v-58f93984]{height:calc(100% - 45px)!important;min-height:300px!important;max-height:calc(100% - 45px)!important}}.quick-trade-drawer[data-v-75b64b85] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-75b64b85]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-75b64b85],.qt-header[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-75b64b85]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-75b64b85]{font-size:20px;color:#595959}.qt-header .qt-header-left .qt-header-title[data-v-75b64b85]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-75b64b85]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-75b64b85]:hover{color:#333}.qt-symbol-bar[data-v-75b64b85]{padding:12px 20px;background:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f0f0f0));background:linear-gradient(180deg,#fafafa,#f0f0f0);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85],.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-75b64b85]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-75b64b85]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-75b64b85]{color:#999;font-size:12px}.qt-section[data-v-75b64b85]{padding:8px 20px}.qt-section .qt-label[data-v-75b64b85]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-75b64b85]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-75b64b85]{color:#999}.qt-balance .qt-balance-loading-text[data-v-75b64b85]{margin-left:4px}.qt-balance .qt-balance-value[data-v-75b64b85]{color:#52c41a;font-weight:600}.qt-balance .qt-balance-error[data-v-75b64b85]{color:#faad14;cursor:help}.qt-no-cred-actions[data-v-75b64b85]{margin-top:10px}.qt-manage-link[data-v-75b64b85]{margin-top:8px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.qt-manage-link .qt-manage-sep[data-v-75b64b85]{color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-75b64b85]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-75b64b85]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-75b64b85]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-75b64b85]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-75b64b85]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-75b64b85]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-leverage-input[data-v-75b64b85]{width:80px}.qt-card[data-v-75b64b85]{margin-left:16px;margin-right:16px;padding:12px 14px;border-radius:10px;background:#f5f5f5;border:1px solid #e8e8e8}.qt-section-title-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.qt-section-title[data-v-75b64b85]{font-size:13px;font-weight:600;color:#333}.qt-badge-contract[data-v-75b64b85]{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:#ebebeb;color:#595959;border:1px solid #d9d9d9}.qt-optional-tag[data-v-75b64b85]{font-size:10px;color:#8c8c8c;background:#f0f0f0;padding:1px 8px;border-radius:4px}.qt-label-spaced[data-v-75b64b85]{margin-top:10px}.qt-margin-radio[data-v-75b64b85]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-margin-radio[data-v-75b64b85] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px}.qt-hint-text[data-v-75b64b85]{font-size:11px;color:#8c8c8c;line-height:1.45;margin-top:8px}.qt-hint-inline[data-v-75b64b85]{margin-top:6px}.qt-spot-banner[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:4px 0}.qt-spot-banner-icon[data-v-75b64b85]{font-size:22px;color:#52c41a;margin-top:2px}.qt-spot-banner-title[data-v-75b64b85]{font-size:13px;font-weight:600;color:#333;margin-bottom:4px}.qt-spot-banner-text .qt-hint-text[data-v-75b64b85]{margin-top:0}.qt-tpsl-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-tp-label[data-v-75b64b85]{color:#389e0d!important}.qt-sl-label[data-v-75b64b85]{color:#cf1322!important}.qt-input-full[data-v-75b64b85]{width:100%}.qt-dir-btn.qt-dir-disabled[data-v-75b64b85]{opacity:.42;cursor:not-allowed;pointer-events:none}.qt-empty-icon[data-v-75b64b85]{font-size:28px;color:#d9d9d9;margin-bottom:8px}.qt-empty-desc[data-v-75b64b85]{font-size:12px;color:#8c8c8c;line-height:1.5}.qt-submit-section[data-v-75b64b85]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-75b64b85]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-75b64b85]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-75b64b85]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-75b64b85]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]:active{background:#cf1322!important}.qt-position-section[data-v-75b64b85]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-75b64b85]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-75b64b85]{padding:8px 20px 12px}.qt-history-section[data-v-75b64b85] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-75b64b85] .ant-collapse-item{border:none}.qt-history-section[data-v-75b64b85] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-75b64b85] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-75b64b85] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-75b64b85] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-75b64b85]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-75b64b85]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-75b64b85]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-75b64b85]{border-left-color:#52c41a}.qt-position-card.short[data-v-75b64b85]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-75b64b85]:first-child{color:#999}.qt-position-empty[data-v-75b64b85]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-green[data-v-75b64b85]{color:#52c41a!important}.qt-red[data-v-75b64b85]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-75b64b85]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-75b64b85]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-75b64b85]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-75b64b85]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-75b64b85]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-75b64b85]{border-bottom-color:#303030}.theme-dark .qt-header .qt-icon[data-v-75b64b85]{color:#a3a3a3}.theme-dark .qt-header .qt-header-title[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-75b64b85]{color:#666}.theme-dark .qt-header .qt-close[data-v-75b64b85]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-75b64b85]{background:-webkit-gradient(linear,left top,left bottom,from(#262626),to(#1f1f1f));background:linear-gradient(180deg,#262626,#1f1f1f)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-75b64b85] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-75b64b85] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-75b64b85]{color:#999}.theme-dark .qt-section .qt-label[data-v-75b64b85]{color:#777}.theme-dark .qt-position-card[data-v-75b64b85]{background:#262626}.theme-dark .qt-position-card .qt-pos-row span[data-v-75b64b85]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-75b64b85],.theme-dark .qt-position-card .qt-pos-row span[data-v-75b64b85]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-75b64b85]{color:#888}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-75b64b85]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-75b64b85]{color:#ccc}.theme-dark[data-v-75b64b85] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-75b64b85] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-75b64b85] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-75b64b85] .ant-drawer-content{background:#141414}.theme-dark[data-v-75b64b85] .ant-input-number,.theme-dark[data-v-75b64b85] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-75b64b85] .ant-radio-group .ant-radio-button-wrapper{background:#262626;border-color:#303030;color:#ccc}.theme-dark[data-v-75b64b85] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#434343;border-color:#595959;color:#fff}.theme-dark[data-v-75b64b85] .ant-slider-rail{background:#303030}.theme-dark[data-v-75b64b85] .ant-slider-track{background:#737373}.theme-dark .qt-manage-link a[data-v-75b64b85]{color:#58a6ff}.theme-dark .qt-manage-link .qt-manage-sep[data-v-75b64b85]{color:#555}.theme-dark .qt-card[data-v-75b64b85]{background:#262626;border-color:#3a3a3a}.theme-dark .qt-section-title[data-v-75b64b85]{color:#e8e8e8}.theme-dark .qt-badge-contract[data-v-75b64b85]{background:#333;color:#bfbfbf;border-color:#434343}.theme-dark .qt-optional-tag[data-v-75b64b85]{background:#2a2a2a;color:#888}.theme-dark .qt-hint-text[data-v-75b64b85]{color:#777}.theme-dark .qt-spot-banner-title[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-spot-banner-icon[data-v-75b64b85]{color:#73d13d}.theme-dark .qt-tp-label[data-v-75b64b85]{color:#95de64!important}.theme-dark .qt-sl-label[data-v-75b64b85]{color:#ff7875!important}.theme-dark .qt-position-empty[data-v-75b64b85]{background:#262626;border-color:#303030}.theme-dark .qt-empty-icon[data-v-75b64b85]{color:#434343}.theme-dark .qt-empty-desc[data-v-75b64b85]{color:#888}.chart-container[data-v-6bd239a6]{background:#f0f2f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.chart-container[data-v-6bd239a6],.chart-header[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-header[data-v-6bd239a6]{max-width:100%;background:#fff;border-bottom:1px solid #e8e8e8;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.02);box-shadow:0 2px 4px rgba(0,0,0,.02)}.header-top[data-v-6bd239a6]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;height:60px}.header-left[data-v-6bd239a6],.header-top[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header-left[data-v-6bd239a6]{gap:20px}.symbol-select[data-v-6bd239a6]{width:220px}.symbol-select[data-v-6bd239a6] .ant-select-selection{background-color:#fff;border:1px solid #e8e8e8;color:#333;border-radius:4px;-webkit-box-shadow:none;box-shadow:none}.symbol-select[data-v-6bd239a6] .ant-select-selection:hover{border-color:#1890ff}.symbol-select[data-v-6bd239a6] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}.symbol-select[data-v-6bd239a6] .ant-select-arrow,.symbol-select[data-v-6bd239a6] .ant-select-selection__placeholder{color:#999}.timeframe-group[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;background:#f0f2f5;border-radius:4px;padding:2px}.timeframe-item[data-v-6bd239a6]{padding:4px 12px;font-size:13px;font-weight:600;color:#666;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-radius:4px}.timeframe-item[data-v-6bd239a6]:hover{color:#1890ff;background:#fff}.timeframe-item.active[data-v-6bd239a6]{color:#1890ff;background:#fff;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.current-symbol[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:24px}.symbol-info[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.symbol-label[data-v-6bd239a6]{font-size:16px;font-weight:700;color:#333;line-height:1.2}.market-tag[data-v-6bd239a6]{font-size:10px;color:#666;background:#f0f2f5;padding:1px 4px;border-radius:2px;margin-top:2px}.price-info[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.price-info.color-up[data-v-6bd239a6]{color:#0ecb81}.price-info.color-down[data-v-6bd239a6]{color:#f6465d}.symbol-price[data-v-6bd239a6]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace;line-height:1.2}.symbol-change[data-v-6bd239a6]{font-size:12px}.mobile-symbol-price[data-v-6bd239a6]{display:none}.panel-header .theme-switcher[data-v-6bd239a6]{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.panel-header .realtime-toggle-btn[data-v-6bd239a6],.panel-header .theme-toggle-btn[data-v-6bd239a6]{color:#666;border:none;padding:4px 8px;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;min-width:32px;height:32px}.panel-header .realtime-toggle-btn[data-v-6bd239a6]:hover,.panel-header .theme-toggle-btn[data-v-6bd239a6]:hover{color:#1890ff;background:#f0f2f5}.panel-header .realtime-toggle-btn.active[data-v-6bd239a6],.panel-header .theme-toggle-btn.active[data-v-6bd239a6]{color:#1890ff;background:#e6f7ff}.panel-header .realtime-toggle-btn .anticon[data-v-6bd239a6],.panel-header .theme-toggle-btn .anticon[data-v-6bd239a6]{font-size:16px}.chart-content[data-v-6bd239a6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-content[data-v-6bd239a6],.chart-main-row[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;width:100%}.chart-main-row[data-v-6bd239a6]{height:80vh!important;min-height:500px!important;max-height:80vh!important;-ms-flex-negative:0;flex-shrink:0}.chart-right[data-v-6bd239a6]{width:30%!important;-webkit-box-flex:0!important;-ms-flex:0 0 30%!important;flex:0 0 30%!important;border-left:1px solid #e8e8e8}.chart-right[data-v-6bd239a6],.indicators-panel[data-v-6bd239a6]{background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicators-panel[data-v-6bd239a6]{height:100%}.panel-header[data-v-6bd239a6]{height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;border-bottom:1px solid #e8e8e8;font-weight:600;color:#333;background:#fff}.panel-header .mobile-header-create-btn[data-v-6bd239a6]{margin-right:0}.panel-body[data-v-6bd239a6]{padding:0;overflow:hidden}.indicator-section[data-v-6bd239a6],.panel-body[data-v-6bd239a6]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicator-section[data-v-6bd239a6]{min-height:0;border-bottom:1px solid #e8e8e8}.indicator-section[data-v-6bd239a6]:last-child{border-bottom:none}.indicator-section.section-empty[data-v-6bd239a6]{min-height:200px}.section-label[data-v-6bd239a6]{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;background:#fafafa;border-bottom:1px solid #e8e8e8;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.section-label .section-label-left[data-v-6bd239a6],.section-label[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-label .section-label-left[data-v-6bd239a6]{gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1}.section-label .section-label-left .collapse-icon[data-v-6bd239a6]{font-size:12px;color:#999;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.section-label .section-label-left span[data-v-6bd239a6]{font-weight:500}.section-label .buy-indicator-btn[data-v-6bd239a6]{padding:0;height:auto;margin-left:8px}.create-indicator-btn[data-v-6bd239a6]{margin-left:auto;margin-right:0}@media (max-width:768px){.create-indicator-btn[data-v-6bd239a6]{display:none!important}}.section-content[data-v-6bd239a6]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px 16px;min-height:0}.indicator-card[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;padding:10px 12px;border-radius:6px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:1px solid #e8e8e8}.indicator-card[data-v-6bd239a6]:hover{background:#f0f2f5;border-color:#1890ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.05);box-shadow:0 2px 4px rgba(0,0,0,.05)}.indicator-card.active[data-v-6bd239a6]{background:#e6f7ff;border-color:#1890ff}.indicator-card.active .card-name[data-v-6bd239a6]{color:#1890ff}.indicator-card.indicator-active[data-v-6bd239a6]{border-color:#52c41a;border-width:2px;background:#f6ffed}.indicator-card.indicator-active[data-v-6bd239a6]:hover{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.2);box-shadow:0 2px 8px rgba(82,196,26,.2)}.indicator-card.indicator-active .card-name[data-v-6bd239a6]{color:#52c41a}.indicator-card.disabled[data-v-6bd239a6]{opacity:.5;cursor:not-allowed}.indicator-card.disabled[data-v-6bd239a6]:hover{-webkit-transform:none;transform:none;background:#fff;border-color:#e8e8e8;-webkit-box-shadow:none;box-shadow:none}.card-content[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.card-header[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:4px}.card-name[data-v-6bd239a6]{font-size:13px;color:#333;font-weight:500;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:8px}.card-params[data-v-6bd239a6]{font-size:11px;color:#999;margin-top:2px}.card-desc[data-v-6bd239a6]{font-size:11px;color:#999;margin-top:0;display:-webkit-box;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.4;min-height:1.4em;max-height:2.8em}.card-action[data-v-6bd239a6]{color:#999;font-size:12px}.card-action[data-v-6bd239a6]:hover{color:#1890ff}.card-actions[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;-ms-flex-negative:0;flex-shrink:0}.action-icon[data-v-6bd239a6]{font-size:16px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;color:#999}.action-icon.edit-icon[data-v-6bd239a6]{color:#1890ff}.action-icon.edit-icon[data-v-6bd239a6]:hover{color:#40a9ff}.action-icon.delete-icon[data-v-6bd239a6]{color:#ff4d4f}.action-icon.delete-icon[data-v-6bd239a6]:hover{color:#ff7875}.action-icon[data-v-6bd239a6]:hover{color:#1890ff}.action-icon.toggle-icon.active[data-v-6bd239a6]{color:#52c41a}.action-icon.backtest-icon[data-v-6bd239a6]{color:#722ed1}.action-icon.backtest-icon[data-v-6bd239a6]:hover{color:#9254de}.action-icon.backtest-history-icon[data-v-6bd239a6]{color:#13c2c2}.action-icon.backtest-history-icon[data-v-6bd239a6]:hover{color:#08979c}.action-icon.publish-icon[data-v-6bd239a6]{color:#1890ff}.action-icon.publish-icon[data-v-6bd239a6]:hover{color:#40a9ff}.action-icon.publish-icon.published[data-v-6bd239a6]{color:#52c41a}.action-icon.publish-icon.published[data-v-6bd239a6]:hover{color:#73d13d}.action-icon.create-strategy-icon[data-v-6bd239a6]{color:#fa8c16}.action-icon.create-strategy-icon[data-v-6bd239a6]:hover{color:#ffa940}.action-icon.status-icon.status-normal[data-v-6bd239a6]{color:#52c41a}.action-icon.status-icon.status-expired[data-v-6bd239a6]{color:#ff4d4f}.action-icon.expiry-icon[data-v-6bd239a6]{color:#1890ff}.empty-indicators[data-v-6bd239a6]{padding:40px 20px;gap:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.empty-indicators[data-v-6bd239a6],.loading-indicators[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#999;font-size:13px}.loading-indicators[data-v-6bd239a6]{padding:20px}.custom-scrollbar[data-v-6bd239a6]{scrollbar-width:none;-ms-overflow-style:none}.custom-scrollbar[data-v-6bd239a6]::-webkit-scrollbar{display:none;width:0;height:0}.dark-dropdown{background-color:#fff;border:1px solid #e8e8e8;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15)}.dark-dropdown .ant-select-dropdown-menu-item{color:#333}.dark-dropdown .ant-select-dropdown-menu-item:hover{background-color:#f0f2f5}.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}.dark-dropdown .ant-empty-description{color:#999}.symbol-option[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-option .symbol-name[data-v-6bd239a6]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-option .symbol-name-extra[data-v-6bd239a6]{font-size:12px;color:#999;margin-left:4px}.empty-watchlist-hint[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#666;font-size:12px}@media (max-width:768px){.chart-container[data-v-6bd239a6]{padding:0;width:calc(100% + 44px)!important;margin:-22px}.chart-header[data-v-6bd239a6]{padding:12px}.chart-header .header-top[data-v-6bd239a6],.chart-header[data-v-6bd239a6]{gap:12px;height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-header .header-top[data-v-6bd239a6]{padding:0}.chart-header .header-left[data-v-6bd239a6]{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.chart-header .search-section[data-v-6bd239a6]{width:100%}.chart-header .search-section .symbol-select[data-v-6bd239a6]{width:100%!important}.chart-header .timeframe-group[data-v-6bd239a6]{width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.chart-header .timeframe-group .timeframe-item[data-v-6bd239a6]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:calc(14.28% - 4px);text-align:center;padding:6px 8px;font-size:12px}.chart-header .current-symbol[data-v-6bd239a6]{display:none}.chart-content[data-v-6bd239a6]{overflow-y:auto}.chart-content[data-v-6bd239a6],.chart-main-row[data-v-6bd239a6]{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important;height:auto!important;min-height:auto!important;max-height:none!important}.mobile-symbol-price[data-v-6bd239a6]{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 16px;background:#fff;width:100%}.mobile-symbol-price .mobile-price-info[data-v-6bd239a6],.mobile-symbol-price[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-symbol-price .mobile-price-info[data-v-6bd239a6]{gap:12px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mobile-symbol-price .mobile-price-info.color-up[data-v-6bd239a6]{color:#0ecb81}.mobile-symbol-price .mobile-price-info.color-down[data-v-6bd239a6]{color:#f6465d}.mobile-symbol-price .mobile-price-info .mobile-symbol-price[data-v-6bd239a6]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace}.mobile-symbol-price .mobile-price-info .mobile-symbol-change[data-v-6bd239a6]{font-size:14px;font-weight:500}kline-chart[data-v-6bd239a6]{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important;width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;display:block!important;margin-bottom:0!important}kline-chart[data-v-6bd239a6] .chart-left{width:100%!important;height:350px!important;min-height:350px!important;max-height:350px!important;border-right:none!important;border-bottom:1px solid #e8e8e8!important}.chart-right[data-v-6bd239a6]{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;width:100%!important;min-width:100%!important;max-width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;height:auto!important;max-height:calc(100vh - 470px)!important;border-left:none!important;border-top:none!important;margin-top:0!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;visibility:visible!important;opacity:1!important}.chart-right .indicators-panel[data-v-6bd239a6]{height:auto!important;min-height:600px!important;max-height:calc(100vh - 410px)!important;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .panel-header[data-v-6bd239a6]{position:sticky;top:0;background:#fff;z-index:10;border-bottom:1px solid #e8e8e8;padding:12px;font-size:14px;-ms-flex-negative:0;flex-shrink:0}.chart-right .indicators-panel .panel-header .mobile-header-create-btn[data-v-6bd239a6]{margin-right:0;font-size:12px;height:28px;padding:0 12px}.chart-right .indicators-panel .panel-body[data-v-6bd239a6]{padding:0;overflow:visible;min-height:400px!important}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6],.chart-right .indicators-panel .panel-body[data-v-6bd239a6]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6]{overflow:hidden;min-height:0;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;border-bottom:1px solid #e8e8e8}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tab{color:#666;font-size:14px}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tab-active{color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-ink-bar{background-color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tabpane{height:100%;overflow:hidden;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tabpane-active{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;height:100%;overflow:hidden}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-6bd239a6],.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-content-holder{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-6bd239a6]{width:100%}.chart-right .indicators-panel .mobile-indicator-tabs .section-content[data-v-6bd239a6]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto!important;overflow-x:hidden;padding:12px;min-height:0;height:100%;-webkit-overflow-scrolling:touch;position:relative}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-6bd239a6],.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn[data-v-6bd239a6]{display:none!important}.chart-right .indicators-panel .indicator-section .section-label[data-v-6bd239a6]{padding:10px 12px;font-size:13px}.chart-right .indicators-panel .section-content[data-v-6bd239a6]{padding:10px 12px}.chart-right .indicators-panel .indicator-card[data-v-6bd239a6]{padding:10px}.chart-right .indicators-panel .indicator-card .card-name[data-v-6bd239a6]{font-size:13px}.chart-right .indicators-panel .indicator-card .card-desc[data-v-6bd239a6],.chart-right .indicators-panel .indicator-card .card-params[data-v-6bd239a6]{font-size:11px}}.qt-header-btn[data-v-6bd239a6]{margin-left:16px;background:linear-gradient(135deg,#1890ff,#722ed1);border:none;color:#fff;border-radius:6px;font-weight:600;font-size:12px;padding:0 12px;height:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3);-webkit-transition:all .3s;transition:all .3s}.qt-header-btn[data-v-6bd239a6]:focus,.qt-header-btn[data-v-6bd239a6]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);color:#fff;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45);-webkit-transform:translateY(-1px);transform:translateY(-1px)}.qt-floating-btn[data-v-6bd239a6]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:999;-webkit-transition:all .3s;transition:all .3s;font-size:22px}.qt-floating-btn[data-v-6bd239a6]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark[data-v-6bd239a6],body.dark,body.realdark{background:#141414;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.3);box-shadow:0 2px 4px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .symbol-label[data-v-6bd239a6],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .market-tag[data-v-6bd239a6],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-up[data-v-6bd239a6],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-down[data-v-6bd239a6],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-6bd239a6],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 2px 8px rgba(23,125,220,.35);box-shadow:0 2px 8px rgba(23,125,220,.35)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-6bd239a6]:focus,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-6bd239a6]:hover,body.dark,body.realdark{background:linear-gradient(135deg,#3c9ae8,#854eca);-webkit-box-shadow:0 4px 12px rgba(23,125,220,.5);box-shadow:0 4px 12px rgba(23,125,220,.5)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-6bd239a6],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 4px 16px rgba(23,125,220,.45);box-shadow:0 4px 16px rgba(23,125,220,.45)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-6bd239a6]:hover,body.dark,body.realdark{-webkit-box-shadow:0 6px 24px rgba(23,125,220,.6);box-shadow:0 6px 24px rgba(23,125,220,.6)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-selection,body.dark,body.realdark{background-color:#1c1c1c;border-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-arrow,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-selection__placeholder,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group[data-v-6bd239a6],body.dark,body.realdark{background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-6bd239a6],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#1890ff;background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff;background:#1c1c1c;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-6bd239a6],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-6bd239a6],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-6bd239a6],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-6bd239a6],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-left-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-6bd239a6],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#1890ff;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-body[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-section[data-v-6bd239a6],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label[data-v-6bd239a6],body.dark,body.realdark{color:#868993;background:#2a2a2a;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left .collapse-icon[data-v-6bd239a6],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left span[data-v-6bd239a6],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-6bd239a6]:hover,body.dark,body.realdark{background:#2a2a2a;border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-6bd239a6],body.dark,body.realdark{border-color:#52c41a;background:#1e3a1e}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-6bd239a6]:hover,body.dark,body.realdark{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.3);box-shadow:0 2px 8px rgba(82,196,26,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active .card-name[data-v-6bd239a6],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-name[data-v-6bd239a6],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-desc[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-params[data-v-6bd239a6],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-6bd239a6],body.dark,body.realdark{color:#ff4d4f}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#ff7875}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-6bd239a6],body.dark,body.realdark{color:#b37feb}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#d3adf7}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-6bd239a6],body.dark,body.realdark{color:#5cdbd3}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#87e8de}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-6bd239a6],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#73d13d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.toggle-icon.active[data-v-6bd239a6],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .empty-indicators[data-v-6bd239a6],body.dark,body.realdark{color:#868993}@media (max-width:768px){.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .current-symbol[data-v-6bd239a6],body.dark,body.realdark{border-top-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-left[data-v-6bd239a6],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-6bd239a6],body.dark,body.realdark{border-top-color:#2a2a2a;max-height:500px!important}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-bar,body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tab,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tab-active,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-ink-bar,body.dark,body.realdark{background-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-6bd239a6],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-6bd239a6],body.dark,body.realdark{color:#868993;background:#2a3932}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-6bd239a6],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-6bd239a6],body.dark,body.realdark{color:#f6465d}}.add-stock-modal-content .market-tabs[data-v-6bd239a6]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-6bd239a6],.add-stock-modal-content .search-results-section[data-v-6bd239a6],.add-stock-modal-content .symbol-search-section[data-v-6bd239a6]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-6bd239a6],.add-stock-modal-content .search-results-section .section-title[data-v-6bd239a6]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-6bd239a6]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-6bd239a6]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-6bd239a6]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-6bd239a6]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-6bd239a6]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-6bd239a6]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chart-container.theme-dark .add-stock-modal-content .hot-symbols-section .section-title[data-v-6bd239a6],.chart-container.theme-dark .add-stock-modal-content .search-results-section .section-title[data-v-6bd239a6],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list[data-v-6bd239a6],body.dark,body.realdark{border-color:#363c4e;background-color:#2a2a2a}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item[data-v-6bd239a6]:hover,body.dark,body.realdark{background-color:#363c4e}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-6bd239a6],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-6bd239a6],body.dark,body.realdark{color:#868993}.params-config-modal .indicator-info[data-v-6bd239a6]{text-align:center;margin-bottom:8px}.params-config-modal .indicator-info .indicator-name[data-v-6bd239a6]{font-size:16px;font-weight:600;color:#1f1f1f}.params-config-modal .params-form .param-item[data-v-6bd239a6]{margin-bottom:16px}.params-config-modal .params-form .param-item .param-header[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:6px}.params-config-modal .params-form .param-item .param-header .param-label[data-v-6bd239a6]{font-weight:500;color:#333}.theme-dark .params-config-modal .indicator-info .indicator-name[data-v-6bd239a6]{color:#e0e0e0}.theme-dark .params-config-modal .params-form .param-item .param-header .param-label[data-v-6bd239a6]{color:#d0d0d0} \ No newline at end of file diff --git a/frontend/dist/css/53.130d598a.css b/frontend/dist/css/53.130d598a.css new file mode 100644 index 0000000..584ddfa --- /dev/null +++ b/frontend/dist/css/53.130d598a.css @@ -0,0 +1 @@ +[data-v-4fea1865] .ant-modal{top:20px!important}.visual-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;background:#fafafa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:500px;overflow:hidden}.visual-modules-list[data-v-4fea1865]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px}.empty-visual-state[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;color:#999}.visual-module-card[data-v-4fea1865]{background:#fff;border:1px solid #e8e8e8;border-radius:4px;margin-bottom:12px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.visual-module-card .module-header[data-v-4fea1865]{padding:8px 12px;border-bottom:1px solid #f0f0f0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#f9f9f9}.visual-module-card .module-header .module-title[data-v-4fea1865],.visual-module-card .module-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.visual-module-card .module-header .module-title[data-v-4fea1865]{font-weight:500;gap:8px}.visual-module-card .module-header .remove-icon[data-v-4fea1865]{cursor:pointer;color:#999}.visual-module-card .module-header .remove-icon[data-v-4fea1865]:hover{color:#ff4d4f}.visual-module-card .module-body[data-v-4fea1865]{padding:12px}.visual-module-card .style-config[data-v-4fea1865]{margin-top:12px;padding-top:12px;border-top:1px dashed #f0f0f0}.visual-module-card .style-config .label[data-v-4fea1865]{margin-right:8px;color:#666}.add-module-bar[data-v-4fea1865]{padding:12px;background:#fff;border-top:1px solid #e8e8e8}@media (max-width:768px){.visual-editor-container[data-v-4fea1865]{height:auto;min-height:400px}}.ant-form-item[data-v-4fea1865]{margin-bottom:16px}.editor-content[data-v-4fea1865]{padding:24px;background:#fff;min-height:500px;max-height:82vh;overflow-y:auto}.editor-layout[data-v-4fea1865]{min-height:450px}.code-editor-column[data-v-4fea1865]{height:100%}.code-editor-column[data-v-4fea1865],.code-section[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-section[data-v-4fea1865]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;padding-bottom:12px;border-bottom:2px solid #f0f0f0}.code-section .section-header .section-title[data-v-4fea1865],.code-section .section-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.code-section .section-header .section-title[data-v-4fea1865]{font-weight:600;font-size:14px;color:#262626;gap:8px}.code-section .section-header .section-title[data-v-4fea1865]:before{content:"";display:inline-block;width:4px;height:14px;background:#1890ff;border-radius:2px}.code-section .section-header .section-actions[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff;padding:0 8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff}.code-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;overflow:hidden;height:62vh;min-height:520px;max-height:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05);box-shadow:inset 0 1px 3px rgba(0,0,0,.05);-webkit-transition:all .3s ease;transition:all .3s ease}.code-editor-container[data-v-4fea1865]:hover{border-color:#40a9ff}.code-editor-container[data-v-4fea1865]:focus-within{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05);box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05)}.code-editor-container[data-v-4fea1865] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fafafa}.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:100%;max-height:none;overflow-y:auto;overflow-x:auto}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:100%!important;padding-left:12px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5);width:45px;padding-right:4px}.code-editor-container[data-v-4fea1865] .CodeMirror-linenumber{padding:0 8px 0 4px;min-width:30px;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-4fea1865] .CodeMirror-lines{padding:12px 8px;background:#fff}.code-editor-container[data-v-4fea1865] .CodeMirror-line{padding-left:0}.code-editor-container[data-v-4fea1865] .CodeMirror-cursor{border-left:2px solid #1890ff}.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}.code-mode-split[data-v-4fea1865]{width:100%}.ai-pane[data-v-4fea1865],.ai-panel[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ai-panel[data-v-4fea1865]{border:1px solid #e8e8e8;border-radius:6px;background:#fafafa;padding:12px;height:62vh;min-height:520px}.ai-panel-title[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:10px;color:#262626}.ai-panel-hint[data-v-4fea1865]{margin-top:10px;color:#8c8c8c;font-size:12px;line-height:1.5}.ai-panel[data-v-4fea1865] textarea.ant-input{-webkit-box-flex:1;-ms-flex:1;flex:1;resize:none}.editor-footer[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.editor-footer[data-v-4fea1865] .ant-btn{height:36px;padding:0 20px;font-weight:500;border-radius:4px;-webkit-transition:all .3s ease;transition:all .3s ease}.editor-footer[data-v-4fea1865] .ant-btn:not(.ant-btn-primary):hover{border-color:#40a9ff;color:#40a9ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary{-webkit-box-shadow:0 2px 4px rgba(24,144,255,.3);box-shadow:0 2px 4px rgba(24,144,255,.3)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary:hover{-webkit-box-shadow:0 4px 12px rgba(24,144,255,.4);box-shadow:0 4px 12px rgba(24,144,255,.4);-webkit-transform:translateY(-1px);transform:translateY(-1px)}@media (max-width:768px){.indicator-editor-modal[data-v-4fea1865] .ant-modal{width:100%!important;max-width:100%!important;margin:0!important;top:0!important;padding-bottom:0!important;max-height:100vh!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-content{height:100vh!important;max-height:100vh!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-header{-ms-flex-negative:0;flex-shrink:0;padding:16px;border-bottom:1px solid #e8e8e8}.indicator-editor-modal[data-v-4fea1865] .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:0!important;min-height:0}.indicator-editor-modal[data-v-4fea1865] .ant-modal-footer{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;border-top:1px solid #e8e8e8}.editor-content[data-v-4fea1865]{padding:16px!important;min-height:auto!important;max-height:none!important;overflow-y:visible!important}.editor-layout[data-v-4fea1865]{min-height:auto!important}.code-editor-column[data-v-4fea1865]{width:100%!important;margin-bottom:16px}.code-section[data-v-4fea1865]{margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{padding-bottom:8px;margin-bottom:8px}.code-section .section-header .section-title[data-v-4fea1865]{font-size:13px}.code-editor-container[data-v-4fea1865]{height:250px!important}.code-editor-container[data-v-4fea1865],.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{min-height:250px!important;max-height:250px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:250px!important}.ai-panel[data-v-4fea1865]{height:auto!important;min-height:auto!important}.editor-footer[data-v-4fea1865]{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:8px;padding:0}.editor-footer[data-v-4fea1865] .ant-btn{width:100%;height:40px;margin:0}}.chart-left[data-v-076675b8]{width:70%!important;-webkit-box-flex:0!important;-ms-flex:0 0 70%!important;flex:0 0 70%!important;position:relative;border-right:1px solid #e8e8e8;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.chart-left.theme-dark[data-v-076675b8]{background:#141414;border-right-color:#2a2a2a}.chart-wrapper[data-v-076675b8]{width:100%;height:100%;position:relative;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;display:-webkit-box;display:-ms-flexbox;display:flex}.theme-dark .chart-wrapper[data-v-076675b8]{background:#141414}.drawing-toolbar[data-v-076675b8]{-ms-flex-negative:0;flex-shrink:0;width:40px;background:#fff;border-right:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;gap:4px;z-index:10;overflow-y:auto;overflow-x:hidden}.chart-left.theme-dark .drawing-toolbar[data-v-076675b8]{background:#141414;border-right-color:#2a2a2a}.drawing-tool-btn[data-v-076675b8]{width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;border-radius:4px;-webkit-transition:all .2s;transition:all .2s;color:#666;font-size:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .drawing-tool-btn[data-v-076675b8]{color:#d1d4dc}.drawing-tool-btn[data-v-076675b8]:hover{background:#f0f2f5;color:#1890ff}.chart-left.theme-dark .drawing-tool-btn[data-v-076675b8]:hover{background:#252525;color:#13c2c2}.drawing-tool-btn.active[data-v-076675b8]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff}.chart-left.theme-dark .drawing-tool-btn.active[data-v-076675b8]{background:#252525;color:#13c2c2;border-color:#13c2c2}.drawing-toolbar .ant-divider-vertical[data-v-076675b8]{margin:8px 0;height:20px}.indicator-toolbar[data-v-076675b8]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #e8e8e8;-ms-flex-wrap:wrap;flex-wrap:wrap;z-index:1;position:relative;width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.indicator-toolbar[data-v-076675b8]::-webkit-scrollbar{display:none;width:0;height:0}.chart-content-area[data-v-076675b8]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden}.chart-left.theme-dark .indicator-toolbar[data-v-076675b8]{background:#141414;border-bottom-color:#2a2a2a}.indicator-btn[data-v-076675b8]{padding:4px 12px;font-size:12px;font-weight:600;color:#666;background:#f0f2f5;border:1px solid #e8e8e8;border-radius:4px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;white-space:nowrap;min-width:40px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .indicator-btn[data-v-076675b8]{color:#d1d4dc;background:#252525;border-color:#2a2a2a}.indicator-btn[data-v-076675b8]:hover{color:#1890ff;border-color:#1890ff;background:#f0f8ff}.chart-left.theme-dark .indicator-btn[data-v-076675b8]:hover{color:#13c2c2;border-color:#13c2c2;background:#252525}.indicator-btn.active[data-v-076675b8]{color:#1890ff;background:#fff;border-color:#1890ff;border-width:2px;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)}.chart-left.theme-dark .indicator-btn.active[data-v-076675b8]{color:#13c2c2;background:#252525;border-color:#13c2c2;-webkit-box-shadow:0 0 0 2px rgba(19,194,194,.2);box-shadow:0 0 0 2px rgba(19,194,194,.2)}.kline-chart-container[data-v-076675b8]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;min-width:0;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;overflow:hidden}.theme-dark .kline-chart-container[data-v-076675b8]{background:#141414}.chart-overlay[data-v-076675b8]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.95);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;backdrop-filter:blur(2px)}.chart-left.theme-dark .chart-overlay[data-v-076675b8]{background:hsla(0,0%,8%,.95)}.error-box[data-v-076675b8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#333}.initial-hint[data-v-076675b8]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .initial-hint[data-v-076675b8]{background:hsla(0,0%,8%,.98)}.hint-box[data-v-076675b8]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:400px;padding:20px}.pyodide-warning[data-v-076675b8]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .pyodide-warning[data-v-076675b8]{background:hsla(0,0%,8%,.98)}.warning-box[data-v-076675b8]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:500px;padding:20px}.warning-title[data-v-076675b8]{font-size:16px;font-weight:600;color:#faad14;margin-bottom:8px}.warning-desc[data-v-076675b8]{font-size:14px;color:#666;line-height:1.6}.chart-left.theme-dark .warning-box[data-v-076675b8]{color:#d1d4dc}.chart-left.theme-dark .warning-title[data-v-076675b8]{color:#faad14}.chart-left.theme-dark .warning-desc[data-v-076675b8]{color:#868993}.chart-left.theme-dark .hint-box[data-v-076675b8]{color:#d1d4dc}.hint-title[data-v-076675b8]{font-size:18px;font-weight:600;color:#333;margin-bottom:12px}.chart-left.theme-dark .hint-title[data-v-076675b8]{color:#d1d4dc}.hint-desc[data-v-076675b8]{font-size:14px;color:#999;line-height:1.6}.chart-left.theme-dark .hint-desc[data-v-076675b8]{color:#787b86}.history-loading-hint[data-v-076675b8]{position:absolute;left:20px;top:60px;z-index:1000!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 16px;background:hsla(0,0%,100%,.98)!important;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);font-size:14px;color:#666!important;backdrop-filter:blur(4px);pointer-events:none;visibility:visible!important;opacity:1!important}.chart-left.theme-dark .history-loading-hint[data-v-076675b8]{background:hsla(0,0%,8%,.98)!important;border-color:#2a2a2a;color:#d1d4dc!important}.loading-text[data-v-076675b8]{white-space:nowrap;margin-left:4px}@media (max-width:768px){.drawing-toolbar[data-v-076675b8]{display:none}.indicator-toolbar[data-v-076675b8]{padding-left:12px;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.indicator-toolbar[data-v-076675b8]::-webkit-scrollbar{display:none;width:0;height:0}.indicator-btn[data-v-076675b8]{-ms-flex-negative:0;flex-shrink:0}}@media (max-width:1200px){.drawing-toolbar[data-v-076675b8]{display:none}.indicator-toolbar[data-v-076675b8]{padding-left:12px}.kline-chart-container[data-v-076675b8]{margin-left:0}.chart-left[data-v-076675b8]{width:100%!important;min-width:100%!important;border-right:none;border-bottom:1px solid #e8e8e8;height:600px!important;min-height:600px!important}.chart-wrapper[data-v-076675b8],.kline-chart-container[data-v-076675b8]{height:100%!important;min-height:600px!important}}@media (max-width:992px){.chart-left[data-v-076675b8]{height:650px!important;min-height:650px!important}.chart-wrapper[data-v-076675b8],.kline-chart-container[data-v-076675b8]{height:100%!important;min-height:650px!important}}@media (max-width:768px){.chart-left[data-v-076675b8]{height:60vh!important;min-height:400px!important;max-height:80vh!important}.chart-wrapper[data-v-076675b8]{height:100%!important;min-height:400px!important;max-height:100%!important}.kline-chart-container[data-v-076675b8]{height:calc(100% - 45px)!important;min-height:350px!important;max-height:calc(100% - 45px)!important}}@media (max-width:576px){.chart-left[data-v-076675b8]{height:55vh!important;min-height:350px!important;max-height:75vh!important}.chart-wrapper[data-v-076675b8]{height:100%!important;min-height:350px!important;max-height:100%!important}.kline-chart-container[data-v-076675b8]{height:calc(100% - 45px)!important;min-height:300px!important;max-height:calc(100% - 45px)!important}}.quick-trade-drawer[data-v-66414eaf] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-66414eaf]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-66414eaf],.qt-header[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-66414eaf]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-66414eaf]{font-size:20px;color:#595959}.qt-header .qt-header-left .qt-header-title[data-v-66414eaf]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-66414eaf]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-66414eaf]:hover{color:#333}.qt-symbol-bar[data-v-66414eaf]{padding:12px 20px;background:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f0f0f0));background:linear-gradient(180deg,#fafafa,#f0f0f0);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf],.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-66414eaf] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-66414eaf]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-66414eaf]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-66414eaf]{color:#999;font-size:12px}.qt-section[data-v-66414eaf]{padding:8px 20px}.qt-section .qt-label[data-v-66414eaf]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-66414eaf]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-66414eaf]{color:#999}.qt-balance .qt-balance-loading-text[data-v-66414eaf]{margin-left:4px}.qt-balance .qt-balance-value[data-v-66414eaf]{color:#52c41a;font-weight:600}.qt-balance .qt-balance-error[data-v-66414eaf]{color:#faad14;cursor:help}.qt-no-cred-actions[data-v-66414eaf]{margin-top:10px}.qt-manage-link[data-v-66414eaf]{margin-top:8px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.qt-manage-link .qt-manage-sep[data-v-66414eaf]{color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-66414eaf]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-66414eaf]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-66414eaf]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-66414eaf]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-66414eaf]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-66414eaf]:hover:not(.active){border-color:#f5222d}.qt-amount-block[data-v-66414eaf]{padding-bottom:14px}.qt-quick-amounts[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:8px;margin-bottom:4px}.qt-quick-amounts button[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-leverage-input[data-v-66414eaf]{width:80px}.qt-card[data-v-66414eaf]{margin-left:16px;margin-right:16px;padding:12px 14px;border-radius:10px;background:#f5f5f5;border:1px solid #e8e8e8}.qt-mode-card[data-v-66414eaf],.qt-tpsl-card[data-v-66414eaf]{margin-top:16px}.qt-section-title-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.qt-section-title[data-v-66414eaf]{font-size:13px;font-weight:600;color:#333}.qt-badge-contract[data-v-66414eaf]{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:#ebebeb;color:#595959;border:1px solid #d9d9d9}.qt-optional-tag[data-v-66414eaf]{font-size:10px;color:#8c8c8c;background:#f0f0f0;padding:1px 8px;border-radius:4px}.qt-label-spaced[data-v-66414eaf]{margin-top:10px}.qt-margin-radio[data-v-66414eaf]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-margin-radio[data-v-66414eaf] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px}.qt-hint-text[data-v-66414eaf]{font-size:11px;color:#8c8c8c;line-height:1.45;margin-top:8px}.qt-hint-inline[data-v-66414eaf]{margin-top:6px}.qt-spot-banner[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:4px 0}.qt-spot-banner-icon[data-v-66414eaf]{font-size:22px;color:#52c41a;margin-top:2px}.qt-spot-banner-title[data-v-66414eaf]{font-size:13px;font-weight:600;color:#333;margin-bottom:4px}.qt-spot-banner-text .qt-hint-text[data-v-66414eaf]{margin-top:0}.qt-tpsl-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-66414eaf]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-tpsl-record-hint[data-v-66414eaf]{margin-top:10px;margin-bottom:0}.qt-close-scope[data-v-66414eaf]{margin-top:12px;padding-top:10px;border-top:1px dashed #e8e8e8}.qt-label-close-scope[data-v-66414eaf]{margin-bottom:6px}.qt-close-scope-radio[data-v-66414eaf]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-close-scope-radio[data-v-66414eaf] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px;font-size:12px}.qt-tp-label[data-v-66414eaf]{color:#389e0d!important}.qt-sl-label[data-v-66414eaf]{color:#cf1322!important}.qt-input-full[data-v-66414eaf]{width:100%}.qt-dir-btn.qt-dir-disabled[data-v-66414eaf]{opacity:.42;cursor:not-allowed;pointer-events:none}.qt-empty-icon[data-v-66414eaf]{font-size:28px;color:#d9d9d9;margin-bottom:8px}.qt-empty-desc[data-v-66414eaf]{font-size:12px;color:#8c8c8c;line-height:1.5}.qt-submit-section[data-v-66414eaf]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-66414eaf]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-66414eaf]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-66414eaf]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-66414eaf]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-66414eaf]:active{background:#cf1322!important}.qt-position-section[data-v-66414eaf]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-66414eaf]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-position-section .qt-position-count[data-v-66414eaf]{font-size:12px;color:#999;font-weight:400}.qt-position-section .qt-close-scope-global[data-v-66414eaf]{margin-bottom:10px}.qt-history-section[data-v-66414eaf]{padding:8px 20px 12px}.qt-history-section[data-v-66414eaf] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-66414eaf] .ant-collapse-item{border:none}.qt-history-section[data-v-66414eaf] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-66414eaf] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-66414eaf] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-66414eaf] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-66414eaf]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-66414eaf]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-66414eaf]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card+.qt-position-card[data-v-66414eaf]{margin-top:10px}.qt-position-card.long[data-v-66414eaf]{border-left-color:#52c41a}.qt-position-card.short[data-v-66414eaf]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-66414eaf]:first-child{color:#999}.qt-position-empty[data-v-66414eaf]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-green[data-v-66414eaf]{color:#52c41a!important}.qt-red[data-v-66414eaf]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-66414eaf]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-66414eaf]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-66414eaf]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-66414eaf]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-66414eaf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-66414eaf]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-66414eaf]{border-bottom-color:#303030}.theme-dark .qt-header .qt-icon[data-v-66414eaf]{color:#a3a3a3}.theme-dark .qt-header .qt-header-title[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-66414eaf]{color:#666}.theme-dark .qt-header .qt-close[data-v-66414eaf]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-66414eaf]{background:-webkit-gradient(linear,left top,left bottom,from(#262626),to(#1f1f1f));background:linear-gradient(180deg,#262626,#1f1f1f)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-66414eaf] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-66414eaf] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-66414eaf]{color:#999}.theme-dark .qt-section .qt-label[data-v-66414eaf]{color:#777}.theme-dark .qt-position-section .qt-section-header[data-v-66414eaf]{color:#ccc}.theme-dark .qt-position-section .qt-position-count[data-v-66414eaf]{color:#888}.theme-dark .qt-position-card[data-v-66414eaf]{background:#262626}.theme-dark .qt-position-card .qt-pos-row span[data-v-66414eaf]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-66414eaf],.theme-dark .qt-position-card .qt-pos-row span[data-v-66414eaf]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-66414eaf]{color:#888}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-66414eaf] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-66414eaf]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-66414eaf]{color:#ccc}.theme-dark[data-v-66414eaf] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-66414eaf] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-66414eaf] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-66414eaf] .ant-drawer-content{background:#141414}.theme-dark[data-v-66414eaf] .ant-input-number,.theme-dark[data-v-66414eaf] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-66414eaf] .ant-radio-group .ant-radio-button-wrapper{background:#262626;border-color:#303030;color:#ccc}.theme-dark[data-v-66414eaf] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#434343;border-color:#595959;color:#fff}.theme-dark[data-v-66414eaf] .ant-slider-rail{background:#303030}.theme-dark[data-v-66414eaf] .ant-slider-track{background:#737373}.theme-dark .qt-manage-link a[data-v-66414eaf]{color:#58a6ff}.theme-dark .qt-manage-link .qt-manage-sep[data-v-66414eaf]{color:#555}.theme-dark .qt-card[data-v-66414eaf]{background:#262626;border-color:#3a3a3a}.theme-dark .qt-section-title[data-v-66414eaf]{color:#e8e8e8}.theme-dark .qt-badge-contract[data-v-66414eaf]{background:#333;color:#bfbfbf;border-color:#434343}.theme-dark .qt-optional-tag[data-v-66414eaf]{background:#2a2a2a;color:#888}.theme-dark .qt-hint-text[data-v-66414eaf]{color:#777}.theme-dark .qt-spot-banner-title[data-v-66414eaf]{color:#e0e0e0}.theme-dark .qt-spot-banner-icon[data-v-66414eaf]{color:#73d13d}.theme-dark .qt-tp-label[data-v-66414eaf]{color:#95de64!important}.theme-dark .qt-sl-label[data-v-66414eaf]{color:#ff7875!important}.theme-dark .qt-close-scope[data-v-66414eaf]{border-top-color:#3a3a3a}.theme-dark .qt-position-empty[data-v-66414eaf]{background:#262626;border-color:#303030}.theme-dark .qt-empty-icon[data-v-66414eaf]{color:#434343}.theme-dark .qt-empty-desc[data-v-66414eaf]{color:#888}.chart-container[data-v-11d8a5e2]{background:#f0f2f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.chart-container[data-v-11d8a5e2],.chart-header[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-header[data-v-11d8a5e2]{max-width:100%;background:#fff;border-bottom:1px solid #e8e8e8;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.02);box-shadow:0 2px 4px rgba(0,0,0,.02)}.header-top[data-v-11d8a5e2]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;height:60px}.header-left[data-v-11d8a5e2],.header-top[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header-left[data-v-11d8a5e2]{gap:20px}.symbol-select[data-v-11d8a5e2]{width:220px}.symbol-select[data-v-11d8a5e2] .ant-select-selection{background-color:#fff;border:1px solid #e8e8e8;color:#333;border-radius:4px;-webkit-box-shadow:none;box-shadow:none}.symbol-select[data-v-11d8a5e2] .ant-select-selection:hover{border-color:#1890ff}.symbol-select[data-v-11d8a5e2] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}.symbol-select[data-v-11d8a5e2] .ant-select-arrow,.symbol-select[data-v-11d8a5e2] .ant-select-selection__placeholder{color:#999}.timeframe-group[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;background:#f0f2f5;border-radius:4px;padding:2px}.timeframe-item[data-v-11d8a5e2]{padding:4px 12px;font-size:13px;font-weight:600;color:#666;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-radius:4px}.timeframe-item[data-v-11d8a5e2]:hover{color:#1890ff;background:#fff}.timeframe-item.active[data-v-11d8a5e2]{color:#1890ff;background:#fff;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.current-symbol[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:24px}.symbol-info[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.symbol-label[data-v-11d8a5e2]{font-size:16px;font-weight:700;color:#333;line-height:1.2}.market-tag[data-v-11d8a5e2]{font-size:10px;color:#666;background:#f0f2f5;padding:1px 4px;border-radius:2px;margin-top:2px}.price-info[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.price-info.color-up[data-v-11d8a5e2]{color:#0ecb81}.price-info.color-down[data-v-11d8a5e2]{color:#f6465d}.symbol-price[data-v-11d8a5e2]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace;line-height:1.2}.symbol-change[data-v-11d8a5e2]{font-size:12px}.mobile-symbol-price[data-v-11d8a5e2]{display:none}.panel-header .theme-switcher[data-v-11d8a5e2]{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.panel-header .realtime-toggle-btn[data-v-11d8a5e2],.panel-header .theme-toggle-btn[data-v-11d8a5e2]{color:#666;border:none;padding:4px 8px;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;min-width:32px;height:32px}.panel-header .realtime-toggle-btn[data-v-11d8a5e2]:hover,.panel-header .theme-toggle-btn[data-v-11d8a5e2]:hover{color:#1890ff;background:#f0f2f5}.panel-header .realtime-toggle-btn.active[data-v-11d8a5e2],.panel-header .theme-toggle-btn.active[data-v-11d8a5e2]{color:#1890ff;background:#e6f7ff}.panel-header .realtime-toggle-btn .anticon[data-v-11d8a5e2],.panel-header .theme-toggle-btn .anticon[data-v-11d8a5e2]{font-size:16px}.chart-content[data-v-11d8a5e2]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-content[data-v-11d8a5e2],.chart-main-row[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;width:100%}.chart-main-row[data-v-11d8a5e2]{height:80vh!important;min-height:500px!important;max-height:80vh!important;-ms-flex-negative:0;flex-shrink:0}.chart-right[data-v-11d8a5e2]{width:30%!important;-webkit-box-flex:0!important;-ms-flex:0 0 30%!important;flex:0 0 30%!important;border-left:1px solid #e8e8e8}.chart-right[data-v-11d8a5e2],.indicators-panel[data-v-11d8a5e2]{background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicators-panel[data-v-11d8a5e2]{height:100%}.panel-header[data-v-11d8a5e2]{height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;border-bottom:1px solid #e8e8e8;font-weight:600;color:#333;background:#fff}.panel-header .mobile-header-create-btn[data-v-11d8a5e2]{margin-right:0}.panel-body[data-v-11d8a5e2]{padding:0;overflow:hidden}.indicator-section[data-v-11d8a5e2],.panel-body[data-v-11d8a5e2]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicator-section[data-v-11d8a5e2]{min-height:0;border-bottom:1px solid #e8e8e8}.indicator-section[data-v-11d8a5e2]:last-child{border-bottom:none}.indicator-section.section-empty[data-v-11d8a5e2]{min-height:200px}.section-label[data-v-11d8a5e2]{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;background:#fafafa;border-bottom:1px solid #e8e8e8;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.section-label .section-label-left[data-v-11d8a5e2],.section-label[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-label .section-label-left[data-v-11d8a5e2]{gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1}.section-label .section-label-left .collapse-icon[data-v-11d8a5e2]{font-size:12px;color:#999;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.section-label .section-label-left span[data-v-11d8a5e2]{font-weight:500}.section-label .buy-indicator-btn[data-v-11d8a5e2]{padding:0;height:auto;margin-left:8px}.create-indicator-btn[data-v-11d8a5e2]{margin-left:auto;margin-right:0}@media (max-width:768px){.create-indicator-btn[data-v-11d8a5e2]{display:none!important}}.section-content[data-v-11d8a5e2]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px 16px;min-height:0}.indicator-card[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;padding:10px 12px;border-radius:6px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:1px solid #e8e8e8}.indicator-card[data-v-11d8a5e2]:hover{background:#f0f2f5;border-color:#1890ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.05);box-shadow:0 2px 4px rgba(0,0,0,.05)}.indicator-card.active[data-v-11d8a5e2]{background:#e6f7ff;border-color:#1890ff}.indicator-card.active .card-name[data-v-11d8a5e2]{color:#1890ff}.indicator-card.indicator-active[data-v-11d8a5e2]{border-color:#52c41a;border-width:2px;background:#f6ffed}.indicator-card.indicator-active[data-v-11d8a5e2]:hover{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.2);box-shadow:0 2px 8px rgba(82,196,26,.2)}.indicator-card.indicator-active .card-name[data-v-11d8a5e2]{color:#52c41a}.indicator-card.disabled[data-v-11d8a5e2]{opacity:.5;cursor:not-allowed}.indicator-card.disabled[data-v-11d8a5e2]:hover{-webkit-transform:none;transform:none;background:#fff;border-color:#e8e8e8;-webkit-box-shadow:none;box-shadow:none}.card-content[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.card-header[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:4px}.card-name[data-v-11d8a5e2]{font-size:13px;color:#333;font-weight:500;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:8px}.card-params[data-v-11d8a5e2]{font-size:11px;color:#999;margin-top:2px}.card-desc[data-v-11d8a5e2]{font-size:11px;color:#999;margin-top:0;display:-webkit-box;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.4;min-height:1.4em;max-height:2.8em}.card-action[data-v-11d8a5e2]{color:#999;font-size:12px}.card-action[data-v-11d8a5e2]:hover{color:#1890ff}.card-actions[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;-ms-flex-negative:0;flex-shrink:0}.action-icon[data-v-11d8a5e2]{font-size:16px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;color:#999}.action-icon.edit-icon[data-v-11d8a5e2]{color:#1890ff}.action-icon.edit-icon[data-v-11d8a5e2]:hover{color:#40a9ff}.action-icon.delete-icon[data-v-11d8a5e2]{color:#ff4d4f}.action-icon.delete-icon[data-v-11d8a5e2]:hover{color:#ff7875}.action-icon[data-v-11d8a5e2]:hover{color:#1890ff}.action-icon.toggle-icon.active[data-v-11d8a5e2]{color:#52c41a}.action-icon.backtest-icon[data-v-11d8a5e2]{color:#722ed1}.action-icon.backtest-icon[data-v-11d8a5e2]:hover{color:#9254de}.action-icon.backtest-history-icon[data-v-11d8a5e2]{color:#13c2c2}.action-icon.backtest-history-icon[data-v-11d8a5e2]:hover{color:#08979c}.action-icon.publish-icon[data-v-11d8a5e2]{color:#1890ff}.action-icon.publish-icon[data-v-11d8a5e2]:hover{color:#40a9ff}.action-icon.publish-icon.published[data-v-11d8a5e2]{color:#52c41a}.action-icon.publish-icon.published[data-v-11d8a5e2]:hover{color:#73d13d}.action-icon.create-strategy-icon[data-v-11d8a5e2]{color:#fa8c16}.action-icon.create-strategy-icon[data-v-11d8a5e2]:hover{color:#ffa940}.action-icon.status-icon.status-normal[data-v-11d8a5e2]{color:#52c41a}.action-icon.status-icon.status-expired[data-v-11d8a5e2]{color:#ff4d4f}.action-icon.expiry-icon[data-v-11d8a5e2]{color:#1890ff}.empty-indicators[data-v-11d8a5e2]{padding:40px 20px;gap:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.empty-indicators[data-v-11d8a5e2],.loading-indicators[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#999;font-size:13px}.loading-indicators[data-v-11d8a5e2]{padding:20px}.custom-scrollbar[data-v-11d8a5e2]{scrollbar-width:none;-ms-overflow-style:none}.custom-scrollbar[data-v-11d8a5e2]::-webkit-scrollbar{display:none;width:0;height:0}.dark-dropdown{background-color:#fff;border:1px solid #e8e8e8;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15)}.dark-dropdown .ant-select-dropdown-menu-item{color:#333}.dark-dropdown .ant-select-dropdown-menu-item:hover{background-color:#f0f2f5}.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}.dark-dropdown .ant-empty-description{color:#999}.symbol-option[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-option .symbol-name[data-v-11d8a5e2]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-option .symbol-name-extra[data-v-11d8a5e2]{font-size:12px;color:#999;margin-left:4px}.empty-watchlist-hint[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#666;font-size:12px}@media (max-width:768px){.chart-container[data-v-11d8a5e2]{padding:0;width:calc(100% + 44px)!important;margin:-22px}.chart-header[data-v-11d8a5e2]{padding:12px}.chart-header .header-top[data-v-11d8a5e2],.chart-header[data-v-11d8a5e2]{gap:12px;height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-header .header-top[data-v-11d8a5e2]{padding:0}.chart-header .header-left[data-v-11d8a5e2]{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.chart-header .search-section[data-v-11d8a5e2]{width:100%}.chart-header .search-section .symbol-select[data-v-11d8a5e2]{width:100%!important}.chart-header .timeframe-group[data-v-11d8a5e2]{width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.chart-header .timeframe-group .timeframe-item[data-v-11d8a5e2]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:calc(14.28% - 4px);text-align:center;padding:6px 8px;font-size:12px}.chart-header .current-symbol[data-v-11d8a5e2]{display:none}.chart-content[data-v-11d8a5e2]{overflow-y:auto}.chart-content[data-v-11d8a5e2],.chart-main-row[data-v-11d8a5e2]{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important;height:auto!important;min-height:auto!important;max-height:none!important}.mobile-symbol-price[data-v-11d8a5e2]{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 16px;background:#fff;width:100%}.mobile-symbol-price .mobile-price-info[data-v-11d8a5e2],.mobile-symbol-price[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-symbol-price .mobile-price-info[data-v-11d8a5e2]{gap:12px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mobile-symbol-price .mobile-price-info.color-up[data-v-11d8a5e2]{color:#0ecb81}.mobile-symbol-price .mobile-price-info.color-down[data-v-11d8a5e2]{color:#f6465d}.mobile-symbol-price .mobile-price-info .mobile-symbol-price[data-v-11d8a5e2]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace}.mobile-symbol-price .mobile-price-info .mobile-symbol-change[data-v-11d8a5e2]{font-size:14px;font-weight:500}kline-chart[data-v-11d8a5e2]{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important;width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;display:block!important;margin-bottom:0!important}kline-chart[data-v-11d8a5e2] .chart-left{width:100%!important;height:350px!important;min-height:350px!important;max-height:350px!important;border-right:none!important;border-bottom:1px solid #e8e8e8!important}.chart-right[data-v-11d8a5e2]{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;width:100%!important;min-width:100%!important;max-width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;height:auto!important;max-height:calc(100vh - 470px)!important;border-left:none!important;border-top:none!important;margin-top:0!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;visibility:visible!important;opacity:1!important}.chart-right .indicators-panel[data-v-11d8a5e2]{height:auto!important;min-height:600px!important;max-height:calc(100vh - 410px)!important;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .panel-header[data-v-11d8a5e2]{position:sticky;top:0;background:#fff;z-index:10;border-bottom:1px solid #e8e8e8;padding:12px;font-size:14px;-ms-flex-negative:0;flex-shrink:0}.chart-right .indicators-panel .panel-header .mobile-header-create-btn[data-v-11d8a5e2]{margin-right:0;font-size:12px;height:28px;padding:0 12px}.chart-right .indicators-panel .panel-body[data-v-11d8a5e2]{padding:0;overflow:visible;min-height:400px!important}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2],.chart-right .indicators-panel .panel-body[data-v-11d8a5e2]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2]{overflow:hidden;min-height:0;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;border-bottom:1px solid #e8e8e8}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tab{color:#666;font-size:14px}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tab-active{color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-ink-bar{background-color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tabpane{height:100%;overflow:hidden;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tabpane-active{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;height:100%;overflow:hidden}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-11d8a5e2],.chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-content-holder{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-11d8a5e2]{width:100%}.chart-right .indicators-panel .mobile-indicator-tabs .section-content[data-v-11d8a5e2]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto!important;overflow-x:hidden;padding:12px;min-height:0;height:100%;-webkit-overflow-scrolling:touch;position:relative}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-11d8a5e2],.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn[data-v-11d8a5e2]{display:none!important}.chart-right .indicators-panel .indicator-section .section-label[data-v-11d8a5e2]{padding:10px 12px;font-size:13px}.chart-right .indicators-panel .section-content[data-v-11d8a5e2]{padding:10px 12px}.chart-right .indicators-panel .indicator-card[data-v-11d8a5e2]{padding:10px}.chart-right .indicators-panel .indicator-card .card-name[data-v-11d8a5e2]{font-size:13px}.chart-right .indicators-panel .indicator-card .card-desc[data-v-11d8a5e2],.chart-right .indicators-panel .indicator-card .card-params[data-v-11d8a5e2]{font-size:11px}}.qt-header-btn[data-v-11d8a5e2]{margin-left:16px;background:linear-gradient(135deg,#1890ff,#722ed1);border:none;color:#fff;border-radius:6px;font-weight:600;font-size:12px;padding:0 12px;height:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3);-webkit-transition:all .3s;transition:all .3s}.qt-header-btn[data-v-11d8a5e2]:focus,.qt-header-btn[data-v-11d8a5e2]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);color:#fff;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45);-webkit-transform:translateY(-1px);transform:translateY(-1px)}.qt-floating-btn[data-v-11d8a5e2]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:999;-webkit-transition:all .3s;transition:all .3s;font-size:22px}.qt-floating-btn[data-v-11d8a5e2]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark[data-v-11d8a5e2],body.dark,body.realdark{background:#141414;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.3);box-shadow:0 2px 4px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .symbol-label[data-v-11d8a5e2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .market-tag[data-v-11d8a5e2],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-up[data-v-11d8a5e2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-down[data-v-11d8a5e2],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-11d8a5e2],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 2px 8px rgba(23,125,220,.35);box-shadow:0 2px 8px rgba(23,125,220,.35)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-11d8a5e2]:focus,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-11d8a5e2]:hover,body.dark,body.realdark{background:linear-gradient(135deg,#3c9ae8,#854eca);-webkit-box-shadow:0 4px 12px rgba(23,125,220,.5);box-shadow:0 4px 12px rgba(23,125,220,.5)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-11d8a5e2],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 4px 16px rgba(23,125,220,.45);box-shadow:0 4px 16px rgba(23,125,220,.45)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-11d8a5e2]:hover,body.dark,body.realdark{-webkit-box-shadow:0 6px 24px rgba(23,125,220,.6);box-shadow:0 6px 24px rgba(23,125,220,.6)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-selection,body.dark,body.realdark{background-color:#1c1c1c;border-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-arrow,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-selection__placeholder,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group[data-v-11d8a5e2],body.dark,body.realdark{background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#1890ff;background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff;background:#1c1c1c;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-11d8a5e2],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-11d8a5e2],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-11d8a5e2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-11d8a5e2],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-left-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#1890ff;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-body[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-section[data-v-11d8a5e2],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label[data-v-11d8a5e2],body.dark,body.realdark{color:#868993;background:#2a2a2a;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left .collapse-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left span[data-v-11d8a5e2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-11d8a5e2]:hover,body.dark,body.realdark{background:#2a2a2a;border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-11d8a5e2],body.dark,body.realdark{border-color:#52c41a;background:#1e3a1e}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-11d8a5e2]:hover,body.dark,body.realdark{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.3);box-shadow:0 2px 8px rgba(82,196,26,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active .card-name[data-v-11d8a5e2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-name[data-v-11d8a5e2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-desc[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-params[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#ff4d4f}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#ff7875}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#b37feb}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#d3adf7}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#5cdbd3}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#87e8de}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-11d8a5e2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#73d13d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.toggle-icon.active[data-v-11d8a5e2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .empty-indicators[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}@media (max-width:768px){.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .current-symbol[data-v-11d8a5e2],body.dark,body.realdark{border-top-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-left[data-v-11d8a5e2],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-11d8a5e2],body.dark,body.realdark{border-top-color:#2a2a2a;max-height:500px!important}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-bar,body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tab,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-tab-active,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-11d8a5e2] .ant-tabs-ink-bar,body.dark,body.realdark{background-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-11d8a5e2],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-11d8a5e2],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-11d8a5e2],body.dark,body.realdark{color:#868993;background:#2a3932}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-11d8a5e2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-11d8a5e2],body.dark,body.realdark{color:#f6465d}}.add-stock-modal-content .market-tabs[data-v-11d8a5e2]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-11d8a5e2],.add-stock-modal-content .search-results-section[data-v-11d8a5e2],.add-stock-modal-content .symbol-search-section[data-v-11d8a5e2]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-11d8a5e2],.add-stock-modal-content .search-results-section .section-title[data-v-11d8a5e2]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-11d8a5e2]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-11d8a5e2]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-11d8a5e2]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-11d8a5e2]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-11d8a5e2]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-11d8a5e2]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chart-container.theme-dark .add-stock-modal-content .hot-symbols-section .section-title[data-v-11d8a5e2],.chart-container.theme-dark .add-stock-modal-content .search-results-section .section-title[data-v-11d8a5e2],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list[data-v-11d8a5e2],body.dark,body.realdark{border-color:#363c4e;background-color:#2a2a2a}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item[data-v-11d8a5e2]:hover,body.dark,body.realdark{background-color:#363c4e}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-11d8a5e2],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-11d8a5e2],body.dark,body.realdark{color:#868993}.params-config-modal .indicator-info[data-v-11d8a5e2]{text-align:center;margin-bottom:8px}.params-config-modal .indicator-info .indicator-name[data-v-11d8a5e2]{font-size:16px;font-weight:600;color:#1f1f1f}.params-config-modal .params-form .param-item[data-v-11d8a5e2]{margin-bottom:16px}.params-config-modal .params-form .param-item .param-header[data-v-11d8a5e2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:6px}.params-config-modal .params-form .param-item .param-header .param-label[data-v-11d8a5e2]{font-weight:500;color:#333}.theme-dark .params-config-modal .indicator-info .indicator-name[data-v-11d8a5e2]{color:#e0e0e0}.theme-dark .params-config-modal .params-form .param-item .param-header .param-label[data-v-11d8a5e2]{color:#d0d0d0} \ No newline at end of file diff --git a/frontend/dist/css/631.220338f3.css b/frontend/dist/css/631.220338f3.css deleted file mode 100644 index fd995ae..0000000 --- a/frontend/dist/css/631.220338f3.css +++ /dev/null @@ -1 +0,0 @@ -.fast-analysis-report[data-v-03feb1fa]{height:100%;overflow-y:auto;padding:24px;background:#f7f8fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar{width:4px}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#d0d4da;border-radius:2px}.fast-analysis-report .loading-container[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:420px}.fast-analysis-report .loading-container .loading-content-pro[data-v-03feb1fa]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{font-size:26px;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-03feb1fa]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{position:absolute;right:0;top:-22px;font-size:13px;font-weight:700;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;padding:10px 20px;background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);border-radius:8px;margin-bottom:20px;color:var(--primary-color,#1890ff);font-size:13px;font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-03feb1fa]{font-size:15px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:9px 14px;background:rgba(0,0,0,.02);border-radius:8px;font-size:12px;color:#999;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-03feb1fa]{width:7px;height:7px;border-radius:50%;background:#ddd;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-03feb1fa]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-03feb1fa]{color:#10b981;font-size:13px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff);font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#10b981}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-03feb1fa]{margin-top:20px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{font-size:12px;color:#999;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-03feb1fa]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-03feb1fa]{font-size:56px;color:#ccc}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-03feb1fa]{margin-top:14px;font-size:17px;font-weight:700;color:#1a1a2e}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-03feb1fa]{margin-top:6px;color:#999;font-size:13px}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]{padding:28px 24px;margin-bottom:2px;border-radius:16px 16px 0 0;background:#fff;position:relative;overflow:hidden}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#f59e0b),to(#fbbf24));background:linear-gradient(90deg,#f59e0b,#fbbf24)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-03feb1fa]{font-size:28px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:32px;font-weight:800;letter-spacing:1px;color:#1a1a2e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-03feb1fa]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-03feb1fa]{font-size:17px;font-weight:800;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-03feb1fa]{font-size:11px;color:#999;margin-top:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-03feb1fa]{font-size:14px;line-height:1.75;color:#555;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{margin-top:12px;padding:10px 14px;border-radius:8px;background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent);font-size:12px;color:#555}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-weight:700;margin-bottom:6px;color:var(--primary-color,#1890ff);font-size:12px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px 18px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-03feb1fa]{font-style:normal;color:#999;margin-right:4px}.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .decision-text[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .decision-text[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .decision-text[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .price-info-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .price-info-row.hold-mode[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]{padding:16px 14px;text-align:center;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:20%;height:60%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#999;margin-bottom:6px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{font-size:9px;color:#bbb;margin-top:4px}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-03feb1fa]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-03feb1fa]{font-size:13px;margin-top:3px;font-weight:700;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card[data-v-03feb1fa]{background:#fff;padding:18px 20px;margin-bottom:2px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#1a1a2e;margin-bottom:10px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);font-size:15px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{font-size:12px;line-height:1.65;color:#555;margin-bottom:12px;padding:10px 12px;background:rgba(0,0,0,.02);border-radius:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:10px;text-align:center}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend[data-v-03feb1fa]{font-size:13px;font-weight:700;margin-bottom:4px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{font-size:10px;color:#999;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}@media (max-width:992px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}}.fast-analysis-report .result-container .scores-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]{padding:14px 16px;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:16%;height:68%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#999;margin-bottom:8px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{font-size:14px;color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{text-align:right;font-size:22px;font-weight:800;color:#1a1a2e;margin-top:6px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:0;background:#fff;margin-bottom:2px;padding:0}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent;border-bottom:1px solid #ebeef2;position:relative}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:before{content:"";position:absolute;left:0;top:20px;bottom:20px;width:3px;border-radius:2px}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-03feb1fa]:before{background:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-03feb1fa]:before{background:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:10px;font-size:14px;font-weight:700;color:#1a1a2e;padding-left:12px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-03feb1fa]{font-size:16px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-03feb1fa]{color:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{font-size:13px;line-height:1.85;color:#555;padding-left:12px}.fast-analysis-report .result-container .analysis-details[data-v-03feb1fa]{display:grid;grid-template-columns:1fr 1fr;gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:1px solid #ebeef2}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;margin-bottom:12px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-03feb1fa]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{padding:8px 0;font-size:13px;line-height:1.65;color:#555;border-bottom:1px solid rgba(0,0,0,.04)}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;margin-right:10px;vertical-align:middle}.fast-analysis-report .result-container .analysis-details .detail-section.reasons .detail-list li[data-v-03feb1fa]:before{background:#10b981}.fast-analysis-report .result-container .analysis-details .detail-section.risks .detail-list li[data-v-03feb1fa]:before{background:#f59e0b}.fast-analysis-report .result-container .indicators-section[data-v-03feb1fa]{background:#fff;padding:20px 24px;margin-bottom:2px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .indicators-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;font-size:13px;font-weight:700;margin-bottom:8px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .section-title .indicators-pro-badge[data-v-03feb1fa]{margin:0;font-size:10px;line-height:16px;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;font-size:11px;line-height:1.5;color:#999;margin-bottom:14px;padding:8px 12px;background:rgba(0,0,0,.02);border-radius:6px;border:none}.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);margin-top:1px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{margin-top:18px;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#555;margin-bottom:10px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{font-size:11px;color:#999;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{font-size:11px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#10b981;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#ef4444;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:12px 10px;text-align:center;border:none;-webkit-transition:background .15s;transition:background .15s}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:rgba(0,0,0,.04)}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:6px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{font-size:15px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{font-size:10px;color:#999;margin-top:3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .feedback-section[data-v-03feb1fa]{background:#fff;border-radius:0 0 16px 16px;padding:18px 24px;text-align:center;border:none;-webkit-box-shadow:none;box-shadow:none}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-03feb1fa]{font-size:13px;color:#999;margin-bottom:10px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-03feb1fa]{min-width:90px;border-radius:8px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{font-size:11px;color:#bbb;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:14px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:none;border-bottom:1px solid #ebeef2}}@media (max-width:576px){.fast-analysis-report[data-v-03feb1fa]{padding:8px 6px}.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-03feb1fa]{padding:20px 16px}.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{gap:14px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-03feb1fa],.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:26px}}.fast-analysis-report.theme-dark[data-v-03feb1fa]{background:#111113}.fast-analysis-report.theme-dark[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#333}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .empty-content .empty-icon[data-v-03feb1fa]{color:#444}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .empty-content .empty-hint[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(16,185,129,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-text[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(239,68,68,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-text[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(245,158,11,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-text[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .decision-card .decision-text[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .decision-summary[data-v-03feb1fa]{color:#a0a0a8;border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-value[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa] .ant-progress-text{color:#e8e8ec!important}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .cm-item em[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .price-info-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#60a5fa}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{background:#222224;color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .scores-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}.fast-analysis-report.theme-dark .result-container .detailed-analysis[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .analysis-details[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{color:#a0a0a8;border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:hsla(0,0%,100%,.05)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-row,.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-view{border-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc th.ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc td.ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content>span{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#34d399!important}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#f87171!important}.fast-analysis-report.theme-dark .result-container .feedback-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .feedback-section .feedback-question[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]{background:#222224;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}@media (max-width:992px){.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:transparent;border-bottom-color:hsla(0,0%,100%,.06)}}.ai-analysis-container[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-22f26594]{height:auto;min-height:700px;background:transparent}@media (max-width:768px){.ai-analysis-container.embedded[data-v-22f26594]{min-height:0}}.ai-analysis-container.embedded .main-content-full[data-v-22f26594]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.ai-analysis-container.embedded .top-index-bar[data-v-22f26594]{margin-top:6px}.main-content-full[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-22f26594]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-22f26594],.top-index-bar[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-22f26594]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-22f26594]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-22f26594]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-22f26594]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-22f26594]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-22f26594]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-22f26594],.top-index-bar .indicator-box.vix.low .ind-value[data-v-22f26594]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-22f26594]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-22f26594]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-22f26594]{color:#2563eb}.top-index-bar .indices-marquee[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-22f26594 35s linear infinite;animation:marquee-22f26594 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-22f26594]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-22f26594]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-22f26594]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-22f26594]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-22f26594]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-22f26594]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-22f26594]{color:#dc2626}@-webkit-keyframes marquee-22f26594{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-22f26594{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-22f26594]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-22f26594]:hover{color:#1e293b}.main-body[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-22f26594]{width:280px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px;overflow-y:auto}.left-panel .heatmap-box[data-v-22f26594]{background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.left-panel .heatmap-box .box-header[data-v-22f26594]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;background:#f4f5f7;border-radius:8px;padding:2px}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;font-weight:600;padding:0 8px;height:24px;line-height:22px;border:none;border-radius:6px;background:transparent;color:#8c8c8c;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all .2s;transition:all .2s}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper:before{display:none}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper:hover{color:#555}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#fff;border-color:transparent;color:#111;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.left-panel .heatmap-box .heatmap-grid[data-v-22f26594]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-22f26594]{padding:6px 4px;border-radius:6px;text-align:center;font-size:9px;-webkit-transition:-webkit-transform .15s;transition:-webkit-transform .15s;transition:transform .15s;transition:transform .15s,-webkit-transform .15s}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-22f26594]:hover{-webkit-transform:scale(1.03);transform:scale(1.03)}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-22f26594]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-22f26594]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-22f26594]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-22f26594]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-22f26594]{font-size:12px;color:#555;font-weight:700;letter-spacing:-.1px}.left-panel .calendar-box .box-header .box-title .anticon[data-v-22f26594]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-22f26594]::-webkit-scrollbar{width:3px}.left-panel .calendar-box .calendar-list[data-v-22f26594]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-22f26594]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-22f26594]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-22f26594]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-22f26594]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-22f26594]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-22f26594]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-22f26594]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-22f26594]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-22f26594]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-22f26594]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-22f26594]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-22f26594]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.right-panel .analysis-toolbar[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f0f2f5;background:#fafbfc;border-radius:10px 10px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar .analyze-button[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);border-radius:8px;font-weight:600}.right-panel .analysis-toolbar .history-button[data-v-22f26594]{border-color:#d9d9d9;border-radius:8px}.right-panel .analysis-main[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;min-height:300px}.watchlist-panel[data-v-22f26594]{width:320px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #f0f2f5;background:#fafbfc}.watchlist-panel .panel-header .panel-title[data-v-22f26594]{font-size:13px;font-weight:700;color:#333;letter-spacing:-.1px}.watchlist-panel .panel-header .panel-title .anticon[data-v-22f26594]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:6px 8px}.watchlist-panel .watchlist-list[data-v-22f26594]::-webkit-scrollbar{width:3px}.watchlist-panel .watchlist-list[data-v-22f26594]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-empty[data-v-22f26594]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-22f26594]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-22f26594]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-22f26594{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-22f26594{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-22f26594]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto;overflow-x:hidden;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.main-content-full[data-v-22f26594]{height:auto;min-height:auto}.top-index-bar[data-v-22f26594]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:6px 8px}.top-index-bar .indicator-box[data-v-22f26594]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-22f26594]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:6px}.main-body[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:8px;gap:8px}.left-panel[data-v-22f26594]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:8px}.left-panel .calendar-box[data-v-22f26594],.left-panel .heatmap-box[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-22f26594]{max-height:200px}.right-panel .analysis-toolbar[data-v-22f26594]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-22f26594]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-22f26594],.right-panel .analysis-toolbar .history-button[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-22f26594]{width:100%;max-height:250px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.hero-stats[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hero-stats .hstat[data-v-22f26594]{width:100%;max-width:300px;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media (max-width:576px){.main-body[data-v-22f26594]{padding:4px 6px;gap:6px}.top-index-bar[data-v-22f26594]{padding:5px 6px;gap:6px}.top-index-bar .indicator-box[data-v-22f26594]{padding:2px 5px}.top-index-bar .indicator-box .ind-value[data-v-22f26594]{font-size:11px}.top-index-bar .indices-marquee .index-item[data-v-22f26594]{font-size:10px;padding:2px 5px}.left-panel[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:6px}.left-panel .calendar-box[data-v-22f26594],.left-panel .heatmap-box[data-v-22f26594]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%;min-width:0;padding:8px;border-radius:8px}.left-panel .calendar-box[data-v-22f26594]{max-height:220px}.left-panel .heatmap-box .box-header[data-v-22f26594]{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;padding:0 2px 6px}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;white-space:nowrap}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.right-panel[data-v-22f26594]{border-radius:8px}.right-panel .analysis-toolbar[data-v-22f26594]{padding:6px 8px;gap:6px}.right-panel .analysis-toolbar[data-v-22f26594] .ant-btn-lg{height:36px;padding:0 10px;font-size:13px}.right-panel .analysis-toolbar[data-v-22f26594] .symbol-selector .ant-select-selection--single{height:36px!important}.right-panel .analysis-toolbar[data-v-22f26594] .symbol-selector .ant-select-selection__rendered{line-height:34px!important}.right-panel .analysis-main[data-v-22f26594]{padding:6px 8px}.watchlist-panel[data-v-22f26594]{max-height:min(42vh,320px);border-radius:8px}.watchlist-panel .panel-header[data-v-22f26594]{padding:8px 10px}.watchlist-panel .watchlist-list[data-v-22f26594]{padding:4px 6px}.batch-bar[data-v-22f26594]{margin:6px 6px 4px;padding:8px 8px;gap:6px}.panel-summary[data-v-22f26594]{-ms-flex-wrap:wrap;flex-wrap:wrap}.panel-summary .summary-chip[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1 1 22%;flex:1 1 22%;min-width:0;padding:5px 2px}.panel-summary .sc-num[data-v-22f26594]{font-size:12px}.panel-summary .sc-label[data-v-22f26594]{font-size:8px;letter-spacing:.2px}.placeholder-hero .hero-body[data-v-22f26594]{padding:16px 10px;max-width:100%}.hero-title[data-v-22f26594]{font-size:20px}.hero-subtitle[data-v-22f26594]{font-size:13px;margin-bottom:14px}.hero-stats[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;gap:8px;margin-bottom:14px}.hero-stats .hstat[data-v-22f26594]{width:100%;max-width:none;-webkit-box-flex:0;-ms-flex:none;flex:none;padding:10px 10px}.hero-cta[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;gap:8px}.hero-cta .ant-btn[data-v-22f26594]{width:100%;height:40px}.wl-card[data-v-22f26594]{padding:8px 10px}}.ai-analysis-container.theme-dark[data-v-22f26594]{background:#0a0a0a;color:#d4d4d4}.ai-analysis-container.theme-dark .main-content-full[data-v-22f26594]{background:#141416;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.4);box-shadow:0 2px 8px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .top-index-bar[data-v-22f26594]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-22f26594]{color:#777}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-22f26594]:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-22f26594]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-22f26594]{color:#ccc}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary[data-v-22f26594]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .summary-chip[data-v-22f26594]{border-right-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-num[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-label[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar[data-v-22f26594]{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .batch-all-cb[data-v-22f26594]{color:#a0a0a8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary){background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list[data-v-22f26594]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card[data-v-22f26594]:hover{background:#222224;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-symbol[data-v-22f26594]{color:#e0e0e0}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-market[data-v-22f26594]{color:#666;background:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-price[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-pnl-qty[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-badge.paused[data-v-22f26594]{background:hsla(0,0%,100%,.05);color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-next[data-v-22f26594]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions[data-v-22f26594]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#222224));background:linear-gradient(90deg,transparent,#222224 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]{background:#1a1a1c;color:#888;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn.danger[data-v-22f26594]:hover{color:#f87171;background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-22f26594]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .we-icon[data-v-22f26594]{color:#333}.ai-analysis-container.theme-dark .placeholder-hero .hero-bg-grid[data-v-22f26594]{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0)}.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hero-title[data-v-22f26594]{color:#e0e0e0}.ai-analysis-container.theme-dark .placeholder-hero .hero-hint[data-v-22f26594],.ai-analysis-container.theme-dark .placeholder-hero .hero-subtitle[data-v-22f26594]{color:#777}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:none;box-shadow:none}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-val[data-v-22f26594]{color:#ddd}.ai-analysis-container.theme-dark .placeholder-hero .hstat-label[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-22f26594]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-22f26594]{color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-22f26594] .ant-radio-group{background:#111113}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper{background:transparent;border-color:transparent;color:#666}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper:hover{color:#aaa}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#2a2a2c;color:#e8e8e8;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-22f26594]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-22f26594]{border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-22f26594]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-22f26594]{color:#777}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-22f26594]{color:#ccc}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-22f26594]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .calendar-list[data-v-22f26594]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .right-panel[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-22f26594]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]{background:#222224;border-color:hsla(0,0%,100%,.08);color:#ccc}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary){background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark .wl-change.up[data-v-22f26594]{background:rgba(74,222,128,.1)}.ai-analysis-container.theme-dark .wl-change.down[data-v-22f26594]{background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.ai-analysis-container.theme-dark .panel-summary[data-v-22f26594]{background:#141416}.ai-analysis-container.theme-dark .batch-bar[data-v-22f26594]{background:#1c1c1c!important;border:1px solid #2a2a2a!important;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .batch-bar .batch-all-cb[data-v-22f26594]{color:#a0a0a8}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary){background:#2a2a2c!important;border-color:#3a3a3c!important;color:#b0b0b8!important}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{background:#333336!important;border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-22f26594]{background:#141414;border-top-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-22f26594]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-22f26594]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark[data-v-22f26594] .symbol-selector .ant-select-selection{background-color:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab{color:#888}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab:hover{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab-active{color:#1890ff!important}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-ink-bar{background-color:#1890ff}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input::-webkit-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input::-moz-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input:-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input::-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input::placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input-number{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input-number .ant-input-number-handler-wrap{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-select-arrow{color:#666}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-checkbox-wrapper,.ai-analysis-container.theme-dark[data-v-22f26594] .ant-form-item-label>label,.ai-analysis-container.theme-dark[data-v-22f26594] .ant-radio-wrapper{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-list-item-meta-title{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-list-item-meta-description{color:#888}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-empty-description{color:#666}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tooltip-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-badge-count{-webkit-box-shadow:0 0 0 1px #141414;box-shadow:0 0 0 1px #141414}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-popover-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-popover-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-popover-arrow{border-color:#1c1c1c}.placeholder-hero[data-v-22f26594]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;overflow:hidden}.hero-bg[data-v-22f26594]{position:absolute;inset:0;pointer-events:none}.hero-bg-circle[data-v-22f26594]{position:absolute;border-radius:50%;opacity:.5}.hero-bg-circle.c1[data-v-22f26594]{width:320px;height:320px;top:-80px;right:-60px;background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%);-webkit-animation:hero-float-22f26594 6s ease-in-out infinite;animation:hero-float-22f26594 6s ease-in-out infinite}.hero-bg-circle.c2[data-v-22f26594]{width:240px;height:240px;bottom:-40px;left:-40px;background:radial-gradient(circle,rgba(114,46,209,.08) 0,transparent 70%);animation:hero-float-22f26594 8s ease-in-out infinite reverse}.hero-bg-grid[data-v-22f26594]{position:absolute;inset:0;background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0);background-size:32px 32px}@-webkit-keyframes hero-float-22f26594{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}@keyframes hero-float-22f26594{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}.hero-body[data-v-22f26594]{position:relative;text-align:center;padding:40px 32px;max-width:560px}.hero-badge[data-v-22f26594]{display:inline-block;padding:3px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2);margin-bottom:16px}.hero-title[data-v-22f26594]{font-size:26px;font-weight:800;color:#0f172a;margin-bottom:8px;letter-spacing:-.3px;line-height:1.3}.hero-subtitle[data-v-22f26594]{font-size:14px;color:#64748b;margin-bottom:32px;line-height:1.5}.hero-stats[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:32px;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.hstat[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;text-align:left;-webkit-transition:all .25s;transition:all .25s}.hstat[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.hstat-icon[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));font-size:16px;color:var(--primary-color,#1890ff);-ms-flex-negative:0;flex-shrink:0}.hstat-body[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0}.hstat-val[data-v-22f26594]{font-size:12px;font-weight:700;color:#0f172a}.hstat-label[data-v-22f26594],.hstat-val[data-v-22f26594]{line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hstat-label[data-v-22f26594]{font-size:10px;color:#94a3b8;margin-top:1px}.hero-cta[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:16px}.hero-cta .ant-btn[data-v-22f26594]{border-radius:10px;font-weight:600;height:42px;padding:0 24px;font-size:14px}.hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}.hero-hint[data-v-22f26594]{font-size:12px;color:#94a3b8}.panel-header-actions[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.panel-header-icon[data-v-22f26594]{font-size:15px;color:#94a3b8;cursor:pointer;padding:4px;border-radius:6px;-webkit-transition:color .2s,background .2s;transition:color .2s,background .2s}.panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.panel-summary[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;padding:0;border-bottom:1px solid #f1f5f9}.summary-chip[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;border-right:1px solid #f1f5f9}.summary-chip[data-v-22f26594]:last-child{border-right:none}.sc-num[data-v-22f26594]{font-size:14px;font-weight:700;color:#0f172a;line-height:1.2;font-family:SF Mono,Monaco,monospace}.sc-num.up[data-v-22f26594]{color:#16a34a}.sc-num.down[data-v-22f26594]{color:#dc2626}.sc-label[data-v-22f26594]{font-size:9px;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.batch-bar[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:10px 12px;margin:8px 10px;margin-bottom:4px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-ms-flex-wrap:wrap;flex-wrap:wrap}.batch-all-cb[data-v-22f26594]{font-size:12px;font-weight:500;color:#475569;margin-right:4px}.batch-bar .ant-btn[data-v-22f26594]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:all .2s;transition:all .2s}.batch-bar .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}.batch-bar .ant-btn-primary[data-v-22f26594]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05)}.batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary){background:#f8fafc;border-color:#e2e8f0;color:#64748b}.batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.wl-card[data-v-22f26594]{position:relative;padding:10px 12px;border-radius:8px;cursor:pointer;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);margin-bottom:3px;border:1px solid transparent}.wl-card[data-v-22f26594]:hover{background:#f5f7fa;border-color:#e8ecf1}.wl-card.active[data-v-22f26594]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.wl-card-cb[data-v-22f26594]{position:absolute;top:12px;left:4px;z-index:1}.wl-card-body[data-v-22f26594]{-webkit-transition:padding-left .2s;transition:padding-left .2s}.wl-card-body.with-cb[data-v-22f26594]{padding-left:24px}.wl-row-main[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:5px}.wl-symbol[data-v-22f26594]{font-size:13px;font-weight:700;color:#0f172a}.wl-market[data-v-22f26594]{font-size:9px;color:#94a3b8;letter-spacing:.3px;padding:1px 4px;background:#f1f5f9;border-radius:3px}.wl-spacer[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wl-price[data-v-22f26594]{font-size:12px;font-weight:600;color:#0f172a;font-family:SF Mono,Monaco,monospace}.wl-change[data-v-22f26594]{font-size:10px;font-weight:700;font-family:SF Mono,Monaco,monospace;padding:1px 5px;border-radius:4px;margin-left:4px}.wl-change.up[data-v-22f26594]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-change.down[data-v-22f26594]{color:#dc2626;background:rgba(220,38,38,.06)}.wl-row-pnl[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-top:4px;font-family:SF Mono,Monaco,monospace}.wl-pnl-qty[data-v-22f26594]{font-size:10px;color:#94a3b8}.wl-pnl-val[data-v-22f26594]{font-size:10px;font-weight:600;margin-left:auto}.wl-pnl-val.up[data-v-22f26594]{color:#16a34a}.wl-pnl-val.down[data-v-22f26594]{color:#dc2626}.wl-row-task[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:4px}.wl-row-task[data-v-22f26594],.wl-task-badge[data-v-22f26594]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wl-task-badge[data-v-22f26594]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:3px;font-size:10px;padding:1px 8px;border-radius:10px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.wl-task-badge.active[data-v-22f26594]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-task-badge.paused[data-v-22f26594]{color:#94a3b8;background:#f1f5f9}.wl-task-badge[data-v-22f26594]:hover{opacity:.75}.wl-task-next[data-v-22f26594]{font-size:10px;color:#94a3b8;margin-left:auto}.wl-card-hover-actions[data-v-22f26594]{position:absolute;top:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;padding-right:8px;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s;background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#f8fafc));background:linear-gradient(90deg,transparent,#f8fafc 30%);border-radius:0 8px 8px 0;pointer-events:none}.wl-card:hover .wl-card-hover-actions[data-v-22f26594]{opacity:1;pointer-events:auto}.wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}.wl-hover-btn[data-v-22f26594]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:13px;color:#64748b;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06)}.wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}.wl-hover-btn.danger[data-v-22f26594]:hover{color:#dc2626;background:#fef2f2}.watchlist-empty[data-v-22f26594]{text-align:center;padding:32px 16px}.we-icon[data-v-22f26594]{font-size:36px;color:#e2e8f0;margin-bottom:12px}.watchlist-empty p[data-v-22f26594]{font-size:12px;color:#94a3b8;margin-bottom:12px}.batch-modal-summary[data-v-22f26594]{margin-bottom:16px}.batch-modal-summary p[data-v-22f26594]{font-size:13px;color:#475569;margin-bottom:8px}.batch-symbols-preview[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:80px;overflow-y:auto}.task-drawer-empty[data-v-22f26594]{text-align:center;padding:48px 16px;color:#94a3b8}.task-drawer-empty p[data-v-22f26594]{margin-top:12px;font-size:13px}.task-drawer-list[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.task-item[data-v-22f26594]{padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;background:#fafafa;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.task-item[data-v-22f26594]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.task-item-header[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.task-item-name[data-v-22f26594]{font-size:13px;font-weight:600;color:#0f172a}.task-item-meta[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b;margin-bottom:10px}.task-item-meta .anticon[data-v-22f26594]{margin-right:4px}.task-item-actions[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-top:4px}.task-item-actions .ant-btn[data-v-22f26594]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-transition:all .2s;transition:all .2s;border-width:1px}.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.04);box-shadow:0 1px 2px rgba(0,0,0,.04)}.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05);-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}.task-item-actions .ant-btn.ant-btn-default[data-v-22f26594]{background:#f8fafc;border-color:#e2e8f0;color:#475569}.task-item-actions .ant-btn.ant-btn-default[data-v-22f26594]:hover{background:#f1f5f9;border-color:#cbd5e1;color:#334155}.task-item-actions .ant-btn.ant-btn-danger[data-v-22f26594]{background:#fef2f2;border-color:#fecaca;color:#dc2626}.task-item-actions .ant-btn.ant-btn-danger[data-v-22f26594]:hover{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.add-stock-modal-content .market-tabs[data-v-22f26594]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-22f26594],.add-stock-modal-content .search-results-section[data-v-22f26594],.add-stock-modal-content .symbol-search-section[data-v-22f26594]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-22f26594],.add-stock-modal-content .search-results-section .section-title[data-v-22f26594]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-22f26594]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-22f26594]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-22f26594]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-22f26594]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-22f26594]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-22f26594]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-22f26594]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-22f26594]{width:40px;height:9px}.skeleton-cell[data-v-22f26594]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-22f26594]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-22f26594]{width:50%;height:8px}.skeleton-item[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-22f26594]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-22f26594]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-22f26594],.indices-loading[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-22f26594]{margin-right:6px}.heatmap-empty[data-v-22f26594]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-22f26594{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-22f26594{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-22f26594],.theme-dark .skeleton-cell .skeleton-text[data-v-22f26594],.theme-dark .skeleton-item .skeleton-text[data-v-22f26594]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#2a2a2a),color-stop(50%,#333),color-stop(75%,#2a2a2a));background:linear-gradient(90deg,#2a2a2a 25%,#333 50%,#2a2a2a 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-22f26594]{background:#1c1c1c!important}.theme-dark .heatmap-empty[data-v-22f26594],.theme-dark .indices-empty[data-v-22f26594],.theme-dark .indices-loading[data-v-22f26594]{color:#666}.qd-dark-modal .ant-modal-content{background:#141414}.qd-dark-modal .ant-modal-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-modal .ant-modal-header .ant-modal-title{color:#d4d4d4}.qd-dark-modal .ant-modal-close-x{color:#888}.qd-dark-modal .ant-modal-body{background:#141414;color:#d4d4d4}.qd-dark-modal .ant-modal-footer{background:#141414;border-top-color:#2a2a2a}.qd-dark-modal .ant-modal-footer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-modal .ant-form-item-label>label{color:#d4d4d4}.qd-dark-modal .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-input::-webkit-input-placeholder{color:#555}.qd-dark-modal .ant-input::-moz-placeholder{color:#555}.qd-dark-modal .ant-input:-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::placeholder{color:#555}.qd-dark-modal .ant-input-number,.qd-dark-modal .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-arrow{color:#666}.qd-dark-modal .ant-checkbox-wrapper,.qd-dark-modal .ant-radio-wrapper{color:#d4d4d4}.qd-dark-modal .ant-tabs-bar{border-bottom-color:#2a2a2a}.qd-dark-modal .ant-tabs-tab{color:#888}.qd-dark-modal .ant-tabs-tab:hover{color:#d4d4d4}.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}.qd-dark-modal .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.qd-dark-modal .ant-alert-message{color:#d4d4d4}.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}.qd-dark-modal .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-title{color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-description{color:#888}.qd-dark-modal .ant-empty-description{color:#666}.qd-dark-modal .add-stock-modal-content,.qd-dark-modal p{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .section-title{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list{border-color:#2a2a2a;background:#1c1c1c}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item:hover{background:#252525!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-code{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-name{color:#888!important}.qd-dark-modal .add-stock-modal-content .selected-symbol-info strong{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .selected-symbol-info span{color:#888!important}.qd-dark-modal .batch-modal-summary p{color:#d4d4d4}.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-modal .task-item-name{color:#d4d4d4}.qd-dark-modal .task-item-meta{color:#888}.qd-dark-modal .task-drawer-empty{color:#666}.qd-dark-modal .history-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .search-result-item{color:#d4d4d4}.qd-dark-modal .search-result-item:hover{background:#1c1c1c}.qd-dark-modal .search-result-name{color:#d4d4d4}.qd-dark-modal .search-result-market{color:#888}.qd-dark-drawer .ant-drawer-content{background:#141414}.qd-dark-drawer .ant-drawer-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-drawer .ant-drawer-header .ant-drawer-title{color:#d4d4d4}.qd-dark-drawer .ant-drawer-header .ant-drawer-close{color:#888}.qd-dark-drawer .ant-drawer-body{background:#141414;color:#d4d4d4}.qd-dark-drawer .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-drawer .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-drawer .task-item-name{color:#d4d4d4}.qd-dark-drawer .task-item-meta{color:#888}.qd-dark-drawer .task-drawer-empty{color:#666}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary:hover{-webkit-filter:brightness(1.1);filter:brightness(1.1)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default{background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.25);color:#f87171}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger:hover{background:rgba(239,68,68,.18);border-color:rgba(239,68,68,.4);color:#fca5a5}.qd-dark-drawer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-drawer .ant-btn-danger{background:transparent}.qd-dark-drawer .ant-popover-inner{background:#1c1c1c}.qd-dark-drawer .ant-popover-message,.qd-dark-drawer .ant-popover-message-title{color:#d4d4d4}.qd-dark-drawer .ant-popover-buttons .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-dropdown,body.colorWeak .ant-select-dropdown{background:#1c1c1c}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d4d4d4}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-active,.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff} \ No newline at end of file diff --git a/frontend/dist/css/681.220338f3.css b/frontend/dist/css/681.220338f3.css deleted file mode 100644 index fd995ae..0000000 --- a/frontend/dist/css/681.220338f3.css +++ /dev/null @@ -1 +0,0 @@ -.fast-analysis-report[data-v-03feb1fa]{height:100%;overflow-y:auto;padding:24px;background:#f7f8fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar{width:4px}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#d0d4da;border-radius:2px}.fast-analysis-report .loading-container[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:420px}.fast-analysis-report .loading-container .loading-content-pro[data-v-03feb1fa]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{font-size:26px;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-03feb1fa]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{position:absolute;right:0;top:-22px;font-size:13px;font-weight:700;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;padding:10px 20px;background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);border-radius:8px;margin-bottom:20px;color:var(--primary-color,#1890ff);font-size:13px;font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-03feb1fa]{font-size:15px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:9px 14px;background:rgba(0,0,0,.02);border-radius:8px;font-size:12px;color:#999;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-03feb1fa]{width:7px;height:7px;border-radius:50%;background:#ddd;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-03feb1fa]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-03feb1fa]{color:#10b981;font-size:13px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff);font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#10b981}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-03feb1fa]{margin-top:20px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{font-size:12px;color:#999;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-03feb1fa]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-03feb1fa]{font-size:56px;color:#ccc}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-03feb1fa]{margin-top:14px;font-size:17px;font-weight:700;color:#1a1a2e}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-03feb1fa]{margin-top:6px;color:#999;font-size:13px}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]{padding:28px 24px;margin-bottom:2px;border-radius:16px 16px 0 0;background:#fff;position:relative;overflow:hidden}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#f59e0b),to(#fbbf24));background:linear-gradient(90deg,#f59e0b,#fbbf24)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-03feb1fa]{font-size:28px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:32px;font-weight:800;letter-spacing:1px;color:#1a1a2e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-03feb1fa]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-03feb1fa]{font-size:17px;font-weight:800;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-03feb1fa]{font-size:11px;color:#999;margin-top:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-03feb1fa]{font-size:14px;line-height:1.75;color:#555;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{margin-top:12px;padding:10px 14px;border-radius:8px;background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent);font-size:12px;color:#555}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-weight:700;margin-bottom:6px;color:var(--primary-color,#1890ff);font-size:12px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px 18px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-03feb1fa]{font-style:normal;color:#999;margin-right:4px}.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .decision-text[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .decision-text[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .decision-text[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .price-info-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .price-info-row.hold-mode[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]{padding:16px 14px;text-align:center;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:20%;height:60%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#999;margin-bottom:6px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{font-size:9px;color:#bbb;margin-top:4px}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-03feb1fa]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-03feb1fa]{font-size:13px;margin-top:3px;font-weight:700;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card[data-v-03feb1fa]{background:#fff;padding:18px 20px;margin-bottom:2px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#1a1a2e;margin-bottom:10px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);font-size:15px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{font-size:12px;line-height:1.65;color:#555;margin-bottom:12px;padding:10px 12px;background:rgba(0,0,0,.02);border-radius:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:10px;text-align:center}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend[data-v-03feb1fa]{font-size:13px;font-weight:700;margin-bottom:4px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{font-size:10px;color:#999;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}@media (max-width:992px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}}.fast-analysis-report .result-container .scores-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]{padding:14px 16px;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:16%;height:68%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#999;margin-bottom:8px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{font-size:14px;color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{text-align:right;font-size:22px;font-weight:800;color:#1a1a2e;margin-top:6px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:0;background:#fff;margin-bottom:2px;padding:0}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent;border-bottom:1px solid #ebeef2;position:relative}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:before{content:"";position:absolute;left:0;top:20px;bottom:20px;width:3px;border-radius:2px}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-03feb1fa]:before{background:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-03feb1fa]:before{background:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:10px;font-size:14px;font-weight:700;color:#1a1a2e;padding-left:12px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-03feb1fa]{font-size:16px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-03feb1fa]{color:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{font-size:13px;line-height:1.85;color:#555;padding-left:12px}.fast-analysis-report .result-container .analysis-details[data-v-03feb1fa]{display:grid;grid-template-columns:1fr 1fr;gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:1px solid #ebeef2}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;margin-bottom:12px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-03feb1fa]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{padding:8px 0;font-size:13px;line-height:1.65;color:#555;border-bottom:1px solid rgba(0,0,0,.04)}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;margin-right:10px;vertical-align:middle}.fast-analysis-report .result-container .analysis-details .detail-section.reasons .detail-list li[data-v-03feb1fa]:before{background:#10b981}.fast-analysis-report .result-container .analysis-details .detail-section.risks .detail-list li[data-v-03feb1fa]:before{background:#f59e0b}.fast-analysis-report .result-container .indicators-section[data-v-03feb1fa]{background:#fff;padding:20px 24px;margin-bottom:2px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .indicators-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;font-size:13px;font-weight:700;margin-bottom:8px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .section-title .indicators-pro-badge[data-v-03feb1fa]{margin:0;font-size:10px;line-height:16px;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;font-size:11px;line-height:1.5;color:#999;margin-bottom:14px;padding:8px 12px;background:rgba(0,0,0,.02);border-radius:6px;border:none}.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);margin-top:1px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{margin-top:18px;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#555;margin-bottom:10px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{font-size:11px;color:#999;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{font-size:11px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#10b981;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#ef4444;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:12px 10px;text-align:center;border:none;-webkit-transition:background .15s;transition:background .15s}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:rgba(0,0,0,.04)}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:6px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{font-size:15px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{font-size:10px;color:#999;margin-top:3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .feedback-section[data-v-03feb1fa]{background:#fff;border-radius:0 0 16px 16px;padding:18px 24px;text-align:center;border:none;-webkit-box-shadow:none;box-shadow:none}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-03feb1fa]{font-size:13px;color:#999;margin-bottom:10px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-03feb1fa]{min-width:90px;border-radius:8px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{font-size:11px;color:#bbb;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:14px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:none;border-bottom:1px solid #ebeef2}}@media (max-width:576px){.fast-analysis-report[data-v-03feb1fa]{padding:8px 6px}.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-03feb1fa]{padding:20px 16px}.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{gap:14px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-03feb1fa],.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:26px}}.fast-analysis-report.theme-dark[data-v-03feb1fa]{background:#111113}.fast-analysis-report.theme-dark[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#333}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .empty-content .empty-icon[data-v-03feb1fa]{color:#444}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .empty-content .empty-hint[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(16,185,129,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-text[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(239,68,68,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-text[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(245,158,11,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-text[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .decision-card .decision-text[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .decision-summary[data-v-03feb1fa]{color:#a0a0a8;border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-value[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa] .ant-progress-text{color:#e8e8ec!important}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .cm-item em[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .price-info-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#60a5fa}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{background:#222224;color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .scores-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}.fast-analysis-report.theme-dark .result-container .detailed-analysis[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .analysis-details[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{color:#a0a0a8;border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:hsla(0,0%,100%,.05)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-row,.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-view{border-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc th.ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc td.ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content>span{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#34d399!important}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#f87171!important}.fast-analysis-report.theme-dark .result-container .feedback-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .feedback-section .feedback-question[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]{background:#222224;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}@media (max-width:992px){.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:transparent;border-bottom-color:hsla(0,0%,100%,.06)}}.ai-analysis-container[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-22f26594]{height:auto;min-height:700px;background:transparent}@media (max-width:768px){.ai-analysis-container.embedded[data-v-22f26594]{min-height:0}}.ai-analysis-container.embedded .main-content-full[data-v-22f26594]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.ai-analysis-container.embedded .top-index-bar[data-v-22f26594]{margin-top:6px}.main-content-full[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-22f26594]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-22f26594],.top-index-bar[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-22f26594]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-22f26594]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-22f26594]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-22f26594]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-22f26594]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-22f26594]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-22f26594],.top-index-bar .indicator-box.vix.low .ind-value[data-v-22f26594]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-22f26594]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-22f26594]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-22f26594]{color:#2563eb}.top-index-bar .indices-marquee[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-22f26594 35s linear infinite;animation:marquee-22f26594 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-22f26594]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-22f26594]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-22f26594]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-22f26594]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-22f26594]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-22f26594]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-22f26594]{color:#dc2626}@-webkit-keyframes marquee-22f26594{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-22f26594{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-22f26594]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-22f26594]:hover{color:#1e293b}.main-body[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-22f26594]{width:280px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px;overflow-y:auto}.left-panel .heatmap-box[data-v-22f26594]{background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.left-panel .heatmap-box .box-header[data-v-22f26594]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;background:#f4f5f7;border-radius:8px;padding:2px}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;font-weight:600;padding:0 8px;height:24px;line-height:22px;border:none;border-radius:6px;background:transparent;color:#8c8c8c;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all .2s;transition:all .2s}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper:before{display:none}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper:hover{color:#555}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#fff;border-color:transparent;color:#111;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.left-panel .heatmap-box .heatmap-grid[data-v-22f26594]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-22f26594]{padding:6px 4px;border-radius:6px;text-align:center;font-size:9px;-webkit-transition:-webkit-transform .15s;transition:-webkit-transform .15s;transition:transform .15s;transition:transform .15s,-webkit-transform .15s}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-22f26594]:hover{-webkit-transform:scale(1.03);transform:scale(1.03)}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-22f26594]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-22f26594]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-22f26594]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-22f26594]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-22f26594]{font-size:12px;color:#555;font-weight:700;letter-spacing:-.1px}.left-panel .calendar-box .box-header .box-title .anticon[data-v-22f26594]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-22f26594]::-webkit-scrollbar{width:3px}.left-panel .calendar-box .calendar-list[data-v-22f26594]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-22f26594]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-22f26594]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-22f26594]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-22f26594]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-22f26594]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-22f26594]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-22f26594]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-22f26594]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-22f26594]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-22f26594]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-22f26594]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-22f26594]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.right-panel .analysis-toolbar[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f0f2f5;background:#fafbfc;border-radius:10px 10px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar .analyze-button[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);border-radius:8px;font-weight:600}.right-panel .analysis-toolbar .history-button[data-v-22f26594]{border-color:#d9d9d9;border-radius:8px}.right-panel .analysis-main[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;min-height:300px}.watchlist-panel[data-v-22f26594]{width:320px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #f0f2f5;background:#fafbfc}.watchlist-panel .panel-header .panel-title[data-v-22f26594]{font-size:13px;font-weight:700;color:#333;letter-spacing:-.1px}.watchlist-panel .panel-header .panel-title .anticon[data-v-22f26594]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:6px 8px}.watchlist-panel .watchlist-list[data-v-22f26594]::-webkit-scrollbar{width:3px}.watchlist-panel .watchlist-list[data-v-22f26594]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-empty[data-v-22f26594]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-22f26594]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-22f26594]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-22f26594{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-22f26594{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-22f26594]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto;overflow-x:hidden;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.main-content-full[data-v-22f26594]{height:auto;min-height:auto}.top-index-bar[data-v-22f26594]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:6px 8px}.top-index-bar .indicator-box[data-v-22f26594]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-22f26594]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:6px}.main-body[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:8px;gap:8px}.left-panel[data-v-22f26594]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:8px}.left-panel .calendar-box[data-v-22f26594],.left-panel .heatmap-box[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-22f26594]{max-height:200px}.right-panel .analysis-toolbar[data-v-22f26594]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-22f26594]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-22f26594],.right-panel .analysis-toolbar .history-button[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-22f26594]{width:100%;max-height:250px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.hero-stats[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hero-stats .hstat[data-v-22f26594]{width:100%;max-width:300px;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media (max-width:576px){.main-body[data-v-22f26594]{padding:4px 6px;gap:6px}.top-index-bar[data-v-22f26594]{padding:5px 6px;gap:6px}.top-index-bar .indicator-box[data-v-22f26594]{padding:2px 5px}.top-index-bar .indicator-box .ind-value[data-v-22f26594]{font-size:11px}.top-index-bar .indices-marquee .index-item[data-v-22f26594]{font-size:10px;padding:2px 5px}.left-panel[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:6px}.left-panel .calendar-box[data-v-22f26594],.left-panel .heatmap-box[data-v-22f26594]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%;min-width:0;padding:8px;border-radius:8px}.left-panel .calendar-box[data-v-22f26594]{max-height:220px}.left-panel .heatmap-box .box-header[data-v-22f26594]{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;padding:0 2px 6px}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;white-space:nowrap}.left-panel .heatmap-box .box-header[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.right-panel[data-v-22f26594]{border-radius:8px}.right-panel .analysis-toolbar[data-v-22f26594]{padding:6px 8px;gap:6px}.right-panel .analysis-toolbar[data-v-22f26594] .ant-btn-lg{height:36px;padding:0 10px;font-size:13px}.right-panel .analysis-toolbar[data-v-22f26594] .symbol-selector .ant-select-selection--single{height:36px!important}.right-panel .analysis-toolbar[data-v-22f26594] .symbol-selector .ant-select-selection__rendered{line-height:34px!important}.right-panel .analysis-main[data-v-22f26594]{padding:6px 8px}.watchlist-panel[data-v-22f26594]{max-height:min(42vh,320px);border-radius:8px}.watchlist-panel .panel-header[data-v-22f26594]{padding:8px 10px}.watchlist-panel .watchlist-list[data-v-22f26594]{padding:4px 6px}.batch-bar[data-v-22f26594]{margin:6px 6px 4px;padding:8px 8px;gap:6px}.panel-summary[data-v-22f26594]{-ms-flex-wrap:wrap;flex-wrap:wrap}.panel-summary .summary-chip[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1 1 22%;flex:1 1 22%;min-width:0;padding:5px 2px}.panel-summary .sc-num[data-v-22f26594]{font-size:12px}.panel-summary .sc-label[data-v-22f26594]{font-size:8px;letter-spacing:.2px}.placeholder-hero .hero-body[data-v-22f26594]{padding:16px 10px;max-width:100%}.hero-title[data-v-22f26594]{font-size:20px}.hero-subtitle[data-v-22f26594]{font-size:13px;margin-bottom:14px}.hero-stats[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;gap:8px;margin-bottom:14px}.hero-stats .hstat[data-v-22f26594]{width:100%;max-width:none;-webkit-box-flex:0;-ms-flex:none;flex:none;padding:10px 10px}.hero-cta[data-v-22f26594]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;gap:8px}.hero-cta .ant-btn[data-v-22f26594]{width:100%;height:40px}.wl-card[data-v-22f26594]{padding:8px 10px}}.ai-analysis-container.theme-dark[data-v-22f26594]{background:#0a0a0a;color:#d4d4d4}.ai-analysis-container.theme-dark .main-content-full[data-v-22f26594]{background:#141416;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.4);box-shadow:0 2px 8px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .top-index-bar[data-v-22f26594]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-22f26594]{color:#777}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-22f26594]:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-22f26594]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-22f26594]{color:#ccc}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary[data-v-22f26594]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .summary-chip[data-v-22f26594]{border-right-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-num[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-label[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar[data-v-22f26594]{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .batch-all-cb[data-v-22f26594]{color:#a0a0a8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary){background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list[data-v-22f26594]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card[data-v-22f26594]:hover{background:#222224;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-symbol[data-v-22f26594]{color:#e0e0e0}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-market[data-v-22f26594]{color:#666;background:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-price[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-pnl-qty[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-badge.paused[data-v-22f26594]{background:hsla(0,0%,100%,.05);color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-next[data-v-22f26594]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions[data-v-22f26594]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#222224));background:linear-gradient(90deg,transparent,#222224 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]{background:#1a1a1c;color:#888;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn.danger[data-v-22f26594]:hover{color:#f87171;background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-22f26594]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .we-icon[data-v-22f26594]{color:#333}.ai-analysis-container.theme-dark .placeholder-hero .hero-bg-grid[data-v-22f26594]{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0)}.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hero-title[data-v-22f26594]{color:#e0e0e0}.ai-analysis-container.theme-dark .placeholder-hero .hero-hint[data-v-22f26594],.ai-analysis-container.theme-dark .placeholder-hero .hero-subtitle[data-v-22f26594]{color:#777}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:none;box-shadow:none}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-val[data-v-22f26594]{color:#ddd}.ai-analysis-container.theme-dark .placeholder-hero .hstat-label[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-22f26594]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-22f26594]{color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-22f26594] .ant-radio-group{background:#111113}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper{background:transparent;border-color:transparent;color:#666}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper:hover{color:#aaa}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-22f26594] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#2a2a2c;color:#e8e8e8;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-22f26594]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-22f26594]{border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-22f26594]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-22f26594]{color:#777}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-22f26594]{color:#ccc}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-22f26594]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .calendar-list[data-v-22f26594]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .right-panel[data-v-22f26594]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-22f26594]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]{background:#222224;border-color:hsla(0,0%,100%,.08);color:#ccc}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary){background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark .wl-change.up[data-v-22f26594]{background:rgba(74,222,128,.1)}.ai-analysis-container.theme-dark .wl-change.down[data-v-22f26594]{background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.ai-analysis-container.theme-dark .panel-summary[data-v-22f26594]{background:#141416}.ai-analysis-container.theme-dark .batch-bar[data-v-22f26594]{background:#1c1c1c!important;border:1px solid #2a2a2a!important;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .batch-bar .batch-all-cb[data-v-22f26594]{color:#a0a0a8}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary){background:#2a2a2c!important;border-color:#3a3a3c!important;color:#b0b0b8!important}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{background:#333336!important;border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-22f26594]{background:#141414;border-top-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-22f26594]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-22f26594]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-22f26594]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-22f26594]{color:#666}.ai-analysis-container.theme-dark[data-v-22f26594] .symbol-selector .ant-select-selection{background-color:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab{color:#888}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab:hover{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab-active{color:#1890ff!important}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-ink-bar{background-color:#1890ff}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input::-webkit-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input::-moz-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input:-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input::-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input::placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input-number{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-input-number .ant-input-number-handler-wrap{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-select-arrow{color:#666}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-checkbox-wrapper,.ai-analysis-container.theme-dark[data-v-22f26594] .ant-form-item-label>label,.ai-analysis-container.theme-dark[data-v-22f26594] .ant-radio-wrapper{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-list-item-meta-title{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-list-item-meta-description{color:#888}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-empty-description{color:#666}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tooltip-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-badge-count{-webkit-box-shadow:0 0 0 1px #141414;box-shadow:0 0 0 1px #141414}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-popover-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-popover-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-22f26594] .ant-popover-arrow{border-color:#1c1c1c}.placeholder-hero[data-v-22f26594]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;overflow:hidden}.hero-bg[data-v-22f26594]{position:absolute;inset:0;pointer-events:none}.hero-bg-circle[data-v-22f26594]{position:absolute;border-radius:50%;opacity:.5}.hero-bg-circle.c1[data-v-22f26594]{width:320px;height:320px;top:-80px;right:-60px;background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%);-webkit-animation:hero-float-22f26594 6s ease-in-out infinite;animation:hero-float-22f26594 6s ease-in-out infinite}.hero-bg-circle.c2[data-v-22f26594]{width:240px;height:240px;bottom:-40px;left:-40px;background:radial-gradient(circle,rgba(114,46,209,.08) 0,transparent 70%);animation:hero-float-22f26594 8s ease-in-out infinite reverse}.hero-bg-grid[data-v-22f26594]{position:absolute;inset:0;background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0);background-size:32px 32px}@-webkit-keyframes hero-float-22f26594{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}@keyframes hero-float-22f26594{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}.hero-body[data-v-22f26594]{position:relative;text-align:center;padding:40px 32px;max-width:560px}.hero-badge[data-v-22f26594]{display:inline-block;padding:3px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2);margin-bottom:16px}.hero-title[data-v-22f26594]{font-size:26px;font-weight:800;color:#0f172a;margin-bottom:8px;letter-spacing:-.3px;line-height:1.3}.hero-subtitle[data-v-22f26594]{font-size:14px;color:#64748b;margin-bottom:32px;line-height:1.5}.hero-stats[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:32px;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.hstat[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;text-align:left;-webkit-transition:all .25s;transition:all .25s}.hstat[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.hstat-icon[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));font-size:16px;color:var(--primary-color,#1890ff);-ms-flex-negative:0;flex-shrink:0}.hstat-body[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0}.hstat-val[data-v-22f26594]{font-size:12px;font-weight:700;color:#0f172a}.hstat-label[data-v-22f26594],.hstat-val[data-v-22f26594]{line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hstat-label[data-v-22f26594]{font-size:10px;color:#94a3b8;margin-top:1px}.hero-cta[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:16px}.hero-cta .ant-btn[data-v-22f26594]{border-radius:10px;font-weight:600;height:42px;padding:0 24px;font-size:14px}.hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}.hero-hint[data-v-22f26594]{font-size:12px;color:#94a3b8}.panel-header-actions[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.panel-header-icon[data-v-22f26594]{font-size:15px;color:#94a3b8;cursor:pointer;padding:4px;border-radius:6px;-webkit-transition:color .2s,background .2s;transition:color .2s,background .2s}.panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.panel-summary[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;padding:0;border-bottom:1px solid #f1f5f9}.summary-chip[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;border-right:1px solid #f1f5f9}.summary-chip[data-v-22f26594]:last-child{border-right:none}.sc-num[data-v-22f26594]{font-size:14px;font-weight:700;color:#0f172a;line-height:1.2;font-family:SF Mono,Monaco,monospace}.sc-num.up[data-v-22f26594]{color:#16a34a}.sc-num.down[data-v-22f26594]{color:#dc2626}.sc-label[data-v-22f26594]{font-size:9px;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.batch-bar[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:10px 12px;margin:8px 10px;margin-bottom:4px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-ms-flex-wrap:wrap;flex-wrap:wrap}.batch-all-cb[data-v-22f26594]{font-size:12px;font-weight:500;color:#475569;margin-right:4px}.batch-bar .ant-btn[data-v-22f26594]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:all .2s;transition:all .2s}.batch-bar .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}.batch-bar .ant-btn-primary[data-v-22f26594]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05)}.batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary){background:#f8fafc;border-color:#e2e8f0;color:#64748b}.batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.wl-card[data-v-22f26594]{position:relative;padding:10px 12px;border-radius:8px;cursor:pointer;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);margin-bottom:3px;border:1px solid transparent}.wl-card[data-v-22f26594]:hover{background:#f5f7fa;border-color:#e8ecf1}.wl-card.active[data-v-22f26594]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.wl-card-cb[data-v-22f26594]{position:absolute;top:12px;left:4px;z-index:1}.wl-card-body[data-v-22f26594]{-webkit-transition:padding-left .2s;transition:padding-left .2s}.wl-card-body.with-cb[data-v-22f26594]{padding-left:24px}.wl-row-main[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:5px}.wl-symbol[data-v-22f26594]{font-size:13px;font-weight:700;color:#0f172a}.wl-market[data-v-22f26594]{font-size:9px;color:#94a3b8;letter-spacing:.3px;padding:1px 4px;background:#f1f5f9;border-radius:3px}.wl-spacer[data-v-22f26594]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wl-price[data-v-22f26594]{font-size:12px;font-weight:600;color:#0f172a;font-family:SF Mono,Monaco,monospace}.wl-change[data-v-22f26594]{font-size:10px;font-weight:700;font-family:SF Mono,Monaco,monospace;padding:1px 5px;border-radius:4px;margin-left:4px}.wl-change.up[data-v-22f26594]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-change.down[data-v-22f26594]{color:#dc2626;background:rgba(220,38,38,.06)}.wl-row-pnl[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-top:4px;font-family:SF Mono,Monaco,monospace}.wl-pnl-qty[data-v-22f26594]{font-size:10px;color:#94a3b8}.wl-pnl-val[data-v-22f26594]{font-size:10px;font-weight:600;margin-left:auto}.wl-pnl-val.up[data-v-22f26594]{color:#16a34a}.wl-pnl-val.down[data-v-22f26594]{color:#dc2626}.wl-row-task[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:4px}.wl-row-task[data-v-22f26594],.wl-task-badge[data-v-22f26594]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wl-task-badge[data-v-22f26594]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:3px;font-size:10px;padding:1px 8px;border-radius:10px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.wl-task-badge.active[data-v-22f26594]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-task-badge.paused[data-v-22f26594]{color:#94a3b8;background:#f1f5f9}.wl-task-badge[data-v-22f26594]:hover{opacity:.75}.wl-task-next[data-v-22f26594]{font-size:10px;color:#94a3b8;margin-left:auto}.wl-card-hover-actions[data-v-22f26594]{position:absolute;top:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;padding-right:8px;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s;background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#f8fafc));background:linear-gradient(90deg,transparent,#f8fafc 30%);border-radius:0 8px 8px 0;pointer-events:none}.wl-card:hover .wl-card-hover-actions[data-v-22f26594]{opacity:1;pointer-events:auto}.wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}.wl-hover-btn[data-v-22f26594]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:13px;color:#64748b;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06)}.wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}.wl-hover-btn.danger[data-v-22f26594]:hover{color:#dc2626;background:#fef2f2}.watchlist-empty[data-v-22f26594]{text-align:center;padding:32px 16px}.we-icon[data-v-22f26594]{font-size:36px;color:#e2e8f0;margin-bottom:12px}.watchlist-empty p[data-v-22f26594]{font-size:12px;color:#94a3b8;margin-bottom:12px}.batch-modal-summary[data-v-22f26594]{margin-bottom:16px}.batch-modal-summary p[data-v-22f26594]{font-size:13px;color:#475569;margin-bottom:8px}.batch-symbols-preview[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:80px;overflow-y:auto}.task-drawer-empty[data-v-22f26594]{text-align:center;padding:48px 16px;color:#94a3b8}.task-drawer-empty p[data-v-22f26594]{margin-top:12px;font-size:13px}.task-drawer-list[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.task-item[data-v-22f26594]{padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;background:#fafafa;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.task-item[data-v-22f26594]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.task-item-header[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.task-item-name[data-v-22f26594]{font-size:13px;font-weight:600;color:#0f172a}.task-item-meta[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b;margin-bottom:10px}.task-item-meta .anticon[data-v-22f26594]{margin-right:4px}.task-item-actions[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-top:4px}.task-item-actions .ant-btn[data-v-22f26594]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-transition:all .2s;transition:all .2s;border-width:1px}.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.04);box-shadow:0 1px 2px rgba(0,0,0,.04)}.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05);-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}.task-item-actions .ant-btn.ant-btn-default[data-v-22f26594]{background:#f8fafc;border-color:#e2e8f0;color:#475569}.task-item-actions .ant-btn.ant-btn-default[data-v-22f26594]:hover{background:#f1f5f9;border-color:#cbd5e1;color:#334155}.task-item-actions .ant-btn.ant-btn-danger[data-v-22f26594]{background:#fef2f2;border-color:#fecaca;color:#dc2626}.task-item-actions .ant-btn.ant-btn-danger[data-v-22f26594]:hover{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.add-stock-modal-content .market-tabs[data-v-22f26594]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-22f26594],.add-stock-modal-content .search-results-section[data-v-22f26594],.add-stock-modal-content .symbol-search-section[data-v-22f26594]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-22f26594],.add-stock-modal-content .search-results-section .section-title[data-v-22f26594]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-22f26594]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-22f26594]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-22f26594]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-22f26594]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-22f26594]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-22f26594]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-22f26594]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-22f26594]{width:40px;height:9px}.skeleton-cell[data-v-22f26594]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-22f26594]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-22f26594]{width:50%;height:8px}.skeleton-item[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-22f26594]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;animation:skeleton-pulse-22f26594 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-22f26594]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-22f26594],.indices-loading[data-v-22f26594]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-22f26594]{margin-right:6px}.heatmap-empty[data-v-22f26594]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-22f26594{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-22f26594{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-22f26594],.theme-dark .skeleton-cell .skeleton-text[data-v-22f26594],.theme-dark .skeleton-item .skeleton-text[data-v-22f26594]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#2a2a2a),color-stop(50%,#333),color-stop(75%,#2a2a2a));background:linear-gradient(90deg,#2a2a2a 25%,#333 50%,#2a2a2a 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-22f26594]{background:#1c1c1c!important}.theme-dark .heatmap-empty[data-v-22f26594],.theme-dark .indices-empty[data-v-22f26594],.theme-dark .indices-loading[data-v-22f26594]{color:#666}.qd-dark-modal .ant-modal-content{background:#141414}.qd-dark-modal .ant-modal-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-modal .ant-modal-header .ant-modal-title{color:#d4d4d4}.qd-dark-modal .ant-modal-close-x{color:#888}.qd-dark-modal .ant-modal-body{background:#141414;color:#d4d4d4}.qd-dark-modal .ant-modal-footer{background:#141414;border-top-color:#2a2a2a}.qd-dark-modal .ant-modal-footer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-modal .ant-form-item-label>label{color:#d4d4d4}.qd-dark-modal .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-input::-webkit-input-placeholder{color:#555}.qd-dark-modal .ant-input::-moz-placeholder{color:#555}.qd-dark-modal .ant-input:-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::placeholder{color:#555}.qd-dark-modal .ant-input-number,.qd-dark-modal .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-arrow{color:#666}.qd-dark-modal .ant-checkbox-wrapper,.qd-dark-modal .ant-radio-wrapper{color:#d4d4d4}.qd-dark-modal .ant-tabs-bar{border-bottom-color:#2a2a2a}.qd-dark-modal .ant-tabs-tab{color:#888}.qd-dark-modal .ant-tabs-tab:hover{color:#d4d4d4}.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}.qd-dark-modal .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.qd-dark-modal .ant-alert-message{color:#d4d4d4}.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}.qd-dark-modal .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-title{color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-description{color:#888}.qd-dark-modal .ant-empty-description{color:#666}.qd-dark-modal .add-stock-modal-content,.qd-dark-modal p{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .section-title{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list{border-color:#2a2a2a;background:#1c1c1c}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item:hover{background:#252525!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-code{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-name{color:#888!important}.qd-dark-modal .add-stock-modal-content .selected-symbol-info strong{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .selected-symbol-info span{color:#888!important}.qd-dark-modal .batch-modal-summary p{color:#d4d4d4}.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-modal .task-item-name{color:#d4d4d4}.qd-dark-modal .task-item-meta{color:#888}.qd-dark-modal .task-drawer-empty{color:#666}.qd-dark-modal .history-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .search-result-item{color:#d4d4d4}.qd-dark-modal .search-result-item:hover{background:#1c1c1c}.qd-dark-modal .search-result-name{color:#d4d4d4}.qd-dark-modal .search-result-market{color:#888}.qd-dark-drawer .ant-drawer-content{background:#141414}.qd-dark-drawer .ant-drawer-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-drawer .ant-drawer-header .ant-drawer-title{color:#d4d4d4}.qd-dark-drawer .ant-drawer-header .ant-drawer-close{color:#888}.qd-dark-drawer .ant-drawer-body{background:#141414;color:#d4d4d4}.qd-dark-drawer .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-drawer .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-drawer .task-item-name{color:#d4d4d4}.qd-dark-drawer .task-item-meta{color:#888}.qd-dark-drawer .task-drawer-empty{color:#666}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary:hover{-webkit-filter:brightness(1.1);filter:brightness(1.1)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default{background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.25);color:#f87171}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger:hover{background:rgba(239,68,68,.18);border-color:rgba(239,68,68,.4);color:#fca5a5}.qd-dark-drawer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-drawer .ant-btn-danger{background:transparent}.qd-dark-drawer .ant-popover-inner{background:#1c1c1c}.qd-dark-drawer .ant-popover-message,.qd-dark-drawer .ant-popover-message-title{color:#d4d4d4}.qd-dark-drawer .ant-popover-buttons .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-dropdown,body.colorWeak .ant-select-dropdown{background:#1c1c1c}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d4d4d4}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-active,.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff} \ No newline at end of file diff --git a/frontend/dist/css/755.091cab00.css b/frontend/dist/css/755.091cab00.css deleted file mode 100644 index 9804294..0000000 --- a/frontend/dist/css/755.091cab00.css +++ /dev/null @@ -1 +0,0 @@ -[data-v-4fea1865] .ant-modal{top:20px!important}.visual-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;background:#fafafa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:500px;overflow:hidden}.visual-modules-list[data-v-4fea1865]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px}.empty-visual-state[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;color:#999}.visual-module-card[data-v-4fea1865]{background:#fff;border:1px solid #e8e8e8;border-radius:4px;margin-bottom:12px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.visual-module-card .module-header[data-v-4fea1865]{padding:8px 12px;border-bottom:1px solid #f0f0f0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#f9f9f9}.visual-module-card .module-header .module-title[data-v-4fea1865],.visual-module-card .module-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.visual-module-card .module-header .module-title[data-v-4fea1865]{font-weight:500;gap:8px}.visual-module-card .module-header .remove-icon[data-v-4fea1865]{cursor:pointer;color:#999}.visual-module-card .module-header .remove-icon[data-v-4fea1865]:hover{color:#ff4d4f}.visual-module-card .module-body[data-v-4fea1865]{padding:12px}.visual-module-card .style-config[data-v-4fea1865]{margin-top:12px;padding-top:12px;border-top:1px dashed #f0f0f0}.visual-module-card .style-config .label[data-v-4fea1865]{margin-right:8px;color:#666}.add-module-bar[data-v-4fea1865]{padding:12px;background:#fff;border-top:1px solid #e8e8e8}@media (max-width:768px){.visual-editor-container[data-v-4fea1865]{height:auto;min-height:400px}}.ant-form-item[data-v-4fea1865]{margin-bottom:16px}.editor-content[data-v-4fea1865]{padding:24px;background:#fff;min-height:500px;max-height:82vh;overflow-y:auto}.editor-layout[data-v-4fea1865]{min-height:450px}.code-editor-column[data-v-4fea1865]{height:100%}.code-editor-column[data-v-4fea1865],.code-section[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-section[data-v-4fea1865]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;padding-bottom:12px;border-bottom:2px solid #f0f0f0}.code-section .section-header .section-title[data-v-4fea1865],.code-section .section-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.code-section .section-header .section-title[data-v-4fea1865]{font-weight:600;font-size:14px;color:#262626;gap:8px}.code-section .section-header .section-title[data-v-4fea1865]:before{content:"";display:inline-block;width:4px;height:14px;background:#1890ff;border-radius:2px}.code-section .section-header .section-actions[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff;padding:0 8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff}.code-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;overflow:hidden;height:62vh;min-height:520px;max-height:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05);box-shadow:inset 0 1px 3px rgba(0,0,0,.05);-webkit-transition:all .3s ease;transition:all .3s ease}.code-editor-container[data-v-4fea1865]:hover{border-color:#40a9ff}.code-editor-container[data-v-4fea1865]:focus-within{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05);box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05)}.code-editor-container[data-v-4fea1865] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fafafa}.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:100%;max-height:none;overflow-y:auto;overflow-x:auto}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:100%!important;padding-left:12px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5);width:45px;padding-right:4px}.code-editor-container[data-v-4fea1865] .CodeMirror-linenumber{padding:0 8px 0 4px;min-width:30px;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-4fea1865] .CodeMirror-lines{padding:12px 8px;background:#fff}.code-editor-container[data-v-4fea1865] .CodeMirror-line{padding-left:0}.code-editor-container[data-v-4fea1865] .CodeMirror-cursor{border-left:2px solid #1890ff}.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}.code-mode-split[data-v-4fea1865]{width:100%}.ai-pane[data-v-4fea1865],.ai-panel[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ai-panel[data-v-4fea1865]{border:1px solid #e8e8e8;border-radius:6px;background:#fafafa;padding:12px;height:62vh;min-height:520px}.ai-panel-title[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:10px;color:#262626}.ai-panel-hint[data-v-4fea1865]{margin-top:10px;color:#8c8c8c;font-size:12px;line-height:1.5}.ai-panel[data-v-4fea1865] textarea.ant-input{-webkit-box-flex:1;-ms-flex:1;flex:1;resize:none}.editor-footer[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.editor-footer[data-v-4fea1865] .ant-btn{height:36px;padding:0 20px;font-weight:500;border-radius:4px;-webkit-transition:all .3s ease;transition:all .3s ease}.editor-footer[data-v-4fea1865] .ant-btn:not(.ant-btn-primary):hover{border-color:#40a9ff;color:#40a9ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary{-webkit-box-shadow:0 2px 4px rgba(24,144,255,.3);box-shadow:0 2px 4px rgba(24,144,255,.3)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary:hover{-webkit-box-shadow:0 4px 12px rgba(24,144,255,.4);box-shadow:0 4px 12px rgba(24,144,255,.4);-webkit-transform:translateY(-1px);transform:translateY(-1px)}@media (max-width:768px){.indicator-editor-modal[data-v-4fea1865] .ant-modal{width:100%!important;max-width:100%!important;margin:0!important;top:0!important;padding-bottom:0!important;max-height:100vh!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-content{height:100vh!important;max-height:100vh!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-header{-ms-flex-negative:0;flex-shrink:0;padding:16px;border-bottom:1px solid #e8e8e8}.indicator-editor-modal[data-v-4fea1865] .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:0!important;min-height:0}.indicator-editor-modal[data-v-4fea1865] .ant-modal-footer{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;border-top:1px solid #e8e8e8}.editor-content[data-v-4fea1865]{padding:16px!important;min-height:auto!important;max-height:none!important;overflow-y:visible!important}.editor-layout[data-v-4fea1865]{min-height:auto!important}.code-editor-column[data-v-4fea1865]{width:100%!important;margin-bottom:16px}.code-section[data-v-4fea1865]{margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{padding-bottom:8px;margin-bottom:8px}.code-section .section-header .section-title[data-v-4fea1865]{font-size:13px}.code-editor-container[data-v-4fea1865]{height:250px!important}.code-editor-container[data-v-4fea1865],.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{min-height:250px!important;max-height:250px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:250px!important}.ai-panel[data-v-4fea1865]{height:auto!important;min-height:auto!important}.editor-footer[data-v-4fea1865]{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:8px;padding:0}.editor-footer[data-v-4fea1865] .ant-btn{width:100%;height:40px;margin:0}}.chart-left[data-v-58f93984]{width:70%!important;-webkit-box-flex:0!important;-ms-flex:0 0 70%!important;flex:0 0 70%!important;position:relative;border-right:1px solid #e8e8e8;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.chart-left.theme-dark[data-v-58f93984]{background:#141414;border-right-color:#2a2a2a}.chart-wrapper[data-v-58f93984]{width:100%;height:100%;position:relative;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;display:-webkit-box;display:-ms-flexbox;display:flex}.theme-dark .chart-wrapper[data-v-58f93984]{background:#141414}.drawing-toolbar[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0;width:40px;background:#fff;border-right:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;gap:4px;z-index:10;overflow-y:auto;overflow-x:hidden}.chart-left.theme-dark .drawing-toolbar[data-v-58f93984]{background:#141414;border-right-color:#2a2a2a}.drawing-tool-btn[data-v-58f93984]{width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;border-radius:4px;-webkit-transition:all .2s;transition:all .2s;color:#666;font-size:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .drawing-tool-btn[data-v-58f93984]{color:#d1d4dc}.drawing-tool-btn[data-v-58f93984]:hover{background:#f0f2f5;color:#1890ff}.chart-left.theme-dark .drawing-tool-btn[data-v-58f93984]:hover{background:#252525;color:#13c2c2}.drawing-tool-btn.active[data-v-58f93984]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff}.chart-left.theme-dark .drawing-tool-btn.active[data-v-58f93984]{background:#252525;color:#13c2c2;border-color:#13c2c2}.drawing-toolbar .ant-divider-vertical[data-v-58f93984]{margin:8px 0;height:20px}.indicator-toolbar[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #e8e8e8;-ms-flex-wrap:wrap;flex-wrap:wrap;z-index:1;position:relative;width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.indicator-toolbar[data-v-58f93984]::-webkit-scrollbar{display:none;width:0;height:0}.chart-content-area[data-v-58f93984]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden}.chart-left.theme-dark .indicator-toolbar[data-v-58f93984]{background:#141414;border-bottom-color:#2a2a2a}.indicator-btn[data-v-58f93984]{padding:4px 12px;font-size:12px;font-weight:600;color:#666;background:#f0f2f5;border:1px solid #e8e8e8;border-radius:4px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;white-space:nowrap;min-width:40px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .indicator-btn[data-v-58f93984]{color:#d1d4dc;background:#252525;border-color:#2a2a2a}.indicator-btn[data-v-58f93984]:hover{color:#1890ff;border-color:#1890ff;background:#f0f8ff}.chart-left.theme-dark .indicator-btn[data-v-58f93984]:hover{color:#13c2c2;border-color:#13c2c2;background:#252525}.indicator-btn.active[data-v-58f93984]{color:#1890ff;background:#fff;border-color:#1890ff;border-width:2px;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)}.chart-left.theme-dark .indicator-btn.active[data-v-58f93984]{color:#13c2c2;background:#252525;border-color:#13c2c2;-webkit-box-shadow:0 0 0 2px rgba(19,194,194,.2);box-shadow:0 0 0 2px rgba(19,194,194,.2)}.kline-chart-container[data-v-58f93984]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;min-width:0;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;overflow:hidden}.theme-dark .kline-chart-container[data-v-58f93984]{background:#141414}.chart-overlay[data-v-58f93984]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.95);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;backdrop-filter:blur(2px)}.chart-left.theme-dark .chart-overlay[data-v-58f93984]{background:hsla(0,0%,8%,.95)}.error-box[data-v-58f93984]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#333}.initial-hint[data-v-58f93984]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .initial-hint[data-v-58f93984]{background:hsla(0,0%,8%,.98)}.hint-box[data-v-58f93984]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:400px;padding:20px}.pyodide-warning[data-v-58f93984]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .pyodide-warning[data-v-58f93984]{background:hsla(0,0%,8%,.98)}.warning-box[data-v-58f93984]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:500px;padding:20px}.warning-title[data-v-58f93984]{font-size:16px;font-weight:600;color:#faad14;margin-bottom:8px}.warning-desc[data-v-58f93984]{font-size:14px;color:#666;line-height:1.6}.chart-left.theme-dark .warning-box[data-v-58f93984]{color:#d1d4dc}.chart-left.theme-dark .warning-title[data-v-58f93984]{color:#faad14}.chart-left.theme-dark .warning-desc[data-v-58f93984]{color:#868993}.chart-left.theme-dark .hint-box[data-v-58f93984]{color:#d1d4dc}.hint-title[data-v-58f93984]{font-size:18px;font-weight:600;color:#333;margin-bottom:12px}.chart-left.theme-dark .hint-title[data-v-58f93984]{color:#d1d4dc}.hint-desc[data-v-58f93984]{font-size:14px;color:#999;line-height:1.6}.chart-left.theme-dark .hint-desc[data-v-58f93984]{color:#787b86}.history-loading-hint[data-v-58f93984]{position:absolute;left:20px;top:60px;z-index:1000!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 16px;background:hsla(0,0%,100%,.98)!important;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);font-size:14px;color:#666!important;backdrop-filter:blur(4px);pointer-events:none;visibility:visible!important;opacity:1!important}.chart-left.theme-dark .history-loading-hint[data-v-58f93984]{background:hsla(0,0%,8%,.98)!important;border-color:#2a2a2a;color:#d1d4dc!important}.loading-text[data-v-58f93984]{white-space:nowrap;margin-left:4px}@media (max-width:768px){.drawing-toolbar[data-v-58f93984]{display:none}.indicator-toolbar[data-v-58f93984]{padding-left:12px;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.indicator-toolbar[data-v-58f93984]::-webkit-scrollbar{display:none;width:0;height:0}.indicator-btn[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0}}@media (max-width:1200px){.drawing-toolbar[data-v-58f93984]{display:none}.indicator-toolbar[data-v-58f93984]{padding-left:12px}.kline-chart-container[data-v-58f93984]{margin-left:0}.chart-left[data-v-58f93984]{width:100%!important;min-width:100%!important;border-right:none;border-bottom:1px solid #e8e8e8;height:600px!important;min-height:600px!important}.chart-wrapper[data-v-58f93984],.kline-chart-container[data-v-58f93984]{height:100%!important;min-height:600px!important}}@media (max-width:992px){.chart-left[data-v-58f93984]{height:650px!important;min-height:650px!important}.chart-wrapper[data-v-58f93984],.kline-chart-container[data-v-58f93984]{height:100%!important;min-height:650px!important}}@media (max-width:768px){.chart-left[data-v-58f93984]{height:60vh!important;min-height:400px!important;max-height:80vh!important}.chart-wrapper[data-v-58f93984]{height:100%!important;min-height:400px!important;max-height:100%!important}.kline-chart-container[data-v-58f93984]{height:calc(100% - 45px)!important;min-height:350px!important;max-height:calc(100% - 45px)!important}}@media (max-width:576px){.chart-left[data-v-58f93984]{height:55vh!important;min-height:350px!important;max-height:75vh!important}.chart-wrapper[data-v-58f93984]{height:100%!important;min-height:350px!important;max-height:100%!important}.kline-chart-container[data-v-58f93984]{height:calc(100% - 45px)!important;min-height:300px!important;max-height:calc(100% - 45px)!important}}.quick-trade-drawer[data-v-75b64b85] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-75b64b85]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-75b64b85],.qt-header[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-75b64b85]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-75b64b85]{font-size:20px;color:#595959}.qt-header .qt-header-left .qt-header-title[data-v-75b64b85]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-75b64b85]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-75b64b85]:hover{color:#333}.qt-symbol-bar[data-v-75b64b85]{padding:12px 20px;background:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f0f0f0));background:linear-gradient(180deg,#fafafa,#f0f0f0);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85],.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-75b64b85] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-75b64b85]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-75b64b85]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-75b64b85]{color:#999;font-size:12px}.qt-section[data-v-75b64b85]{padding:8px 20px}.qt-section .qt-label[data-v-75b64b85]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-75b64b85]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-75b64b85]{color:#999}.qt-balance .qt-balance-loading-text[data-v-75b64b85]{margin-left:4px}.qt-balance .qt-balance-value[data-v-75b64b85]{color:#52c41a;font-weight:600}.qt-balance .qt-balance-error[data-v-75b64b85]{color:#faad14;cursor:help}.qt-no-cred-actions[data-v-75b64b85]{margin-top:10px}.qt-manage-link[data-v-75b64b85]{margin-top:8px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.qt-manage-link .qt-manage-sep[data-v-75b64b85]{color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-75b64b85]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-75b64b85]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-75b64b85]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-75b64b85]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-75b64b85]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-75b64b85]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-leverage-input[data-v-75b64b85]{width:80px}.qt-card[data-v-75b64b85]{margin-left:16px;margin-right:16px;padding:12px 14px;border-radius:10px;background:#f5f5f5;border:1px solid #e8e8e8}.qt-section-title-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.qt-section-title[data-v-75b64b85]{font-size:13px;font-weight:600;color:#333}.qt-badge-contract[data-v-75b64b85]{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:#ebebeb;color:#595959;border:1px solid #d9d9d9}.qt-optional-tag[data-v-75b64b85]{font-size:10px;color:#8c8c8c;background:#f0f0f0;padding:1px 8px;border-radius:4px}.qt-label-spaced[data-v-75b64b85]{margin-top:10px}.qt-margin-radio[data-v-75b64b85]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.qt-margin-radio[data-v-75b64b85] .ant-radio-button-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:0 4px}.qt-hint-text[data-v-75b64b85]{font-size:11px;color:#8c8c8c;line-height:1.45;margin-top:8px}.qt-hint-inline[data-v-75b64b85]{margin-top:6px}.qt-spot-banner[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:4px 0}.qt-spot-banner-icon[data-v-75b64b85]{font-size:22px;color:#52c41a;margin-top:2px}.qt-spot-banner-title[data-v-75b64b85]{font-size:13px;font-weight:600;color:#333;margin-bottom:4px}.qt-spot-banner-text .qt-hint-text[data-v-75b64b85]{margin-top:0}.qt-tpsl-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-75b64b85]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-tp-label[data-v-75b64b85]{color:#389e0d!important}.qt-sl-label[data-v-75b64b85]{color:#cf1322!important}.qt-input-full[data-v-75b64b85]{width:100%}.qt-dir-btn.qt-dir-disabled[data-v-75b64b85]{opacity:.42;cursor:not-allowed;pointer-events:none}.qt-empty-icon[data-v-75b64b85]{font-size:28px;color:#d9d9d9;margin-bottom:8px}.qt-empty-desc[data-v-75b64b85]{font-size:12px;color:#8c8c8c;line-height:1.5}.qt-submit-section[data-v-75b64b85]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-75b64b85]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-75b64b85]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-75b64b85]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-75b64b85]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-75b64b85]:active{background:#cf1322!important}.qt-position-section[data-v-75b64b85]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-75b64b85]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-75b64b85]{padding:8px 20px 12px}.qt-history-section[data-v-75b64b85] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-75b64b85] .ant-collapse-item{border:none}.qt-history-section[data-v-75b64b85] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-75b64b85] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-75b64b85] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-75b64b85] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-75b64b85]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-75b64b85]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-75b64b85]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-75b64b85]{border-left-color:#52c41a}.qt-position-card.short[data-v-75b64b85]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-75b64b85]:first-child{color:#999}.qt-position-empty[data-v-75b64b85]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-green[data-v-75b64b85]{color:#52c41a!important}.qt-red[data-v-75b64b85]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-75b64b85]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-75b64b85]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-75b64b85]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-75b64b85]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-75b64b85]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-75b64b85]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-75b64b85]{border-bottom-color:#303030}.theme-dark .qt-header .qt-icon[data-v-75b64b85]{color:#a3a3a3}.theme-dark .qt-header .qt-header-title[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-75b64b85]{color:#666}.theme-dark .qt-header .qt-close[data-v-75b64b85]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-75b64b85]{background:-webkit-gradient(linear,left top,left bottom,from(#262626),to(#1f1f1f));background:linear-gradient(180deg,#262626,#1f1f1f)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-75b64b85] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-75b64b85] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-75b64b85]{color:#999}.theme-dark .qt-section .qt-label[data-v-75b64b85]{color:#777}.theme-dark .qt-position-card[data-v-75b64b85]{background:#262626}.theme-dark .qt-position-card .qt-pos-row span[data-v-75b64b85]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-75b64b85],.theme-dark .qt-position-card .qt-pos-row span[data-v-75b64b85]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-75b64b85]{color:#888}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-75b64b85] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-75b64b85]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-75b64b85]{color:#ccc}.theme-dark[data-v-75b64b85] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-75b64b85] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-75b64b85] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-75b64b85] .ant-drawer-content{background:#141414}.theme-dark[data-v-75b64b85] .ant-input-number,.theme-dark[data-v-75b64b85] .ant-select-selection{background:#262626;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-75b64b85] .ant-radio-group .ant-radio-button-wrapper{background:#262626;border-color:#303030;color:#ccc}.theme-dark[data-v-75b64b85] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#434343;border-color:#595959;color:#fff}.theme-dark[data-v-75b64b85] .ant-slider-rail{background:#303030}.theme-dark[data-v-75b64b85] .ant-slider-track{background:#737373}.theme-dark .qt-manage-link a[data-v-75b64b85]{color:#58a6ff}.theme-dark .qt-manage-link .qt-manage-sep[data-v-75b64b85]{color:#555}.theme-dark .qt-card[data-v-75b64b85]{background:#262626;border-color:#3a3a3a}.theme-dark .qt-section-title[data-v-75b64b85]{color:#e8e8e8}.theme-dark .qt-badge-contract[data-v-75b64b85]{background:#333;color:#bfbfbf;border-color:#434343}.theme-dark .qt-optional-tag[data-v-75b64b85]{background:#2a2a2a;color:#888}.theme-dark .qt-hint-text[data-v-75b64b85]{color:#777}.theme-dark .qt-spot-banner-title[data-v-75b64b85]{color:#e0e0e0}.theme-dark .qt-spot-banner-icon[data-v-75b64b85]{color:#73d13d}.theme-dark .qt-tp-label[data-v-75b64b85]{color:#95de64!important}.theme-dark .qt-sl-label[data-v-75b64b85]{color:#ff7875!important}.theme-dark .qt-position-empty[data-v-75b64b85]{background:#262626;border-color:#303030}.theme-dark .qt-empty-icon[data-v-75b64b85]{color:#434343}.theme-dark .qt-empty-desc[data-v-75b64b85]{color:#888}.chart-container[data-v-6bd239a6]{background:#f0f2f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.chart-container[data-v-6bd239a6],.chart-header[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-header[data-v-6bd239a6]{max-width:100%;background:#fff;border-bottom:1px solid #e8e8e8;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.02);box-shadow:0 2px 4px rgba(0,0,0,.02)}.header-top[data-v-6bd239a6]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;height:60px}.header-left[data-v-6bd239a6],.header-top[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header-left[data-v-6bd239a6]{gap:20px}.symbol-select[data-v-6bd239a6]{width:220px}.symbol-select[data-v-6bd239a6] .ant-select-selection{background-color:#fff;border:1px solid #e8e8e8;color:#333;border-radius:4px;-webkit-box-shadow:none;box-shadow:none}.symbol-select[data-v-6bd239a6] .ant-select-selection:hover{border-color:#1890ff}.symbol-select[data-v-6bd239a6] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}.symbol-select[data-v-6bd239a6] .ant-select-arrow,.symbol-select[data-v-6bd239a6] .ant-select-selection__placeholder{color:#999}.timeframe-group[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;background:#f0f2f5;border-radius:4px;padding:2px}.timeframe-item[data-v-6bd239a6]{padding:4px 12px;font-size:13px;font-weight:600;color:#666;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-radius:4px}.timeframe-item[data-v-6bd239a6]:hover{color:#1890ff;background:#fff}.timeframe-item.active[data-v-6bd239a6]{color:#1890ff;background:#fff;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.current-symbol[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:24px}.symbol-info[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.symbol-label[data-v-6bd239a6]{font-size:16px;font-weight:700;color:#333;line-height:1.2}.market-tag[data-v-6bd239a6]{font-size:10px;color:#666;background:#f0f2f5;padding:1px 4px;border-radius:2px;margin-top:2px}.price-info[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.price-info.color-up[data-v-6bd239a6]{color:#0ecb81}.price-info.color-down[data-v-6bd239a6]{color:#f6465d}.symbol-price[data-v-6bd239a6]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace;line-height:1.2}.symbol-change[data-v-6bd239a6]{font-size:12px}.mobile-symbol-price[data-v-6bd239a6]{display:none}.panel-header .theme-switcher[data-v-6bd239a6]{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.panel-header .realtime-toggle-btn[data-v-6bd239a6],.panel-header .theme-toggle-btn[data-v-6bd239a6]{color:#666;border:none;padding:4px 8px;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;min-width:32px;height:32px}.panel-header .realtime-toggle-btn[data-v-6bd239a6]:hover,.panel-header .theme-toggle-btn[data-v-6bd239a6]:hover{color:#1890ff;background:#f0f2f5}.panel-header .realtime-toggle-btn.active[data-v-6bd239a6],.panel-header .theme-toggle-btn.active[data-v-6bd239a6]{color:#1890ff;background:#e6f7ff}.panel-header .realtime-toggle-btn .anticon[data-v-6bd239a6],.panel-header .theme-toggle-btn .anticon[data-v-6bd239a6]{font-size:16px}.chart-content[data-v-6bd239a6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-content[data-v-6bd239a6],.chart-main-row[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;width:100%}.chart-main-row[data-v-6bd239a6]{height:80vh!important;min-height:500px!important;max-height:80vh!important;-ms-flex-negative:0;flex-shrink:0}.chart-right[data-v-6bd239a6]{width:30%!important;-webkit-box-flex:0!important;-ms-flex:0 0 30%!important;flex:0 0 30%!important;border-left:1px solid #e8e8e8}.chart-right[data-v-6bd239a6],.indicators-panel[data-v-6bd239a6]{background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicators-panel[data-v-6bd239a6]{height:100%}.panel-header[data-v-6bd239a6]{height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;border-bottom:1px solid #e8e8e8;font-weight:600;color:#333;background:#fff}.panel-header .mobile-header-create-btn[data-v-6bd239a6]{margin-right:0}.panel-body[data-v-6bd239a6]{padding:0;overflow:hidden}.indicator-section[data-v-6bd239a6],.panel-body[data-v-6bd239a6]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicator-section[data-v-6bd239a6]{min-height:0;border-bottom:1px solid #e8e8e8}.indicator-section[data-v-6bd239a6]:last-child{border-bottom:none}.indicator-section.section-empty[data-v-6bd239a6]{min-height:200px}.section-label[data-v-6bd239a6]{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;background:#fafafa;border-bottom:1px solid #e8e8e8;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.section-label .section-label-left[data-v-6bd239a6],.section-label[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-label .section-label-left[data-v-6bd239a6]{gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1}.section-label .section-label-left .collapse-icon[data-v-6bd239a6]{font-size:12px;color:#999;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.section-label .section-label-left span[data-v-6bd239a6]{font-weight:500}.section-label .buy-indicator-btn[data-v-6bd239a6]{padding:0;height:auto;margin-left:8px}.create-indicator-btn[data-v-6bd239a6]{margin-left:auto;margin-right:0}@media (max-width:768px){.create-indicator-btn[data-v-6bd239a6]{display:none!important}}.section-content[data-v-6bd239a6]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px 16px;min-height:0}.indicator-card[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;padding:10px 12px;border-radius:6px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:1px solid #e8e8e8}.indicator-card[data-v-6bd239a6]:hover{background:#f0f2f5;border-color:#1890ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.05);box-shadow:0 2px 4px rgba(0,0,0,.05)}.indicator-card.active[data-v-6bd239a6]{background:#e6f7ff;border-color:#1890ff}.indicator-card.active .card-name[data-v-6bd239a6]{color:#1890ff}.indicator-card.indicator-active[data-v-6bd239a6]{border-color:#52c41a;border-width:2px;background:#f6ffed}.indicator-card.indicator-active[data-v-6bd239a6]:hover{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.2);box-shadow:0 2px 8px rgba(82,196,26,.2)}.indicator-card.indicator-active .card-name[data-v-6bd239a6]{color:#52c41a}.indicator-card.disabled[data-v-6bd239a6]{opacity:.5;cursor:not-allowed}.indicator-card.disabled[data-v-6bd239a6]:hover{-webkit-transform:none;transform:none;background:#fff;border-color:#e8e8e8;-webkit-box-shadow:none;box-shadow:none}.card-content[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.card-header[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:4px}.card-name[data-v-6bd239a6]{font-size:13px;color:#333;font-weight:500;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:8px}.card-params[data-v-6bd239a6]{font-size:11px;color:#999;margin-top:2px}.card-desc[data-v-6bd239a6]{font-size:11px;color:#999;margin-top:0;display:-webkit-box;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.4;min-height:1.4em;max-height:2.8em}.card-action[data-v-6bd239a6]{color:#999;font-size:12px}.card-action[data-v-6bd239a6]:hover{color:#1890ff}.card-actions[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;-ms-flex-negative:0;flex-shrink:0}.action-icon[data-v-6bd239a6]{font-size:16px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;color:#999}.action-icon.edit-icon[data-v-6bd239a6]{color:#1890ff}.action-icon.edit-icon[data-v-6bd239a6]:hover{color:#40a9ff}.action-icon.delete-icon[data-v-6bd239a6]{color:#ff4d4f}.action-icon.delete-icon[data-v-6bd239a6]:hover{color:#ff7875}.action-icon[data-v-6bd239a6]:hover{color:#1890ff}.action-icon.toggle-icon.active[data-v-6bd239a6]{color:#52c41a}.action-icon.backtest-icon[data-v-6bd239a6]{color:#722ed1}.action-icon.backtest-icon[data-v-6bd239a6]:hover{color:#9254de}.action-icon.backtest-history-icon[data-v-6bd239a6]{color:#13c2c2}.action-icon.backtest-history-icon[data-v-6bd239a6]:hover{color:#08979c}.action-icon.publish-icon[data-v-6bd239a6]{color:#1890ff}.action-icon.publish-icon[data-v-6bd239a6]:hover{color:#40a9ff}.action-icon.publish-icon.published[data-v-6bd239a6]{color:#52c41a}.action-icon.publish-icon.published[data-v-6bd239a6]:hover{color:#73d13d}.action-icon.create-strategy-icon[data-v-6bd239a6]{color:#fa8c16}.action-icon.create-strategy-icon[data-v-6bd239a6]:hover{color:#ffa940}.action-icon.status-icon.status-normal[data-v-6bd239a6]{color:#52c41a}.action-icon.status-icon.status-expired[data-v-6bd239a6]{color:#ff4d4f}.action-icon.expiry-icon[data-v-6bd239a6]{color:#1890ff}.empty-indicators[data-v-6bd239a6]{padding:40px 20px;gap:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.empty-indicators[data-v-6bd239a6],.loading-indicators[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#999;font-size:13px}.loading-indicators[data-v-6bd239a6]{padding:20px}.custom-scrollbar[data-v-6bd239a6]{scrollbar-width:none;-ms-overflow-style:none}.custom-scrollbar[data-v-6bd239a6]::-webkit-scrollbar{display:none;width:0;height:0}.dark-dropdown{background-color:#fff;border:1px solid #e8e8e8;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15)}.dark-dropdown .ant-select-dropdown-menu-item{color:#333}.dark-dropdown .ant-select-dropdown-menu-item:hover{background-color:#f0f2f5}.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}.dark-dropdown .ant-empty-description{color:#999}.symbol-option[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-option .symbol-name[data-v-6bd239a6]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-option .symbol-name-extra[data-v-6bd239a6]{font-size:12px;color:#999;margin-left:4px}.empty-watchlist-hint[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#666;font-size:12px}@media (max-width:768px){.chart-container[data-v-6bd239a6]{padding:0;width:calc(100% + 44px)!important;margin:-22px}.chart-header[data-v-6bd239a6]{padding:12px}.chart-header .header-top[data-v-6bd239a6],.chart-header[data-v-6bd239a6]{gap:12px;height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-header .header-top[data-v-6bd239a6]{padding:0}.chart-header .header-left[data-v-6bd239a6]{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.chart-header .search-section[data-v-6bd239a6]{width:100%}.chart-header .search-section .symbol-select[data-v-6bd239a6]{width:100%!important}.chart-header .timeframe-group[data-v-6bd239a6]{width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.chart-header .timeframe-group .timeframe-item[data-v-6bd239a6]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:calc(14.28% - 4px);text-align:center;padding:6px 8px;font-size:12px}.chart-header .current-symbol[data-v-6bd239a6]{display:none}.chart-content[data-v-6bd239a6]{overflow-y:auto}.chart-content[data-v-6bd239a6],.chart-main-row[data-v-6bd239a6]{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important;height:auto!important;min-height:auto!important;max-height:none!important}.mobile-symbol-price[data-v-6bd239a6]{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 16px;background:#fff;width:100%}.mobile-symbol-price .mobile-price-info[data-v-6bd239a6],.mobile-symbol-price[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-symbol-price .mobile-price-info[data-v-6bd239a6]{gap:12px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mobile-symbol-price .mobile-price-info.color-up[data-v-6bd239a6]{color:#0ecb81}.mobile-symbol-price .mobile-price-info.color-down[data-v-6bd239a6]{color:#f6465d}.mobile-symbol-price .mobile-price-info .mobile-symbol-price[data-v-6bd239a6]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace}.mobile-symbol-price .mobile-price-info .mobile-symbol-change[data-v-6bd239a6]{font-size:14px;font-weight:500}kline-chart[data-v-6bd239a6]{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important;width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;display:block!important;margin-bottom:0!important}kline-chart[data-v-6bd239a6] .chart-left{width:100%!important;height:350px!important;min-height:350px!important;max-height:350px!important;border-right:none!important;border-bottom:1px solid #e8e8e8!important}.chart-right[data-v-6bd239a6]{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;width:100%!important;min-width:100%!important;max-width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;height:auto!important;max-height:calc(100vh - 470px)!important;border-left:none!important;border-top:none!important;margin-top:0!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;visibility:visible!important;opacity:1!important}.chart-right .indicators-panel[data-v-6bd239a6]{height:auto!important;min-height:600px!important;max-height:calc(100vh - 410px)!important;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .panel-header[data-v-6bd239a6]{position:sticky;top:0;background:#fff;z-index:10;border-bottom:1px solid #e8e8e8;padding:12px;font-size:14px;-ms-flex-negative:0;flex-shrink:0}.chart-right .indicators-panel .panel-header .mobile-header-create-btn[data-v-6bd239a6]{margin-right:0;font-size:12px;height:28px;padding:0 12px}.chart-right .indicators-panel .panel-body[data-v-6bd239a6]{padding:0;overflow:visible;min-height:400px!important}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6],.chart-right .indicators-panel .panel-body[data-v-6bd239a6]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6]{overflow:hidden;min-height:0;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;border-bottom:1px solid #e8e8e8}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tab{color:#666;font-size:14px}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tab-active{color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-ink-bar{background-color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tabpane{height:100%;overflow:hidden;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tabpane-active{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;height:100%;overflow:hidden}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-6bd239a6],.chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-content-holder{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-6bd239a6]{width:100%}.chart-right .indicators-panel .mobile-indicator-tabs .section-content[data-v-6bd239a6]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto!important;overflow-x:hidden;padding:12px;min-height:0;height:100%;-webkit-overflow-scrolling:touch;position:relative}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-6bd239a6],.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn[data-v-6bd239a6]{display:none!important}.chart-right .indicators-panel .indicator-section .section-label[data-v-6bd239a6]{padding:10px 12px;font-size:13px}.chart-right .indicators-panel .section-content[data-v-6bd239a6]{padding:10px 12px}.chart-right .indicators-panel .indicator-card[data-v-6bd239a6]{padding:10px}.chart-right .indicators-panel .indicator-card .card-name[data-v-6bd239a6]{font-size:13px}.chart-right .indicators-panel .indicator-card .card-desc[data-v-6bd239a6],.chart-right .indicators-panel .indicator-card .card-params[data-v-6bd239a6]{font-size:11px}}.qt-header-btn[data-v-6bd239a6]{margin-left:16px;background:linear-gradient(135deg,#1890ff,#722ed1);border:none;color:#fff;border-radius:6px;font-weight:600;font-size:12px;padding:0 12px;height:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3);-webkit-transition:all .3s;transition:all .3s}.qt-header-btn[data-v-6bd239a6]:focus,.qt-header-btn[data-v-6bd239a6]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);color:#fff;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45);-webkit-transform:translateY(-1px);transform:translateY(-1px)}.qt-floating-btn[data-v-6bd239a6]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:999;-webkit-transition:all .3s;transition:all .3s;font-size:22px}.qt-floating-btn[data-v-6bd239a6]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark[data-v-6bd239a6],body.dark,body.realdark{background:#141414;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.3);box-shadow:0 2px 4px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .symbol-label[data-v-6bd239a6],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .market-tag[data-v-6bd239a6],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-up[data-v-6bd239a6],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-down[data-v-6bd239a6],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-6bd239a6],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 2px 8px rgba(23,125,220,.35);box-shadow:0 2px 8px rgba(23,125,220,.35)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-6bd239a6]:focus,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-6bd239a6]:hover,body.dark,body.realdark{background:linear-gradient(135deg,#3c9ae8,#854eca);-webkit-box-shadow:0 4px 12px rgba(23,125,220,.5);box-shadow:0 4px 12px rgba(23,125,220,.5)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-6bd239a6],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 4px 16px rgba(23,125,220,.45);box-shadow:0 4px 16px rgba(23,125,220,.45)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-6bd239a6]:hover,body.dark,body.realdark{-webkit-box-shadow:0 6px 24px rgba(23,125,220,.6);box-shadow:0 6px 24px rgba(23,125,220,.6)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-selection,body.dark,body.realdark{background-color:#1c1c1c;border-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-arrow,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-selection__placeholder,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group[data-v-6bd239a6],body.dark,body.realdark{background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-6bd239a6],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#1890ff;background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff;background:#1c1c1c;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-6bd239a6],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-6bd239a6],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-6bd239a6],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-6bd239a6],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-left-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-6bd239a6],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#1890ff;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-body[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-section[data-v-6bd239a6],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label[data-v-6bd239a6],body.dark,body.realdark{color:#868993;background:#2a2a2a;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left .collapse-icon[data-v-6bd239a6],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left span[data-v-6bd239a6],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-6bd239a6]:hover,body.dark,body.realdark{background:#2a2a2a;border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-6bd239a6],body.dark,body.realdark{border-color:#52c41a;background:#1e3a1e}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-6bd239a6]:hover,body.dark,body.realdark{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.3);box-shadow:0 2px 8px rgba(82,196,26,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active .card-name[data-v-6bd239a6],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-name[data-v-6bd239a6],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-desc[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-params[data-v-6bd239a6],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-6bd239a6],body.dark,body.realdark{color:#ff4d4f}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#ff7875}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-6bd239a6],body.dark,body.realdark{color:#b37feb}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#d3adf7}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-6bd239a6],body.dark,body.realdark{color:#5cdbd3}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#87e8de}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-6bd239a6],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#73d13d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.toggle-icon.active[data-v-6bd239a6],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .empty-indicators[data-v-6bd239a6],body.dark,body.realdark{color:#868993}@media (max-width:768px){.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .current-symbol[data-v-6bd239a6],body.dark,body.realdark{border-top-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-left[data-v-6bd239a6],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-6bd239a6],body.dark,body.realdark{border-top-color:#2a2a2a;max-height:500px!important}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-bar,body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tab,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-tab-active,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-6bd239a6] .ant-tabs-ink-bar,body.dark,body.realdark{background-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-6bd239a6],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-6bd239a6],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-6bd239a6],body.dark,body.realdark{color:#868993;background:#2a3932}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-6bd239a6],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-6bd239a6],body.dark,body.realdark{color:#f6465d}}.add-stock-modal-content .market-tabs[data-v-6bd239a6]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-6bd239a6],.add-stock-modal-content .search-results-section[data-v-6bd239a6],.add-stock-modal-content .symbol-search-section[data-v-6bd239a6]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-6bd239a6],.add-stock-modal-content .search-results-section .section-title[data-v-6bd239a6]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-6bd239a6]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-6bd239a6]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-6bd239a6]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-6bd239a6]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-6bd239a6]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-6bd239a6]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chart-container.theme-dark .add-stock-modal-content .hot-symbols-section .section-title[data-v-6bd239a6],.chart-container.theme-dark .add-stock-modal-content .search-results-section .section-title[data-v-6bd239a6],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list[data-v-6bd239a6],body.dark,body.realdark{border-color:#363c4e;background-color:#2a2a2a}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item[data-v-6bd239a6]:hover,body.dark,body.realdark{background-color:#363c4e}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-6bd239a6],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-6bd239a6],body.dark,body.realdark{color:#868993}.params-config-modal .indicator-info[data-v-6bd239a6]{text-align:center;margin-bottom:8px}.params-config-modal .indicator-info .indicator-name[data-v-6bd239a6]{font-size:16px;font-weight:600;color:#1f1f1f}.params-config-modal .params-form .param-item[data-v-6bd239a6]{margin-bottom:16px}.params-config-modal .params-form .param-item .param-header[data-v-6bd239a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:6px}.params-config-modal .params-form .param-item .param-header .param-label[data-v-6bd239a6]{font-weight:500;color:#333}.theme-dark .params-config-modal .indicator-info .indicator-name[data-v-6bd239a6]{color:#e0e0e0}.theme-dark .params-config-modal .params-form .param-item .param-header .param-label[data-v-6bd239a6]{color:#d0d0d0} \ No newline at end of file diff --git a/frontend/dist/css/app.9dca4aef.css b/frontend/dist/css/app.9dca4aef.css deleted file mode 100644 index 6ed8ac3..0000000 --- a/frontend/dist/css/app.9dca4aef.css +++ /dev/null @@ -1 +0,0 @@ -.ant-pro-header-menu .anticon{margin-right:8px}.ant-pro-header-menu .ant-dropdown-menu-item{min-width:160px}.ant-pro-drop-down{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;padding:0 12px;vertical-align:top;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ant-pro-drop-down:hover{background:rgba(0,0,0,.04)}.ant-pro-drop-down>i{font-size:16px!important;-webkit-transform:none!important;transform:none!important}.ant-pro-drop-down>i svg{position:relative;top:-1px}@media (max-width:768px){.ant-pro-drop-down{padding:0 8px}}#userLayout.user-layout-wrapper[data-v-7ae30672]{height:100%}#userLayout.user-layout-wrapper.mobile .container .main[data-v-7ae30672]{max-width:368px;width:98%}#userLayout.user-layout-wrapper .container[data-v-7ae30672]{width:100%;min-height:100%;background:#f0f2f5 url(/img/background.ed05d5bd.svg) no-repeat 50%;background-size:100%;position:relative}#userLayout.user-layout-wrapper .container .fx-layer[data-v-7ae30672]{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none}#userLayout.user-layout-wrapper .container .fx-layer .fx-gradient[data-v-7ae30672]{position:absolute;inset:-20% -20% -20% -20%;background:radial-gradient(1200px 600px at 10% 10%,rgba(78,161,255,.18),transparent 60%),radial-gradient(900px 500px at 90% 20%,rgba(127,92,255,.18),transparent 60%),radial-gradient(800px 500px at 30% 90%,rgba(0,210,170,.14),transparent 60%);-webkit-filter:blur(20px);filter:blur(20px);-webkit-animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;-webkit-transform:translateZ(0);transform:translateZ(0)}#userLayout.user-layout-wrapper .container .fx-layer .fx-grid[data-v-7ae30672]{position:absolute;inset:0;background-image:linear-gradient(hsla(0,0%,100%,.06) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.06) 1px,transparent 0);background-size:44px 44px,44px 44px;background-position:0 0,0 0;mix-blend-mode:overlay;-webkit-animation:gridDrift-7ae30672 40s linear infinite;animation:gridDrift-7ae30672 40s linear infinite}#userLayout.user-layout-wrapper .container .user-layout-lang[data-v-7ae30672]{width:100%;height:40px;line-height:44px;text-align:right}#userLayout.user-layout-wrapper .container .user-layout-lang .select-lang-trigger[data-v-7ae30672]{cursor:pointer;padding:12px;margin-right:24px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:18px;vertical-align:middle}#userLayout.user-layout-wrapper .container .user-layout-content[data-v-7ae30672]{padding:32px 0 24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:calc(100vh - 40px);position:relative;z-index:1}#userLayout.user-layout-wrapper .container .user-layout-content .top[data-v-7ae30672]{text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .top .header[data-v-7ae30672]{height:56px;line-height:56px}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .badge[data-v-7ae30672]{position:absolute;display:inline-block;line-height:1;vertical-align:middle;margin-left:-12px;margin-top:-10px;opacity:.8}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:342px;max-width:42vw;height:auto;vertical-align:middle;margin-right:0;border-style:none}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .title[data-v-7ae30672]{font-size:33px;color:rgba(0,0,0,.85);font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:600;position:relative;top:2px}#userLayout.user-layout-wrapper .container .user-layout-content .top .desc[data-v-7ae30672]{font-size:14px;color:rgba(0,0,0,.45);margin-top:12px;margin-bottom:40px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{min-width:320px;width:480px;margin:0 auto}#userLayout.user-layout-wrapper .container .user-layout-content .main-content[data-v-7ae30672]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer[data-v-7ae30672]{width:100%;padding:0 16px;margin-top:auto;margin-bottom:16px;text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links[data-v-7ae30672]{margin-bottom:8px;font-size:14px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]{color:rgba(0,0,0,.45);-webkit-transition:all .3s;transition:all .3s}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]:not(:last-child){margin-right:40px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .copyright[data-v-7ae30672]{color:rgba(0,0,0,.45);font-size:14px}#userLayout.user-layout-wrapper .container a[data-v-7ae30672]{text-decoration:none}@media (max-width:576px){#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:208px;max-width:70vw;margin-top:8px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{width:92vw}}@-webkit-keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@-webkit-keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}@keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}.ant-pro-drop-down .action{margin-right:8px}.ant-pro-drop-down .ant-dropdown-menu-item{min-width:160px}.ant-layout.dark .ant-dropdown-menu,.ant-layout.realdark .ant-dropdown-menu,.ant-pro-layout.dark .ant-dropdown-menu,.ant-pro-layout.realdark .ant-dropdown-menu,body.dark .ant-dropdown-menu,body.realdark .ant-dropdown-menu{background-color:#1f1f1f;border:1px solid #303030;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.3);box-shadow:0 4px 12px rgba(0,0,0,.3)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,body.dark .ant-dropdown-menu .ant-dropdown-menu-item,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background-color:#262626;color:#1890ff}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background-color:#303030}.notice-icon-wrapper[data-v-7e99442e]{display:inline-block;vertical-align:top}.header-notice[data-v-7e99442e]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;-webkit-transition:all .3s;transition:all .3s;cursor:pointer;padding:0 12px;vertical-align:top}.header-notice[data-v-7e99442e]:hover{background:rgba(0,0,0,.04)}.header-notice span[data-v-7e99442e]{vertical-align:initial}@media (max-width:768px){.header-notice[data-v-7e99442e]{padding:0 8px}}.notice-header[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0}.notice-header .notice-title[data-v-7e99442e]{font-weight:500;font-size:14px}.notice-header .notice-action[data-v-7e99442e]{font-size:12px;color:#1890ff;cursor:pointer}.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}.notice-list[data-v-7e99442e]{max-height:400px;overflow-y:auto}.notice-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px 16px;cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.notice-item[data-v-7e99442e]:hover{background:#f5f5f5}.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}.notice-item .notice-item-icon[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#f0f0f0;border-radius:50%;margin-right:12px;font-size:16px}.notice-item .notice-item-content[data-v-7e99442e]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.notice-item .notice-item-content .notice-item-title[data-v-7e99442e]{font-weight:500;font-size:13px;color:rgba(0,0,0,.85);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notice-item .notice-item-content .notice-item-desc[data-v-7e99442e]{font-size:12px;color:rgba(0,0,0,.45);line-height:1.5;margin-bottom:4px}.notice-item .notice-item-content .notice-item-time[data-v-7e99442e]{font-size:11px;color:rgba(0,0,0,.25)}.notice-empty[data-v-7e99442e]{padding:48px 0}.notice-footer[data-v-7e99442e]{text-align:center;padding:12px;border-top:1px solid #f0f0f0}.notice-footer a[data-v-7e99442e]{color:#1890ff;cursor:pointer}.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}.notice-detail .notice-detail-meta[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.notice-detail .notice-detail-meta .notice-detail-type[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.notice-detail .notice-detail-meta .notice-detail-type .type-label[data-v-7e99442e]{font-size:14px;color:rgba(0,0,0,.65)}.notice-detail .notice-detail-meta .notice-detail-time[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:13px;color:rgba(0,0,0,.45)}.notice-detail .notice-detail-content .message-body[data-v-7e99442e]{font-size:14px;line-height:1.8;color:rgba(0,0,0,.85);max-height:300px;overflow-y:auto;padding:8px 0}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{margin:12px 0 8px;font-weight:600}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e]{font-size:18px}.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e]{font-size:16px}.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{font-size:14px}.notice-detail .notice-detail-content .message-body li[data-v-7e99442e]{margin-left:20px;list-style:disc}.notice-detail .notice-detail-content .message-body strong[data-v-7e99442e]{font-weight:600}.notice-detail .notice-detail-content.html-report .message-body[data-v-7e99442e]{max-height:70vh;padding:0;margin:-16px -24px;overflow-y:auto}.notice-detail .notice-detail-extra .extra-title[data-v-7e99442e]{font-weight:500;font-size:14px;margin-bottom:12px;color:rgba(0,0,0,.85)}.notice-detail .notice-detail-extra .extra-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:8px;font-size:13px}.notice-detail .notice-detail-extra .extra-item .label[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;color:rgba(0,0,0,.45);margin-right:8px}.notice-detail .notice-detail-extra .extra-item .value[data-v-7e99442e]{color:rgba(0,0,0,.85);word-break:break-word}.notice-detail .notice-detail-extra .extra-item.decision[data-v-7e99442e]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.notice-detail .notice-detail-extra .extra-item.decision .confidence[data-v-7e99442e]{margin-left:8px;color:rgba(0,0,0,.45);font-size:12px}.notice-detail .notice-detail-actions[data-v-7e99442e]{margin-top:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.header-notice-wrapper{top:50px!important}.header-notice-wrapper .ant-popover-inner-content{padding:0}.notice-detail-modal .ant-modal-header{border-bottom:1px solid #f0f0f0}.notice-detail-modal .ant-modal-body{padding:16px 24px}.notice-detail-modal.html-report-modal .ant-modal-body{padding:0}.ant-layout.dark .header-notice-wrapper .ant-popover-inner,.ant-layout.realdark .header-notice-wrapper .ant-popover-inner,body.dark .header-notice-wrapper .ant-popover-inner,body.realdark .header-notice-wrapper .ant-popover-inner{background:#1f1f1f}.ant-layout.dark .header-notice-wrapper .ant-popover-arrow,.ant-layout.realdark .header-notice-wrapper .ant-popover-arrow,body.dark .header-notice-wrapper .ant-popover-arrow,body.realdark .header-notice-wrapper .ant-popover-arrow{border-color:#1f1f1f}.ant-layout.dark .header-notice-wrapper .notice-header,.ant-layout.realdark .header-notice-wrapper .notice-header,body.dark .header-notice-wrapper .notice-header,body.realdark .header-notice-wrapper .notice-header{border-color:#303030}.ant-layout.dark .header-notice-wrapper .notice-header .notice-title,.ant-layout.realdark .header-notice-wrapper .notice-header .notice-title,body.dark .header-notice-wrapper .notice-header .notice-title,body.realdark .header-notice-wrapper .notice-header .notice-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item:hover,.ant-layout.realdark .header-notice-wrapper .notice-item:hover,body.dark .header-notice-wrapper .notice-item:hover,body.realdark .header-notice-wrapper .notice-item:hover{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item.unread,.ant-layout.realdark .header-notice-wrapper .notice-item.unread,body.dark .header-notice-wrapper .notice-item.unread,body.realdark .header-notice-wrapper .notice-item.unread{background:rgba(24,144,255,.15)}.ant-layout.dark .header-notice-wrapper .notice-item.unread:hover,.ant-layout.realdark .header-notice-wrapper .notice-item.unread:hover,body.dark .header-notice-wrapper .notice-item.unread:hover,body.realdark .header-notice-wrapper .notice-item.unread:hover{background:rgba(24,144,255,.25)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-icon,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-icon,body.dark .header-notice-wrapper .notice-item .notice-item-icon,body.realdark .header-notice-wrapper .notice-item .notice-item-icon{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc{color:hsla(0,0%,100%,.45)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time{color:hsla(0,0%,100%,.25)}.ant-layout.dark .header-notice-wrapper .notice-footer,.ant-layout.realdark .header-notice-wrapper .notice-footer,body.dark .header-notice-wrapper .notice-footer,body.realdark .header-notice-wrapper .notice-footer{border-color:#303030}.ant-layout.dark .header-notice-wrapper .ant-empty-description,.ant-layout.realdark .header-notice-wrapper .ant-empty-description,body.dark .header-notice-wrapper .ant-empty-description,body.realdark .header-notice-wrapper .ant-empty-description{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-modal-content,.ant-layout.realdark .notice-detail-modal .ant-modal-content,body.dark .notice-detail-modal .ant-modal-content,body.realdark .notice-detail-modal .ant-modal-content{background:#1f1f1f}.ant-layout.dark .notice-detail-modal .ant-modal-header,.ant-layout.realdark .notice-detail-modal .ant-modal-header,body.dark .notice-detail-modal .ant-modal-header,body.realdark .notice-detail-modal .ant-modal-header{background:#1f1f1f;border-color:#303030}.ant-layout.dark .notice-detail-modal .ant-modal-header .ant-modal-title,.ant-layout.realdark .notice-detail-modal .ant-modal-header .ant-modal-title,body.dark .notice-detail-modal .ant-modal-header .ant-modal-title,body.realdark .notice-detail-modal .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .ant-modal-close-x,.ant-layout.realdark .notice-detail-modal .ant-modal-close-x,body.dark .notice-detail-modal .ant-modal-close-x,body.realdark .notice-detail-modal .ant-modal-close-x{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-divider,.ant-layout.realdark .notice-detail-modal .ant-divider,body.dark .notice-detail-modal .ant-divider,body.realdark .notice-detail-modal .ant-divider{border-color:#303030}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label{color:hsla(0,0%,100%,.65)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence{color:hsla(0,0%,100%,.45)}.ant-pro-global-header-index-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0}.ant-pro-global-header-index-right .ant-pro-global-header-index-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;padding:0 12px;color:rgba(0,0,0,.65);-webkit-transition:all .3s;transition:all .3s;cursor:pointer;vertical-align:top}.ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff;background:rgba(0,0,0,.04)}@media (max-width:768px){.ant-pro-global-header-index-right .ant-pro-account-avatar,.ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-global-header-index-right .ant-pro-global-header-index-action{padding:0 8px}}.ant-layout.dark .ant-pro-global-header-index-right,.ant-layout.dark .ant-pro-global-header-index-right *,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-layout.realdark .ant-pro-global-header-index-right,.ant-layout.realdark .ant-pro-global-header-index-right *,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.dark .ant-pro-global-header-index-right,.ant-pro-layout.dark .ant-pro-global-header-index-right *,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.realdark .ant-pro-global-header-index-right,.ant-pro-layout.realdark .ant-pro-global-header-index-right *,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.dark .ant-pro-global-header-index-right,body.dark .ant-pro-global-header-index-right *,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.realdark .ant-pro-global-header-index-right,body.realdark .ant-pro-global-header-index-right *,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}.setting-drawer-index-item[data-v-e773bc98]{margin-bottom:24px}.setting-drawer-index-item .setting-drawer-index-title[data-v-e773bc98]{font-size:14px;color:rgba(0,0,0,.85);line-height:22px;margin-bottom:12px}[data-v-940007f2] .ant-drawer-handle,[data-v-940007f2] .setting-drawer-index-handle{display:none!important}.setting-drawer-index-content .setting-drawer-index-blockChecbox[data-v-940007f2]{display:-webkit-box;display:-ms-flexbox;display:flex}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item[data-v-940007f2]{margin-right:16px;position:relative;border-radius:4px;cursor:pointer}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item img[data-v-940007f2]{width:48px}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{position:absolute;top:0;right:0;width:100%;padding-top:15px;padding-left:24px;height:100%;color:#1890ff;font-size:14px;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock[data-v-940007f2]{width:20px;height:20px;border-radius:2px;float:left;cursor:pointer;margin-right:8px;padding-left:0;padding-right:0;text-align:center;color:#fff;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock i[data-v-940007f2]{font-size:14px}:global .ant-layout .ant-layout-footer,:global .ant-layout-footer,:global .ant-pro-layout .ant-layout-footer,:global footer.ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important;min-height:0!important;visibility:hidden!important;overflow:hidden!important}:global .ant-layout.dark .ant-layout-header,:global .ant-layout.realdark .ant-layout-header,:global .ant-pro-layout.dark .ant-layout-header,:global .ant-pro-layout.realdark .ant-layout-header,:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05),0 1px 4px rgba(0,0,0,.2)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05),0 1px 4px rgba(0,0,0,.2)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header *,:global .ant-layout.realdark .ant-layout-header *,:global .ant-pro-layout.dark .ant-layout-header *,:global .ant-pro-layout.realdark .ant-layout-header *,:global body.dark .ant-layout-header *,:global body.realdark .ant-layout-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon,:global .ant-layout.realdark .ant-layout-header .anticon,:global .ant-pro-layout.dark .ant-layout-header .anticon,:global .ant-pro-layout.realdark .ant-layout-header .anticon,:global body.dark .ant-layout-header .anticon,:global body.realdark .ant-layout-header .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon:hover,:global .ant-layout.realdark .ant-layout-header .anticon:hover,:global .ant-pro-layout.dark .ant-layout-header .anticon:hover,:global .ant-pro-layout.realdark .ant-layout-header .anticon:hover,:global body.dark .ant-layout-header .anticon:hover,:global body.realdark .ant-layout-header .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-layout.dark .ant-layout-header a,:global .ant-layout.realdark .ant-layout-header a,:global .ant-pro-layout.dark .ant-layout-header a,:global .ant-pro-layout.realdark .ant-layout-header a,:global body.dark .ant-layout-header a,:global body.realdark .ant-layout-header a{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header a:hover,:global .ant-layout.realdark .ant-layout-header a:hover,:global .ant-pro-layout.dark .ant-layout-header a:hover,:global .ant-pro-layout.realdark .ant-layout-header a:hover,:global body.dark .ant-layout-header a:hover,:global body.realdark .ant-layout-header a:hover{color:#1890ff!important}:global .ant-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global body.dark .ant-layout-header .ant-tooltip-open .anticon,:global body.realdark .ant-layout-header .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-header,:global .ant-pro-layout.light .ant-layout-header,:global body.light .ant-layout-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08)!important;box-shadow:0 1px 4px rgba(0,21,41,.08)!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-layout-content,:global .ant-layout.realdark .ant-layout-content,:global .ant-pro-layout.dark .ant-layout-content,:global .ant-pro-layout.realdark .ant-layout-content,:global body.dark .ant-layout-content,:global body.realdark .ant-layout-content{background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-content,:global .ant-pro-layout.light .ant-layout-content,:global body.light .ant-layout-content{background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-pro-global-header,:global .ant-layout.realdark .ant-pro-global-header,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.dark .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-pro-global-header,:global body.dark .ant-layout-header .ant-pro-global-header,:global body.dark .ant-pro-global-header,:global body.realdark .ant-layout-header .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header *,:global .ant-layout.realdark .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-pro-global-header *,:global body.dark .ant-layout-header .ant-pro-global-header *,:global body.dark .ant-pro-global-header *,:global body.realdark .ant-layout-header .ant-pro-global-header *,:global body.realdark .ant-pro-global-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo h1{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo img{opacity:.9}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-pro-global-header-content .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar span{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger,:global .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,:global .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,:global .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}:global a{color:hsla(0,0%,100%,.85)!important}:global a:hover{color:#1890ff!important}:global .anticon{color:hsla(0,0%,100%,.85)!important}:global .anticon:hover{color:#1890ff!important}:global .ant-layout.light .ant-pro-global-header,:global .ant-pro-layout.light .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.light .ant-pro-global-header,:global body.light .ant-layout-header .ant-pro-global-header,:global body.light .ant-pro-global-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout),:global(.ant-pro-layout).realdark :global(.ant-layout){background-color:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-layout-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header){background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header){background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header) *,:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header) *{color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-content),:global(.ant-pro-layout).realdark :global(.ant-layout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-pro-basicLayout-content),:global(.ant-pro-layout).realdark :global(.ant-pro-basicLayout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider),:global(.ant-pro-layout).dark :global(.ant-pro-sider),:global(.ant-pro-layout).dark :global(.ant-pro-sider-menu-sider),:global(.ant-pro-layout).realdark :global(.ant-layout-sider),:global(.ant-pro-layout).realdark :global(.ant-pro-sider),:global(.ant-pro-layout).realdark :global(.ant-pro-sider-menu-sider){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).dark :global(.ant-pro-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).dark :global(.ant-pro-sider-menu-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-layout-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-pro-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-pro-sider-menu-sider) :global(.ant-layout-sider-children){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-inline.ant-menu-sub),:global(.ant-pro-layout).dark :global(.ant-menu-dark),:global(.ant-pro-layout).dark :global(.ant-menu.ant-menu-dark),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-inline.ant-menu-sub),:global(.ant-pro-layout).realdark :global(.ant-menu-dark),:global(.ant-pro-layout).realdark :global(.ant-menu.ant-menu-dark){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-sub),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-sub){background:#111!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item-selected),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item-selected){background:rgba(24,144,255,.25)!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item:hover),:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-submenu-title:hover),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item:hover),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-submenu-title:hover){background:hsla(0,0%,100%,.06)!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider-trigger),:global(.ant-pro-layout).realdark :global(.ant-layout-sider-trigger){background:#111!important;border-top:1px solid #1c1c1c;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)}:global(.ant-pro-layout).light :global(.ant-layout){background-color:#f0f2f5!important}:global(.ant-pro-layout).light :global(.ant-layout-header){background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-layout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-pro-basicLayout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}.ant-pro-global-header-index-right{margin-right:8px}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action{color:#030303}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action:hover{background:#1890ff}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar span,.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down:hover{color:#1890ff;background:hsla(0,0%,100%,.08)}.ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{margin:20px 0;margin-right:8px;color:#1890ff;vertical-align:top;background:rgb(255 255 3%)}.ant-pro-global-header-index-right .menu .anticon{margin-right:8px}.ant-pro-global-header-index-right .menu .ant-dropdown-menu-item{min-width:100px}:global .ant-pro-layout.dark .ant-dropdown-menu,:global .ant-pro-layout.realdark .ant-dropdown-menu{background:#1c1c1c!important;border:1px solid #2a2a2a!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4)!important;box-shadow:0 4px 12px rgba(0,0,0,.4)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background:#252525!important;color:#1890ff!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background:#2a2a2a!important}:global body.dark .ant-layout-sider,:global body.dark .ant-layout-sider-dark,:global body.dark .ant-pro-sider-menu-sider,:global body.dark .ant-pro-sider-menu-sider.ant-layout-sider-dark,:global body.realdark .ant-layout-sider,:global body.realdark .ant-layout-sider-dark,:global body.realdark .ant-pro-sider-menu-sider,:global body.realdark .ant-pro-sider-menu-sider.ant-layout-sider-dark{background:#0a0a0a!important}:global body.dark .ant-layout-sider-children,:global body.realdark .ant-layout-sider-children{background:#0a0a0a!important}:global body.dark .ant-menu-dark,:global body.dark .ant-menu-dark .ant-menu-inline.ant-menu-sub,:global body.dark .ant-menu.ant-menu-dark,:global body.dark ul.ant-menu.ant-menu-dark.ant-menu-root,:global body.realdark .ant-menu-dark,:global body.realdark .ant-menu-dark .ant-menu-inline.ant-menu-sub,:global body.realdark .ant-menu.ant-menu-dark,:global body.realdark ul.ant-menu.ant-menu-dark.ant-menu-root{background:#0a0a0a!important}:global body.dark .ant-menu-dark .ant-menu-sub,:global body.dark .ant-menu.ant-menu-dark .ant-menu-sub,:global body.realdark .ant-menu-dark .ant-menu-sub,:global body.realdark .ant-menu.ant-menu-dark .ant-menu-sub{background:#111!important}:global body.dark .ant-menu-dark .ant-menu-item-selected,:global body.realdark .ant-menu-dark .ant-menu-item-selected{background:rgba(24,144,255,.25)!important}:global body.dark .ant-pro-sider-menu-logo,:global body.realdark .ant-pro-sider-menu-logo{background:#0a0a0a!important}:global body.dark .ant-layout-sider-trigger,:global body.realdark .ant-layout-sider-trigger{background:#111!important;border-top:1px solid #1c1c1c;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global body.dark .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#111!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}@media (max-width:768px){:global .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-global-header-logo,:global .ant-pro-layout .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}.ant-pro-sider-menu-sider.light .ant-menu-light{height:60vh!important}.basic-layout-wrapper .ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important}.basic-layout-wrapper{position:relative}.basic-layout-wrapper .custom-menu-footer{position:fixed;bottom:0;left:0;z-index:100;width:256px;background:#111;border-top:1px solid #1c1c1c;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);max-width:256px;display:block;opacity:1}.basic-layout-wrapper .custom-menu-footer.collapsed{width:80px;max-width:80px}@media (max-width:768px){.basic-layout-wrapper .custom-menu-footer{z-index:1001}.basic-layout-wrapper .custom-menu-footer:not(.drawer-open){display:none!important;opacity:0}.basic-layout-wrapper .custom-menu-footer.drawer-animating{opacity:0;-webkit-transition:opacity .1s ease-out;transition:opacity .1s ease-out}.basic-layout-wrapper .custom-menu-footer.drawer-open:not(.drawer-animating){opacity:1;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s;transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s}}.basic-layout-wrapper .custom-menu-footer .menu-footer-content{padding:12px 16px;font-size:11px;color:inherit;max-height:none;overflow:visible;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar{width:4px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section{margin-bottom:12px;text-align:center}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section:last-child{margin-bottom:0}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-title{font-size:11px;font-weight:500;margin-bottom:6px;opacity:.8;color:inherit}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:4px;-ms-flex-wrap:wrap;flex-wrap:wrap;font-size:10px;opacity:.7}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a{cursor:pointer;color:inherit;text-decoration:underline;-webkit-transition:opacity .2s;transition:opacity .2s}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a:hover{opacity:1}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links .separator{opacity:.5;margin:0 2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;margin-top:6px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon{width:15px;height:15px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;cursor:pointer;opacity:.7;-webkit-transition:all .2s;transition:all .2s;background:hsla(0,0%,100%,.05);text-decoration:none;overflow:hidden}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon:hover{opacity:1;background:hsla(0,0%,100%,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-svg{width:15x;height:15px;color:currentColor}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-logo{width:15px;height:15px;-o-object-fit:contain;object-fit:contain}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-text{font-size:10px;font-weight:700}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.copyright{margin-top:12px;padding-top:12px;border-top:1px solid #2a2a2a;opacity:.6;font-size:10px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.version{margin-top:4px;font-size:9px;opacity:.4;text-align:center;letter-spacing:1px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed{text-align:center;padding:16px;font-size:12px;opacity:.6;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed:hover{opacity:1}.basic-layout-wrapper ::v-deep .ant-pro-layout .ant-pro-sider-collapsed~.custom-menu-footer,.basic-layout-wrapper ::v-deep .ant-pro-layout.ant-pro-sider-collapsed~.custom-menu-footer{width:80px}.basic-layout-wrapper .ant-layout-sider-children{padding-bottom:calc(var(--menu-footer-height, 220px) + 12px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar{width:6px}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:3px}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children,body.dark .basic-layout-wrapper .ant-layout-sider-children,body.realdark .basic-layout-wrapper .ant-layout-sider-children{scrollbar-color:hsla(0,0%,100%,.25) transparent}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.25)}.basic-layout-wrapper .ant-pro-sider{height:100vh;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider,.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider .ant-menu,.basic-layout-wrapper .ant-pro-sider .ant-menu-root,.basic-layout-wrapper .ant-pro-sider .ant-pro-sider-menu{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;max-height:calc(100vh - var(--menu-footer-height, 220px) - 24px);overflow-y:auto!important;overflow-x:hidden;-webkit-overflow-scrolling:touch}.basic-layout-wrapper.dark .ant-layout-header,.basic-layout-wrapper.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger:hover{background:hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action,.basic-layout-wrapper.realdark .ant-pro-global-header .action{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .action:hover{background:hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-layout,.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-layout,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content{background-color:#141414!important}@media (max-width:768px){.ant-drawer.ant-drawer-open .ant-drawer-content-wrapper{overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-content,.ant-drawer.ant-drawer-open .ant-drawer-wrapper-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-body{overflow-y:auto!important;overflow-x:hidden!important;padding-bottom:var(--footer-height,280px)!important;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent;min-height:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar{width:4px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-track{background:transparent}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.3)}}.ant-pro-multi-tab{margin:-23px -24px 24px;background:#fff}.topmenu .ant-pro-multi-tab-wrapper{max-width:1200px;margin:0 auto}.topmenu.content-width-Fluid .ant-pro-multi-tab-wrapper{max-width:100%;margin:0 auto}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;color:rgba(0,0,0,.65);font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-variant:tabular-nums;line-height:1.5;background-color:#fff;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;-webkit-transition:color .3s;transition:color .3s;-webkit-text-decoration-skip:objects}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{text-decoration:none;outline:0}a[disabled]{color:rgba(0,0,0,.25);cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{color:#fff;background:#1890ff}::selection{color:#fff;background:#1890ff}.clearfix{zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}.anticon{display:inline-block;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon[tabindex]{cursor:pointer}.anticon-spin,.anticon-spin:before{display:inline-block;-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.fade-appear.fade-appear-active,.fade-enter.fade-enter-active{-webkit-animation-name:antFadeIn;animation-name:antFadeIn;-webkit-animation-play-state:running;animation-play-state:running}.fade-leave.fade-leave-active{-webkit-animation-name:antFadeOut;animation-name:antFadeOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.fade-appear,.fade-enter{opacity:0}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antFadeOut{0%{opacity:1}to{opacity:0}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.move-up-appear,.move-up-enter,.move-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-up-appear.move-up-appear-active,.move-up-enter.move-up-enter-active{-webkit-animation-name:antMoveUpIn;animation-name:antMoveUpIn;-webkit-animation-play-state:running;animation-play-state:running}.move-up-leave.move-up-leave-active{-webkit-animation-name:antMoveUpOut;animation-name:antMoveUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-up-appear,.move-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-up-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-down-appear,.move-down-enter,.move-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-down-appear.move-down-appear-active,.move-down-enter.move-down-enter-active{-webkit-animation-name:antMoveDownIn;animation-name:antMoveDownIn;-webkit-animation-play-state:running;animation-play-state:running}.move-down-leave.move-down-leave-active{-webkit-animation-name:antMoveDownOut;animation-name:antMoveDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-down-appear,.move-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-down-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-left-appear,.move-left-enter,.move-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-left-appear.move-left-appear-active,.move-left-enter.move-left-enter-active{-webkit-animation-name:antMoveLeftIn;animation-name:antMoveLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.move-left-leave.move-left-leave-active{-webkit-animation-name:antMoveLeftOut;animation-name:antMoveLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-left-appear,.move-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-left-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-right-appear,.move-right-enter,.move-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-right-appear.move-right-appear-active,.move-right-enter.move-right-enter-active{-webkit-animation-name:antMoveRightIn;animation-name:antMoveRightIn;-webkit-animation-play-state:running;animation-play-state:running}.move-right-leave.move-right-leave-active{-webkit-animation-name:antMoveRightOut;animation-name:antMoveRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-right-appear,.move-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-right-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@-webkit-keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}[ant-click-animating-without-extra-node=true],[ant-click-animating=true]{position:relative}html{--antd-wave-shadow-color:#1890ff}.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:inherit;-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #1890ff;-webkit-box-shadow:0 0 0 0 var(--antd-wave-shadow-color);box-shadow:0 0 0 0 var(--antd-wave-shadow-color);opacity:.2;-webkit-animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;content:"";pointer-events:none}@-webkit-keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@-webkit-keyframes fadeEffect{to{opacity:0}}@keyframes fadeEffect{to{opacity:0}}.slide-up-appear,.slide-up-enter,.slide-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-up-appear.slide-up-appear-active,.slide-up-enter.slide-up-enter-active{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-up-leave.slide-up-leave-active{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-up-appear,.slide-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-up-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-down-appear,.slide-down-enter,.slide-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-down-appear.slide-down-appear-active,.slide-down-enter.slide-down-enter-active{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-down-leave.slide-down-leave-active{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-down-appear,.slide-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-down-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-left-appear,.slide-left-enter,.slide-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-left-appear.slide-left-appear-active,.slide-left-enter.slide-left-enter-active{-webkit-animation-name:antSlideLeftIn;animation-name:antSlideLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-left-leave.slide-left-leave-active{-webkit-animation-name:antSlideLeftOut;animation-name:antSlideLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-left-appear,.slide-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-left-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-right-appear,.slide-right-enter,.slide-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-right-appear.slide-right-appear-active,.slide-right-enter.slide-right-enter-active{-webkit-animation-name:antSlideRightIn;animation-name:antSlideRightIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-right-leave.slide-right-leave-active{-webkit-animation-name:antSlideRightOut;animation-name:antSlideRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-right-appear,.slide-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-right-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@-webkit-keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@-webkit-keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@-webkit-keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@-webkit-keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}@keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}.swing-appear,.swing-enter{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.swing-appear.swing-appear-active,.swing-enter.swing-enter-active{-webkit-animation-name:antSwingIn;animation-name:antSwingIn;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}@keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}.zoom-appear,.zoom-enter,.zoom-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-appear.zoom-appear-active,.zoom-enter.zoom-enter-active{-webkit-animation-name:antZoomIn;animation-name:antZoomIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-leave.zoom-leave-active{-webkit-animation-name:antZoomOut;animation-name:antZoomOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-appear,.zoom-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-appear,.zoom-big-enter,.zoom-big-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-appear.zoom-big-appear-active,.zoom-big-enter.zoom-big-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-leave.zoom-big-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-appear,.zoom-big-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-fast-appear,.zoom-big-fast-enter,.zoom-big-fast-leave{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-fast-appear.zoom-big-fast-appear-active,.zoom-big-fast-enter.zoom-big-fast-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-fast-leave.zoom-big-fast-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-fast-appear,.zoom-big-fast-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-fast-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-up-appear,.zoom-up-enter,.zoom-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-up-appear.zoom-up-appear-active,.zoom-up-enter.zoom-up-enter-active{-webkit-animation-name:antZoomUpIn;animation-name:antZoomUpIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-up-leave.zoom-up-leave-active{-webkit-animation-name:antZoomUpOut;animation-name:antZoomUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-up-appear,.zoom-up-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-up-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-down-appear,.zoom-down-enter,.zoom-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-down-appear.zoom-down-appear-active,.zoom-down-enter.zoom-down-enter-active{-webkit-animation-name:antZoomDownIn;animation-name:antZoomDownIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-down-leave.zoom-down-leave-active{-webkit-animation-name:antZoomDownOut;animation-name:antZoomDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-down-appear,.zoom-down-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-down-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-left-appear,.zoom-left-enter,.zoom-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-left-appear.zoom-left-appear-active,.zoom-left-enter.zoom-left-enter-active{-webkit-animation-name:antZoomLeftIn;animation-name:antZoomLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-left-leave.zoom-left-leave-active{-webkit-animation-name:antZoomLeftOut;animation-name:antZoomLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-left-appear,.zoom-left-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-left-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-right-appear,.zoom-right-enter,.zoom-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-right-appear.zoom-right-appear-active,.zoom-right-enter.zoom-right-enter-active{-webkit-animation-name:antZoomRightIn;animation-name:antZoomRightIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-right-leave.zoom-right-leave-active{-webkit-animation-name:antZoomRightOut;animation-name:antZoomRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-right-appear,.zoom-right-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-right-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@-webkit-keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@-webkit-keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@-webkit-keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@-webkit-keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@-webkit-keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@-webkit-keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@-webkit-keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@-webkit-keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@-webkit-keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@-webkit-keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}@keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}.ant-motion-collapse-legacy{overflow:hidden}.ant-motion-collapse,.ant-motion-collapse-legacy-active{-webkit-transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important;transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important}.ant-motion-collapse{overflow:hidden}#nprogress{pointer-events:none}#nprogress .bar{position:fixed;top:0;left:0;z-index:1031;width:100%;height:2px;background:#1890ff}#nprogress .peg{position:absolute;right:0;display:block;width:100px;height:100%;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px);-webkit-box-shadow:0 0 10px #1890ff,0 0 5px #1890ff;box-shadow:0 0 10px #1890ff,0 0 5px #1890ff}#nprogress .spinner{position:fixed;top:15px;right:15px;z-index:1031;display:block}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#1890ff;border-left-color:#1890ff;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{position:relative;overflow:hidden}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#app,#root,body,html{height:100%}.colorWeak{-webkit-filter:invert(80%);filter:invert(80%)}.ant-layout.layout-basic{height:100vh;min-height:100vh}canvas{display:block}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}ol,ul{list-style:none}.table-alert{margin-bottom:16px}.table-operator{margin-bottom:18px}.table-operator button{margin-right:8px}.table-page-search-wrapper .ant-form-inline .ant-form-item{display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:0;margin-bottom:24px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control-wrapper{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:inline-block;vertical-align:middle}.table-page-search-wrapper .ant-form-inline .ant-form-item>.ant-form-item-label{width:auto;padding-right:8px;line-height:32px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control{height:32px;line-height:32px}.table-page-search-wrapper .table-page-search-submitButtons{display:block;margin-bottom:24px;white-space:nowrap}@media (max-width:480px){.ant-table{width:100%;overflow-x:auto}.ant-table-tbody>tr>td,.ant-table-tbody>tr>th,.ant-table-thead>tr>td,.ant-table-thead>tr>th{white-space:pre}.ant-table-tbody>tr>td>span,.ant-table-tbody>tr>th>span,.ant-table-thead>tr>td>span,.ant-table-thead>tr>th>span{display:block}}#webpack-dev-server-client-overlay,#webpack-hot-middleware-client-overlay,.webpack-dev-server-client-overlay{display:none!important;pointer-events:none!important;visibility:hidden!important}@media (max-width:768px){.ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}body.dark .ant-layout-sider,body.dark .ant-layout-sider-children,body.dark .ant-layout-sider-dark,body.dark .ant-menu-dark,body.dark .ant-menu-dark .ant-menu-inline.ant-menu-sub,body.dark .ant-menu.ant-menu-dark,body.dark .ant-pro-sider-menu-logo,body.dark .ant-pro-sider-menu-sider,body.dark .ant-pro-sider-menu-sider.ant-layout-sider-dark,body.dark aside.ant-layout-sider.ant-layout-sider-dark,body.dark ul.ant-menu.ant-menu-dark.ant-menu-root.ant-menu-inline,body.realdark .ant-layout-sider,body.realdark .ant-layout-sider-children,body.realdark .ant-layout-sider-dark,body.realdark .ant-menu-dark,body.realdark .ant-menu-dark .ant-menu-inline.ant-menu-sub,body.realdark .ant-menu.ant-menu-dark,body.realdark .ant-pro-sider-menu-logo,body.realdark .ant-pro-sider-menu-sider,body.realdark .ant-pro-sider-menu-sider.ant-layout-sider-dark,body.realdark aside.ant-layout-sider.ant-layout-sider-dark,body.realdark ul.ant-menu.ant-menu-dark.ant-menu-root.ant-menu-inline{background:#0a0a0a!important}body.dark .ant-menu-dark .ant-menu-sub,body.dark .ant-menu.ant-menu-dark .ant-menu-sub,body.realdark .ant-menu-dark .ant-menu-sub,body.realdark .ant-menu.ant-menu-dark .ant-menu-sub{background:#111!important}body.dark .ant-layout-sider-trigger,body.realdark .ant-layout-sider-trigger{border-top:1px solid #1c1c1c}body.dark .ant-layout-header,body.dark .ant-layout-sider-trigger,body.realdark .ant-layout-header,body.realdark .ant-layout-sider-trigger{background:#111!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}body.dark .ant-layout-header,body.realdark .ant-layout-header{border-bottom:1px solid #1c1c1c!important}body.dark .ant-pro-global-header,body.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}body.dark .ant-layout,body.realdark .ant-layout{background:#0a0a0a!important}body.dark .ant-layout-content,body.dark .ant-pro-basicLayout-content,body.realdark .ant-layout-content,body.realdark .ant-pro-basicLayout-content{background:#141414!important}body.dark .ant-card,body.realdark .ant-card{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)}body.dark .ant-card .ant-card-head,body.realdark .ant-card .ant-card-head{background:#1c1c1c!important;border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-card .ant-card-body,body.realdark .ant-card .ant-card-body{color:hsla(0,0%,100%,.85)}body.dark .ant-table,body.realdark .ant-table{background:#1c1c1c!important;color:hsla(0,0%,100%,.85)}body.dark .ant-table .ant-table-thead>tr>th,body.realdark .ant-table .ant-table-thead>tr>th{background:#141414!important;border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-table .ant-table-tbody>tr>td,body.realdark .ant-table .ant-table-tbody>tr>td{border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)}body.dark .ant-table .ant-table-tbody>tr:hover>td,body.realdark .ant-table .ant-table-tbody>tr:hover>td{background:#252525!important}body.dark .ant-table .ant-table-placeholder,body.realdark .ant-table .ant-table-placeholder{background:#1c1c1c!important;color:#666!important}body.dark .ant-pagination-item,body.realdark .ant-pagination-item{background:#1c1c1c!important;border-color:#2a2a2a!important}body.dark .ant-pagination-item a,body.realdark .ant-pagination-item a{color:hsla(0,0%,100%,.85)!important}body.dark .ant-pagination-item-active,body.realdark .ant-pagination-item-active{border-color:#1890ff!important}body.dark .ant-input,body.dark .ant-input-number,body.dark .ant-pagination-next .ant-pagination-item-link,body.dark .ant-pagination-prev .ant-pagination-item-link,body.dark .ant-select-selection,body.realdark .ant-input,body.realdark .ant-input-number,body.realdark .ant-pagination-next .ant-pagination-item-link,body.realdark .ant-pagination-prev .ant-pagination-item-link,body.realdark .ant-select-selection{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-input::-webkit-input-placeholder,body.realdark .ant-input::-webkit-input-placeholder{color:#555!important}body.dark .ant-input::-moz-placeholder,body.realdark .ant-input::-moz-placeholder{color:#555!important}body.dark .ant-input:-ms-input-placeholder,body.realdark .ant-input:-ms-input-placeholder{color:#555!important}body.dark .ant-input::-ms-input-placeholder,body.realdark .ant-input::-ms-input-placeholder{color:#555!important}body.dark .ant-input::placeholder,body.realdark .ant-input::placeholder{color:#555!important}body.dark .ant-form-item-label>label,body.realdark .ant-form-item-label>label{color:hsla(0,0%,100%,.85)!important}body.dark .ant-input-clear-icon,body.dark .ant-input-clear-icon .anticon,body.dark .ant-input-number-handler-down-inner,body.dark .ant-input-number-handler-up-inner,body.dark .ant-input-number-handler-wrap,body.dark .ant-input-suffix .anticon,body.dark .ant-select-arrow,body.dark .ant-select-clear,body.realdark .ant-input-clear-icon,body.realdark .ant-input-clear-icon .anticon,body.realdark .ant-input-number-handler-down-inner,body.realdark .ant-input-number-handler-up-inner,body.realdark .ant-input-number-handler-wrap,body.realdark .ant-input-suffix .anticon,body.realdark .ant-select-arrow,body.realdark .ant-select-clear{color:#8b949e!important}body.dark .ant-input-clear-icon:hover,body.dark .ant-input-number-handler:hover .ant-input-number-handler-down-inner,body.dark .ant-input-number-handler:hover .ant-input-number-handler-up-inner,body.dark .ant-input-suffix .anticon:hover,body.dark .ant-select-arrow:hover,body.dark .ant-select-clear:hover,body.realdark .ant-input-clear-icon:hover,body.realdark .ant-input-number-handler:hover .ant-input-number-handler-down-inner,body.realdark .ant-input-number-handler:hover .ant-input-number-handler-up-inner,body.realdark .ant-input-suffix .anticon:hover,body.realdark .ant-select-arrow:hover,body.realdark .ant-select-clear:hover{color:#58a6ff!important}body.dark .ant-btn-default,body.realdark .ant-btn-default{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-btn-default:hover,body.realdark .ant-btn-default:hover{border-color:#1890ff!important;color:#1890ff!important}body.dark .ant-page-header,body.realdark .ant-page-header{background:transparent!important}body.dark .ant-breadcrumb-link,body.dark .ant-breadcrumb-separator,body.dark .ant-breadcrumb>span,body.realdark .ant-breadcrumb-link,body.realdark .ant-breadcrumb-separator,body.realdark .ant-breadcrumb>span{color:hsla(0,0%,100%,.45)!important}body.dark .ant-page-header-heading-title,body.realdark .ant-page-header-heading-title{color:hsla(0,0%,100%,.85)!important}body.dark .ant-tabs-bar,body.realdark .ant-tabs-bar{border-bottom-color:#2a2a2a!important}body.dark .ant-tabs-tab,body.realdark .ant-tabs-tab{color:#888!important}body.dark .ant-tabs-tab:hover,body.realdark .ant-tabs-tab:hover{color:#d4d4d4!important}body.dark .ant-tabs-tab-active,body.realdark .ant-tabs-tab-active{color:#1890ff!important}body.dark .ant-modal-content,body.realdark .ant-modal-content{background:#1c1c1c!important}body.dark .ant-modal-content .ant-modal-header,body.realdark .ant-modal-content .ant-modal-header{background:#1c1c1c!important;border-bottom-color:#2a2a2a!important}body.dark .ant-modal-content .ant-modal-body,body.dark .ant-modal-content .ant-modal-header .ant-modal-title,body.realdark .ant-modal-content .ant-modal-body,body.realdark .ant-modal-content .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)!important}body.dark .ant-modal-content .ant-modal-footer,body.realdark .ant-modal-content .ant-modal-footer{border-top-color:#2a2a2a!important;background:#1c1c1c!important}body.dark .ant-modal-content .ant-modal-close-x,body.realdark .ant-modal-content .ant-modal-close-x{color:#888!important}body.dark .ant-select-dropdown,body.realdark .ant-select-dropdown{background:#1c1c1c!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1)!important;color:#1890ff!important}.basic-layout-wrapper.dark .ant-layout-header,.basic-layout-wrapper.realdark .ant-layout-header,body.dark .basic-layout-wrapper .ant-layout-header,body.realdark .basic-layout-wrapper .ant-layout-header{background:#111!important;background-color:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header,body.dark .basic-layout-wrapper .ant-pro-global-header,body.realdark .basic-layout-wrapper .ant-pro-global-header{background:#111!important;background-color:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.dark .ant-pro-page-header-wrap,.basic-layout-wrapper.dark .ant-pro-page-header-wrap-children-content,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-pro-page-header-wrap,.basic-layout-wrapper.realdark .ant-pro-page-header-wrap-children-content,body.dark .basic-layout-wrapper .ant-pro-page-header-wrap,body.dark .basic-layout-wrapper .ant-pro-page-header-wrap-children-content,body.realdark .basic-layout-wrapper .ant-pro-page-header-wrap,body.realdark .basic-layout-wrapper .ant-pro-page-header-wrap-children-content{background:#141414!important;background-color:#141414!important}.basic-layout-wrapper.dark .custom-menu-footer,.basic-layout-wrapper.realdark .custom-menu-footer,body.dark .basic-layout-wrapper .custom-menu-footer,body.realdark .basic-layout-wrapper .custom-menu-footer{background:#111!important;background-color:#111!important;border-top:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;color:hsla(0,0%,100%,.88)!important}.basic-layout-wrapper.dark .custom-menu-footer .menu-footer-content .footer-section,.basic-layout-wrapper.realdark .custom-menu-footer .menu-footer-content .footer-section{padding:4px 2px!important;margin-bottom:6px!important;border-radius:0!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important;opacity:1!important}.basic-layout-wrapper.dark .custom-menu-footer .menu-footer-content .footer-section:hover,.basic-layout-wrapper.realdark .custom-menu-footer .menu-footer-content .footer-section:hover{background:transparent!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-title,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-title{color:hsla(0,0%,100%,.5)!important;opacity:1!important;text-transform:uppercase!important;letter-spacing:.5px!important;font-size:9px!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-links,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-links{opacity:1!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-links a,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-links a{color:hsla(0,0%,100%,.68)!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section.copyright,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section.copyright{color:hsla(0,0%,100%,.45)!important;border-top-color:#1c1c1c!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section.version,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section.version{color:hsla(0,0%,100%,.35)!important}.basic-layout-wrapper.dark .custom-menu-footer .social-icon,.basic-layout-wrapper.realdark .custom-menu-footer .social-icon{background:hsla(0,0%,100%,.08)!important;color:hsla(0,0%,100%,.75)!important}.basic-layout-wrapper.light .custom-menu-footer{background:#fff!important;background-color:#fff!important;border-top-color:#e8e8e8!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.85)!important}.basic-layout-wrapper.light .custom-menu-footer .footer-section .section-links{opacity:.75}body.dark .ant-modal-wrap [class*=billing],body.dark .ant-modal-wrap [class*=billing] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=billing] .ant-steps-item-title,body.dark .ant-modal-wrap [class*=checkout],body.dark .ant-modal-wrap [class*=payment],body.dark .ant-modal-wrap [class*=payment] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=payment] .ant-steps-item-title,body.dark .ant-modal-wrap [class*=recharge],body.dark .ant-modal-wrap [class*=usdt],body.dark .ant-modal-wrap [class*=usdt] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=usdt] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=billing],body.realdark .ant-modal-wrap [class*=billing] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=billing] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=checkout],body.realdark .ant-modal-wrap [class*=payment],body.realdark .ant-modal-wrap [class*=payment] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=payment] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=recharge],body.realdark .ant-modal-wrap [class*=usdt],body.realdark .ant-modal-wrap [class*=usdt] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=usdt] .ant-steps-item-title{color:#d4d4d4!important}body.dark .ant-modal-wrap [class*=billing] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=billing] .ant-statistic-content,body.dark .ant-modal-wrap [class*=payment] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=payment] .ant-statistic-content,body.dark .ant-modal-wrap [class*=usdt] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=usdt] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=billing] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=billing] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=payment] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=payment] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=usdt] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=usdt] .ant-statistic-content{color:#e5e5e5!important} \ No newline at end of file diff --git a/frontend/dist/css/app.d31596cf.css b/frontend/dist/css/app.d31596cf.css new file mode 100644 index 0000000..41fcc25 --- /dev/null +++ b/frontend/dist/css/app.d31596cf.css @@ -0,0 +1 @@ +.ant-pro-header-menu .anticon{margin-right:8px}.ant-pro-header-menu .ant-dropdown-menu-item{min-width:160px}.ant-pro-drop-down{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;padding:0 12px;vertical-align:top;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ant-pro-drop-down:hover{background:rgba(0,0,0,.04)}.ant-pro-drop-down>i{font-size:16px!important;-webkit-transform:none!important;transform:none!important}.ant-pro-drop-down>i svg{position:relative;top:-1px}@media (max-width:768px){.ant-pro-drop-down{padding:0 8px}}#userLayout.user-layout-wrapper[data-v-7ae30672]{height:100%}#userLayout.user-layout-wrapper.mobile .container .main[data-v-7ae30672]{max-width:368px;width:98%}#userLayout.user-layout-wrapper .container[data-v-7ae30672]{width:100%;min-height:100%;background:#f0f2f5 url(/img/background.ed05d5bd.svg) no-repeat 50%;background-size:100%;position:relative}#userLayout.user-layout-wrapper .container .fx-layer[data-v-7ae30672]{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none}#userLayout.user-layout-wrapper .container .fx-layer .fx-gradient[data-v-7ae30672]{position:absolute;inset:-20% -20% -20% -20%;background:radial-gradient(1200px 600px at 10% 10%,rgba(78,161,255,.18),transparent 60%),radial-gradient(900px 500px at 90% 20%,rgba(127,92,255,.18),transparent 60%),radial-gradient(800px 500px at 30% 90%,rgba(0,210,170,.14),transparent 60%);-webkit-filter:blur(20px);filter:blur(20px);-webkit-animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;-webkit-transform:translateZ(0);transform:translateZ(0)}#userLayout.user-layout-wrapper .container .fx-layer .fx-grid[data-v-7ae30672]{position:absolute;inset:0;background-image:linear-gradient(hsla(0,0%,100%,.06) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.06) 1px,transparent 0);background-size:44px 44px,44px 44px;background-position:0 0,0 0;mix-blend-mode:overlay;-webkit-animation:gridDrift-7ae30672 40s linear infinite;animation:gridDrift-7ae30672 40s linear infinite}#userLayout.user-layout-wrapper .container .user-layout-lang[data-v-7ae30672]{width:100%;height:40px;line-height:44px;text-align:right}#userLayout.user-layout-wrapper .container .user-layout-lang .select-lang-trigger[data-v-7ae30672]{cursor:pointer;padding:12px;margin-right:24px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:18px;vertical-align:middle}#userLayout.user-layout-wrapper .container .user-layout-content[data-v-7ae30672]{padding:32px 0 24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:calc(100vh - 40px);position:relative;z-index:1}#userLayout.user-layout-wrapper .container .user-layout-content .top[data-v-7ae30672]{text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .top .header[data-v-7ae30672]{height:56px;line-height:56px}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .badge[data-v-7ae30672]{position:absolute;display:inline-block;line-height:1;vertical-align:middle;margin-left:-12px;margin-top:-10px;opacity:.8}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:342px;max-width:42vw;height:auto;vertical-align:middle;margin-right:0;border-style:none}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .title[data-v-7ae30672]{font-size:33px;color:rgba(0,0,0,.85);font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:600;position:relative;top:2px}#userLayout.user-layout-wrapper .container .user-layout-content .top .desc[data-v-7ae30672]{font-size:14px;color:rgba(0,0,0,.45);margin-top:12px;margin-bottom:40px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{min-width:320px;width:480px;margin:0 auto}#userLayout.user-layout-wrapper .container .user-layout-content .main-content[data-v-7ae30672]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer[data-v-7ae30672]{width:100%;padding:0 16px;margin-top:auto;margin-bottom:16px;text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links[data-v-7ae30672]{margin-bottom:8px;font-size:14px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]{color:rgba(0,0,0,.45);-webkit-transition:all .3s;transition:all .3s}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]:not(:last-child){margin-right:40px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .copyright[data-v-7ae30672]{color:rgba(0,0,0,.45);font-size:14px}#userLayout.user-layout-wrapper .container a[data-v-7ae30672]{text-decoration:none}@media (max-width:576px){#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:208px;max-width:70vw;margin-top:8px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{width:92vw}}@-webkit-keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@-webkit-keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}@keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}.ant-pro-drop-down .action{margin-right:8px}.ant-pro-drop-down .ant-dropdown-menu-item{min-width:160px}.ant-layout.dark .ant-dropdown-menu,.ant-layout.realdark .ant-dropdown-menu,.ant-pro-layout.dark .ant-dropdown-menu,.ant-pro-layout.realdark .ant-dropdown-menu,body.dark .ant-dropdown-menu,body.realdark .ant-dropdown-menu{background-color:#1f1f1f;border:1px solid #303030;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.3);box-shadow:0 4px 12px rgba(0,0,0,.3)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,body.dark .ant-dropdown-menu .ant-dropdown-menu-item,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background-color:#262626;color:#1890ff}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background-color:#303030}.notice-icon-wrapper[data-v-7e99442e]{display:inline-block;vertical-align:top}.header-notice[data-v-7e99442e]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;-webkit-transition:all .3s;transition:all .3s;cursor:pointer;padding:0 12px;vertical-align:top}.header-notice[data-v-7e99442e]:hover{background:rgba(0,0,0,.04)}.header-notice span[data-v-7e99442e]{vertical-align:initial}@media (max-width:768px){.header-notice[data-v-7e99442e]{padding:0 8px}}.notice-header[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0}.notice-header .notice-title[data-v-7e99442e]{font-weight:500;font-size:14px}.notice-header .notice-action[data-v-7e99442e]{font-size:12px;color:#1890ff;cursor:pointer}.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}.notice-list[data-v-7e99442e]{max-height:400px;overflow-y:auto}.notice-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px 16px;cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.notice-item[data-v-7e99442e]:hover{background:#f5f5f5}.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}.notice-item .notice-item-icon[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#f0f0f0;border-radius:50%;margin-right:12px;font-size:16px}.notice-item .notice-item-content[data-v-7e99442e]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.notice-item .notice-item-content .notice-item-title[data-v-7e99442e]{font-weight:500;font-size:13px;color:rgba(0,0,0,.85);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notice-item .notice-item-content .notice-item-desc[data-v-7e99442e]{font-size:12px;color:rgba(0,0,0,.45);line-height:1.5;margin-bottom:4px}.notice-item .notice-item-content .notice-item-time[data-v-7e99442e]{font-size:11px;color:rgba(0,0,0,.25)}.notice-empty[data-v-7e99442e]{padding:48px 0}.notice-footer[data-v-7e99442e]{text-align:center;padding:12px;border-top:1px solid #f0f0f0}.notice-footer a[data-v-7e99442e]{color:#1890ff;cursor:pointer}.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}.notice-detail .notice-detail-meta[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.notice-detail .notice-detail-meta .notice-detail-type[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.notice-detail .notice-detail-meta .notice-detail-type .type-label[data-v-7e99442e]{font-size:14px;color:rgba(0,0,0,.65)}.notice-detail .notice-detail-meta .notice-detail-time[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:13px;color:rgba(0,0,0,.45)}.notice-detail .notice-detail-content .message-body[data-v-7e99442e]{font-size:14px;line-height:1.8;color:rgba(0,0,0,.85);max-height:300px;overflow-y:auto;padding:8px 0}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{margin:12px 0 8px;font-weight:600}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e]{font-size:18px}.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e]{font-size:16px}.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{font-size:14px}.notice-detail .notice-detail-content .message-body li[data-v-7e99442e]{margin-left:20px;list-style:disc}.notice-detail .notice-detail-content .message-body strong[data-v-7e99442e]{font-weight:600}.notice-detail .notice-detail-content.html-report .message-body[data-v-7e99442e]{max-height:70vh;padding:0;margin:-16px -24px;overflow-y:auto}.notice-detail .notice-detail-extra .extra-title[data-v-7e99442e]{font-weight:500;font-size:14px;margin-bottom:12px;color:rgba(0,0,0,.85)}.notice-detail .notice-detail-extra .extra-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:8px;font-size:13px}.notice-detail .notice-detail-extra .extra-item .label[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;color:rgba(0,0,0,.45);margin-right:8px}.notice-detail .notice-detail-extra .extra-item .value[data-v-7e99442e]{color:rgba(0,0,0,.85);word-break:break-word}.notice-detail .notice-detail-extra .extra-item.decision[data-v-7e99442e]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.notice-detail .notice-detail-extra .extra-item.decision .confidence[data-v-7e99442e]{margin-left:8px;color:rgba(0,0,0,.45);font-size:12px}.notice-detail .notice-detail-actions[data-v-7e99442e]{margin-top:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.header-notice-wrapper{top:50px!important}.header-notice-wrapper .ant-popover-inner-content{padding:0}.notice-detail-modal .ant-modal-header{border-bottom:1px solid #f0f0f0}.notice-detail-modal .ant-modal-body{padding:16px 24px}.notice-detail-modal.html-report-modal .ant-modal-body{padding:0}.ant-layout.dark .header-notice-wrapper .ant-popover-inner,.ant-layout.realdark .header-notice-wrapper .ant-popover-inner,body.dark .header-notice-wrapper .ant-popover-inner,body.realdark .header-notice-wrapper .ant-popover-inner{background:#1f1f1f}.ant-layout.dark .header-notice-wrapper .ant-popover-arrow,.ant-layout.realdark .header-notice-wrapper .ant-popover-arrow,body.dark .header-notice-wrapper .ant-popover-arrow,body.realdark .header-notice-wrapper .ant-popover-arrow{border-color:#1f1f1f}.ant-layout.dark .header-notice-wrapper .notice-header,.ant-layout.realdark .header-notice-wrapper .notice-header,body.dark .header-notice-wrapper .notice-header,body.realdark .header-notice-wrapper .notice-header{border-color:#303030}.ant-layout.dark .header-notice-wrapper .notice-header .notice-title,.ant-layout.realdark .header-notice-wrapper .notice-header .notice-title,body.dark .header-notice-wrapper .notice-header .notice-title,body.realdark .header-notice-wrapper .notice-header .notice-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item:hover,.ant-layout.realdark .header-notice-wrapper .notice-item:hover,body.dark .header-notice-wrapper .notice-item:hover,body.realdark .header-notice-wrapper .notice-item:hover{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item.unread,.ant-layout.realdark .header-notice-wrapper .notice-item.unread,body.dark .header-notice-wrapper .notice-item.unread,body.realdark .header-notice-wrapper .notice-item.unread{background:rgba(24,144,255,.15)}.ant-layout.dark .header-notice-wrapper .notice-item.unread:hover,.ant-layout.realdark .header-notice-wrapper .notice-item.unread:hover,body.dark .header-notice-wrapper .notice-item.unread:hover,body.realdark .header-notice-wrapper .notice-item.unread:hover{background:rgba(24,144,255,.25)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-icon,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-icon,body.dark .header-notice-wrapper .notice-item .notice-item-icon,body.realdark .header-notice-wrapper .notice-item .notice-item-icon{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc{color:hsla(0,0%,100%,.45)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time{color:hsla(0,0%,100%,.25)}.ant-layout.dark .header-notice-wrapper .notice-footer,.ant-layout.realdark .header-notice-wrapper .notice-footer,body.dark .header-notice-wrapper .notice-footer,body.realdark .header-notice-wrapper .notice-footer{border-color:#303030}.ant-layout.dark .header-notice-wrapper .ant-empty-description,.ant-layout.realdark .header-notice-wrapper .ant-empty-description,body.dark .header-notice-wrapper .ant-empty-description,body.realdark .header-notice-wrapper .ant-empty-description{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-modal-content,.ant-layout.realdark .notice-detail-modal .ant-modal-content,body.dark .notice-detail-modal .ant-modal-content,body.realdark .notice-detail-modal .ant-modal-content{background:#1f1f1f}.ant-layout.dark .notice-detail-modal .ant-modal-header,.ant-layout.realdark .notice-detail-modal .ant-modal-header,body.dark .notice-detail-modal .ant-modal-header,body.realdark .notice-detail-modal .ant-modal-header{background:#1f1f1f;border-color:#303030}.ant-layout.dark .notice-detail-modal .ant-modal-header .ant-modal-title,.ant-layout.realdark .notice-detail-modal .ant-modal-header .ant-modal-title,body.dark .notice-detail-modal .ant-modal-header .ant-modal-title,body.realdark .notice-detail-modal .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .ant-modal-close-x,.ant-layout.realdark .notice-detail-modal .ant-modal-close-x,body.dark .notice-detail-modal .ant-modal-close-x,body.realdark .notice-detail-modal .ant-modal-close-x{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-divider,.ant-layout.realdark .notice-detail-modal .ant-divider,body.dark .notice-detail-modal .ant-divider,body.realdark .notice-detail-modal .ant-divider{border-color:#303030}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label{color:hsla(0,0%,100%,.65)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence{color:hsla(0,0%,100%,.45)}.ant-pro-global-header-index-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0}.ant-pro-global-header-index-right .ant-pro-global-header-index-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;padding:0 12px;color:rgba(0,0,0,.65);-webkit-transition:all .3s;transition:all .3s;cursor:pointer;vertical-align:top}.ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff;background:rgba(0,0,0,.04)}@media (max-width:768px){.ant-pro-global-header-index-right .ant-pro-account-avatar,.ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-global-header-index-right .ant-pro-global-header-index-action{padding:0 8px}}.ant-layout.dark .ant-pro-global-header-index-right,.ant-layout.dark .ant-pro-global-header-index-right *,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-layout.realdark .ant-pro-global-header-index-right,.ant-layout.realdark .ant-pro-global-header-index-right *,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.dark .ant-pro-global-header-index-right,.ant-pro-layout.dark .ant-pro-global-header-index-right *,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.realdark .ant-pro-global-header-index-right,.ant-pro-layout.realdark .ant-pro-global-header-index-right *,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.dark .ant-pro-global-header-index-right,body.dark .ant-pro-global-header-index-right *,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.realdark .ant-pro-global-header-index-right,body.realdark .ant-pro-global-header-index-right *,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}.setting-drawer-index-item[data-v-e773bc98]{margin-bottom:24px}.setting-drawer-index-item .setting-drawer-index-title[data-v-e773bc98]{font-size:14px;color:rgba(0,0,0,.85);line-height:22px;margin-bottom:12px}[data-v-940007f2] .ant-drawer-handle,[data-v-940007f2] .setting-drawer-index-handle{display:none!important}.setting-drawer-index-content .setting-drawer-index-blockChecbox[data-v-940007f2]{display:-webkit-box;display:-ms-flexbox;display:flex}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item[data-v-940007f2]{margin-right:16px;position:relative;border-radius:4px;cursor:pointer}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item img[data-v-940007f2]{width:48px}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{position:absolute;top:0;right:0;width:100%;padding-top:15px;padding-left:24px;height:100%;color:#1890ff;font-size:14px;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock[data-v-940007f2]{width:20px;height:20px;border-radius:2px;float:left;cursor:pointer;margin-right:8px;padding-left:0;padding-right:0;text-align:center;color:#fff;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock i[data-v-940007f2]{font-size:14px}:global .ant-layout .ant-layout-footer,:global .ant-layout-footer,:global .ant-pro-layout .ant-layout-footer,:global footer.ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important;min-height:0!important;visibility:hidden!important;overflow:hidden!important}:global .ant-layout.dark .ant-layout-header,:global .ant-layout.realdark .ant-layout-header,:global .ant-pro-layout.dark .ant-layout-header,:global .ant-pro-layout.realdark .ant-layout-header,:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05),0 1px 4px rgba(0,0,0,.2)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05),0 1px 4px rgba(0,0,0,.2)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header *,:global .ant-layout.realdark .ant-layout-header *,:global .ant-pro-layout.dark .ant-layout-header *,:global .ant-pro-layout.realdark .ant-layout-header *,:global body.dark .ant-layout-header *,:global body.realdark .ant-layout-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon,:global .ant-layout.realdark .ant-layout-header .anticon,:global .ant-pro-layout.dark .ant-layout-header .anticon,:global .ant-pro-layout.realdark .ant-layout-header .anticon,:global body.dark .ant-layout-header .anticon,:global body.realdark .ant-layout-header .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon:hover,:global .ant-layout.realdark .ant-layout-header .anticon:hover,:global .ant-pro-layout.dark .ant-layout-header .anticon:hover,:global .ant-pro-layout.realdark .ant-layout-header .anticon:hover,:global body.dark .ant-layout-header .anticon:hover,:global body.realdark .ant-layout-header .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-layout.dark .ant-layout-header a,:global .ant-layout.realdark .ant-layout-header a,:global .ant-pro-layout.dark .ant-layout-header a,:global .ant-pro-layout.realdark .ant-layout-header a,:global body.dark .ant-layout-header a,:global body.realdark .ant-layout-header a{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header a:hover,:global .ant-layout.realdark .ant-layout-header a:hover,:global .ant-pro-layout.dark .ant-layout-header a:hover,:global .ant-pro-layout.realdark .ant-layout-header a:hover,:global body.dark .ant-layout-header a:hover,:global body.realdark .ant-layout-header a:hover{color:#1890ff!important}:global .ant-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global body.dark .ant-layout-header .ant-tooltip-open .anticon,:global body.realdark .ant-layout-header .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-header,:global .ant-pro-layout.light .ant-layout-header,:global body.light .ant-layout-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08)!important;box-shadow:0 1px 4px rgba(0,21,41,.08)!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-layout-content,:global .ant-layout.realdark .ant-layout-content,:global .ant-pro-layout.dark .ant-layout-content,:global .ant-pro-layout.realdark .ant-layout-content,:global body.dark .ant-layout-content,:global body.realdark .ant-layout-content{background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-content,:global .ant-pro-layout.light .ant-layout-content,:global body.light .ant-layout-content{background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-pro-global-header,:global .ant-layout.realdark .ant-pro-global-header,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.dark .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-pro-global-header,:global body.dark .ant-layout-header .ant-pro-global-header,:global body.dark .ant-pro-global-header,:global body.realdark .ant-layout-header .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header *,:global .ant-layout.realdark .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-pro-global-header *,:global body.dark .ant-layout-header .ant-pro-global-header *,:global body.dark .ant-pro-global-header *,:global body.realdark .ant-layout-header .ant-pro-global-header *,:global body.realdark .ant-pro-global-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo h1{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo img{opacity:.9}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-pro-global-header-content .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar span{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger,:global .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,:global .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,:global .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}:global a{color:hsla(0,0%,100%,.85)!important}:global a:hover{color:#1890ff!important}:global .anticon{color:hsla(0,0%,100%,.85)!important}:global .anticon:hover{color:#1890ff!important}:global .ant-layout.light .ant-pro-global-header,:global .ant-pro-layout.light .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.light .ant-pro-global-header,:global body.light .ant-layout-header .ant-pro-global-header,:global body.light .ant-pro-global-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout),:global(.ant-pro-layout).realdark :global(.ant-layout){background-color:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-layout-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header){background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header){background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header) *,:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header) *{color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-content),:global(.ant-pro-layout).realdark :global(.ant-layout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-pro-basicLayout-content),:global(.ant-pro-layout).realdark :global(.ant-pro-basicLayout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider),:global(.ant-pro-layout).dark :global(.ant-pro-sider),:global(.ant-pro-layout).dark :global(.ant-pro-sider-menu-sider),:global(.ant-pro-layout).realdark :global(.ant-layout-sider),:global(.ant-pro-layout).realdark :global(.ant-pro-sider),:global(.ant-pro-layout).realdark :global(.ant-pro-sider-menu-sider){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).dark :global(.ant-pro-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).dark :global(.ant-pro-sider-menu-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-layout-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-pro-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-pro-sider-menu-sider) :global(.ant-layout-sider-children){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-inline.ant-menu-sub),:global(.ant-pro-layout).dark :global(.ant-menu-dark),:global(.ant-pro-layout).dark :global(.ant-menu.ant-menu-dark),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-inline.ant-menu-sub),:global(.ant-pro-layout).realdark :global(.ant-menu-dark),:global(.ant-pro-layout).realdark :global(.ant-menu.ant-menu-dark){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-sub),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-sub){background:#111!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item-selected),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item-selected){background:rgba(24,144,255,.25)!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item:hover),:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-submenu-title:hover),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item:hover),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-submenu-title:hover){background:hsla(0,0%,100%,.06)!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider-trigger),:global(.ant-pro-layout).realdark :global(.ant-layout-sider-trigger){background:#111!important;border-top:1px solid #1c1c1c;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)}:global(.ant-pro-layout).light :global(.ant-layout){background-color:#f0f2f5!important}:global(.ant-pro-layout).light :global(.ant-layout-header){background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-layout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-pro-basicLayout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}.ant-pro-global-header-index-right{margin-right:8px}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action{color:#030303}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action:hover{background:#1890ff}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar span,.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down:hover{color:#1890ff;background:hsla(0,0%,100%,.08)}.ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{margin:20px 0;margin-right:8px;color:#1890ff;vertical-align:top;background:rgb(255 255 3%)}.ant-pro-global-header-index-right .menu .anticon{margin-right:8px}.ant-pro-global-header-index-right .menu .ant-dropdown-menu-item{min-width:100px}:global .ant-pro-layout.dark .ant-dropdown-menu,:global .ant-pro-layout.realdark .ant-dropdown-menu{background:#1c1c1c!important;border:1px solid #2a2a2a!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4)!important;box-shadow:0 4px 12px rgba(0,0,0,.4)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background:#252525!important;color:#1890ff!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background:#2a2a2a!important}:global body.dark .ant-layout-sider,:global body.dark .ant-layout-sider-dark,:global body.dark .ant-pro-sider-menu-sider,:global body.dark .ant-pro-sider-menu-sider.ant-layout-sider-dark,:global body.realdark .ant-layout-sider,:global body.realdark .ant-layout-sider-dark,:global body.realdark .ant-pro-sider-menu-sider,:global body.realdark .ant-pro-sider-menu-sider.ant-layout-sider-dark{background:#0a0a0a!important}:global body.dark .ant-layout-sider-children,:global body.realdark .ant-layout-sider-children{background:#0a0a0a!important}:global body.dark .ant-menu-dark,:global body.dark .ant-menu-dark .ant-menu-inline.ant-menu-sub,:global body.dark .ant-menu.ant-menu-dark,:global body.dark ul.ant-menu.ant-menu-dark.ant-menu-root,:global body.realdark .ant-menu-dark,:global body.realdark .ant-menu-dark .ant-menu-inline.ant-menu-sub,:global body.realdark .ant-menu.ant-menu-dark,:global body.realdark ul.ant-menu.ant-menu-dark.ant-menu-root{background:#0a0a0a!important}:global body.dark .ant-menu-dark .ant-menu-sub,:global body.dark .ant-menu.ant-menu-dark .ant-menu-sub,:global body.realdark .ant-menu-dark .ant-menu-sub,:global body.realdark .ant-menu.ant-menu-dark .ant-menu-sub{background:#111!important}:global body.dark .ant-menu-dark .ant-menu-item-selected,:global body.realdark .ant-menu-dark .ant-menu-item-selected{background:rgba(24,144,255,.25)!important}:global body.dark .ant-pro-sider-menu-logo,:global body.realdark .ant-pro-sider-menu-logo{background:#0a0a0a!important}:global body.dark .ant-layout-sider-trigger,:global body.realdark .ant-layout-sider-trigger{background:#111!important;border-top:1px solid #1c1c1c;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global body.dark .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#111!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global .ant-layout-sider-children .ant-menu.ant-menu-root,:global .ant-pro-sider .ant-menu.ant-menu-root,:global .ant-pro-sider-menu-sider .ant-menu{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Source Han Sans SC,Noto Sans SC,sans-serif!important;font-size:13px!important;font-weight:500!important;letter-spacing:.02em!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important}:global .ant-pro-sider .ant-menu-item-selected,:global .ant-pro-sider-menu-sider .ant-menu-item-selected .ant-menu-title-content,:global .ant-pro-sider-menu-sider .ant-menu-item-selected>a{font-weight:600!important}:global .ant-pro-sider-menu-logo h1{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,sans-serif!important;font-weight:600!important;letter-spacing:.03em!important;-webkit-font-smoothing:antialiased!important}@media (max-width:768px){:global .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-global-header-logo,:global .ant-pro-layout .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}.ant-pro-sider-menu-sider.light .ant-menu-light{height:60vh!important}.basic-layout-wrapper .ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important}.basic-layout-wrapper{position:relative}.basic-layout-wrapper .custom-menu-footer{position:fixed;bottom:0;left:0;z-index:100;width:256px;background:#111;border-top:1px solid #1c1c1c;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);max-width:256px;display:block;opacity:1}.basic-layout-wrapper .custom-menu-footer.collapsed{width:80px;max-width:80px}@media (max-width:768px){.basic-layout-wrapper .custom-menu-footer{z-index:1001}.basic-layout-wrapper .custom-menu-footer:not(.drawer-open){display:none!important;opacity:0}.basic-layout-wrapper .custom-menu-footer.drawer-animating{opacity:0;-webkit-transition:opacity .1s ease-out;transition:opacity .1s ease-out}.basic-layout-wrapper .custom-menu-footer.drawer-open:not(.drawer-animating){opacity:1;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s;transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s}}.basic-layout-wrapper .custom-menu-footer .menu-footer-content{padding:12px 16px;font-size:11px;color:inherit;max-height:none;overflow:visible;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar{width:4px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section{margin-bottom:12px;text-align:center}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section:last-child{margin-bottom:0}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-title{font-size:11px;font-weight:500;margin-bottom:6px;opacity:.8;color:inherit}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:4px;-ms-flex-wrap:wrap;flex-wrap:wrap;font-size:10px;opacity:.7}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a{cursor:pointer;color:inherit;text-decoration:underline;-webkit-transition:opacity .2s;transition:opacity .2s}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a:hover{opacity:1}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links .separator{opacity:.5;margin:0 2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;margin-top:6px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon{width:15px;height:15px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;cursor:pointer;opacity:.7;-webkit-transition:all .2s;transition:all .2s;background:hsla(0,0%,100%,.05);text-decoration:none;overflow:hidden}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon:hover{opacity:1;background:hsla(0,0%,100%,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-svg{width:15x;height:15px;color:currentColor}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-logo{width:15px;height:15px;-o-object-fit:contain;object-fit:contain}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-text{font-size:10px;font-weight:700}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.copyright{margin-top:12px;padding-top:12px;border-top:1px solid #2a2a2a;opacity:.6;font-size:10px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.version{margin-top:4px;font-size:9px;opacity:.4;text-align:center;letter-spacing:1px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed{text-align:center;padding:16px;font-size:12px;opacity:.6;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed:hover{opacity:1}.basic-layout-wrapper ::v-deep .ant-pro-layout .ant-pro-sider-collapsed~.custom-menu-footer,.basic-layout-wrapper ::v-deep .ant-pro-layout.ant-pro-sider-collapsed~.custom-menu-footer{width:80px}.basic-layout-wrapper .ant-layout-sider-children{padding-bottom:calc(var(--menu-footer-height, 220px) + 12px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar{width:6px}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:3px}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children,body.dark .basic-layout-wrapper .ant-layout-sider-children,body.realdark .basic-layout-wrapper .ant-layout-sider-children{scrollbar-color:hsla(0,0%,100%,.25) transparent}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.25)}.basic-layout-wrapper .ant-pro-sider{height:100vh;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider,.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider .ant-menu,.basic-layout-wrapper .ant-pro-sider .ant-menu-root,.basic-layout-wrapper .ant-pro-sider .ant-pro-sider-menu{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;max-height:calc(100vh - var(--menu-footer-height, 220px) - 24px);overflow-y:auto!important;overflow-x:hidden;-webkit-overflow-scrolling:touch}.basic-layout-wrapper.dark .ant-layout-header,.basic-layout-wrapper.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger:hover{background:hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action,.basic-layout-wrapper.realdark .ant-pro-global-header .action{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .action:hover{background:hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-layout,.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-layout,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content{background-color:#141414!important}@media (max-width:768px){.ant-drawer.ant-drawer-open .ant-drawer-content-wrapper{overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-content,.ant-drawer.ant-drawer-open .ant-drawer-wrapper-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-body{overflow-y:auto!important;overflow-x:hidden!important;padding-bottom:var(--footer-height,280px)!important;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent;min-height:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar{width:4px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-track{background:transparent}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.3)}}.ant-pro-multi-tab{margin:-23px -24px 24px;background:#fff}.topmenu .ant-pro-multi-tab-wrapper{max-width:1200px;margin:0 auto}.topmenu.content-width-Fluid .ant-pro-multi-tab-wrapper{max-width:100%;margin:0 auto}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;color:rgba(0,0,0,.65);font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-variant:tabular-nums;line-height:1.5;background-color:#fff;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;-webkit-transition:color .3s;transition:color .3s;-webkit-text-decoration-skip:objects}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{text-decoration:none;outline:0}a[disabled]{color:rgba(0,0,0,.25);cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{color:#fff;background:#1890ff}::selection{color:#fff;background:#1890ff}.clearfix{zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}.anticon{display:inline-block;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon[tabindex]{cursor:pointer}.anticon-spin,.anticon-spin:before{display:inline-block;-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.fade-appear.fade-appear-active,.fade-enter.fade-enter-active{-webkit-animation-name:antFadeIn;animation-name:antFadeIn;-webkit-animation-play-state:running;animation-play-state:running}.fade-leave.fade-leave-active{-webkit-animation-name:antFadeOut;animation-name:antFadeOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.fade-appear,.fade-enter{opacity:0}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antFadeOut{0%{opacity:1}to{opacity:0}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.move-up-appear,.move-up-enter,.move-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-up-appear.move-up-appear-active,.move-up-enter.move-up-enter-active{-webkit-animation-name:antMoveUpIn;animation-name:antMoveUpIn;-webkit-animation-play-state:running;animation-play-state:running}.move-up-leave.move-up-leave-active{-webkit-animation-name:antMoveUpOut;animation-name:antMoveUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-up-appear,.move-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-up-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-down-appear,.move-down-enter,.move-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-down-appear.move-down-appear-active,.move-down-enter.move-down-enter-active{-webkit-animation-name:antMoveDownIn;animation-name:antMoveDownIn;-webkit-animation-play-state:running;animation-play-state:running}.move-down-leave.move-down-leave-active{-webkit-animation-name:antMoveDownOut;animation-name:antMoveDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-down-appear,.move-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-down-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-left-appear,.move-left-enter,.move-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-left-appear.move-left-appear-active,.move-left-enter.move-left-enter-active{-webkit-animation-name:antMoveLeftIn;animation-name:antMoveLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.move-left-leave.move-left-leave-active{-webkit-animation-name:antMoveLeftOut;animation-name:antMoveLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-left-appear,.move-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-left-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-right-appear,.move-right-enter,.move-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-right-appear.move-right-appear-active,.move-right-enter.move-right-enter-active{-webkit-animation-name:antMoveRightIn;animation-name:antMoveRightIn;-webkit-animation-play-state:running;animation-play-state:running}.move-right-leave.move-right-leave-active{-webkit-animation-name:antMoveRightOut;animation-name:antMoveRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-right-appear,.move-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-right-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@-webkit-keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}[ant-click-animating-without-extra-node=true],[ant-click-animating=true]{position:relative}html{--antd-wave-shadow-color:#1890ff}.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:inherit;-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #1890ff;-webkit-box-shadow:0 0 0 0 var(--antd-wave-shadow-color);box-shadow:0 0 0 0 var(--antd-wave-shadow-color);opacity:.2;-webkit-animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;content:"";pointer-events:none}@-webkit-keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@-webkit-keyframes fadeEffect{to{opacity:0}}@keyframes fadeEffect{to{opacity:0}}.slide-up-appear,.slide-up-enter,.slide-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-up-appear.slide-up-appear-active,.slide-up-enter.slide-up-enter-active{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-up-leave.slide-up-leave-active{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-up-appear,.slide-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-up-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-down-appear,.slide-down-enter,.slide-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-down-appear.slide-down-appear-active,.slide-down-enter.slide-down-enter-active{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-down-leave.slide-down-leave-active{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-down-appear,.slide-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-down-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-left-appear,.slide-left-enter,.slide-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-left-appear.slide-left-appear-active,.slide-left-enter.slide-left-enter-active{-webkit-animation-name:antSlideLeftIn;animation-name:antSlideLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-left-leave.slide-left-leave-active{-webkit-animation-name:antSlideLeftOut;animation-name:antSlideLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-left-appear,.slide-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-left-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-right-appear,.slide-right-enter,.slide-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-right-appear.slide-right-appear-active,.slide-right-enter.slide-right-enter-active{-webkit-animation-name:antSlideRightIn;animation-name:antSlideRightIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-right-leave.slide-right-leave-active{-webkit-animation-name:antSlideRightOut;animation-name:antSlideRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-right-appear,.slide-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-right-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@-webkit-keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@-webkit-keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@-webkit-keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@-webkit-keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}@keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}.swing-appear,.swing-enter{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.swing-appear.swing-appear-active,.swing-enter.swing-enter-active{-webkit-animation-name:antSwingIn;animation-name:antSwingIn;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}@keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}.zoom-appear,.zoom-enter,.zoom-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-appear.zoom-appear-active,.zoom-enter.zoom-enter-active{-webkit-animation-name:antZoomIn;animation-name:antZoomIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-leave.zoom-leave-active{-webkit-animation-name:antZoomOut;animation-name:antZoomOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-appear,.zoom-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-appear,.zoom-big-enter,.zoom-big-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-appear.zoom-big-appear-active,.zoom-big-enter.zoom-big-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-leave.zoom-big-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-appear,.zoom-big-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-fast-appear,.zoom-big-fast-enter,.zoom-big-fast-leave{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-fast-appear.zoom-big-fast-appear-active,.zoom-big-fast-enter.zoom-big-fast-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-fast-leave.zoom-big-fast-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-fast-appear,.zoom-big-fast-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-fast-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-up-appear,.zoom-up-enter,.zoom-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-up-appear.zoom-up-appear-active,.zoom-up-enter.zoom-up-enter-active{-webkit-animation-name:antZoomUpIn;animation-name:antZoomUpIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-up-leave.zoom-up-leave-active{-webkit-animation-name:antZoomUpOut;animation-name:antZoomUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-up-appear,.zoom-up-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-up-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-down-appear,.zoom-down-enter,.zoom-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-down-appear.zoom-down-appear-active,.zoom-down-enter.zoom-down-enter-active{-webkit-animation-name:antZoomDownIn;animation-name:antZoomDownIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-down-leave.zoom-down-leave-active{-webkit-animation-name:antZoomDownOut;animation-name:antZoomDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-down-appear,.zoom-down-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-down-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-left-appear,.zoom-left-enter,.zoom-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-left-appear.zoom-left-appear-active,.zoom-left-enter.zoom-left-enter-active{-webkit-animation-name:antZoomLeftIn;animation-name:antZoomLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-left-leave.zoom-left-leave-active{-webkit-animation-name:antZoomLeftOut;animation-name:antZoomLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-left-appear,.zoom-left-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-left-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-right-appear,.zoom-right-enter,.zoom-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-right-appear.zoom-right-appear-active,.zoom-right-enter.zoom-right-enter-active{-webkit-animation-name:antZoomRightIn;animation-name:antZoomRightIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-right-leave.zoom-right-leave-active{-webkit-animation-name:antZoomRightOut;animation-name:antZoomRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-right-appear,.zoom-right-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-right-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@-webkit-keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@-webkit-keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@-webkit-keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@-webkit-keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@-webkit-keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@-webkit-keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@-webkit-keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@-webkit-keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@-webkit-keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@-webkit-keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}@keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}.ant-motion-collapse-legacy{overflow:hidden}.ant-motion-collapse,.ant-motion-collapse-legacy-active{-webkit-transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important;transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important}.ant-motion-collapse{overflow:hidden}#nprogress{pointer-events:none}#nprogress .bar{position:fixed;top:0;left:0;z-index:1031;width:100%;height:2px;background:#1890ff}#nprogress .peg{position:absolute;right:0;display:block;width:100px;height:100%;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px);-webkit-box-shadow:0 0 10px #1890ff,0 0 5px #1890ff;box-shadow:0 0 10px #1890ff,0 0 5px #1890ff}#nprogress .spinner{position:fixed;top:15px;right:15px;z-index:1031;display:block}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#1890ff;border-left-color:#1890ff;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{position:relative;overflow:hidden}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#app,#root,body,html{height:100%}.colorWeak{-webkit-filter:invert(80%);filter:invert(80%)}.ant-layout.layout-basic{height:100vh;min-height:100vh}canvas{display:block}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}ol,ul{list-style:none}.table-alert{margin-bottom:16px}.table-operator{margin-bottom:18px}.table-operator button{margin-right:8px}.table-page-search-wrapper .ant-form-inline .ant-form-item{display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:0;margin-bottom:24px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control-wrapper{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:inline-block;vertical-align:middle}.table-page-search-wrapper .ant-form-inline .ant-form-item>.ant-form-item-label{width:auto;padding-right:8px;line-height:32px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control{height:32px;line-height:32px}.table-page-search-wrapper .table-page-search-submitButtons{display:block;margin-bottom:24px;white-space:nowrap}@media (max-width:480px){.ant-table{width:100%;overflow-x:auto}.ant-table-tbody>tr>td,.ant-table-tbody>tr>th,.ant-table-thead>tr>td,.ant-table-thead>tr>th{white-space:pre}.ant-table-tbody>tr>td>span,.ant-table-tbody>tr>th>span,.ant-table-thead>tr>td>span,.ant-table-thead>tr>th>span{display:block}}#webpack-dev-server-client-overlay,#webpack-hot-middleware-client-overlay,.webpack-dev-server-client-overlay{display:none!important;pointer-events:none!important;visibility:hidden!important}@media (max-width:768px){.ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}body.dark .ant-layout-sider,body.dark .ant-layout-sider-children,body.dark .ant-layout-sider-dark,body.dark .ant-menu-dark,body.dark .ant-menu-dark .ant-menu-inline.ant-menu-sub,body.dark .ant-menu.ant-menu-dark,body.dark .ant-pro-sider-menu-logo,body.dark .ant-pro-sider-menu-sider,body.dark .ant-pro-sider-menu-sider.ant-layout-sider-dark,body.dark aside.ant-layout-sider.ant-layout-sider-dark,body.dark ul.ant-menu.ant-menu-dark.ant-menu-root.ant-menu-inline,body.realdark .ant-layout-sider,body.realdark .ant-layout-sider-children,body.realdark .ant-layout-sider-dark,body.realdark .ant-menu-dark,body.realdark .ant-menu-dark .ant-menu-inline.ant-menu-sub,body.realdark .ant-menu.ant-menu-dark,body.realdark .ant-pro-sider-menu-logo,body.realdark .ant-pro-sider-menu-sider,body.realdark .ant-pro-sider-menu-sider.ant-layout-sider-dark,body.realdark aside.ant-layout-sider.ant-layout-sider-dark,body.realdark ul.ant-menu.ant-menu-dark.ant-menu-root.ant-menu-inline{background:#0a0a0a!important}body.dark .ant-menu-dark .ant-menu-sub,body.dark .ant-menu.ant-menu-dark .ant-menu-sub,body.realdark .ant-menu-dark .ant-menu-sub,body.realdark .ant-menu.ant-menu-dark .ant-menu-sub{background:#111!important}body.dark .ant-layout-sider-trigger,body.realdark .ant-layout-sider-trigger{border-top:1px solid #1c1c1c}body.dark .ant-layout-header,body.dark .ant-layout-sider-trigger,body.realdark .ant-layout-header,body.realdark .ant-layout-sider-trigger{background:#111!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}body.dark .ant-layout-header,body.realdark .ant-layout-header{border-bottom:1px solid #1c1c1c!important}body.dark .ant-pro-global-header,body.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}body.dark .ant-layout,body.realdark .ant-layout{background:#0a0a0a!important}body.dark .ant-layout-content,body.dark .ant-pro-basicLayout-content,body.realdark .ant-layout-content,body.realdark .ant-pro-basicLayout-content{background:#141414!important}body.dark .ant-card,body.realdark .ant-card{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)}body.dark .ant-card .ant-card-head,body.realdark .ant-card .ant-card-head{background:#1c1c1c!important;border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-card .ant-card-body,body.realdark .ant-card .ant-card-body{color:hsla(0,0%,100%,.85)}body.dark .ant-table,body.realdark .ant-table{background:#1c1c1c!important;color:hsla(0,0%,100%,.85)}body.dark .ant-table .ant-table-thead>tr>th,body.realdark .ant-table .ant-table-thead>tr>th{background:#141414!important;border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-table .ant-table-tbody>tr>td,body.realdark .ant-table .ant-table-tbody>tr>td{border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)}body.dark .ant-table .ant-table-tbody>tr:hover>td,body.realdark .ant-table .ant-table-tbody>tr:hover>td{background:#252525!important}body.dark .ant-table .ant-table-placeholder,body.realdark .ant-table .ant-table-placeholder{background:#1c1c1c!important;color:#666!important}body.dark .ant-pagination-item,body.realdark .ant-pagination-item{background:#1c1c1c!important;border-color:#2a2a2a!important}body.dark .ant-pagination-item a,body.realdark .ant-pagination-item a{color:hsla(0,0%,100%,.85)!important}body.dark .ant-pagination-item-active,body.realdark .ant-pagination-item-active{border-color:#1890ff!important}body.dark .ant-input,body.dark .ant-input-number,body.dark .ant-pagination-next .ant-pagination-item-link,body.dark .ant-pagination-prev .ant-pagination-item-link,body.dark .ant-select-selection,body.realdark .ant-input,body.realdark .ant-input-number,body.realdark .ant-pagination-next .ant-pagination-item-link,body.realdark .ant-pagination-prev .ant-pagination-item-link,body.realdark .ant-select-selection{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-input::-webkit-input-placeholder,body.realdark .ant-input::-webkit-input-placeholder{color:#555!important}body.dark .ant-input::-moz-placeholder,body.realdark .ant-input::-moz-placeholder{color:#555!important}body.dark .ant-input:-ms-input-placeholder,body.realdark .ant-input:-ms-input-placeholder{color:#555!important}body.dark .ant-input::-ms-input-placeholder,body.realdark .ant-input::-ms-input-placeholder{color:#555!important}body.dark .ant-input::placeholder,body.realdark .ant-input::placeholder{color:#555!important}body.dark .ant-form-item-label>label,body.realdark .ant-form-item-label>label{color:hsla(0,0%,100%,.85)!important}body.dark .ant-input-clear-icon,body.dark .ant-input-clear-icon .anticon,body.dark .ant-input-number-handler-down-inner,body.dark .ant-input-number-handler-up-inner,body.dark .ant-input-number-handler-wrap,body.dark .ant-input-suffix .anticon,body.dark .ant-select-arrow,body.dark .ant-select-clear,body.realdark .ant-input-clear-icon,body.realdark .ant-input-clear-icon .anticon,body.realdark .ant-input-number-handler-down-inner,body.realdark .ant-input-number-handler-up-inner,body.realdark .ant-input-number-handler-wrap,body.realdark .ant-input-suffix .anticon,body.realdark .ant-select-arrow,body.realdark .ant-select-clear{color:#8b949e!important}body.dark .ant-input-clear-icon:hover,body.dark .ant-input-number-handler:hover .ant-input-number-handler-down-inner,body.dark .ant-input-number-handler:hover .ant-input-number-handler-up-inner,body.dark .ant-input-suffix .anticon:hover,body.dark .ant-select-arrow:hover,body.dark .ant-select-clear:hover,body.realdark .ant-input-clear-icon:hover,body.realdark .ant-input-number-handler:hover .ant-input-number-handler-down-inner,body.realdark .ant-input-number-handler:hover .ant-input-number-handler-up-inner,body.realdark .ant-input-suffix .anticon:hover,body.realdark .ant-select-arrow:hover,body.realdark .ant-select-clear:hover{color:#58a6ff!important}body.dark .ant-btn-default,body.realdark .ant-btn-default{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-btn-default:hover,body.realdark .ant-btn-default:hover{border-color:#1890ff!important;color:#1890ff!important}body.dark .ant-page-header,body.realdark .ant-page-header{background:transparent!important}body.dark .ant-breadcrumb-link,body.dark .ant-breadcrumb-separator,body.dark .ant-breadcrumb>span,body.realdark .ant-breadcrumb-link,body.realdark .ant-breadcrumb-separator,body.realdark .ant-breadcrumb>span{color:hsla(0,0%,100%,.45)!important}body.dark .ant-page-header-heading-title,body.realdark .ant-page-header-heading-title{color:hsla(0,0%,100%,.85)!important}body.dark .ant-tabs-bar,body.realdark .ant-tabs-bar{border-bottom-color:#2a2a2a!important}body.dark .ant-tabs-tab,body.realdark .ant-tabs-tab{color:#888!important}body.dark .ant-tabs-tab:hover,body.realdark .ant-tabs-tab:hover{color:#d4d4d4!important}body.dark .ant-tabs-tab-active,body.realdark .ant-tabs-tab-active{color:#1890ff!important}body.dark .ant-modal-content,body.realdark .ant-modal-content{background:#1c1c1c!important}body.dark .ant-modal-content .ant-modal-header,body.realdark .ant-modal-content .ant-modal-header{background:#1c1c1c!important;border-bottom-color:#2a2a2a!important}body.dark .ant-modal-content .ant-modal-body,body.dark .ant-modal-content .ant-modal-header .ant-modal-title,body.realdark .ant-modal-content .ant-modal-body,body.realdark .ant-modal-content .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)!important}body.dark .ant-modal-content .ant-modal-footer,body.realdark .ant-modal-content .ant-modal-footer{border-top-color:#2a2a2a!important;background:#1c1c1c!important}body.dark .ant-modal-content .ant-modal-close-x,body.realdark .ant-modal-content .ant-modal-close-x{color:#888!important}body.dark .ant-select-dropdown,body.realdark .ant-select-dropdown{background:#1c1c1c!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1)!important;color:#1890ff!important}.basic-layout-wrapper.dark .ant-layout-header,.basic-layout-wrapper.realdark .ant-layout-header,body.dark .basic-layout-wrapper .ant-layout-header,body.realdark .basic-layout-wrapper .ant-layout-header{background:#111!important;background-color:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header,body.dark .basic-layout-wrapper .ant-pro-global-header,body.realdark .basic-layout-wrapper .ant-pro-global-header{background:#111!important;background-color:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.dark .ant-pro-page-header-wrap,.basic-layout-wrapper.dark .ant-pro-page-header-wrap-children-content,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-pro-page-header-wrap,.basic-layout-wrapper.realdark .ant-pro-page-header-wrap-children-content,body.dark .basic-layout-wrapper .ant-pro-page-header-wrap,body.dark .basic-layout-wrapper .ant-pro-page-header-wrap-children-content,body.realdark .basic-layout-wrapper .ant-pro-page-header-wrap,body.realdark .basic-layout-wrapper .ant-pro-page-header-wrap-children-content{background:#141414!important;background-color:#141414!important}.basic-layout-wrapper.dark .custom-menu-footer,.basic-layout-wrapper.realdark .custom-menu-footer,body.dark .basic-layout-wrapper .custom-menu-footer,body.realdark .basic-layout-wrapper .custom-menu-footer{background:#111!important;background-color:#111!important;border-top:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;color:hsla(0,0%,100%,.88)!important}.basic-layout-wrapper.dark .custom-menu-footer .menu-footer-content .footer-section,.basic-layout-wrapper.realdark .custom-menu-footer .menu-footer-content .footer-section{padding:4px 2px!important;margin-bottom:6px!important;border-radius:0!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important;opacity:1!important}.basic-layout-wrapper.dark .custom-menu-footer .menu-footer-content .footer-section:hover,.basic-layout-wrapper.realdark .custom-menu-footer .menu-footer-content .footer-section:hover{background:transparent!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-title,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-title{color:hsla(0,0%,100%,.5)!important;opacity:1!important;text-transform:uppercase!important;letter-spacing:.5px!important;font-size:9px!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-links,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-links{opacity:1!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-links a,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-links a{color:hsla(0,0%,100%,.68)!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section.copyright,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section.copyright{color:hsla(0,0%,100%,.45)!important;border-top-color:#1c1c1c!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section.version,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section.version{color:hsla(0,0%,100%,.35)!important}.basic-layout-wrapper.dark .custom-menu-footer .social-icon,.basic-layout-wrapper.realdark .custom-menu-footer .social-icon{background:hsla(0,0%,100%,.08)!important;color:hsla(0,0%,100%,.75)!important}.basic-layout-wrapper.light .custom-menu-footer{background:#fff!important;background-color:#fff!important;border-top-color:#e8e8e8!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.85)!important}.basic-layout-wrapper.light .custom-menu-footer .footer-section .section-links{opacity:.75}body.dark .ant-modal-wrap [class*=billing],body.dark .ant-modal-wrap [class*=billing] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=billing] .ant-steps-item-title,body.dark .ant-modal-wrap [class*=checkout],body.dark .ant-modal-wrap [class*=payment],body.dark .ant-modal-wrap [class*=payment] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=payment] .ant-steps-item-title,body.dark .ant-modal-wrap [class*=recharge],body.dark .ant-modal-wrap [class*=usdt],body.dark .ant-modal-wrap [class*=usdt] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=usdt] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=billing],body.realdark .ant-modal-wrap [class*=billing] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=billing] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=checkout],body.realdark .ant-modal-wrap [class*=payment],body.realdark .ant-modal-wrap [class*=payment] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=payment] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=recharge],body.realdark .ant-modal-wrap [class*=usdt],body.realdark .ant-modal-wrap [class*=usdt] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=usdt] .ant-steps-item-title{color:#d4d4d4!important}body.dark .ant-modal-wrap [class*=billing] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=billing] .ant-statistic-content,body.dark .ant-modal-wrap [class*=payment] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=payment] .ant-statistic-content,body.dark .ant-modal-wrap [class*=usdt] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=usdt] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=billing] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=billing] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=payment] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=payment] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=usdt] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=usdt] .ant-statistic-content{color:#e5e5e5!important} \ No newline at end of file diff --git a/frontend/dist/css/theme-colors-ed7e9530.css b/frontend/dist/css/theme-colors-48205a9b.css similarity index 87% rename from frontend/dist/css/theme-colors-ed7e9530.css rename to frontend/dist/css/theme-colors-48205a9b.css index 9ed0181..79731fe 100644 --- a/frontend/dist/css/theme-colors-ed7e9530.css +++ b/frontend/dist/css/theme-colors-48205a9b.css @@ -44,6 +44,14 @@ body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.real .profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout{background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.12)),to(rgba(82,196,26,.08)));background:linear-gradient(90deg,rgba(24,144,255,.12),rgba(82,196,26,.08))} .polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff} .polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#1890ff} +.comment-list .comment-form .form-header .edit-label[data-v-48b21f80]{color:#1890ff} +.comment-list .comments .comment-item.is-mine[data-v-48b21f80]{background:rgba(24,144,255,.02)} +.dark .comment-list .comments .comment-item.is-mine[data-v-48b21f80],[data-theme=dark] .comment-list .comments .comment-item.is-mine[data-v-48b21f80],body.dark .comment-list .comments .comment-item.is-mine[data-v-48b21f80]{background:rgba(24,144,255,.05)} +.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff} +.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff} +.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff} +.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff} +.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff} .code-section .section-header .section-title[data-v-4fea1865]:before{background:#1890ff} .code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff} .code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff} @@ -54,44 +62,44 @@ body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.real .editor-footer[data-v-4fea1865] .ant-btn:not(.ant-btn-primary):hover{border-color:#40a9ff;color:#40a9ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)} .editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary{-webkit-box-shadow:0 2px 4px rgba(24,144,255,.3);box-shadow:0 2px 4px rgba(24,144,255,.3)} .editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary:hover{-webkit-box-shadow:0 4px 12px rgba(24,144,255,.4);box-shadow:0 4px 12px rgba(24,144,255,.4)} -.drawing-tool-btn[data-v-58f93984]:hover{color:#1890ff} -.drawing-tool-btn.active[data-v-58f93984]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff} -.indicator-btn[data-v-58f93984]:hover{color:#1890ff;border-color:#1890ff} -.indicator-btn.active[data-v-58f93984]{color:#1890ff;border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)} -.symbol-select[data-v-6bd239a6] .ant-select-selection:hover{border-color:#1890ff} -.symbol-select[data-v-6bd239a6] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)} -.timeframe-item[data-v-6bd239a6]:hover{color:#1890ff} -.timeframe-item.active[data-v-6bd239a6]{color:#1890ff} -.panel-header .realtime-toggle-btn[data-v-6bd239a6]:hover,.panel-header .theme-toggle-btn[data-v-6bd239a6]:hover{color:#1890ff} -.panel-header .realtime-toggle-btn.active[data-v-6bd239a6],.panel-header .theme-toggle-btn.active[data-v-6bd239a6]{color:#1890ff;background:#e6f7ff} -.indicator-card[data-v-6bd239a6]:hover{border-color:#1890ff} -.indicator-card.active[data-v-6bd239a6]{background:#e6f7ff;border-color:#1890ff} -.indicator-card.active .card-name[data-v-6bd239a6]{color:#1890ff} -.card-action[data-v-6bd239a6]:hover{color:#1890ff} -.action-icon.edit-icon[data-v-6bd239a6]{color:#1890ff} -.action-icon.edit-icon[data-v-6bd239a6]:hover{color:#40a9ff} -.action-icon[data-v-6bd239a6]:hover{color:#1890ff} -.action-icon.publish-icon[data-v-6bd239a6]{color:#1890ff} -.action-icon.publish-icon[data-v-6bd239a6]:hover{color:#40a9ff} -.action-icon.expiry-icon[data-v-6bd239a6]{color:#1890ff} +.drawing-tool-btn[data-v-076675b8]:hover{color:#1890ff} +.drawing-tool-btn.active[data-v-076675b8]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff} +.indicator-btn[data-v-076675b8]:hover{color:#1890ff;border-color:#1890ff} +.indicator-btn.active[data-v-076675b8]{color:#1890ff;border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)} +.symbol-select[data-v-11d8a5e2] .ant-select-selection:hover{border-color:#1890ff} +.symbol-select[data-v-11d8a5e2] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)} +.timeframe-item[data-v-11d8a5e2]:hover{color:#1890ff} +.timeframe-item.active[data-v-11d8a5e2]{color:#1890ff} +.panel-header .realtime-toggle-btn[data-v-11d8a5e2]:hover,.panel-header .theme-toggle-btn[data-v-11d8a5e2]:hover{color:#1890ff} +.panel-header .realtime-toggle-btn.active[data-v-11d8a5e2],.panel-header .theme-toggle-btn.active[data-v-11d8a5e2]{color:#1890ff;background:#e6f7ff} +.indicator-card[data-v-11d8a5e2]:hover{border-color:#1890ff} +.indicator-card.active[data-v-11d8a5e2]{background:#e6f7ff;border-color:#1890ff} +.indicator-card.active .card-name[data-v-11d8a5e2]{color:#1890ff} +.card-action[data-v-11d8a5e2]:hover{color:#1890ff} +.action-icon.edit-icon[data-v-11d8a5e2]{color:#1890ff} +.action-icon.edit-icon[data-v-11d8a5e2]:hover{color:#40a9ff} +.action-icon[data-v-11d8a5e2]:hover{color:#1890ff} +.action-icon.publish-icon[data-v-11d8a5e2]{color:#1890ff} +.action-icon.publish-icon[data-v-11d8a5e2]:hover{color:#40a9ff} +.action-icon.expiry-icon[data-v-11d8a5e2]{color:#1890ff} .dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff} -.qt-header-btn[data-v-6bd239a6]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)} -.qt-header-btn[data-v-6bd239a6]:focus,.qt-header-btn[data-v-6bd239a6]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45)} -.qt-floating-btn[data-v-6bd239a6]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4)} -.qt-floating-btn[data-v-6bd239a6]:hover{-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-6bd239a6] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#1890ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#1890ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#40a9ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-6bd239a6]:hover,body.dark,body.realdark{border-color:#1890ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#1890ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#40a9ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-6bd239a6],body.dark,body.realdark{color:#1890ff} -.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-6bd239a6]:hover,body.dark,body.realdark{color:#40a9ff} +.qt-header-btn[data-v-11d8a5e2]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)} +.qt-header-btn[data-v-11d8a5e2]:focus,.qt-header-btn[data-v-11d8a5e2]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45)} +.qt-floating-btn[data-v-11d8a5e2]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4)} +.qt-floating-btn[data-v-11d8a5e2]:hover{-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-11d8a5e2] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#1890ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#1890ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#40a9ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-11d8a5e2]:hover,body.dark,body.realdark{border-color:#1890ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-11d8a5e2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#1890ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#40a9ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-11d8a5e2],body.dark,body.realdark{color:#1890ff} +.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-11d8a5e2]:hover,body.dark,body.realdark{color:#40a9ff} .ai-markdown-content[data-v-9c4d8af2] h3{border-left:3px solid #1890ff} .ai-markdown-content[data-v-9c4d8af2] blockquote{border-left:4px solid #91d5ff} .backtest-history-drawer-wrap--dark .drawer-toolbar .ant-btn-primary.ant-btn-background-ghost{color:#69c0ff} @@ -107,11 +115,11 @@ body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.real [data-v-1daf6ac6] .result-ai-markdown-content/deep/blockquote{border-left:3px solid #91d5ff} .add-item-active[data-v-1daf6ac6]{background:#e6f7ff!important} .theme-dark .page-header .page-title .title-icon[data-v-1daf6ac6]{color:#40a9ff!important} -.trading-records[data-v-bdf54cd6] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)} -.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff} -.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item:hover a{color:#1890ff} -.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff} -.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-bdf54cd6] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff} +.trading-records[data-v-46c92dab] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)} +.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff} +.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item:hover a{color:#1890ff} +.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff} +.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-46c92dab] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff} .theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important} .theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important} .theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important} @@ -150,55 +158,58 @@ body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover . .theme-dark .side-tabs[data-v-35a0a386] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff} .theme-dark .ai-status[data-v-35a0a386]{color:#40a9ff} .theme-dark[data-v-35a0a386] .ant-alert-info{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)} -.theme-dark .logs-toolbar[data-v-73589ce4] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff} -.theme-dark .logs-toolbar[data-v-73589ce4] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff} -.assistant-guide-bar[data-v-533cb131]{border:1px solid rgba(24,144,255,.14);background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06))} -.assistant-guide-bar .assistant-guide-eyebrow[data-v-533cb131]{background:rgba(24,144,255,.12)} -.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-533cb131]:focus,.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-533cb131]:hover{border-color:rgba(24,144,255,.35)} -.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-533cb131]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)} -.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-533cb131]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)} -.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-533cb131]{color:#1890ff} -.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-533cb131]:hover{border-left-color:#1890ff;border-color:rgba(24,144,255,.22);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.08);box-shadow:0 2px 8px rgba(24,144,255,.08)} -.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-533cb131]{border-color:rgba(24,144,255,.35);border-left-color:#1890ff;-webkit-box-shadow:0 2px 12px rgba(24,144,255,.12);box-shadow:0 2px 12px rgba(24,144,255,.12)} -.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-533cb131]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)} -.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-533cb131]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)} -.trading-assistant .strategy-detail-col .strategy-empty-detail-icon[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(64,169,255,.08));color:#1890ff} -.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-533cb131]{color:#1890ff} -.trading-assistant.theme-dark .creation-mode-toggle[data-v-533cb131]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)} -.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-533cb131] .ant-radio-button-wrapper:hover{color:#69c0ff} -.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-533cb131] .ant-radio-button-wrapper-checked{background:rgba(24,144,255,.25)!important;border-color:#1890ff!important} -.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item[data-v-533cb131]:hover{border-left-color:#1890ff} -.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item.active[data-v-533cb131]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.28);border-left-color:#1890ff} -.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-533cb131]{background:rgba(24,144,255,.1);border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)} -.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-533cb131]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)} -.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff} -.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-533cb131] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)} -.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-icon[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.22),rgba(64,169,255,.1));color:#69c0ff} -.theme-dark .assistant-guide-bar .assistant-guide-eyebrow[data-v-533cb131]{color:#69c0ff} -.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-533cb131]:focus,.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-533cb131]:hover{color:#91d5ff} -.ai-filter-title .anticon[data-v-533cb131]{color:#1890ff} -.creation-mode-toggle[data-v-533cb131]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)} -.simple-mode-hero[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06));border:1px solid rgba(24,144,255,.14)} -.simple-mode-kicker[data-v-533cb131]{color:#1890ff} -.advanced-settings-shell[data-v-533cb131],.selected-indicator-card[data-v-533cb131],.simple-essentials-card[data-v-533cb131]{border:1px solid rgba(24,144,255,.12)} -.execution-step-hero[data-v-533cb131]{background:linear-gradient(135deg,rgba(82,196,26,.08),rgba(24,144,255,.08));border:1px solid rgba(24,144,255,.14)} -.execution-section-card[data-v-533cb131]{border:1px solid rgba(24,144,255,.12)} -.execution-mode-card[data-v-533cb131]{border:1px solid rgba(24,144,255,.12)} -.execution-mode-card[data-v-533cb131]:hover{border-color:rgba(24,144,255,.35);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.08);box-shadow:0 8px 24px rgba(24,144,255,.08)} -.execution-mode-card.active[data-v-533cb131]{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.03));-webkit-box-shadow:0 10px 28px rgba(24,144,255,.12);box-shadow:0 10px 28px rgba(24,144,255,.12)} -.execution-mode-card.disabled[data-v-533cb131]:hover{border-color:rgba(24,144,255,.12)} -.execution-mode-card-icon.signal[data-v-533cb131]{color:#1890ff;background:rgba(24,144,255,.1)} -.execution-mode-card-check[data-v-533cb131]{color:#1890ff} -.strategy-type-selector .strategy-type-card[data-v-533cb131]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)} -.strategy-type-selector .strategy-type-card.selected[data-v-533cb131]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)} -.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-533cb131]{color:#1890ff} -.theme-dark .simple-mode-hero[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.14),rgba(114,46,209,.12))} -.theme-dark .execution-step-hero[data-v-533cb131]{background:linear-gradient(135deg,rgba(82,196,26,.14),rgba(24,144,255,.14))} -.theme-dark .execution-mode-card[data-v-533cb131]:hover{-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)} -.theme-dark .execution-mode-card.active[data-v-533cb131]{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff} -.theme-dark .simple-mode-kicker[data-v-533cb131]{color:#69c0ff} -.ip-whitelist-tip[data-v-533cb131]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff} -.ip-whitelist-tip .anticon[data-v-533cb131]{color:#1890ff} +.theme-dark .logs-toolbar[data-v-5ea7be7d] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff} +.theme-dark .logs-toolbar[data-v-5ea7be7d] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff} +.assistant-guide-bar[data-v-7a5d79cc]{border:1px solid rgba(24,144,255,.14);background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06))} +.assistant-guide-bar .assistant-guide-eyebrow[data-v-7a5d79cc]{background:rgba(24,144,255,.12)} +.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-7a5d79cc]:focus,.assistant-guide-bar .assistant-guide-actions .assistant-guide-close[data-v-7a5d79cc]:hover{border-color:rgba(24,144,255,.35)} +.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-7a5d79cc]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)} +.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)} +.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-7a5d79cc]{color:#1890ff} +.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:hover{border-left-color:#1890ff;border-color:rgba(24,144,255,.22);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.08);box-shadow:0 2px 8px rgba(24,144,255,.08)} +.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-7a5d79cc]{border-color:rgba(24,144,255,.35);border-left-color:#1890ff;-webkit-box-shadow:0 2px 12px rgba(24,144,255,.12);box-shadow:0 2px 12px rgba(24,144,255,.12)} +.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7a5d79cc]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)} +.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-7a5d79cc]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)} +.trading-assistant .strategy-detail-col .strategy-empty-detail-icon[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(64,169,255,.08));color:#1890ff} +.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-7a5d79cc]{color:#1890ff} +.trading-assistant.theme-dark .creation-mode-toggle[data-v-7a5d79cc]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)} +.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-icon[data-v-7a5d79cc]{color:#69c0ff} +.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:hover{border-left-color:#1890ff} +.trading-assistant.theme-dark .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-7a5d79cc]{background:rgba(24,144,255,.15);border-color:rgba(24,144,255,.35);border-left-color:#1890ff} +.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-7a5d79cc] .ant-radio-button-wrapper:hover{color:#69c0ff} +.trading-assistant.theme-dark .strategy-list-col .group-mode-switch[data-v-7a5d79cc] .ant-radio-button-wrapper-checked{background:rgba(24,144,255,.25)!important;border-color:#1890ff!important} +.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item[data-v-7a5d79cc]:hover{border-left-color:#1890ff} +.trading-assistant.theme-dark .strategy-list-col .strategy-group-content .strategy-list-item.active[data-v-7a5d79cc]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.28);border-left-color:#1890ff} +.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-7a5d79cc]{background:rgba(24,144,255,.1);border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)} +.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-7a5d79cc]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)} +.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff} +.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7a5d79cc] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)} +.trading-assistant.theme-dark .strategy-detail-col .strategy-empty-detail-icon[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.22),rgba(64,169,255,.1));color:#69c0ff} +.theme-dark .assistant-guide-bar .assistant-guide-eyebrow[data-v-7a5d79cc]{color:#69c0ff} +.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-7a5d79cc]:focus,.theme-dark .assistant-guide-bar .assistant-guide-close[data-v-7a5d79cc]:hover{color:#91d5ff} +.ai-filter-title .anticon[data-v-7a5d79cc]{color:#1890ff} +.creation-mode-toggle[data-v-7a5d79cc]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)} +.simple-mode-hero[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06));border:1px solid rgba(24,144,255,.14)} +.simple-mode-kicker[data-v-7a5d79cc]{color:#1890ff} +.advanced-settings-shell[data-v-7a5d79cc],.selected-indicator-card[data-v-7a5d79cc],.simple-essentials-card[data-v-7a5d79cc]{border:1px solid rgba(24,144,255,.12)} +.execution-step-hero[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(82,196,26,.08),rgba(24,144,255,.08));border:1px solid rgba(24,144,255,.14)} +.execution-section-card[data-v-7a5d79cc]{border:1px solid rgba(24,144,255,.12)} +.execution-mode-card[data-v-7a5d79cc]{border:1px solid rgba(24,144,255,.12)} +.execution-mode-card[data-v-7a5d79cc]:hover{border-color:rgba(24,144,255,.35);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.08);box-shadow:0 8px 24px rgba(24,144,255,.08)} +.execution-mode-card.active[data-v-7a5d79cc]{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.03));-webkit-box-shadow:0 10px 28px rgba(24,144,255,.12);box-shadow:0 10px 28px rgba(24,144,255,.12)} +.execution-mode-card.disabled[data-v-7a5d79cc]:hover{border-color:rgba(24,144,255,.12)} +.execution-mode-card-icon.signal[data-v-7a5d79cc]{color:#1890ff;background:rgba(24,144,255,.1)} +.execution-mode-card-check[data-v-7a5d79cc]{color:#1890ff} +.strategy-type-selector .strategy-type-card[data-v-7a5d79cc]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)} +.strategy-type-selector .strategy-type-card.selected[data-v-7a5d79cc]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)} +.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-7a5d79cc]{color:#1890ff} +.theme-dark .simple-mode-hero[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.14),rgba(114,46,209,.12))} +.theme-dark .execution-step-hero[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(82,196,26,.14),rgba(24,144,255,.14))} +.theme-dark .execution-mode-card[data-v-7a5d79cc]:hover{-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)} +.theme-dark .execution-mode-card.active[data-v-7a5d79cc]{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff} +.theme-dark .simple-mode-kicker[data-v-7a5d79cc]{color:#69c0ff} +.ip-whitelist-tip[data-v-7a5d79cc]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff} +.ip-whitelist-tip .anticon[data-v-7a5d79cc]{color:#1890ff} body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)} body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-process .ant-steps-item-icon{background:#1890ff;border-color:#1890ff} body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-finish .ant-steps-item-icon{border-color:#1890ff} @@ -219,14 +230,6 @@ body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-kicker{colo body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)} body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff} body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)} -.comment-list .comment-form .form-header .edit-label[data-v-48b21f80]{color:#1890ff} -.comment-list .comments .comment-item.is-mine[data-v-48b21f80]{background:rgba(24,144,255,.02)} -.dark .comment-list .comments .comment-item.is-mine[data-v-48b21f80],[data-theme=dark] .comment-list .comments .comment-item.is-mine[data-v-48b21f80],body.dark .comment-list .comments .comment-item.is-mine[data-v-48b21f80]{background:rgba(24,144,255,.05)} -.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff} -.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff} -.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff} -.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff} -.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff} .fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} .fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} .fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)} @@ -259,39 +262,39 @@ body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-colo .fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} .fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} .fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)} -.left-panel .calendar-box .box-header .box-title .anticon[data-v-22f26594]{color:var(--primary-color,#1890ff)} -.right-panel .analysis-toolbar .analyze-button[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)} -.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)} -.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)} -.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)} -.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)} -.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)} -.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)} -.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)} -.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)} -.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} -.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)} -.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff} -.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)} -.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important} -.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} -.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab-active{color:#1890ff!important} -.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-ink-bar{background-color:#1890ff} -.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff} -.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert{background:rgba(24,144,255,.06)} -.hero-bg-circle.c1[data-v-22f26594]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)} -.hero-bg-grid[data-v-22f26594]{background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0)} -.hero-badge[data-v-22f26594]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)} -.hstat[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1)} -.hstat-icon[data-v-22f26594]{background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));color:var(--primary-color,#1890ff)} -.hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)} -.panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} -.batch-bar .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)} -.wl-card.active[data-v-22f26594]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)} -.wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)} -.wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff} -.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)} -.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]:hover{-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)} +.left-panel .calendar-box .box-header .box-title .anticon[data-v-0fce93ef]{color:var(--primary-color,#1890ff)} +.right-panel .analysis-toolbar .analyze-button[data-v-0fce93ef]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)} +.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)} +.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-0fce93ef]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)} +.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)} +.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-0fce93ef]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)} +.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-0fce93ef]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)} +.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-0fce93ef]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)} +.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-0fce93ef]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)} +.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-0fce93ef]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)} +.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-0fce93ef],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-0fce93ef]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} +.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-0fce93ef]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)} +.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff} +.ai-analysis-container.theme-dark .panel-header-icon[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)} +.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-0fce93ef]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important} +.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-0fce93ef],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-0fce93ef]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} +.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-tab-active{color:#1890ff!important} +.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-tabs-ink-bar{background-color:#1890ff} +.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff} +.ai-analysis-container.theme-dark[data-v-0fce93ef] .ant-alert{background:rgba(24,144,255,.06)} +.hero-bg-circle.c1[data-v-0fce93ef]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)} +.hero-bg-grid[data-v-0fce93ef]{background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0)} +.hero-badge[data-v-0fce93ef]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)} +.hstat[data-v-0fce93ef]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1)} +.hstat-icon[data-v-0fce93ef]{background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));color:var(--primary-color,#1890ff)} +.hero-cta .ant-btn-primary[data-v-0fce93ef]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)} +.panel-header-icon[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} +.batch-bar .ant-btn-primary[data-v-0fce93ef]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)} +.wl-card.active[data-v-0fce93ef]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)} +.wl-card.active .wl-card-hover-actions[data-v-0fce93ef]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)} +.wl-hover-btn[data-v-0fce93ef]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff} +.task-item-actions .ant-btn.ant-btn-primary[data-v-0fce93ef]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)} +.task-item-actions .ant-btn.ant-btn-primary[data-v-0fce93ef]:hover{-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)} .qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff} .qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important} .qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff} diff --git a/frontend/dist/index.html b/frontend/dist/index.html index e212296..6fd0702 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -421,4 +421,4 @@ .brand-text { font-size: 20px; } - }

Landing

QuantDinger
\ No newline at end of file + }

Landing

QuantDinger
\ No newline at end of file diff --git a/frontend/dist/js/156-legacy.bc26fda8.js b/frontend/dist/js/156-legacy.bc26fda8.js new file mode 100644 index 0000000..0995ec2 --- /dev/null +++ b/frontend/dist/js/156-legacy.bc26fda8.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[156],{43156:function(t,a,s){s.r(a),s.d(a,{default:function(){return D}});s(28706),s(74423),s(34782),s(62010),s(9868),s(21699);var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-analysis-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded},style:{"--primary-color":t.primaryColor}},[a("div",{staticClass:"main-content-full"},[a("div",{staticClass:"top-index-bar"},[t.loadingSentiment?[t._m(0),t._m(1),t._m(2)]:[a("div",{staticClass:"indicator-box fear-greed",class:t.getFearGreedClass(t.marketData.fearGreed)},[a("span",{staticClass:"ind-label"},[t._v(t._s(t.$t("globalMarket.fearGreedShort")))]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.fearGreed||"--"))])]),a("div",{staticClass:"indicator-box vix",class:t.getVixLevel(t.marketData.vix)},[a("span",{staticClass:"ind-label"},[t._v("VIX")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.vix||"--"))])]),a("div",{staticClass:"indicator-box dxy"},[a("span",{staticClass:"ind-label"},[t._v("DXY")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.dxy||"--"))])])],a("div",{staticClass:"indices-marquee"},[t.loadingIndices?[a("div",{staticClass:"indices-loading"},[a("a-icon",{attrs:{type:"loading"}}),t._v(" "+t._s(t.$t("common.loading")||"加载中...")+" ")],1)]:t.marketData.indices.length>0?[a("div",{staticClass:"marquee-track"},[t._l(t.marketData.indices,function(s){return a("div",{key:"a-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])}),t._l(t.marketData.indices,function(s){return a("div",{key:"b-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])})],2)]:[a("div",{staticClass:"indices-empty"},[t._v("--")])]],2),a("a-button",{staticClass:"refresh-btn",attrs:{type:"link",size:"small",loading:t.loadingMarket},on:{click:t.loadMarketData}},[a("a-icon",{attrs:{type:"sync",spin:t.loadingMarket}})],1)],2),a("div",{staticClass:"main-body"},[a("div",{staticClass:"left-panel"},[a("div",{staticClass:"heatmap-box"},[a("div",{staticClass:"box-header"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.heatmapType,callback:function(a){t.heatmapType=a},expression:"heatmapType"}},[a("a-radio-button",{attrs:{value:"crypto"}},[t._v(t._s(t.$t("globalMarket.cryptoHeatmap")))]),a("a-radio-button",{attrs:{value:"commodities"}},[t._v(t._s(t.$t("globalMarket.commoditiesHeatmap")))]),a("a-radio-button",{attrs:{value:"sectors"}},[t._v(t._s(t.$t("globalMarket.sectorHeatmap")))]),a("a-radio-button",{attrs:{value:"forex"}},[t._v(t._s(t.$t("globalMarket.forexHeatmap")))])],1)],1),a("div",{staticClass:"heatmap-grid"},[t.loadingHeatmap?t._l(12,function(t){return a("div",{key:"skel-"+t,staticClass:"heat-cell skeleton-cell"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.currentHeatmap.length>0?t._l(t.currentHeatmap.slice(0,12),function(s,e){return a("div",{key:e,staticClass:"heat-cell",style:t.getHeatmapStyle(s.value)},[a("span",{staticClass:"heat-name"},[t._v(t._s(t.getHeatmapName(s)))]),s.price?a("span",{staticClass:"heat-price"},[t._v(t._s(t.formatHeatmapPrice(s.price)))]):t._e(),a("span",{staticClass:"heat-val"},[t._v(t._s(s.value>=0?"+":"")+t._s(t.formatNum(s.value))+"%")])])}):[a("div",{staticClass:"heatmap-empty"},[t._v(t._s(t.$t("common.noData")||"暂无数据"))])]],2)]),a("div",{staticClass:"calendar-box"},[a("div",{staticClass:"box-header"},[a("span",{staticClass:"box-title"},[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t.$t("globalMarket.calendar")))],1)]),a("div",{staticClass:"calendar-list"},[t.loadingCalendar?t._l(5,function(t){return a("div",{key:"cal-skel-"+t,staticClass:"cal-item skeleton-item"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.marketData.calendar.length>0?t._l(t.marketData.calendar.slice(0,10),function(s){return a("div",{key:s.id,staticClass:"cal-item",class:s.importance},[a("span",{staticClass:"cal-date"},[t._v(t._s(t.formatCalendarDate(s.date)))]),a("span",{staticClass:"cal-time"},[t._v(t._s(s.time||"--:--"))]),a("span",{staticClass:"cal-flag"},[t._v(t._s(t.getCountryFlag(s.country)))]),a("span",{staticClass:"cal-name"},[t._v(t._s(t.isZhLocale?s.name:s.name_en))]),a("span",{staticClass:"cal-impact",class:t.getImpactClass(s)},["bullish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-up"}}):"bearish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-down"}}):a("a-icon",{attrs:{type:"minus"}}),t._v(" "+t._s(s.actual||s.forecast||"--")+" ")],1)])}):[a("div",{staticClass:"cal-empty"},[t._v(t._s(t.$t("globalMarket.noEvents")))])]],2)])]),a("div",{staticClass:"right-panel"},[a("div",{staticClass:"analysis-toolbar"},[a("a-select",{staticClass:"symbol-selector",attrs:{placeholder:t.$t("dashboard.analysis.empty.selectSymbol"),size:"large","show-search":"","allow-clear":"","option-label-prop":"label","filter-option":t.filterSymbolOption},on:{change:t.handleSymbolChange},model:{value:t.selectedSymbol,callback:function(a){t.selectedSymbol=a},expression:"selectedSymbol"}},[t._l(t.watchlist||[],function(s){return a("a-select-option",{key:"".concat(s.market,"-").concat(s.symbol),attrs:{value:"".concat(s.market,":").concat(s.symbol),label:t.watchlistSelectLabel(s)}},[a("span",{staticClass:"symbol-option wl-select-option-row"},[a("a-tag",{attrs:{color:t.getMarketColor(s.market),size:"small"}},[t._v(t._s(t.getMarketName(s.market)))]),a("strong",{staticClass:"wl-select-symbol"},[t._v(t._s(s.symbol))]),s.name?a("span",{staticClass:"symbol-name wl-select-name"},[t._v(t._s(s.name))]):t._e()],1)])}),a("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[a("div",{staticStyle:{"text-align":"center",padding:"4px 0",color:"#1890ff"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),t._v(t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")],1)])],2),a("a-button",{staticClass:"analyze-button",attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.selectedSymbol||t.analyzing},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")]),a("a-button",{staticClass:"history-button",attrs:{size:"large",icon:"history"},on:{click:function(a){t.showHistoryModal=!0,t.loadHistoryList()}}},[t._v(" "+t._s(t.$t("fastAnalysis.history"))+" ")])],1),a("div",{staticClass:"analysis-main"},[t.analysisResult||t.analyzing||t.analysisError?t._e():a("div",{staticClass:"analysis-placeholder"},[a("div",{staticClass:"placeholder-hero"},[t._m(3),a("div",{staticClass:"hero-body"},[a("div",{staticClass:"hero-badge"},[t._v("AI-POWERED")]),a("h2",{staticClass:"hero-title"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.title")))]),a("p",{staticClass:"hero-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.subtitle")))]),a("div",{staticClass:"hero-stats"},[a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"line-chart"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"dashboard"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"apartment"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3Desc")))])])])]),a("div",{staticClass:"hero-cta"},[a("a-button",{attrs:{type:"primary",size:"large",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")]),a("a-button",{attrs:{size:"large",icon:"thunderbolt",disabled:!t.selectedSymbol},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")])],1),a("p",{staticClass:"hero-hint"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.quickStart")))])])])]),t.analysisResult||t.analyzing||t.analysisError?a("FastAnalysisReport",{attrs:{result:t.analysisResult,loading:t.analyzing,error:t.analysisError,"error-tone":t.analysisErrorTone},on:{retry:t.startFastAnalysis}}):t._e()],1)]),a("div",{staticClass:"watchlist-panel"},[a("div",{staticClass:"panel-header"},[a("span",{staticClass:"panel-title"},[a("a-icon",{attrs:{type:"star",theme:"filled"}}),t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.title")))],1),a("span",{staticClass:"panel-header-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage")}},[a("a-badge",{attrs:{count:t.monitors.length,offset:[-2,2],"number-style":{fontSize:"9px",minWidth:"14px",height:"14px",lineHeight:"14px",padding:"0 3px"}}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"unordered-list"},on:{click:function(a){t.showTaskDrawer=!0}}})],1)],1),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.batch.schedule")}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"schedule"},on:{click:t.toggleBatchMode}})],1),a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"plus"},on:{click:function(a){t.showAddStockModal=!0}}})],1)]),t.watchlist&&t.watchlist.length>0?a("div",{staticClass:"panel-summary"},[a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlist.length))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.totalAssets")))])]),t.watchlistPositionCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistPositionCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.positionCount")))])]):t._e(),t.watchlistTaskCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistTaskCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.taskCount")))])]):t._e(),0!==t.watchlistTotalPnl?a("div",{staticClass:"summary-chip pnl"},[a("span",{staticClass:"sc-num",class:t.watchlistTotalPnl>=0?"up":"down"},[t._v(t._s(t.watchlistTotalPnl>=0?"+":"")+t._s(t.formatNum(t.watchlistTotalPnl)))]),a("span",{staticClass:"sc-label"},[t._v("P&L")])]):t._e()]):t._e(),t.batchMode?a("div",{staticClass:"batch-bar"},[a("a-checkbox",{staticClass:"batch-all-cb",attrs:{checked:t.batchSelectedAll,indeterminate:t.batchIndeterminate},on:{change:t.onBatchSelectAll}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.selectAll"))+" ")]),a("a-button",{attrs:{type:"primary",size:"small",disabled:0===t.batchSelectedKeys.length},on:{click:t.openBatchScheduleModal}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.schedule"))),t.batchSelectedKeys.length>0?[t._v(" "+t._s(t.batchSelectedKeys.length))]:t._e()],2),a("a-button",{attrs:{size:"small"},on:{click:t.toggleBatchMode}},[t._v(t._s(t.$t("common.cancel")))])],1):t._e(),a("div",{staticClass:"watchlist-list"},[t._l(t.watchlist||[],function(s){var e,i,n;return a("div",{key:"wl-".concat(s.market,"-").concat(s.symbol),staticClass:"wl-card",class:{active:t.selectedSymbol==="".concat(s.market,":").concat(s.symbol)},on:{click:function(a){return t.selectWatchlistItem(s)}}},[t.batchMode?a("a-checkbox",{staticClass:"wl-card-cb",attrs:{checked:t.batchSelectedKeys.includes("".concat(s.market,":").concat(s.symbol))},on:{change:function(a){return t.onBatchItemToggle(s,a)}},nativeOn:{click:function(t){t.stopPropagation()}}}):t._e(),a("div",{staticClass:"wl-card-body",class:{"with-cb":t.batchMode}},[a("div",{staticClass:"wl-row-main"},[a("span",{staticClass:"wl-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"wl-market"},[t._v(t._s(t.getMarketName(s.market)))]),a("span",{staticClass:"wl-spacer"}),t.watchlistPrices["".concat(s.market,":").concat(s.symbol)]?[a("span",{staticClass:"wl-price"},[t._v(t._s(t.formatPrice(t.watchlistPrices["".concat(s.market,":").concat(s.symbol)].price)))]),a("span",{staticClass:"wl-change",class:((null===(e=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===e?void 0:e.change)||0)>=0?"up":"down"},[t._v(" "+t._s(((null===(i=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===i?void 0:i.change)||0)>=0?"+":"")+t._s(t.formatNum(null===(n=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===n?void 0:n.change))+"% ")])]:t._e()],2),t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)]?a("div",{staticClass:"wl-row-pnl"},[a("span",{staticClass:"wl-pnl-qty"},[t._v(t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].quantity,4))+" @ "+t._s(t.formatPrice(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].avgEntry||0)))]),a("span",{staticClass:"wl-pnl-val",class:t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"up":"down"},[t._v(" "+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl||0))+" ("+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent||0))+"%) ")])]):t._e(),t.getMonitorMeta(s)?a("div",{staticClass:"wl-row-task"},[a("span",{staticClass:"wl-task-badge",class:t.getMonitorMeta(s).activeCount>0?"active":"paused",on:{click:function(a){return a.stopPropagation(),t.toggleStockMonitor(s)}}},[a("a-icon",{attrs:{type:t.getMonitorMeta(s).activeCount>0?"sync":"pause-circle",spin:t.getMonitorMeta(s).activeCount>0}}),t._v(" "+t._s(t.getMonitorMeta(s).activeCount>0?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")],1),t.getMonitorMeta(s).nextRunAtText?a("span",{staticClass:"wl-task-next"},[t._v(t._s(t.getMonitorMeta(s).nextRunAtText))]):t._e()]):t._e()]),a("div",{staticClass:"wl-card-hover-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.position.quickAdd")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openPositionModal(s)}}},[a("a-icon",{attrs:{type:"wallet"}})],1)]),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.monitor.quickTask")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openMonitorModal(s)}}},[a("a-icon",{attrs:{type:"clock-circle"}})],1)]),a("span",{staticClass:"wl-hover-btn danger",on:{click:function(a){return a.stopPropagation(),t.removeFromWatchlist(s)}}},[a("a-icon",{attrs:{type:"delete"}})],1)],1)],1)}),t.watchlist&&0!==t.watchlist.length?t._e():a("div",{staticClass:"watchlist-empty"},[a("div",{staticClass:"we-icon"},[a("a-icon",{attrs:{type:"star"}})],1),a("p",[t._v(t._s(t.$t("dashboard.analysis.empty.noWatchlist")))]),a("a-button",{attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")])],1)],2)])])]),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",wrapClassName:t.isDarkTheme?"qd-dark-modal":"",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[a("div",{staticClass:"add-stock-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(a){t.selectedMarketTab=a},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(s){return a("a-tab-pane",{key:s.value,attrs:{tab:t.$t(s.i18nKey||"dashboard.analysis.market.".concat(s.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(a){t.symbolSearchKeyword=a},expression:"symbolSearchKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):a("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?a("div",{staticClass:"selected-symbol-section"},[a("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(a){t.selectedSymbolForAdd=null}}},[a("template",{slot:"description"},[a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),a("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?a("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):t._e()],1)])],2)],1):t._e()],1)]),a("a-modal",{attrs:{visible:t.showPositionModal,title:"".concat(t.$i18n&&"zh-CN"===t.$i18n.locale?"创建持仓(虚拟仓)":"Create Position (Virtual)"," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.savePosition,cancel:function(a){t.showPositionModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("portfolio.positions.side")||"Direction"}},[a("a-select",{model:{value:t.positionForm.side,callback:function(a){t.$set(t.positionForm,"side",a)},expression:"positionForm.side"}},[a("a-select-option",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")||"Long"))]),a("a-select-option",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")||"Short"))])],1)],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"数量":"Quantity"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.quantity,callback:function(a){t.$set(t.positionForm,"quantity",a)},expression:"positionForm.quantity"}})],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"买入单价":"Entry Price"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.entryPrice,callback:function(a){t.$set(t.positionForm,"entryPrice",a)},expression:"positionForm.entryPrice"}})],1)],1)],1),a("a-modal",{attrs:{visible:t.showMonitorModal,title:"".concat(t.$t("aiAssetAnalysis.monitor.quickTask")," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveMonitorTask,cancel:function(a){t.showMonitorModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.monitorForm.interval_min,callback:function(a){t.$set(t.monitorForm,"interval_min",a)},expression:"monitorForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.monitorForm.notify_channels,callback:function(a){t.$set(t.monitorForm,"notify_channels",a)},expression:"monitorForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1),a("a-alert",{attrs:{message:t.$t("aiAssetAnalysis.monitor.tip"),type:"info","show-icon":""}})],1)],1),a("a-modal",{attrs:{visible:t.showBatchScheduleModal,title:t.$t("aiAssetAnalysis.batch.scheduleTitle"),confirmLoading:t.batchRunning,width:"520px",wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveBatchSchedule,cancel:function(a){t.showBatchScheduleModal=!1}}},[a("div",{staticClass:"batch-modal-summary"},[a("p",[t._v(t._s(t.$t("aiAssetAnalysis.batch.scheduleDesc",{count:t.batchSelectedKeys.length})))]),a("div",{staticClass:"batch-symbols-preview"},t._l(t.batchSelectedKeys,function(s){return a("a-tag",{key:s,staticStyle:{"margin-bottom":"4px"},attrs:{color:"blue"}},[t._v(t._s(s.split(":")[1]))])}),1)]),a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.interval_min,callback:function(a){t.$set(t.batchScheduleForm,"interval_min",a)},expression:"batchScheduleForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.notify_channels,callback:function(a){t.$set(t.batchScheduleForm,"notify_channels",a)},expression:"batchScheduleForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1),a("a-alert",{staticStyle:{"margin-top":"8px"},attrs:{message:t.$t("aiAssetAnalysis.batch.scheduleTip"),type:"info","show-icon":""}})],1),a("a-drawer",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage"),visible:t.showTaskDrawer,width:"420",placement:"right",wrapClassName:t.isDarkTheme?"qd-dark-drawer":""},on:{close:function(a){t.showTaskDrawer=!1}}},[0===t.monitors.length?a("div",{staticClass:"task-drawer-empty"},[a("a-icon",{staticStyle:{"font-size":"40px",color:"#ccc"},attrs:{type:"inbox"}}),a("p",[t._v(t._s(t.$t("aiAssetAnalysis.tasks.empty")))])],1):a("div",{staticClass:"task-drawer-list"},t._l(t.monitors,function(s){return a("div",{key:s.id,staticClass:"task-item"},[a("div",{staticClass:"task-item-header"},[a("span",{staticClass:"task-item-name"},[t._v(t._s(s.name||"AI Task"))]),a("a-tag",{attrs:{color:s.is_active?"green":"default",size:"small"}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")])],1),a("div",{staticClass:"task-item-meta"},[s.config&&s.config.run_interval_minutes?a("span",[a("a-icon",{attrs:{type:"clock-circle"}}),t._v(" "+t._s(t.formatIntervalText(s.config.run_interval_minutes))+" ")],1):t._e(),s.next_run_at?a("span",[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t._formatNextRunText(s.next_run_at))+" ")],1):t._e()]),a("div",{staticClass:"task-item-actions"},[a("a-button",{attrs:{size:"small",type:s.is_active?"default":"primary",icon:"poweroff"},on:{click:function(a){return t.handleToggleTask(s)}}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.tasks.pause"):t.$t("aiAssetAnalysis.tasks.resume"))+" ")]),a("a-button",{attrs:{size:"small",icon:"edit"},on:{click:function(a){return t.handleEditTask(s)}}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.edit")))]),a("a-popconfirm",{attrs:{title:t.$t("aiAssetAnalysis.tasks.deleteConfirm"),okText:t.$t("common.confirm"),cancelText:t.$t("common.cancel")},on:{confirm:function(a){return t.handleDeleteTask(s)}}},[a("a-button",{attrs:{size:"small",type:"danger",icon:"delete"}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.delete")))])],1)],1)])}),0)]),a("a-modal",{attrs:{visible:t.showEditTaskModal,title:t.$t("aiAssetAnalysis.tasks.edit"),confirmLoading:t.editTaskLoading,wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveEditTask,cancel:function(a){t.showEditTaskModal=!1}}},[t.editTaskForm?a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.tasks.name")}},[a("a-input",{model:{value:t.editTaskForm.name,callback:function(a){t.$set(t.editTaskForm,"name",a)},expression:"editTaskForm.name"}})],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.interval_min,callback:function(a){t.$set(t.editTaskForm,"interval_min",a)},expression:"editTaskForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.notify_channels,callback:function(a){t.$set(t.editTaskForm,"notify_channels",a)},expression:"editTaskForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1):t._e()],1),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.history.title"),visible:t.showHistoryModal,footer:null,width:"800px",bodyStyle:{maxHeight:"60vh",overflowY:"auto"},wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{cancel:function(a){t.showHistoryModal=!1}}},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-list",{attrs:{"data-source":t.historyList,pagination:{current:t.historyPage,pageSize:t.historyPageSize,total:t.historyTotal,onChange:function(a){t.historyPage=a,t.loadHistoryList()},showSizeChanger:!0,pageSizeOptions:["10","20","50"],onShowSizeChange:function(a,s){t.historyPageSize=s,t.historyPage=1,t.loadHistoryList()}}},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticStyle:{display:"flex","align-items":"center","justify-content":"space-between"}},[a("div",[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(s.market)}},[t._v(" "+t._s(t.getMarketName(s.market))+" ")]),a("strong",[t._v(t._s(s.symbol))]),a("a-tag",{staticStyle:{"margin-left":"12px"},attrs:{color:"BUY"===s.decision?"green":"SELL"===s.decision?"red":"blue"}},[t._v(" "+t._s(s.decision)+" ")]),a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{color:t.getStatusColor(s.status||"completed")}},[t._v(" "+t._s(t.getStatusText(s.status||"completed"))+" ")]),a("span",{staticStyle:{color:"#999","margin-left":"8px","font-size":"12px"}},[t._v(" "+t._s(t.$t("fastAnalysis.confidence"))+": "+t._s(s.confidence)+"% ")])],1),a("div",[a("a-button",{attrs:{type:"link",size:"small",icon:"eye",disabled:"processing"===(s.status||"").toLowerCase()},on:{click:function(a){return t.viewHistoryResult(s)}}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.viewResult"))+" ")]),a("a-popconfirm",{attrs:{title:t.$t("dashboard.analysis.modal.history.deleteConfirm"),"ok-text":t.$t("common.confirm"),"cancel-text":t.$t("common.cancel")},on:{confirm:function(a){return t.deleteHistoryItem(s)}}},[a("a-button",{staticStyle:{color:"#ff4d4f"},attrs:{type:"link",size:"small",icon:"delete"}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.delete"))+" ")])],1)],1)])]),a("template",{slot:"description"},[a("div",{staticStyle:{color:"#666","font-size":"12px"}},[s.price?a("span",[t._v("$"+t._s(t.formatNumber(s.price)))]):t._e(),s.summary?a("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(s.summary.substring(0,80))+t._s(s.summary.length>80?"...":""))]):t._e()]),s.created_at?a("div",{staticStyle:{color:"#999","font-size":"12px","margin-top":"4px"}},[t._v(" "+t._s(t.formatIsoTime(s.created_at))+" ")]):t._e()])],2)],1)}}])}),t.historyLoading||0!==t.historyList.length?t._e():a("a-empty",{attrs:{description:t.$t("dashboard.analysis.empty.noHistory")}})],1)],1)],1)},i=[function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"hero-bg"},[a("div",{staticClass:"hero-bg-circle c1"}),a("div",{staticClass:"hero-bg-circle c2"}),a("div",{staticClass:"hero-bg-grid"})])}],n=s(44735),r=s(21560),o=s(57532),l=s(2403),c=s(15863),d=s(81127),u=s(56252),m=s(76338),h=(s(2008),s(50113),s(62062),s(2892),s(32637),s(40150),s(79432),s(26099),s(16034),s(27495),s(38781),s(31415),s(99449),s(47764),s(25440),s(42762),s(23500),s(62953),s(95353)),p=s(505),v=s(35038),y=s(24364),f=s(75769),b="/api/fast-analysis";function g(t){return(0,f.Ay)({url:"".concat(b,"/analyze"),method:"post",data:t,timeout:3e5})}function _(t){return(0,f.Ay)({url:"".concat(b,"/history/all"),method:"get",params:t})}function k(t){return(0,f.Ay)({url:"".concat(b,"/history/").concat(t),method:"delete"})}function C(t){return(0,f.Ay)({url:"".concat(b,"/feedback"),method:"post",data:t})}var A=s(44146),S=function(){var t,a,s,e,i,n,r,o,l,c,d,u,m,h,p,v,y,f,b,g,_,k,C=this,A=C._self._c;return A("div",{staticClass:"fast-analysis-report",class:{"theme-dark":C.isDarkTheme}},[C.loading?A("div",{staticClass:"loading-container"},[A("div",{staticClass:"loading-content-pro"},[A("div",{staticClass:"loading-header"},[A("a-icon",{staticClass:"loading-icon-pro",attrs:{type:"thunderbolt"}}),A("span",{staticClass:"loading-title"},[C._v(C._s(C.$t("fastAnalysis.analyzing")))])],1),A("div",{staticClass:"progress-wrapper"},[A("a-progress",{attrs:{percent:C.progressPercent,showInfo:!1,strokeColor:"#1890ff",strokeWidth:8}}),A("span",{staticClass:"progress-text"},[C._v(C._s(C.formatProgress(C.progressPercent))+"%")])],1),A("div",{staticClass:"current-step"},[A("a-icon",{attrs:{type:"loading",spin:""}}),A("span",[C._v(C._s(C.currentStepText))])],1),A("div",{staticClass:"steps-list"},[A("div",{staticClass:"step-item",class:{done:C.step>1,active:1===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step1")||"获取实时数据"))]),C.step>1?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>2,active:2===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step2")||"计算技术指标"))]),C.step>2?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>3,active:3===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step3")||"AI深度分析"))]),C.step>3?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>4,active:4===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step4")||"生成报告"))]),C.step>4?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1)]),A("div",{staticClass:"loading-footer"},[A("span",{staticClass:"elapsed-time"},[C._v(C._s(C.elapsedTimeText))])])])]):C.error?A("div",{staticClass:"error-container"},[A("a-result",{attrs:{status:"warning"===C.errorTone?"warning":"error",title:C.errorTitle,"sub-title":C.error},scopedSlots:C._u([{key:"extra",fn:function(){return[A("a-button",{attrs:{type:"primary"},on:{click:function(t){return C.$emit("retry")}}},[C._v(" "+C._s(C.$t("fastAnalysis.retry"))+" ")])]},proxy:!0}])})],1):C.result?A("div",{staticClass:"result-container"},[A("div",{staticClass:"decision-card",class:C.decisionClass},[A("div",{staticClass:"decision-main"},[A("div",{staticClass:"decision-badge"},[A("a-icon",{attrs:{type:C.decisionIcon}}),A("span",{staticClass:"decision-text"},[C._v(C._s(C.result.decision))])],1),A("div",{staticClass:"confidence-ring"},[A("a-progress",{attrs:{type:"circle",percent:C.result.confidence,width:80,strokeColor:C.confidenceColor},scopedSlots:C._u([{key:"format",fn:function(t){return[A("span",{staticClass:"confidence-value"},[C._v(C._s(t)+"%")])]}}])}),A("div",{staticClass:"confidence-label"},[C._v(C._s(C.$t("fastAnalysis.confidence")))])],1)]),A("div",{staticClass:"decision-summary"},[C._v(" "+C._s(C.result.summary)+" ")]),C.consensusBlock?A("div",{staticClass:"consensus-strip"},[A("div",{staticClass:"consensus-strip-title"},[A("a-icon",{attrs:{type:"cluster"}}),C._v(" "+C._s(C.$t("fastAnalysis.consensusTitle"))+" ")],1),A("div",{staticClass:"consensus-strip-metrics"},[A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusDecision")))]),C._v(" "+C._s(C.consensusBlock.consensus_decision)+" ")]),A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusScore")))]),C._v(" "+C._s(C.formatConsensusNum(C.consensusBlock.consensus_score))+" ")]),null!=C.consensusBlock.agreement_ratio?A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusAgreement")))]),C._v(" "+C._s(C.formatAgreementPct(C.consensusBlock.agreement_ratio))+" ")]):C._e()])]):C._e()]),A("div",{staticClass:"price-info-row",class:{"hold-mode":C.isHoldDecision}},[A("div",{staticClass:"price-card current"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.currentPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(null===(t=C.result.market_data)||void 0===t?void 0:t.current_price)))]),A("div",{staticClass:"price-change",class:(null===(a=C.result.market_data)||void 0===a?void 0:a.change_24h)>=0?"positive":"negative"},[C._v(" "+C._s((null===(s=C.result.market_data)||void 0===s?void 0:s.change_24h)>=0?"+":"")+C._s(C.formatNumber(null===(e=C.result.market_data)||void 0===e?void 0:e.change_24h,2))+"% ")])]),C.isHoldDecision?C._e():[A("div",{staticClass:"price-card entry"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.entryPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.entry_price)))])]),A("div",{staticClass:"price-card stop"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.stopLoss")))]),A("div",{staticClass:"price-value negative"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.stop_loss)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.stopLossHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)]),A("div",{staticClass:"price-card target"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.takeProfit")))]),A("div",{staticClass:"price-value positive"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.take_profit)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.takeProfitHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)])]],2),C.trendOutlookBlocks.length||C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-card"},[A("div",{staticClass:"trend-outlook-header"},[A("a-icon",{attrs:{type:"calendar"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.trendOutlookTitle")))])],1),C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-summary"},[C._v(" "+C._s(C.trendOutlookSummaryText)+" ")]):C._e(),C.trendOutlookBlocks.length?A("div",{staticClass:"trend-outlook-grid"},C._l(C.trendOutlookBlocks,function(t){return A("div",{key:t.key,staticClass:"trend-outlook-item"},[A("div",{staticClass:"to-label"},[C._v(C._s(t.label))]),A("div",{staticClass:"to-trend",class:C.outlookTrendClass(t.trend)},[C._v(" "+C._s(C.formatOutlookTrend(t.trend))+" ")]),A("div",{staticClass:"to-meta"},[A("span",{staticClass:"to-score"},[C._v(C._s(null!=t.score?t.score:"--"))]),A("span",{staticClass:"to-str"},[C._v(C._s(t.strength||"--"))])])])}),0):C._e()]):C._e(),A("div",{staticClass:"scores-row"},[A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technical")))])],1),A("a-progress",{attrs:{percent:(null===(i=C.result.scores)||void 0===i?void 0:i.technical)||50,strokeColor:C.getScoreColor(null===(n=C.result.scores)||void 0===n?void 0:n.technical),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(r=C.result.scores)||void 0===r?void 0:r.technical)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamental")))])],1),A("a-progress",{attrs:{percent:(null===(o=C.result.scores)||void 0===o?void 0:o.fundamental)||50,strokeColor:C.getScoreColor(null===(l=C.result.scores)||void 0===l?void 0:l.fundamental),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(c=C.result.scores)||void 0===c?void 0:c.fundamental)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentiment")))])],1),A("a-progress",{attrs:{percent:(null===(d=C.result.scores)||void 0===d?void 0:d.sentiment)||50,strokeColor:C.getScoreColor(null===(u=C.result.scores)||void 0===u?void 0:u.sentiment),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(m=C.result.scores)||void 0===m?void 0:m.sentiment)||50))])],1),A("div",{staticClass:"score-item overall"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"dashboard"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.overall")))])],1),A("a-progress",{attrs:{percent:(null===(h=C.result.scores)||void 0===h?void 0:h.overall)||50,strokeColor:C.getScoreColor(null===(p=C.result.scores)||void 0===p?void 0:p.overall),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(v=C.result.scores)||void 0===v?void 0:v.overall)||50))])],1)]),C.result.detailed_analysis?A("div",{staticClass:"detailed-analysis"},[C.result.detailed_analysis.technical?A("div",{staticClass:"analysis-card technical"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technicalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(y=C.result.scores)||void 0===y?void 0:y.technical)}},[C._v(" "+C._s((null===(f=C.result.scores)||void 0===f?void 0:f.technical)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.technical)+" ")])]):C._e(),C.result.detailed_analysis.fundamental?A("div",{staticClass:"analysis-card fundamental"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamentalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(b=C.result.scores)||void 0===b?void 0:b.fundamental)}},[C._v(" "+C._s((null===(g=C.result.scores)||void 0===g?void 0:g.fundamental)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.fundamental)+" ")])]):C._e(),C.result.detailed_analysis.sentiment?A("div",{staticClass:"analysis-card sentiment"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentimentAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(_=C.result.scores)||void 0===_?void 0:_.sentiment)}},[C._v(" "+C._s((null===(k=C.result.scores)||void 0===k?void 0:k.sentiment)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.sentiment)+" ")])]):C._e()]):C._e(),A("div",{staticClass:"analysis-details"},[A("div",{staticClass:"detail-section reasons"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"bulb",theme:"twoTone",twoToneColor:"#52c41a"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.keyReasons")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.reasons,function(t,a){return A("li",{key:"r-"+a},[C._v(" "+C._s(t)+" ")])}),0)]),A("div",{staticClass:"detail-section risks"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"warning",theme:"twoTone",twoToneColor:"#faad14"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.risks")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.risks,function(t,a){return A("li",{key:"k-"+a},[C._v(" "+C._s(t)+" ")])}),0)])]),C.result.indicators&&Object.keys(C.result.indicators).length>0?A("div",{staticClass:"indicators-section"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"stock"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicators")))]),A("a-tag",{staticClass:"indicators-pro-badge",attrs:{color:"blue"}},[C._v(C._s(C.$t("fastAnalysis.indicatorsProBadge")))])],1),A("div",{staticClass:"indicators-methodology"},[A("a-icon",{attrs:{type:"experiment"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicatorsProSubtitle")))])],1),A("div",{staticClass:"indicators-grid"},[C.result.indicators.rsi?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("RSI (14)")]),A("div",{staticClass:"indicator-value",class:C.getRsiClass(C.result.indicators.rsi.value)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.rsi.value,1))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.rsi.signal)))])]):C._e(),C.result.indicators.macd?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("MACD (12,26,9)")]),A("div",{staticClass:"indicator-value",class:"bullish"===C.result.indicators.macd.signal?"bullish":"bearish"===C.result.indicators.macd.signal?"bearish":""},[C._v(" "+C._s(C.translateTrend(C.result.indicators.macd.trend))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.macd.signal)))])]):C._e(),C.result.indicators.moving_averages?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.maTrend")))]),A("div",{staticClass:"indicator-value",class:C.getMaTrendClass(C.result.indicators.moving_averages.trend)},[C._v(" "+C._s(C.translateTrend(C.result.indicators.moving_averages.trend))+" ")])]):C._e(),C.result.indicators.volatility&&null!=C.result.indicators.volatility.atr?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("ATR (14)")]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" $"+C._s(C.formatPrice(C.result.indicators.volatility.atr))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.atrTrueRange")))])]):C._e(),C.result.indicators.bollinger&&null!=C.result.indicators.bollinger.BB_width?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.bbWidth")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.bollinger.BB_width,2))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.bbWidthHint")))])]):C._e(),null!=C.result.indicators.price_position?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.rangePct20")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.price_position,1))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.rangePct20Hint")))])]):C._e(),null!=C.result.indicators.volume_ratio?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volumeRatio")))]),A("div",{staticClass:"indicator-value",class:C.volumeRatioClass(C.result.indicators.volume_ratio)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.volume_ratio,2))+"× ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.volumeRatioHint")))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.support")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.support)))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.resistance")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.resistance)))])]):C._e(),C.result.indicators.volatility?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volatility")))]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" "+C._s(C.translateVolatility(C.result.indicators.volatility.level))+" ("+C._s(C.result.indicators.volatility.pct)+"%) ")])]):C._e()]),C.professionalIndicatorRows.length?A("div",{staticClass:"indicators-pro-wrap"},[A("div",{staticClass:"indicators-pro-title"},[A("a-icon",{attrs:{type:"deployment-unit"}}),C._v(" "+C._s(C.$i18n&&"zh-CN"===C.$i18n.locale?"量化参数明细":"Quant Parameters")+" ")],1),A("a-descriptions",{staticClass:"indicators-pro-desc",attrs:{bordered:"",size:"small",column:2}},C._l(C.professionalIndicatorRows,function(t){return A("a-descriptions-item",{key:t.key,attrs:{label:t.label}},[A("span",{class:t.valueClass},[C._v(C._s(t.text))])])}),1)],1):C._e()]):C._e(),A("div",{staticClass:"feedback-section"},[A("div",{staticClass:"feedback-question"},[C._v(C._s(C.$t("fastAnalysis.wasHelpful")))]),A("div",{staticClass:"feedback-buttons"},[A("a-button",{attrs:{type:"helpful"===C.userFeedback?"primary":"default",size:"small",loading:"helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("helpful")}}},[A("a-icon",{attrs:{type:"like"}}),C._v(" "+C._s(C.$t("fastAnalysis.helpful"))+" ")],1),A("a-button",{attrs:{type:"not_helpful"===C.userFeedback?"danger":"default",size:"small",loading:"not_helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("not_helpful")}}},[A("a-icon",{attrs:{type:"dislike"}}),C._v(" "+C._s(C.$t("fastAnalysis.notHelpful"))+" ")],1)],1),A("div",{staticClass:"analysis-meta"},[A("span",[C._v(C._s(C.$t("fastAnalysis.analysisTime"))+": "+C._s(C.result.analysis_time_ms)+"ms")]),C.result.memory_id?A("span",[C._v("ID: #"+C._s(C.result.memory_id))]):C._e()])])]):A("div",{staticClass:"empty-container"},[A("div",{staticClass:"empty-content"},[A("a-icon",{staticClass:"empty-icon",attrs:{type:"radar-chart"}}),A("div",{staticClass:"empty-title"},[C._v(C._s(C.$t("fastAnalysis.selectSymbol")))]),A("div",{staticClass:"empty-hint"},[C._v(C._s(C.$t("fastAnalysis.selectHint")))])],1)])])},w=[],$={name:"FastAnalysisReport",props:{result:{type:Object,default:null},loading:{type:Boolean,default:!1},error:{type:String,default:null},errorTone:{type:String,default:"error",validator:function(t){return["error","warning","info"].includes(t)}}},data:function(){return{userFeedback:null,feedbackLoading:null,progress:0,elapsedSeconds:0,mainTimer:null}},computed:(0,m.A)((0,m.A)({},(0,h.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},progressPercent:function(){return Math.round(10*this.progress)/10},step:function(){return this.progress<25?1:this.progress<50?2:this.progress<75?3:4},currentStepText:function(){var t={1:this.$t("fastAnalysis.step1")||"获取实时数据",2:this.$t("fastAnalysis.step2")||"计算技术指标",3:this.$t("fastAnalysis.step3")||"AI深度分析",4:this.$t("fastAnalysis.step4")||"生成报告"};return t[this.step]||this.$t("fastAnalysis.preparing")||"准备中..."},elapsedTimeText:function(){if(this.elapsedSeconds<60)return"".concat(this.elapsedSeconds,"s");var t=Math.floor(this.elapsedSeconds/60),a=this.elapsedSeconds%60;return"".concat(t,"m ").concat(a,"s")},isHoldDecision:function(){return this.result&&"HOLD"===this.result.decision},decisionClass:function(){if(!this.result)return"";var t=this.result.decision;return"BUY"===t?"decision-buy":"SELL"===t?"decision-sell":"decision-hold"},decisionIcon:function(){if(!this.result)return"question";var t=this.result.decision;return"BUY"===t?"arrow-up":"SELL"===t?"arrow-down":"pause"},confidenceColor:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.confidence)||50;return a>=70?"#52c41a":a>=50?"#1890ff":"#faad14"},consensusBlock:function(){var t,a=null===(t=this.result)||void 0===t?void 0:t.consensus;return a&&"object"===(0,n.A)(a)?null==a.consensus_decision&&null==a.consensus_score?null:a:null},tradingPlan:function(){var t,a,s,e,i,n,r=(null===(t=this.result)||void 0===t?void 0:t.trading_plan)||{},o=null!==(a=r.entry_price)&&void 0!==a?a:r.entryPrice,l=null!==(s=null!==(e=r.stop_loss)&&void 0!==e?e:r.stopLoss)&&void 0!==s?s:r.loss_exit_price,c=null!==(i=null!==(n=r.take_profit)&&void 0!==n?n:r.takeProfit)&&void 0!==i?i:r.profit_target_price;return{entry_price:o,stop_loss:l,take_profit:c}},trendOutlookRaw:function(){var t,a;return(null===(t=this.result)||void 0===t?void 0:t.trend_outlook)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlook)||null},trendOutlookSummaryText:function(){var t,a,s=(null===(t=this.result)||void 0===t?void 0:t.trend_outlook_summary)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlookSummary);return s&&String(s).trim()?String(s).trim():""},trendOutlookBlocks:function(){var t=this,a=this.trendOutlookRaw;if(!a||"object"!==(0,n.A)(a))return[];var s=[{key:"next_24h",labelKey:"fastAnalysis.outlook24h"},{key:"next_3d",labelKey:"fastAnalysis.outlook3d"},{key:"next_1w",labelKey:"fastAnalysis.outlook1w"},{key:"next_1m",labelKey:"fastAnalysis.outlook1m"}];return s.map(function(s){var e=s.key,i=s.labelKey,n=a[e]||{};return{key:e,label:t.$t(i),trend:n.trend,score:n.score,strength:n.strength}}).filter(function(t){var s=a[t.key];return s&&"object"===(0,n.A)(s)&&(null!=s.trend||null!=s.score)})},stopLossHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.stopLossHintShort"):this.$t("fastAnalysis.stopLossHint")},takeProfitHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.takeProfitHintShort"):this.$t("fastAnalysis.takeProfitHint")},professionalIndicatorRows:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.indicators)||{},s=[],e=function(t,a,e){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";void 0!==e&&null!==e&&""!==e&&s.push({key:t,label:a,text:String(e),valueClass:i})},i=a.macd||{};if(null!=i.value&&e("macd_dif",this.$t("fastAnalysis.macdDif"),this.formatCompactNum(i.value)),null!=i.signal_line&&e("macd_dea",this.$t("fastAnalysis.macdDea"),this.formatCompactNum(i.signal_line)),null!=i.histogram){var n=Number(i.histogram),r=n>0?"bullish":n<0?"bearish":"";e("macd_hist",this.$t("fastAnalysis.macdHist"),this.formatCompactNum(i.histogram),r)}var o=a.moving_averages||{};null!=o.ma5&&e("ma5",this.$t("fastAnalysis.ma5Label"),"$"+this.formatPrice(o.ma5)),null!=o.ma10&&e("ma10",this.$t("fastAnalysis.ma10Label"),"$"+this.formatPrice(o.ma10)),null!=o.ma20&&e("ma20",this.$t("fastAnalysis.ma20Label"),"$"+this.formatPrice(o.ma20));var l=a.bollinger||{};null!=l.BB_upper&&e("bb_u",this.$t("fastAnalysis.bbUpper"),"$"+this.formatPrice(l.BB_upper)),null!=l.BB_middle&&e("bb_m",this.$t("fastAnalysis.bbMiddle"),"$"+this.formatPrice(l.BB_middle)),null!=l.BB_lower&&e("bb_l",this.$t("fastAnalysis.bbLower"),"$"+this.formatPrice(l.BB_lower)),null!=l.BB_width&&e("bb_w",this.$t("fastAnalysis.bbWidthPct"),this.formatNumber(l.BB_width,2)+"%");var c=a.levels||{};null!=c.pivot&&e("piv",this.$t("fastAnalysis.pivotStd"),"$"+this.formatPrice(c.pivot)),null!=c.s1&&e("s1",this.$t("fastAnalysis.levelS1"),"$"+this.formatPrice(c.s1)),null!=c.r1&&e("r1",this.$t("fastAnalysis.levelR1"),"$"+this.formatPrice(c.r1)),null!=c.s2&&e("s2",this.$t("fastAnalysis.levelS2"),"$"+this.formatPrice(c.s2)),null!=c.r2&&e("r2",this.$t("fastAnalysis.levelR2"),"$"+this.formatPrice(c.r2)),null!=c.swing_high&&e("sw_h",this.$t("fastAnalysis.swingHigh20"),"$"+this.formatPrice(c.swing_high)),null!=c.swing_low&&e("sw_l",this.$t("fastAnalysis.swingLow20"),"$"+this.formatPrice(c.swing_low));var d=a.volatility||{};if(null!=d.atr){var u=null!=d.pct?this.formatNumber(d.pct,2)+"% ATR/Price":"";e("atr14",this.$t("fastAnalysis.atr14Label"),"$"+this.formatPrice(d.atr)+(u?" · "+u:""))}var m=a.trading_levels||{};return null!=m.risk_reward_ratio&&Number(m.risk_reward_ratio)>0&&e("rr",this.$t("fastAnalysis.rrLongRef"),"1 : "+this.formatNumber(m.risk_reward_ratio,2)),null!=a.current_price&&e("cref",this.$t("fastAnalysis.refClose"),"$"+this.formatPrice(a.current_price)),s},insufficientCreditsError:function(){if(!this.error)return!1;var t=String(this.error);return t.includes("积分不足")||t.toLowerCase().includes("insufficient credits")},errorTitle:function(){return"warning"===this.errorTone?this.$t("fastAnalysis.analysisInProgressTitle"):this.insufficientCreditsError?this.$t("fastAnalysis.insufficientCredits"):this.$t("fastAnalysis.error")}}),watch:{result:function(){this.userFeedback=null},loading:{handler:function(t){t?this.startProgressTimer():this.stopProgressTimer()},immediate:!0}},mounted:function(){this.loading&&this.startProgressTimer()},beforeDestroy:function(){this.stopProgressTimer()},methods:{formatPrice:function(t){if(void 0===t||null===t)return"--";var a=parseFloat(t);return isNaN(a)?"--":a<1?a.toFixed(6):a<100?a.toFixed(4):a<1e4?a.toFixed(2):a.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatNumber:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(void 0===t||null===t)return"--";var s=parseFloat(t);return isNaN(s)?"--":s.toFixed(a)},formatConsensusNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?"--":a.toFixed(1)},formatAgreementPct:function(t){var a=Number(t);return Number.isNaN(a)?"--":"".concat(Math.round(100*a),"%")},formatProgress:function(t){var a=parseFloat(t)||0;return a%1===0?a.toFixed(0):a.toFixed(1)},formatOutlookTrend:function(t){var a=String(t||"HOLD").toUpperCase();return"BUY"===a?this.$t("fastAnalysis.outlookBull"):"SELL"===a?this.$t("fastAnalysis.outlookBear"):this.$t("fastAnalysis.outlookNeutral")},outlookTrendClass:function(t){var a=String(t||"").toUpperCase();return"BUY"===a?"trend-bull":"SELL"===a?"trend-bear":"trend-neutral"},formatCompactNum:function(t){var a=parseFloat(t);return Number.isNaN(a)?"--":0!==a&&Math.abs(a)<1e-4?a.toExponential(2):Math.abs(a)<1?a.toFixed(6):Math.abs(a)<100?a.toFixed(4):a.toFixed(2)},volumeRatioClass:function(t){var a=parseFloat(t);return Number.isNaN(a)?"":a>=1.5?"bullish":a<=.65?"bearish":""},getScoreColor:function(t){return t>=70?"#52c41a":t>=50?"#1890ff":t>=30?"#faad14":"#ff4d4f"},getScoreTagColor:function(t){return t>=70?"green":t>=50?"blue":t>=30?"orange":"red"},getRsiClass:function(t){return t<30?"oversold":t>70?"overbought":""},getMaTrendClass:function(t){return t?t.includes("uptrend")||t.includes("strong_uptrend")?"bullish":t.includes("downtrend")||t.includes("strong_downtrend")?"bearish":"":""},getVolatilityClass:function(t){return"high"===t?"high-volatility":"low"===t?"low-volatility":""},translateSignal:function(t){if(!t)return"--";var a="fastAnalysis.signal.".concat(t),s=this.$t(a);return s===a?t:s},translateTrend:function(t){if(!t)return"--";var a="fastAnalysis.trend.".concat(t),s=this.$t(a);return s===a?t:s},translateVolatility:function(t){if(!t)return"--";var a="fastAnalysis.volatilityLevel.".concat(t),s=this.$t(a);return s===a?t:s},submitFeedback:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(null!==(e=a.result)&&void 0!==e&&e.memory_id){s.n=1;break}return a.$message.warning(a.$t("fastAnalysis.feedbackUnavailable")||"反馈功能暂不可用,请刷新后重试"),s.a(2);case 1:return a.feedbackLoading=t,s.p=2,s.n=3,C({memory_id:a.result.memory_id,feedback:t});case 3:a.userFeedback=t,a.$message.success(a.$t("fastAnalysis.feedbackThanks")),s.n=5;break;case 4:s.p=4,s.v,a.$message.error(a.$t("fastAnalysis.feedbackFailed"));case 5:return s.p=5,a.feedbackLoading=null,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},startProgressTimer:function(){var t=this;this.stopProgressTimer(),this.progress=0,this.elapsedSeconds=0;var a=Date.now();this.mainTimer=window.setInterval(function(){t.elapsedSeconds=Math.floor((Date.now()-a)/1e3),t.progress<75?t.progress=Math.min(t.progress+1,75):t.progress<90?t.progress=Math.min(t.progress+.5,90):t.progress<95&&(t.progress=Math.min(t.progress+.2,95))},100)},stopProgressTimer:function(){this.mainTimer&&(window.clearInterval(this.mainTimer),this.mainTimer=null),this.progress=0,this.elapsedSeconds=0}}},T=$,x=s(845),M=(0,x.A)(T,S,w,!1,null,"03feb1fa",null),P=M.exports,F={name:"Analysis",props:{embedded:{type:Boolean,default:!1},presetSymbol:{type:String,default:""},autoAnalyzeSignal:{type:Number,default:0}},components:{FastAnalysisReport:P},data:function(){return{loadingMarket:!1,heatmapType:"crypto",marketData:{fearGreed:null,vix:null,dxy:null,indices:[],heatmap:{crypto:[],commodities:[],sectors:[],forex:[]},calendar:[]},loadingSentiment:!1,loadingIndices:!1,loadingHeatmap:!1,loadingCalendar:!1,watchlistPriceTimer:null,watchlistPrices:{},localUserInfo:{},loadingUserInfo:!1,userId:1,watchlist:[],loadingWatchlist:!1,showAddStockModal:!1,addingStock:!1,selectedSymbol:void 0,analyzing:!1,analysisResult:null,analysisError:null,analysisErrorTone:"error",showHistoryModal:!1,historyList:[],historyLoading:!1,historyPage:1,historyPageSize:20,historyTotal:0,currentTaskId:null,taskPollingTimer:null,taskPollingStartedAt:0,marketTypes:[],selectedMarketTab:"",symbolSearchKeyword:"",symbolSearchResults:[],searchingSymbols:!1,hotSymbols:[],loadingHotSymbols:!1,selectedSymbolForAdd:null,searchTimer:null,hasSearched:!1,positions:[],monitors:[],positionSummaryMap:{},showPositionModal:!1,showMonitorModal:!1,targetStockForOps:null,positionForm:{side:"long",quantity:null,entryPrice:null},monitorForm:{interval_min:240,notify_channels:[]},batchMode:!1,batchSelectedKeys:[],batchRunning:!1,batchProgress:0,showBatchScheduleModal:!1,batchScheduleForm:{interval_min:240,notify_channels:[]},showTaskDrawer:!1,showEditTaskModal:!1,editTaskLoading:!1,editTaskId:null,editTaskForm:{name:"",interval_min:240,notify_channels:[]}}},computed:(0,m.A)((0,m.A)((0,m.A)({},(0,h.L8)(["userInfo"])),(0,h.aH)({navTheme:function(t){return t.app.theme},primaryColor:function(t){return t.app.color||"#1890ff"}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isZhLocale:function(){return"zh-CN"===this.$i18n.locale},currentHeatmap:function(){return this.marketData.heatmap[this.heatmapType]||[]},storeUserInfo:function(){return this.userInfo||{}},mergedUserInfo:function(){return this.localUserInfo&&this.localUserInfo.email?this.localUserInfo:this.storeUserInfo},watchlistTotalPnl:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(Number(a.pnl)||0)},0)},watchlistPositionCount:function(){return Object.values(this.positionSummaryMap).filter(function(t){return t.quantity>0}).length},watchlistTaskCount:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(a.monitorCount||0)},0)},batchSelectedAll:function(){return this.watchlist&&this.watchlist.length>0&&this.batchSelectedKeys.length===this.watchlist.length},batchIndeterminate:function(){return this.batchSelectedKeys.length>0&&this.batchSelectedKeys.length<(this.watchlist||[]).length}}),created:function(){this.loadUserInfo(),this.loadMarketTypes(),this.loadWatchlist(),this.loadPositionData(),this.loadMarketData()},mounted:function(){this.startWatchlistPriceRefresh()},beforeDestroy:function(){this.watchlistPriceTimer&&clearInterval(this.watchlistPriceTimer),this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null)},methods:{stopTaskPolling:function(){this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null),this.currentTaskId=null,this.taskPollingStartedAt=0},pollTaskResult:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.currentTaskId){a.n=1;break}return a.a(2);case 1:return a.p=1,a.n=2,_({page:1,pagesize:50});case 2:if(s=a.v,s&&1===s.code&&s.data){a.n=3;break}return a.a(2);case 3:if(e=s.data.list||[],i=e.find(function(a){return Number(a.id)===Number(t.currentTaskId)}),i){a.n=4;break}return a.a(2);case 4:if(n=String(i.status||"").toLowerCase(),"completed"!==n){a.n=8;break}if(!i.full_result){a.n=5;break}t.analysisResult=i.full_result,a.n=6;break;case 5:return a.n=6,t.viewHistoryResult(i);case 6:return t.$message.success(t.$t("dashboard.analysis.message.analysisComplete")),a.n=7,t.refreshUserInfoFromServer();case 7:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 8:if("failed"!==n){a.n=10;break}return t.analysisError=i.error_message||t.$t("dashboard.analysis.message.analysisFailed"),t.analysisErrorTone="error",t.$message.error(t.analysisError),a.n=9,t.refreshUserInfoFromServer();case 9:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 10:Date.now()-t.taskPollingStartedAt>18e4&&(t.$message.warning(t.$t("fastAnalysis.analysisStillProcessing")||"任务仍在处理中,请稍后在历史记录查看"),t.analyzing=!1,t.stopTaskPolling());case 11:a.n=13;break;case 12:a.p=12,a.v;case 13:return a.a(2)}},a,null,[[1,12]])}))()},startTaskPolling:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:return a.stopTaskPolling(),a.currentTaskId=Number(t),a.taskPollingStartedAt=Date.now(),s.n=1,a.pollTaskResult();case 1:a.taskPollingTimer=setInterval(function(){a.pollTaskResult()},2500);case 2:return s.a(2)}},s)}))()},watchlistSelectLabel:function(t){if(!t)return"";var a=(t.symbol||"").trim(),s=(t.name||"").trim();return s&&s!==a?"".concat(a," · ").concat(s):a},filterSymbolOption:function(t,a){var s,e=(null===(s=a.componentOptions)||void 0===s?void 0:s.propsData)||{},i=e.value||"";if("__add_stock_option__"===i)return!0;var n=(t||"").toLowerCase(),r=(e.label||"").toString().toLowerCase();return i.toLowerCase().includes(n)||r&&r.includes(n)},handleSymbolChange:function(t){var a=this;if("__add_stock_option__"===t)return this.showAddStockModal=!0,void this.$nextTick(function(){a.selectedSymbol=void 0});this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",t)},selectWatchlistItem:function(t){this.selectedSymbol="".concat(t.market,":").concat(t.symbol),this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",this.selectedSymbol)},hasMonitorForStock:function(t){if(!t)return!1;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!!(s&&s.monitorCount>0)},getMonitorMeta:function(t){if(!t)return null;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!s||s.monitorCount<=0?null:{activeCount:s.activeMonitorCount||0,nextRunAtText:s.nextRunAtText||""}},getPnlBarStyle:function(t){var a=Math.abs(Number((null===t||void 0===t?void 0:t.pnlPercent)||0)),s=Math.min(100,Math.max(4,a));return{width:"".concat(s,"%")}},_displayDateTimeLocaleOptions:function(){var t=String(this.storeUserInfo&&this.storeUserInfo.timezone||"").trim(),a={year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};if(!t)return a;try{return Intl.DateTimeFormat(void 0,{timeZone:t}).format(new Date),(0,m.A)((0,m.A)({},a),{},{timeZone:t})}catch(s){return a}},_parseInstantForDisplay:function(t){if(t=String(t||"").trim(),!t)return null;var a=/[zZ]$/.test(t)||/[+-]\d{2}:?\d{2}$/.test(t);if(!a){var s=t.replace(" ","T");t=s.endsWith("Z")?s:"".concat(s,"Z")}var e=new Date(t);return Number.isNaN(e.getTime())?null:e},_formatNextRunText:function(t){try{var a=this._parseInstantForDisplay(t);return a?a.toLocaleString(void 0,this._displayDateTimeLocaleOptions()):""}catch(s){return""}},buildPositionSummary:function(){var t=this,a={},s=Array.isArray(this.positions)?this.positions:[],e=Array.isArray(this.monitors)?this.monitors:[],i=new Set,n={};s.forEach(function(t){n[Number(t.id)]="".concat(t.market,":").concat(t.symbol)}),e.forEach(function(s){var e=Array.isArray(s.position_ids)?s.position_ids:[];e.forEach(function(t){return i.add(Number(t))});var r=!!s.is_active,o=s.next_run_at||"";e.forEach(function(s){var e=n[Number(s)];e&&(a[e]||(a[e]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[e].monitorCount+=1,r&&(a[e].activeMonitorCount+=1),!a[e].nextRunAtText&&o&&(a[e].nextRunAtText=t._formatNextRunText(o)))})}),s.forEach(function(t){var s="".concat(t.market,":").concat(t.symbol),e=Number(t.quantity||0),n=Number(t.entry_price||0);a[s]||(a[s]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[s].quantity+=e,a[s].weightedEntry+=e*n,a[s].pnl+=Number(t.pnl||0),a[s].marketValue+=Number(t.market_value||0),i.has(Number(t.id))&&(a[s].monitorCount+=1)}),Object.keys(a).forEach(function(t){var s=a[t];s.avgEntry=s.quantity>0?s.weightedEntry/s.quantity:0;var e=s.quantity>0?s.weightedEntry:0;s.pnlPercent=e>0?s.pnl/e*100:0}),this.positionSummaryMap=a},toggleStockMonitor:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r,o,l;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(e="".concat(t.market,":").concat(t.symbol),i=(a.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),0!==i.length){s.n=1;break}return s.a(2);case 1:if(n=(a.monitors||[]).filter(function(t){var a=Array.isArray(t.position_ids)?t.position_ids.map(function(t){return Number(t)}):[];return a.some(function(t){return i.includes(t)})}),0!==n.length){s.n=2;break}return s.a(2);case 2:return r=!n.some(function(t){return!!t.is_active}),s.p=3,s.n=4,Promise.all(n.map(function(t){return(0,y.sk)(t.id,{is_active:r})}));case 4:return a.$message.success(r?a.$t("aiAssetAnalysis.monitor.enabled")||"已启用任务":a.$t("aiAssetAnalysis.monitor.disabled")||"已暂停任务"),s.n=5,a.loadPositionData();case 5:s.n=7;break;case 6:s.p=6,l=s.v,a.$message.error((null===l||void 0===l||null===(o=l.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===l||void 0===l?void 0:l.message)||"Toggle monitor failed");case 7:return s.a(2)}},s,null,[[3,6]])}))()},loadPositionData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,Promise.all([(0,y.Dt)(),(0,y.w1)()]);case 1:s=a.v,e=(0,c.A)(s,2),i=e[0],n=e[1],t.positions=i&&1===i.code&&i.data||[],t.monitors=n&&1===n.code&&n.data||[],t.buildPositionSummary(),a.n=3;break;case 2:a.p=2,a.v,t.positions=[],t.monitors=[],t.positionSummaryMap={};case 3:return a.a(2)}},a,null,[[0,2]])}))()},openPositionModal:function(t){this.targetStockForOps=t;var a="".concat(t.market,":").concat(t.symbol),s=(this.positions||[]).find(function(t){return"".concat(t.market,":").concat(t.symbol)===a});if(s){var e=Number(s.quantity||0);this.positionForm={side:s.side||(e<0?"short":"long"),quantity:Math.abs(e)||null,entryPrice:Number(s.entry_price||0)||null}}else this.positionForm={side:"long",quantity:null,entryPrice:null};this.showPositionModal=!0},savePosition:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:if(e=Number(t.positionForm.quantity||0),i=Number(t.positionForm.entryPrice||0),e>0&&i>0){a.n=2;break}return t.$message.warning(t.$i18n&&"zh-CN"===t.$i18n.locale?"请输入有效的数量和买入单价":"Please enter valid quantity and entry price"),a.a(2);case 2:return a.p=2,a.n=3,(0,y.Ps)({market:s.market,symbol:s.symbol,name:s.name||s.symbol,side:t.positionForm.side||"long",quantity:e,entry_price:i});case 3:if(n=a.v,!n||1!==n.code){a.n=5;break}return t.$message.success(t.$t("portfolio.positions.add")+" OK"),t.showPositionModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===n||void 0===n?void 0:n.msg)||"Add position failed");case 6:a.n=8;break;case 7:a.p=7,o=a.v,t.$message.error((null===o||void 0===o||null===(r=o.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===o||void 0===o?void 0:o.message)||"Add position failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},openMonitorModal:function(t){this.targetStockForOps=t,this.monitorForm={interval_min:240,notify_channels:[]},this.showMonitorModal=!0},saveMonitorTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,c;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:return e="".concat(s.market,":").concat(s.symbol),i=t.monitorForm.interval_min,n=t.monitorForm.notify_channels||[],r=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(s.symbol,"-").concat(i,"m"),position_ids:r,monitor_type:"ai",config:{run_interval_minutes:i,symbol:s.symbol,market:s.market,language:t.$store.getters.lang||t.$i18n.locale||"en-US"},notification_config:{channels:n},is_active:!0});case 3:if(o=a.v,!o||1!==o.code){a.n=5;break}return t.$message.success(t.$t("aiAssetAnalysis.monitor.created")),t.showMonitorModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||"Create monitor failed");case 6:a.n=8;break;case 7:a.p=7,c=a.v,t.$message.error((null===c||void 0===c||null===(l=c.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.msg)||(null===c||void 0===c?void 0:c.message)||"Create monitor failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},toggleBatchMode:function(){this.batchMode=!this.batchMode,this.batchMode||(this.batchSelectedKeys=[])},onBatchSelectAll:function(t){t.target.checked?this.batchSelectedKeys=(this.watchlist||[]).map(function(t){return"".concat(t.market,":").concat(t.symbol)}):this.batchSelectedKeys=[]},onBatchItemToggle:function(t,a){var s="".concat(t.market,":").concat(t.symbol);a.target.checked?this.batchSelectedKeys.includes(s)||this.batchSelectedKeys.push(s):this.batchSelectedKeys=this.batchSelectedKeys.filter(function(t){return t!==s})},openBatchScheduleModal:function(){0!==this.batchSelectedKeys.length&&(this.batchScheduleForm={interval_min:240,notify_channels:[]},this.showBatchScheduleModal=!0)},saveBatchSchedule:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,u,m,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=(0,l.A)(t.batchSelectedKeys),0!==s.length){a.n=1;break}return a.a(2);case 1:t.batchRunning=!0,e=t.batchScheduleForm.interval_min,i=t.batchScheduleForm.notify_channels||[],n=0,u=(0,o.A)(s),a.p=2,h=(0,d.A)().m(function a(){var s,r,o,l,u,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=m.value,r=s.split(":"),o=(0,c.A)(r,2),l=o[0],u=o[1],h=(t.watchlist||[]).find(function(t){return t.market===l&&t.symbol===u}),h){a.n=1;break}return a.a(2,1);case 1:return p=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===s}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(u,"-").concat(e,"m"),position_ids:p,monitor_type:"ai",config:{run_interval_minutes:e,symbol:u,market:l,language:t.$store.getters.lang||t.$i18n.locale||"en-US"},notification_config:{channels:i},is_active:!0});case 3:n++,a.n=5;break;case 4:a.p=4,a.v;case 5:return a.a(2)}},a,null,[[2,4]])}),u.s();case 3:if((m=u.n()).done){a.n=6;break}return a.d((0,r.A)(h()),4);case 4:if(!a.v){a.n=5;break}return a.a(3,5);case 5:a.n=3;break;case 6:a.n=8;break;case 7:a.p=7,p=a.v,u.e(p);case 8:return a.p=8,u.f(),a.f(8);case 9:return t.batchRunning=!1,t.showBatchScheduleModal=!1,t.batchMode=!1,t.batchSelectedKeys=[],a.n=10,t.loadPositionData();case 10:t.$message.success(t.$t("aiAssetAnalysis.batch.done")+" (".concat(n,"/").concat(s.length,")"));case 11:return a.a(2)}},a,null,[[2,7,8,9]])}))()},formatIntervalText:function(t){return t>=1440?"".concat(Math.round(t/1440),"d"):t>=60?"".concat(Math.round(t/60),"h"):"".concat(t,"m")},handleToggleTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.sk)(t.id,{is_active:!t.is_active});case 1:return a.$message.success(t.is_active?a.$t("aiAssetAnalysis.tasks.paused"):a.$t("aiAssetAnalysis.tasks.resumed")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},handleEditTask:function(t){this.editTaskId=t.id,this.editTaskForm={name:t.name||"",interval_min:t.config&&t.config.run_interval_minutes||240,notify_channels:t.notification_config&&t.notification_config.channels||[]},this.showEditTaskModal=!0},saveEditTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.editTaskId){a.n=1;break}return a.a(2);case 1:return t.editTaskLoading=!0,a.p=2,a.n=3,(0,y.sk)(t.editTaskId,{name:t.editTaskForm.name,config:{run_interval_minutes:t.editTaskForm.interval_min},notification_config:{channels:t.editTaskForm.notify_channels}});case 3:return t.$message.success("OK"),t.showEditTaskModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:a.p=5,e=a.v,t.$message.error((null===e||void 0===e||null===(s=e.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.msg)||(null===e||void 0===e?void 0:e.message)||"Failed");case 6:return a.p=6,t.editTaskLoading=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},handleDeleteTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.ei)(t.id);case 1:return a.$message.success(a.$t("aiAssetAnalysis.tasks.deleted")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},loadMarketData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){return(0,d.A)().w(function(a){while(1)switch(a.n){case 0:t.loadingMarket=!0,t.loadSentimentData(),t.loadIndicesData(),t.loadHeatmapData(),t.loadCalendarData();case 1:return a.a(2)}},a)}))()},loadSentimentData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingSentiment=!0,a.p=1,a.n=2,(0,A.EF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.fearGreed=(null===(e=s.data.fear_greed)||void 0===e?void 0:e.value)||null,t.marketData.vix=(null===(i=s.data.vix)||void 0===i?void 0:i.value)||null,t.marketData.dxy=(null===(n=s.data.dxy)||void 0===n?void 0:n.value)||null),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingSentiment=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadIndicesData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingIndices=!0,a.p=1,a.n=2,(0,A.yI)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.indices=s.data.indices||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingIndices=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadHeatmapData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingHeatmap=!0,a.p=1,a.n=2,(0,A.f$)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.heatmap={crypto:s.data.crypto||[],commodities:s.data.commodities||[],sectors:s.data.sectors||[],forex:s.data.forex||[]}),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingHeatmap=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadCalendarData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingCalendar=!0,a.p=1,a.n=2,(0,A.kF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&(t.marketData.calendar=s.data||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingCalendar=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},checkAllLoaded:function(){this.loadingSentiment||this.loadingIndices||this.loadingHeatmap||this.loadingCalendar||(this.loadingMarket=!1)},getFearGreedClass:function(t){return t?t<=25?"extreme-fear":t<=45?"fear":t<=55?"neutral":t<=75?"greed":"extreme-greed":""},getVixLevel:function(t){return t?t<15?"low":t<25?"medium":"high":""},formatNum:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t||isNaN(t)?"--":Number(t).toFixed(a)},getHeatmapStyle:function(t){var a=parseFloat(t)||0,s=Math.min(Math.abs(a)/5,1),e=this.isDarkTheme;if(a>=0){var i=e?a>2?"#fff":"#4ade80":a>2?"#fff":"#166534";return{background:"rgba(34, 197, 94, ".concat(.15+.6*s,")"),color:i}}var n=e?a<-2?"#fff":"#f87171":a<-2?"#fff":"#991b1b";return{background:"rgba(239, 68, 68, ".concat(.15+.6*s,")"),color:n}},getCountryFlag:function(t){var a={US:"🇺🇸",CN:"🇨🇳",EU:"🇪🇺",JP:"🇯🇵",UK:"🇬🇧",DE:"🇩🇪",AU:"🇦🇺",CA:"🇨🇦"};return a[t]||"🌍"},formatCalendarDate:function(t){if(!t)return"";try{var a=new Date(t),s=new Date,e=new Date(s);if(e.setDate(e.getDate()+1),a.toDateString()===s.toDateString())return this.isZhLocale?"今天":"Today";if(a.toDateString()===e.toDateString())return this.isZhLocale?"明天":"Tmrw";var i=a.getMonth()+1,n=a.getDate();return"".concat(i,"/").concat(n)}catch(r){return t}},formatPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1e3?t.toFixed(0):t.toFixed(2):"--"},formatHeatmapPrice:function(t){return t?t>=1e4?"$"+(t/1e3).toFixed(1)+"K":t>=1e3?"$"+t.toFixed(0):t>=1?"$"+t.toFixed(2):"$"+t.toFixed(4):""},getHeatmapName:function(t){return"sectors"===this.heatmapType||"commodities"===this.heatmapType||"forex"===this.heatmapType?this.isZhLocale?t.name_cn||t.name:t.name_en||t.name:t.name},getImpactClass:function(t){return t.actual_impact||t.expected_impact||"neutral"},getMarketColor:function(t){var a={USStock:"green",CNStock:"blue",HKStock:"geekblue",Crypto:"purple",Forex:"gold",Futures:"cyan"};return a[t]||"default"},getCurrencySymbol:function(t){return"$"},formatCreditNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?String(t):Number.isInteger(a)?String(a):a.toFixed(2)},refreshUserInfoFromServer:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.ug)();case 1:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data)),a.n=3;break;case 2:a.p=2,a.v;case 3:return a.a(2)}},a,null,[[0,2]])}))()},startFastAnalysis:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,u,h,p,v,y,f,b,_,k,C;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(!t.analyzing){a.n=1;break}return a.a(2);case 1:if(t.selectedSymbol){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.message.selectSymbol")),a.a(2);case 2:return t.analyzing=!0,t.analysisError=null,t.analysisErrorTone="error",s=t.selectedSymbol.split(":"),e=(0,c.A)(s,2),i=e[0],n=e[1],r=t.$store.getters.lang||"zh-CN",o=!1,a.p=3,a.n=4,g({market:i,symbol:n,language:r,timeframe:"1D",async_submit:!0});case 4:if(l=a.v,!l||1!==l.code||!l.data){a.n=9;break}if("processing"!==l.data.status){a.n=6;break}return o=!0,u=l.data.remaining_credits,void 0!==u&&null!==u?t.$message.success(t.$t("fastAnalysis.analysisSubmittedWithCredits",{remaining:t.formatCreditNum(u)})):t.$message.success(t.$t("fastAnalysis.analysisSubmitted")||"任务已提交,正在分析中"),a.n=5,t.startTaskPolling(l.data.task_id);case 5:a.n=7;break;case 6:h=(0,m.A)({},l.data),delete h.credits_charged,delete h.remaining_credits,t.analysisResult=h,p=l.data.remaining_credits,void 0!==p&&null!==p?t.$message.success(t.$t("fastAnalysis.analysisCompleteWithCredits",{remaining:t.formatCreditNum(p)})):t.$message.success(t.$t("dashboard.analysis.message.analysisComplete"));case 7:return a.n=8,t.refreshUserInfoFromServer();case 8:a.n=10;break;case 9:throw new Error((null===l||void 0===l?void 0:l.msg)||"分析失败");case 10:a.n=12;break;case 11:a.p=11,C=a.v,f=null===C||void 0===C||null===(v=C.response)||void 0===v?void 0:v.status,b=(null===C||void 0===C||null===(y=C.response)||void 0===y?void 0:y.data)||{},_=b.msg,k=b.data,429===f&&k&&k.in_progress?(t.analysisErrorTone="warning",t.analysisError=t.$t("fastAnalysis.analysisInProgress"),t.$message.warning(t.analysisError)):400===f&&"Insufficient credits"===_?(t.analysisError=t.$t("fastAnalysis.insufficientCreditsDetail",{required:t.formatCreditNum(null===k||void 0===k?void 0:k.required),current:t.formatCreditNum(null===k||void 0===k?void 0:k.current),shortage:t.formatCreditNum(null===k||void 0===k?void 0:k.shortage)}),t.$message.error(t.analysisError)):(t.analysisError=_||(null===C||void 0===C?void 0:C.message)||t.$t("dashboard.analysis.message.analysisFailed"),t.$message.error(t.analysisError));case 12:return a.p=12,o||(t.analyzing=!1),a.f(12);case 13:return a.a(2)}},a,null,[[3,11,12,13]])}))()},loadHistoryList:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,_({page:t.historyPage,pagesize:t.historyPageSize});case 2:s=a.v,s&&1===s.code&&s.data&&(t.historyList=s.data.list||[],t.historyTotal=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("dashboard.analysis.message.loadHistoryFailed")||"加载历史记录失败");case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},viewHistoryResult:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r;return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:if("processing"!==(t.status||"").toLowerCase()){s.n=1;break}return a.$message.info(a.$t("fastAnalysis.analysisStillProcessing")||"该任务仍在处理中,请稍后刷新历史记录"),s.a(2);case 1:if(!t.full_result){s.n=2;break}return a.analysisResult=t.full_result,a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1,s.a(2);case 2:e=Number(t.price)||0,i=String(t.decision||"HOLD").toUpperCase(),n=null,r=null,e>0&&("SELL"===i?(n=1.05*e,r=.95*e):"BUY"===i&&(n=.95*e,r=1.05*e)),a.analysisResult={decision:t.decision,confidence:t.confidence,summary:t.summary,market_data:{current_price:t.price,change_24h:0},trading_plan:{entry_price:t.price,stop_loss:n,take_profit:r},scores:t.scores||{},reasons:t.reasons||[],risks:[],indicators:t.indicators||{},memory_id:t.id,analysis_time_ms:0},a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1;case 3:return s.a(2)}},s)}))()},deleteHistoryItem:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,k(t.id);case 1:e=s.v,e&&1===e.code?(a.$message.success(a.$t("dashboard.analysis.message.deleteSuccess")),a.loadHistoryList()):a.$message.error((null===e||void 0===e?void 0:e.msg)||a.$t("dashboard.analysis.message.deleteFailed")),s.n=3;break;case 2:s.p=2,s.v,a.$message.error(a.$t("dashboard.analysis.message.deleteFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},formatTime:function(t){if(!t)return"-";var a=new Date(1e3*t);return Number.isNaN(a.getTime())?"-":a.toLocaleString(void 0,this._displayDateTimeLocaleOptions())},formatIsoTime:function(t){var a=this._parseInstantForDisplay(t);return a?a.toLocaleString(void 0,this._displayDateTimeLocaleOptions()):"-"},getStatusColor:function(t){var a={pending:"orange",processing:"blue",completed:"green",failed:"red"};return a[t]||"default"},getStatusText:function(t){var a={pending:"dashboard.analysis.status.pending",processing:"dashboard.analysis.status.processing",completed:"dashboard.analysis.status.completed",failed:"dashboard.analysis.status.failed"},s=a[t];return s?this.$t(s):t},loadUserInfo:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.loadingUserInfo=!0,a.p=1,!t.storeUserInfo||!t.storeUserInfo.email){a.n=2;break}return t.localUserInfo=t.storeUserInfo,t.userId=t.storeUserInfo.id,t.loadingUserInfo=!1,t.loadWatchlist(),a.a(2);case 2:return a.n=3,(0,p.ug)();case 3:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data),t.loadWatchlist()),a.n=5;break;case 4:a.p=4,a.v;case 5:return a.p=5,t.loadingUserInfo=!1,a.f(5);case 6:return a.a(2)}},a,null,[[1,4,5,6]])}))()},loadWatchlist:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.userId){a.n=1;break}return a.a(2);case 1:return t.loadingWatchlist=!0,a.p=2,a.n=3,(0,v.Qo)({userid:t.userId});case 3:if(s=a.v,!s||1!==s.code||!s.data){a.n=4;break}return t.watchlist=s.data.map(function(t){return(0,m.A)((0,m.A)({},t),{},{price:0,change:0,changePercent:0})}),a.n=4,t.loadWatchlistPrices();case 4:a.n=6;break;case 5:a.p=5,a.v;case 6:return a.p=6,t.loadingWatchlist=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},loadWatchlistPrices:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.watchlist&&0!==t.watchlist.length){a.n=1;break}return a.a(2);case 1:return a.p=1,s=t.watchlist.map(function(t){return{market:t.market,symbol:t.symbol}}),a.n=2,(0,v.ms)({watchlist:s});case 2:e=a.v,e&&1===e.code&&e.data&&(i={},n={},e.data.forEach(function(t){i["".concat(t.market,"-").concat(t.symbol)]=t,n["".concat(t.market,":").concat(t.symbol)]={price:t.price||0,change:t.changePercent||0}}),t.watchlistPrices=n,t.watchlist=t.watchlist.map(function(t){var a="".concat(t.market,"-").concat(t.symbol),s=i[a];return s?(0,m.A)((0,m.A)({},t),{},{price:s.price||0,change:s.change||0,changePercent:s.changePercent||0}):t})),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},startWatchlistPriceRefresh:function(){var t=this;this.watchlistPriceTimer=setInterval(function(){t.watchlist&&t.watchlist.length>0&&t.loadWatchlistPrices()},3e4),this.watchlist&&this.watchlist.length>0&&this.loadWatchlistPrices()},handleAddStock:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s="",e="",i="",!t.selectedSymbolForAdd){a.n=1;break}s=t.selectedSymbolForAdd.market,e=t.selectedSymbolForAdd.symbol.toUpperCase(),i=t.selectedSymbolForAdd.name||"",a.n=4;break;case 1:if(!t.symbolSearchKeyword||!t.symbolSearchKeyword.trim()){a.n=3;break}if(t.selectedMarketTab){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:s=t.selectedMarketTab,e=t.symbolSearchKeyword.trim().toUpperCase(),i="",a.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),a.a(2);case 4:return t.addingStock=!0,a.p=5,a.n=6,(0,v.dp)({userid:t.userId,market:s,symbol:e,name:i});case 6:if(n=a.v,!n||1!==n.code){a.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),t.handleCloseAddStockModal(),a.n=7,t.loadWatchlist();case 7:a.n=9;break;case 8:t.$message.error((null===n||void 0===n?void 0:n.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:a.n=11;break;case 10:a.p=10,l=a.v,o=(null===l||void 0===l||null===(r=l.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===l||void 0===l?void 0:l.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(o);case 11:return a.p=11,t.addingStock=!1,a.f(11);case 12:return a.a(2)}},a,null,[[5,10,11,12]])}))()},handleCloseAddStockModal:function(){this.showAddStockModal=!1,this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.selectedMarketTab=this.marketTypes.length>0?this.marketTypes[0].value:""},handleMarketTabChange:function(t){this.selectedMarketTab=t,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.selectedSymbolForAdd=null,this.hasSearched=!1,this.loadHotSymbols(t)},handleSymbolSearchInput:function(t){var a=this,s=t.target.value;if(this.symbolSearchKeyword=s,this.searchTimer&&clearTimeout(this.searchTimer),!s||""===s.trim())return this.symbolSearchResults=[],this.hasSearched=!1,void(this.selectedSymbolForAdd=null);this.searchTimer=setTimeout(function(){a.searchSymbolsInModal(s)},500)},handleSearchOrInput:function(t){t&&t.trim()&&(this.selectedMarketTab?this.symbolSearchResults.length>0||(this.hasSearched&&0===this.symbolSearchResults.length?this.handleDirectAdd():this.searchSymbolsInModal(t)):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},searchSymbolsInModal:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t&&""!==t.trim()){s.n=1;break}return a.symbolSearchResults=[],a.hasSearched=!1,s.a(2);case 1:if(a.selectedMarketTab){s.n=2;break}return a.$message.warning(a.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),s.a(2);case 2:return a.searchingSymbols=!0,a.hasSearched=!0,s.p=3,s.n=4,(0,v._3)({market:a.selectedMarketTab,keyword:t.trim(),limit:20});case 4:e=s.v,e&&1===e.code&&e.data&&e.data.length>0?a.symbolSearchResults=e.data:(a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""}),s.n=6;break;case 5:s.p=5,s.v,a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""};case 6:return s.p=6,a.searchingSymbols=!1,s.f(6);case 7:return s.a(2)}},s,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.symbolSearchKeyword&&this.symbolSearchKeyword.trim()?this.selectedMarketTab?this.selectedSymbolForAdd={market:this.selectedMarketTab,symbol:this.symbolSearchKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},selectSymbol:function(t){this.selectedSymbolForAdd={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},loadHotSymbols:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t||(t=a.selectedMarketTab||(a.marketTypes.length>0?a.marketTypes[0].value:"")),t){s.n=1;break}return s.a(2);case 1:return a.loadingHotSymbols=!0,s.p=2,s.n=3,(0,v.z6)({market:t,limit:10});case 3:e=s.v,e&&1===e.code&&e.data?a.hotSymbols=e.data:a.hotSymbols=[],s.n=5;break;case 4:s.p=4,s.v,a.hotSymbols=[];case 5:return s.p=5,a.loadingHotSymbols=!1,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},removeFromWatchlist:function(t){var a=arguments,s=this;return(0,u.A)((0,d.A)().m(function e(){var i,r,o;return(0,d.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(s.userId){e.n=1;break}return e.a(2);case 1:return i="object"===(0,n.A)(t)?t.symbol:t,r="object"===(0,n.A)(t)?t.market:a[1],e.p=2,e.n=3,(0,v.mk)({userid:s.userId,symbol:i,market:r});case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return s.$message.success(s.$t("dashboard.analysis.message.removeStockSuccess")),e.n=4,s.loadWatchlist();case 4:e.n=6;break;case 5:s.$message.error((null===o||void 0===o?void 0:o.msg)||s.$t("dashboard.analysis.message.removeStockFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,s.$message.error(s.$t("dashboard.analysis.message.removeStockFailed"));case 8:return e.a(2)}},e,null,[[2,7]])}))()},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},formatNumber:function(t){return"string"===typeof t?t:t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},loadMarketTypes:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,v.iO)();case 1:s=a.v,s&&1===s.code&&s.data&&Array.isArray(s.data)?t.marketTypes=s.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"CNStock",i18nKey:"dashboard.analysis.market.CNStock"},{value:"HKStock",i18nKey:"dashboard.analysis.market.HKStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],a.n=3;break;case 2:a.p=2,a.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"CNStock",i18nKey:"dashboard.analysis.market.CNStock"},{value:"HKStock",i18nKey:"dashboard.analysis.market.HKStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:t.marketTypes.length>0&&!t.selectedMarketTab&&(t.selectedMarketTab=t.marketTypes[0].value);case 4:return a.a(2)}},a,null,[[0,2]])}))()}},watch:{presetSymbol:function(t){t&&t!==this.selectedSymbol&&(this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error")},autoAnalyzeSignal:function(t){var a=this;t&&(this.presetSymbol&&this.presetSymbol!==this.selectedSymbol&&(this.selectedSymbol=this.presetSymbol),this.$nextTick(function(){a.startFastAnalysis()}))},showAddStockModal:function(t){t?(this.marketTypes.length>0&&!this.selectedMarketTab&&(this.selectedMarketTab=this.marketTypes[0].value),this.selectedMarketTab&&this.loadHotSymbols(this.selectedMarketTab)):(this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.searchTimer&&(clearTimeout(this.searchTimer),this.searchTimer=null))}}},N=F,I=(0,x.A)(N,e,i,!1,null,"0fce93ef",null),D=I.exports},44146:function(t,a,s){s.d(a,{EF:function(){return l},f$:function(){return r},kF:function(){return o},r9:function(){return c},yI:function(){return n}});var e=s(75769),i="/api/global-market";function n(){return(0,e.Ay)({url:"".concat(i,"/overview"),method:"get"})}function r(){return(0,e.Ay)({url:"".concat(i,"/heatmap"),method:"get"})}function o(){return(0,e.Ay)({url:"".concat(i,"/calendar"),method:"get"})}function l(){return(0,e.Ay)({url:"".concat(i,"/sentiment"),method:"get"})}function c(t){return(0,e.Ay)({url:"".concat(i,"/opportunities"),method:"get",params:t})}},35038:function(t,a,s){s.d(a,{Qo:function(){return n},_3:function(){return d},dp:function(){return r},iO:function(){return c},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var e=s(75769),i={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function n(t){return(0,e.Ay)({url:i.GetWatchlist,method:"get",params:t})}function r(t){return(0,e.Ay)({url:i.AddWatchlist,method:"post",data:t})}function o(t){return(0,e.Ay)({url:i.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,e.Ay)({url:i.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function c(){return(0,e.Ay)({url:i.GetMarketTypes,method:"get"})}function d(t){return(0,e.Ay)({url:i.SearchSymbols,method:"get",params:t})}function u(t){return(0,e.Ay)({url:i.GetHotSymbols,method:"get",params:t})}},24364:function(t,a,s){s.d(a,{$p:function(){return o},Dt:function(){return i},Iw:function(){return v},Ps:function(){return n},Xg:function(){return r},_3:function(){return g},aU:function(){return h},bC:function(){return l},cg:function(){return y},ei:function(){return m},f:function(){return b},iO:function(){return _},qS:function(){return f},qu:function(){return p},sk:function(){return u},w1:function(){return c},yr:function(){return d}});var e=s(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function n(t){return(0,e.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function r(t,a){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:a})}function o(t){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"get"})}function d(t){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function u(t,a){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:a})}function m(t){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function h(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:a})}function p(){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function y(t,a){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:a})}function f(t){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function b(){return(0,e.Ay)({url:"/api/portfolio/groups",method:"get"})}function g(t){return(0,e.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function _(){return(0,e.Ay)({url:"/api/market/types",method:"get"})}},21560:function(t,a,s){s.d(a,{A:function(){return i}});s(52675),s(89463),s(2259),s(26099),s(47764),s(62953);var e=s(44735);function i(t){if(null!=t){var a=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],s=0;if(a)return a.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&s>=t.length&&(t=void 0),{value:t&&t[s++],done:!t}}}}throw new TypeError((0,e.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/161-legacy.48ab2cbb.js b/frontend/dist/js/161-legacy.48ab2cbb.js deleted file mode 100644 index 8f8e3df..0000000 --- a/frontend/dist/js/161-legacy.48ab2cbb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[161],{7126:function(t,a,s){s.r(a),s.d(a,{default:function(){return R}});s(62010),s(9868);var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-asset-analysis-page",class:{"theme-dark":t.isDarkTheme}},[t.opportunities.length>0?a("div",{staticClass:"radar-section"},[a("div",{staticClass:"radar-header"},[a("div",{staticClass:"radar-header-left"},[a("h2",{staticClass:"radar-title"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.title")))]),a("p",{staticClass:"radar-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.updateHint")))])]),a("a-button",{staticClass:"radar-refresh-btn",attrs:{size:"small",loading:t.oppLoading},on:{click:function(a){return t.loadOpportunities(!0)}}},[a("a-icon",{attrs:{type:"sync"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),a("div",{staticClass:"radar-carousel",on:{mouseenter:function(a){t.oppHover=!0},mouseleave:function(a){t.oppHover=!1}}},[a("div",{staticClass:"radar-track",class:{paused:t.oppHover},style:t.oppTrackStyle},t._l(t.carouselItems,function(s,e){return a("div",{key:"opp-"+e,staticClass:"radar-card",class:[s.impact,{"is-prediction":"PredictionMarket"===s.market}],on:{click:function(a){return t.analyzeOpportunity(s)}}},[a("div",{staticClass:"rc-head"},[a("span",{staticClass:"rc-symbol",class:{"rc-prediction-title":"PredictionMarket"===s.market}},[t._v(" "+t._s("PredictionMarket"===s.market&&s.name||s.symbol)+" ")]),a("span",{staticClass:"rc-market",class:"rc-market-"+(s.market||"").toLowerCase()},[t._v(" "+t._s(t.getMarketLabel(s.market))+" ")])]),"PredictionMarket"!==s.market?a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"当前价格":"Price"))]),a("span",{staticClass:"rc-metric-value"},[t._v("$"+t._s(t.formatOppPrice(s.price)))])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"24h涨跌":"24h Change"))]),a("span",{staticClass:"rc-metric-value",class:s.change_24h>=0?"rc-up":"rc-down"},[t._v(" "+t._s(s.change_24h>=0?"+":"")+t._s((s.change_24h||0).toFixed(2))+"% ")])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"信号":"Signal"))]),a("span",{staticClass:"rc-metric-value rc-signal-val",class:"rc-signal-"+(s.signal||"")},[t._v(" "+t._s(t.getSignalLabel(s.signal))+" ")])])]):a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"市场概率":"Probability"))]),a("span",{staticClass:"rc-metric-value"},[t._v(t._s((s.price||0).toFixed(1))+"%")])]),s.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"机会评分":"Score"))]),a("span",{staticClass:"rc-metric-value rc-up"},[t._v(t._s(s.ai_analysis.opportunity_score.toFixed(0)))])]):t._e(),s.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"建议":"Rec."))]),a("span",{staticClass:"rc-metric-value",class:"YES"===s.ai_analysis.recommendation?"rc-up":"NO"===s.ai_analysis.recommendation?"rc-down":""},[t._v(" "+t._s(t.getRecommendationLabel(s.ai_analysis.recommendation))+" ")])]):t._e()]),a("div",{staticClass:"rc-footer"},[a("span",{staticClass:"rc-reason"},[t._v(t._s(t.getReasonText(s)))]),"Crypto"===s.market?a("span",{staticClass:"rc-cta",on:{click:function(a){return a.stopPropagation(),t.openQuickTradeFromOpp(s)}}},[a("a-icon",{attrs:{type:"transaction"}}),t._v(" "+t._s(t.$t("quickTrade.tradeNow"))+" ")],1):t._e()])])}),0)])]):t._e(),a("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentAnalysisSymbol?a("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTradeFromCurrent}},[a("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),a("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:t.qtSource,"market-type":"swap"},on:{close:function(a){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}}),a("a-card",{staticClass:"workspace-card",attrs:{bordered:!1}},[a("a-tabs",{staticClass:"workspace-tabs",attrs:{size:"large"},model:{value:t.activeTab,callback:function(a){t.activeTab=a},expression:"activeTab"}},[a("a-tab-pane",{key:"quick"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.quick"))+" ")],1),a("div",{staticClass:"tab-body"},["quick"===t.activeTab?a("AnalysisView",{attrs:{embedded:!0,"preset-symbol":t.presetSymbol,"auto-analyze-signal":t.autoAnalyzeSignal},on:{"symbol-change":t.onAnalysisSymbolChange}}):t._e()],1)]),a("a-tab-pane",{key:"polymarket"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"radar-chart"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.polymarket"))+" ")],1),a("div",{staticClass:"tab-body"},[a("div",{staticClass:"polymarket-tab-content"},[a("div",{staticClass:"polymarket-placeholder"},[a("div",{staticClass:"placeholder-icon"},[a("a-icon",{attrs:{type:"radar-chart"}})],1),a("h3",[t._v(t._s(t.$t("polymarket.analysis.title")))]),a("p",[t._v(t._s(t.$t("polymarket.analysis.description")))]),a("a-button",{staticStyle:{"margin-top":"16px"},attrs:{type:"primary",size:"large",icon:"thunderbolt"},on:{click:function(a){t.showPolymarketModal=!0}}},[t._v(" "+t._s(t.$t("polymarket.analysis.startAnalysis"))+" ")])],1)])])])],1)],1),a("PolymarketAnalysisModal",{attrs:{visible:t.showPolymarketModal},on:{close:function(a){t.showPolymarketModal=!1}}})],1)},i=[],n=s(81127),r=s(56252),o=s(2403),l=s(76338),c=(s(28706),s(74423),s(34782),s(27495),s(21699),s(25440),s(95353)),u=s(82631),d=s(44146),y=s(32945),p=(s(42762),function(){var t=this,a=t._self._c;return a("a-modal",{attrs:{visible:t.visible,title:t.$t("polymarket.analysis.title"),width:900,footer:null,wrapClassName:t.isDarkTheme?"qd-dark-modal":"",maskClosable:!1},on:{cancel:t.handleClose}},[a("div",{staticClass:"polymarket-analysis-modal",class:{"theme-dark":t.isDarkTheme}},[a("a-tabs",{attrs:{"default-active-key":"analyze"},on:{change:t.handleTabChange}},[a("a-tab-pane",{key:"analyze",attrs:{tab:t.$t("polymarket.analysis.tabAnalyze")}},[t.analysisResult?t._e():a("div",{staticClass:"input-section"},[a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("polymarket.analysis.inputHint"),type:"info","show-icon":""}}),a("a-textarea",{attrs:{placeholder:t.$t("polymarket.analysis.inputPlaceholder"),rows:3,disabled:t.analyzing},on:{pressEnter:t.handleAnalyze},model:{value:t.inputText,callback:function(a){t.inputText=a},expression:"inputText"}}),a("div",{staticClass:"input-actions"},[a("a-button",{staticStyle:{width:"100%","margin-top":"12px"},attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.inputText.trim()},on:{click:t.handleAnalyze}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzeButton"))+" ")])],1)],1),t.analysisResult?a("div",{staticClass:"result-section"},[a("div",{staticClass:"market-info"},[a("h3",[t._v(t._s(t.analysisResult.market.question))]),a("div",{staticClass:"market-meta"},[a("a-tag",{attrs:{color:t.getStatusColor(t.analysisResult.market.status)}},[t._v(" "+t._s(t.analysisResult.market.status)+" ")]),a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"percentage"}}),t._v(" "+t._s(t.analysisResult.market.current_probability)+"% ")],1),t.analysisResult.market.volume_24h?a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"dollar"}}),t._v(" "+t._s(t.formatVolume(t.analysisResult.market.volume_24h))+" ")],1):t._e(),t.analysisResult.market.polymarket_url?a("a-button",{attrs:{type:"link",size:"small",icon:"link",href:t.analysisResult.market.polymarket_url,target:"_blank"}},[t._v(" "+t._s(t.$t("polymarket.analysis.viewOnPolymarket"))+" ")]):t._e()],1)]),a("div",{staticClass:"analysis-result"},[a("a-divider",[t._v(t._s(t.$t("polymarket.analysis.aiAnalysis")))]),a("div",{staticClass:"probability-comparison"},[a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.marketProbability")))]),a("div",{staticClass:"prob-value"},[t._v(t._s(t.analysisResult.analysis.market_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.aiPredictedProbability")))]),a("div",{staticClass:"prob-value ai-prob"},[t._v(t._s(t.analysisResult.analysis.ai_predicted_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.divergence")))]),a("div",{staticClass:"prob-value",class:t.getDivergenceClass(t.analysisResult.analysis.divergence)},[t._v(" "+t._s(t.analysisResult.analysis.divergence>=0?"+":"")+t._s(t.analysisResult.analysis.divergence.toFixed(2))+"% ")])])]),a("div",{staticClass:"recommendation-section"},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.recommendation")))]),a("a-tag",{staticStyle:{"font-size":"16px",padding:"4px 12px"},attrs:{color:t.getRecommendationColor(t.analysisResult.analysis.recommendation)}},[t._v(" "+t._s(t.getRecommendationLabel(t.analysisResult.analysis.recommendation))+" ")])],1)]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.confidenceScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.confidence_score.toFixed(0)))])])]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.opportunityScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.opportunity_score.toFixed(0)))])])])],1)],1),t.analysisResult.analysis.reasoning?a("div",{staticClass:"reasoning-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.reasoning")))]),a("p",{staticClass:"reasoning-text"},[t._v(t._s(t.analysisResult.analysis.reasoning))])]):t._e(),t.analysisResult.analysis.key_factors&&t.analysisResult.analysis.key_factors.length>0?a("div",{staticClass:"key-factors-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.keyFactors")))]),t._l(t.analysisResult.analysis.key_factors,function(s,e){return a("a-tag",{key:e,staticStyle:{margin:"4px"},attrs:{color:"blue"}},[t._v(" "+t._s(s)+" ")])})],2):t._e(),t.analysisResult.credits_charged>0?a("div",{staticClass:"billing-info"},[a("a-alert",{staticStyle:{"margin-top":"16px"},attrs:{message:t.$t("polymarket.analysis.creditsCharged",{credits:t.analysisResult.credits_charged}),type:"success","show-icon":""}}),void 0!==t.analysisResult.remaining_credits?a("div",{staticStyle:{"margin-top":"8px","text-align":"right"},style:{color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.remainingCredits",{credits:t.analysisResult.remaining_credits.toFixed(0)}))+" ")]):t._e()],1):t._e()],1),a("div",{staticClass:"result-actions"},[a("a-button",{staticStyle:{"margin-right":"8px"},on:{click:t.handleNewAnalysis}},[t._v(" "+t._s(t.$t("polymarket.analysis.newAnalysis"))+" ")]),a("a-button",{attrs:{type:"primary"},on:{click:t.handleClose}},[t._v(" "+t._s(t.$t("common.close"))+" ")])],1)]):t._e(),t.analyzing?a("div",{staticClass:"loading-section"},[a("a-spin",{attrs:{size:"large"}}),a("p",{style:{marginTop:"16px",color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzing"))+" ")])],1):t._e()]),a("a-tab-pane",{key:"history",attrs:{tab:t.$t("polymarket.analysis.tabHistory")}},[a("div",{staticClass:"history-section"},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-table",{attrs:{columns:t.historyColumns,"data-source":t.historyList,pagination:t.historyPagination,"row-key":function(t){return t.id},size:"small"},on:{change:t.handleHistoryTableChange},scopedSlots:t._u([{key:"market_title",fn:function(s,e){return[a("a-button",{staticStyle:{padding:"0"},attrs:{type:"link"},on:{click:function(a){return t.viewHistoryItem(e)}}},[t._v(" "+t._s(s)+" ")])]}},{key:"recommendation",fn:function(s){return[a("a-tag",{attrs:{color:t.getRecommendationColor(s)}},[t._v(" "+t._s(t.getRecommendationLabel(s))+" ")])]}},{key:"created_at",fn:function(a){return[t._v(" "+t._s(t.formatDateTime(a))+" ")]}}])})],1)],1)])],1)],1)])}),m=[],h=(s(26099),s(75769)),v="/api/polymarket";function _(t){return(0,h.Ay)({url:"".concat(v,"/analyze"),method:"post",data:t,timeout:12e4})}function k(t){return(0,h.Ay)({url:"".concat(v,"/history"),method:"get",params:t})}var g={name:"PolymarketAnalysisModal",props:{visible:{type:Boolean,default:!1}},data:function(){var t=this;return{inputText:"",analyzing:!1,analysisResult:null,activeTab:"analyze",historyLoading:!1,historyList:[],historyPagination:{current:1,pageSize:20,total:0,showSizeChanger:!0,showTotal:function(a){return t.$t("polymarket.analysis.historyTotal",{total:a})}},historyColumns:[]}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),methods:{handleAnalyze:function(){var t=this;this.inputText.trim()?(this.analyzing=!0,this.analysisResult=null,_({input:this.inputText.trim(),language:this.$i18n.locale||"zh-CN"}).then(function(a){1===a.code?(t.analysisResult=a.data,t.$message.success(t.$t("polymarket.analysis.success"))):"Insufficient credits"===a.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(a.msg||t.$t("polymarket.analysis.failed"))}).catch(function(a){a.response&&a.response.data&&"Insufficient credits"===a.response.data.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(t.$t("polymarket.analysis.failed"))}).finally(function(){t.analyzing=!1})):this.$message.warning(this.$t("polymarket.analysis.inputRequired"))},handleNewAnalysis:function(){this.inputText="",this.analysisResult=null},handleClose:function(){var t=this;this.$emit("close"),setTimeout(function(){t.inputText="",t.analysisResult=null,t.analyzing=!1},300)},getStatusColor:function(t){var a={active:"green",closed:"default",resolved:"blue"};return a[t]||"default"},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"orange"};return a[t]||"default"},getRecommendationLabel:function(t){var a={YES:this.$t("polymarket.analysis.recommendationYes"),NO:this.$t("polymarket.analysis.recommendationNo"),HOLD:this.$t("polymarket.analysis.recommendationHold")};return a[t]||t},getDivergenceClass:function(t){return t>5?"divergence-positive":t<-5?"divergence-negative":"divergence-neutral"},formatVolume:function(t){return t>=1e6?"$".concat((t/1e6).toFixed(2),"M"):t>=1e3?"$".concat((t/1e3).toFixed(2),"K"):"$".concat(t.toFixed(2))},handleTabChange:function(t){this.activeTab=t,"history"===t&&0===this.historyList.length&&this.loadHistory()},loadHistory:function(){var t=this;return(0,r.A)((0,n.A)().m(function a(){var s;return(0,n.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,k({page:t.historyPagination.current,page_size:t.historyPagination.pageSize});case 2:s=a.v,1===s.code&&s.data&&(t.historyList=s.data.items||[],t.historyPagination.total=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("polymarket.analysis.loadHistoryFailed"));case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},handleHistoryTableChange:function(t){this.historyPagination.current=t.current,this.historyPagination.pageSize=t.pageSize,this.loadHistory()},viewHistoryItem:function(t){this.activeTab="analyze",this.analysisResult={market:{question:t.market_title,market_id:t.market_id,polymarket_url:t.market_url,current_probability:t.market_probability,status:"active"},analysis:{ai_predicted_probability:t.ai_predicted_probability,market_probability:t.market_probability,recommendation:t.recommendation,opportunity_score:t.opportunity_score,confidence_score:t.confidence_score}}},formatDateTime:function(t){if(!t)return"";var a=new Date(t);return a.toLocaleString("zh-CN"===this.$i18n.locale?"zh-CN":"en-US")}},mounted:function(){this.historyColumns=[{title:this.$t("polymarket.analysis.historyMarket"),dataIndex:"market_title",key:"market_title",scopedSlots:{customRender:"market_title"}},{title:this.$t("polymarket.analysis.historyRecommendation"),dataIndex:"recommendation",key:"recommendation",width:120,scopedSlots:{customRender:"recommendation"}},{title:this.$t("polymarket.analysis.historyOpportunityScore"),dataIndex:"opportunity_score",key:"opportunity_score",width:120,align:"right"},{title:this.$t("polymarket.analysis.historyCreatedAt"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]}},b=g,f=s(845),C=(0,f.A)(b,p,m,!1,null,"67e891d2",null),$=C.exports,S={name:"AIAssetAnalysis",components:{AnalysisView:u["default"],QuickTradePanel:y.A,PolymarketAnalysisModal:$},data:function(){return{activeTab:"quick",opportunities:[],oppLoading:!1,oppHover:!1,presetSymbol:"",autoAnalyzeSignal:0,showQuickTrade:!1,qtSymbol:"",qtSide:"",qtPrice:0,qtSource:"ai_radar",currentAnalysisSymbol:"",currentAnalysisMarket:"",showPolymarketModal:!1}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},carouselItems:function(){return 0===this.opportunities.length?[]:[].concat((0,o.A)(this.opportunities),(0,o.A)(this.opportunities))},oppTrackStyle:function(){var t=3*this.opportunities.length;return{animationDuration:t+"s"}}}),created:function(){this.loadOpportunities()},methods:{loadOpportunities:function(){var t=arguments,a=this;return(0,r.A)((0,n.A)().m(function s(){var e,i,r;return(0,n.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return e=t.length>0&&void 0!==t[0]&&t[0],a.oppLoading=!0,s.p=1,i=e?{force:!0}:{},s.n=2,(0,d.r9)(i);case 2:r=s.v,r&&1===r.code&&Array.isArray(r.data)&&(a.opportunities=r.data.slice(0,20)),s.n=4;break;case 3:s.p=3,s.v;case 4:return s.p=4,a.oppLoading=!1,s.f(4);case 5:return s.a(2)}},s,null,[[1,3,4,5]])}))()},getSignalColor:function(t){var a={overbought:"volcano",oversold:"green",bullish_momentum:"cyan",bearish_momentum:"red"};return a[t]||"default"},getSignalLabel:function(t){var a="aiAssetAnalysis.opportunities.signal.".concat(t),s=this.$t(a);return s!==a?s:t},getMarketTagColor:function(t){var a={Crypto:"purple",USStock:"green",Forex:"gold",PredictionMarket:"cyan"};return a[t]||"default"},getMarketLabel:function(t){var a="aiAssetAnalysis.opportunities.market.".concat(t),s=this.$t(a);return s!==a?s:t},getReasonText:function(t){var a=(t.market||"Crypto").toLowerCase(),s=t.signal||"",e="aiAssetAnalysis.opportunities.reason.".concat(a,".").concat(s),i=this.$t(e);if(i===e)return t.reason||"";var n=Math.abs(t.change_24h||0).toFixed(1),r=Math.abs(t.change_7d||0).toFixed(1);return i.replace("{change}",n).replace("{change7d}",r)},formatOppPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1?t.toFixed(2):t.toFixed(4):"--"},analyzeOpportunity:function(t){var a=this;if("PredictionMarket"===t.market)return this.activeTab="polymarket",void(this.showPolymarketModal=!0);this.activeTab="quick";var s=t.market||"Crypto";this.presetSymbol="".concat(s,":").concat(t.symbol),this.$nextTick(function(){a.autoAnalyzeSignal++})},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"default"};return a[t]||"default"},getRecommendationLabel:function(t){return this.$t("polymarket.recommendation.".concat(t))||t},onAnalysisSymbolChange:function(t){if(!t)return this.currentAnalysisSymbol="",void(this.currentAnalysisMarket="");var a=t.split(":"),s=a.length>1?a[0]:"Crypto",e=a.length>1?a[1]:a[0];this.currentAnalysisMarket=s,this.currentAnalysisSymbol="Crypto"===s?e:""},openQuickTradeFromCurrent:function(){this.currentAnalysisSymbol&&(this.qtSymbol=this.currentAnalysisSymbol,this.qtSide="",this.qtPrice=0,this.qtSource="ai_analysis",this.showQuickTrade=!0)},openQuickTradeFromOpp:function(t){if("Crypto"===t.market){this.qtSymbol=t.symbol||"";var a=(t.signal||"").toLowerCase();a.includes("oversold")||a.includes("bullish")?this.qtSide="buy":a.includes("overbought")||a.includes("bearish")?this.qtSide="sell":this.qtSide="",this.qtPrice=t.price||0,this.qtSource="ai_radar",this.showQuickTrade=!0}},onQuickTradeSuccess:function(){this.$message.success(this.$t("quickTrade.orderSuccess"))},handleQuickTradeSymbolChange:function(t){t&&(this.qtSymbol=t)}}},T=S,A=(0,f.A)(T,e,i,!1,null,"0d0a10d6",null),R=A.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/19.5d40ba7c.js b/frontend/dist/js/19.5d40ba7c.js deleted file mode 100644 index fe6912d..0000000 --- a/frontend/dist/js/19.5d40ba7c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[19],{17692:function(t,a,s){s.r(a),s.d(a,{default:function(){return R}});var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-asset-analysis-page",class:{"theme-dark":t.isDarkTheme}},[t.opportunities.length>0?a("div",{staticClass:"radar-section"},[a("div",{staticClass:"radar-header"},[a("div",{staticClass:"radar-header-left"},[a("h2",{staticClass:"radar-title"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.title")))]),a("p",{staticClass:"radar-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.updateHint")))])]),a("a-button",{staticClass:"radar-refresh-btn",attrs:{size:"small",loading:t.oppLoading},on:{click:function(a){return t.loadOpportunities(!0)}}},[a("a-icon",{attrs:{type:"sync"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),a("div",{staticClass:"radar-carousel",on:{mouseenter:function(a){t.oppHover=!0},mouseleave:function(a){t.oppHover=!1}}},[a("div",{staticClass:"radar-track",class:{paused:t.oppHover},style:t.oppTrackStyle},t._l(t.carouselItems,function(s,e){return a("div",{key:"opp-"+e,staticClass:"radar-card",class:[s.impact,{"is-prediction":"PredictionMarket"===s.market}],on:{click:function(a){return t.analyzeOpportunity(s)}}},[a("div",{staticClass:"rc-head"},[a("span",{staticClass:"rc-symbol",class:{"rc-prediction-title":"PredictionMarket"===s.market}},[t._v(" "+t._s("PredictionMarket"===s.market&&s.name||s.symbol)+" ")]),a("span",{staticClass:"rc-market",class:"rc-market-"+(s.market||"").toLowerCase()},[t._v(" "+t._s(t.getMarketLabel(s.market))+" ")])]),"PredictionMarket"!==s.market?a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"当前价格":"Price"))]),a("span",{staticClass:"rc-metric-value"},[t._v("$"+t._s(t.formatOppPrice(s.price)))])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"24h涨跌":"24h Change"))]),a("span",{staticClass:"rc-metric-value",class:s.change_24h>=0?"rc-up":"rc-down"},[t._v(" "+t._s(s.change_24h>=0?"+":"")+t._s((s.change_24h||0).toFixed(2))+"% ")])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"信号":"Signal"))]),a("span",{staticClass:"rc-metric-value rc-signal-val",class:"rc-signal-"+(s.signal||"")},[t._v(" "+t._s(t.getSignalLabel(s.signal))+" ")])])]):a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"市场概率":"Probability"))]),a("span",{staticClass:"rc-metric-value"},[t._v(t._s((s.price||0).toFixed(1))+"%")])]),s.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"机会评分":"Score"))]),a("span",{staticClass:"rc-metric-value rc-up"},[t._v(t._s(s.ai_analysis.opportunity_score.toFixed(0)))])]):t._e(),s.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"建议":"Rec."))]),a("span",{staticClass:"rc-metric-value",class:"YES"===s.ai_analysis.recommendation?"rc-up":"NO"===s.ai_analysis.recommendation?"rc-down":""},[t._v(" "+t._s(t.getRecommendationLabel(s.ai_analysis.recommendation))+" ")])]):t._e()]),a("div",{staticClass:"rc-footer"},[a("span",{staticClass:"rc-reason"},[t._v(t._s(t.getReasonText(s)))]),"Crypto"===s.market?a("span",{staticClass:"rc-cta",on:{click:function(a){return a.stopPropagation(),t.openQuickTradeFromOpp(s)}}},[a("a-icon",{attrs:{type:"transaction"}}),t._v(" "+t._s(t.$t("quickTrade.tradeNow"))+" ")],1):t._e()])])}),0)])]):t._e(),a("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentAnalysisSymbol?a("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTradeFromCurrent}},[a("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),a("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:t.qtSource,"market-type":"swap"},on:{close:function(a){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}}),a("a-card",{staticClass:"workspace-card",attrs:{bordered:!1}},[a("a-tabs",{staticClass:"workspace-tabs",attrs:{size:"large"},model:{value:t.activeTab,callback:function(a){t.activeTab=a},expression:"activeTab"}},[a("a-tab-pane",{key:"quick"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.quick"))+" ")],1),a("div",{staticClass:"tab-body"},["quick"===t.activeTab?a("AnalysisView",{attrs:{embedded:!0,"preset-symbol":t.presetSymbol,"auto-analyze-signal":t.autoAnalyzeSignal},on:{"symbol-change":t.onAnalysisSymbolChange}}):t._e()],1)]),a("a-tab-pane",{key:"polymarket"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"radar-chart"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.polymarket"))+" ")],1),a("div",{staticClass:"tab-body"},[a("div",{staticClass:"polymarket-tab-content"},[a("div",{staticClass:"polymarket-placeholder"},[a("div",{staticClass:"placeholder-icon"},[a("a-icon",{attrs:{type:"radar-chart"}})],1),a("h3",[t._v(t._s(t.$t("polymarket.analysis.title")))]),a("p",[t._v(t._s(t.$t("polymarket.analysis.description")))]),a("a-button",{staticStyle:{"margin-top":"16px"},attrs:{type:"primary",size:"large",icon:"thunderbolt"},on:{click:function(a){t.showPolymarketModal=!0}}},[t._v(" "+t._s(t.$t("polymarket.analysis.startAnalysis"))+" ")])],1)])])])],1)],1),a("PolymarketAnalysisModal",{attrs:{visible:t.showPolymarketModal},on:{close:function(a){t.showPolymarketModal=!1}}})],1)},i=[],n=s(81127),r=s(56252),o=s(2403),l=s(76338),c=(s(74423),s(95353)),u=s(67681),d=s(44146),y=s(46500),p=function(){var t=this,a=t._self._c;return a("a-modal",{attrs:{visible:t.visible,title:t.$t("polymarket.analysis.title"),width:900,footer:null,wrapClassName:t.isDarkTheme?"qd-dark-modal":"",maskClosable:!1},on:{cancel:t.handleClose}},[a("div",{staticClass:"polymarket-analysis-modal",class:{"theme-dark":t.isDarkTheme}},[a("a-tabs",{attrs:{"default-active-key":"analyze"},on:{change:t.handleTabChange}},[a("a-tab-pane",{key:"analyze",attrs:{tab:t.$t("polymarket.analysis.tabAnalyze")}},[t.analysisResult?t._e():a("div",{staticClass:"input-section"},[a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("polymarket.analysis.inputHint"),type:"info","show-icon":""}}),a("a-textarea",{attrs:{placeholder:t.$t("polymarket.analysis.inputPlaceholder"),rows:3,disabled:t.analyzing},on:{pressEnter:t.handleAnalyze},model:{value:t.inputText,callback:function(a){t.inputText=a},expression:"inputText"}}),a("div",{staticClass:"input-actions"},[a("a-button",{staticStyle:{width:"100%","margin-top":"12px"},attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.inputText.trim()},on:{click:t.handleAnalyze}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzeButton"))+" ")])],1)],1),t.analysisResult?a("div",{staticClass:"result-section"},[a("div",{staticClass:"market-info"},[a("h3",[t._v(t._s(t.analysisResult.market.question))]),a("div",{staticClass:"market-meta"},[a("a-tag",{attrs:{color:t.getStatusColor(t.analysisResult.market.status)}},[t._v(" "+t._s(t.analysisResult.market.status)+" ")]),a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"percentage"}}),t._v(" "+t._s(t.analysisResult.market.current_probability)+"% ")],1),t.analysisResult.market.volume_24h?a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"dollar"}}),t._v(" "+t._s(t.formatVolume(t.analysisResult.market.volume_24h))+" ")],1):t._e(),t.analysisResult.market.polymarket_url?a("a-button",{attrs:{type:"link",size:"small",icon:"link",href:t.analysisResult.market.polymarket_url,target:"_blank"}},[t._v(" "+t._s(t.$t("polymarket.analysis.viewOnPolymarket"))+" ")]):t._e()],1)]),a("div",{staticClass:"analysis-result"},[a("a-divider",[t._v(t._s(t.$t("polymarket.analysis.aiAnalysis")))]),a("div",{staticClass:"probability-comparison"},[a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.marketProbability")))]),a("div",{staticClass:"prob-value"},[t._v(t._s(t.analysisResult.analysis.market_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.aiPredictedProbability")))]),a("div",{staticClass:"prob-value ai-prob"},[t._v(t._s(t.analysisResult.analysis.ai_predicted_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.divergence")))]),a("div",{staticClass:"prob-value",class:t.getDivergenceClass(t.analysisResult.analysis.divergence)},[t._v(" "+t._s(t.analysisResult.analysis.divergence>=0?"+":"")+t._s(t.analysisResult.analysis.divergence.toFixed(2))+"% ")])])]),a("div",{staticClass:"recommendation-section"},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.recommendation")))]),a("a-tag",{staticStyle:{"font-size":"16px",padding:"4px 12px"},attrs:{color:t.getRecommendationColor(t.analysisResult.analysis.recommendation)}},[t._v(" "+t._s(t.getRecommendationLabel(t.analysisResult.analysis.recommendation))+" ")])],1)]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.confidenceScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.confidence_score.toFixed(0)))])])]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.opportunityScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.opportunity_score.toFixed(0)))])])])],1)],1),t.analysisResult.analysis.reasoning?a("div",{staticClass:"reasoning-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.reasoning")))]),a("p",{staticClass:"reasoning-text"},[t._v(t._s(t.analysisResult.analysis.reasoning))])]):t._e(),t.analysisResult.analysis.key_factors&&t.analysisResult.analysis.key_factors.length>0?a("div",{staticClass:"key-factors-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.keyFactors")))]),t._l(t.analysisResult.analysis.key_factors,function(s,e){return a("a-tag",{key:e,staticStyle:{margin:"4px"},attrs:{color:"blue"}},[t._v(" "+t._s(s)+" ")])})],2):t._e(),t.analysisResult.credits_charged>0?a("div",{staticClass:"billing-info"},[a("a-alert",{staticStyle:{"margin-top":"16px"},attrs:{message:t.$t("polymarket.analysis.creditsCharged",{credits:t.analysisResult.credits_charged}),type:"success","show-icon":""}}),void 0!==t.analysisResult.remaining_credits?a("div",{staticStyle:{"margin-top":"8px","text-align":"right"},style:{color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.remainingCredits",{credits:t.analysisResult.remaining_credits.toFixed(0)}))+" ")]):t._e()],1):t._e()],1),a("div",{staticClass:"result-actions"},[a("a-button",{staticStyle:{"margin-right":"8px"},on:{click:t.handleNewAnalysis}},[t._v(" "+t._s(t.$t("polymarket.analysis.newAnalysis"))+" ")]),a("a-button",{attrs:{type:"primary"},on:{click:t.handleClose}},[t._v(" "+t._s(t.$t("common.close"))+" ")])],1)]):t._e(),t.analyzing?a("div",{staticClass:"loading-section"},[a("a-spin",{attrs:{size:"large"}}),a("p",{style:{marginTop:"16px",color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzing"))+" ")])],1):t._e()]),a("a-tab-pane",{key:"history",attrs:{tab:t.$t("polymarket.analysis.tabHistory")}},[a("div",{staticClass:"history-section"},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-table",{attrs:{columns:t.historyColumns,"data-source":t.historyList,pagination:t.historyPagination,"row-key":function(t){return t.id},size:"small"},on:{change:t.handleHistoryTableChange},scopedSlots:t._u([{key:"market_title",fn:function(s,e){return[a("a-button",{staticStyle:{padding:"0"},attrs:{type:"link"},on:{click:function(a){return t.viewHistoryItem(e)}}},[t._v(" "+t._s(s)+" ")])]}},{key:"recommendation",fn:function(s){return[a("a-tag",{attrs:{color:t.getRecommendationColor(s)}},[t._v(" "+t._s(t.getRecommendationLabel(s))+" ")])]}},{key:"created_at",fn:function(a){return[t._v(" "+t._s(t.formatDateTime(a))+" ")]}}])})],1)],1)])],1)],1)])},m=[],h=s(75769),v="/api/polymarket";function _(t){return(0,h.Ay)({url:"".concat(v,"/analyze"),method:"post",data:t,timeout:12e4})}function k(t){return(0,h.Ay)({url:"".concat(v,"/history"),method:"get",params:t})}var g={name:"PolymarketAnalysisModal",props:{visible:{type:Boolean,default:!1}},data:function(){var t=this;return{inputText:"",analyzing:!1,analysisResult:null,activeTab:"analyze",historyLoading:!1,historyList:[],historyPagination:{current:1,pageSize:20,total:0,showSizeChanger:!0,showTotal:function(a){return t.$t("polymarket.analysis.historyTotal",{total:a})}},historyColumns:[]}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),methods:{handleAnalyze:function(){var t=this;this.inputText.trim()?(this.analyzing=!0,this.analysisResult=null,_({input:this.inputText.trim(),language:this.$i18n.locale||"zh-CN"}).then(function(a){1===a.code?(t.analysisResult=a.data,t.$message.success(t.$t("polymarket.analysis.success"))):"Insufficient credits"===a.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(a.msg||t.$t("polymarket.analysis.failed"))}).catch(function(a){a.response&&a.response.data&&"Insufficient credits"===a.response.data.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(t.$t("polymarket.analysis.failed"))}).finally(function(){t.analyzing=!1})):this.$message.warning(this.$t("polymarket.analysis.inputRequired"))},handleNewAnalysis:function(){this.inputText="",this.analysisResult=null},handleClose:function(){var t=this;this.$emit("close"),setTimeout(function(){t.inputText="",t.analysisResult=null,t.analyzing=!1},300)},getStatusColor:function(t){var a={active:"green",closed:"default",resolved:"blue"};return a[t]||"default"},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"orange"};return a[t]||"default"},getRecommendationLabel:function(t){var a={YES:this.$t("polymarket.analysis.recommendationYes"),NO:this.$t("polymarket.analysis.recommendationNo"),HOLD:this.$t("polymarket.analysis.recommendationHold")};return a[t]||t},getDivergenceClass:function(t){return t>5?"divergence-positive":t<-5?"divergence-negative":"divergence-neutral"},formatVolume:function(t){return t>=1e6?"$".concat((t/1e6).toFixed(2),"M"):t>=1e3?"$".concat((t/1e3).toFixed(2),"K"):"$".concat(t.toFixed(2))},handleTabChange:function(t){this.activeTab=t,"history"===t&&0===this.historyList.length&&this.loadHistory()},loadHistory:function(){var t=this;return(0,r.A)((0,n.A)().m(function a(){var s;return(0,n.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,k({page:t.historyPagination.current,page_size:t.historyPagination.pageSize});case 2:s=a.v,1===s.code&&s.data&&(t.historyList=s.data.items||[],t.historyPagination.total=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("polymarket.analysis.loadHistoryFailed"));case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},handleHistoryTableChange:function(t){this.historyPagination.current=t.current,this.historyPagination.pageSize=t.pageSize,this.loadHistory()},viewHistoryItem:function(t){this.activeTab="analyze",this.analysisResult={market:{question:t.market_title,market_id:t.market_id,polymarket_url:t.market_url,current_probability:t.market_probability,status:"active"},analysis:{ai_predicted_probability:t.ai_predicted_probability,market_probability:t.market_probability,recommendation:t.recommendation,opportunity_score:t.opportunity_score,confidence_score:t.confidence_score}}},formatDateTime:function(t){if(!t)return"";var a=new Date(t);return a.toLocaleString("zh-CN"===this.$i18n.locale?"zh-CN":"en-US")}},mounted:function(){this.historyColumns=[{title:this.$t("polymarket.analysis.historyMarket"),dataIndex:"market_title",key:"market_title",scopedSlots:{customRender:"market_title"}},{title:this.$t("polymarket.analysis.historyRecommendation"),dataIndex:"recommendation",key:"recommendation",width:120,scopedSlots:{customRender:"recommendation"}},{title:this.$t("polymarket.analysis.historyOpportunityScore"),dataIndex:"opportunity_score",key:"opportunity_score",width:120,align:"right"},{title:this.$t("polymarket.analysis.historyCreatedAt"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]}},b=g,f=s(845),C=(0,f.A)(b,p,m,!1,null,"67e891d2",null),$=C.exports,S={name:"AIAssetAnalysis",components:{AnalysisView:u["default"],QuickTradePanel:y.A,PolymarketAnalysisModal:$},data:function(){return{activeTab:"quick",opportunities:[],oppLoading:!1,oppHover:!1,presetSymbol:"",autoAnalyzeSignal:0,showQuickTrade:!1,qtSymbol:"",qtSide:"",qtPrice:0,qtSource:"ai_radar",currentAnalysisSymbol:"",currentAnalysisMarket:"",showPolymarketModal:!1}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},carouselItems:function(){return 0===this.opportunities.length?[]:[].concat((0,o.A)(this.opportunities),(0,o.A)(this.opportunities))},oppTrackStyle:function(){var t=3*this.opportunities.length;return{animationDuration:t+"s"}}}),created:function(){this.loadOpportunities()},methods:{loadOpportunities:function(){var t=arguments,a=this;return(0,r.A)((0,n.A)().m(function s(){var e,i,r;return(0,n.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return e=t.length>0&&void 0!==t[0]&&t[0],a.oppLoading=!0,s.p=1,i=e?{force:!0}:{},s.n=2,(0,d.r9)(i);case 2:r=s.v,r&&1===r.code&&Array.isArray(r.data)&&(a.opportunities=r.data.slice(0,20)),s.n=4;break;case 3:s.p=3,s.v;case 4:return s.p=4,a.oppLoading=!1,s.f(4);case 5:return s.a(2)}},s,null,[[1,3,4,5]])}))()},getSignalColor:function(t){var a={overbought:"volcano",oversold:"green",bullish_momentum:"cyan",bearish_momentum:"red"};return a[t]||"default"},getSignalLabel:function(t){var a="aiAssetAnalysis.opportunities.signal.".concat(t),s=this.$t(a);return s!==a?s:t},getMarketTagColor:function(t){var a={Crypto:"purple",USStock:"green",Forex:"gold",PredictionMarket:"cyan"};return a[t]||"default"},getMarketLabel:function(t){var a="aiAssetAnalysis.opportunities.market.".concat(t),s=this.$t(a);return s!==a?s:t},getReasonText:function(t){var a=(t.market||"Crypto").toLowerCase(),s=t.signal||"",e="aiAssetAnalysis.opportunities.reason.".concat(a,".").concat(s),i=this.$t(e);if(i===e)return t.reason||"";var n=Math.abs(t.change_24h||0).toFixed(1),r=Math.abs(t.change_7d||0).toFixed(1);return i.replace("{change}",n).replace("{change7d}",r)},formatOppPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1?t.toFixed(2):t.toFixed(4):"--"},analyzeOpportunity:function(t){var a=this;if("PredictionMarket"===t.market)return this.activeTab="polymarket",void(this.showPolymarketModal=!0);this.activeTab="quick";var s=t.market||"Crypto";this.presetSymbol="".concat(s,":").concat(t.symbol),this.$nextTick(function(){a.autoAnalyzeSignal++})},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"default"};return a[t]||"default"},getRecommendationLabel:function(t){return this.$t("polymarket.recommendation.".concat(t))||t},onAnalysisSymbolChange:function(t){if(!t)return this.currentAnalysisSymbol="",void(this.currentAnalysisMarket="");var a=t.split(":"),s=a.length>1?a[0]:"Crypto",e=a.length>1?a[1]:a[0];this.currentAnalysisMarket=s,this.currentAnalysisSymbol="Crypto"===s?e:""},openQuickTradeFromCurrent:function(){this.currentAnalysisSymbol&&(this.qtSymbol=this.currentAnalysisSymbol,this.qtSide="",this.qtPrice=0,this.qtSource="ai_analysis",this.showQuickTrade=!0)},openQuickTradeFromOpp:function(t){if("Crypto"===t.market){this.qtSymbol=t.symbol||"";var a=(t.signal||"").toLowerCase();a.includes("oversold")||a.includes("bullish")?this.qtSide="buy":a.includes("overbought")||a.includes("bearish")?this.qtSide="sell":this.qtSide="",this.qtPrice=t.price||0,this.qtSource="ai_radar",this.showQuickTrade=!0}},onQuickTradeSuccess:function(){this.$message.success(this.$t("quickTrade.orderSuccess"))},handleQuickTradeSymbolChange:function(t){t&&(this.qtSymbol=t)}}},T=S,A=(0,f.A)(T,e,i,!1,null,"0d0a10d6",null),R=A.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/222-legacy.2f9ee28c.js b/frontend/dist/js/222-legacy.2f9ee28c.js new file mode 100644 index 0000000..e945e0a --- /dev/null +++ b/frontend/dist/js/222-legacy.2f9ee28c.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[222],{45222:function(t,e,a){a.r(e),a.d(e,{default:function(){return Lt}});a(52675),a(89463),a(28706),a(74423),a(48598),a(62010),a(2892),a(9868),a(21699);var s=function(){var t,e=this,a=e._self._c;return a("div",{staticClass:"trading-assistant",class:{"theme-dark":e.isDarkTheme}},[e.showAssistantGuide?a("div",{staticClass:"assistant-guide-bar"},[a("div",{staticClass:"assistant-guide-copy"},[a("div",{staticClass:"assistant-guide-eyebrow"},[e._v(e._s(e.$t("trading-assistant.guide.eyebrow")))]),a("div",{staticClass:"assistant-guide-title"},[e._v(e._s(e.$t("trading-assistant.guide.title")))]),a("div",{staticClass:"assistant-guide-desc"},[e._v(e._s(e.$t("trading-assistant.guide.desc")))])]),a("div",{staticClass:"assistant-guide-steps"},[a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("1")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step1Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step1Desc")))])])]),a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("2")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step2Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step2Desc")))])])]),a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("3")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step3Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step3Desc")))])])])]),a("div",{staticClass:"assistant-guide-actions"},[a("a-button",{on:{click:e.goToStrategyTab}},[a("a-icon",{attrs:{type:"appstore"}}),e._v(" "+e._s(e.$t("trading-assistant.guide.secondary"))+" ")],1),a("a-button",{attrs:{type:"primary"},on:{click:e.openCreateStrategyFromGuide}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.guide.primary"))+" ")],1),a("a-button",{staticClass:"assistant-guide-close",on:{click:e.dismissAssistantGuide}},[a("a-icon",{attrs:{type:"close"}})],1)],1)]):e._e(),a("a-tabs",{staticClass:"top-level-tabs",attrs:{animated:!1},model:{value:e.topTab,callback:function(t){e.topTab=t},expression:"topTab"}},[a("a-tab-pane",{key:"overview",attrs:{tab:e.$t("trading-assistant.tabs.overview")}},["overview"===e.topTab?a("dashboard-overview",{attrs:{"hide-setup-guide":!0}}):e._e()],1),a("a-tab-pane",{key:"strategy",attrs:{tab:e.$t("trading-assistant.tabs.strategyManage")}},[a("a-row",{staticClass:"strategy-layout",attrs:{gutter:24}},[a("a-col",{staticClass:"strategy-list-col",attrs:{xs:24,sm:24,md:10,lg:8,xl:8}},[a("a-card",{staticClass:"strategy-list-card",attrs:{bordered:!1}},[a("div",{staticClass:"card-title",attrs:{slot:"title"},slot:"title"},[a("span",[e._v(e._s(e.$t("trading-assistant.strategyList")))]),a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1),a("div",{staticClass:"group-mode-switch"},[a("span",{staticClass:"group-mode-label"},[e._v(e._s(e.$t("trading-assistant.groupBy"))+":")]),a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.groupByMode,callback:function(t){e.groupByMode=t},expression:"groupByMode"}},[a("a-radio-button",{attrs:{value:"strategy"}},[a("a-icon",{attrs:{type:"folder"}}),e._v(" "+e._s(e.$t("trading-assistant.groupByStrategy"))+" ")],1),a("a-radio-button",{attrs:{value:"symbol"}},[a("a-icon",{attrs:{type:"stock"}}),e._v(" "+e._s(e.$t("trading-assistant.groupBySymbol"))+" ")],1)],1)],1),a("a-spin",{attrs:{spinning:e.loading}},[e.loading||0!==e.strategies.length?a("div",{staticClass:"strategy-grouped-list"},[e._l(e.groupedStrategies.groups,function(t){return a("div",{key:t.id,staticClass:"strategy-group"},[a("div",{staticClass:"strategy-group-header",on:{click:function(a){return e.toggleGroup(t.id)}}},[a("div",{staticClass:"group-header-left"},[a("a-icon",{staticClass:"collapse-icon",attrs:{type:e.collapsedGroups[t.id]?"right":"down"}}),a("a-icon",{staticClass:"group-icon",attrs:{type:"symbol"===e.groupByMode?"stock":"folder"}}),a("span",{staticClass:"group-name"},[e._v(e._s(t.baseName))]),a("a-tag",{attrs:{size:"small",color:"blue"}},[e._v(e._s(t.strategies.length)+" "+e._s("symbol"===e.groupByMode?e.$t("trading-assistant.strategyCount"):e.$t("trading-assistant.symbolCount")))])],1),a("div",{staticClass:"group-header-right",on:{click:function(t){t.stopPropagation()}}},[t.runningCount>0?a("span",{staticClass:"group-status running"},[e._v(" "+e._s(t.runningCount)+" "+e._s(e.$t("trading-assistant.status.running"))+" ")]):e._e(),t.stoppedCount>0?a("span",{staticClass:"group-status stopped"},[e._v(" "+e._s(t.stoppedCount)+" "+e._s(e.$t("trading-assistant.status.stopped"))+" ")]):e._e(),a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleGroupMenuClick(s,t)}},slot:"overlay"},[a("a-menu-item",{key:"startAll"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startAll"))+" ")],1),a("a-menu-item",{key:"stopAll"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopAll"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"deleteAll",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteAll"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)]),a("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsedGroups[t.id],expression:"!collapsedGroups[group.id]"}],staticClass:"strategy-group-content"},e._l(t.strategies,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id},{"strategy-list-item--strategy-group":"strategy"===e.groupByMode}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{class:["strategy-name-wrapper",{"strategy-name-wrapper--grouped":"symbol"===e.groupByMode}]},["strategy"===e.groupByMode?[a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e(),"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e(),"script"===t.strategy_mode&&e.scriptTemplateKeyOf(t)?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(e.scriptTemplateLabel(e.scriptTemplateKeyOf(t)))+" ")]):e._e()]:[a("span",{staticClass:"info-item strategy-name-text"},[a("a-icon",{attrs:{type:"thunderbolt"}}),e._v(" "+e._s(t.displayInfo?t.displayInfo.strategyName:t.strategy_name)+" ")],1),t.displayInfo&&t.displayInfo.timeframe?a("a-tag",{attrs:{size:"small",color:"cyan"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.displayInfo.timeframe)+" ")],1):e._e(),t.displayInfo&&t.displayInfo.indicatorName&&"-"!==t.displayInfo.indicatorName?a("a-tag",{attrs:{size:"small",color:"purple"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"line-chart"}}),e._v(" "+e._s(t.displayInfo.indicatorName)+" ")],1):e._e(),"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e(),"script"===t.strategy_mode&&e.scriptTemplateKeyOf(t)?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(e.scriptTemplateLabel(e.scriptTemplateKeyOf(t)))+" ")]):e._e()]],2)]),a("div",{staticClass:"strategy-item-info"},["strategy"===e.groupByMode?[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),t.exchange_config&&t.exchange_config.exchange_id?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),t.trading_config&&t.trading_config.timeframe?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.trading_config.timeframe)+" ")],1):e._e()]:e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])],2)]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleMenuClick(s,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-item",{key:"backtest"},[a("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("dashboard.indicator.action.backtest"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])}),0)])}),e._l(e.groupedStrategies.ungrouped,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},[t.exchange_config&&t.exchange_config.exchange_id?a("a-tag",{staticClass:"exchange-tag",attrs:{color:e.getExchangeTagColor(t.exchange_config.exchange_id),size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e(),"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e(),"script"===t.strategy_mode&&e.scriptTemplateKeyOf(t)?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(e.scriptTemplateLabel(e.scriptTemplateKeyOf(t)))+" ")]):e._e()],1)]),a("div",{staticClass:"strategy-item-info"},[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleMenuClick(s,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-item",{key:"backtest"},[a("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("dashboard.indicator.action.backtest"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])})],2):a("div",{staticClass:"strategy-empty-state"},[a("a-empty",{attrs:{description:e.$t("trading-assistant.empty.title")}}),a("div",{staticClass:"strategy-empty-desc"},[e._v(e._s(e.$t("trading-assistant.empty.desc")))]),a("a-button",{attrs:{type:"primary"},on:{click:e.openCreateStrategyFromGuide}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.empty.primary"))+" ")],1)],1)])],1)],1),a("a-col",{staticClass:"strategy-detail-col",attrs:{xs:24,sm:24,md:14,lg:16,xl:16}},[e.selectedStrategy?a("div",{staticClass:"strategy-detail-panel"},[a("a-card",{staticClass:"strategy-header-card",attrs:{bordered:!1}},[a("div",{staticClass:"strategy-header"},[a("div",{staticClass:"header-left"},[a("div",{staticClass:"strategy-title-row"},[a("h3",{staticClass:"strategy-title"},[e._v(e._s(e.selectedStrategy.strategy_name))]),a("div",{staticClass:"status-badge",class:["status-".concat(e.selectedStrategy.status)]},[a("span",{staticClass:"status-dot"}),e._v(" "+e._s(e.getStatusText(e.selectedStrategy.status))+" ")])]),a("div",{staticClass:"key-stats-grid"},[e.selectedStrategy.initial_capital||e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.initial_capital?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon investment"},[a("a-icon",{attrs:{type:"wallet"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalInvestment")))]),a("div",{staticClass:"stat-value"},[e._v("$"+e._s(parseFloat(e.selectedStrategy.initial_capital||(null===(t=e.selectedStrategy.trading_config)||void 0===t?void 0:t.initial_capital)||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})))])])]):e._e(),null!==e.currentEquity?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon equity"},[a("a-icon",{attrs:{type:"fund"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.currentEquity")))]),a("div",{staticClass:"stat-value",class:e.getEquityColorClass},[e._v(e._s(e.formatCurrency(e.currentEquity)))])])]):e._e(),null!==e.totalPnl?a("div",{staticClass:"stat-card pnl-card",class:{profit:e.totalPnl>0,loss:e.totalPnl<0}},[a("div",{staticClass:"stat-icon pnl"},[a("a-icon",{attrs:{type:e.totalPnl>=0?"rise":"fall"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalPnl")))]),a("div",{staticClass:"stat-value",class:e.getPnlColorClass},[e._v(" "+e._s(e.formatPnl(e.totalPnl))+" "),a("span",{staticClass:"pnl-percent"},[e._v("("+e._s(e.formatPnlPercent(e.totalPnlPercent))+")")])])])]):e._e()]),a("div",{staticClass:"strategy-tags"},[e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"stock"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.symbol))])],1):e._e(),e.selectedStrategy.indicator_config&&e.selectedStrategy.indicator_config.indicator_name?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"line-chart"}}),a("span",[e._v(e._s(e.selectedStrategy.indicator_config.indicator_name))])],1):e._e(),e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"thunderbolt"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.leverage||1)+"x")])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.trade_direction?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"swap"}}),a("span",[e._v(e._s(e.getTradeDirectionText(e.selectedStrategy.trading_config.trade_direction)))])],1):e._e(),"script"===e.selectedStrategy.strategy_mode&&e.scriptTemplateKeyOf(e.selectedStrategy)?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"file-text"}}),a("span",[e._v(e._s(e.scriptTemplateLabel(e.scriptTemplateKeyOf(e.selectedStrategy))))])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.timeframe?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.timeframe))])],1):e._e()])]),a("div",{staticClass:"header-right"},["stopped"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn start-btn",attrs:{type:"primary",size:"large"},on:{click:function(t){return e.handleStartStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn stop-btn",attrs:{type:"danger",size:"large"},on:{click:function(t){return e.handleStopStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e()],1)])]),a("a-card",{staticClass:"strategy-content-card",attrs:{bordered:!1}},[a("a-tabs",{attrs:{defaultActiveKey:"positions"}},[a("a-tab-pane",{key:"positions",attrs:{tab:e.$t("trading-assistant.tabs.positions")}},[a("position-records",{attrs:{"strategy-id":e.selectedStrategy.id,"market-type":e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.market_type||"swap",leverage:e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.leverage||1,loading:e.loadingRecords,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"trades",attrs:{tab:e.$t("trading-assistant.tabs.tradingRecords")}},[a("trading-records",{attrs:{"strategy-id":e.selectedStrategy.id,loading:e.loadingRecords,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"performance",attrs:{tab:e.$t("trading-assistant.tabs.performance")}},[a("performance-analysis",{attrs:{"strategy-id":e.selectedStrategy.id,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"logs",attrs:{tab:e.$t("trading-assistant.tabs.logs")}},[a("strategy-logs",{attrs:{"strategy-id":e.selectedStrategy.id,"is-dark":e.isDarkTheme}})],1)],1)],1)],1):a("div",{staticClass:"strategy-empty-detail"},[a("div",{staticClass:"strategy-empty-detail-card"},[a("div",{staticClass:"strategy-empty-detail-icon"},[a("a-icon",{attrs:{type:"deployment-unit"}})],1),a("h3",{staticClass:"strategy-empty-detail-title"},[e._v(e._s(e.$t("trading-assistant.emptyDetail.title")))]),a("p",{staticClass:"strategy-empty-detail-hint"},[e._v(e._s(e.$t("trading-assistant.emptyDetail.hint")))]),a("div",{staticClass:"strategy-empty-detail-actions"},[a("a-button",{attrs:{type:"primary"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1)])])])],1),a("a-modal",{staticClass:"mode-selector-modal",attrs:{visible:e.showModeSelector,title:e.$t("trading-assistant.selectMode"),width:e.isMobile?"95%":700,footer:null,maskClosable:!0,bodyStyle:{padding:"16px 24px"}},on:{cancel:function(t){e.showModeSelector=!1}}},[a("strategy-type-selector",{attrs:{selected:e.strategyMode,"is-dark":e.isDarkTheme},on:{select:e.handleModeSelect,"use-template":e.handleUseTemplate}})],1),a("a-modal",{attrs:{visible:e.showFormModal,title:e.editingStrategy?e.$t("trading-assistant.editStrategy"):e.$t("trading-assistant.createStrategy")+("script"===e.strategyMode?" - "+e.$t("trading-assistant.strategyMode.script"):""),width:e.isMobile?"95%":1120,confirmLoading:e.saving,maskClosable:!1,wrapClassName:e.strategyFormWrapClass,bodyStyle:{maxHeight:"76vh",overflowY:"auto",paddingBottom:"8px"}},on:{ok:e.handleSubmit,cancel:e.handleCloseModal}},[a("a-spin",{attrs:{spinning:e.loadingIndicators}},[a("a-steps",{staticClass:"steps-container",attrs:{current:e.displayCurrentStep}},["script"===e.strategyMode?[a("a-step",{attrs:{title:e.$t("trading-assistant.form.simpleStep1")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.editor.title")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.form.step3Signal")}})]:[a("a-step",{attrs:{title:e.$t("trading-assistant.form.stepMergedConfig")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.form.step3Signal")}})]],2),a("div",{staticClass:"form-container"},[a("div",{directives:[{name:"show",rawName:"v-show",value:0===e.currentStep,expression:"currentStep === 0"}],staticClass:"step-content"},["indicator"===e.strategyType&&"script"!==e.strategyMode?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicator")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["indicator_id",{rules:[{required:!0,message:e.$t("trading-assistant.validation.indicatorRequired")}]}],expression:"['indicator_id', { rules: [{ required: true, message: $t('trading-assistant.validation.indicatorRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectIndicator"),"show-search":"",optionLabelProp:"label","filter-option":e.filterIndicatorOption,loading:e.loadingIndicators,getPopupContainer:function(t){return t.parentNode}},on:{focus:e.handleIndicatorSelectFocus,change:e.handleIndicatorChange}},e._l(e.availableIndicators,function(t){return a("a-select-option",{key:String(t.id),attrs:{value:String(t.id),label:e.getIndicatorOptionLabel(t)}},[a("div",{staticClass:"indicator-option"},[a("div",{staticClass:"indicator-option-main"},[a("span",{staticClass:"indicator-name"},[e._v(e._s(t.name))]),t.description?a("span",{staticClass:"indicator-option-desc"},[e._v(e._s(t.description))]):e._e()]),t.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(t.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(t.type))+" ")]):e._e()],1)])}),1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorHint"))+" ")]),e.loadingIndicators||e.availableIndicators&&0!==e.availableIndicators.length?e._e():a("a-alert",{staticStyle:{"margin-top":"12px"},attrs:{type:"info","show-icon":"",message:e.$t("trading-assistant.indicatorEmpty.title"),description:e.$t("trading-assistant.indicatorEmpty.desc")}},[a("template",{slot:"action"},[a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.goToIndicatorAnalysisCreate}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.indicatorEmpty.cta"))+" ")],1)],1)],2)],1),e.selectedIndicator?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorDescription")}},[a("div",{staticClass:"selected-indicator-card"},[a("div",{staticClass:"selected-indicator-header"},[a("span",{staticClass:"selected-indicator-name"},[e._v(e._s(e.selectedIndicator.name))]),e.selectedIndicator.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(e.selectedIndicator.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(e.selectedIndicator.type))+" ")]):e._e()],1),a("div",{staticClass:"indicator-description"},[e._v(" "+e._s(e.selectedIndicator.description||e.$t("trading-assistant.form.noDescription"))+" ")])])]):e._e(),e.indicatorParams.length>0?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorParams")}},[a("div",{staticClass:"indicator-params-form"},[a("a-row",{attrs:{gutter:16}},e._l(e.indicatorParams,function(t){return a("a-col",{key:t.name,attrs:{xs:24,sm:12,md:8}},[a("div",{staticClass:"param-item"},[a("label",{staticClass:"param-label"},[e._v(" "+e._s(t.name)+" "),t.description?a("a-tooltip",{attrs:{title:t.description}},[a("a-icon",{staticStyle:{"margin-left":"4px",color:"#999"},attrs:{type:"question-circle"}})],1):e._e()],1),"int"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"float"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"bool"===t.type?a("a-switch",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):a("a-input",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}})],1)])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"8px"}},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorParamsHint"))+" ")])],1)]):e._e(),a("a-divider"),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyNameHint"))+" ")])],1),a("div",{staticClass:"advanced-settings-shell"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.sectionStrategyMarket")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.sectionStrategyMarketDesc")))])]),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["cs_strategy_type",{initialValue:"single"}],expression:"['cs_strategy_type', { initialValue: 'single' }]"}],on:{change:e.handleStrategyTypeChange}},[a("a-radio",{attrs:{value:"single"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeSingle")))]),a("a-radio",{attrs:{value:"cross_sectional"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeCrossSectional")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyTypeHint"))+" ")])],1)],1),"cross_sectional"===e.form.getFieldValue("cs_strategy_type")?[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbolList")}},[a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:5},on:{change:e.handleCrossSectionalSymbolChange},model:{value:e.crossSectionalSymbols,callback:function(t){e.crossSectionalSymbols=t},expression:"crossSectionalSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolListHint"))+" ")])],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.portfolioSize")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["portfolio_size",{initialValue:10,rules:[{required:!0,message:e.$t("trading-assistant.validation.portfolioSizeRequired")}]}],expression:"['portfolio_size', { initialValue: 10, rules: [{ required: true, message: $t('trading-assistant.validation.portfolioSizeRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:100,step:1}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.portfolioSizeHint"))+" ")])],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.longRatio")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["long_ratio",{initialValue:.5,rules:[{required:!0,message:e.$t("trading-assistant.validation.longRatioRequired")}]}],expression:"['long_ratio', { initialValue: 0.5, rules: [{ required: true, message: $t('trading-assistant.validation.longRatioRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:1,step:.1,precision:2}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.longRatioHint"))+" ")])],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.rebalanceFrequency")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["rebalance_frequency",{initialValue:"daily"}],expression:"['rebalance_frequency', { initialValue: 'daily' }]"}],staticStyle:{width:"100%"}},[a("a-select-option",{attrs:{value:"daily"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceDaily")))]),a("a-select-option",{attrs:{value:"weekly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceWeekly")))]),a("a-select-option",{attrs:{value:"monthly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceMonthly")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.rebalanceFrequencyHint"))+" ")])],1)]:e._e(),"cross_sectional"!==e.form.getFieldValue("cs_strategy_type")?a("a-form-item",{attrs:{label:e.isEditMode?e.$t("trading-assistant.form.symbol"):e.$t("trading-assistant.form.symbols")}},[e.isEditMode?a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2):a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:3},on:{change:e.handleMultiSymbolChangeWithAdd},model:{value:e.selectedSymbols,callback:function(t){e.selectedSymbols=t},expression:"selectedSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.isEditMode?e.$t("trading-assistant.form.symbolHintCrypto"):e.$t("trading-assistant.form.symbolsHint"))+" ")])],1):e._e(),a("div",[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.marketTypeHint"))+" ")])],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}}),a("div",{staticClass:"form-item-hint"},["spot"===e.form.getFieldValue("market_type")?a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.spotLeverageFixed"))+" ")]):a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.leverageHint"))+" ")])])],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1),"spot"===e.form.getFieldValue("market_type")?a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.spotOnlyLongHint"))+" ")]):e._e()],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}})],1)],1),a("a-divider"),a("div",{staticClass:"section-block-title",staticStyle:{"margin-top":"4px"}},[a("span",[e._v(e._s(e.$t("trading-assistant.form.sectionRiskExecutionParams")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.sectionRiskExecutionParamsDesc")))])]),a("a-collapse",{staticClass:"strategy-params-collapse",attrs:{bordered:!1},model:{value:e.backtestCollapseKeys,callback:function(t){e.backtestCollapseKeys=t},expression:"backtestCollapseKeys"}},[a("a-collapse-panel",{key:"risk",attrs:{header:e.$t("dashboard.indicator.backtest.panel.risk")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.stopLossPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["stop_loss_pct",{initialValue:3}],expression:"['stop_loss_pct', { initialValue: 3 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.takeProfitPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["take_profit_pct",{initialValue:6}],expression:"['take_profit_pct', { initialValue: 6 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trailing_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrailingToggle}})],1)],1),a("a-col",{attrs:{span:12}})],1),e.trailingEnabledUi?[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingStopPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_stop_pct",{initialValue:0}],expression:"['trailing_stop_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingActivationPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_activation_pct",{initialValue:0}],expression:"['trailing_activation_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1)]:e._e()],2),a("a-collapse-panel",{key:"scale",attrs:{header:e.$t("dashboard.indicator.backtest.panel.scale")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrendAddToggle}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['dca_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onDcaAddToggle}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_step_pct",{initialValue:0}],expression:"['trend_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_step_pct",{initialValue:0}],expression:"['dca_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_size_pct",{initialValue:0}],expression:"['trend_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_size_pct",{initialValue:0}],expression:"['dca_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_max_times",{initialValue:0}],expression:"['trend_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_max_times",{initialValue:0}],expression:"['dca_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1)],1)],1),a("a-collapse-panel",{key:"reduce",attrs:{header:e.$t("dashboard.indicator.backtest.panel.reduce")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['adverse_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_step_pct",{initialValue:0}],expression:"['trend_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_step_pct",{initialValue:0}],expression:"['adverse_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_size_pct",{initialValue:0}],expression:"['trend_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_size_pct",{initialValue:0}],expression:"['adverse_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_max_times",{initialValue:0}],expression:"['trend_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_max_times",{initialValue:0}],expression:"['adverse_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1)],1)],1),a("a-collapse-panel",{key:"position",attrs:{header:e.$t("dashboard.indicator.backtest.panel.position")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.entryPct"),help:e.$t("dashboard.indicator.backtest.hint.entryPctMax",{maxPct:Number(e.entryPctMaxUi||0).toFixed(0)})}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_pct",{initialValue:100}],expression:"['entry_pct', { initialValue: 100 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:e.entryPctMaxUi,step:.1,precision:4},on:{change:e.onEntryPctChange}})],1)],1),a("a-col",{attrs:{span:12}})],1)],1)],1),a("div",{staticClass:"ai-filter-box"},[a("div",{staticClass:"ai-filter-header"},[a("div",{staticClass:"ai-filter-title"},[a("a-icon",{attrs:{type:"robot"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.enableAiFilter")))])],1),a("a-switch",{attrs:{checked:e.aiFilterEnabledUi},on:{change:e.onAiFilterToggle}})],1),a("div",{staticClass:"ai-filter-hint"},[e._v(e._s(e.$t("trading-assistant.form.enableAiFilterHint")))])])],2)],1):e._e(),"script"===e.strategyMode?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}})],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbol")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{initialValue:1e3,rules:[{required:!0}]}],expression:"['initial_capital', { initialValue: 1000, rules: [{ required: true }] }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}]},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5}],expression:"['leverage', { initialValue: 5 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:125,step:1}})],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"both"}],expression:"['trade_direction', { initialValue: 'both' }]"}],attrs:{getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-select-option",{attrs:{value:"short"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionShort")))]),a("a-select-option",{attrs:{value:"both"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionBoth")))])],1)],1)],1)],1):e._e()]),"script"===e.strategyMode?a("div",{directives:[{name:"show",rawName:"v-show",value:1===e.currentStep,expression:"currentStep === 1"}],staticClass:"step-content"},[a("strategy-editor",{ref:"strategyEditor",attrs:{"is-dark":e.isDarkTheme,"user-id":1,visible:e.showFormModal&&"script"===e.strategyMode&&1===e.currentStep,"initial-template-key":e.pendingScriptTemplateKey},on:{"template-change":e.onScriptTemplateChange},model:{value:e.strategyCode,callback:function(t){e.strategyCode=t},expression:"strategyCode"}})],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:"script"===e.strategyMode&&2===e.currentStep||"script"!==e.strategyMode&&1===e.currentStep,expression:"(strategyMode === 'script' && currentStep === 2) || (strategyMode !== 'script' && currentStep === 1)"}],staticClass:"step-content"},[a("a-form",{attrs:{form:e.form,layout:"vertical",autocomplete:"off"}},[a("div",{staticClass:"execution-step-layout"},[a("div",{staticClass:"execution-step-hero"},[a("div",{staticClass:"simple-mode-kicker"},[e._v(e._s(e.$t("trading-assistant.form.step2HeroTitle")))]),a("div",{staticClass:"execution-step-hero-desc"},[e._v(e._s(e.$t("trading-assistant.form.step2HeroDesc")))])]),a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.executionSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.executionSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.executionMode")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["execution_mode",{initialValue:"signal"}],expression:"['execution_mode', { initialValue: 'signal' }]"}],staticStyle:{display:"none"}}),a("div",{staticClass:"execution-mode-cards"},[a("div",{class:["execution-mode-card",{active:"signal"===e.executionModeUi}],on:{click:function(t){return e.setExecutionModeUi("signal")}}},[a("div",{staticClass:"execution-mode-card-icon signal"},[a("a-icon",{attrs:{type:"notification"}})],1),a("div",{staticClass:"execution-mode-card-body"},[a("div",{staticClass:"execution-mode-card-title"},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignal")))]),a("div",{staticClass:"execution-mode-card-desc"},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignalDesc")))])]),"signal"===e.executionModeUi?a("a-icon",{staticClass:"execution-mode-card-check",attrs:{type:"check-circle",theme:"filled"}}):e._e()],1),a("div",{class:["execution-mode-card","live-card",{active:"live"===e.executionModeUi,disabled:!e.canUseLiveTrading}],on:{click:function(t){e.canUseLiveTrading&&e.setExecutionModeUi("live")}}},[a("div",{staticClass:"execution-mode-card-icon live"},[a("a-icon",{attrs:{type:"thunderbolt"}})],1),a("div",{staticClass:"execution-mode-card-body"},[a("div",{staticClass:"execution-mode-card-title"},[e._v(e._s(e.$t("trading-assistant.form.executionModeLive")))]),a("div",{staticClass:"execution-mode-card-desc"},[e._v(" "+e._s(e.canUseLiveTrading?e.$t("trading-assistant.form.executionModeLiveDesc"):e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])]),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-icon",{staticClass:"execution-mode-card-check",attrs:{type:"check-circle",theme:"filled"}}):e._e()],1)]),e.canUseLiveTrading?e._e():a("div",{staticClass:"form-item-hint execution-warn-text"},[e._v(" "+e._s(e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.title"),description:e.$t("trading-assistant.liveDisclaimer.content")}}):e._e()],1),a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.notificationSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.notificationSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.notifyChannels")}},[a("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["notify_channels",{initialValue:["browser"]}],expression:"['notify_channels', { initialValue: ['browser'] }]"}],staticClass:"notify-channel-grid",on:{change:e.onNotifyChannelsChange}},[a("a-checkbox",{attrs:{value:"browser"}},[e._v(e._s(e.$t("trading-assistant.notify.browser")))]),a("a-checkbox",{attrs:{value:"email"}},[e._v(e._s(e.$t("trading-assistant.notify.email")))]),a("a-checkbox",{attrs:{value:"telegram"}},[e._v(e._s(e.$t("trading-assistant.notify.telegram")))]),a("a-checkbox",{attrs:{value:"discord"}},[e._v(e._s(e.$t("trading-assistant.notify.discord")))]),a("a-checkbox",{attrs:{value:"webhook"}},[e._v(e._s(e.$t("trading-assistant.notify.webhook")))]),a("a-checkbox",{attrs:{value:"phone"}},[e._v(e._s(e.$t("trading-assistant.notify.phone")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(e._s(e.$t("trading-assistant.form.notifyChannelsHint")))])],1),e.unconfiguredChannels.length>0?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationConfigMissing",{channels:e.unconfiguredChannels.join(", ")}))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,2930252607)}):e.notifyChannelsUi.length>0&&!e.notifyChannelsUi.includes("browser")||e.notifyChannelsUi.length>1?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"info",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationFromProfile"))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}])}):e._e()],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.liveConnectionSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.liveConnectionSectionDesc")))])]),a("a-alert",{staticClass:"section-inline-alert",staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning","show-icon":"",message:e.$t("trading-assistant.form.liveTradingConfigTitle"),description:e.$t("trading-assistant.form.liveTradingConfigHint")}}),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.savedCredential")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["credential_id",{rules:[{required:!0,message:e.$t("profile.exchange.noCredentialHint")}],getValueFromEvent:function(t){return t||void 0}}],expression:"['credential_id', {\n rules: [{ required: true, message: $t('profile.exchange.noCredentialHint') }],\n getValueFromEvent: (val) => val || undefined\n }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSavedCredential"),"allow-clear":"","show-search":"","option-filter-prop":"children",loading:e.loadingExchangeCredentials},on:{change:e.handleCredentialSelectChange}},e._l(e.filteredExchangeCredentials,function(t){return a("a-select-option",{key:t.id,attrs:{value:t.id}},[e._v(" "+e._s(e.formatCredentialLabel(t))+" ")])}),1),a("div",{staticClass:"form-item-hint ta-credential-actions",staticStyle:{"margin-top":"6px"}},[a("a-button",{staticClass:"ta-add-cred-btn",attrs:{type:"link",size:"small"},on:{click:function(t){e.showExchangeAccountModal=!0}}},[a("a-icon",{attrs:{type:"plus-circle"}}),e._v(" "+e._s(e.$t("quickTrade.addAccountInline"))+" ")],1),a("span",{staticClass:"ta-credential-actions-sep"},[e._v("·")]),a("router-link",{attrs:{to:"/profile?tab=exchange"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),e._v(e._s(e.$t("profile.exchange.goToManage"))+" ")],1)],1),"live"===e.executionModeUi&&e.canUseLiveTrading&&!e.loadingExchangeCredentials&&0===e.filteredExchangeCredentials.length?a("a-alert",{staticStyle:{"margin-top":"10px"},attrs:{type:"warning","show-icon":"",message:e.$t("trading-assistant.noCredentialForLive.title")}},[a("template",{slot:"description"},[a("span",[e._v(e._s(e.$t("trading-assistant.noCredentialForLive.desc")))]),a("a-button",{staticStyle:{"margin-left":"8px"},attrs:{type:"primary",size:"small"},on:{click:function(t){e.showExchangeAccountModal=!0}}},[e._v(" "+e._s(e.$t("quickTrade.addAccountInline"))+" ")])],1)],2):e._e()],1)],1):e._e()])])],1)])],1),a("template",{slot:"footer"},[a("a-button",{on:{click:e.handleCloseModal}},[e._v(e._s(e.$t("trading-assistant.form.cancel")))]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep>0,expression:"currentStep > 0"}],on:{click:e.handlePrev}},[e._v(" "+e._s(e.$t("trading-assistant.form.prev"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.showStrategyFormNext,expression:"showStrategyFormNext"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleNext}},[e._v(" "+e._s(e.$t("trading-assistant.form.next"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.showStrategyFormSubmit,expression:"showStrategyFormSubmit"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.editingStrategy?e.$t("trading-assistant.form.confirmEdit"):e.$t("trading-assistant.form.confirmCreate"))+" ")])],1)],2),a("a-modal",{attrs:{title:e.$t("trading-assistant.form.addSymbolTitle"),visible:e.showAddSymbolModal,confirmLoading:e.addingSymbol,width:"600px",okText:e.$t("trading-assistant.form.confirmAdd"),cancelText:e.$t("trading-assistant.form.cancel"),maskClosable:!1,keyboard:!1},on:{ok:e.handleConfirmAddSymbol,cancel:e.handleCloseAddSymbolModal}},[a("div",{staticClass:"add-symbol-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:e.handleAddSymbolMarketChange},model:{value:e.addSymbolMarket,callback:function(t){e.addSymbolMarket=t},expression:"addSymbolMarket"}},e._l(e.addSymbolMarketTypes,function(t){return a("a-tab-pane",{key:t.value,attrs:{tab:e.$t(t.i18nKey||"dashboard.analysis.market.".concat(t.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:e.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:e.searchingSymbol,size:"large","allow-clear":""},on:{search:e.handleSearchSymbol,change:e.handleSymbolSearchInputChange},model:{value:e.addSymbolKeyword,callback:function(t){e.addSymbolKeyword=t},expression:"addSymbolKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),e.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.symbolSearchResults,loading:e.searchingSymbol,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,2801225082)})],1):e._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:e.loadingHotSymbols}},[e.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.hotSymbols,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,3959834868)}):a("a-empty",{attrs:{description:e.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),e.selectedAddSymbol?a("div",{staticClass:"selected-symbol-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#52c41a","margin-right":"4px"},attrs:{type:"check-circle"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.selectedSymbol"))+" ")],1),a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:e.getMarketColor(e.addSymbolMarket)}},[e._v(e._s(e.addSymbolMarket))]),a("span",{staticClass:"symbol-code"},[e._v(e._s(e.selectedAddSymbol.symbol))]),e.selectedAddSymbol.name?a("span",{staticClass:"symbol-name"},[e._v(e._s(e.selectedAddSymbol.name))]):e._e()],1)]):e._e()],1)])],1)],1),a("exchange-account-modal",{attrs:{visible:e.showExchangeAccountModal},on:{"update:visible":function(t){e.showExchangeAccountModal=t},success:e.handleExchangeAccountCreated}})],1)},i=[],r=a(15863),n=a(44735),o=a(81127),l=a(56252),c=a(2403),d=a(57532),u=a(76338),p=(a(2008),a(50113),a(23418),a(62062),a(34782),a(26910),a(79432),a(26099),a(16034),a(31415),a(47764),a(42762),a(23500),a(62953),a(36911)),m=a(35038),g=a(42430),h=a(84841),_=a(55434),y=a(75769),f=function(){var t=this,e=t._self._c;return e("div",{staticClass:"trading-records strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[0!==t.records.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.records,loading:t.loading,pagination:{pageSize:10},size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("a-tag",{attrs:{color:t.getTradeTypeColor(a)}},[t._v(" "+t._s(t.getTradeTypeText(a))+" ")])]}},{key:"price",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"amount",fn:function(e){return[t._v(" "+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"value",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(2))+" ")]}},{key:"profit",fn:function(a,s){return[e("span",{style:{color:a>0?"#52c41a":a<0?"#f5222d":"#666"}},[t._v(" "+t._s(t.formatProfit(a,s))+" ")])]}},{key:"commission",fn:function(e){return[t._v(" "+t._s(t.formatCommission(e))+" ")]}},{key:"time",fn:function(e,a){return[t._v(" "+t._s(t.formatTime(a.created_at||e))+" ")]}}])}):e("div",{staticClass:"empty-state strategy-tab-empty"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},v=[];function b(t,e){if(null==t)return{};var a={};for(var s in t)if({}.hasOwnProperty.call(t,s)){if(-1!==e.indexOf(s))continue;a[s]=t[s]}return a}function x(t,e){if(null==t)return{};var a,s,i=b(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(s=0;s1&&void 0!==arguments[1]?arguments[1]:{},a=A(t);if(!a)return null!=e.fallback?e.fallback:"-";var s=e.locale||"undefined"!==typeof navigator&&navigator.language||"zh-CN",i=$(),r={year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1};i&&(r.timeZone=i);try{return a.toLocaleString(s,r)}catch(o){try{r.timeZone;var n=x(r,w);return a.toLocaleString(s,n)}catch(l){return a.toLocaleString()}}}var P={name:"TradingRecords",props:{strategyId:{type:Number,required:!0},loading:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.time"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"time"}},{title:this.$t("dashboard.indicator.backtest.tradeType"),dataIndex:"type",key:"type",width:140,scopedSlots:{customRender:"type"}},{title:this.$t("trading-assistant.table.price"),dataIndex:"price",key:"price",width:120,scopedSlots:{customRender:"price"}},{title:this.$t("trading-assistant.table.amount"),dataIndex:"amount",key:"amount",width:120,scopedSlots:{customRender:"amount"}},{title:this.$t("trading-assistant.table.value"),dataIndex:"value",key:"value",width:120,scopedSlots:{customRender:"value"}},{title:this.$t("dashboard.indicator.backtest.profit"),dataIndex:"profit",key:"profit",width:120,scopedSlots:{customRender:"profit"}},{title:this.$t("trading-assistant.table.commission"),dataIndex:"commission",key:"commission",width:100,scopedSlots:{customRender:"commission"}}]}},data:function(){return{records:[]}},watch:{strategyId:{handler:function(t){t&&this.loadRecords()},immediate:!0}},methods:{loadRecords:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,p.tq)(t.strategyId);case 2:a=e.v,1===a.code?t.records=(a.data.trades||[]).map(function(t){return(0,u.A)((0,u.A)({},t),{},{time:t.created_at||t.time})}):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadTradesFailed")),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},formatTime:function(t){if(!t)return"--";var e=this.$i18n.locale||"zh-CN";return T(t,{locale:e,fallback:"--"})},getTradeTypeColor:function(t){var e={buy:"green",sell:"red",liquidation:"orange",open_long:"green",add_long:"cyan",close_long:"orange",close_long_stop:"red",close_long_profit:"lime",open_short:"red",add_short:"magenta",close_short:"blue",close_short_stop:"red",close_short_profit:"cyan"};return e[t]||"default"},getTradeTypeText:function(t){var e={buy:this.$t("dashboard.indicator.backtest.buy"),sell:this.$t("dashboard.indicator.backtest.sell"),liquidation:this.$t("dashboard.indicator.backtest.liquidation"),open_long:this.$t("dashboard.indicator.backtest.openLong"),add_long:this.$t("dashboard.indicator.backtest.addLong"),close_long:this.$t("dashboard.indicator.backtest.closeLong"),close_long_stop:this.$t("dashboard.indicator.backtest.closeLongStop"),close_long_profit:this.$t("dashboard.indicator.backtest.closeLongProfit"),open_short:this.$t("dashboard.indicator.backtest.openShort"),add_short:this.$t("dashboard.indicator.backtest.addShort"),close_short:this.$t("dashboard.indicator.backtest.closeShort"),close_short_stop:this.$t("dashboard.indicator.backtest.closeShortStop"),close_short_profit:this.$t("dashboard.indicator.backtest.closeShortProfit")};return e[t]||t},formatMoney:function(t){if(null===t||void 0===t)return"--";var e=t>=0?"+":"-";return"".concat(e,"$").concat(Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}))},formatProfit:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),s=["open_long","open_short","add_long","add_short"];return 0===a&&e&&s.includes(e.type)?"--":Math.abs(a)<1e-6?e&&s.includes(e.type)?"--":"$0.00":this.formatMoney(a)},formatCommission:function(t){if(null===t||void 0===t)return"--";var e=parseFloat(t);return isNaN(e)||Math.abs(e)<1e-6?"--":"$".concat(e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6}))}}},M=P,F=a(845),I=(0,F.A)(M,f,v,!1,null,"46c92dab",null),N=I.exports,D=function(){var t=this,e=t._self._c;return e("div",{staticClass:"position-records strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[0!==t.positions.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.positions,loading:t.loading,pagination:!1,size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"symbol",fn:function(a,s){return[e("strong",[t._v(t._s(s.symbol||a))])]}},{key:"side",fn:function(a,s){return[e("a-tag",{attrs:{color:"long"===(s.side||a)?"green":"red"}},[t._v(" "+t._s("long"===(s.side||a)?t.$t("trading-assistant.table.long"):t.$t("trading-assistant.table.short"))+" ")])]}},{key:"entryPrice",fn:function(a,s){return[t.hasValidPrice(s.entry_price||a)?e("span",[t._v(" $"+t._s(parseFloat(s.entry_price||a).toFixed(4))+" ")]):e("span",[t._v("--")])]}},{key:"currentPrice",fn:function(e,a){return[t._v(" $"+t._s(parseFloat(a.current_price||e||0).toFixed(4))+" ")]}},{key:"size",fn:function(e,a){return[t._v(" "+t._s(parseFloat(a.size||e||0).toFixed(4))+" ")]}},{key:"unrealizedPnl",fn:function(a,s){return[e("span",{class:{profit:parseFloat(s.unrealized_pnl||a||0)>0,loss:parseFloat(s.unrealized_pnl||a||0)<0}},[t._v(" $"+t._s(parseFloat(s.unrealized_pnl||a||0).toFixed(2))+" ")])]}},{key:"pnlPercent",fn:function(a,s){return[e("span",{class:{profit:parseFloat(s.pnl_percent||a||0)>0,loss:parseFloat(s.pnl_percent||a||0)<0}},[t._v(" "+t._s(parseFloat(s.pnl_percent||a||0).toFixed(2))+"% ")])]}}])}):e("div",{staticClass:"empty-state strategy-tab-empty"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},V=[],E=(a(25428),a(38781),{name:"PositionRecords",props:{strategyId:{type:Number,required:!0},marketType:{type:String,default:"swap"},leverage:{type:[Number,String],default:1},loading:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},data:function(){return{positions:[]}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.symbol"),dataIndex:"symbol",key:"symbol",width:120,scopedSlots:{customRender:"symbol"}},{title:this.$t("trading-assistant.table.side"),dataIndex:"side",key:"side",width:80,scopedSlots:{customRender:"side"}},{title:this.$t("trading-assistant.table.size"),dataIndex:"size",key:"size",width:120,scopedSlots:{customRender:"size"}},{title:this.$t("trading-assistant.table.entryPrice"),dataIndex:"entry_price",key:"entry_price",width:120,scopedSlots:{customRender:"entryPrice"}},{title:this.$t("trading-assistant.table.currentPrice"),dataIndex:"current_price",key:"current_price",width:120,scopedSlots:{customRender:"currentPrice"}},{title:this.$t("trading-assistant.table.unrealizedPnl"),dataIndex:"unrealized_pnl",key:"unrealized_pnl",width:120,scopedSlots:{customRender:"unrealizedPnl"}},{title:this.$t("trading-assistant.table.pnlPercent"),dataIndex:"pnl_percent",key:"pnl_percent",width:100,scopedSlots:{customRender:"pnlPercent"}}]}},watch:{strategyId:{handler:function(t){t?(this.loadPositions(),this.startPolling()):this.stopPolling()},immediate:!0}},beforeDestroy:function(){this.stopPolling()},methods:{loadPositions:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,p.oK)(t.strategyId);case 2:a=e.v,1===a.code?(s=a.data.positions||[],t.positions=s.map(function(e,a){var s=String(t.marketType||"swap").toLowerCase(),i=parseFloat(t.leverage);(!isFinite(i)||i<=0)&&(i=1),"spot"===s&&(i=1);var r=parseFloat(e.entry_price||e.entryPrice||0),n=parseFloat(e.size||"0")||0,o=parseFloat(e.unrealized_pnl||e.unrealizedPnl||"0")||0,l=parseFloat(e.pnl_percent||e.pnlPercent||"0")||0;r>0&&n>0?l=o/(r*n)*100*i:"spot"!==s&&(l*=i);var c={id:e.id||a,symbol:e.symbol||"",side:e.side||"long",size:n>0?n.toString():"0",entry_price:r>0?r.toString():"0",current_price:e.current_price||e.currentPrice||"0",unrealized_pnl:e.unrealized_pnl||e.unrealizedPnl||"0",pnl_percent:l,updated_at:e.updated_at||e.updatedAt||""};return c})):t.positions=[],e.n=4;break;case 3:e.p=3,e.v,t.positions=[];case 4:return e.a(2)}},e,null,[[1,3]])}))()},hasValidPrice:function(t){var e=parseFloat(t);return Number.isFinite(e)&&e>0},startPolling:function(){var t=this;this.stopPolling(),this.pollingTimer=setInterval(function(){t.loadPositions()},5e3)},stopPolling:function(){this.pollingTimer&&(clearInterval(this.pollingTimer),this.pollingTimer=null)}}}),R=E,z=(0,F.A)(R,D,V,!1,null,"6ba7d922",null),L=z.exports,U=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-type-selector",class:{"theme-dark":t.isDark}},[e("div",{staticClass:"selector-header"},[e("h3",[t._v(t._s(t.$t("trading-assistant.selectMode")))]),e("p",{staticClass:"selector-hint"},[t._v(t._s(t.$t("trading-assistant.selectModeHint")))])]),e("div",{staticClass:"mode-cards"},[e("div",{staticClass:"mode-card",class:{selected:"signal"===t.selected},on:{click:function(e){return t.$emit("select","signal")}}},[e("div",{staticClass:"card-icon signal-icon"},[e("a-icon",{attrs:{type:"line-chart"}})],1),e("div",{staticClass:"card-body"},[e("div",{staticClass:"card-badge-row"},[e("span",{staticClass:"card-badge"},[t._v(t._s(t.$t("trading-assistant.strategyMode.signalBadge")))])]),e("h4",[t._v(t._s(t.$t("trading-assistant.strategyMode.signal")))]),e("p",{staticClass:"card-desc"},[t._v(t._s(t.$t("trading-assistant.strategyMode.signalDesc")))]),e("ul",{staticClass:"card-features"},[e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature1")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature2")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature3")))],1)])]),e("a-button",{staticClass:"card-btn",attrs:{type:"primary",ghost:""},on:{click:function(e){return e.stopPropagation(),t.$emit("select","signal")}}},[t._v(" "+t._s(t.$t("trading-assistant.useThisMode"))+" ")])],1),e("div",{staticClass:"mode-card",class:{selected:"script"===t.selected},on:{click:function(e){return t.$emit("select","script")}}},[e("div",{staticClass:"card-icon script-icon"},[e("a-icon",{attrs:{type:"code"}})],1),e("div",{staticClass:"card-body"},[e("div",{staticClass:"card-badge-row"},[e("span",{staticClass:"card-badge card-badge--script"},[t._v(t._s(t.$t("trading-assistant.strategyMode.scriptBadge")))])]),e("h4",[t._v(t._s(t.$t("trading-assistant.strategyMode.script")))]),e("p",{staticClass:"card-desc"},[t._v(t._s(t.$t("trading-assistant.strategyMode.scriptDesc")))]),e("ul",{staticClass:"card-features"},[e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature1")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature2")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature3")))],1)])]),e("a-button",{staticClass:"card-btn",attrs:{type:"primary",ghost:""},on:{click:function(e){return e.stopPropagation(),t.$emit("select","script")}}},[t._v(" "+t._s(t.$t("trading-assistant.useThisMode"))+" ")])],1)]),e("div",{staticClass:"template-quick-start"},[e("a-divider",[e("span",{staticClass:"divider-text"},[t._v(t._s(t.$t("trading-assistant.fromTemplate")))])]),e("div",{staticClass:"template-tags"},t._l(t.templates,function(a){return e("a-tag",{key:a.key,staticClass:"template-tag",on:{click:function(e){return t.$emit("use-template",a.key)}}},[e("span",{staticClass:"tpl-icon"},[t._v(t._s(a.icon))]),t._v(" "+t._s(t.$t("trading-assistant.template.".concat(a.key)))+" ")])}),1)],1)])},q=[],K=(a(84864),a(25440),[{key:"trendFollowing",icon:"📈",code:"\"\"\"\nTrend Following Strategy\nUses EMA crossover with dynamic stop-loss / take-profit.\n\"\"\"\n\ndef on_init(ctx):\n ctx.fast_period = ctx.param('fast_period', 12)\n ctx.slow_period = ctx.param('slow_period', 26)\n ctx.position_pct = ctx.param('position_pct', 0.95)\n ctx.stop_pct = ctx.param('stop_pct', 0.03)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.08)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.slow_period + 5)\n if len(bars) < ctx.slow_period:\n return\n\n closes = [b['close'] for b in bars]\n fast_ema = _ema(closes, ctx.fast_period)\n slow_ema = _ema(closes, ctx.slow_period)\n price = bar['close']\n\n if fast_ema > slow_ema and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BUY at {price:.2f}\")\n\n elif fast_ema < slow_ema and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"SELL at {price:.2f}\")\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct <= -ctx.stop_pct:\n ctx.close_position()\n ctx.log(f\"STOP LOSS at {price:.2f}\")\n elif pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.log(f\"TAKE PROFIT at {price:.2f}\")\n\ndef _ema(data, period):\n k = 2 / (period + 1)\n ema = data[0]\n for price in data[1:]:\n ema = price * k + ema * (1 - k)\n return ema\n",params:[{name:"fast_period",type:"integer",default:12,min:2,max:120,step:1},{name:"slow_period",type:"integer",default:26,min:5,max:240,step:1},{name:"position_pct",type:"percent",default:.95,min:.05,max:1,step:.01},{name:"stop_pct",type:"percent",default:.03,min:.001,max:.5,step:.001},{name:"take_profit_pct",type:"percent",default:.08,min:.001,max:1,step:.001}]},{key:"martingale",icon:"🔥",code:"\"\"\"\nMartingale Strategy\nDouble position on each loss, with max layer control.\n\"\"\"\n\ndef on_init(ctx):\n ctx.base_amount = ctx.param('base_amount', 100)\n ctx.max_layers = ctx.param('max_layers', 5)\n ctx.multiplier = ctx.param('multiplier', 2.0)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.02)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.04)\n ctx.cooldown_bars = ctx.param('cooldown_bars', 1)\n ctx.current_layer = 0\n ctx.cooldown = 0\n\ndef on_bar(ctx, bar):\n if ctx.cooldown > 0:\n ctx.cooldown -= 1\n return\n\n price = bar['close']\n if not ctx.position:\n amount = ctx.base_amount * (ctx.multiplier ** ctx.current_layer)\n if amount <= ctx.balance:\n qty = amount / price\n ctx.buy(price, qty)\n ctx.log(f\"Layer {ctx.current_layer}: BUY {qty:.4f} at {price:.2f}\")\n else:\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n\n if pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.current_layer = 0\n ctx.cooldown = ctx.cooldown_bars\n ctx.log(f\"TAKE PROFIT at {price:.2f}, reset layers\")\n\n elif pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.cooldown = ctx.cooldown_bars\n if ctx.current_layer < ctx.max_layers:\n ctx.current_layer += 1\n ctx.log(f\"LOSS, escalate to layer {ctx.current_layer}\")\n else:\n ctx.current_layer = 0\n ctx.log(\"Max layers reached, reset\")\n",params:[{name:"base_amount",type:"number",default:100,min:10,max:1e6,step:10},{name:"max_layers",type:"integer",default:5,min:1,max:20,step:1},{name:"multiplier",type:"number",default:2,min:1,max:5,step:.1},{name:"take_profit_pct",type:"percent",default:.02,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.04,min:.001,max:1,step:.001},{name:"cooldown_bars",type:"integer",default:1,min:0,max:500,step:1}]},{key:"grid",icon:"📐",code:"\"\"\"\nGrid-style strategy (K-line / bar simulation).\n\nUnlike an exchange-native grid that pre-places many limit orders on the book, this template\nevaluates once per CLOSED bar: if the close crosses a grid cell edge, it emits buy/sell actions.\nLive behavior still depends on trade_direction (long / short / both) and spot vs futures.\n\ngrid_mode:\n- neutral: buy on dips into a cell, sell when price moves up out of a filled cell (futures+both may open shorts after flat)\n- long: long-biased grid; prefer trade_direction=long (spot is always long-only)\n- short: short-biased grid (sell to open on rallies, buy to cover on dips); prefer trade_direction=short or both\n\"\"\"\n\ndef on_init(ctx):\n ctx.grid_mode = ctx.param('grid_mode', 'neutral')\n ctx.grid_upper = ctx.param('grid_upper', 70000)\n ctx.grid_lower = ctx.param('grid_lower', 60000)\n ctx.grid_levels = ctx.param('grid_levels', 10)\n ctx.order_amount = ctx.param('order_amount', 100)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.05)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.03)\n ctx.filled_grids = set()\n\n spacing = (ctx.grid_upper - ctx.grid_lower) / ctx.grid_levels\n ctx.grid_prices = [ctx.grid_lower + i * spacing for i in range(ctx.grid_levels + 1)]\n\ndef on_bar(ctx, bar):\n price = bar['close']\n mode = str(ctx.grid_mode or 'neutral').lower()\n if mode not in ('neutral', 'long', 'short'):\n mode = 'neutral'\n\n if price < ctx.grid_lower or price > ctx.grid_upper:\n return\n\n if ctx.position:\n side = ctx.position.get('side') or ''\n entry = float(ctx.position.get('entry_price') or 0)\n if side == 'long' and entry > 0:\n pnl_pct = (price - entry) / entry\n elif side == 'short' and entry > 0:\n pnl_pct = (entry - price) / entry\n else:\n pnl_pct = 0.0\n if side in ('long', 'short') and (pnl_pct >= ctx.take_profit_pct or pnl_pct <= -ctx.stop_loss_pct):\n ctx.close_position()\n ctx.filled_grids.clear()\n ctx.log(f\"Grid risk exit at {price:.2f}, pnl={pnl_pct:.2%}\")\n return\n\n if mode == 'short':\n for i, gp in enumerate(ctx.grid_prices[:-1]):\n upper_gp = ctx.grid_prices[i + 1]\n grid_id = f\"grid_{i}\"\n if price >= upper_gp and grid_id not in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.sell(price, qty)\n ctx.filled_grids.add(grid_id)\n ctx.log(f\"Grid SHORT add at {price:.2f} (level {i})\")\n elif price <= gp and grid_id in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.buy(price, qty)\n ctx.filled_grids.discard(grid_id)\n ctx.log(f\"Grid SHORT cover at {price:.2f} (level {i})\")\n return\n\n for i, gp in enumerate(ctx.grid_prices[:-1]):\n upper_gp = ctx.grid_prices[i + 1]\n grid_id = f\"grid_{i}\"\n if price <= gp and grid_id not in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.buy(price, qty)\n ctx.filled_grids.add(grid_id)\n ctx.log(f\"Grid BUY at {price:.2f} (level {i})\")\n elif price >= upper_gp and grid_id in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.sell(price, qty)\n ctx.filled_grids.discard(grid_id)\n ctx.log(f\"Grid SELL at {price:.2f} (level {i})\")\n",params:[{name:"grid_mode",type:"select",default:"neutral",options:[{value:"neutral",labelKey:"trading-assistant.templateParam.grid_mode.optionNeutral"},{value:"long",labelKey:"trading-assistant.templateParam.grid_mode.optionLong"},{value:"short",labelKey:"trading-assistant.templateParam.grid_mode.optionShort"}]},{name:"grid_upper",type:"number",default:7e4,min:1,max:1e8,step:10},{name:"grid_lower",type:"number",default:6e4,min:1,max:1e8,step:10},{name:"grid_levels",type:"integer",default:10,min:2,max:200,step:1},{name:"order_amount",type:"number",default:100,min:1,max:1e6,step:1},{name:"take_profit_pct",type:"percent",default:.05,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.03,min:.001,max:1,step:.001}]},{key:"dca",icon:"💰",code:"\"\"\"\nDCA (Dollar Cost Averaging) Strategy\nPeriodic purchases with optional dip-buying.\n\"\"\"\n\ndef on_init(ctx):\n ctx.buy_amount = ctx.param('buy_amount', 100)\n ctx.dip_threshold = ctx.param('dip_threshold', 0.05)\n ctx.dip_multiplier = ctx.param('dip_multiplier', 2.0)\n ctx.buy_interval = ctx.param('buy_interval', 24)\n ctx.max_orders = ctx.param('max_orders', 999)\n ctx.bar_count = 0\n ctx.order_count = 0\n ctx.last_buy_price = None\n\ndef on_bar(ctx, bar):\n ctx.bar_count += 1\n price = bar['close']\n\n if ctx.order_count >= ctx.max_orders:\n return\n\n is_dip = False\n if ctx.last_buy_price and price < ctx.last_buy_price * (1 - ctx.dip_threshold):\n is_dip = True\n\n if ctx.bar_count % ctx.buy_interval == 0 or is_dip:\n amount = ctx.buy_amount * (ctx.dip_multiplier if is_dip else 1.0)\n if amount <= ctx.balance:\n qty = amount / price\n ctx.buy(price, qty)\n ctx.last_buy_price = price\n ctx.order_count += 1\n tag = \" (DIP BUY)\" if is_dip else \"\"\n ctx.log(f\"DCA BUY {qty:.6f} at {price:.2f}{tag}\")\n",params:[{name:"buy_amount",type:"number",default:100,min:1,max:1e6,step:1},{name:"buy_interval",type:"integer",default:24,min:1,max:1e3,step:1},{name:"dip_threshold",type:"percent",default:.05,min:.001,max:1,step:.001},{name:"dip_multiplier",type:"number",default:2,min:1,max:10,step:.1},{name:"max_orders",type:"integer",default:999,min:1,max:9999,step:1}]},{key:"meanReversion",icon:"🔄",code:"\"\"\"\nMean Reversion Strategy\nBollinger Bands based: buy at lower band, sell at upper band.\n\"\"\"\n\ndef on_init(ctx):\n ctx.period = ctx.param('period', 20)\n ctx.std_mult = ctx.param('std_mult', 2.0)\n ctx.position_pct = ctx.param('position_pct', 0.5)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.03)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.02)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.period + 5)\n if len(bars) < ctx.period:\n return\n\n closes = [b['close'] for b in bars[-ctx.period:]]\n mean = sum(closes) / len(closes)\n std = (sum((c - mean) ** 2 for c in closes) / len(closes)) ** 0.5\n\n upper = mean + ctx.std_mult * std\n lower = mean - ctx.std_mult * std\n price = bar['close']\n\n if price <= lower and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BUY at {price:.2f} (below lower band {lower:.2f})\")\n\n elif price >= upper and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"SELL at {price:.2f} (above upper band {upper:.2f})\")\n\n elif ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct >= ctx.take_profit_pct or pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.log(f\"Risk exit at {price:.2f}, pnl={pnl_pct:.2%}\")\n",params:[{name:"period",type:"integer",default:20,min:2,max:300,step:1},{name:"std_mult",type:"number",default:2,min:.5,max:6,step:.1},{name:"position_pct",type:"percent",default:.5,min:.05,max:1,step:.01},{name:"take_profit_pct",type:"percent",default:.03,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.02,min:.001,max:1,step:.001}]},{key:"breakout",icon:"⚡",code:"\"\"\"\nBreakout Strategy\nEnter when price breaks key resistance/support with volume confirmation.\n\"\"\"\n\ndef on_init(ctx):\n ctx.lookback = ctx.param('lookback', 20)\n ctx.volume_mult = ctx.param('volume_mult', 1.5)\n ctx.position_pct = ctx.param('position_pct', 0.9)\n ctx.stop_pct = ctx.param('stop_pct', 0.02)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.05)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.lookback + 5)\n if len(bars) < ctx.lookback:\n return\n\n recent = bars[-ctx.lookback:]\n high = max(b['high'] for b in recent[:-1])\n low = min(b['low'] for b in recent[:-1])\n avg_vol = sum(b['volume'] for b in recent[:-1]) / (len(recent) - 1)\n price = bar['close']\n vol = bar['volume']\n\n if price > high and vol > avg_vol * ctx.volume_mult and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BREAKOUT BUY at {price:.2f} (prev high: {high:.2f})\")\n\n elif price < low and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"BREAK DOWN, close at {price:.2f}\")\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct <= -ctx.stop_pct:\n ctx.close_position()\n ctx.log(f\"STOP LOSS at {price:.2f}\")\n elif pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.log(f\"TAKE PROFIT at {price:.2f}\")\n",params:[{name:"lookback",type:"integer",default:20,min:2,max:300,step:1},{name:"volume_mult",type:"number",default:1.5,min:.5,max:10,step:.1},{name:"position_pct",type:"percent",default:.9,min:.05,max:1,step:.01},{name:"stop_pct",type:"percent",default:.02,min:.001,max:1,step:.001},{name:"take_profit_pct",type:"percent",default:.05,min:.001,max:1,step:.001}]},{key:"rsiMeanReversion",icon:"📉",code:"\"\"\"\nRSI mean reversion (long-focused)\nBuys when RSI is oversold; exits long when RSI is overbought.\n\"\"\"\n\ndef on_init(ctx):\n ctx.rsi_period = ctx.param('rsi_period', 14)\n ctx.oversold = ctx.param('oversold', 30)\n ctx.overbought = ctx.param('overbought', 70)\n ctx.position_pct = ctx.param('position_pct', 0.5)\n\ndef _rsi_simple(closes, period):\n n = len(closes)\n if n < period + 1:\n return None\n gains = 0.0\n losses = 0.0\n for i in range(n - period, n):\n diff = closes[i] - closes[i - 1]\n if diff > 0:\n gains += diff\n else:\n losses -= diff\n if losses == 0:\n return 100.0 if gains > 0 else 50.0\n rs = gains / losses\n return 100.0 - (100.0 / (1.0 + rs))\n\ndef on_bar(ctx, bar):\n need = ctx.rsi_period + 3\n bars = ctx.bars(need)\n if len(bars) < need:\n return\n closes = [b['close'] for b in bars]\n r = _rsi_simple(closes, ctx.rsi_period)\n if r is None:\n return\n price = bar['close']\n if r <= ctx.oversold and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"RSI BUY r={r:.1f} at {price:.2f}\")\n elif r >= ctx.overbought and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"RSI SELL r={r:.1f} at {price:.2f}\")\n",params:[{name:"rsi_period",type:"integer",default:14,min:2,max:100,step:1},{name:"oversold",type:"number",default:30,min:1,max:50,step:1},{name:"overbought",type:"number",default:70,min:50,max:99,step:1},{name:"position_pct",type:"percent",default:.5,min:.05,max:1,step:.01}]},{key:"macdCross",icon:"📊",code:"\"\"\"\nMACD histogram crossover\nEnters long when MACD histogram crosses above zero; exits when it crosses below.\n\"\"\"\n\ndef on_init(ctx):\n ctx.macd_fast = ctx.param('macd_fast', 12)\n ctx.macd_slow = ctx.param('macd_slow', 26)\n ctx.macd_signal = ctx.param('macd_signal', 9)\n ctx.position_pct = ctx.param('position_pct', 0.6)\n\ndef _ema_series(vals, period):\n k = 2.0 / (period + 1)\n out = []\n e = float(vals[0])\n out.append(e)\n for v in vals[1:]:\n v = float(v)\n e = v * k + e * (1 - k)\n out.append(e)\n return out\n\ndef _macd_hist_last_two(closes, fast, slow, sig):\n n = len(closes)\n if n < slow + sig + 2:\n return None, None\n ef = _ema_series(closes, fast)\n es = _ema_series(closes, slow)\n macd = [ef[i] - es[i] for i in range(n)]\n sg = _ema_series(macd, sig)\n hist = [macd[i] - sg[i] for i in range(n)]\n return hist[-2], hist[-1]\n\ndef on_bar(ctx, bar):\n need = ctx.macd_slow + ctx.macd_signal + 30\n bars = ctx.bars(need)\n if len(bars) < need:\n return\n closes = [b['close'] for b in bars]\n h0, h1 = _macd_hist_last_two(closes, ctx.macd_fast, ctx.macd_slow, ctx.macd_signal)\n if h0 is None:\n return\n price = bar['close']\n if h0 <= 0 and h1 > 0 and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"MACD cross up at {price:.2f}\")\n elif h0 >= 0 and h1 < 0 and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"MACD cross down at {price:.2f}\")\n",params:[{name:"macd_fast",type:"integer",default:12,min:2,max:50,step:1},{name:"macd_slow",type:"integer",default:26,min:5,max:120,step:1},{name:"macd_signal",type:"integer",default:9,min:2,max:50,step:1},{name:"position_pct",type:"percent",default:.6,min:.05,max:1,step:.01}]}]);function O(t){return String(t).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function B(t){return"boolean"===typeof t?t?"True":"False":"number"===typeof t?Number.isFinite(t)?String(t):"0":null===t||void 0===t?"None":"'".concat(String(t).replace(/\\/g,"\\\\").replace(/'/g,"\\'"),"'")}var G=K;function H(t){return K.find(function(e){return e.key===t})||null}function W(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a="string"===typeof t?H(t):t;return a?a.params.reduce(function(t,a){return t[a.name]=Object.prototype.hasOwnProperty.call(e,a.name)?e[a.name]:a.default,t},{}):{}}function j(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a="string"===typeof t?H(t):t;if(!a)return"";var s=W(a,e);return a.params.reduce(function(t,e){var a=B(s[e.name]),i=new RegExp("(ctx\\.param\\(['\"]".concat(O(e.name),"['\"],\\s*)([^\\)]+)(\\))"));return t.replace(i,"$1".concat(a,"$3"))},a.code)}var Y={name:"StrategyTypeSelector",props:{selected:{type:String,default:""},isDark:{type:Boolean,default:!1}},data:function(){return{templates:G.map(function(t){return{key:t.key,icon:t.icon}})}}},J=Y,X=(0,F.A)(J,U,q,!1,null,"8ec7ab14",null),Z=X.exports,Q=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-editor",class:{"theme-dark":t.isDark}},[e("a-row",{staticClass:"editor-layout",attrs:{gutter:16}},[e("a-col",{staticClass:"code-col",attrs:{xs:24,md:16}},[e("div",{staticClass:"code-section"},[e("div",{staticClass:"section-header"},[e("div",{staticClass:"section-title-wrap"},[e("span",{staticClass:"section-title"},[e("a-icon",{attrs:{type:"code"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.title"))+" ")],1),t.selectedTemplate?e("a-tag",{staticClass:"current-template-tag",attrs:{color:"blue"}},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key)))+" ")]):t._e()],1),e("div",{staticClass:"section-actions"},[e("a-button",{staticClass:"verify-btn",attrs:{type:"link",size:"small",loading:t.verifying},on:{click:t.handleVerify}},[e("a-icon",{attrs:{type:"check-circle"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.verify"))+" ")],1)],1)]),e("div",{ref:"editorContainer",staticClass:"code-editor-container"})])]),e("a-col",{staticClass:"side-col",attrs:{xs:24,md:8}},[e("a-tabs",{staticClass:"side-tabs",attrs:{size:"small",animated:!1},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("a-tab-pane",{key:"templates",attrs:{tab:t.$t("trading-assistant.editor.templateTab"),"force-render":!0}},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(t._s(t.$t("trading-assistant.editor.templateIntroTitle")))]),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.templateIntroDesc")))])]),e("div",{staticClass:"template-list"},t._l(t.templates,function(a){return e("div",{key:a.key,staticClass:"template-item",class:{active:t.selectedTemplateKey===a.key},on:{click:function(e){return t.loadTemplate(a.key,{focusParams:!0,resetParams:!0})}}},[e("div",{staticClass:"tpl-header"},[e("span",{staticClass:"tpl-icon"},[t._v(t._s(a.icon))]),e("span",{staticClass:"tpl-name"},[t._v(t._s(t.$t("trading-assistant.template.".concat(a.key))))])]),e("p",{staticClass:"tpl-desc"},[t._v(t._s(t.$t("trading-assistant.template.".concat(a.key,"Desc"))))]),e("a-button",{staticClass:"tpl-use-btn",attrs:{type:"link",size:"small"}},[t._v(" "+t._s(t.$t("trading-assistant.template.useTemplate"))+" "),e("a-icon",{attrs:{type:"arrow-right"}})],1)],1)}),0)]),e("a-tab-pane",{key:"params",attrs:{tab:t.$t("trading-assistant.editor.paramsTab"),"force-render":!0}},[t.selectedTemplate?e("div",{staticClass:"params-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key)))+" ")]),e("div",{staticClass:"panel-intro__desc"},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key,"Desc")))+" ")])]),e("a-alert",{staticClass:"params-tip",attrs:{type:"info","show-icon":"",message:t.$t("trading-assistant.editor.paramsHint")}}),e("div",{staticClass:"param-list"},t._l(t.selectedTemplate.params,function(a){return e("div",{key:a.name,staticClass:"param-item"},[e("div",{staticClass:"param-item__label-row"},[e("span",{staticClass:"param-item__label"},[t._v(t._s(t.getParamLabel(a)))]),e("span",{staticClass:"param-item__type"},[t._v(t._s(t.getParamTypeLabel(a.type)))])]),t.getParamDescription(a)?e("div",{staticClass:"param-item__desc"},[t._v(t._s(t.getParamDescription(a)))]):t._e(),"number"===a.type||"integer"===a.type||"percent"===a.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{value:t.templateParamValues[a.name],min:a.min,max:a.max,step:a.step||1,precision:"integer"===a.type?0:t.getParamPrecision(a)},on:{change:function(e){return t.handleNumericParamChange(a,e)}}}):"select"===a.type?e("a-select",{staticStyle:{width:"100%"},attrs:{value:t.templateParamValues[a.name]},on:{change:function(e){return t.handleSelectParamChange(a,e)}}},t._l(a.options||[],function(a){return e("a-select-option",{key:a.value,attrs:{value:a.value}},[t._v(" "+t._s(t.getOptionLabel(a))+" ")])}),1):"boolean"===a.type?e("div",{staticClass:"param-item__switch"},[e("a-switch",{attrs:{checked:!!t.templateParamValues[a.name]},on:{change:function(e){return t.handleBooleanParamChange(a,e)}}}),e("span",[t._v(t._s(t.templateParamValues[a.name]?t.$t("common.yes"):t.$t("common.no")))])],1):e("a-input",{attrs:{value:t.templateParamValues[a.name]},on:{input:function(e){return t.handleTextParamChange(a,e.target.value)}}})],1)}),0),e("div",{staticClass:"params-actions"},[e("a-button",{on:{click:t.resetTemplateParams}},[t._v(" "+t._s(t.$t("trading-assistant.editor.resetTemplateParams"))+" ")]),e("a-button",{attrs:{type:"primary",disabled:!t.templateDirty},on:{click:t.applySelectedTemplateToCode}},[t._v(" "+t._s(t.$t("trading-assistant.editor.applyTemplateParams"))+" ")])],1)],1):e("div",{staticClass:"params-empty-guide"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.editor.paramsEmpty")}},[e("a-button",{attrs:{type:"primary",size:"small",ghost:""},on:{click:function(e){t.activeTab="templates"}}},[e("a-icon",{attrs:{type:"appstore"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.templateTab"))+" ")],1)],1)],1)]),e("a-tab-pane",{key:"ai",attrs:{tab:t.$t("trading-assistant.editor.aiTab"),"force-render":!0}},[e("div",{staticClass:"ai-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(t.$t("trading-assistant.editor.aiGenerate")))])],1),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.aiHint")))])]),e("div",{staticClass:"ai-suggestions"},t._l(t.aiPromptSuggestions,function(a){return e("a-tag",{key:a.id,staticClass:"prompt-tag",on:{click:function(e){return t.applyPromptSuggestion(a.value)}}},[t._v(" "+t._s(a.label)+" ")])}),1),e("a-textarea",{attrs:{placeholder:t.$t("trading-assistant.editor.aiPromptPlaceholder"),rows:10,"auto-size":{minRows:8,maxRows:16}},model:{value:t.aiPrompt,callback:function(e){t.aiPrompt=e},expression:"aiPrompt"}}),e("div",{staticClass:"ai-actions"},[e("a-button",{attrs:{type:"primary",block:"",loading:t.aiAdjustingParams,disabled:t.aiGenerating,size:"large"},on:{click:t.handleAIAdjustParams}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.aiAdjustParamsBtn"))+" ")],1),e("a-button",{staticStyle:{"margin-top":"8px"},attrs:{block:"",loading:t.aiGenerating,disabled:t.aiAdjustingParams,size:"large"},on:{click:t.handleAIGenerate}},[e("a-icon",{attrs:{type:"code"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.aiGenerateFullCodeBtn"))+" ")],1)],1),t.aiGenerating||t.aiAdjustingParams?e("div",{staticClass:"ai-status"},[e("a-icon",{attrs:{type:"loading",spin:""}}),t._v(" "+t._s(t.aiAdjustingParams?t.$t("trading-assistant.editor.aiAdjustingParams"):t.$t("trading-assistant.editor.generating"))+" ")],1):t._e()],1)])],1)],1)],1)],1)},tt=[],et=(a(6011),a(18787)),at=(a(32637),a(15237)),st=a.n(at),it=(a(74806),a(55218),a(97923),a(50436),{name:"StrategyEditor",props:{value:{type:String,default:""},isDark:{type:Boolean,default:!1},userId:{type:[Number,String],default:1},visible:{type:Boolean,default:!1},initialTemplateKey:{type:String,default:""}},data:function(){return{activeTab:"templates",aiPrompt:"",aiGenerating:!1,aiAdjustingParams:!1,verifying:!1,editor:null,templates:G,selectedTemplateKey:"",templateParamValues:{},templateDirty:!1,refreshTimer:null}},computed:{selectedTemplate:function(){return H(this.selectedTemplateKey)},aiPromptSuggestions:function(){return[{id:"improve",label:this.$t("trading-assistant.editor.aiSuggestionImprove"),value:this.$t("trading-assistant.editor.aiSuggestionImprovePrompt")},{id:"risk",label:this.$t("trading-assistant.editor.aiSuggestionRisk"),value:this.$t("trading-assistant.editor.aiSuggestionRiskPrompt")},{id:"explain",label:this.$t("trading-assistant.editor.aiSuggestionExplain"),value:this.$t("trading-assistant.editor.aiSuggestionExplainPrompt")}]}},mounted:function(){var t=this;this.$nextTick(function(){t.initEditor(),t.initialTemplateKey?t.loadTemplate(t.initialTemplateKey,{focusParams:!0,resetParams:!0}):t.value||t.$emit("input",t._getDefaultCode())}),window.addEventListener("resize",this.scheduleEditorRefresh)},beforeDestroy:function(){window.removeEventListener("resize",this.scheduleEditorRefresh),this.refreshTimer&&(clearTimeout(this.refreshTimer),this.refreshTimer=null),this.editor&&("function"===typeof this.editor.toTextArea&&this.editor.toTextArea(),this.editor=null)},watch:{value:function(t){this.editor&&this.editor.getValue()!==t&&(this.editor.setValue(t||""),this.scheduleEditorRefresh())},isDark:function(){this.editor&&this.editor.setOption("theme",this.isDark?"monokai":"eclipse"),this.scheduleEditorRefresh()},visible:function(t){var e=this;t&&this.$nextTick(function(){e.scheduleEditorRefresh();try{window.dispatchEvent(new Event("resize"))}catch(t){}})},initialTemplateKey:function(t){t&&t!==this.selectedTemplateKey&&this.loadTemplate(t,{focusParams:!0,resetParams:!0})}},methods:{initEditor:function(){var t=this;this.$refs.editorContainer&&(this.editor=st()(this.$refs.editorContainer,{value:this.value||this._getDefaultCode(),mode:"python",theme:this.isDark?"monokai":"eclipse",lineNumbers:!0,autoCloseBrackets:!0,matchBrackets:!0,styleActiveLine:!0,tabSize:4,indentUnit:4,indentWithTabs:!1,lineWrapping:!1,viewportMargin:1/0,gutters:["CodeMirror-linenumbers"]}),this.editor.on("change",function(){t.$emit("input",t.editor.getValue())}),this.scheduleEditorRefresh())},scheduleEditorRefresh:function(){var t=this;this.refreshTimer&&clearTimeout(this.refreshTimer),this.refreshTimer=setTimeout(function(){t.editor&&t.editor.refresh()},60)},_getDefaultCode:function(){return'"""\nMy Custom Strategy\n"""\n\ndef on_init(ctx):\n # Initialize strategy parameters\n pass\n\ndef on_bar(ctx, bar):\n # Core trading logic, called on each K-line bar\n # bar: { open, high, low, close, volume, timestamp }\n price = bar[\'close\']\n\n bars = ctx.bars(20)\n if len(bars) < 20:\n return\n\n avg = sum(b[\'close\'] for b in bars) / len(bars)\n\n if price > avg and not ctx.position:\n ctx.buy(price, ctx.equity * 0.9 / price)\n ctx.log(f"BUY at {price}")\n\n elif price < avg and ctx.position:\n ctx.close_position()\n ctx.log(f"SELL at {price}")\n'},loadTemplate:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=e.focusParams,s=void 0!==a&&a,i=e.resetParams,r=void 0===i||i,n=H(t);n&&(this.selectedTemplateKey=t,!r&&this.templateParamValues&&0!==Object.keys(this.templateParamValues).length||(this.templateParamValues=W(n)),this.templateDirty=!0,this.applySelectedTemplateToCode({silent:!0}),s&&(this.activeTab="params"),this.aiPrompt.trim()||(this.aiPrompt=this.$t("trading-assistant.editor.aiPromptTemplateHint")+" "+this.$t("trading-assistant.template.".concat(n.key))),this.scheduleEditorRefresh())},getCode:function(){return this.editor?this.editor.getValue():this.value},setCode:function(t){this.editor&&this.editor.getValue()!==t?this.editor.setValue(t):this.$emit("input",t),this.scheduleEditorRefresh()},applySelectedTemplateToCode:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.silent,a=void 0!==e&&e;if(this.selectedTemplate){var s=j(this.selectedTemplate,this.templateParamValues);this.setCode(s),this.templateDirty=!1,this.$emit("template-change",{key:this.selectedTemplateKey,params:(0,u.A)({},this.templateParamValues)}),a||et.A.success(this.$t("trading-assistant.editor.templateApplied"))}},resetTemplateParams:function(){this.selectedTemplate&&(this.templateParamValues=W(this.selectedTemplate),this.templateDirty=!0,this.applySelectedTemplateToCode({silent:!1}))},getParamLabel:function(t){var e="trading-assistant.templateParam.".concat(t.name,".label"),a=this.$t(e);return a===e?t.name:a},getParamDescription:function(t){var e="trading-assistant.templateParam.".concat(t.name,".desc"),a=this.$t(e);return a===e?"":a},getParamTypeLabel:function(t){return this.$t("trading-assistant.editor.paramType.".concat(t))},getOptionLabel:function(t){if(!t)return"";if(t.labelKey){var e=this.$t(t.labelKey);if(e!==t.labelKey)return e}return t.label||t.value},getParamPrecision:function(t){if("integer"===t.type)return 0;var e=t.step;if(!e||Number.isInteger(e))return 0;var a=String(e),s=a.split(".");return s[1]?s[1].length:0},handleNumericParamChange:function(t,e){var a=""===e||null===e||void 0===e?t.default:"integer"===t.type?parseInt(e,10):Number(e);this.$set(this.templateParamValues,t.name,a),this.templateDirty=!0},handleSelectParamChange:function(t,e){this.$set(this.templateParamValues,t.name,e),this.templateDirty=!0},handleBooleanParamChange:function(t,e){this.$set(this.templateParamValues,t.name,!!e),this.templateDirty=!0},handleTextParamChange:function(t,e){this.$set(this.templateParamValues,t.name,e),this.templateDirty=!0},applyPromptSuggestion:function(t){this.aiPrompt=t},handleVerify:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.verifying=!0,e.p=1,a=t.getCode(),e.n=2,(0,y.Ay)({url:"/api/strategies/verify-code",method:"post",data:{code:a,user_id:t.userId}});case 2:s=e.v,s&&s.success?et.A.success(t.$t("trading-assistant.editor.verifySuccess")):et.A.error(s&&(s.msg||s.message)||t.$t("trading-assistant.editor.verifyFailed")),e.n=4;break;case 3:e.p=3,i=e.v,et.A.error(t.$t("trading-assistant.editor.verifyFailed")+": "+(i.message||""));case 4:return e.p=4,t.verifying=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},_coerceParamValue:function(t,e){if(null!==e&&void 0!==e){var a=t.type;if("boolean"===a)return"boolean"===typeof e?e:"true"===e||1===e||"1"===e||"false"!==e&&0!==e&&"0"!==e&&void 0;if("integer"===a){var s=parseInt(String(e),10);if(!Number.isFinite(s))return;var i=s;return null!=t.min&&(i=Math.max(t.min,i)),null!=t.max&&(i=Math.min(t.max,i)),i}if("number"===a||"percent"===a){var r=Number(e);if(!Number.isFinite(r))return;var n=r;return null!=t.min&&(n=Math.max(t.min,n)),null!=t.max&&(n=Math.min(t.max,n)),n}if("select"===a){var o=t.options||[],l=new Set(o.map(function(t){return t.value}));if(l.has(e))return e;var c=String(e);return l.has(c)?c:void 0}return String(e)}},applyAIParamUpdates:function(t){var e=this;if(!this.selectedTemplate||!t||"object"!==(0,n.A)(t))return!1;var a=new Set(this.selectedTemplate.params.map(function(t){return t.name})),s=!1;return Object.keys(t).forEach(function(i){if(a.has(i)){var r=e.selectedTemplate.params.find(function(t){return t.name===i}),n=e._coerceParamValue(r,t[i]);void 0!==n&&(e.$set(e.templateParamValues,i,n),s=!0)}}),s},handleAIAdjustParams:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt.trim()){e.n=1;break}return et.A.warning(t.$t("trading-assistant.editor.aiPromptRequired")),e.a(2);case 1:if(t.selectedTemplate){e.n=2;break}return et.A.warning(t.$t("trading-assistant.editor.aiAdjustParamsNeedTemplate")),e.a(2);case 2:return t.aiAdjustingParams=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/strategies/ai-generate",method:"post",data:{prompt:t.aiPrompt,user_id:t.userId,intent:"adjust_params",template_key:t.selectedTemplateKey,params:(0,u.A)({},t.templateParamValues),code:t.getCode()}});case 4:a=e.v,a&&a.params&&"object"===(0,n.A)(a.params)?(s=t.applyAIParamUpdates(a.params),s?(t.templateDirty=!0,t.applySelectedTemplateToCode({silent:!0}),et.A.success(t.$t("trading-assistant.editor.aiAdjustParamsSuccess"))):et.A.warning(t.$t("trading-assistant.editor.aiAdjustParamsNoChanges"))):et.A.error(a&&(a.msg||a.message)||t.$t("trading-assistant.editor.aiAdjustParamsFailed")),e.n=6;break;case 5:e.p=5,i=e.v,et.A.error(i&&i.message||t.$t("trading-assistant.editor.aiAdjustParamsFailed"));case 6:return e.p=6,t.aiAdjustingParams=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleAIGenerate:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt.trim()){e.n=1;break}return et.A.warning(t.$t("trading-assistant.editor.aiPromptRequired")),e.a(2);case 1:return t.aiGenerating=!0,e.p=2,e.n=3,(0,y.Ay)({url:"/api/strategies/ai-generate",method:"post",data:{prompt:t.aiPrompt,user_id:t.userId,intent:"generate_code",template_key:t.selectedTemplateKey||void 0,params:t.selectedTemplate?(0,u.A)({},t.templateParamValues):void 0,code:t.getCode()}});case 3:a=e.v,s=a&&"string"===typeof a.code?a.code:"",s?(t.setCode(s),et.A.success(t.$t("trading-assistant.editor.aiGenerateSuccess"))):et.A.error(a&&(a.msg||a.message)||t.$t("trading-assistant.editor.aiGenerateFailed")),e.n=5;break;case 4:e.p=4,i=e.v,et.A.error(i&&i.message||t.$t("trading-assistant.editor.aiGenerateFailed"));case 5:return e.p=5,t.aiGenerating=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()}}}),rt=it,nt=(0,F.A)(rt,Q,tt,!1,null,"35a0a386",null),ot=nt.exports,lt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"performance-analysis strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[e("a-spin",{attrs:{spinning:t.loading}},[t.hasData?e("div",[e("div",{staticClass:"metrics-grid"},[e("div",{staticClass:"metric-card",class:t.getMetricClass(t.metrics.totalReturn)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.totalReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.totalReturn)))])]),e("div",{staticClass:"metric-card",class:t.getMetricClass(t.metrics.annualReturn)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.annualReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.annualReturn)))])]),e("div",{staticClass:"metric-card negative"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.maxDrawdown")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.maxDrawdown)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.sharpe")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.metrics.sharpe||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.winRate")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.winRate)))])]),e("div",{staticClass:"metric-card",class:t.getMetricClass((t.metrics.profitFactor||0)-1)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.profitFactor")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.metrics.profitFactor||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.totalTrades")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.metrics.totalTrades||0))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.runningDays")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.metrics.runningDays||0))])])]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("trading-assistant.performance.equityCurve")))]),e("div",{ref:"equityChart",staticClass:"chart-container"})]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("trading-assistant.performance.dailyReturns")))]),e("div",{ref:"dailyChart",staticClass:"chart-container",staticStyle:{height:"250px"}})])]):t.loading?t._e():e("a-empty",{staticClass:"strategy-tab-empty",attrs:{description:t.$t("trading-assistant.performance.noData")}})],1)],1)},ct=[],dt={name:"PerformanceAnalysis",props:{strategyId:{type:[Number,String],default:null},isDark:{type:Boolean,default:!1}},data:function(){return{loading:!1,metrics:{},equityData:[],dailyReturns:[],equityChartInstance:null,dailyChartInstance:null}},computed:{hasData:function(){return this.equityData.length>0}},watch:{strategyId:{handler:function(t){t&&this.loadData()},immediate:!0},isDark:function(){var t=this;this.disposeCharts(),this.$nextTick(function(){return t.renderCharts()})}},beforeDestroy:function(){this.disposeCharts()},methods:{loadData:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return t.loading=!0,e.p=2,e.n=3,(0,p.Yx)(t.strategyId);case 3:a=e.v,a&&a.data&&(t.equityData=a.data.equity_curve||a.data||[],t.computeMetrics(),t.$nextTick(function(){return t.renderCharts()})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.p=5,t.loading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},computeMetrics:function(){var t=this.equityData;if(t.length){for(var e=t.map(function(t){return t.equity||t.value||t.y||0}),a=e[0]||1,s=e[e.length-1]||a,i=(s-a)/a,r=e[0],n=0,o=[],l=1;lr&&(r=e[l]);var c=(e[l]-r)/r;c1?Math.sqrt(o.reduce(function(t,e){return t+Math.pow(e-p,2)},0)/(o.length-1)):0,g=t.filter(function(t){return t.trade_count}).reduce(function(t,e){return t+e.trade_count},0)||0,h=t.filter(function(t){return t.win_count}).reduce(function(t,e){return t+e.win_count},0)||0,_=t.filter(function(t){return t.gross_profit}).reduce(function(t,e){return t+e.gross_profit},0),y=Math.abs(t.filter(function(t){return t.gross_loss}).reduce(function(t,e){return t+e.gross_loss},0));this.metrics={totalReturn:i,annualReturn:Math.pow(1+i,u)-1,maxDrawdown:n,sharpe:m>0?p/m*Math.sqrt(252):0,winRate:g>0?h/g:0,profitFactor:y>0?_/y:_>0?999:0,totalTrades:g,runningDays:d}}else this.metrics={}},renderCharts:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.getEcharts();case 1:if(a=e.v,a){e.n=2;break}return e.a(2);case 2:t.renderEquityChart(a),t.renderDailyChart(a);case 3:return e.a(2)}},e)}))()},getEcharts:function(){return(0,l.A)((0,o.A)().m(function t(){var e;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!window.echarts){t.n=1;break}return t.a(2,window.echarts);case 1:return t.p=1,t.n=2,Promise.resolve().then(a.bind(a,29362));case 2:return e=t.v,window.echarts=e.default||e,t.a(2,window.echarts);case 3:return t.p=3,t.v,t.a(2,null)}},t,null,[[1,3]])}))()},renderEquityChart:function(t){if(this.$refs.equityChart){this.equityChartInstance=t.init(this.$refs.equityChart,this.isDark?"dark":null);var e=this.equityData.map(function(t){return t.date||t.timestamp||t.x||""}),a=this.equityData.map(function(t){return t.equity||t.value||t.y||0});this.equityChartInstance.setOption({tooltip:{trigger:"axis"},grid:{left:60,right:20,top:20,bottom:30},xAxis:{type:"category",data:e,axisLabel:{fontSize:10}},yAxis:{type:"value",axisLabel:{fontSize:10}},series:[{type:"line",data:a,smooth:!0,lineStyle:{width:2,color:"#1890ff"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(24,144,255,0.3)"},{offset:1,color:"rgba(24,144,255,0.02)"}]}},itemStyle:{color:"#1890ff"},showSymbol:!1}]})}},renderDailyChart:function(t){this.$refs.dailyChart&&this.dailyReturns.length&&(this.dailyChartInstance=t.init(this.$refs.dailyChart,this.isDark?"dark":null),this.dailyChartInstance.setOption({tooltip:{trigger:"axis",formatter:function(t){return"".concat((100*t[0].value).toFixed(2),"%")}},grid:{left:60,right:20,top:10,bottom:30},xAxis:{type:"category",data:this.dailyReturns.map(function(t,e){return e+1}),show:!1},yAxis:{type:"value",axisLabel:{formatter:function(t){return(100*t).toFixed(1)+"%"},fontSize:10}},series:[{type:"bar",data:this.dailyReturns.map(function(t){return{value:t,itemStyle:{color:t>=0?"#52c41a":"#ff4d4f"}}}),barMaxWidth:6}]}))},disposeCharts:function(){this.equityChartInstance&&(this.equityChartInstance.dispose(),this.equityChartInstance=null),this.dailyChartInstance&&(this.dailyChartInstance.dispose(),this.dailyChartInstance=null)},formatPercent:function(t){return void 0===t||null===t?"--":(t>=0?"+":"")+(100*t).toFixed(2)+"%"},getMetricClass:function(t){return t?t>0?"positive":t<0?"negative":"":""}}},ut=dt,pt=(0,F.A)(ut,lt,ct,!1,null,"01ff5f5a",null),mt=pt.exports,gt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-logs strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[e("div",{staticClass:"logs-toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.filterLevel,callback:function(e){t.filterLevel=e},expression:"filterLevel"}},[e("a-radio-button",{attrs:{value:"all"}},[t._v("All")]),e("a-radio-button",{attrs:{value:"trade"}},[e("a-badge",{attrs:{count:t.countByLevel("trade"),"overflow-count":99,offset:[6,-2]}},[t._v(" "+t._s(t.$t("trading-assistant.logs.level.trade"))+" ")])],1),e("a-radio-button",{attrs:{value:"signal"}},[t._v(t._s(t.$t("trading-assistant.logs.level.signal")))]),e("a-radio-button",{attrs:{value:"error"}},[t._v(t._s(t.$t("trading-assistant.logs.level.error")))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-switch",{attrs:{checked:t.autoRefresh,size:"small"},on:{change:t.toggleAutoRefresh}}),e("span",{staticClass:"auto-refresh-label"},[t._v(t._s(t.$t("trading-assistant.logs.autoRefresh")))])],1)]),e("div",{ref:"logsContainer",staticClass:"logs-container custom-scrollbar"},[0===t.filteredLogs.length?e("div",{staticClass:"logs-empty"},[e("a-icon",{staticStyle:{"font-size":"32px",color:"#ccc"},attrs:{type:"file-text"}}),e("p",[t._v(t._s(t.$t("trading-assistant.logs.noLogs")))])],1):t._e(),t._l(t.filteredLogs,function(a,s){return e("div",{key:s,staticClass:"log-entry",class:"level-"+a.level},[e("span",{staticClass:"log-time"},[t._v(t._s(t.formatTime(a.timestamp)))]),e("a-tag",{staticClass:"log-level",attrs:{color:t.getLevelColor(a.level),size:"small"}},[t._v(" "+t._s(t.getLevelText(a.level))+" ")]),e("span",{staticClass:"log-message"},[t._v(t._s(a.message))])],1)})],2)])},ht=[],_t={name:"StrategyLogs",props:{strategyId:{type:[Number,String],default:null},isDark:{type:Boolean,default:!1}},data:function(){return{logs:[],filterLevel:"all",autoRefresh:!1,refreshTimer:null,loading:!1}},computed:{filteredLogs:function(){var t=this;return"all"===this.filterLevel?this.logs:this.logs.filter(function(e){return e.level===t.filterLevel})}},watch:{strategyId:{handler:function(t){t&&this.loadLogs()},immediate:!0}},beforeDestroy:function(){this.stopAutoRefresh()},methods:{loadLogs:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return t.loading=!0,e.p=2,e.n=3,(0,y.Ay)({url:"/api/strategies/logs",method:"get",params:{id:t.strategyId,limit:200}});case 3:a=e.v,a&&a.data&&(t.logs=a.data,t.$nextTick(function(){return t.scrollToBottom()})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.p=5,t.loading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},toggleAutoRefresh:function(t){var e=this;this.autoRefresh=t,t?this.refreshTimer=setInterval(function(){return e.loadLogs()},5e3):this.stopAutoRefresh()},stopAutoRefresh:function(){this.refreshTimer&&(clearInterval(this.refreshTimer),this.refreshTimer=null)},scrollToBottom:function(){var t=this.$refs.logsContainer;t&&(t.scrollTop=t.scrollHeight)},countByLevel:function(t){return this.logs.filter(function(e){return e.level===t}).length},formatTime:function(t){if(!t)return"";var e=this.$i18n.locale||"zh-CN";return T(t,{locale:e,fallback:String(t)})},getLevelColor:function(t){var e={info:"blue",warn:"orange",error:"red",trade:"green",signal:"purple"};return e[t]||"default"},getLevelText:function(t){var e="trading-assistant.logs.level.".concat(t),a=this.$t(e);return a!==e?a:t}}},yt=_t,ft=(0,F.A)(yt,gt,ht,!1,null,"5ea7be7d",null),vt=ft.exports,bt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"dashboard-pro",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"kpi-grid"},[e("div",{staticClass:"kpi-card kpi-primary"},[e("div",{staticClass:"kpi-glow"}),e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"wallet"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.totalEquity")))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"currency"},[t._v("$")]),e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.summary.total_equity)))])]),e("div",{staticClass:"kpi-sub"},[e("span",{class:t.summary.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.total_pnl>=0?"+":"")+t._s(t.formatNumber(t.summary.total_pnl))+" ")]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.totalPnl")))])])])]),e("div",{staticClass:"kpi-card kpi-win-rate"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"trophy"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.winRate")||"胜率"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.performance.win_rate,1)))]),e("span",{staticClass:"unit"},[t._v("%")])]),e("div",{staticClass:"kpi-sub"},[e("span",{staticClass:"positive"},[t._v(t._s(t.performance.winning_trades))]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.win")))]),e("span",{staticClass:"divider"},[t._v("/")]),e("span",{staticClass:"negative"},[t._v(t._s(t.performance.losing_trades))]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.lose")))])])]),e("div",{staticClass:"kpi-ring"},[e("svg",{attrs:{viewBox:"0 0 36 36"}},[e("path",{staticClass:"ring-bg",attrs:{d:"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"}}),e("path",{staticClass:"ring-progress",attrs:{"stroke-dasharray":"".concat(t.performance.win_rate||0,", 100"),d:"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"}})])])]),e("div",{staticClass:"kpi-card kpi-profit-factor"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"rise"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.profitFactor")||"盈亏比"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.performance.profit_factor,2)))]),e("span",{staticClass:"unit"},[t._v(":1")])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v(t._s(t.$t("dashboard.label.avgProfit"))+" ")]),e("span",{staticClass:"positive"},[t._v("$"+t._s(t.formatNumber(t.performance.avg_win)))])])])]),e("div",{staticClass:"kpi-card kpi-drawdown"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"fall"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.maxDrawdown")||"最大回撤"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount negative"},[t._v(t._s(t.formatNumber(t.performance.max_drawdown_pct,1)))]),e("span",{staticClass:"unit"},[t._v("%")])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v("$"+t._s(t.formatNumber(t.performance.max_drawdown)))])])])]),e("div",{staticClass:"kpi-card kpi-trades"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"swap"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.totalTrades")||"总交易"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.performance.total_trades))]),e("span",{staticClass:"unit"},[t._v(t._s(t.$t("dashboard.unit.trades")))])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v(t._s(t.$t("dashboard.label.avgDaily"))+" ")]),e("span",[t._v(t._s(t.avgTradesPerDay))]),e("span",{staticClass:"label"},[t._v(" "+t._s(t.$t("dashboard.unit.trades")))])])])]),e("div",{staticClass:"kpi-card kpi-strategies clickable",on:{click:t.goToStrategyManagement}},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.runningStrategies")||"运行中策略"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.summary.indicator_strategy_count))]),e("span",{staticClass:"unit"},[t._v(t._s(t.$t("dashboard.unit.strategies")))])]),e("div",{staticClass:"kpi-sub"},[e("span",{staticClass:"highlight"},[t._v(t._s(t.summary.indicator_strategy_count))]),e("span",{staticClass:"label"},[t._v(" "+t._s(t.$t("dashboard.label.indicator")))])])]),e("div",{staticClass:"card-arrow"},[e("a-icon",{attrs:{type:"right"}})],1)])]),t.showSetupGuide&&!t.hideSetupGuide?e("div",{staticClass:"setup-guide-card"},[e("div",{staticClass:"setup-guide-copy"},[e("div",{staticClass:"setup-guide-title"},[t._v(t._s(t.$t("dashboard.setupGuide.title")))]),e("div",{staticClass:"setup-guide-desc"},[t._v(t._s(t.$t("dashboard.setupGuide.desc")))]),e("div",{staticClass:"setup-guide-path"},[t._v(t._s(t.$t("dashboard.setupGuide.path")))])]),e("div",{staticClass:"setup-guide-actions"},[e("a-button",{on:{click:t.goToStrategyManagement}},[e("a-icon",{attrs:{type:"appstore"}}),t._v(" "+t._s(t.$t("dashboard.setupGuide.secondary"))+" ")],1),e("a-button",{attrs:{type:"primary"},on:{click:t.goToStrategyCreate}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("dashboard.setupGuide.primary"))+" ")],1)],1)]):t._e(),e("div",{staticClass:"chart-row"},[e("div",{staticClass:"chart-panel chart-main"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"calendar"}}),e("span",[t._v(t._s(t.$t("dashboard.profitCalendar")||"收益日曆"))])],1),e("div",{staticClass:"calendar-nav"},[e("a-button",{attrs:{type:"link",size:"small",disabled:t.currentCalendarIndex>=t.calendarMonths.length-1},on:{click:t.prevMonth}},[e("a-icon",{attrs:{type:"left"}})],1),e("span",{staticClass:"current-month"},[t._v(t._s(t.currentMonthLabel))]),e("a-button",{attrs:{type:"link",size:"small",disabled:t.currentCalendarIndex<=0},on:{click:t.nextMonth}},[e("a-icon",{attrs:{type:"right"}})],1)],1)]),e("div",{staticClass:"profit-calendar"},[t.currentCalendarMonth?[e("div",{staticClass:"month-summary"},[e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.ranking.totalProfit")))]),e("span",{staticClass:"summary-value",class:t.currentCalendarMonth.total>=0?"positive":"negative"},[t._v(" "+t._s(t.currentCalendarMonth.total>=0?"+":"")+"$"+t._s(t.formatNumber(t.currentCalendarMonth.total))+" ")])]),e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.label.win")))]),e("span",{staticClass:"summary-value positive"},[t._v(t._s(t.currentCalendarMonth.win_days))])]),e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.label.lose")))]),e("span",{staticClass:"summary-value negative"},[t._v(t._s(t.currentCalendarMonth.lose_days))])])]),e("div",{staticClass:"calendar-weekdays"},t._l(t.weekdays,function(a){return e("div",{key:a,staticClass:"weekday"},[t._v(t._s(a))])}),0),e("div",{staticClass:"calendar-grid"},[t._l(t.calendarFirstDayOffset,function(t){return e("div",{key:"empty-"+t,staticClass:"calendar-cell empty"})}),t._l(t.currentCalendarMonth.days_in_month,function(a){return e("div",{key:a,staticClass:"calendar-cell",class:t.getDayClass(a)},[e("span",{staticClass:"day-number"},[t._v(t._s(a))]),null!==t.getDayProfit(a)?e("span",{staticClass:"day-profit",class:t.getDayProfit(a)>=0?"positive":"negative"},[t._v(" "+t._s(t.getDayProfit(a)>=0?"+":"")+t._s(t.formatCompactNumber(t.getDayProfit(a)))+" ")]):t._e()])})],2)]:e("div",{staticClass:"calendar-empty"},[e("a-icon",{attrs:{type:"inbox"}}),e("span",[t._v(t._s(t.$t("dashboard.noData")))])],1)],2)]),e("div",{staticClass:"chart-panel chart-side"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"pie-chart"}}),e("span",[t._v(t._s(t.$t("dashboard.strategyAllocation")||"策略分布"))])],1)]),e("div",{ref:"pieChart",staticClass:"chart-body"})])]),e("div",{staticClass:"chart-row"},[e("div",{staticClass:"chart-panel chart-half"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"area-chart"}}),e("span",[t._v(t._s(t.$t("dashboard.drawdownCurve")||"回撤曲线"))])],1)]),e("div",{ref:"drawdownChart",staticClass:"chart-body chart-sm"})]),e("div",{staticClass:"chart-panel chart-half"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"clock-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.hourlyDistribution")||"交易时段"))])],1)]),e("div",{ref:"hourlyChart",staticClass:"chart-body chart-sm"})])]),e("div",{staticClass:"chart-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"ordered-list"}}),e("span",[t._v(t._s(t.$t("dashboard.strategyRanking")||"策略排行榜"))])],1)]),e("div",{staticClass:"strategy-ranking"},[0===t.strategyStats.length?e("div",{staticClass:"empty-state"},[e("a-icon",{attrs:{type:"inbox"}}),e("span",[t._v(t._s(t.$t("dashboard.noStrategyData")))])],1):e("div",{staticClass:"ranking-grid"},t._l(t.strategyStats.slice(0,6),function(a,s){return e("div",{key:a.strategy_id,staticClass:"ranking-card",class:{"rank-top":s<3}},[e("div",{staticClass:"rank-badge",class:"rank-".concat(s+1)},[t._v(t._s(s+1))]),e("div",{staticClass:"rank-info"},[e("div",{staticClass:"rank-name"},[t._v(t._s(a.strategy_name))]),e("div",{staticClass:"rank-stats"},[e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.ranking.totalProfit")))]),e("span",{class:a.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(a.total_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(a.total_pnl))+" ")])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.winRate")))]),e("span",[t._v(t._s(t.formatNumber(a.win_rate,1))+"%")])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.profitFactor")))]),e("span",[t._v(t._s(t.formatNumber(a.profit_factor,2)))])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.ranking.trades")))]),e("span",[t._v(t._s(a.total_trades))])])])]),e("div",{staticClass:"rank-pnl-bar"},[e("div",{staticClass:"bar-fill",class:a.total_pnl>=0?"positive":"negative",style:{width:"".concat(Math.min(100,Math.abs(a.total_pnl)/t.maxStrategyPnl*100),"%")}})])])}),0)])]),e("div",{staticClass:"table-row"},[e("div",{staticClass:"table-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"stock"}}),e("span",[t._v(t._s(t.$t("dashboard.currentPositions")))])],1),e("div",{staticClass:"panel-badge"},[t._v(t._s((t.summary.current_positions||[]).length))])]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.positionColumns,"data-source":t.summary.current_positions,rowKey:"id",pagination:!1,size:"small",scroll:{x:"max-content"}},scopedSlots:t._u([{key:"symbol",fn:function(a,s){return[e("div",{staticClass:"symbol-cell"},[e("span",{staticClass:"symbol-name"},[t._v(t._s(a))]),e("span",{staticClass:"symbol-strategy"},[t._v(t._s(s.strategy_name))])])]}},{key:"side",fn:function(a){return[e("span",{staticClass:"side-tag",class:"long"===a?"long":"short"},[t._v(" "+t._s("long"===a?"LONG":"SHORT")+" ")])]}},{key:"unrealized_pnl",fn:function(a,s){return[e("div",{staticClass:"pnl-cell"},[e("span",{class:a>=0?"positive":"negative"},[t._v(" "+t._s(a>=0?"+":"")+"$"+t._s(t.formatNumber(a))+" ")]),e("span",{staticClass:"pnl-percent",class:s.pnl_percent>=0?"positive":"negative"},[t._v(" "+t._s(s.pnl_percent>=0?"+":"")+t._s(t.formatNumber(s.pnl_percent))+"% ")])])]}}])})],1),e("div",{staticClass:"table-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"history"}}),e("span",[t._v(t._s(t.$t("dashboard.recentTrades")))])],1)]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.columns,"data-source":t.summary.recent_trades,rowKey:"id",pagination:{pageSize:8,size:"small"},size:"small",scroll:{x:"max-content"}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("span",{staticClass:"type-tag",class:t.getTypeClass(a)},[t._v(" "+t._s(t.getSignalTypeText(a))+" ")])]}},{key:"profit",fn:function(a,s){return[e("span",{class:"--"!==t.formatProfitValue(a,s)?a>=0?"positive":"negative":""},[t._v(" "+t._s(t.formatProfitValue(a,s))+" ")])]}},{key:"time",fn:function(a){return[e("span",{staticClass:"time-cell"},[t._v(t._s(t.formatTime(a)))])]}}])})],1)]),e("div",{staticClass:"chart-panel orders-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"unordered-list"}}),e("span",[t._v(t._s(t.$t("dashboard.pendingOrders")))]),e("a-tooltip",{attrs:{title:t.soundEnabled?t.$t("dashboard.clickToMute"):t.$t("dashboard.clickToUnmute")}},[e("a-icon",{staticClass:"sound-toggle",class:{"sound-off":!t.soundEnabled},attrs:{type:t.soundEnabled?"sound":"audio-muted"},on:{click:t.toggleSound}})],1)],1),e("div",{staticClass:"panel-badge"},[t._v(t._s(t.ordersPagination.total))])]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.orderColumns,"data-source":t.pendingOrders,rowKey:"id",pagination:{current:t.ordersPagination.current,pageSize:t.ordersPagination.pageSize,total:t.ordersPagination.total,showSizeChanger:!0,size:"small",showTotal:function(e){return t.$t("dashboard.totalOrders",{total:e})}},size:"small",loading:t.ordersLoading,scroll:{x:1200}},on:{change:t.handleOrdersTableChange},scopedSlots:t._u([{key:"strategy_name",fn:function(a,s){return[e("div",{staticClass:"symbol-cell"},[e("span",{staticClass:"symbol-name"},[t._v(t._s(a||"-"))]),e("span",{staticClass:"symbol-strategy"},[t._v("ID: "+t._s(s.strategy_id))])])]}},{key:"symbol",fn:function(a){return[e("span",{staticClass:"symbol-tag"},[t._v(t._s(a))])]}},{key:"signal_type",fn:function(a){return[e("span",{staticClass:"type-tag",class:t.getTypeClass(a)},[t._v(" "+t._s(t.getSignalTypeText(a))+" ")])]}},{key:"exchange",fn:function(a,s){return[s&&(s.exchange_display||s.exchange_id||a)?e("span",{staticClass:"exchange-tag",class:(s.exchange_display||s.exchange_id||a).toLowerCase()},[t._v(" "+t._s(String(s.exchange_display||s.exchange_id||a).toUpperCase())+" ")]):e("span",{staticClass:"text-muted"},[t._v("-")]),s&&s.market_type?e("div",{staticClass:"market-type"},[t._v(" "+t._s(String(s.market_type).toUpperCase())+" ")]):t._e()]}},{key:"notify",fn:function(a,s){return[e("div",{staticClass:"notify-icons"},[t._l(s&&s.notify_channels?s.notify_channels:[],function(a){return e("a-tooltip",{key:"".concat(s.id,"-").concat(a),attrs:{title:String(a)}},[e("a-icon",{staticClass:"notify-icon",attrs:{type:t.getNotifyIconType(a)}})],1)}),s&&s.notify_channels&&0!==s.notify_channels.length?t._e():e("span",{staticClass:"text-muted"},[t._v("-")])],2)]}},{key:"status",fn:function(a,s){return[e("span",{staticClass:"status-tag",class:a},[t._v(" "+t._s(t.getStatusText(a))+" ")]),"failed"===a&&s.error_message?e("div",{staticClass:"error-hint"},[e("a-tooltip",{attrs:{title:s.error_message}},[e("a-icon",{attrs:{type:"exclamation-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.viewError")))])],1)],1):t._e()]}},{key:"amount",fn:function(a,s){return[e("div",[t._v(t._s(t.formatNumber(a,8)))]),s.filled_amount?e("div",{staticClass:"sub-text"},[t._v(" "+t._s(t.$t("dashboard.filled"))+": "+t._s(t.formatNumber(s.filled_amount,8))+" ")]):t._e()]}},{key:"price",fn:function(a,s){return[s.filled_price?e("div",[t._v(t._s(t.formatNumber(s.filled_price)))]):e("div",{staticClass:"text-muted"},[t._v("-")])]}},{key:"time_info",fn:function(a,s){return[e("div",{staticClass:"time-cell"},[t._v(t._s(t.formatTime(s.created_at)))]),s.executed_at?e("div",{staticClass:"sub-text"},[t._v(" "+t._s(t.formatTime(s.executed_at))+" ")]):t._e()]}}])})],1)])},xt=[],kt=(a(36033),a(68156),a(29362)),Ct={summary:"/api/dashboard/summary",pendingOrders:"/api/dashboard/pendingOrders"};function St(){return(0,y.Ay)({url:Ct.summary,method:"get"})}function wt(t){return(0,y.Ay)({url:Ct.pendingOrders,method:"get",params:t})}var $t=a(95353),At={name:"Dashboard",props:{hideSetupGuide:{type:Boolean,default:!1}},data:function(){return{summary:{ai_strategy_count:0,indicator_strategy_count:0,total_equity:0,total_pnl:0,total_realized_pnl:0,total_unrealized_pnl:0,performance:{},strategy_stats:[],daily_pnl_chart:[],strategy_pnl_chart:[],monthly_returns:[],hourly_distribution:[],calendar_months:[],recent_trades:[],current_positions:[]},currentCalendarIndex:0,pieChart:null,drawdownChart:null,hourlyChart:null,pendingOrders:[],ordersLoading:!1,ordersPagination:{current:1,pageSize:20,total:0},orderPollTimer:null,lastOrderId:0,orderPollIntervalMs:5e3,soundEnabled:!0,beepCtx:null}},computed:(0,u.A)((0,u.A)({},(0,$t.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},performance:function(){return this.summary.performance||{}},strategyStats:function(){return this.summary.strategy_stats||[]},showSetupGuide:function(){var t=Number(this.summary.indicator_strategy_count||0),e=Array.isArray(this.summary.current_positions)&&this.summary.current_positions.length>0,a=Array.isArray(this.summary.recent_trades)&&this.summary.recent_trades.length>0;return 0===t||!e&&!a},maxStrategyPnl:function(){var t=this.strategyStats;return t.length?Math.max.apply(Math,(0,c.A)(t.map(function(t){return Math.abs(t.total_pnl||0)})).concat([1])):1},avgTradesPerDay:function(){var t=this.summary.daily_pnl_chart||[],e=t.length||1,a=this.performance.total_trades||0;return(a/e).toFixed(1)},calendarMonths:function(){return this.summary.calendar_months||[]},currentCalendarMonth:function(){var t=this.calendarMonths;return t.length&&t[this.currentCalendarIndex]||null},currentMonthLabel:function(){var t=this.currentCalendarMonth;if(!t)return"-";var e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];return"".concat(e[t.month-1]," ").concat(t.year)},weekdays:function(){return["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]},calendarFirstDayOffset:function(){var t=this.currentCalendarMonth;return t?t.first_weekday:0},orderStrategyFilters:function(){var t,e=Array.isArray(this.pendingOrders)?this.pendingOrders:[],a=new Map,s=(0,d.A)(e);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i&&i.strategy_id;if(void 0!==r&&null!==r&&!a.has(String(r))){var n=i&&i.strategy_name?String(i.strategy_name):"",o=n?"".concat(n," (ID: ").concat(r,")"):"ID: ".concat(r);a.set(String(r),{text:o,value:String(r)})}}}catch(l){s.e(l)}finally{s.f()}return Array.from(a.values()).sort(function(t,e){return String(t.text).localeCompare(String(e.text))})},columns:function(){var t=this;return[{title:this.$t("dashboard.table.time"),dataIndex:"created_at",scopedSlots:{customRender:"time"},width:150},{title:this.$t("dashboard.table.symbol"),dataIndex:"symbol",width:100},{title:this.$t("dashboard.table.type"),dataIndex:"type",scopedSlots:{customRender:"type"},width:90},{title:this.$t("dashboard.table.price"),dataIndex:"price",customRender:function(e){return t.formatNumber(e)},width:100},{title:this.$t("dashboard.table.profit"),dataIndex:"profit",scopedSlots:{customRender:"profit"},align:"right",width:100}]},positionColumns:function(){var t=this;return[{title:this.$t("dashboard.table.symbol"),dataIndex:"symbol",scopedSlots:{customRender:"symbol"}},{title:this.$t("dashboard.table.side"),dataIndex:"side",scopedSlots:{customRender:"side"}},{title:this.$t("dashboard.table.size"),dataIndex:"size",customRender:function(e){return t.formatNumber(e,4)}},{title:this.$t("dashboard.table.entryPrice"),dataIndex:"entry_price",customRender:function(e){return t.formatNumber(e)}},{title:this.$t("dashboard.table.pnl"),dataIndex:"unrealized_pnl",scopedSlots:{customRender:"unrealized_pnl"},align:"right"}]},orderColumns:function(){return[{title:this.$t("dashboard.orderTable.strategy"),dataIndex:"strategy_name",scopedSlots:{customRender:"strategy_name"},filters:this.orderStrategyFilters,filterMultiple:!0,onFilter:function(t,e){return String(e&&e.strategy_id)===String(t)},width:150},{title:this.$t("dashboard.orderTable.exchange"),dataIndex:"exchange_id",scopedSlots:{customRender:"exchange"},width:120},{title:this.$t("dashboard.orderTable.notify"),dataIndex:"notify_channels",scopedSlots:{customRender:"notify"},width:100},{title:this.$t("dashboard.orderTable.symbol"),dataIndex:"symbol",scopedSlots:{customRender:"symbol"},width:110},{title:this.$t("dashboard.orderTable.signalType"),dataIndex:"signal_type",scopedSlots:{customRender:"signal_type"},width:100},{title:this.$t("dashboard.orderTable.amount"),dataIndex:"amount",scopedSlots:{customRender:"amount"},width:130},{title:this.$t("dashboard.orderTable.price"),dataIndex:"filled_price",scopedSlots:{customRender:"price"},width:100},{title:this.$t("dashboard.orderTable.status"),dataIndex:"status",scopedSlots:{customRender:"status"},width:130},{title:this.$t("dashboard.orderTable.timeInfo"),dataIndex:"created_at",scopedSlots:{customRender:"time_info"},width:160}]}}),mounted:function(){this.fetchData(),this.fetchPendingOrders(),this.startOrderPolling(),window.addEventListener("resize",this.handleResize)},beforeDestroy:function(){this.stopOrderPolling(),window.removeEventListener("resize",this.handleResize),this.pieChart&&this.pieChart.dispose(),this.drawdownChart&&this.drawdownChart.dispose(),this.hourlyChart&&this.hourlyChart.dispose()},methods:{goToStrategyManagement:function(){this.$router.push("/trading-assistant?tab=strategy")},goToStrategyCreate:function(){this.$router.push("/trading-assistant?tab=strategy&mode=create")},fetchData:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,St();case 1:a=e.v,1===a.code&&(t.summary=(0,u.A)((0,u.A)({},t.summary),a.data),t.$nextTick(function(){t.initCharts()})),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},fetchPendingOrders:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i,r,n,l;return(0,o.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return a.ordersLoading=!0,s.p=1,i=t||a.ordersPagination.current||1,r=e||a.ordersPagination.pageSize||20,s.n=2,wt({page:i,pageSize:r});case 2:n=s.v,1===n.code&&(l=n.data||{},a.pendingOrders=l.list||[],a.ordersPagination.current=Number(l.page||i||1),a.ordersPagination.pageSize=Number(l.pageSize||r||20),a.ordersPagination.total=Number(l.total||0)),s.n=4;break;case 3:s.p=3,s.v;case 4:return s.p=4,a.ordersLoading=!1,s.f(4);case 5:return s.a(2)}},s,null,[[1,3,4,5]])}))()},playOrderBeep:function(){if(this.soundEnabled)try{var t=window.AudioContext||window.webkitAudioContext;if(!t)return;this.beepCtx||(this.beepCtx=new t);var e=this.beepCtx;"suspended"===e.state&&"function"===typeof e.resume&&e.resume().catch(function(){});var a=function(t,a){var s=e.createOscillator(),i=e.createGain();s.type="sine",s.frequency.value=a,i.gain.value=.08,s.connect(i),i.connect(e.destination),s.start(t),s.stop(t+.12)},s=e.currentTime;a(s,880),a(s+.18,1100)}catch(i){}},startOrderPolling:function(){var t=this;this.stopOrderPolling(),this.initLastOrderId(),this.orderPollTimer=setInterval(function(){t.pollNewOrders()},this.orderPollIntervalMs)},stopOrderPolling:function(){this.orderPollTimer&&(clearInterval(this.orderPollTimer),this.orderPollTimer=null)},initLastOrderId:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,wt({page:1,pageSize:1});case 1:a=e.v,1===a.code&&a.data&&a.data.list&&a.data.list.length>0&&(t.lastOrderId=a.data.list[0].id||0),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},pollNewOrders:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r,n,l,c,u;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,wt({page:1,pageSize:10});case 1:if(a=e.v,1===a.code&&a.data&&a.data.list){e.n=2;break}return e.a(2);case 2:if(s=a.data.list||[],0!==s.length){e.n=3;break}return e.a(2);case 3:i=!1,r=t.lastOrderId,n=(0,d.A)(s);try{for(n.s();!(l=n.n()).done;)c=l.value,u=c.id||0,u>t.lastOrderId&&(i=!0,u>r&&(r=u))}catch(o){n.e(o)}finally{n.f()}i&&(t.lastOrderId=r,t.playOrderBeep(),t.fetchPendingOrders(),t.$notification.info({message:t.$t("dashboard.newOrderNotify"),description:t.$t("dashboard.newOrderDesc"),duration:4})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[0,4]])}))()},toggleSound:function(){this.soundEnabled=!this.soundEnabled,this.soundEnabled?this.$message.success(this.$t("dashboard.soundEnabled")):this.$message.info(this.$t("dashboard.soundDisabled"))},handleOrdersTableChange:function(t){var e=t&&t.current?t.current:1,a=t&&t.pageSize?t.pageSize:this.ordersPagination.pageSize||20;this.ordersPagination.current=e,this.ordersPagination.pageSize=a,this.fetchPendingOrders(e,a)},getTypeClass:function(t){if(!t)return"";var e=t.toLowerCase();return e.includes("open_long")||e.includes("add_long")?"long":e.includes("open_short")||e.includes("add_short")?"short":e.includes("close_long")?"close-long":e.includes("close_short")?"close-short":""},getSignalTypeColor:function(t){return t?(t=t.toLowerCase(),t.includes("open_long")||t.includes("add_long")?"green":t.includes("open_short")||t.includes("add_short")?"red":t.includes("close_long")?"orange":t.includes("close_short")?"purple":"blue"):"default"},getSignalTypeText:function(t){if(!t)return"-";var e={open_long:this.$t("dashboard.signalType.openLong"),open_short:this.$t("dashboard.signalType.openShort"),close_long:this.$t("dashboard.signalType.closeLong"),close_short:this.$t("dashboard.signalType.closeShort"),add_long:this.$t("dashboard.signalType.addLong"),add_short:this.$t("dashboard.signalType.addShort")};return e[t.toLowerCase()]||t.toUpperCase()},getStatusColor:function(t){var e={pending:"orange",processing:"blue",completed:"green",failed:"red",cancelled:"default"};return e[t]||"default"},getStatusText:function(t){if(!t)return"-";var e={pending:this.$t("dashboard.status.pending"),processing:this.$t("dashboard.status.processing"),completed:this.$t("dashboard.status.completed"),failed:this.$t("dashboard.status.failed"),cancelled:this.$t("dashboard.status.cancelled")};return e[t.toLowerCase()]||t.toUpperCase()},getNotifyIconType:function(t){var e=String(t||"").trim().toLowerCase(),a={browser:"bell",webhook:"link",discord:"comment",telegram:"message",tg:"message",tele:"message",email:"mail",phone:"phone"};return a[e]||"notification"},getExchangeTagColor:function(t){var e=String(t||"").trim().toLowerCase(),a={binance:"gold",okx:"purple",bitget:"cyan",signal:"geekblue"};return a[e]||"blue"},formatNumber:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t?"0.00":Number(t).toLocaleString("en-US",{minimumFractionDigits:e,maximumFractionDigits:e})},formatProfitValue:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),s=["open_long","open_short","add_long","add_short"];if(0===a&&e&&s.includes(e.type))return"--";if(Math.abs(a)<1e-6)return e&&s.includes(e.type)?"--":"$0.00";var i=a>=0?"+":"";return"".concat(i,"$").concat(this.formatNumber(a))},formatCompactNumber:function(t){if(void 0===t||null===t)return"0";var e=Math.abs(t);return e>=1e6?(t/1e6).toFixed(1)+"M":e>=1e3?(t/1e3).toFixed(1)+"k":e>=100?Math.round(t):t.toFixed(0)},prevMonth:function(){this.currentCalendarIndex0&&this.currentCalendarIndex--},getDayProfit:function(t){var e=this.currentCalendarMonth;if(!e||!e.days)return null;var a=String(t).padStart(2,"0");return void 0!==e.days[a]?e.days[a]:null},getDayClass:function(t){var e=this.getDayProfit(t);return null===e?"no-data":e>0?"profit":e<0?"loss":"zero"},formatTime:function(t){if(!t)return"-";var e=this.$i18n&&this.$i18n.locale?this.$i18n.locale:"zh-CN",a=T(t,{locale:e,fallback:"-"});return a||"-"},initCharts:function(){this.initPieChart(),this.initDrawdownChart(),this.initHourlyChart()},initPieChart:function(){var t=this,e=this.$refs.pieChart;if(e){this.pieChart=kt.init(e);var a=Array.isArray(this.summary.strategy_stats)?this.summary.strategy_stats:[],s=Array.isArray(this.summary.strategy_pnl_chart)?this.summary.strategy_pnl_chart:[],i=[];i=a.length>0?a.map(function(t){var e=t&&t.strategy_name?String(t.strategy_name):"-",a=Number(t&&t.total_pnl?t.total_pnl:0),s=Number(t&&t.total_trades?t.total_trades:0),i=0!==a?Math.abs(a):s;return{name:e,value:i,signedValue:a,trades:s}}).filter(function(t){return t.value>0}):s.map(function(t){var e=t&&t.name?String(t.name):"-",a=Number(t&&t.value?t.value:0);return{name:e,value:Math.abs(a),signedValue:a}}).filter(function(t){return t.value>0});var r=this.isDarkTheme,n=r?"#9ca3af":"#6b7280",o=[new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#3b82f6"},{offset:1,color:"#1d4ed8"}]),new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#8b5cf6"},{offset:1,color:"#6d28d9"}]),new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#10b981"},{offset:1,color:"#059669"}]),new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#f59e0b"},{offset:1,color:"#d97706"}]),new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#ec4899"},{offset:1,color:"#be185d"}]),new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#06b6d4"},{offset:1,color:"#0891b2"}])],l={backgroundColor:"transparent",tooltip:{trigger:"item",backgroundColor:r?"rgba(17, 24, 39, 0.95)":"rgba(255, 255, 255, 0.95)",borderColor:r?"#374151":"#e5e7eb",textStyle:{color:r?"#f3f4f6":"#1f2937"},formatter:function(e){var a=e&&e.data&&"number"===typeof e.data.signedValue?e.data.signedValue:0,s=(a>=0?"+":"")+t.formatNumber(a,2),i=a>=0?"#10b981":"#ef4444";return'\n
\n
'.concat(e.name,'
\n
占比 ').concat(e.percent,'%
\n
PNL $').concat(s,"
\n
\n ")}},legend:{bottom:10,left:"center",itemWidth:12,itemHeight:12,itemGap:16,textStyle:{color:n,fontSize:11}},color:o,series:[{name:"策略分布",type:"pie",radius:["50%","75%"],center:["50%","45%"],avoidLabelOverlap:!1,itemStyle:{borderRadius:6,borderColor:r?"#1f2937":"#ffffff",borderWidth:3},label:{show:!1},emphasis:{label:{show:!0,fontSize:14,fontWeight:"bold",color:r?"#f3f4f6":"#1f2937"},scaleSize:8},labelLine:{show:!1},data:i.length>0?i:[{value:1,name:this.$t("dashboard.noData"),signedValue:0}]}]};this.pieChart.setOption(l)}},initDrawdownChart:function(){var t=this,e=this.$refs.drawdownChart;if(e){this.drawdownChart=kt.init(e);var a,s=(this.summary.daily_pnl_chart||[]).map(function(t){return t.date}),i=(this.summary.daily_pnl_chart||[]).map(function(t){return Number(t.profit||0)}),r=[],n=0,o=(0,d.A)(i);try{for(o.s();!(a=o.n()).done;){var l=a.value;n+=Number(l||0),r.push(n)}}catch(f){o.e(f)}finally{o.f()}var c=-1/0,u=0,p=0,m=r.map(function(t,e){c=Math.max(c,t);var a=Number((t-c).toFixed(2));return a\n
').concat(s,'
\n
\n \n \n ').concat(t.$t("dashboard.drawdown")||"Drawdown",'\n \n -$').concat(r,'\n
\n
\n
\n
\n \n ')}},grid:{left:55,right:20,bottom:35,top:20,containLabel:!1},xAxis:{type:"category",data:s,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:h,fontSize:10,formatter:function(t){return t.slice(5)}}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:h,fontSize:10,formatter:function(t){return Math.abs(t)>=1e3?"-$"+(Math.abs(t)/1e3).toFixed(1)+"k":0===t?"0":"-$"+Math.abs(t)}},splitLine:{lineStyle:{color:_,type:[4,4]}},max:0},series:[{name:this.$t("dashboard.drawdown")||"Drawdown",type:"line",data:m,smooth:.3,showSymbol:!1,lineStyle:{width:2.5,color:new kt.graphic.LinearGradient(0,0,1,0,[{offset:0,color:"#ef4444"},{offset:.5,color:"#f87171"},{offset:1,color:"#fca5a5"}]),shadowColor:"rgba(239, 68, 68, 0.4)",shadowBlur:8,shadowOffsetY:4},areaStyle:{color:new kt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:g?"rgba(239, 68, 68, 0.4)":"rgba(239, 68, 68, 0.25)"},{offset:.5,color:g?"rgba(248, 113, 113, 0.15)":"rgba(248, 113, 113, 0.1)"},{offset:1,color:"transparent"}])},markPoint:u<0?{symbol:"pin",symbolSize:45,itemStyle:{color:new kt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"#f87171"},{offset:1,color:"#dc2626"}]),shadowColor:"rgba(239, 68, 68, 0.5)",shadowBlur:10},label:{show:!0,color:"#fff",fontSize:10,fontWeight:"bold",formatter:function(){return t.$t("dashboard.label.maxDrawdownPoint")||"MAX"}},data:[{name:this.$t("dashboard.maxDrawdown")||"Max Drawdown",coord:[p,u]}]}:void 0,markLine:{silent:!0,symbol:"none",lineStyle:{color:g?"#52525b":"#a1a1aa",type:"dashed",width:1},data:[{yAxis:0}],label:{show:!1}}}]};this.drawdownChart.setOption(y)}},initHourlyChart:function(){var t=this,e=this.$refs.hourlyChart;if(e){this.hourlyChart=kt.init(e);var a=this.summary.hourly_distribution||[],s=a.map(function(t){return"".concat(String(t.hour).padStart(2,"0"),":00")}),i=a.map(function(t){return t.count||0}),r=a.map(function(t){return t.profit||0}),n=this.isDarkTheme,o=n?"#9ca3af":"#6b7280",l=n?"rgba(75, 85, 99, 0.3)":"rgba(229, 231, 235, 0.8)",c={backgroundColor:"transparent",tooltip:{trigger:"axis",backgroundColor:n?"rgba(17, 24, 39, 0.95)":"rgba(255, 255, 255, 0.95)",borderColor:n?"#374151":"#e5e7eb",textStyle:{color:n?"#f3f4f6":"#1f2937"},formatter:function(e){var a,s=Array.isArray(e)?e:[],i=s[0]&&s[0].axisValue?s[0].axisValue:"",r=0,l=0,c=t.$t("dashboard.tradeCount")||"Trade Count",u=t.$t("dashboard.profit")||"Profit",p=t.$t("dashboard.unit.trades")||"",m=(0,d.A)(s);try{for(m.s();!(a=m.n()).done;){var g=a.value;g.seriesName===c&&(r=g.data||0),g.seriesName===u&&(l=g.data||0)}}catch(y){m.e(y)}finally{m.f()}var h=l>=0?"#10b981":"#ef4444",_=(l>=0?"+":"")+t.formatNumber(l,2);return'\n
\n
'.concat(i,'
\n
').concat(c,' ').concat(r," ").concat(p,'
\n
').concat(u,' $').concat(_,"
\n
\n ")}},grid:{left:50,right:20,bottom:30,top:10,containLabel:!1},xAxis:{type:"category",data:s,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o,fontSize:10,interval:3}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o,fontSize:10},splitLine:{lineStyle:{color:l,type:"dashed"}}},series:[{name:this.$t("dashboard.tradeCount")||"Trade Count",type:"bar",data:i,barMaxWidth:16,itemStyle:{borderRadius:[3,3,0,0],color:new kt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"#60a5fa"},{offset:1,color:"#3b82f6"}])}},{name:this.$t("dashboard.profit")||"Profit",type:"line",data:r,smooth:!0,showSymbol:!1,lineStyle:{width:2,color:"#a855f7"}}]};this.hourlyChart.setOption(c)}},handleResize:function(){this.pieChart&&this.pieChart.resize(),this.drawdownChart&&this.drawdownChart.resize(),this.hourlyChart&&this.hourlyChart.resize()}}},Tt=At,Pt=(0,F.A)(Tt,bt,xt,!1,null,"23d6ebe6",null),Mt=Pt.exports,Ft=a(75402),It=["BTC/USDT","ETH/USDT","BNB/USDT","SOL/USDT","ADA/USDT","XRP/USDT","DOGE/USDT","DOT/USDT","MATIC/USDT","AVAX/USDT","LINK/USDT","UNI/USDT","LTC/USDT","ATOM/USDT","ETC/USDT"],Nt=[{value:"binance",labelKey:"binance"},{value:"okx",labelKey:"okx"},{value:"bitget",labelKey:"bitget"},{value:"bybit",labelKey:"bybit"},{value:"coinbaseexchange",labelKey:"coinbaseexchange"},{value:"kraken",labelKey:"kraken"},{value:"kucoin",labelKey:"kucoin"},{value:"gate",labelKey:"gate"},{value:"bitfinex",labelKey:"bitfinex"},{value:"deepcoin",labelKey:"deepcoin"}],Dt=[{value:"ibkr",labelKey:"ibkr",name:"Interactive Brokers"}],Vt=[{value:"mt5",labelKey:"mt5",name:"MetaTrader 5"}],Et={name:"TradingAssistant",mixins:[_.t],components:{TradingRecords:N,PositionRecords:L,StrategyTypeSelector:Z,StrategyEditor:ot,PerformanceAnalysis:mt,StrategyLogs:vt,DashboardOverview:Mt,ExchangeAccountModal:Ft.A},computed:{showAssistantGuide:function(){return!this.assistantGuideDismissed},assistantGuideStorageKey:function(){var t,e=(null===(t=this.$store.getters.userInfo)||void 0===t?void 0:t.id)||"guest";return"trading-assistant-guide-dismissed:".concat(e)},strategyFormWrapClass:function(){var t=["strategy-form-modal"];return this.isMobile&&t.push("mobile-modal"),this.isDarkTheme&&t.push("strategy-form-modal-dark"),t.join(" ")},displayCurrentStep:function(){return this.currentStep},strategyFormLastStepIndex:function(){return"script"===this.strategyMode?2:1},showStrategyFormNext:function(){return this.currentStep=0?"text-success":"text-danger"},getPnlColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},isCryptoMarket:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()},canUseLiveTrading:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()||("USStock"===t||"Forex"===t)},isLiveTradingAvailable:function(){var t=this.selectedMarketCategory||"Crypto",e=this.currentExchangeId||"";return"crypto"===String(t).toLowerCase()?["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"].includes(e):"USStock"===t?"ibkr"===this.currentBrokerId:"Forex"===t&&"mt5"===this.currentBrokerId},showDemoTradingSwitch:function(){return this.currentExchangeId&&"binance"===this.currentExchangeId.toLowerCase()},brokerOptions:function(){var t=this;return Dt.map(function(e){var a="";try{var s="trading-assistant.brokerNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},forexBrokerOptions:function(){var t=this;return Vt.map(function(e){var a="";try{var s="trading-assistant.brokerNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},cryptoExchangeOptions:function(){var t=this;return Nt.map(function(e){var a="";try{if(e.labelKey){var s="trading-assistant.exchangeNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},groupedStrategies:function(){return"symbol"===this.groupByMode?this.groupedBySymbol:this.groupedByStrategy},groupedByStrategy:function(){var t,e={},a=[],s=(0,d.A)(this.strategies);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i.strategy_group_id;r&&r.trim()?(e[r]||(e[r]={id:r,baseName:i.group_base_name||i.strategy_name.split("-")[0],strategies:[],runningCount:0,stoppedCount:0}),e[r].strategies.push(i),"running"===i.status?e[r].runningCount++:e[r].stoppedCount++):a.push(i)}}catch(o){s.e(o)}finally{s.f()}var n=Object.values(e).sort(function(t,e){var a=Math.max.apply(Math,(0,c.A)(t.strategies.map(function(t){return t.created_at||0}))),s=Math.max.apply(Math,(0,c.A)(e.strategies.map(function(t){return t.created_at||0})));return s-a});return{groups:n,ungrouped:a}},groupedBySymbol:function(){var t,e={},a=[],s=(0,d.A)(this.strategies);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i.trading_config||{},n=r.symbol;if(n&&n.trim()){e[n]||(e[n]={id:"symbol_".concat(n),baseName:n,strategies:[],runningCount:0,stoppedCount:0});var o=(0,u.A)((0,u.A)({},i),{},{displayInfo:{strategyName:i.strategy_name||i.group_base_name||"Unnamed",timeframe:r.timeframe||"-",indicatorName:i.indicator_name||i.indicator_config&&i.indicator_config.name||"-"}});e[n].strategies.push(o),"running"===i.status?e[n].runningCount++:e[n].stoppedCount++}else a.push(i)}}catch(c){s.e(c)}finally{s.f()}var l=Object.values(e).sort(function(t,e){return t.baseName.localeCompare(e.baseName)});return{groups:l,ungrouped:a}},unconfiguredChannels:function(){var t=[];return this.notifyChannelsUi.includes("telegram")&&(this.userNotificationSettings.telegram_bot_token||this.userNotificationSettings.telegram_chat_id||t.push("Telegram")),this.notifyChannelsUi.includes("email")&&(this.userNotificationSettings.email||t.push("Email")),this.notifyChannelsUi.includes("discord")&&(this.userNotificationSettings.discord_webhook||t.push("Discord")),this.notifyChannelsUi.includes("webhook")&&(this.userNotificationSettings.webhook_url||t.push("Webhook")),t}},data:function(){return{topTab:"overview",loading:!1,loadingRecords:!1,strategies:[],selectedStrategy:null,showFormModal:!1,pendingRouteIndicatorId:"",lastAutoStrategyName:"",lastAutoScriptStrategyName:"",scriptTemplateKeyForPayload:"",strategyMode:"",strategyCode:"",pendingScriptTemplateKey:"",showModeSelector:!1,strategyType:"indicator",selectedMarketCategory:"Crypto",currentStep:0,saving:!1,loadingIndicators:!1,availableIndicators:[],selectedIndicator:null,indicatorParams:[],indicatorParamValues:{},cryptoSymbols:It,loadingWatchlist:!1,watchlist:[],exchangeOptions:Nt,currentExchangeId:"",currentBrokerId:"ibkr",connectionTestResult:null,indicatorsLoaded:!1,editingStrategy:null,currentEquity:null,equityPollingTimer:null,backtestCollapseKeys:["risk"],trailingEnabledUi:!1,entryPctMaxUi:100,aiFilterEnabledUi:!1,isEditMode:!1,supportedIPs:[],executionModeUi:"signal",liveDisclaimerAckUi:!1,notifyChannelsUi:["browser"],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},loadingExchangeCredentials:!1,exchangeCredentials:[],showExchangeAccountModal:!1,saveCredentialUi:!1,suppressApiClearOnce:!1,selectedSymbols:[],crossSectionalSymbols:[],collapsedGroups:{},groupByMode:"strategy",showAddSymbolModal:!1,addSymbolMarket:"Crypto",addSymbolMarketTypes:[{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],addSymbolKeyword:"",searchingSymbol:!1,symbolSearchResults:[],selectedAddSymbol:null,hasSearchedSymbol:!1,addingSymbol:!1,hotSymbols:[],loadingHotSymbols:!1,searchTimer:null,assistantGuideDismissed:!1}},beforeCreate:function(){this.form=this.$form.createForm(this)},mounted:function(){var t=this;this.restoreAssistantGuidePreference(),"strategy"!==this.$route.query.tab&&"create"!==this.$route.query.mode||(this.topTab="strategy"),this.loadStrategies(),this.loadUserNotificationSettings(),"create"===this.$route.query.mode&&this.$nextTick(function(){var e=t.$route.query.indicator_id;e?(t.strategyMode="signal",t.pendingRouteIndicatorId=String(e),t._openCreateModal()):t.handleCreateStrategy()})},beforeDestroy:function(){this.stopEquityPolling()},methods:{restoreAssistantGuidePreference:function(){try{this.assistantGuideDismissed="1"===window.localStorage.getItem(this.assistantGuideStorageKey)}catch(t){this.assistantGuideDismissed=!1}},dismissAssistantGuide:function(){this.assistantGuideDismissed=!0;try{window.localStorage.setItem(this.assistantGuideStorageKey,"1")}catch(t){}},goToStrategyTab:function(){this.topTab="strategy"},openCreateStrategyFromGuide:function(){var t=this;this.topTab="strategy",this.$nextTick(function(){t.handleCreateStrategy()})},loadUserNotificationSettings:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,h.vF)();case 1:a=e.v,1===a.code&&a.data&&(t.userNotificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadWatchlist:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingWatchlist=!0,e.p=1,e.n=2,(0,m.Qo)({userid:1});case 2:a=e.v,a&&1===a.code?t.watchlist=Array.isArray(a.data)?a.data:[]:t.watchlist=[],e.n=4;break;case 3:e.p=3,e.v,t.watchlist=[];case 4:return e.p=4,t.loadingWatchlist=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCloseAddSymbolModal:function(){this.showAddSymbolModal=!1,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1},handleAddSymbolMarketChange:function(t){this.addSymbolMarket=t,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1,this.loadHotSymbols(t)},handleSymbolSearchInputChange:function(t){var e=this,a=t.target.value;if(this.addSymbolKeyword=a,this.searchTimer&&clearTimeout(this.searchTimer),!a||""===a.trim())return this.symbolSearchResults=[],this.hasSearchedSymbol=!1,void(this.selectedAddSymbol=null);this.searchTimer=setTimeout(function(){e.searchSymbolsInModal(a)},500)},handleSearchSymbol:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t&&t.trim()){a.n=1;break}return a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return e.$message.warning(e.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:if(!(e.symbolSearchResults.length>0)){a.n=3;break}return a.a(2);case 3:e.hasSearchedSymbol&&0===e.symbolSearchResults.length?e.handleDirectAdd():e.searchSymbolsInModal(t);case 4:return a.a(2)}},a)}))()},searchSymbolsInModal:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&""!==t.trim()){a.n=1;break}return e.symbolSearchResults=[],e.hasSearchedSymbol=!1,a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return a.a(2);case 2:return e.searchingSymbol=!0,e.hasSearchedSymbol=!0,a.p=3,a.n=4,(0,m._3)({market:e.addSymbolMarket,keyword:t.trim()});case 4:s=a.v,s&&1===s.code&&Array.isArray(s.data)?e.symbolSearchResults=s.data:e.symbolSearchResults=[],a.n=6;break;case 5:a.p=5,a.v,e.symbolSearchResults=[];case 6:return a.p=6,e.searchingSymbol=!1,a.f(6);case 7:return a.a(2)}},a,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.addSymbolKeyword&&this.addSymbolKeyword.trim()?this.addSymbolMarket?this.selectedAddSymbol={market:this.addSymbolMarket,symbol:this.addSymbolKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},handleSelectAddSymbol:function(t){this.selectedAddSymbol={market:this.addSymbolMarket,symbol:t.symbol,name:t.name||""}},loadHotSymbols:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t||(t=e.addSymbolMarket||"Crypto"),t){a.n=1;break}return a.a(2);case 1:return e.loadingHotSymbols=!0,a.p=2,a.n=3,(0,m.z6)({market:t,limit:10});case 3:s=a.v,s&&1===s.code&&s.data?e.hotSymbols=s.data:e.hotSymbols=[],a.n=5;break;case 4:a.p=4,a.v,e.hotSymbols=[];case 5:return a.p=5,e.loadingHotSymbols=!1,a.f(5);case 6:return a.a(2)}},a,null,[[2,4,5,6]])}))()},handleConfirmAddSymbol:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r,n,l,d;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a="",s="",!t.selectedAddSymbol){e.n=1;break}a=t.selectedAddSymbol.market,s=t.selectedAddSymbol.symbol.toUpperCase(),e.n=4;break;case 1:if(!t.addSymbolKeyword||!t.addSymbolKeyword.trim()){e.n=3;break}if(t.addSymbolMarket){e.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),e.a(2);case 2:a=t.addSymbolMarket,s=t.addSymbolKeyword.trim().toUpperCase(),e.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),e.a(2);case 4:return t.addingSymbol=!0,e.p=5,e.n=6,(0,m.dp)({userid:1,market:a,symbol:s});case 6:if(i=e.v,!i||1!==i.code){e.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),e.n=7,t.loadWatchlist();case 7:r="".concat(a,":").concat(s),t.isEditMode?(t.form.setFieldsValue({symbol:r}),t.handleWatchlistSymbolChange(r)):(t.selectedSymbols.includes(r)||(t.selectedSymbols=[].concat((0,c.A)(t.selectedSymbols),[r])),t.handleMultiSymbolChange(t.selectedSymbols)),t.handleCloseAddSymbolModal(),e.n=9;break;case 8:t.$message.error((null===i||void 0===i?void 0:i.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:e.n=11;break;case 10:e.p=10,d=e.v,l=(null===d||void 0===d||null===(n=d.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.msg)||(null===d||void 0===d?void 0:d.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(l);case 11:return e.p=11,t.addingSymbol=!1,e.f(11);case 12:return e.a(2)}},e,null,[[5,10,11,12]])}))()},filterWatchlistOption:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===s||String(s).toLowerCase().includes(String(t||"").toLowerCase())},filterWatchlistOptionWithAdd:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===s||String(s).toLowerCase().includes(String(t||"").toLowerCase())},handleMultiSymbolChangeWithAdd:function(t){if(t&&t.includes("__add_symbol_option__"))return this.selectedSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);this.handleMultiSymbolChange(t)},handleStrategyTypeChange:function(t){var e=t.target.value;"single"===e&&(this.crossSectionalSymbols=[])},handleCrossSectionalSymbolChange:function(t){if(t&&t.includes("__add_symbol_option__"))return this.crossSectionalSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(this.crossSectionalSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),s=e.slice(0,a);this.selectedMarketCategory=s||"Crypto"}}},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},handleWatchlistSymbolChange:function(t){var e=this;if("__add_symbol_option__"===t)return this.$nextTick(function(){e.form.setFieldsValue({symbol:void 0})}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(t&&"string"===typeof t&&t.includes(":")){var a=t.indexOf(":"),s=t.slice(0,a);if(this.selectedMarketCategory=s||"Crypto","Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var i=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!i){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}}},handleSimpleSymbolChange:function(t){if("__add_symbol_option__"===t)return this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);var e=t?[t]:[];this.handleMultiSymbolChange(e)},handleMultiSymbolChange:function(t){if(this.selectedSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),s=e.slice(0,a);this.selectedMarketCategory=s||"Crypto"}}if("Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var i=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!i){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}},loadExchangeCredentials:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingExchangeCredentials=!0,e.p=1,e.n=2,(0,g.IA)({user_id:1});case 2:a=e.v,a&&1===a.code?t.exchangeCredentials=a.data&&a.data.items||[]:(t.exchangeCredentials=[],t.$message.warning((null===a||void 0===a?void 0:a.msg)||t.$t("trading-assistant.messages.loadFailed"))),e.n=4;break;case 3:e.p=3,e.v,t.exchangeCredentials=[],t.$message.warning(t.$t("trading-assistant.exchange.testFailed"));case 4:return e.p=4,t.loadingExchangeCredentials=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},goToIndicatorAnalysisCreate:function(){this.$router.push("/indicator-analysis")},handleExchangeAccountCreated:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return a.n=1,e.loadExchangeCredentials();case 1:if(s=t&&(t.id||t.credential_id),!s){a.n=3;break}try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:s})}catch(r){}return a.n=2,e.handleCredentialSelectChange(s);case 2:a.n=4;break;case 3:if(1!==e.exchangeCredentials.length){a.n=4;break}i=e.exchangeCredentials[0].id;try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:i})}catch(r){}return a.n=4,e.handleCredentialSelectChange(i);case 4:return a.a(2)}},a)}))()},formatCredentialLabel:function(t){if(!t)return"";var e=(t.name||"").trim(),a=t.exchange_id||"",s=t.api_key_hint||"";return e?"".concat(a.toUpperCase()," - ").concat(e," (").concat(s,")"):"".concat(a.toUpperCase()," (").concat(s,")")},isCredentialCompatible:function(t){if(!t||!t.exchange_id)return!0;var e=(t.exchange_id||"").toLowerCase(),a=this.selectedMarketCategory||"Crypto";if("mt5"===e)return"Forex"===a;if("ibkr"===e)return"USStock"===a;var s=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex","deepcoin"];return!s.includes(e)||"Crypto"===a},handleCredentialSelectChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t){a.n=1;break}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 1:if(s=e.exchangeCredentials.find(function(e){return String(e.id)===String(t)}),!s){a.n=5;break}if(i=(s.exchange_id||"").toLowerCase(),"mt5"!==i||"Forex"===e.selectedMarketCategory){a.n=2;break}e.$message.error(e.$t("trading-assistant.validation.mt5OnlyForForex"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 2:if("ibkr"!==i||"USStock"===e.selectedMarketCategory){a.n=3;break}e.$message.error(e.$t("trading-assistant.validation.ibkrOnlyForUSStock"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 3:if(r=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"],!r.includes(i)||"Crypto"===e.selectedMarketCategory){a.n=4;break}e.$message.error(e.$t("trading-assistant.validation.cryptoExchangeOnlyForCrypto"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 4:e.currentExchangeId=s.exchange_id||"";case 5:e.connectionTestResult=null;case 6:return a.a(2)}},a)}))()},onSaveCredentialChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.saveCredentialUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({save_credential:e})}catch(a){}},onExecutionModeChange:function(t){var e=t&&t.target?t.target.value:t;if(this.executionModeUi=e||"signal",!this.canUseLiveTrading&&"signal"!==this.executionModeUi){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(a){}}},setExecutionModeUi:function(t){var e=t||"signal";this.onExecutionModeChange(e);try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:e})}catch(a){}},onLiveDisclaimerAckChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.liveDisclaimerAckUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:e})}catch(a){}},onNotifyChannelsChange:function(t){this.notifyChannelsUi=Array.isArray(t)?t:[]},formatCurrency:function(t){return null===t||void 0===t?"-":"$"+t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnl:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+"$"+Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnlPercent:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+Math.abs(t).toFixed(2)+"%"},loadStrategies:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,p.EM)();case 2:a=e.v,1===a.code?(s=a.data.strategies||[],t.strategies=s,t.selectedStrategy&&(i=t.strategies.find(function(e){return e.id===t.selectedStrategy.id}),t.selectedStrategy=i||null)):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadFailed")),e.n=4;break;case 3:e.p=3,e.v,t.$message.error(t.$t("trading-assistant.messages.loadFailed"));case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCreateStrategy:function(){this.isEditMode=!1,this.editingStrategy=null,this.strategyMode="",this.strategyCode="",this.pendingScriptTemplateKey="",this.showModeSelector=!0,this.showFormModal=!1},handleModeSelect:function(t){this.strategyMode=t,this.pendingScriptTemplateKey="",this.showModeSelector=!1,this._openCreateModal()},handleUseTemplate:function(t){this.strategyMode="script",this.pendingScriptTemplateKey=t,this.showModeSelector=!1,this._openCreateModal()},_openCreateModal:function(){var t=this;this.strategyType="indicator",this.currentStep=0,this.currentExchangeId="",this.currentBrokerId="ibkr",this.selectedIndicator=null,this.connectionTestResult=null,this.executionModeUi="signal",this.notifyChannelsUi=["browser"],this.saveCredentialUi=!1,this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.selectedMarketCategory="Crypto",this.selectedSymbols=[];var e="script"===this.strategyMode,a=e?this.buildScriptStrategyDefaultName(this.pendingScriptTemplateKey||null):this.buildStrategyDefaultName();this.lastAutoStrategyName=a,this.lastAutoScriptStrategyName=e?a:"",this.scriptTemplateKeyForPayload=e&&this.pendingScriptTemplateKey||"",this.form.resetFields(),this.form.setFieldsValue({strategy_name:a,execution_mode:"signal",notify_channels:["browser"],save_credential:!1,live_disclaimer_ack:!1,initial_capital:1e3,market_type:"swap",leverage:5,trade_direction:"long",timeframe:"15m",cs_strategy_type:"single"}),this.liveDisclaimerAckUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.loadWatchlist();case 1:return e.n=2,t.loadIndicators();case 2:t.applyPendingRouteIndicatorSelection(),t.loadExchangeCredentials();case 3:return e.a(2)}},e)})))},handleEditStrategy:function(t){var e=this;"running"!==t.status?(this.strategyType="indicator",this.strategyMode=t.strategy_mode||"signal",this.strategyCode=t.strategy_code||"",this.pendingScriptTemplateKey="",this.isEditMode=!0,this.editingStrategy=t,this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.form.resetFields(),this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return e.loadWatchlist(),e.loadIndicators(),e.loadExchangeCredentials(),a.n=1,e.loadStrategyDataToForm(t);case 1:return a.a(2)}},a)})))):this.$message.warning(this.$t("trading-assistant.messages.runningWarning"))},loadStrategyDataToForm:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r,l,c,d,u,p,m,g,h,_,y,f,v,b,x,k,C,S,w,$,A,T,P,M,F,I,N,D,V,E,R,z,L,U,q,K,O,B,G,H,W,j,Y,J,X,Z;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(e.indicatorsLoaded){a.n=1;break}return a.n=1,e.loadIndicators();case 1:return a.n=2,e.$nextTick();case 2:return e.selectedMarketCategory=t.market_category||"Crypto",d=t.execution_mode||"signal",e.executionModeUi=d,e.liveDisclaimerAckUi="live"===d,u=t.notification_config&&t.notification_config.channels||["browser"],e.notifyChannelsUi=Array.isArray(u)?u:["browser"],p=!1,m=!1,t.trading_config&&(f=t.trading_config||{},v=f.trailing&&"object"===(0,n.A)(f.trailing)?f.trailing:null,p=void 0!==f.trailing_enabled?!!f.trailing_enabled:!(!v||!v.enabled),b=f.enable_ai_filter,m=!0===b||"true"===b||1===b||"1"===b,x=f.scale&&"object"===(0,n.A)(f.scale)?f.scale:null,k=f.position&&"object"===(0,n.A)(f.position)?f.position:null,C=new Set(["risk"]),(f.trend_add_enabled||f.dca_add_enabled||x&&(null!==(g=x.trendAdd)&&void 0!==g&&g.enabled||null!==(h=x.dcaAdd)&&void 0!==h&&h.enabled))&&C.add("scale"),(f.trend_reduce_enabled||f.adverse_reduce_enabled||x&&(null!==(_=x.trendReduce)&&void 0!==_&&_.enabled||null!==(y=x.adverseReduce)&&void 0!==y&&y.enabled))&&C.add("reduce"),(void 0!==f.entry_pct||k&&void 0!==k.entryPct)&&C.add("position"),e.backtestCollapseKeys=Array.from(C)),e.trailingEnabledUi=p,e.aiFilterEnabledUi=m,a.n=3,e.$nextTick();case 3:return e.form.setFieldsValue({enable_ai_filter:m}),a.n=4,e.$nextTick();case 4:if(e.form.setFieldsValue({execution_mode:e.executionModeUi,live_disclaimer_ack:e.liveDisclaimerAckUi,notify_channels:e.notifyChannelsUi,notify_email:(null===(s=t.notification_config)||void 0===s||null===(s=s.targets)||void 0===s?void 0:s.email)||"",notify_phone:(null===(i=t.notification_config)||void 0===i||null===(i=i.targets)||void 0===i?void 0:i.phone)||"",notify_telegram:(null===(r=t.notification_config)||void 0===r||null===(r=r.targets)||void 0===r?void 0:r.telegram)||"",notify_discord:(null===(l=t.notification_config)||void 0===l||null===(l=l.targets)||void 0===l?void 0:l.discord)||"",notify_webhook:(null===(c=t.notification_config)||void 0===c||null===(c=c.targets)||void 0===c?void 0:c.webhook)||""}),S="script"===t.strategy_mode||"ScriptStrategy"===t.strategy_type,!S){a.n=5;break}return w=t.trading_config||{},$=w.symbol||t.symbol||"",A="string"===typeof $&&$.includes(":")?$:"".concat(e.selectedMarketCategory,":").concat($),T=w.script_template_key?String(w.script_template_key):"",e.scriptTemplateKeyForPayload=T,e.pendingScriptTemplateKey=T,e.lastAutoScriptStrategyName=t.strategy_name||"",e.lastAutoStrategyName=t.strategy_name||"",P="futures"===w.market_type?"swap":w.market_type||"swap",e.form.setFieldsValue({strategy_name:t.strategy_name,symbol:A,initial_capital:null!=w.initial_capital?w.initial_capital:t.initial_capital||1e3,leverage:null!=w.leverage?w.leverage:t.leverage||5,trade_direction:w.trade_direction||"long",timeframe:w.timeframe||t.timeframe||"15m",market_type:P}),a.a(2);case 5:if(!t.indicator_config||!t.indicator_config.indicator_id){a.n=8;break}if(M=t.indicator_config.indicator_id,F=e.availableIndicators.find(function(t){return String(t.id)===String(M)}),!F){a.n=7;break}return N=String(F.id),e.form.setFieldsValue({indicator_id:N}),a.n=6,e.handleIndicatorChange(N);case 6:D=null===(I=t.trading_config)||void 0===I?void 0:I.indicator_params,D&&"object"===(0,n.A)(D)&&Object.keys(D).forEach(function(t){t in e.indicatorParamValues&&e.$set(e.indicatorParamValues,t,D[t])}),a.n=8;break;case 7:e.form.setFieldsValue({indicator_id:String(M)});case 8:if(!t.exchange_config){a.n=12;break}if(V=t.exchange_config.exchange_id||"",E="live"===e.executionModeUi,R=["Crypto","USStock","Forex"].includes(e.selectedMarketCategory),z="USStock"===e.selectedMarketCategory,L="Forex"===e.selectedMarketCategory,!E||!R){a.n=11;break}if(!z){a.n=9;break}e.currentBrokerId=V||"ibkr",e.form.setFieldsValue({broker_id:V||"ibkr",ibkr_host:t.exchange_config.ibkr_host||"127.0.0.1",ibkr_port:t.exchange_config.ibkr_port||7497,ibkr_client_id:t.exchange_config.ibkr_client_id||1,ibkr_account:t.exchange_config.ibkr_account||""}),a.n=11;break;case 9:if(!L){a.n=10;break}e.currentBrokerId=V||"mt5",e.form.setFieldsValue({forex_broker_id:V||"mt5",mt5_server:t.exchange_config.mt5_server||"",mt5_login:t.exchange_config.mt5_login||"",mt5_password:t.exchange_config.mt5_password||"",mt5_terminal_path:t.exchange_config.mt5_terminal_path||""}),a.n=11;break;case 10:if(e.currentExchangeId=V||t.exchange_config.exchange_id||"",U=t.exchange_config.credential_id,!U){a.n=11;break}return e.form.setFieldsValue({credential_id:U}),a.n=11,e.handleCredentialSelectChange(U);case 11:z||L?e.currentBrokerId=V||(L?"mt5":"ibkr"):e.currentExchangeId=V;case 12:if(t.trading_config){if(q=t.trading_config||{},K=q.trailing&&"object"===(0,n.A)(q.trailing)?q.trailing:null,O=q.scale&&"object"===(0,n.A)(q.scale)?q.scale:null,B=q.position&&"object"===(0,n.A)(q.position)?q.position:null,G=q.strategy_type||t.strategy_type||"single","cross_sectional"===G)if(e.form.setFieldsValue({cs_strategy_type:"cross_sectional",portfolio_size:q.portfolio_size||10,long_ratio:q.long_ratio||.5,rebalance_frequency:q.rebalance_frequency||"daily"}),q.symbol_list&&Array.isArray(q.symbol_list))e.crossSectionalSymbols=q.symbol_list;else if(t.symbol_list)try{H="string"===typeof t.symbol_list?JSON.parse(t.symbol_list):t.symbol_list,Array.isArray(H)&&(e.crossSectionalSymbols=H)}catch(o){e.crossSectionalSymbols=[]}else e.crossSectionalSymbols=[];else e.form.setFieldsValue({cs_strategy_type:"single"}),e.crossSectionalSymbols=[];W=O&&O.trendAdd?O.trendAdd:null,j=O&&O.dcaAdd?O.dcaAdd:null,Y=O&&O.trendReduce?O.trendReduce:null,J=O&&O.adverseReduce?O.adverseReduce:null,X=q.symbol,Z="string"===typeof X&&X.includes(":")?X:"".concat(e.selectedMarketCategory,":").concat(X),e.form.setFieldsValue({strategy_name:t.strategy_name,symbol:Z,initial_capital:q.initial_capital,leverage:q.leverage,trade_direction:q.trade_direction||"long",timeframe:q.timeframe||"1H",market_type:"futures"===q.market_type?"swap":q.market_type||"swap",take_profit_pct:q.take_profit_pct||0,stop_loss_pct:q.stop_loss_pct||0,trailing_enabled:p,trailing_stop_pct:void 0!==q.trailing_stop_pct?q.trailing_stop_pct||0:K&&K.pct||0,trailing_activation_pct:void 0!==q.trailing_activation_pct?q.trailing_activation_pct||0:K&&K.activationPct||0,trend_add_enabled:void 0!==q.trend_add_enabled?!!q.trend_add_enabled:!(!W||!W.enabled),trend_add_step_pct:void 0!==q.trend_add_step_pct?q.trend_add_step_pct||0:W&&W.stepPct||0,trend_add_size_pct:void 0!==q.trend_add_size_pct?q.trend_add_size_pct||0:W&&W.sizePct||0,trend_add_max_times:void 0!==q.trend_add_max_times?q.trend_add_max_times||0:W&&W.maxTimes||0,dca_add_enabled:void 0!==q.dca_add_enabled?!!q.dca_add_enabled:!(!j||!j.enabled),dca_add_step_pct:void 0!==q.dca_add_step_pct?q.dca_add_step_pct||0:j&&j.stepPct||0,dca_add_size_pct:void 0!==q.dca_add_size_pct?q.dca_add_size_pct||0:j&&j.sizePct||0,dca_add_max_times:void 0!==q.dca_add_max_times?q.dca_add_max_times||0:j&&j.maxTimes||0,trend_reduce_enabled:void 0!==q.trend_reduce_enabled?!!q.trend_reduce_enabled:!(!Y||!Y.enabled),trend_reduce_step_pct:void 0!==q.trend_reduce_step_pct?q.trend_reduce_step_pct||0:Y&&Y.stepPct||0,trend_reduce_size_pct:void 0!==q.trend_reduce_size_pct?q.trend_reduce_size_pct||0:Y&&Y.sizePct||0,trend_reduce_max_times:void 0!==q.trend_reduce_max_times?q.trend_reduce_max_times||0:Y&&Y.maxTimes||0,adverse_reduce_enabled:void 0!==q.adverse_reduce_enabled?!!q.adverse_reduce_enabled:!(!J||!J.enabled),adverse_reduce_step_pct:void 0!==q.adverse_reduce_step_pct?q.adverse_reduce_step_pct||0:J&&J.stepPct||0,adverse_reduce_size_pct:void 0!==q.adverse_reduce_size_pct?q.adverse_reduce_size_pct||0:J&&J.sizePct||0,adverse_reduce_max_times:void 0!==q.adverse_reduce_max_times?q.adverse_reduce_max_times||0:J&&J.maxTimes||0,entry_pct:0===q.entry_pct||q.entry_pct?q.entry_pct:B&&B.entryPct?B.entryPct:100,enable_ai_filter:m}),e.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()})}case 13:return a.a(2)}},a)}))()},handleSelectStrategy:function(t){this.selectedStrategy=t,this.currentEquity=null,this.loadStrategyDetails(),this.startEquityPolling()},loadStrategyDetails:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,n,l,c,u,m,g,h,_,y,f;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedStrategy){e.n=1;break}return e.a(2,Promise.resolve());case 1:return e.p=1,e.n=2,Promise.all([(0,p.Yx)(t.selectedStrategy.id),(0,p.oK)(t.selectedStrategy.id)]);case 2:if(a=e.v,s=(0,r.A)(a,2),i=s[0],n=s[1],l=null,1===i.code&&i.data&&(Array.isArray(i.data)&&i.data.length>0?(c=i.data[i.data.length-1],l=c.equity):(m=(null===(u=t.selectedStrategy.trading_config)||void 0===u?void 0:u.initial_capital)||t.selectedStrategy.initial_capital,l=m||null)),g=0,1===n.code&&n.data){h=n.data.positions||n.data.items||[],_=(0,d.A)(h);try{for(_.s();!(y=_.n()).done;)f=y.value,g+=parseFloat(f.unrealized_pnl||f.unrealizedPnl||0)}catch(o){_.e(o)}finally{_.f()}}t.currentEquity=null!==l?l+g:null,e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},startEquityPolling:function(){var t=this;this.stopEquityPolling(),this.selectedStrategy&&(this.loadStrategyDetails(),this.equityPollingTimer=setInterval(function(){t.loadStrategyDetails()},1e4))},stopEquityPolling:function(){this.equityPollingTimer&&(clearInterval(this.equityPollingTimer),this.equityPollingTimer=null)},handleCloseModal:function(){this.showFormModal=!1,this.editingStrategy=null,this.isEditMode=!1,this.strategyType="indicator",this.strategyMode="",this.strategyCode="",this.pendingScriptTemplateKey="",this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.indicatorsLoaded=!1,this.availableIndicators=[],this.pendingRouteIndicatorId="",this.lastAutoStrategyName="",this.lastAutoScriptStrategyName="",this.scriptTemplateKeyForPayload="",this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.executionModeUi="signal",this.liveDisclaimerAckUi=!1,this.form.resetFields()},handleRefresh:function(){this.loadStrategies(),this.showFormModal=!1},handleMenuClick:function(t,e){switch(t){case"start":this.handleStartStrategy(e.id);break;case"stop":this.handleStopStrategy(e.id);break;case"edit":this.handleEditStrategy(e);break;case"backtest":this.handleBacktestStrategy(e);break;case"delete":this.handleDeleteStrategy(e);break}},toggleGroup:function(t){this.$set(this.collapsedGroups,t,!this.collapsedGroups[t])},handleBacktestStrategy:function(t){t&&t.id&&this.$router.push({path:"/backtest-center",query:{tab:"strategy",strategy_id:String(t.id)}})},handleGroupMenuClick:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i,r;return(0,o.A)().w(function(s){while(1)switch(s.n){case 0:i=e.strategies.map(function(t){return t.id}),r=t,s.n="startAll"===r?1:"stopAll"===r?3:"deleteAll"===r?5:7;break;case 1:return s.n=2,a.handleBatchStartStrategies(i,e.baseName);case 2:return s.a(3,7);case 3:return s.n=4,a.handleBatchStopStrategies(i,e.baseName);case 4:return s.a(3,7);case 5:return s.n=6,a.handleBatchDeleteStrategies(i,e.baseName);case 6:return s.a(3,7);case 7:return s.a(2)}},s)}))()},handleBatchStartStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.UH)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStartSuccess",{count:r})),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchStartFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStartFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchStopStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.GF)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStopSuccess",{count:r})),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchStopFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStopFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchDeleteStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i;return(0,o.A)().w(function(s){while(1)switch(s.n){case 0:i=a.$t("trading-assistant.messages.batchDeleteConfirm",{count:t.length,name:e}),a.$confirm({class:a.isDarkTheme?"ta-strategy-confirm-modal":"",title:a.$t("trading-assistant.deleteAll"),content:i,okText:a.$t("trading-assistant.deleteAll"),okType:"danger",cancelText:a.$t("trading-assistant.form.cancel"),onOk:function(){var e=(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.xQ)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchDeleteSuccess",{count:r})),a.selectedStrategy&&t.includes(a.selectedStrategy.id)&&(a.selectedStrategy=null,a.stopEquityPolling()),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchDeleteFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchDeleteFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}));function s(){return e.apply(this,arguments)}return s}()});case 1:return s.a(2)}},s)}))()},handleStartStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.mV)(t);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.startSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="running")):e.$message.error(s.msg||e.$t("trading-assistant.messages.startFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.startFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleStopStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.Ke)(t);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.stopSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="stopped")):e.$message.error(s.msg||e.$t("trading-assistant.messages.stopFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.stopFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleDeleteStrategy:function(t){var e=this,a=this.$t("trading-assistant.messages.deleteConfirmWithName",{name:t.strategy_name});this.$confirm({class:this.isDarkTheme?"ta-strategy-confirm-modal":"",title:this.$t("trading-assistant.deleteStrategy"),content:a,okText:this.$t("trading-assistant.deleteStrategy"),okType:"danger",cancelText:this.$t("trading-assistant.form.cancel"),onOk:function(){var a=(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.v_)(t.id);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.deleteSuccess")),e.selectedStrategy&&e.selectedStrategy.id===t.id&&(e.selectedStrategy=null,e.stopEquityPolling()),e.loadStrategies()):e.$message.error(s.msg||e.$t("trading-assistant.messages.deleteFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.deleteFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}));function s(){return a.apply(this,arguments)}return s}()})},getStatusColor:function(t){var e={running:"green",stopped:"default",error:"red"};return e[t]||"default"},getStatusText:function(t){return this.$t("trading-assistant.status.".concat(t))||t},getStrategyTypeText:function(t){return this.$t("trading-assistant.strategyType.".concat(t))||t},getTradeDirectionText:function(t){if(!t)return"";var e={long:this.$t("trading-assistant.form.tradeDirectionLong")||"做多",short:this.$t("trading-assistant.form.tradeDirectionShort")||"做空",both:this.$t("trading-assistant.form.tradeDirectionBoth")||"双向"};return e[t]||t},handleIndicatorSelectFocus:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.indicatorsLoaded||t.loadingIndicators){e.n=1;break}return e.n=1,t.loadIndicators();case 1:return e.a(2)}},e)}))()},loadIndicators:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.loadingIndicators){e.n=1;break}return e.a(2,new Promise(function(e){var a=setInterval(function(){t.loadingIndicators||(clearInterval(a),e())},100)}));case 1:if(!t.indicatorsLoaded){e.n=2;break}return e.a(2,Promise.resolve());case 2:return a=t.$store.getters.userInfo||{},s=a.id||1,t.loadingIndicators=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:s}});case 4:i=e.v,1===i.code&&i.data?(r=i.data.map(function(t){return{id:t.id,name:t.name,description:t.description,type:t.indicator_type||t.indicatorType||"python",code:t.code,is_buy:t.is_buy,source:1===t.is_buy?"bought":"custom"}}),t.availableIndicators=r,t.indicatorsLoaded=!0,t.applyPendingRouteIndicatorSelection()):(t.availableIndicators=[],t.$message.warning(i.msg||t.$t("trading-assistant.messages.loadIndicatorsFailed"))),e.n=6;break;case 5:e.p=5,e.v,t.availableIndicators=[],t.$message.warning(t.$t("trading-assistant.messages.loadIndicatorsFailed"));case 6:return e.p=6,t.loadingIndicators=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleIndicatorChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=String(t),e.selectedIndicator=e.availableIndicators.find(function(t){return String(t.id)===s}),e.applyAutoStrategyName(e.selectedIndicator),e.indicatorParams=[],e.indicatorParamValues={},!t){a.n=4;break}return a.p=1,a.n=2,e.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:t}});case 2:i=a.v,i&&1===i.code&&Array.isArray(i.data)&&(e.indicatorParams=i.data,r={},i.data.forEach(function(t){r[t.name]=t.default}),e.indicatorParamValues=r),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},handleMarketTypeChange:function(t){var e=t.target.value;"spot"===e&&this.form.setFieldsValue({trade_direction:"long",leverage:1})},recalcEntryPctMaxUi:function(){if(this.form){var t=!!this.form.getFieldValue("trend_add_enabled"),e=!!this.form.getFieldValue("dca_add_enabled"),a=Number(this.form.getFieldValue("trend_add_max_times")||0),s=Number(this.form.getFieldValue("dca_add_max_times")||0),i=Number(this.form.getFieldValue("trend_add_size_pct")||0),r=Number(this.form.getFieldValue("dca_add_size_pct")||0),n=(t?a*i:0)+(e?s*r:0),o=Math.max(0,Math.min(100,100-n));this.entryPctMaxUi=o}else this.entryPctMaxUi=100},normalizeEntryPct:function(){if(this.form){var t=Number(this.form.getFieldValue("entry_pct")||0),e=Number(this.entryPctMaxUi||100);t>e&&this.form.setFieldsValue({entry_pct:e})}},onTrendAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({dca_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onDcaAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({trend_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onScaleParamsChange:function(){var t=this;this.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()})},onEntryPctChange:function(){var t=this;this.$nextTick(function(){return t.normalizeEntryPct()})},onTrailingToggle:function(t){this.form&&(this.trailingEnabledUi=!!t,t||this.form.setFieldsValue({trailing_stop_pct:0,trailing_activation_pct:0}))},onAiFilterToggle:function(t){this.aiFilterEnabledUi=!!t;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({enable_ai_filter:!!t})}catch(e){}},filterIndicatorOption:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.label)||"";return s.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorOptionLabel:function(t){return t?t.description?"".concat(t.name," - ").concat(t.description):t.name:""},buildStrategyDefaultName:function(t){var e=t&&t.name?t.name:this.$t("trading-assistant.form.defaultStrategyName"),a=this.$t("trading-assistant.form.defaultStrategySuffix");return"".concat(e).concat(a)},buildScriptStrategyDefaultName:function(t){var e=this.$t("trading-assistant.form.defaultStrategySuffix"),a=t&&String(t).trim();if(a){var s="trading-assistant.template.".concat(a),i=this.$t(s),r=i!==s?i:a;return"".concat(r).concat(e)}var n=this.$t("trading-assistant.form.defaultScriptStrategyName");return"".concat(n).concat(e)},scriptTemplateKeyOf:function(t){if(!t||!t.trading_config)return"";var e=t.trading_config.script_template_key;return e?String(e):""},scriptTemplateLabel:function(t){if(!t)return"";var e="trading-assistant.template.".concat(t),a=this.$t(e);return a!==e?a:String(t)},onScriptTemplateChange:function(t){var e=t&&t.key?String(t.key):"";if(this.scriptTemplateKeyForPayload=e,"script"===this.strategyMode&&this.form){var a=this.buildScriptStrategyDefaultName(e||null),s=this.form.getFieldValue("strategy_name");s&&s!==this.lastAutoScriptStrategyName&&s!==this.lastAutoStrategyName||(this.form.setFieldsValue({strategy_name:a}),this.lastAutoScriptStrategyName=a,this.lastAutoStrategyName=a)}},applyAutoStrategyName:function(t){if(!this.editingStrategy&&this.form&&"script"!==this.strategyMode){var e=this.buildStrategyDefaultName(t),a=this.form.getFieldValue("strategy_name");a&&a!==this.lastAutoStrategyName||(this.form.setFieldsValue({strategy_name:e}),this.lastAutoStrategyName=e)}},applyPendingRouteIndicatorSelection:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s;return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.pendingRouteIndicatorId&&t.form&&!t.loadingIndicators){e.n=1;break}return e.a(2);case 1:if(a=String(t.pendingRouteIndicatorId),s=t.availableIndicators.find(function(t){return String(t.id)===a}),s){e.n=2;break}return e.a(2);case 2:return t.form.setFieldsValue({indicator_id:a}),e.n=3,t.handleIndicatorChange(a);case 3:t.pendingRouteIndicatorId="";case 4:return e.a(2)}},e)}))()},filterSymbolOption:function(t,e){return e.componentOptions.children[0].text.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorTypeColor:function(t){var e={trend:"blue",momentum:"green",volatility:"orange",volume:"purple",custom:"cyan",python:"geekblue",pine:"magenta"};return e[t]||"cyan"},getIndicatorTypeName:function(t){var e="trading-assistant.indicatorType.".concat(t),a=this.$t(e);return a!==e?a:t},getExchangeName:function(t){if(t.labelKey){var e="trading-assistant.exchangeNames.".concat(t.labelKey),a=this.$t(e);return a===e?t.value.charAt(0).toUpperCase()+t.value.slice(1):a}return t.label||t.value},getExchangeDisplayName:function(t){if(!t)return"";var e=this.exchangeOptions.find(function(e){return e.value===t});return e?this.getExchangeName(e):t.charAt(0).toUpperCase()+t.slice(1)},getExchangeTagColor:function(t){var e={binance:"gold",okx:"blue",coinbaseexchange:"cyan",kraken:"purple",bitfinex:"geekblue",huobi:"orange",gate:"green",mexc:"lime",kucoin:"volcano",bybit:"red",bitget:"magenta",bitmex:"red",deribit:"blue",phemex:"cyan",bitmart:"geekblue",bitstamp:"purple",bittrex:"orange",poloniex:"green",gemini:"lime",cryptocom:"volcano",blockchaincom:"magenta",bitflyer:"red",upbit:"blue",bithumb:"cyan",coinone:"purple",zb:"geekblue",lbank:"orange",bibox:"green",bigone:"lime",bitrue:"volcano",coinex:"magenta",ftx:"red",ftxus:"blue",binanceus:"gold",binancecoinm:"gold",binanceusdm:"gold",ibkr:"green"};return e[t]||"default"},handleApiConfigChange:function(){this.connectionTestResult=null},getModalPopupContainer:function(){return window.document.body},handleBrokerSelectChange:function(t){this.currentBrokerId=t||"ibkr",this.connectionTestResult=null},handleForexBrokerSelectChange:function(t){this.currentBrokerId=t||"mt5",this.connectionTestResult=null},handleExchangeSelectChange:function(t){var e=this;this.currentExchangeId=t||"",this.connectionTestResult=null,this.suppressApiClearOnce?this.suppressApiClearOnce=!1:this.$nextTick(function(){var t={api_key:void 0,secret_key:void 0,passphrase:void 0,enable_demo_trading:!1};setTimeout(function(){e.form.setFieldsValue(t)},100)})},getPlaceholder:function(t){var e={okx:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},okex:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},binance:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},coinbaseexchange:{api_key:"请输入API Key(或Key Name)",secret_key:"请输入API Secret(或Private Key)",passphrase:"请输入Passphrase(Legacy Pro API需要)"},kucoin:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase"},gate:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},mexc:{api_key:"请输入Access Key",secret_key:"请输入Secret Key"},kraken:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitfinex:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bybit:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitget:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(Legacy Pro API需要)"}},a=e[this.currentExchangeId]||{};if(a[t])return a[t];var s={api_key:this.$t("trading-assistant.placeholders.inputApiKey"),secret_key:this.$t("trading-assistant.placeholders.inputSecretKey"),passphrase:this.$t("trading-assistant.placeholders.inputPassphrase")};return s[t]||this.$t("trading-assistant.placeholders.inputApiKey")},handleNext:function(){var t=this;if("script"!==this.strategyMode){if(0===this.currentStep){var e=["indicator_id","strategy_name"];e.push("initial_capital","market_type","leverage","trade_direction","timeframe"),this.isEditMode&&e.push("symbol"),this.form.validateFields(e,function(e,a){if(!e){if(!t.isEditMode){var s=t.form.getFieldValue("cs_strategy_type")||"single";if("cross_sectional"===s){if(!t.crossSectionalSymbols||0===t.crossSectionalSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}else if(!t.selectedSymbols||0===t.selectedSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}try{var i=a&&a.market_type||t.form.getFieldValue("market_type");"spot"===i&&t.form.setFieldsValue({leverage:1,trade_direction:"long"})}catch(o){}t.backtestCollapseKeys=["risk"];try{t.trailingEnabledUi=!!t.form.getFieldValue("trailing_enabled")}catch(o){t.trailingEnabledUi=!1}t.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()});try{var r=t.form.getFieldValue("execution_mode")||"signal";t.executionModeUi=r;var n=t.form.getFieldValue("notify_channels")||["browser"];t.notifyChannelsUi=Array.isArray(n)?n:["browser"]}catch(o){}t.currentStep=1}})}}else if(0===this.currentStep){var a=["strategy_name","symbol","initial_capital","timeframe"];this.form.validateFields(a,function(e){e||(t.currentStep=1)})}else if(1===this.currentStep){if(!this.strategyCode||this.strategyCode.trim().length<20)return void this.$message.warning(this.$t("trading-assistant.editor.codeHint"));try{var s=this.form.getFieldValue("execution_mode")||"signal";this.executionModeUi=s;var i=this.form.getFieldValue("notify_channels")||["browser"];this.notifyChannelsUi=Array.isArray(i)?i:["browser"]}catch(r){}this.currentStep=2}},handlePrev:function(){this.currentStep>0&&this.currentStep--},handleSubmit:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.currentStep===t.strategyFormLastStepIndex){e.n=1;break}return e.a(2);case 1:t.form.validateFields(function(){var e=(0,l.A)((0,o.A)().m(function e(a,s){var i,r,l,c,d,m,g,h,_,y,f,v,b,x,k,C,S,w,$,A,T,P,M,F,I,N,D,V,E;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a){e.n=19;break}if(e.p=1,t.saving=!0,"script"!==t.strategyMode){e.n=7;break}if(i={channels:s.notify_channels||["browser"],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},i.channels&&0!==i.channels.length){e.n=2;break}return t.$message.warning(t.$t("trading-assistant.validation.notifyChannelRequired")),t.saving=!1,e.a(2);case 2:if(r=s.symbol||"",l="Crypto","string"===typeof r&&r.includes(":")&&(c=r.indexOf(":"),l=r.slice(0,c)||"Crypto",r=r.slice(c+1)),d="futures"===s.market_type?"swap":s.market_type||"swap",m=null!=s.leverage?s.leverage:5,g=s.trade_direction||"both","spot"===d?(m=1,g="long"):(m<1&&(m=1),m>125&&(m=125)),h=t.editingStrategy&&t.editingStrategy.trading_config,_=h&&"object"===(0,n.A)(h)&&!Array.isArray(h)?(0,u.A)({},h):{},y=(0,u.A)((0,u.A)({},_),{},{initial_capital:s.initial_capital||1e3,leverage:m,trade_direction:g,timeframe:s.timeframe||"15m",market_type:d,symbol:r}),t.scriptTemplateKeyForPayload?y.script_template_key=t.scriptTemplateKeyForPayload:delete y.script_template_key,f={strategy_name:s.strategy_name,strategy_type:"ScriptStrategy",strategy_mode:"script",strategy_code:t.strategyCode,market_category:l,execution_mode:s.execution_mode||"signal",notification_config:i,trading_config:y},!t.editingStrategy){e.n=4;break}return e.n=3,(0,p.P7)(t.editingStrategy.id,f);case 3:v=e.v,e.n=6;break;case 4:return f.user_id=1,e.n=5,(0,p.WM)(f);case 5:v=e.v;case 6:return 1===v.code?(t.$message.success(t.editingStrategy?t.$t("trading-assistant.messages.updateSuccess"):t.$t("trading-assistant.messages.createSuccess")),t.handleRefresh()):t.$message.error(v.msg||(t.editingStrategy?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"))),t.saving=!1,t.showFormModal=!1,e.a(2);case 7:if(b=t.canUseLiveTrading&&"live"===s.execution_mode,!b){e.n=8;break}if(x=s.credential_id,x){e.n=8;break}return t.$message.warning(t.$t("trading-assistant.validation.credentialRequired")),t.saving=!1,e.a(2);case 8:if(k={channels:s.notify_channels||[],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},k.channels&&0!==k.channels.length){e.n=9;break}return t.$message.warning(t.$t("trading-assistant.validation.notifyChannelRequired")),t.saving=!1,e.a(2);case 9:if(C=String(s.indicator_id),S=t.availableIndicators.find(function(t){return String(t.id)===C}),S){e.n=10;break}return t.$message.error(t.$t("trading-assistant.validation.indicatorRequired")),t.saving=!1,e.a(2);case 10:if(w=!!t.aiFilterEnabledUi,$="futures"===s.market_type?"swap":s.market_type||"swap",A=s.leverage||1,T=s.trade_direction||"long","spot"===$?(A=1,T="long",t.$message.info(t.$t("trading-assistant.messages.spotLimitations"))):(A<1&&(A=1),A>125&&(A=125)),P={strategy_name:s.strategy_name,market_category:t.selectedMarketCategory||"Crypto",execution_mode:s.execution_mode||"signal",notification_config:k,indicator_config:{indicator_id:S.id,indicator_name:S.name,indicator_code:S.code||""},exchange_config:b?t.isIBKRMarket?{exchange_id:s.broker_id||t.currentBrokerId||"ibkr",ibkr_host:s.ibkr_host||"127.0.0.1",ibkr_port:s.ibkr_port||7497,ibkr_client_id:s.ibkr_client_id||1,ibkr_account:s.ibkr_account||""}:t.isMT5Market?{exchange_id:s.forex_broker_id||t.currentBrokerId||"mt5",mt5_server:s.mt5_server||"",mt5_login:s.mt5_login||"",mt5_password:s.mt5_password||"",mt5_terminal_path:s.mt5_terminal_path||""}:{credential_id:s.credential_id,exchange_id:t.currentExchangeId||void 0}:void 0,trading_config:{initial_capital:s.initial_capital,leverage:A,trade_direction:T,timeframe:s.timeframe,market_type:$,margin_mode:"cross",signal_mode:"confirmed",take_profit_pct:s.take_profit_pct||0,stop_loss_pct:s.stop_loss_pct||0,trailing_enabled:!!s.trailing_enabled,trailing_stop_pct:s.trailing_stop_pct||0,trailing_activation_pct:s.trailing_activation_pct||0,trend_add_enabled:!!s.trend_add_enabled,trend_add_step_pct:s.trend_add_step_pct||0,trend_add_size_pct:s.trend_add_size_pct||0,trend_add_max_times:s.trend_add_max_times||0,dca_add_enabled:!!s.dca_add_enabled,dca_add_step_pct:s.dca_add_step_pct||0,dca_add_size_pct:s.dca_add_size_pct||0,dca_add_max_times:s.dca_add_max_times||0,trend_reduce_enabled:!!s.trend_reduce_enabled,trend_reduce_step_pct:s.trend_reduce_step_pct||0,trend_reduce_size_pct:s.trend_reduce_size_pct||0,trend_reduce_max_times:s.trend_reduce_max_times||0,adverse_reduce_enabled:!!s.adverse_reduce_enabled,adverse_reduce_step_pct:s.adverse_reduce_step_pct||0,adverse_reduce_size_pct:s.adverse_reduce_size_pct||0,adverse_reduce_max_times:s.adverse_reduce_max_times||0,entry_pct:0===s.entry_pct||s.entry_pct?s.entry_pct:100,commission:s.commission||0,slippage:s.slippage||0,enable_ai_filter:w,indicator_params:t.indicatorParamValues,strategy_type:s.cs_strategy_type||"single",symbol_list:"cross_sectional"===s.cs_strategy_type?t.crossSectionalSymbols:void 0,portfolio_size:"cross_sectional"===s.cs_strategy_type?s.portfolio_size||10:void 0,long_ratio:"cross_sectional"===s.cs_strategy_type?s.long_ratio||.5:void 0,rebalance_frequency:"cross_sectional"===s.cs_strategy_type?s.rebalance_frequency||"daily":void 0}},!t.editingStrategy){e.n=12;break}return F=s.symbol,"string"===typeof F&&F.includes(":")&&(I=F.indexOf(":"),P.market_category=F.slice(0,I)||P.market_category,F=F.slice(I+1)),P.trading_config.symbol=F,e.n=11,(0,p.P7)(t.editingStrategy.id,P);case 11:M=e.v,e.n=16;break;case 12:if(P.user_id=1,P.strategy_type="IndicatorStrategy","cross_sectional"!==s.cs_strategy_type){e.n=14;break}return P.strategy_type="IndicatorStrategy",P.trading_config.symbol=null,e.n=13,(0,p.WM)(P);case 13:M=e.v,e.n=16;break;case 14:return P.symbols=t.selectedSymbols,e.n=15,(0,p.Ox)(P);case 15:M=e.v;case 16:1===M.code?(t.isEditMode?t.$message.success(t.$t("trading-assistant.messages.updateSuccess")):(D=s.cs_strategy_type||"single",V="cross_sectional"===D?t.crossSectionalSymbols.length:t.selectedSymbols.length,E=(null===(N=M.data)||void 0===N?void 0:N.total_created)||V,t.$message.success(t.$t("trading-assistant.messages.batchCreateSuccess",{count:E}))),t.handleRefresh()):t.$message.error(M.msg||(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"))),e.n=18;break;case 17:e.p=17,e.v,t.$message.error(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"));case 18:return e.p=18,t.saving=!1,e.f(18);case 19:return e.a(2)}},e,null,[[1,17,18,19]])}));return function(t,a){return e.apply(this,arguments)}}());case 2:return e.a(2)}},e)}))()},getFormValues:function(){var t=this;return new Promise(function(e,a){t.form.validateFields(function(t,s){t?a(t):e(s)})})},getDropdownContainer:function(t){return document.body}}},Rt=Et,zt=(0,F.A)(Rt,s,i,!1,null,"7a5d79cc",null),Lt=zt.exports},84841:function(t,e,a){a.d(e,{DK:function(){return v},E$:function(){return d},Gl:function(){return m},O0:function(){return c},TK:function(){return n},aU:function(){return i},cw:function(){return l},d$:function(){return x},hG:function(){return o},hl:function(){return g},kg:function(){return r},nY:function(){return f},r7:function(){return u},rx:function(){return _},v9:function(){return h},vF:function(){return p},vi:function(){return b},wq:function(){return y}});var s=a(75769);function i(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function c(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function d(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function p(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function m(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function g(){return(0,s.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function h(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function _(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function y(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function f(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function v(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function b(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function x(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/230.1c4c46a6.js b/frontend/dist/js/230.1c4c46a6.js deleted file mode 100644 index ae90589..0000000 --- a/frontend/dist/js/230.1c4c46a6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[230],{90230:function(t,e,a){a.r(e),a.d(e,{default:function(){return Mt}});a(74423);var s=function(){var t,e=this,a=e._self._c;return a("div",{staticClass:"trading-assistant",class:{"theme-dark":e.isDarkTheme}},[e.showAssistantGuide?a("div",{staticClass:"assistant-guide-bar"},[a("div",{staticClass:"assistant-guide-copy"},[a("div",{staticClass:"assistant-guide-eyebrow"},[e._v(e._s(e.$t("trading-assistant.guide.eyebrow")))]),a("div",{staticClass:"assistant-guide-title"},[e._v(e._s(e.$t("trading-assistant.guide.title")))]),a("div",{staticClass:"assistant-guide-desc"},[e._v(e._s(e.$t("trading-assistant.guide.desc")))])]),a("div",{staticClass:"assistant-guide-steps"},[a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("1")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step1Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step1Desc")))])])]),a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("2")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step2Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step2Desc")))])])]),a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("3")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step3Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step3Desc")))])])])]),a("div",{staticClass:"assistant-guide-actions"},[a("a-button",{on:{click:e.goToStrategyTab}},[a("a-icon",{attrs:{type:"appstore"}}),e._v(" "+e._s(e.$t("trading-assistant.guide.secondary"))+" ")],1),a("a-button",{attrs:{type:"primary"},on:{click:e.openCreateStrategyFromGuide}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.guide.primary"))+" ")],1),a("a-button",{staticClass:"assistant-guide-close",on:{click:e.dismissAssistantGuide}},[a("a-icon",{attrs:{type:"close"}})],1)],1)]):e._e(),a("a-tabs",{staticClass:"top-level-tabs",attrs:{animated:!1},model:{value:e.topTab,callback:function(t){e.topTab=t},expression:"topTab"}},[a("a-tab-pane",{key:"overview",attrs:{tab:e.$t("trading-assistant.tabs.overview")}},["overview"===e.topTab?a("dashboard-overview",{attrs:{"hide-setup-guide":!0}}):e._e()],1),a("a-tab-pane",{key:"strategy",attrs:{tab:e.$t("trading-assistant.tabs.strategyManage")}},[a("a-row",{staticClass:"strategy-layout",attrs:{gutter:24}},[a("a-col",{staticClass:"strategy-list-col",attrs:{xs:24,sm:24,md:10,lg:8,xl:8}},[a("a-card",{staticClass:"strategy-list-card",attrs:{bordered:!1}},[a("div",{staticClass:"card-title",attrs:{slot:"title"},slot:"title"},[a("span",[e._v(e._s(e.$t("trading-assistant.strategyList")))]),a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1),a("div",{staticClass:"group-mode-switch"},[a("span",{staticClass:"group-mode-label"},[e._v(e._s(e.$t("trading-assistant.groupBy"))+":")]),a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.groupByMode,callback:function(t){e.groupByMode=t},expression:"groupByMode"}},[a("a-radio-button",{attrs:{value:"strategy"}},[a("a-icon",{attrs:{type:"folder"}}),e._v(" "+e._s(e.$t("trading-assistant.groupByStrategy"))+" ")],1),a("a-radio-button",{attrs:{value:"symbol"}},[a("a-icon",{attrs:{type:"stock"}}),e._v(" "+e._s(e.$t("trading-assistant.groupBySymbol"))+" ")],1)],1)],1),a("a-spin",{attrs:{spinning:e.loading}},[e.loading||0!==e.strategies.length?a("div",{staticClass:"strategy-grouped-list"},[e._l(e.groupedStrategies.groups,function(t){return a("div",{key:t.id,staticClass:"strategy-group"},[a("div",{staticClass:"strategy-group-header",on:{click:function(a){return e.toggleGroup(t.id)}}},[a("div",{staticClass:"group-header-left"},[a("a-icon",{staticClass:"collapse-icon",attrs:{type:e.collapsedGroups[t.id]?"right":"down"}}),a("a-icon",{staticClass:"group-icon",attrs:{type:"symbol"===e.groupByMode?"stock":"folder"}}),a("span",{staticClass:"group-name"},[e._v(e._s(t.baseName))]),a("a-tag",{attrs:{size:"small",color:"blue"}},[e._v(e._s(t.strategies.length)+" "+e._s("symbol"===e.groupByMode?e.$t("trading-assistant.strategyCount"):e.$t("trading-assistant.symbolCount")))])],1),a("div",{staticClass:"group-header-right",on:{click:function(t){t.stopPropagation()}}},[t.runningCount>0?a("span",{staticClass:"group-status running"},[e._v(" "+e._s(t.runningCount)+" "+e._s(e.$t("trading-assistant.status.running"))+" ")]):e._e(),t.stoppedCount>0?a("span",{staticClass:"group-status stopped"},[e._v(" "+e._s(t.stoppedCount)+" "+e._s(e.$t("trading-assistant.status.stopped"))+" ")]):e._e(),a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleGroupMenuClick(s,t)}},slot:"overlay"},[a("a-menu-item",{key:"startAll"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startAll"))+" ")],1),a("a-menu-item",{key:"stopAll"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopAll"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"deleteAll",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteAll"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)]),a("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsedGroups[t.id],expression:"!collapsedGroups[group.id]"}],staticClass:"strategy-group-content"},e._l(t.strategies,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id},{"strategy-list-item--strategy-group":"strategy"===e.groupByMode}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{class:["strategy-name-wrapper",{"strategy-name-wrapper--grouped":"symbol"===e.groupByMode}]},["strategy"===e.groupByMode?[a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e(),"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e()]:[a("span",{staticClass:"info-item strategy-name-text"},[a("a-icon",{attrs:{type:"thunderbolt"}}),e._v(" "+e._s(t.displayInfo?t.displayInfo.strategyName:t.strategy_name)+" ")],1),t.displayInfo&&t.displayInfo.timeframe?a("a-tag",{attrs:{size:"small",color:"cyan"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.displayInfo.timeframe)+" ")],1):e._e(),t.displayInfo&&t.displayInfo.indicatorName&&"-"!==t.displayInfo.indicatorName?a("a-tag",{attrs:{size:"small",color:"purple"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"line-chart"}}),e._v(" "+e._s(t.displayInfo.indicatorName)+" ")],1):e._e(),"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e()]],2)]),a("div",{staticClass:"strategy-item-info"},["strategy"===e.groupByMode?[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),t.exchange_config&&t.exchange_config.exchange_id?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),t.trading_config&&t.trading_config.timeframe?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.trading_config.timeframe)+" ")],1):e._e()]:e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])],2)]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleMenuClick(s,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-item",{key:"backtest"},[a("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("dashboard.indicator.action.backtest"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])}),0)])}),e._l(e.groupedStrategies.ungrouped,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},[t.exchange_config&&t.exchange_config.exchange_id?a("a-tag",{staticClass:"exchange-tag",attrs:{color:e.getExchangeTagColor(t.exchange_config.exchange_id),size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e()],1)]),a("div",{staticClass:"strategy-item-info"},[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleMenuClick(s,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-item",{key:"backtest"},[a("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("dashboard.indicator.action.backtest"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])})],2):a("div",{staticClass:"strategy-empty-state"},[a("a-empty",{attrs:{description:e.$t("trading-assistant.empty.title")}}),a("div",{staticClass:"strategy-empty-desc"},[e._v(e._s(e.$t("trading-assistant.empty.desc")))]),a("a-button",{attrs:{type:"primary"},on:{click:e.openCreateStrategyFromGuide}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.empty.primary"))+" ")],1)],1)])],1)],1),a("a-col",{staticClass:"strategy-detail-col",attrs:{xs:24,sm:24,md:14,lg:16,xl:16}},[e.selectedStrategy?a("div",{staticClass:"strategy-detail-panel"},[a("a-card",{staticClass:"strategy-header-card",attrs:{bordered:!1}},[a("div",{staticClass:"strategy-header"},[a("div",{staticClass:"header-left"},[a("div",{staticClass:"strategy-title-row"},[a("h3",{staticClass:"strategy-title"},[e._v(e._s(e.selectedStrategy.strategy_name))]),a("div",{staticClass:"status-badge",class:["status-".concat(e.selectedStrategy.status)]},[a("span",{staticClass:"status-dot"}),e._v(" "+e._s(e.getStatusText(e.selectedStrategy.status))+" ")])]),a("div",{staticClass:"key-stats-grid"},[e.selectedStrategy.initial_capital||e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.initial_capital?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon investment"},[a("a-icon",{attrs:{type:"wallet"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalInvestment")))]),a("div",{staticClass:"stat-value"},[e._v("$"+e._s(parseFloat(e.selectedStrategy.initial_capital||(null===(t=e.selectedStrategy.trading_config)||void 0===t?void 0:t.initial_capital)||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})))])])]):e._e(),null!==e.currentEquity?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon equity"},[a("a-icon",{attrs:{type:"fund"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.currentEquity")))]),a("div",{staticClass:"stat-value",class:e.getEquityColorClass},[e._v(e._s(e.formatCurrency(e.currentEquity)))])])]):e._e(),null!==e.totalPnl?a("div",{staticClass:"stat-card pnl-card",class:{profit:e.totalPnl>0,loss:e.totalPnl<0}},[a("div",{staticClass:"stat-icon pnl"},[a("a-icon",{attrs:{type:e.totalPnl>=0?"rise":"fall"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalPnl")))]),a("div",{staticClass:"stat-value",class:e.getPnlColorClass},[e._v(" "+e._s(e.formatPnl(e.totalPnl))+" "),a("span",{staticClass:"pnl-percent"},[e._v("("+e._s(e.formatPnlPercent(e.totalPnlPercent))+")")])])])]):e._e()]),a("div",{staticClass:"strategy-tags"},[e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"stock"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.symbol))])],1):e._e(),e.selectedStrategy.indicator_config&&e.selectedStrategy.indicator_config.indicator_name?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"line-chart"}}),a("span",[e._v(e._s(e.selectedStrategy.indicator_config.indicator_name))])],1):e._e(),e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"thunderbolt"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.leverage||1)+"x")])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.trade_direction?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"swap"}}),a("span",[e._v(e._s(e.getTradeDirectionText(e.selectedStrategy.trading_config.trade_direction)))])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.timeframe?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.timeframe))])],1):e._e()])]),a("div",{staticClass:"header-right"},["stopped"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn start-btn",attrs:{type:"primary",size:"large"},on:{click:function(t){return e.handleStartStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn stop-btn",attrs:{type:"danger",size:"large"},on:{click:function(t){return e.handleStopStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e()],1)])]),a("a-card",{staticClass:"strategy-content-card",attrs:{bordered:!1}},[a("a-tabs",{attrs:{defaultActiveKey:"positions"}},[a("a-tab-pane",{key:"positions",attrs:{tab:e.$t("trading-assistant.tabs.positions")}},[a("position-records",{attrs:{"strategy-id":e.selectedStrategy.id,"market-type":e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.market_type||"swap",leverage:e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.leverage||1,loading:e.loadingRecords,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"trades",attrs:{tab:e.$t("trading-assistant.tabs.tradingRecords")}},[a("trading-records",{attrs:{"strategy-id":e.selectedStrategy.id,loading:e.loadingRecords,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"performance",attrs:{tab:e.$t("trading-assistant.tabs.performance")}},[a("performance-analysis",{attrs:{"strategy-id":e.selectedStrategy.id,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"logs",attrs:{tab:e.$t("trading-assistant.tabs.logs")}},[a("strategy-logs",{attrs:{"strategy-id":e.selectedStrategy.id,"is-dark":e.isDarkTheme}})],1)],1)],1)],1):a("div",{staticClass:"strategy-empty-detail"},[a("div",{staticClass:"strategy-empty-detail-card"},[a("div",{staticClass:"strategy-empty-detail-icon"},[a("a-icon",{attrs:{type:"deployment-unit"}})],1),a("h3",{staticClass:"strategy-empty-detail-title"},[e._v(e._s(e.$t("trading-assistant.emptyDetail.title")))]),a("p",{staticClass:"strategy-empty-detail-hint"},[e._v(e._s(e.$t("trading-assistant.emptyDetail.hint")))]),a("div",{staticClass:"strategy-empty-detail-actions"},[a("a-button",{attrs:{type:"primary"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1)])])])],1),a("a-modal",{staticClass:"mode-selector-modal",attrs:{visible:e.showModeSelector,title:e.$t("trading-assistant.selectMode"),width:e.isMobile?"95%":700,footer:null,maskClosable:!0,bodyStyle:{padding:"16px 24px"}},on:{cancel:function(t){e.showModeSelector=!1}}},[a("strategy-type-selector",{attrs:{selected:e.strategyMode,"is-dark":e.isDarkTheme},on:{select:e.handleModeSelect,"use-template":e.handleUseTemplate}})],1),a("a-modal",{attrs:{visible:e.showFormModal,title:e.editingStrategy?e.$t("trading-assistant.editStrategy"):e.$t("trading-assistant.createStrategy")+("script"===e.strategyMode?" - "+e.$t("trading-assistant.strategyMode.script"):""),width:e.isMobile?"95%":1120,confirmLoading:e.saving,maskClosable:!1,wrapClassName:e.strategyFormWrapClass,bodyStyle:{maxHeight:"76vh",overflowY:"auto",paddingBottom:"8px"}},on:{ok:e.handleSubmit,cancel:e.handleCloseModal}},[a("a-spin",{attrs:{spinning:e.loadingIndicators}},[e.editingStrategy||"script"===e.strategyMode?e._e():a("div",{staticClass:"creation-mode-toggle"},[a("div",{staticClass:"mode-meta"},[a("div",{staticClass:"mode-title"},[e._v(e._s(e.$t("trading-assistant.selectMode")))]),a("div",{staticClass:"mode-hint"},[e._v(e._s(e.isSimpleMode?e.$t("trading-assistant.form.simpleModeHint"):e.$t("trading-assistant.form.advancedModeHint")))])]),a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.creationMode,callback:function(t){e.creationMode=t},expression:"creationMode"}},[a("a-radio-button",{attrs:{value:"simple"}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.form.simpleMode"))+" ")],1),a("a-radio-button",{attrs:{value:"advanced"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.advancedMode"))+" ")],1)],1)],1),a("a-steps",{staticClass:"steps-container",attrs:{current:e.displayCurrentStep}},["script"===e.strategyMode?[a("a-step",{attrs:{title:e.$t("trading-assistant.form.simpleStep1")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.editor.title")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.form.step3Signal")}})]:[a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep1"):e.$t("trading-assistant.form.step1")}}),e.isAdvancedMode||e.editingStrategy?a("a-step",{attrs:{title:e.$t("trading-assistant.form.step2Params")}}):e._e(),a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep2"):e.$t("trading-assistant.form.step3Signal")}})]],2),a("div",{staticClass:"form-container"},[a("div",{directives:[{name:"show",rawName:"v-show",value:0===e.currentStep,expression:"currentStep === 0"}],staticClass:"step-content"},["indicator"===e.strategyType&&"script"!==e.strategyMode?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicator")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["indicator_id",{rules:[{required:!0,message:e.$t("trading-assistant.validation.indicatorRequired")}]}],expression:"['indicator_id', { rules: [{ required: true, message: $t('trading-assistant.validation.indicatorRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectIndicator"),"show-search":"",optionLabelProp:"label","filter-option":e.filterIndicatorOption,loading:e.loadingIndicators,getPopupContainer:function(t){return t.parentNode}},on:{focus:e.handleIndicatorSelectFocus,change:e.handleIndicatorChange}},e._l(e.availableIndicators,function(t){return a("a-select-option",{key:String(t.id),attrs:{value:String(t.id),label:e.getIndicatorOptionLabel(t)}},[a("div",{staticClass:"indicator-option"},[a("div",{staticClass:"indicator-option-main"},[a("span",{staticClass:"indicator-name"},[e._v(e._s(t.name))]),t.description?a("span",{staticClass:"indicator-option-desc"},[e._v(e._s(t.description))]):e._e()]),t.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(t.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(t.type))+" ")]):e._e()],1)])}),1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorHint"))+" ")]),e.loadingIndicators||e.availableIndicators&&0!==e.availableIndicators.length?e._e():a("a-alert",{staticStyle:{"margin-top":"12px"},attrs:{type:"info","show-icon":"",message:e.$t("trading-assistant.indicatorEmpty.title"),description:e.$t("trading-assistant.indicatorEmpty.desc")}},[a("template",{slot:"action"},[a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.goToIndicatorAnalysisCreate}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.indicatorEmpty.cta"))+" ")],1)],1)],2)],1),e.selectedIndicator?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorDescription")}},[a("div",{staticClass:"selected-indicator-card"},[a("div",{staticClass:"selected-indicator-header"},[a("span",{staticClass:"selected-indicator-name"},[e._v(e._s(e.selectedIndicator.name))]),e.selectedIndicator.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(e.selectedIndicator.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(e.selectedIndicator.type))+" ")]):e._e()],1),a("div",{staticClass:"indicator-description"},[e._v(" "+e._s(e.selectedIndicator.description||e.$t("trading-assistant.form.noDescription"))+" ")])])]):e._e(),e.indicatorParams.length>0?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorParams")}},[a("div",{staticClass:"indicator-params-form"},[a("a-row",{attrs:{gutter:16}},e._l(e.indicatorParams,function(t){return a("a-col",{key:t.name,attrs:{xs:24,sm:12,md:8}},[a("div",{staticClass:"param-item"},[a("label",{staticClass:"param-label"},[e._v(" "+e._s(t.name)+" "),t.description?a("a-tooltip",{attrs:{title:t.description}},[a("a-icon",{staticStyle:{"margin-left":"4px",color:"#999"},attrs:{type:"question-circle"}})],1):e._e()],1),"int"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"float"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"bool"===t.type?a("a-switch",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):a("a-input",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}})],1)])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"8px"}},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorParamsHint"))+" ")])],1)]):e._e(),a("a-divider"),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyNameHint"))+" ")])],1),e.isSimpleMode&&!e.editingStrategy?a("div",{staticClass:"simple-essentials-card"},[a("div",{staticClass:"simple-mode-hero"},[a("div",{staticClass:"simple-mode-hero-main"},[a("div",{staticClass:"simple-mode-kicker"},[e._v(e._s(e.$t("trading-assistant.form.simpleModePreset")))]),a("div",{staticClass:"simple-mode-hero-desc"},[e._v(e._s(e.$t("trading-assistant.form.simpleModePresetValue")))])]),a("div",{staticClass:"simple-mode-badges"},[a("a-tag",[e._v("15m")]),a("a-tag",{attrs:{color:"blue"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-tag",{attrs:{color:"purple"}},[e._v("5x")])],1)]),a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.simpleModeSectionCore")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.simpleModeSectionCoreDesc")))])]),a("a-form-item",{staticClass:"compact-form-item"},[a("span",{staticClass:"required-label",attrs:{slot:"label"},slot:"label"},[a("span",{staticClass:"required-star"},[e._v("*")]),e._v(e._s(e.$t("trading-assistant.form.symbol"))+" ")]),a("a-select",{attrs:{value:e.selectedSymbols[0],placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,"allow-clear":"",getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleSimpleSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolHintCrypto"))+" ")])],1),a("a-row",{staticClass:"compact-grid-row",attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.leverage")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}})],1)],1)],1),a("a-row",{staticClass:"compact-grid-row",attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1)],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1):e._e(),e.isAdvancedMode||e.editingStrategy?a("div",{staticClass:"advanced-settings-shell"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.advancedMode")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.advancedModeHint")))])]),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["cs_strategy_type",{initialValue:"single"}],expression:"['cs_strategy_type', { initialValue: 'single' }]"}],on:{change:e.handleStrategyTypeChange}},[a("a-radio",{attrs:{value:"single"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeSingle")))]),a("a-radio",{attrs:{value:"cross_sectional"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeCrossSectional")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyTypeHint"))+" ")])],1)],1):e._e(),(e.isAdvancedMode||e.editingStrategy)&&"cross_sectional"===e.form.getFieldValue("cs_strategy_type")?[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbolList")}},[a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:5},on:{change:e.handleCrossSectionalSymbolChange},model:{value:e.crossSectionalSymbols,callback:function(t){e.crossSectionalSymbols=t},expression:"crossSectionalSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolListHint"))+" ")])],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.portfolioSize")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["portfolio_size",{initialValue:10,rules:[{required:!0,message:e.$t("trading-assistant.validation.portfolioSizeRequired")}]}],expression:"['portfolio_size', { initialValue: 10, rules: [{ required: true, message: $t('trading-assistant.validation.portfolioSizeRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:100,step:1}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.portfolioSizeHint"))+" ")])],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.longRatio")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["long_ratio",{initialValue:.5,rules:[{required:!0,message:e.$t("trading-assistant.validation.longRatioRequired")}]}],expression:"['long_ratio', { initialValue: 0.5, rules: [{ required: true, message: $t('trading-assistant.validation.longRatioRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:1,step:.1,precision:2}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.longRatioHint"))+" ")])],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.rebalanceFrequency")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["rebalance_frequency",{initialValue:"daily"}],expression:"['rebalance_frequency', { initialValue: 'daily' }]"}],staticStyle:{width:"100%"}},[a("a-select-option",{attrs:{value:"daily"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceDaily")))]),a("a-select-option",{attrs:{value:"weekly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceWeekly")))]),a("a-select-option",{attrs:{value:"monthly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceMonthly")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.rebalanceFrequencyHint"))+" ")])],1)]:e._e(),(e.isAdvancedMode||e.editingStrategy)&&"cross_sectional"!==e.form.getFieldValue("cs_strategy_type")?a("a-form-item",{attrs:{label:e.isEditMode?e.$t("trading-assistant.form.symbol"):e.$t("trading-assistant.form.symbols")}},[e.isEditMode?a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2):a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:3},on:{change:e.handleMultiSymbolChangeWithAdd},model:{value:e.selectedSymbols,callback:function(t){e.selectedSymbols=t},expression:"selectedSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.isEditMode?e.$t("trading-assistant.form.symbolHintCrypto"):e.$t("trading-assistant.form.symbolsHint"))+" ")])],1):e._e(),e.isAdvancedMode||e.editingStrategy?a("div",[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.marketTypeHint"))+" ")])],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}}),a("div",{staticClass:"form-item-hint"},["spot"===e.form.getFieldValue("market_type")?a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.spotLeverageFixed"))+" ")]):a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.leverageHint"))+" ")])])],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1),"spot"===e.form.getFieldValue("market_type")?a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.spotOnlyLongHint"))+" ")]):e._e()],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}})],1)],1):e._e()],2)],1):e._e(),"script"===e.strategyMode?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}})],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbol")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{initialValue:1e3,rules:[{required:!0}]}],expression:"['initial_capital', { initialValue: 1000, rules: [{ required: true }] }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}]},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5}],expression:"['leverage', { initialValue: 5 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:125,step:1}})],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"both"}],expression:"['trade_direction', { initialValue: 'both' }]"}],attrs:{getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-select-option",{attrs:{value:"short"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionShort")))]),a("a-select-option",{attrs:{value:"both"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionBoth")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.commission")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["commission",{initialValue:.05}],expression:"['commission', { initialValue: 0.05 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.slippage")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["slippage",{initialValue:0}],expression:"['slippage', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1)],1)],1)],1):e._e()]),"script"===e.strategyMode?a("div",{directives:[{name:"show",rawName:"v-show",value:1===e.currentStep,expression:"currentStep === 1"}],staticClass:"step-content"},[a("strategy-editor",{ref:"strategyEditor",attrs:{"is-dark":e.isDarkTheme,"user-id":1,visible:e.showFormModal&&"script"===e.strategyMode&&1===e.currentStep,"initial-template-key":e.pendingScriptTemplateKey},model:{value:e.strategyCode,callback:function(t){e.strategyCode=t},expression:"strategyCode"}})],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:"script"!==e.strategyMode&&1===e.currentStep,expression:"strategyMode !== 'script' && currentStep === 1"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-collapse",{staticClass:"strategy-params-collapse",attrs:{bordered:!1},model:{value:e.backtestCollapseKeys,callback:function(t){e.backtestCollapseKeys=t},expression:"backtestCollapseKeys"}},[a("a-collapse-panel",{key:"risk",attrs:{header:e.$t("dashboard.indicator.backtest.panel.risk")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.stopLossPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["stop_loss_pct",{initialValue:3}],expression:"['stop_loss_pct', { initialValue: 3 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.takeProfitPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["take_profit_pct",{initialValue:6}],expression:"['take_profit_pct', { initialValue: 6 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trailing_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrailingToggle}})],1)],1),a("a-col",{attrs:{span:12}})],1),e.trailingEnabledUi?[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingStopPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_stop_pct",{initialValue:0}],expression:"['trailing_stop_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingActivationPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_activation_pct",{initialValue:0}],expression:"['trailing_activation_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1)]:e._e()],2),a("a-collapse-panel",{key:"scale",attrs:{header:e.$t("dashboard.indicator.backtest.panel.scale")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrendAddToggle}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['dca_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onDcaAddToggle}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_step_pct",{initialValue:0}],expression:"['trend_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_step_pct",{initialValue:0}],expression:"['dca_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_size_pct",{initialValue:0}],expression:"['trend_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_size_pct",{initialValue:0}],expression:"['dca_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_max_times",{initialValue:0}],expression:"['trend_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_max_times",{initialValue:0}],expression:"['dca_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1)],1)],1),a("a-collapse-panel",{key:"reduce",attrs:{header:e.$t("dashboard.indicator.backtest.panel.reduce")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['adverse_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_step_pct",{initialValue:0}],expression:"['trend_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_step_pct",{initialValue:0}],expression:"['adverse_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_size_pct",{initialValue:0}],expression:"['trend_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_size_pct",{initialValue:0}],expression:"['adverse_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_max_times",{initialValue:0}],expression:"['trend_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_max_times",{initialValue:0}],expression:"['adverse_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1)],1)],1),a("a-collapse-panel",{key:"position",attrs:{header:e.$t("dashboard.indicator.backtest.panel.position")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.entryPct"),help:e.$t("dashboard.indicator.backtest.hint.entryPctMax",{maxPct:Number(e.entryPctMaxUi||0).toFixed(0)})}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_pct",{initialValue:100}],expression:"['entry_pct', { initialValue: 100 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:e.entryPctMaxUi,step:.1,precision:4},on:{change:e.onEntryPctChange}})],1)],1),a("a-col",{attrs:{span:12}})],1)],1)],1),a("div",{staticClass:"ai-filter-box"},[a("div",{staticClass:"ai-filter-header"},[a("div",{staticClass:"ai-filter-title"},[a("a-icon",{attrs:{type:"robot"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.enableAiFilter")))])],1),a("a-switch",{attrs:{checked:e.aiFilterEnabledUi},on:{change:e.onAiFilterToggle}})],1),a("div",{staticClass:"ai-filter-hint"},[e._v(e._s(e.$t("trading-assistant.form.enableAiFilterHint")))])])],1)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],staticClass:"step-content"},[a("a-form",{attrs:{form:e.form,layout:"vertical",autocomplete:"off"}},[a("div",{staticClass:"execution-step-layout"},[a("div",{staticClass:"execution-step-hero"},[a("div",{staticClass:"simple-mode-kicker"},[e._v(e._s(e.$t("trading-assistant.form.step2HeroTitle")))]),a("div",{staticClass:"execution-step-hero-desc"},[e._v(e._s(e.$t("trading-assistant.form.step2HeroDesc")))])]),a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.executionSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.executionSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.executionMode")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["execution_mode",{initialValue:"signal"}],expression:"['execution_mode', { initialValue: 'signal' }]"}],staticStyle:{display:"none"}}),a("div",{staticClass:"execution-mode-cards"},[a("div",{class:["execution-mode-card",{active:"signal"===e.executionModeUi}],on:{click:function(t){return e.setExecutionModeUi("signal")}}},[a("div",{staticClass:"execution-mode-card-icon signal"},[a("a-icon",{attrs:{type:"notification"}})],1),a("div",{staticClass:"execution-mode-card-body"},[a("div",{staticClass:"execution-mode-card-title"},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignal")))]),a("div",{staticClass:"execution-mode-card-desc"},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignalDesc")))])]),"signal"===e.executionModeUi?a("a-icon",{staticClass:"execution-mode-card-check",attrs:{type:"check-circle",theme:"filled"}}):e._e()],1),a("div",{class:["execution-mode-card","live-card",{active:"live"===e.executionModeUi,disabled:!e.canUseLiveTrading}],on:{click:function(t){e.canUseLiveTrading&&e.setExecutionModeUi("live")}}},[a("div",{staticClass:"execution-mode-card-icon live"},[a("a-icon",{attrs:{type:"thunderbolt"}})],1),a("div",{staticClass:"execution-mode-card-body"},[a("div",{staticClass:"execution-mode-card-title"},[e._v(e._s(e.$t("trading-assistant.form.executionModeLive")))]),a("div",{staticClass:"execution-mode-card-desc"},[e._v(" "+e._s(e.canUseLiveTrading?e.$t("trading-assistant.form.executionModeLiveDesc"):e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])]),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-icon",{staticClass:"execution-mode-card-check",attrs:{type:"check-circle",theme:"filled"}}):e._e()],1)]),e.canUseLiveTrading?e._e():a("div",{staticClass:"form-item-hint execution-warn-text"},[e._v(" "+e._s(e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.title"),description:e.$t("trading-assistant.liveDisclaimer.content")}}):e._e()],1),a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.notificationSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.notificationSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.notifyChannels")}},[a("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["notify_channels",{initialValue:["browser"]}],expression:"['notify_channels', { initialValue: ['browser'] }]"}],staticClass:"notify-channel-grid",on:{change:e.onNotifyChannelsChange}},[a("a-checkbox",{attrs:{value:"browser"}},[e._v(e._s(e.$t("trading-assistant.notify.browser")))]),a("a-checkbox",{attrs:{value:"email"}},[e._v(e._s(e.$t("trading-assistant.notify.email")))]),a("a-checkbox",{attrs:{value:"telegram"}},[e._v(e._s(e.$t("trading-assistant.notify.telegram")))]),a("a-checkbox",{attrs:{value:"discord"}},[e._v(e._s(e.$t("trading-assistant.notify.discord")))]),a("a-checkbox",{attrs:{value:"webhook"}},[e._v(e._s(e.$t("trading-assistant.notify.webhook")))]),a("a-checkbox",{attrs:{value:"phone"}},[e._v(e._s(e.$t("trading-assistant.notify.phone")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(e._s(e.$t("trading-assistant.form.notifyChannelsHint")))])],1),e.unconfiguredChannels.length>0?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationConfigMissing",{channels:e.unconfiguredChannels.join(", ")}))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,2930252607)}):e.notifyChannelsUi.length>0&&!e.notifyChannelsUi.includes("browser")||e.notifyChannelsUi.length>1?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"info",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationFromProfile"))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}])}):e._e()],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.liveConnectionSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.liveConnectionSectionDesc")))])]),a("a-alert",{staticClass:"section-inline-alert",staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning","show-icon":"",message:e.$t("trading-assistant.form.liveTradingConfigTitle"),description:e.$t("trading-assistant.form.liveTradingConfigHint")}}),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.savedCredential")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["credential_id",{rules:[{required:!0,message:e.$t("profile.exchange.noCredentialHint")}],getValueFromEvent:function(t){return t||void 0}}],expression:"['credential_id', {\n rules: [{ required: true, message: $t('profile.exchange.noCredentialHint') }],\n getValueFromEvent: (val) => val || undefined\n }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSavedCredential"),"allow-clear":"","show-search":"","option-filter-prop":"children",loading:e.loadingExchangeCredentials},on:{change:e.handleCredentialSelectChange}},e._l(e.filteredExchangeCredentials,function(t){return a("a-select-option",{key:t.id,attrs:{value:t.id}},[e._v(" "+e._s(e.formatCredentialLabel(t))+" ")])}),1),a("div",{staticClass:"form-item-hint ta-credential-actions",staticStyle:{"margin-top":"6px"}},[a("a-button",{staticClass:"ta-add-cred-btn",attrs:{type:"link",size:"small"},on:{click:function(t){e.showExchangeAccountModal=!0}}},[a("a-icon",{attrs:{type:"plus-circle"}}),e._v(" "+e._s(e.$t("quickTrade.addAccountInline"))+" ")],1),a("span",{staticClass:"ta-credential-actions-sep"},[e._v("·")]),a("router-link",{attrs:{to:"/profile?tab=exchange"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),e._v(e._s(e.$t("profile.exchange.goToManage"))+" ")],1)],1),"live"===e.executionModeUi&&e.canUseLiveTrading&&!e.loadingExchangeCredentials&&0===e.filteredExchangeCredentials.length?a("a-alert",{staticStyle:{"margin-top":"10px"},attrs:{type:"warning","show-icon":"",message:e.$t("trading-assistant.noCredentialForLive.title")}},[a("template",{slot:"description"},[a("span",[e._v(e._s(e.$t("trading-assistant.noCredentialForLive.desc")))]),a("a-button",{staticStyle:{"margin-left":"8px"},attrs:{type:"primary",size:"small"},on:{click:function(t){e.showExchangeAccountModal=!0}}},[e._v(" "+e._s(e.$t("quickTrade.addAccountInline"))+" ")])],1)],2):e._e()],1)],1):e._e()])])],1)])],1),a("template",{slot:"footer"},[a("a-button",{on:{click:e.handleCloseModal}},[e._v(e._s(e.$t("trading-assistant.form.cancel")))]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep>0,expression:"currentStep > 0"}],on:{click:e.handlePrev}},[e._v(" "+e._s(e.$t("trading-assistant.form.prev"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep<2,expression:"currentStep < 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleNext}},[e._v(" "+e._s(e.$t("trading-assistant.form.next"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.editingStrategy?e.$t("trading-assistant.form.confirmEdit"):e.$t("trading-assistant.form.confirmCreate"))+" ")])],1)],2),a("a-modal",{attrs:{title:e.$t("trading-assistant.form.addSymbolTitle"),visible:e.showAddSymbolModal,confirmLoading:e.addingSymbol,width:"600px",okText:e.$t("trading-assistant.form.confirmAdd"),cancelText:e.$t("trading-assistant.form.cancel"),maskClosable:!1,keyboard:!1},on:{ok:e.handleConfirmAddSymbol,cancel:e.handleCloseAddSymbolModal}},[a("div",{staticClass:"add-symbol-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:e.handleAddSymbolMarketChange},model:{value:e.addSymbolMarket,callback:function(t){e.addSymbolMarket=t},expression:"addSymbolMarket"}},e._l(e.addSymbolMarketTypes,function(t){return a("a-tab-pane",{key:t.value,attrs:{tab:e.$t(t.i18nKey||"dashboard.analysis.market.".concat(t.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:e.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:e.searchingSymbol,size:"large","allow-clear":""},on:{search:e.handleSearchSymbol,change:e.handleSymbolSearchInputChange},model:{value:e.addSymbolKeyword,callback:function(t){e.addSymbolKeyword=t},expression:"addSymbolKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),e.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.symbolSearchResults,loading:e.searchingSymbol,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,2801225082)})],1):e._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:e.loadingHotSymbols}},[e.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.hotSymbols,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,3959834868)}):a("a-empty",{attrs:{description:e.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),e.selectedAddSymbol?a("div",{staticClass:"selected-symbol-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#52c41a","margin-right":"4px"},attrs:{type:"check-circle"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.selectedSymbol"))+" ")],1),a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:e.getMarketColor(e.addSymbolMarket)}},[e._v(e._s(e.addSymbolMarket))]),a("span",{staticClass:"symbol-code"},[e._v(e._s(e.selectedAddSymbol.symbol))]),e.selectedAddSymbol.name?a("span",{staticClass:"symbol-name"},[e._v(e._s(e.selectedAddSymbol.name))]):e._e()],1)]):e._e()],1)])],1)],1),a("exchange-account-modal",{attrs:{visible:e.showExchangeAccountModal},on:{"update:visible":function(t){e.showExchangeAccountModal=t},success:e.handleExchangeAccountCreated}})],1)},i=[],r=a(15863),n=a(44735),o=a(81127),l=a(56252),c=a(2403),d=a(57532),u=a(76338),p=a(36911),m=a(35038),g=a(42430),h=a(84841),_=a(55434),y=a(75769),f=function(){var t=this,e=t._self._c;return e("div",{staticClass:"trading-records strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[0!==t.records.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.records,loading:t.loading,pagination:{pageSize:10},size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("a-tag",{attrs:{color:t.getTradeTypeColor(a)}},[t._v(" "+t._s(t.getTradeTypeText(a))+" ")])]}},{key:"price",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"amount",fn:function(e){return[t._v(" "+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"value",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(2))+" ")]}},{key:"profit",fn:function(a,s){return[e("span",{style:{color:a>0?"#52c41a":a<0?"#f5222d":"#666"}},[t._v(" "+t._s(t.formatProfit(a,s))+" ")])]}},{key:"commission",fn:function(e){return[t._v(" "+t._s(t.formatCommission(e))+" ")]}},{key:"time",fn:function(e,a){return[t._v(" "+t._s(t.formatTime(a.created_at||e))+" ")]}}])}):e("div",{staticClass:"empty-state strategy-tab-empty"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},v=[],b={name:"TradingRecords",props:{strategyId:{type:Number,required:!0},loading:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.time"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"time"}},{title:this.$t("dashboard.indicator.backtest.tradeType"),dataIndex:"type",key:"type",width:140,scopedSlots:{customRender:"type"}},{title:this.$t("trading-assistant.table.price"),dataIndex:"price",key:"price",width:120,scopedSlots:{customRender:"price"}},{title:this.$t("trading-assistant.table.amount"),dataIndex:"amount",key:"amount",width:120,scopedSlots:{customRender:"amount"}},{title:this.$t("trading-assistant.table.value"),dataIndex:"value",key:"value",width:120,scopedSlots:{customRender:"value"}},{title:this.$t("dashboard.indicator.backtest.profit"),dataIndex:"profit",key:"profit",width:120,scopedSlots:{customRender:"profit"}},{title:this.$t("trading-assistant.table.commission"),dataIndex:"commission",key:"commission",width:100,scopedSlots:{customRender:"commission"}}]}},data:function(){return{records:[]}},watch:{strategyId:{handler:function(t){t&&this.loadRecords()},immediate:!0}},methods:{loadRecords:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,p.tq)(t.strategyId);case 2:a=e.v,1===a.code?t.records=(a.data.trades||[]).map(function(t){return(0,u.A)((0,u.A)({},t),{},{time:t.created_at||t.time})}):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadTradesFailed")),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},formatTime:function(t){if(!t)return"--";try{var e;if("number"===typeof t){var a=t<1e12?1e3*t:t;e=new Date(a)}else{if("string"!==typeof t)return"--";if(/^\d+$/.test(t)){var s=parseInt(t,10),i=s<1e12?1e3*s:s;e=new Date(i)}else e=new Date(t)}if(isNaN(e.getTime()))return"--";var r=this.$i18n.locale||"zh-CN",n={"zh-CN":"zh-CN","zh-TW":"zh-TW","en-US":"en-US"};return e.toLocaleString(n[r]||"zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch(o){return"--"}},getTradeTypeColor:function(t){var e={buy:"green",sell:"red",liquidation:"orange",open_long:"green",add_long:"cyan",close_long:"orange",close_long_stop:"red",close_long_profit:"lime",open_short:"red",add_short:"magenta",close_short:"blue",close_short_stop:"red",close_short_profit:"cyan"};return e[t]||"default"},getTradeTypeText:function(t){var e={buy:this.$t("dashboard.indicator.backtest.buy"),sell:this.$t("dashboard.indicator.backtest.sell"),liquidation:this.$t("dashboard.indicator.backtest.liquidation"),open_long:this.$t("dashboard.indicator.backtest.openLong"),add_long:this.$t("dashboard.indicator.backtest.addLong"),close_long:this.$t("dashboard.indicator.backtest.closeLong"),close_long_stop:this.$t("dashboard.indicator.backtest.closeLongStop"),close_long_profit:this.$t("dashboard.indicator.backtest.closeLongProfit"),open_short:this.$t("dashboard.indicator.backtest.openShort"),add_short:this.$t("dashboard.indicator.backtest.addShort"),close_short:this.$t("dashboard.indicator.backtest.closeShort"),close_short_stop:this.$t("dashboard.indicator.backtest.closeShortStop"),close_short_profit:this.$t("dashboard.indicator.backtest.closeShortProfit")};return e[t]||t},formatMoney:function(t){if(null===t||void 0===t)return"--";var e=t>=0?"+":"-";return"".concat(e,"$").concat(Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}))},formatProfit:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),s=["open_long","open_short","add_long","add_short"];return 0===a&&e&&s.includes(e.type)?"--":Math.abs(a)<1e-6?e&&s.includes(e.type)?"--":"$0.00":this.formatMoney(a)},formatCommission:function(t){if(null===t||void 0===t)return"--";var e=parseFloat(t);return isNaN(e)||Math.abs(e)<1e-6?"--":"$".concat(e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6}))}}},x=b,C=a(845),k=(0,C.A)(x,f,v,!1,null,"bdf54cd6",null),S=k.exports,w=function(){var t=this,e=t._self._c;return e("div",{staticClass:"position-records strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[0!==t.positions.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.positions,loading:t.loading,pagination:!1,size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"symbol",fn:function(a,s){return[e("strong",[t._v(t._s(s.symbol||a))])]}},{key:"side",fn:function(a,s){return[e("a-tag",{attrs:{color:"long"===(s.side||a)?"green":"red"}},[t._v(" "+t._s("long"===(s.side||a)?t.$t("trading-assistant.table.long"):t.$t("trading-assistant.table.short"))+" ")])]}},{key:"entryPrice",fn:function(a,s){return[t.hasValidPrice(s.entry_price||a)?e("span",[t._v(" $"+t._s(parseFloat(s.entry_price||a).toFixed(4))+" ")]):e("span",[t._v("--")])]}},{key:"currentPrice",fn:function(e,a){return[t._v(" $"+t._s(parseFloat(a.current_price||e||0).toFixed(4))+" ")]}},{key:"size",fn:function(e,a){return[t._v(" "+t._s(parseFloat(a.size||e||0).toFixed(4))+" ")]}},{key:"unrealizedPnl",fn:function(a,s){return[e("span",{class:{profit:parseFloat(s.unrealized_pnl||a||0)>0,loss:parseFloat(s.unrealized_pnl||a||0)<0}},[t._v(" $"+t._s(parseFloat(s.unrealized_pnl||a||0).toFixed(2))+" ")])]}},{key:"pnlPercent",fn:function(a,s){return[e("span",{class:{profit:parseFloat(s.pnl_percent||a||0)>0,loss:parseFloat(s.pnl_percent||a||0)<0}},[t._v(" "+t._s(parseFloat(s.pnl_percent||a||0).toFixed(2))+"% ")])]}}])}):e("div",{staticClass:"empty-state strategy-tab-empty"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},$=[],A={name:"PositionRecords",props:{strategyId:{type:Number,required:!0},marketType:{type:String,default:"swap"},leverage:{type:[Number,String],default:1},loading:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},data:function(){return{positions:[]}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.symbol"),dataIndex:"symbol",key:"symbol",width:120,scopedSlots:{customRender:"symbol"}},{title:this.$t("trading-assistant.table.side"),dataIndex:"side",key:"side",width:80,scopedSlots:{customRender:"side"}},{title:this.$t("trading-assistant.table.size"),dataIndex:"size",key:"size",width:120,scopedSlots:{customRender:"size"}},{title:this.$t("trading-assistant.table.entryPrice"),dataIndex:"entry_price",key:"entry_price",width:120,scopedSlots:{customRender:"entryPrice"}},{title:this.$t("trading-assistant.table.currentPrice"),dataIndex:"current_price",key:"current_price",width:120,scopedSlots:{customRender:"currentPrice"}},{title:this.$t("trading-assistant.table.unrealizedPnl"),dataIndex:"unrealized_pnl",key:"unrealized_pnl",width:120,scopedSlots:{customRender:"unrealizedPnl"}},{title:this.$t("trading-assistant.table.pnlPercent"),dataIndex:"pnl_percent",key:"pnl_percent",width:100,scopedSlots:{customRender:"pnlPercent"}}]}},watch:{strategyId:{handler:function(t){t?(this.loadPositions(),this.startPolling()):this.stopPolling()},immediate:!0}},beforeDestroy:function(){this.stopPolling()},methods:{loadPositions:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,p.oK)(t.strategyId);case 2:a=e.v,1===a.code?(s=a.data.positions||[],t.positions=s.map(function(e,a){var s=String(t.marketType||"swap").toLowerCase(),i=parseFloat(t.leverage);(!isFinite(i)||i<=0)&&(i=1),"spot"===s&&(i=1);var r=parseFloat(e.entry_price||e.entryPrice||0),n=parseFloat(e.size||"0")||0,o=parseFloat(e.unrealized_pnl||e.unrealizedPnl||"0")||0,l=parseFloat(e.pnl_percent||e.pnlPercent||"0")||0;r>0&&n>0?l=o/(r*n)*100*i:"spot"!==s&&(l*=i);var c={id:e.id||a,symbol:e.symbol||"",side:e.side||"long",size:n>0?n.toString():"0",entry_price:r>0?r.toString():"0",current_price:e.current_price||e.currentPrice||"0",unrealized_pnl:e.unrealized_pnl||e.unrealizedPnl||"0",pnl_percent:l,updated_at:e.updated_at||e.updatedAt||""};return c})):t.positions=[],e.n=4;break;case 3:e.p=3,e.v,t.positions=[];case 4:return e.a(2)}},e,null,[[1,3]])}))()},hasValidPrice:function(t){var e=parseFloat(t);return Number.isFinite(e)&&e>0},startPolling:function(){var t=this;this.stopPolling(),this.pollingTimer=setInterval(function(){t.loadPositions()},5e3)},stopPolling:function(){this.pollingTimer&&(clearInterval(this.pollingTimer),this.pollingTimer=null)}}},T=A,P=(0,C.A)(T,w,$,!1,null,"6ba7d922",null),M=P.exports,I=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-type-selector",class:{"theme-dark":t.isDark}},[e("div",{staticClass:"selector-header"},[e("h3",[t._v(t._s(t.$t("trading-assistant.selectMode")))]),e("p",{staticClass:"selector-hint"},[t._v(t._s(t.$t("trading-assistant.selectModeHint")))])]),e("div",{staticClass:"mode-cards"},[e("div",{staticClass:"mode-card",class:{selected:"signal"===t.selected},on:{click:function(e){return t.$emit("select","signal")}}},[e("div",{staticClass:"card-icon signal-icon"},[e("a-icon",{attrs:{type:"line-chart"}})],1),e("div",{staticClass:"card-body"},[e("div",{staticClass:"card-badge-row"},[e("span",{staticClass:"card-badge"},[t._v(t._s(t.$t("trading-assistant.strategyMode.signalBadge")))])]),e("h4",[t._v(t._s(t.$t("trading-assistant.strategyMode.signal")))]),e("p",{staticClass:"card-desc"},[t._v(t._s(t.$t("trading-assistant.strategyMode.signalDesc")))]),e("ul",{staticClass:"card-features"},[e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature1")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature2")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature3")))],1)])]),e("a-button",{staticClass:"card-btn",attrs:{type:"primary",ghost:""},on:{click:function(e){return e.stopPropagation(),t.$emit("select","signal")}}},[t._v(" "+t._s(t.$t("trading-assistant.useThisMode"))+" ")])],1),e("div",{staticClass:"mode-card",class:{selected:"script"===t.selected},on:{click:function(e){return t.$emit("select","script")}}},[e("div",{staticClass:"card-icon script-icon"},[e("a-icon",{attrs:{type:"code"}})],1),e("div",{staticClass:"card-body"},[e("div",{staticClass:"card-badge-row"},[e("span",{staticClass:"card-badge card-badge--script"},[t._v(t._s(t.$t("trading-assistant.strategyMode.scriptBadge")))])]),e("h4",[t._v(t._s(t.$t("trading-assistant.strategyMode.script")))]),e("p",{staticClass:"card-desc"},[t._v(t._s(t.$t("trading-assistant.strategyMode.scriptDesc")))]),e("ul",{staticClass:"card-features"},[e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature1")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature2")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature3")))],1)])]),e("a-button",{staticClass:"card-btn",attrs:{type:"primary",ghost:""},on:{click:function(e){return e.stopPropagation(),t.$emit("select","script")}}},[t._v(" "+t._s(t.$t("trading-assistant.useThisMode"))+" ")])],1)]),e("div",{staticClass:"template-quick-start"},[e("a-divider",[e("span",{staticClass:"divider-text"},[t._v(t._s(t.$t("trading-assistant.fromTemplate")))])]),e("div",{staticClass:"template-tags"},t._l(t.templates,function(a){return e("a-tag",{key:a.key,staticClass:"template-tag",on:{click:function(e){return t.$emit("use-template",a.key)}}},[e("span",{staticClass:"tpl-icon"},[t._v(t._s(a.icon))]),t._v(" "+t._s(t.$t("trading-assistant.template.".concat(a.key)))+" ")])}),1)],1)])},F=[],N=[{key:"trendFollowing",icon:"📈",code:"\"\"\"\nTrend Following Strategy\nUses EMA crossover with dynamic stop-loss / take-profit.\n\"\"\"\n\ndef on_init(ctx):\n ctx.fast_period = ctx.param('fast_period', 12)\n ctx.slow_period = ctx.param('slow_period', 26)\n ctx.position_pct = ctx.param('position_pct', 0.95)\n ctx.stop_pct = ctx.param('stop_pct', 0.03)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.08)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.slow_period + 5)\n if len(bars) < ctx.slow_period:\n return\n\n closes = [b['close'] for b in bars]\n fast_ema = _ema(closes, ctx.fast_period)\n slow_ema = _ema(closes, ctx.slow_period)\n price = bar['close']\n\n if fast_ema > slow_ema and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BUY at {price:.2f}\")\n\n elif fast_ema < slow_ema and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"SELL at {price:.2f}\")\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct <= -ctx.stop_pct:\n ctx.close_position()\n ctx.log(f\"STOP LOSS at {price:.2f}\")\n elif pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.log(f\"TAKE PROFIT at {price:.2f}\")\n\ndef _ema(data, period):\n k = 2 / (period + 1)\n ema = data[0]\n for price in data[1:]:\n ema = price * k + ema * (1 - k)\n return ema\n",params:[{name:"fast_period",type:"integer",default:12,min:2,max:120,step:1},{name:"slow_period",type:"integer",default:26,min:5,max:240,step:1},{name:"position_pct",type:"percent",default:.95,min:.05,max:1,step:.01},{name:"stop_pct",type:"percent",default:.03,min:.001,max:.5,step:.001},{name:"take_profit_pct",type:"percent",default:.08,min:.001,max:1,step:.001}]},{key:"martingale",icon:"🔥",code:"\"\"\"\nMartingale Strategy\nDouble position on each loss, with max layer control.\n\"\"\"\n\ndef on_init(ctx):\n ctx.base_amount = ctx.param('base_amount', 100)\n ctx.max_layers = ctx.param('max_layers', 5)\n ctx.multiplier = ctx.param('multiplier', 2.0)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.02)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.04)\n ctx.cooldown_bars = ctx.param('cooldown_bars', 1)\n ctx.current_layer = 0\n ctx.cooldown = 0\n\ndef on_bar(ctx, bar):\n if ctx.cooldown > 0:\n ctx.cooldown -= 1\n return\n\n price = bar['close']\n if not ctx.position:\n amount = ctx.base_amount * (ctx.multiplier ** ctx.current_layer)\n if amount <= ctx.balance:\n qty = amount / price\n ctx.buy(price, qty)\n ctx.log(f\"Layer {ctx.current_layer}: BUY {qty:.4f} at {price:.2f}\")\n else:\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n\n if pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.current_layer = 0\n ctx.cooldown = ctx.cooldown_bars\n ctx.log(f\"TAKE PROFIT at {price:.2f}, reset layers\")\n\n elif pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.cooldown = ctx.cooldown_bars\n if ctx.current_layer < ctx.max_layers:\n ctx.current_layer += 1\n ctx.log(f\"LOSS, escalate to layer {ctx.current_layer}\")\n else:\n ctx.current_layer = 0\n ctx.log(\"Max layers reached, reset\")\n",params:[{name:"base_amount",type:"number",default:100,min:10,max:1e6,step:10},{name:"max_layers",type:"integer",default:5,min:1,max:20,step:1},{name:"multiplier",type:"number",default:2,min:1,max:5,step:.1},{name:"take_profit_pct",type:"percent",default:.02,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.04,min:.001,max:1,step:.001},{name:"cooldown_bars",type:"integer",default:1,min:0,max:500,step:1}]},{key:"grid",icon:"📐",code:"\"\"\"\nGrid Trading Strategy\nPlaces buy/sell orders at equal intervals within a price range.\n\"\"\"\n\ndef on_init(ctx):\n ctx.grid_upper = ctx.param('grid_upper', 70000)\n ctx.grid_lower = ctx.param('grid_lower', 60000)\n ctx.grid_levels = ctx.param('grid_levels', 10)\n ctx.order_amount = ctx.param('order_amount', 100)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.05)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.03)\n ctx.filled_grids = set()\n\n spacing = (ctx.grid_upper - ctx.grid_lower) / ctx.grid_levels\n ctx.grid_prices = [ctx.grid_lower + i * spacing for i in range(ctx.grid_levels + 1)]\n\ndef on_bar(ctx, bar):\n price = bar['close']\n if price < ctx.grid_lower or price > ctx.grid_upper:\n return\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct >= ctx.take_profit_pct or pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.filled_grids.clear()\n ctx.log(f\"Grid risk exit at {price:.2f}, pnl={pnl_pct:.2%}\")\n return\n\n for i, gp in enumerate(ctx.grid_prices[:-1]):\n upper_gp = ctx.grid_prices[i + 1]\n grid_id = f\"grid_{i}\"\n\n if price <= gp and grid_id not in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.buy(price, qty)\n ctx.filled_grids.add(grid_id)\n ctx.log(f\"Grid BUY at {price:.2f} (level {i})\")\n\n elif price >= upper_gp and grid_id in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.sell(price, qty)\n ctx.filled_grids.discard(grid_id)\n ctx.log(f\"Grid SELL at {price:.2f} (level {i})\")\n",params:[{name:"grid_upper",type:"number",default:7e4,min:1,max:1e8,step:10},{name:"grid_lower",type:"number",default:6e4,min:1,max:1e8,step:10},{name:"grid_levels",type:"integer",default:10,min:2,max:200,step:1},{name:"order_amount",type:"number",default:100,min:1,max:1e6,step:1},{name:"take_profit_pct",type:"percent",default:.05,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.03,min:.001,max:1,step:.001}]},{key:"dca",icon:"💰",code:"\"\"\"\nDCA (Dollar Cost Averaging) Strategy\nPeriodic purchases with optional dip-buying.\n\"\"\"\n\ndef on_init(ctx):\n ctx.buy_amount = ctx.param('buy_amount', 100)\n ctx.dip_threshold = ctx.param('dip_threshold', 0.05)\n ctx.dip_multiplier = ctx.param('dip_multiplier', 2.0)\n ctx.buy_interval = ctx.param('buy_interval', 24)\n ctx.max_orders = ctx.param('max_orders', 999)\n ctx.bar_count = 0\n ctx.order_count = 0\n ctx.last_buy_price = None\n\ndef on_bar(ctx, bar):\n ctx.bar_count += 1\n price = bar['close']\n\n if ctx.order_count >= ctx.max_orders:\n return\n\n is_dip = False\n if ctx.last_buy_price and price < ctx.last_buy_price * (1 - ctx.dip_threshold):\n is_dip = True\n\n if ctx.bar_count % ctx.buy_interval == 0 or is_dip:\n amount = ctx.buy_amount * (ctx.dip_multiplier if is_dip else 1.0)\n if amount <= ctx.balance:\n qty = amount / price\n ctx.buy(price, qty)\n ctx.last_buy_price = price\n ctx.order_count += 1\n tag = \" (DIP BUY)\" if is_dip else \"\"\n ctx.log(f\"DCA BUY {qty:.6f} at {price:.2f}{tag}\")\n",params:[{name:"buy_amount",type:"number",default:100,min:1,max:1e6,step:1},{name:"buy_interval",type:"integer",default:24,min:1,max:1e3,step:1},{name:"dip_threshold",type:"percent",default:.05,min:.001,max:1,step:.001},{name:"dip_multiplier",type:"number",default:2,min:1,max:10,step:.1},{name:"max_orders",type:"integer",default:999,min:1,max:9999,step:1}]},{key:"meanReversion",icon:"🔄",code:"\"\"\"\nMean Reversion Strategy\nBollinger Bands based: buy at lower band, sell at upper band.\n\"\"\"\n\ndef on_init(ctx):\n ctx.period = ctx.param('period', 20)\n ctx.std_mult = ctx.param('std_mult', 2.0)\n ctx.position_pct = ctx.param('position_pct', 0.5)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.03)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.02)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.period + 5)\n if len(bars) < ctx.period:\n return\n\n closes = [b['close'] for b in bars[-ctx.period:]]\n mean = sum(closes) / len(closes)\n std = (sum((c - mean) ** 2 for c in closes) / len(closes)) ** 0.5\n\n upper = mean + ctx.std_mult * std\n lower = mean - ctx.std_mult * std\n price = bar['close']\n\n if price <= lower and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BUY at {price:.2f} (below lower band {lower:.2f})\")\n\n elif price >= upper and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"SELL at {price:.2f} (above upper band {upper:.2f})\")\n\n elif ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct >= ctx.take_profit_pct or pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.log(f\"Risk exit at {price:.2f}, pnl={pnl_pct:.2%}\")\n",params:[{name:"period",type:"integer",default:20,min:2,max:300,step:1},{name:"std_mult",type:"number",default:2,min:.5,max:6,step:.1},{name:"position_pct",type:"percent",default:.5,min:.05,max:1,step:.01},{name:"take_profit_pct",type:"percent",default:.03,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.02,min:.001,max:1,step:.001}]},{key:"breakout",icon:"⚡",code:"\"\"\"\nBreakout Strategy\nEnter when price breaks key resistance/support with volume confirmation.\n\"\"\"\n\ndef on_init(ctx):\n ctx.lookback = ctx.param('lookback', 20)\n ctx.volume_mult = ctx.param('volume_mult', 1.5)\n ctx.position_pct = ctx.param('position_pct', 0.9)\n ctx.stop_pct = ctx.param('stop_pct', 0.02)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.05)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.lookback + 5)\n if len(bars) < ctx.lookback:\n return\n\n recent = bars[-ctx.lookback:]\n high = max(b['high'] for b in recent[:-1])\n low = min(b['low'] for b in recent[:-1])\n avg_vol = sum(b['volume'] for b in recent[:-1]) / (len(recent) - 1)\n price = bar['close']\n vol = bar['volume']\n\n if price > high and vol > avg_vol * ctx.volume_mult and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BREAKOUT BUY at {price:.2f} (prev high: {high:.2f})\")\n\n elif price < low and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"BREAK DOWN, close at {price:.2f}\")\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct <= -ctx.stop_pct:\n ctx.close_position()\n ctx.log(f\"STOP LOSS at {price:.2f}\")\n elif pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.log(f\"TAKE PROFIT at {price:.2f}\")\n",params:[{name:"lookback",type:"integer",default:20,min:2,max:300,step:1},{name:"volume_mult",type:"number",default:1.5,min:.5,max:10,step:.1},{name:"position_pct",type:"percent",default:.9,min:.05,max:1,step:.01},{name:"stop_pct",type:"percent",default:.02,min:.001,max:1,step:.001},{name:"take_profit_pct",type:"percent",default:.05,min:.001,max:1,step:.001}]},{key:"rsiMeanReversion",icon:"📉",code:"\"\"\"\nRSI mean reversion (long-focused)\nBuys when RSI is oversold; exits long when RSI is overbought.\n\"\"\"\n\ndef on_init(ctx):\n ctx.rsi_period = ctx.param('rsi_period', 14)\n ctx.oversold = ctx.param('oversold', 30)\n ctx.overbought = ctx.param('overbought', 70)\n ctx.position_pct = ctx.param('position_pct', 0.5)\n\ndef _rsi_simple(closes, period):\n n = len(closes)\n if n < period + 1:\n return None\n gains = 0.0\n losses = 0.0\n for i in range(n - period, n):\n diff = closes[i] - closes[i - 1]\n if diff > 0:\n gains += diff\n else:\n losses -= diff\n if losses == 0:\n return 100.0 if gains > 0 else 50.0\n rs = gains / losses\n return 100.0 - (100.0 / (1.0 + rs))\n\ndef on_bar(ctx, bar):\n need = ctx.rsi_period + 3\n bars = ctx.bars(need)\n if len(bars) < need:\n return\n closes = [b['close'] for b in bars]\n r = _rsi_simple(closes, ctx.rsi_period)\n if r is None:\n return\n price = bar['close']\n if r <= ctx.oversold and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"RSI BUY r={r:.1f} at {price:.2f}\")\n elif r >= ctx.overbought and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"RSI SELL r={r:.1f} at {price:.2f}\")\n",params:[{name:"rsi_period",type:"integer",default:14,min:2,max:100,step:1},{name:"oversold",type:"number",default:30,min:1,max:50,step:1},{name:"overbought",type:"number",default:70,min:50,max:99,step:1},{name:"position_pct",type:"percent",default:.5,min:.05,max:1,step:.01}]},{key:"macdCross",icon:"📊",code:"\"\"\"\nMACD histogram crossover\nEnters long when MACD histogram crosses above zero; exits when it crosses below.\n\"\"\"\n\ndef on_init(ctx):\n ctx.macd_fast = ctx.param('macd_fast', 12)\n ctx.macd_slow = ctx.param('macd_slow', 26)\n ctx.macd_signal = ctx.param('macd_signal', 9)\n ctx.position_pct = ctx.param('position_pct', 0.6)\n\ndef _ema_series(vals, period):\n k = 2.0 / (period + 1)\n out = []\n e = float(vals[0])\n out.append(e)\n for v in vals[1:]:\n v = float(v)\n e = v * k + e * (1 - k)\n out.append(e)\n return out\n\ndef _macd_hist_last_two(closes, fast, slow, sig):\n n = len(closes)\n if n < slow + sig + 2:\n return None, None\n ef = _ema_series(closes, fast)\n es = _ema_series(closes, slow)\n macd = [ef[i] - es[i] for i in range(n)]\n sg = _ema_series(macd, sig)\n hist = [macd[i] - sg[i] for i in range(n)]\n return hist[-2], hist[-1]\n\ndef on_bar(ctx, bar):\n need = ctx.macd_slow + ctx.macd_signal + 30\n bars = ctx.bars(need)\n if len(bars) < need:\n return\n closes = [b['close'] for b in bars]\n h0, h1 = _macd_hist_last_two(closes, ctx.macd_fast, ctx.macd_slow, ctx.macd_signal)\n if h0 is None:\n return\n price = bar['close']\n if h0 <= 0 and h1 > 0 and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"MACD cross up at {price:.2f}\")\n elif h0 >= 0 and h1 < 0 and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"MACD cross down at {price:.2f}\")\n",params:[{name:"macd_fast",type:"integer",default:12,min:2,max:50,step:1},{name:"macd_slow",type:"integer",default:26,min:5,max:120,step:1},{name:"macd_signal",type:"integer",default:9,min:2,max:50,step:1},{name:"position_pct",type:"percent",default:.6,min:.05,max:1,step:.01}]}];function D(t){return String(t).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function V(t){return"boolean"===typeof t?t?"True":"False":"number"===typeof t?Number.isFinite(t)?String(t):"0":null===t||void 0===t?"None":"'".concat(String(t).replace(/\\/g,"\\\\").replace(/'/g,"\\'"),"'")}var E=N;function R(t){return N.find(function(e){return e.key===t})||null}function z(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a="string"===typeof t?R(t):t;return a?a.params.reduce(function(t,a){return t[a.name]=Object.prototype.hasOwnProperty.call(e,a.name)?e[a.name]:a.default,t},{}):{}}function L(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a="string"===typeof t?R(t):t;if(!a)return"";var s=z(a,e);return a.params.reduce(function(t,e){var a=V(s[e.name]),i=new RegExp("(ctx\\.param\\(['\"]".concat(D(e.name),"['\"],\\s*)([^\\)]+)(\\))"));return t.replace(i,"$1".concat(a,"$3"))},a.code)}var q={name:"StrategyTypeSelector",props:{selected:{type:String,default:""},isDark:{type:Boolean,default:!1}},data:function(){return{templates:E.map(function(t){return{key:t.key,icon:t.icon}})}}},U=q,K=(0,C.A)(U,I,F,!1,null,"8ec7ab14",null),O=K.exports,B=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-editor",class:{"theme-dark":t.isDark}},[e("a-row",{staticClass:"editor-layout",attrs:{gutter:16}},[e("a-col",{staticClass:"code-col",attrs:{xs:24,md:16}},[e("div",{staticClass:"code-section"},[e("div",{staticClass:"section-header"},[e("div",{staticClass:"section-title-wrap"},[e("span",{staticClass:"section-title"},[e("a-icon",{attrs:{type:"code"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.title"))+" ")],1),t.selectedTemplate?e("a-tag",{staticClass:"current-template-tag",attrs:{color:"blue"}},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key)))+" ")]):t._e()],1),e("div",{staticClass:"section-actions"},[e("a-button",{staticClass:"verify-btn",attrs:{type:"link",size:"small",loading:t.verifying},on:{click:t.handleVerify}},[e("a-icon",{attrs:{type:"check-circle"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.verify"))+" ")],1)],1)]),e("div",{ref:"editorContainer",staticClass:"code-editor-container"})])]),e("a-col",{staticClass:"side-col",attrs:{xs:24,md:8}},[e("a-tabs",{staticClass:"side-tabs",attrs:{size:"small",animated:!1},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("a-tab-pane",{key:"templates",attrs:{tab:t.$t("trading-assistant.editor.templateTab"),"force-render":!0}},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(t._s(t.$t("trading-assistant.editor.templateIntroTitle")))]),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.templateIntroDesc")))])]),e("div",{staticClass:"template-list"},t._l(t.templates,function(a){return e("div",{key:a.key,staticClass:"template-item",class:{active:t.selectedTemplateKey===a.key},on:{click:function(e){return t.loadTemplate(a.key,{focusParams:!0,resetParams:!0})}}},[e("div",{staticClass:"tpl-header"},[e("span",{staticClass:"tpl-icon"},[t._v(t._s(a.icon))]),e("span",{staticClass:"tpl-name"},[t._v(t._s(t.$t("trading-assistant.template.".concat(a.key))))])]),e("p",{staticClass:"tpl-desc"},[t._v(t._s(t.$t("trading-assistant.template.".concat(a.key,"Desc"))))]),e("a-button",{staticClass:"tpl-use-btn",attrs:{type:"link",size:"small"}},[t._v(" "+t._s(t.$t("trading-assistant.template.useTemplate"))+" "),e("a-icon",{attrs:{type:"arrow-right"}})],1)],1)}),0)]),e("a-tab-pane",{key:"params",attrs:{tab:t.$t("trading-assistant.editor.paramsTab"),"force-render":!0}},[t.selectedTemplate?e("div",{staticClass:"params-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key)))+" ")]),e("div",{staticClass:"panel-intro__desc"},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key,"Desc")))+" ")])]),e("a-alert",{staticClass:"params-tip",attrs:{type:"info","show-icon":"",message:t.$t("trading-assistant.editor.paramsHint")}}),e("div",{staticClass:"param-list"},t._l(t.selectedTemplate.params,function(a){return e("div",{key:a.name,staticClass:"param-item"},[e("div",{staticClass:"param-item__label-row"},[e("span",{staticClass:"param-item__label"},[t._v(t._s(t.getParamLabel(a)))]),e("span",{staticClass:"param-item__type"},[t._v(t._s(t.getParamTypeLabel(a.type)))])]),t.getParamDescription(a)?e("div",{staticClass:"param-item__desc"},[t._v(t._s(t.getParamDescription(a)))]):t._e(),"number"===a.type||"integer"===a.type||"percent"===a.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{value:t.templateParamValues[a.name],min:a.min,max:a.max,step:a.step||1,precision:"integer"===a.type?0:t.getParamPrecision(a)},on:{change:function(e){return t.handleNumericParamChange(a,e)}}}):"select"===a.type?e("a-select",{staticStyle:{width:"100%"},attrs:{value:t.templateParamValues[a.name]},on:{change:function(e){return t.handleSelectParamChange(a,e)}}},t._l(a.options||[],function(a){return e("a-select-option",{key:a.value,attrs:{value:a.value}},[t._v(" "+t._s(t.getOptionLabel(a))+" ")])}),1):"boolean"===a.type?e("div",{staticClass:"param-item__switch"},[e("a-switch",{attrs:{checked:!!t.templateParamValues[a.name]},on:{change:function(e){return t.handleBooleanParamChange(a,e)}}}),e("span",[t._v(t._s(t.templateParamValues[a.name]?t.$t("common.yes"):t.$t("common.no")))])],1):e("a-input",{attrs:{value:t.templateParamValues[a.name]},on:{input:function(e){return t.handleTextParamChange(a,e.target.value)}}})],1)}),0),e("div",{staticClass:"params-actions"},[e("a-button",{on:{click:t.resetTemplateParams}},[t._v(" "+t._s(t.$t("trading-assistant.editor.resetTemplateParams"))+" ")]),e("a-button",{attrs:{type:"primary",disabled:!t.templateDirty},on:{click:t.applySelectedTemplateToCode}},[t._v(" "+t._s(t.$t("trading-assistant.editor.applyTemplateParams"))+" ")])],1)],1):e("div",{staticClass:"params-empty-guide"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.editor.paramsEmpty")}},[e("a-button",{attrs:{type:"primary",size:"small",ghost:""},on:{click:function(e){t.activeTab="templates"}}},[e("a-icon",{attrs:{type:"appstore"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.templateTab"))+" ")],1)],1)],1)]),e("a-tab-pane",{key:"ai",attrs:{tab:t.$t("trading-assistant.editor.aiTab"),"force-render":!0}},[e("div",{staticClass:"ai-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(t.$t("trading-assistant.editor.aiGenerate")))])],1),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.aiHint")))])]),e("div",{staticClass:"ai-suggestions"},t._l(t.aiPromptSuggestions,function(a){return e("a-tag",{key:a.id,staticClass:"prompt-tag",on:{click:function(e){return t.applyPromptSuggestion(a.value)}}},[t._v(" "+t._s(a.label)+" ")])}),1),e("a-textarea",{attrs:{placeholder:t.$t("trading-assistant.editor.aiPromptPlaceholder"),rows:10,"auto-size":{minRows:8,maxRows:16}},model:{value:t.aiPrompt,callback:function(e){t.aiPrompt=e},expression:"aiPrompt"}}),e("div",{staticClass:"ai-actions"},[e("a-button",{attrs:{type:"primary",block:"",loading:t.aiAdjustingParams,disabled:t.aiGenerating,size:"large"},on:{click:t.handleAIAdjustParams}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.aiAdjustParamsBtn"))+" ")],1),e("a-button",{staticStyle:{"margin-top":"8px"},attrs:{block:"",loading:t.aiGenerating,disabled:t.aiAdjustingParams,size:"large"},on:{click:t.handleAIGenerate}},[e("a-icon",{attrs:{type:"code"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.aiGenerateFullCodeBtn"))+" ")],1)],1),t.aiGenerating||t.aiAdjustingParams?e("div",{staticClass:"ai-status"},[e("a-icon",{attrs:{type:"loading",spin:""}}),t._v(" "+t._s(t.aiAdjustingParams?t.$t("trading-assistant.editor.aiAdjustingParams"):t.$t("trading-assistant.editor.generating"))+" ")],1):t._e()],1)])],1)],1)],1)],1)},G=[],H=(a(6011),a(18787)),W=a(15237),j=a.n(W),Y=(a(74806),a(55218),a(97923),a(50436),{name:"StrategyEditor",props:{value:{type:String,default:""},isDark:{type:Boolean,default:!1},userId:{type:[Number,String],default:1},visible:{type:Boolean,default:!1},initialTemplateKey:{type:String,default:""}},data:function(){return{activeTab:"templates",aiPrompt:"",aiGenerating:!1,aiAdjustingParams:!1,verifying:!1,editor:null,templates:E,selectedTemplateKey:"",templateParamValues:{},templateDirty:!1,refreshTimer:null}},computed:{selectedTemplate:function(){return R(this.selectedTemplateKey)},aiPromptSuggestions:function(){return[{id:"improve",label:this.$t("trading-assistant.editor.aiSuggestionImprove"),value:this.$t("trading-assistant.editor.aiSuggestionImprovePrompt")},{id:"risk",label:this.$t("trading-assistant.editor.aiSuggestionRisk"),value:this.$t("trading-assistant.editor.aiSuggestionRiskPrompt")},{id:"explain",label:this.$t("trading-assistant.editor.aiSuggestionExplain"),value:this.$t("trading-assistant.editor.aiSuggestionExplainPrompt")}]}},mounted:function(){var t=this;this.$nextTick(function(){t.initEditor(),t.initialTemplateKey?t.loadTemplate(t.initialTemplateKey,{focusParams:!0,resetParams:!0}):t.value||t.$emit("input",t._getDefaultCode())}),window.addEventListener("resize",this.scheduleEditorRefresh)},beforeDestroy:function(){window.removeEventListener("resize",this.scheduleEditorRefresh),this.refreshTimer&&(clearTimeout(this.refreshTimer),this.refreshTimer=null),this.editor&&("function"===typeof this.editor.toTextArea&&this.editor.toTextArea(),this.editor=null)},watch:{value:function(t){this.editor&&this.editor.getValue()!==t&&(this.editor.setValue(t||""),this.scheduleEditorRefresh())},isDark:function(){this.editor&&this.editor.setOption("theme",this.isDark?"monokai":"eclipse"),this.scheduleEditorRefresh()},visible:function(t){var e=this;t&&this.$nextTick(function(){e.scheduleEditorRefresh();try{window.dispatchEvent(new Event("resize"))}catch(t){}})},initialTemplateKey:function(t){t&&t!==this.selectedTemplateKey&&this.loadTemplate(t,{focusParams:!0,resetParams:!0})}},methods:{initEditor:function(){var t=this;this.$refs.editorContainer&&(this.editor=j()(this.$refs.editorContainer,{value:this.value||this._getDefaultCode(),mode:"python",theme:this.isDark?"monokai":"eclipse",lineNumbers:!0,autoCloseBrackets:!0,matchBrackets:!0,styleActiveLine:!0,tabSize:4,indentUnit:4,indentWithTabs:!1,lineWrapping:!1,viewportMargin:1/0,gutters:["CodeMirror-linenumbers"]}),this.editor.on("change",function(){t.$emit("input",t.editor.getValue())}),this.scheduleEditorRefresh())},scheduleEditorRefresh:function(){var t=this;this.refreshTimer&&clearTimeout(this.refreshTimer),this.refreshTimer=setTimeout(function(){t.editor&&t.editor.refresh()},60)},_getDefaultCode:function(){return'"""\nMy Custom Strategy\n"""\n\ndef on_init(ctx):\n # Initialize strategy parameters\n pass\n\ndef on_bar(ctx, bar):\n # Core trading logic, called on each K-line bar\n # bar: { open, high, low, close, volume, timestamp }\n price = bar[\'close\']\n\n bars = ctx.bars(20)\n if len(bars) < 20:\n return\n\n avg = sum(b[\'close\'] for b in bars) / len(bars)\n\n if price > avg and not ctx.position:\n ctx.buy(price, ctx.equity * 0.9 / price)\n ctx.log(f"BUY at {price}")\n\n elif price < avg and ctx.position:\n ctx.close_position()\n ctx.log(f"SELL at {price}")\n'},loadTemplate:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=e.focusParams,s=void 0!==a&&a,i=e.resetParams,r=void 0===i||i,n=R(t);n&&(this.selectedTemplateKey=t,!r&&this.templateParamValues&&0!==Object.keys(this.templateParamValues).length||(this.templateParamValues=z(n)),this.templateDirty=!0,this.applySelectedTemplateToCode({silent:!0}),s&&(this.activeTab="params"),this.aiPrompt.trim()||(this.aiPrompt=this.$t("trading-assistant.editor.aiPromptTemplateHint")+" "+this.$t("trading-assistant.template.".concat(n.key))),this.scheduleEditorRefresh())},getCode:function(){return this.editor?this.editor.getValue():this.value},setCode:function(t){this.editor&&this.editor.getValue()!==t?this.editor.setValue(t):this.$emit("input",t),this.scheduleEditorRefresh()},applySelectedTemplateToCode:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.silent,a=void 0!==e&&e;if(this.selectedTemplate){var s=L(this.selectedTemplate,this.templateParamValues);this.setCode(s),this.templateDirty=!1,this.$emit("template-change",{key:this.selectedTemplateKey,params:(0,u.A)({},this.templateParamValues)}),a||H.A.success(this.$t("trading-assistant.editor.templateApplied"))}},resetTemplateParams:function(){this.selectedTemplate&&(this.templateParamValues=z(this.selectedTemplate),this.templateDirty=!0,this.applySelectedTemplateToCode({silent:!1}))},getParamLabel:function(t){var e="trading-assistant.templateParam.".concat(t.name,".label"),a=this.$t(e);return a===e?t.name:a},getParamDescription:function(t){var e="trading-assistant.templateParam.".concat(t.name,".desc"),a=this.$t(e);return a===e?"":a},getParamTypeLabel:function(t){return this.$t("trading-assistant.editor.paramType.".concat(t))},getOptionLabel:function(t){if(!t)return"";if(t.labelKey){var e=this.$t(t.labelKey);if(e!==t.labelKey)return e}return t.label||t.value},getParamPrecision:function(t){if("integer"===t.type)return 0;var e=t.step;if(!e||Number.isInteger(e))return 0;var a=String(e),s=a.split(".");return s[1]?s[1].length:0},handleNumericParamChange:function(t,e){var a=""===e||null===e||void 0===e?t.default:"integer"===t.type?parseInt(e,10):Number(e);this.$set(this.templateParamValues,t.name,a),this.templateDirty=!0},handleSelectParamChange:function(t,e){this.$set(this.templateParamValues,t.name,e),this.templateDirty=!0},handleBooleanParamChange:function(t,e){this.$set(this.templateParamValues,t.name,!!e),this.templateDirty=!0},handleTextParamChange:function(t,e){this.$set(this.templateParamValues,t.name,e),this.templateDirty=!0},applyPromptSuggestion:function(t){this.aiPrompt=t},handleVerify:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.verifying=!0,e.p=1,a=t.getCode(),e.n=2,(0,y.Ay)({url:"/api/strategies/verify-code",method:"post",data:{code:a,user_id:t.userId}});case 2:s=e.v,s&&s.success?H.A.success(t.$t("trading-assistant.editor.verifySuccess")):H.A.error(s&&(s.msg||s.message)||t.$t("trading-assistant.editor.verifyFailed")),e.n=4;break;case 3:e.p=3,i=e.v,H.A.error(t.$t("trading-assistant.editor.verifyFailed")+": "+(i.message||""));case 4:return e.p=4,t.verifying=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},_coerceParamValue:function(t,e){if(null!==e&&void 0!==e){var a=t.type;if("boolean"===a)return"boolean"===typeof e?e:"true"===e||1===e||"1"===e||"false"!==e&&0!==e&&"0"!==e&&void 0;if("integer"===a){var s=parseInt(String(e),10);if(!Number.isFinite(s))return;var i=s;return null!=t.min&&(i=Math.max(t.min,i)),null!=t.max&&(i=Math.min(t.max,i)),i}if("number"===a||"percent"===a){var r=Number(e);if(!Number.isFinite(r))return;var n=r;return null!=t.min&&(n=Math.max(t.min,n)),null!=t.max&&(n=Math.min(t.max,n)),n}if("select"===a){var o=t.options||[],l=new Set(o.map(function(t){return t.value}));if(l.has(e))return e;var c=String(e);return l.has(c)?c:void 0}return String(e)}},applyAIParamUpdates:function(t){var e=this;if(!this.selectedTemplate||!t||"object"!==(0,n.A)(t))return!1;var a=new Set(this.selectedTemplate.params.map(function(t){return t.name})),s=!1;return Object.keys(t).forEach(function(i){if(a.has(i)){var r=e.selectedTemplate.params.find(function(t){return t.name===i}),n=e._coerceParamValue(r,t[i]);void 0!==n&&(e.$set(e.templateParamValues,i,n),s=!0)}}),s},handleAIAdjustParams:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt.trim()){e.n=1;break}return H.A.warning(t.$t("trading-assistant.editor.aiPromptRequired")),e.a(2);case 1:if(t.selectedTemplate){e.n=2;break}return H.A.warning(t.$t("trading-assistant.editor.aiAdjustParamsNeedTemplate")),e.a(2);case 2:return t.aiAdjustingParams=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/strategies/ai-generate",method:"post",data:{prompt:t.aiPrompt,user_id:t.userId,intent:"adjust_params",template_key:t.selectedTemplateKey,params:(0,u.A)({},t.templateParamValues),code:t.getCode()}});case 4:a=e.v,a&&a.params&&"object"===(0,n.A)(a.params)?(s=t.applyAIParamUpdates(a.params),s?(t.templateDirty=!0,t.applySelectedTemplateToCode({silent:!0}),H.A.success(t.$t("trading-assistant.editor.aiAdjustParamsSuccess"))):H.A.warning(t.$t("trading-assistant.editor.aiAdjustParamsNoChanges"))):H.A.error(a&&(a.msg||a.message)||t.$t("trading-assistant.editor.aiAdjustParamsFailed")),e.n=6;break;case 5:e.p=5,i=e.v,H.A.error(i&&i.message||t.$t("trading-assistant.editor.aiAdjustParamsFailed"));case 6:return e.p=6,t.aiAdjustingParams=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleAIGenerate:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt.trim()){e.n=1;break}return H.A.warning(t.$t("trading-assistant.editor.aiPromptRequired")),e.a(2);case 1:return t.aiGenerating=!0,e.p=2,e.n=3,(0,y.Ay)({url:"/api/strategies/ai-generate",method:"post",data:{prompt:t.aiPrompt,user_id:t.userId,intent:"generate_code",template_key:t.selectedTemplateKey||void 0,params:t.selectedTemplate?(0,u.A)({},t.templateParamValues):void 0,code:t.getCode()}});case 3:a=e.v,s=a&&"string"===typeof a.code?a.code:"",s?(t.setCode(s),H.A.success(t.$t("trading-assistant.editor.aiGenerateSuccess"))):H.A.error(a&&(a.msg||a.message)||t.$t("trading-assistant.editor.aiGenerateFailed")),e.n=5;break;case 4:e.p=4,i=e.v,H.A.error(i&&i.message||t.$t("trading-assistant.editor.aiGenerateFailed"));case 5:return e.p=5,t.aiGenerating=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()}}}),J=Y,X=(0,C.A)(J,B,G,!1,null,"35a0a386",null),Q=X.exports,Z=function(){var t=this,e=t._self._c;return e("div",{staticClass:"performance-analysis strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[e("a-spin",{attrs:{spinning:t.loading}},[t.hasData?e("div",[e("div",{staticClass:"metrics-grid"},[e("div",{staticClass:"metric-card",class:t.getMetricClass(t.metrics.totalReturn)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.totalReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.totalReturn)))])]),e("div",{staticClass:"metric-card",class:t.getMetricClass(t.metrics.annualReturn)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.annualReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.annualReturn)))])]),e("div",{staticClass:"metric-card negative"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.maxDrawdown")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.maxDrawdown)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.sharpe")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.metrics.sharpe||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.winRate")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.winRate)))])]),e("div",{staticClass:"metric-card",class:t.getMetricClass((t.metrics.profitFactor||0)-1)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.profitFactor")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.metrics.profitFactor||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.totalTrades")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.metrics.totalTrades||0))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.runningDays")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.metrics.runningDays||0))])])]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("trading-assistant.performance.equityCurve")))]),e("div",{ref:"equityChart",staticClass:"chart-container"})]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("trading-assistant.performance.dailyReturns")))]),e("div",{ref:"dailyChart",staticClass:"chart-container",staticStyle:{height:"250px"}})])]):t.loading?t._e():e("a-empty",{staticClass:"strategy-tab-empty",attrs:{description:t.$t("trading-assistant.performance.noData")}})],1)],1)},tt=[],et={name:"PerformanceAnalysis",props:{strategyId:{type:[Number,String],default:null},isDark:{type:Boolean,default:!1}},data:function(){return{loading:!1,metrics:{},equityData:[],dailyReturns:[],equityChartInstance:null,dailyChartInstance:null}},computed:{hasData:function(){return this.equityData.length>0}},watch:{strategyId:{handler:function(t){t&&this.loadData()},immediate:!0},isDark:function(){var t=this;this.disposeCharts(),this.$nextTick(function(){return t.renderCharts()})}},beforeDestroy:function(){this.disposeCharts()},methods:{loadData:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return t.loading=!0,e.p=2,e.n=3,(0,p.Yx)(t.strategyId);case 3:a=e.v,a&&a.data&&(t.equityData=a.data.equity_curve||a.data||[],t.computeMetrics(),t.$nextTick(function(){return t.renderCharts()})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.p=5,t.loading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},computeMetrics:function(){var t=this.equityData;if(t.length){for(var e=t.map(function(t){return t.equity||t.value||t.y||0}),a=e[0]||1,s=e[e.length-1]||a,i=(s-a)/a,r=e[0],n=0,o=[],l=1;lr&&(r=e[l]);var c=(e[l]-r)/r;c1?Math.sqrt(o.reduce(function(t,e){return t+Math.pow(e-p,2)},0)/(o.length-1)):0,g=t.filter(function(t){return t.trade_count}).reduce(function(t,e){return t+e.trade_count},0)||0,h=t.filter(function(t){return t.win_count}).reduce(function(t,e){return t+e.win_count},0)||0,_=t.filter(function(t){return t.gross_profit}).reduce(function(t,e){return t+e.gross_profit},0),y=Math.abs(t.filter(function(t){return t.gross_loss}).reduce(function(t,e){return t+e.gross_loss},0));this.metrics={totalReturn:i,annualReturn:Math.pow(1+i,u)-1,maxDrawdown:n,sharpe:m>0?p/m*Math.sqrt(252):0,winRate:g>0?h/g:0,profitFactor:y>0?_/y:_>0?999:0,totalTrades:g,runningDays:d}}else this.metrics={}},renderCharts:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.getEcharts();case 1:if(a=e.v,a){e.n=2;break}return e.a(2);case 2:t.renderEquityChart(a),t.renderDailyChart(a);case 3:return e.a(2)}},e)}))()},getEcharts:function(){return(0,l.A)((0,o.A)().m(function t(){var e;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!window.echarts){t.n=1;break}return t.a(2,window.echarts);case 1:return t.p=1,t.n=2,Promise.resolve().then(a.bind(a,29362));case 2:return e=t.v,window.echarts=e.default||e,t.a(2,window.echarts);case 3:return t.p=3,t.v,t.a(2,null)}},t,null,[[1,3]])}))()},renderEquityChart:function(t){if(this.$refs.equityChart){this.equityChartInstance=t.init(this.$refs.equityChart,this.isDark?"dark":null);var e=this.equityData.map(function(t){return t.date||t.timestamp||t.x||""}),a=this.equityData.map(function(t){return t.equity||t.value||t.y||0});this.equityChartInstance.setOption({tooltip:{trigger:"axis"},grid:{left:60,right:20,top:20,bottom:30},xAxis:{type:"category",data:e,axisLabel:{fontSize:10}},yAxis:{type:"value",axisLabel:{fontSize:10}},series:[{type:"line",data:a,smooth:!0,lineStyle:{width:2,color:"#1890ff"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(24,144,255,0.3)"},{offset:1,color:"rgba(24,144,255,0.02)"}]}},itemStyle:{color:"#1890ff"},showSymbol:!1}]})}},renderDailyChart:function(t){this.$refs.dailyChart&&this.dailyReturns.length&&(this.dailyChartInstance=t.init(this.$refs.dailyChart,this.isDark?"dark":null),this.dailyChartInstance.setOption({tooltip:{trigger:"axis",formatter:function(t){return"".concat((100*t[0].value).toFixed(2),"%")}},grid:{left:60,right:20,top:10,bottom:30},xAxis:{type:"category",data:this.dailyReturns.map(function(t,e){return e+1}),show:!1},yAxis:{type:"value",axisLabel:{formatter:function(t){return(100*t).toFixed(1)+"%"},fontSize:10}},series:[{type:"bar",data:this.dailyReturns.map(function(t){return{value:t,itemStyle:{color:t>=0?"#52c41a":"#ff4d4f"}}}),barMaxWidth:6}]}))},disposeCharts:function(){this.equityChartInstance&&(this.equityChartInstance.dispose(),this.equityChartInstance=null),this.dailyChartInstance&&(this.dailyChartInstance.dispose(),this.dailyChartInstance=null)},formatPercent:function(t){return void 0===t||null===t?"--":(t>=0?"+":"")+(100*t).toFixed(2)+"%"},getMetricClass:function(t){return t?t>0?"positive":t<0?"negative":"":""}}},at=et,st=(0,C.A)(at,Z,tt,!1,null,"01ff5f5a",null),it=st.exports,rt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-logs strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[e("div",{staticClass:"logs-toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.filterLevel,callback:function(e){t.filterLevel=e},expression:"filterLevel"}},[e("a-radio-button",{attrs:{value:"all"}},[t._v("All")]),e("a-radio-button",{attrs:{value:"trade"}},[e("a-badge",{attrs:{count:t.countByLevel("trade"),"overflow-count":99,offset:[6,-2]}},[t._v(" "+t._s(t.$t("trading-assistant.logs.level.trade"))+" ")])],1),e("a-radio-button",{attrs:{value:"signal"}},[t._v(t._s(t.$t("trading-assistant.logs.level.signal")))]),e("a-radio-button",{attrs:{value:"error"}},[t._v(t._s(t.$t("trading-assistant.logs.level.error")))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-switch",{attrs:{checked:t.autoRefresh,size:"small"},on:{change:t.toggleAutoRefresh}}),e("span",{staticClass:"auto-refresh-label"},[t._v(t._s(t.$t("trading-assistant.logs.autoRefresh")))])],1)]),e("div",{ref:"logsContainer",staticClass:"logs-container custom-scrollbar"},[0===t.filteredLogs.length?e("div",{staticClass:"logs-empty"},[e("a-icon",{staticStyle:{"font-size":"32px",color:"#ccc"},attrs:{type:"file-text"}}),e("p",[t._v(t._s(t.$t("trading-assistant.logs.noLogs")))])],1):t._e(),t._l(t.filteredLogs,function(a,s){return e("div",{key:s,staticClass:"log-entry",class:"level-"+a.level},[e("span",{staticClass:"log-time"},[t._v(t._s(t.formatTime(a.timestamp)))]),e("a-tag",{staticClass:"log-level",attrs:{color:t.getLevelColor(a.level),size:"small"}},[t._v(" "+t._s(t.getLevelText(a.level))+" ")]),e("span",{staticClass:"log-message"},[t._v(t._s(a.message))])],1)})],2)])},nt=[],ot={name:"StrategyLogs",props:{strategyId:{type:[Number,String],default:null},isDark:{type:Boolean,default:!1}},data:function(){return{logs:[],filterLevel:"all",autoRefresh:!1,refreshTimer:null,loading:!1}},computed:{filteredLogs:function(){var t=this;return"all"===this.filterLevel?this.logs:this.logs.filter(function(e){return e.level===t.filterLevel})}},watch:{strategyId:{handler:function(t){t&&this.loadLogs()},immediate:!0}},beforeDestroy:function(){this.stopAutoRefresh()},methods:{loadLogs:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return t.loading=!0,e.p=2,e.n=3,(0,y.Ay)({url:"/api/strategies/logs",method:"get",params:{id:t.strategyId,limit:200}});case 3:a=e.v,a&&a.data&&(t.logs=a.data,t.$nextTick(function(){return t.scrollToBottom()})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.p=5,t.loading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},toggleAutoRefresh:function(t){var e=this;this.autoRefresh=t,t?this.refreshTimer=setInterval(function(){return e.loadLogs()},5e3):this.stopAutoRefresh()},stopAutoRefresh:function(){this.refreshTimer&&(clearInterval(this.refreshTimer),this.refreshTimer=null)},scrollToBottom:function(){var t=this.$refs.logsContainer;t&&(t.scrollTop=t.scrollHeight)},countByLevel:function(t){return this.logs.filter(function(e){return e.level===t}).length},formatTime:function(t){if(!t)return"";try{var e=new Date(t);return e.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch(a){return t}},getLevelColor:function(t){var e={info:"blue",warn:"orange",error:"red",trade:"green",signal:"purple"};return e[t]||"default"},getLevelText:function(t){var e="trading-assistant.logs.level.".concat(t),a=this.$t(e);return a!==e?a:t}}},lt=ot,ct=(0,C.A)(lt,rt,nt,!1,null,"73589ce4",null),dt=ct.exports,ut=function(){var t=this,e=t._self._c;return e("div",{staticClass:"dashboard-pro",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"kpi-grid"},[e("div",{staticClass:"kpi-card kpi-primary"},[e("div",{staticClass:"kpi-glow"}),e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"wallet"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.totalEquity")))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"currency"},[t._v("$")]),e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.summary.total_equity)))])]),e("div",{staticClass:"kpi-sub"},[e("span",{class:t.summary.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.total_pnl>=0?"+":"")+t._s(t.formatNumber(t.summary.total_pnl))+" ")]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.totalPnl")))])])])]),e("div",{staticClass:"kpi-card kpi-win-rate"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"trophy"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.winRate")||"胜率"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.performance.win_rate,1)))]),e("span",{staticClass:"unit"},[t._v("%")])]),e("div",{staticClass:"kpi-sub"},[e("span",{staticClass:"positive"},[t._v(t._s(t.performance.winning_trades))]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.win")))]),e("span",{staticClass:"divider"},[t._v("/")]),e("span",{staticClass:"negative"},[t._v(t._s(t.performance.losing_trades))]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.lose")))])])]),e("div",{staticClass:"kpi-ring"},[e("svg",{attrs:{viewBox:"0 0 36 36"}},[e("path",{staticClass:"ring-bg",attrs:{d:"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"}}),e("path",{staticClass:"ring-progress",attrs:{"stroke-dasharray":"".concat(t.performance.win_rate||0,", 100"),d:"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"}})])])]),e("div",{staticClass:"kpi-card kpi-profit-factor"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"rise"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.profitFactor")||"盈亏比"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.performance.profit_factor,2)))]),e("span",{staticClass:"unit"},[t._v(":1")])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v(t._s(t.$t("dashboard.label.avgProfit"))+" ")]),e("span",{staticClass:"positive"},[t._v("$"+t._s(t.formatNumber(t.performance.avg_win)))])])])]),e("div",{staticClass:"kpi-card kpi-drawdown"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"fall"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.maxDrawdown")||"最大回撤"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount negative"},[t._v(t._s(t.formatNumber(t.performance.max_drawdown_pct,1)))]),e("span",{staticClass:"unit"},[t._v("%")])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v("$"+t._s(t.formatNumber(t.performance.max_drawdown)))])])])]),e("div",{staticClass:"kpi-card kpi-trades"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"swap"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.totalTrades")||"总交易"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.performance.total_trades))]),e("span",{staticClass:"unit"},[t._v(t._s(t.$t("dashboard.unit.trades")))])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v(t._s(t.$t("dashboard.label.avgDaily"))+" ")]),e("span",[t._v(t._s(t.avgTradesPerDay))]),e("span",{staticClass:"label"},[t._v(" "+t._s(t.$t("dashboard.unit.trades")))])])])]),e("div",{staticClass:"kpi-card kpi-strategies clickable",on:{click:t.goToStrategyManagement}},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.runningStrategies")||"运行中策略"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.summary.indicator_strategy_count))]),e("span",{staticClass:"unit"},[t._v(t._s(t.$t("dashboard.unit.strategies")))])]),e("div",{staticClass:"kpi-sub"},[e("span",{staticClass:"highlight"},[t._v(t._s(t.summary.indicator_strategy_count))]),e("span",{staticClass:"label"},[t._v(" "+t._s(t.$t("dashboard.label.indicator")))])])]),e("div",{staticClass:"card-arrow"},[e("a-icon",{attrs:{type:"right"}})],1)])]),t.showSetupGuide&&!t.hideSetupGuide?e("div",{staticClass:"setup-guide-card"},[e("div",{staticClass:"setup-guide-copy"},[e("div",{staticClass:"setup-guide-title"},[t._v(t._s(t.$t("dashboard.setupGuide.title")))]),e("div",{staticClass:"setup-guide-desc"},[t._v(t._s(t.$t("dashboard.setupGuide.desc")))]),e("div",{staticClass:"setup-guide-path"},[t._v(t._s(t.$t("dashboard.setupGuide.path")))])]),e("div",{staticClass:"setup-guide-actions"},[e("a-button",{on:{click:t.goToStrategyManagement}},[e("a-icon",{attrs:{type:"appstore"}}),t._v(" "+t._s(t.$t("dashboard.setupGuide.secondary"))+" ")],1),e("a-button",{attrs:{type:"primary"},on:{click:t.goToStrategyCreate}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("dashboard.setupGuide.primary"))+" ")],1)],1)]):t._e(),e("div",{staticClass:"chart-row"},[e("div",{staticClass:"chart-panel chart-main"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"calendar"}}),e("span",[t._v(t._s(t.$t("dashboard.profitCalendar")||"收益日曆"))])],1),e("div",{staticClass:"calendar-nav"},[e("a-button",{attrs:{type:"link",size:"small",disabled:t.currentCalendarIndex>=t.calendarMonths.length-1},on:{click:t.prevMonth}},[e("a-icon",{attrs:{type:"left"}})],1),e("span",{staticClass:"current-month"},[t._v(t._s(t.currentMonthLabel))]),e("a-button",{attrs:{type:"link",size:"small",disabled:t.currentCalendarIndex<=0},on:{click:t.nextMonth}},[e("a-icon",{attrs:{type:"right"}})],1)],1)]),e("div",{staticClass:"profit-calendar"},[t.currentCalendarMonth?[e("div",{staticClass:"month-summary"},[e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.ranking.totalProfit")))]),e("span",{staticClass:"summary-value",class:t.currentCalendarMonth.total>=0?"positive":"negative"},[t._v(" "+t._s(t.currentCalendarMonth.total>=0?"+":"")+"$"+t._s(t.formatNumber(t.currentCalendarMonth.total))+" ")])]),e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.label.win")))]),e("span",{staticClass:"summary-value positive"},[t._v(t._s(t.currentCalendarMonth.win_days))])]),e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.label.lose")))]),e("span",{staticClass:"summary-value negative"},[t._v(t._s(t.currentCalendarMonth.lose_days))])])]),e("div",{staticClass:"calendar-weekdays"},t._l(t.weekdays,function(a){return e("div",{key:a,staticClass:"weekday"},[t._v(t._s(a))])}),0),e("div",{staticClass:"calendar-grid"},[t._l(t.calendarFirstDayOffset,function(t){return e("div",{key:"empty-"+t,staticClass:"calendar-cell empty"})}),t._l(t.currentCalendarMonth.days_in_month,function(a){return e("div",{key:a,staticClass:"calendar-cell",class:t.getDayClass(a)},[e("span",{staticClass:"day-number"},[t._v(t._s(a))]),null!==t.getDayProfit(a)?e("span",{staticClass:"day-profit",class:t.getDayProfit(a)>=0?"positive":"negative"},[t._v(" "+t._s(t.getDayProfit(a)>=0?"+":"")+t._s(t.formatCompactNumber(t.getDayProfit(a)))+" ")]):t._e()])})],2)]:e("div",{staticClass:"calendar-empty"},[e("a-icon",{attrs:{type:"inbox"}}),e("span",[t._v(t._s(t.$t("dashboard.noData")))])],1)],2)]),e("div",{staticClass:"chart-panel chart-side"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"pie-chart"}}),e("span",[t._v(t._s(t.$t("dashboard.strategyAllocation")||"策略分布"))])],1)]),e("div",{ref:"pieChart",staticClass:"chart-body"})])]),e("div",{staticClass:"chart-row"},[e("div",{staticClass:"chart-panel chart-half"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"area-chart"}}),e("span",[t._v(t._s(t.$t("dashboard.drawdownCurve")||"回撤曲线"))])],1)]),e("div",{ref:"drawdownChart",staticClass:"chart-body chart-sm"})]),e("div",{staticClass:"chart-panel chart-half"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"clock-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.hourlyDistribution")||"交易时段"))])],1)]),e("div",{ref:"hourlyChart",staticClass:"chart-body chart-sm"})])]),e("div",{staticClass:"chart-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"ordered-list"}}),e("span",[t._v(t._s(t.$t("dashboard.strategyRanking")||"策略排行榜"))])],1)]),e("div",{staticClass:"strategy-ranking"},[0===t.strategyStats.length?e("div",{staticClass:"empty-state"},[e("a-icon",{attrs:{type:"inbox"}}),e("span",[t._v(t._s(t.$t("dashboard.noStrategyData")))])],1):e("div",{staticClass:"ranking-grid"},t._l(t.strategyStats.slice(0,6),function(a,s){return e("div",{key:a.strategy_id,staticClass:"ranking-card",class:{"rank-top":s<3}},[e("div",{staticClass:"rank-badge",class:"rank-".concat(s+1)},[t._v(t._s(s+1))]),e("div",{staticClass:"rank-info"},[e("div",{staticClass:"rank-name"},[t._v(t._s(a.strategy_name))]),e("div",{staticClass:"rank-stats"},[e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.ranking.totalProfit")))]),e("span",{class:a.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(a.total_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(a.total_pnl))+" ")])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.winRate")))]),e("span",[t._v(t._s(t.formatNumber(a.win_rate,1))+"%")])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.profitFactor")))]),e("span",[t._v(t._s(t.formatNumber(a.profit_factor,2)))])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.ranking.trades")))]),e("span",[t._v(t._s(a.total_trades))])])])]),e("div",{staticClass:"rank-pnl-bar"},[e("div",{staticClass:"bar-fill",class:a.total_pnl>=0?"positive":"negative",style:{width:"".concat(Math.min(100,Math.abs(a.total_pnl)/t.maxStrategyPnl*100),"%")}})])])}),0)])]),e("div",{staticClass:"table-row"},[e("div",{staticClass:"table-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"stock"}}),e("span",[t._v(t._s(t.$t("dashboard.currentPositions")))])],1),e("div",{staticClass:"panel-badge"},[t._v(t._s((t.summary.current_positions||[]).length))])]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.positionColumns,"data-source":t.summary.current_positions,rowKey:"id",pagination:!1,size:"small",scroll:{x:"max-content"}},scopedSlots:t._u([{key:"symbol",fn:function(a,s){return[e("div",{staticClass:"symbol-cell"},[e("span",{staticClass:"symbol-name"},[t._v(t._s(a))]),e("span",{staticClass:"symbol-strategy"},[t._v(t._s(s.strategy_name))])])]}},{key:"side",fn:function(a){return[e("span",{staticClass:"side-tag",class:"long"===a?"long":"short"},[t._v(" "+t._s("long"===a?"LONG":"SHORT")+" ")])]}},{key:"unrealized_pnl",fn:function(a,s){return[e("div",{staticClass:"pnl-cell"},[e("span",{class:a>=0?"positive":"negative"},[t._v(" "+t._s(a>=0?"+":"")+"$"+t._s(t.formatNumber(a))+" ")]),e("span",{staticClass:"pnl-percent",class:s.pnl_percent>=0?"positive":"negative"},[t._v(" "+t._s(s.pnl_percent>=0?"+":"")+t._s(t.formatNumber(s.pnl_percent))+"% ")])])]}}])})],1),e("div",{staticClass:"table-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"history"}}),e("span",[t._v(t._s(t.$t("dashboard.recentTrades")))])],1)]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.columns,"data-source":t.summary.recent_trades,rowKey:"id",pagination:{pageSize:8,size:"small"},size:"small",scroll:{x:"max-content"}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("span",{staticClass:"type-tag",class:t.getTypeClass(a)},[t._v(" "+t._s(t.getSignalTypeText(a))+" ")])]}},{key:"profit",fn:function(a,s){return[e("span",{class:"--"!==t.formatProfitValue(a,s)?a>=0?"positive":"negative":""},[t._v(" "+t._s(t.formatProfitValue(a,s))+" ")])]}},{key:"time",fn:function(a){return[e("span",{staticClass:"time-cell"},[t._v(t._s(t.formatTime(a)))])]}}])})],1)]),e("div",{staticClass:"chart-panel orders-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"unordered-list"}}),e("span",[t._v(t._s(t.$t("dashboard.pendingOrders")))]),e("a-tooltip",{attrs:{title:t.soundEnabled?t.$t("dashboard.clickToMute"):t.$t("dashboard.clickToUnmute")}},[e("a-icon",{staticClass:"sound-toggle",class:{"sound-off":!t.soundEnabled},attrs:{type:t.soundEnabled?"sound":"audio-muted"},on:{click:t.toggleSound}})],1)],1),e("div",{staticClass:"panel-badge"},[t._v(t._s(t.ordersPagination.total))])]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.orderColumns,"data-source":t.pendingOrders,rowKey:"id",pagination:{current:t.ordersPagination.current,pageSize:t.ordersPagination.pageSize,total:t.ordersPagination.total,showSizeChanger:!0,size:"small",showTotal:function(e){return t.$t("dashboard.totalOrders",{total:e})}},size:"small",loading:t.ordersLoading,scroll:{x:1200}},on:{change:t.handleOrdersTableChange},scopedSlots:t._u([{key:"strategy_name",fn:function(a,s){return[e("div",{staticClass:"symbol-cell"},[e("span",{staticClass:"symbol-name"},[t._v(t._s(a||"-"))]),e("span",{staticClass:"symbol-strategy"},[t._v("ID: "+t._s(s.strategy_id))])])]}},{key:"symbol",fn:function(a){return[e("span",{staticClass:"symbol-tag"},[t._v(t._s(a))])]}},{key:"signal_type",fn:function(a){return[e("span",{staticClass:"type-tag",class:t.getTypeClass(a)},[t._v(" "+t._s(t.getSignalTypeText(a))+" ")])]}},{key:"exchange",fn:function(a,s){return[s&&(s.exchange_display||s.exchange_id||a)?e("span",{staticClass:"exchange-tag",class:(s.exchange_display||s.exchange_id||a).toLowerCase()},[t._v(" "+t._s(String(s.exchange_display||s.exchange_id||a).toUpperCase())+" ")]):e("span",{staticClass:"text-muted"},[t._v("-")]),s&&s.market_type?e("div",{staticClass:"market-type"},[t._v(" "+t._s(String(s.market_type).toUpperCase())+" ")]):t._e()]}},{key:"notify",fn:function(a,s){return[e("div",{staticClass:"notify-icons"},[t._l(s&&s.notify_channels?s.notify_channels:[],function(a){return e("a-tooltip",{key:"".concat(s.id,"-").concat(a),attrs:{title:String(a)}},[e("a-icon",{staticClass:"notify-icon",attrs:{type:t.getNotifyIconType(a)}})],1)}),s&&s.notify_channels&&0!==s.notify_channels.length?t._e():e("span",{staticClass:"text-muted"},[t._v("-")])],2)]}},{key:"status",fn:function(a,s){return[e("span",{staticClass:"status-tag",class:a},[t._v(" "+t._s(t.getStatusText(a))+" ")]),"failed"===a&&s.error_message?e("div",{staticClass:"error-hint"},[e("a-tooltip",{attrs:{title:s.error_message}},[e("a-icon",{attrs:{type:"exclamation-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.viewError")))])],1)],1):t._e()]}},{key:"amount",fn:function(a,s){return[e("div",[t._v(t._s(t.formatNumber(a,8)))]),s.filled_amount?e("div",{staticClass:"sub-text"},[t._v(" "+t._s(t.$t("dashboard.filled"))+": "+t._s(t.formatNumber(s.filled_amount,8))+" ")]):t._e()]}},{key:"price",fn:function(a,s){return[s.filled_price?e("div",[t._v(t._s(t.formatNumber(s.filled_price)))]):e("div",{staticClass:"text-muted"},[t._v("-")])]}},{key:"time_info",fn:function(a,s){return[e("div",{staticClass:"time-cell"},[t._v(t._s(t.formatTime(s.created_at)))]),s.executed_at?e("div",{staticClass:"sub-text"},[t._v(" "+t._s(t.formatTime(s.executed_at))+" ")]):t._e()]}}])})],1)])},pt=[],mt=a(29362),gt={summary:"/api/dashboard/summary",pendingOrders:"/api/dashboard/pendingOrders"};function ht(){return(0,y.Ay)({url:gt.summary,method:"get"})}function _t(t){return(0,y.Ay)({url:gt.pendingOrders,method:"get",params:t})}var yt=a(95353),ft={name:"Dashboard",props:{hideSetupGuide:{type:Boolean,default:!1}},data:function(){return{summary:{ai_strategy_count:0,indicator_strategy_count:0,total_equity:0,total_pnl:0,total_realized_pnl:0,total_unrealized_pnl:0,performance:{},strategy_stats:[],daily_pnl_chart:[],strategy_pnl_chart:[],monthly_returns:[],hourly_distribution:[],calendar_months:[],recent_trades:[],current_positions:[]},currentCalendarIndex:0,pieChart:null,drawdownChart:null,hourlyChart:null,pendingOrders:[],ordersLoading:!1,ordersPagination:{current:1,pageSize:20,total:0},orderPollTimer:null,lastOrderId:0,orderPollIntervalMs:5e3,soundEnabled:!0,beepCtx:null}},computed:(0,u.A)((0,u.A)({},(0,yt.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},performance:function(){return this.summary.performance||{}},strategyStats:function(){return this.summary.strategy_stats||[]},showSetupGuide:function(){var t=Number(this.summary.indicator_strategy_count||0),e=Array.isArray(this.summary.current_positions)&&this.summary.current_positions.length>0,a=Array.isArray(this.summary.recent_trades)&&this.summary.recent_trades.length>0;return 0===t||!e&&!a},maxStrategyPnl:function(){var t=this.strategyStats;return t.length?Math.max.apply(Math,(0,c.A)(t.map(function(t){return Math.abs(t.total_pnl||0)})).concat([1])):1},avgTradesPerDay:function(){var t=this.summary.daily_pnl_chart||[],e=t.length||1,a=this.performance.total_trades||0;return(a/e).toFixed(1)},calendarMonths:function(){return this.summary.calendar_months||[]},currentCalendarMonth:function(){var t=this.calendarMonths;return t.length&&t[this.currentCalendarIndex]||null},currentMonthLabel:function(){var t=this.currentCalendarMonth;if(!t)return"-";var e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];return"".concat(e[t.month-1]," ").concat(t.year)},weekdays:function(){return["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]},calendarFirstDayOffset:function(){var t=this.currentCalendarMonth;return t?t.first_weekday:0},orderStrategyFilters:function(){var t,e=Array.isArray(this.pendingOrders)?this.pendingOrders:[],a=new Map,s=(0,d.A)(e);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i&&i.strategy_id;if(void 0!==r&&null!==r&&!a.has(String(r))){var n=i&&i.strategy_name?String(i.strategy_name):"",o=n?"".concat(n," (ID: ").concat(r,")"):"ID: ".concat(r);a.set(String(r),{text:o,value:String(r)})}}}catch(l){s.e(l)}finally{s.f()}return Array.from(a.values()).sort(function(t,e){return String(t.text).localeCompare(String(e.text))})},columns:function(){var t=this;return[{title:this.$t("dashboard.table.time"),dataIndex:"created_at",scopedSlots:{customRender:"time"},width:150},{title:this.$t("dashboard.table.symbol"),dataIndex:"symbol",width:100},{title:this.$t("dashboard.table.type"),dataIndex:"type",scopedSlots:{customRender:"type"},width:90},{title:this.$t("dashboard.table.price"),dataIndex:"price",customRender:function(e){return t.formatNumber(e)},width:100},{title:this.$t("dashboard.table.profit"),dataIndex:"profit",scopedSlots:{customRender:"profit"},align:"right",width:100}]},positionColumns:function(){var t=this;return[{title:this.$t("dashboard.table.symbol"),dataIndex:"symbol",scopedSlots:{customRender:"symbol"}},{title:this.$t("dashboard.table.side"),dataIndex:"side",scopedSlots:{customRender:"side"}},{title:this.$t("dashboard.table.size"),dataIndex:"size",customRender:function(e){return t.formatNumber(e,4)}},{title:this.$t("dashboard.table.entryPrice"),dataIndex:"entry_price",customRender:function(e){return t.formatNumber(e)}},{title:this.$t("dashboard.table.pnl"),dataIndex:"unrealized_pnl",scopedSlots:{customRender:"unrealized_pnl"},align:"right"}]},orderColumns:function(){return[{title:this.$t("dashboard.orderTable.strategy"),dataIndex:"strategy_name",scopedSlots:{customRender:"strategy_name"},filters:this.orderStrategyFilters,filterMultiple:!0,onFilter:function(t,e){return String(e&&e.strategy_id)===String(t)},width:150},{title:this.$t("dashboard.orderTable.exchange"),dataIndex:"exchange_id",scopedSlots:{customRender:"exchange"},width:120},{title:this.$t("dashboard.orderTable.notify"),dataIndex:"notify_channels",scopedSlots:{customRender:"notify"},width:100},{title:this.$t("dashboard.orderTable.symbol"),dataIndex:"symbol",scopedSlots:{customRender:"symbol"},width:110},{title:this.$t("dashboard.orderTable.signalType"),dataIndex:"signal_type",scopedSlots:{customRender:"signal_type"},width:100},{title:this.$t("dashboard.orderTable.amount"),dataIndex:"amount",scopedSlots:{customRender:"amount"},width:130},{title:this.$t("dashboard.orderTable.price"),dataIndex:"filled_price",scopedSlots:{customRender:"price"},width:100},{title:this.$t("dashboard.orderTable.status"),dataIndex:"status",scopedSlots:{customRender:"status"},width:130},{title:this.$t("dashboard.orderTable.timeInfo"),dataIndex:"created_at",scopedSlots:{customRender:"time_info"},width:160}]}}),mounted:function(){this.fetchData(),this.fetchPendingOrders(),this.startOrderPolling(),window.addEventListener("resize",this.handleResize)},beforeDestroy:function(){this.stopOrderPolling(),window.removeEventListener("resize",this.handleResize),this.pieChart&&this.pieChart.dispose(),this.drawdownChart&&this.drawdownChart.dispose(),this.hourlyChart&&this.hourlyChart.dispose()},methods:{goToStrategyManagement:function(){this.$router.push("/trading-assistant?tab=strategy")},goToStrategyCreate:function(){this.$router.push("/trading-assistant?tab=strategy&mode=create")},fetchData:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,ht();case 1:a=e.v,1===a.code&&(t.summary=(0,u.A)((0,u.A)({},t.summary),a.data),t.$nextTick(function(){t.initCharts()})),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},fetchPendingOrders:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i,r,n,l;return(0,o.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return a.ordersLoading=!0,s.p=1,i=t||a.ordersPagination.current||1,r=e||a.ordersPagination.pageSize||20,s.n=2,_t({page:i,pageSize:r});case 2:n=s.v,1===n.code&&(l=n.data||{},a.pendingOrders=l.list||[],a.ordersPagination.current=Number(l.page||i||1),a.ordersPagination.pageSize=Number(l.pageSize||r||20),a.ordersPagination.total=Number(l.total||0)),s.n=4;break;case 3:s.p=3,s.v;case 4:return s.p=4,a.ordersLoading=!1,s.f(4);case 5:return s.a(2)}},s,null,[[1,3,4,5]])}))()},playOrderBeep:function(){if(this.soundEnabled)try{var t=window.AudioContext||window.webkitAudioContext;if(!t)return;this.beepCtx||(this.beepCtx=new t);var e=this.beepCtx;"suspended"===e.state&&"function"===typeof e.resume&&e.resume().catch(function(){});var a=function(t,a){var s=e.createOscillator(),i=e.createGain();s.type="sine",s.frequency.value=a,i.gain.value=.08,s.connect(i),i.connect(e.destination),s.start(t),s.stop(t+.12)},s=e.currentTime;a(s,880),a(s+.18,1100)}catch(i){}},startOrderPolling:function(){var t=this;this.stopOrderPolling(),this.initLastOrderId(),this.orderPollTimer=setInterval(function(){t.pollNewOrders()},this.orderPollIntervalMs)},stopOrderPolling:function(){this.orderPollTimer&&(clearInterval(this.orderPollTimer),this.orderPollTimer=null)},initLastOrderId:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,_t({page:1,pageSize:1});case 1:a=e.v,1===a.code&&a.data&&a.data.list&&a.data.list.length>0&&(t.lastOrderId=a.data.list[0].id||0),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},pollNewOrders:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r,n,l,c,u;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,_t({page:1,pageSize:10});case 1:if(a=e.v,1===a.code&&a.data&&a.data.list){e.n=2;break}return e.a(2);case 2:if(s=a.data.list||[],0!==s.length){e.n=3;break}return e.a(2);case 3:i=!1,r=t.lastOrderId,n=(0,d.A)(s);try{for(n.s();!(l=n.n()).done;)c=l.value,u=c.id||0,u>t.lastOrderId&&(i=!0,u>r&&(r=u))}catch(o){n.e(o)}finally{n.f()}i&&(t.lastOrderId=r,t.playOrderBeep(),t.fetchPendingOrders(),t.$notification.info({message:t.$t("dashboard.newOrderNotify"),description:t.$t("dashboard.newOrderDesc"),duration:4})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[0,4]])}))()},toggleSound:function(){this.soundEnabled=!this.soundEnabled,this.soundEnabled?this.$message.success(this.$t("dashboard.soundEnabled")):this.$message.info(this.$t("dashboard.soundDisabled"))},handleOrdersTableChange:function(t){var e=t&&t.current?t.current:1,a=t&&t.pageSize?t.pageSize:this.ordersPagination.pageSize||20;this.ordersPagination.current=e,this.ordersPagination.pageSize=a,this.fetchPendingOrders(e,a)},getTypeClass:function(t){if(!t)return"";var e=t.toLowerCase();return e.includes("open_long")||e.includes("add_long")?"long":e.includes("open_short")||e.includes("add_short")?"short":e.includes("close_long")?"close-long":e.includes("close_short")?"close-short":""},getSignalTypeColor:function(t){return t?(t=t.toLowerCase(),t.includes("open_long")||t.includes("add_long")?"green":t.includes("open_short")||t.includes("add_short")?"red":t.includes("close_long")?"orange":t.includes("close_short")?"purple":"blue"):"default"},getSignalTypeText:function(t){if(!t)return"-";var e={open_long:this.$t("dashboard.signalType.openLong"),open_short:this.$t("dashboard.signalType.openShort"),close_long:this.$t("dashboard.signalType.closeLong"),close_short:this.$t("dashboard.signalType.closeShort"),add_long:this.$t("dashboard.signalType.addLong"),add_short:this.$t("dashboard.signalType.addShort")};return e[t.toLowerCase()]||t.toUpperCase()},getStatusColor:function(t){var e={pending:"orange",processing:"blue",completed:"green",failed:"red",cancelled:"default"};return e[t]||"default"},getStatusText:function(t){if(!t)return"-";var e={pending:this.$t("dashboard.status.pending"),processing:this.$t("dashboard.status.processing"),completed:this.$t("dashboard.status.completed"),failed:this.$t("dashboard.status.failed"),cancelled:this.$t("dashboard.status.cancelled")};return e[t.toLowerCase()]||t.toUpperCase()},getNotifyIconType:function(t){var e=String(t||"").trim().toLowerCase(),a={browser:"bell",webhook:"link",discord:"comment",telegram:"message",tg:"message",tele:"message",email:"mail",phone:"phone"};return a[e]||"notification"},getExchangeTagColor:function(t){var e=String(t||"").trim().toLowerCase(),a={binance:"gold",okx:"purple",bitget:"cyan",signal:"geekblue"};return a[e]||"blue"},formatNumber:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t?"0.00":Number(t).toLocaleString("en-US",{minimumFractionDigits:e,maximumFractionDigits:e})},formatProfitValue:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),s=["open_long","open_short","add_long","add_short"];if(0===a&&e&&s.includes(e.type))return"--";if(Math.abs(a)<1e-6)return e&&s.includes(e.type)?"--":"$0.00";var i=a>=0?"+":"";return"".concat(i,"$").concat(this.formatNumber(a))},formatCompactNumber:function(t){if(void 0===t||null===t)return"0";var e=Math.abs(t);return e>=1e6?(t/1e6).toFixed(1)+"M":e>=1e3?(t/1e3).toFixed(1)+"k":e>=100?Math.round(t):t.toFixed(0)},prevMonth:function(){this.currentCalendarIndex0&&this.currentCalendarIndex--},getDayProfit:function(t){var e=this.currentCalendarMonth;if(!e||!e.days)return null;var a=String(t).padStart(2,"0");return void 0!==e.days[a]?e.days[a]:null},getDayClass:function(t){var e=this.getDayProfit(t);return null===e?"no-data":e>0?"profit":e<0?"loss":"zero"},formatTime:function(t){if(!t)return"-";try{var e;if("string"===typeof t&&t.includes("-")&&t.includes(":"))e=new Date(t);else{if(!("number"===typeof t||"string"===typeof t&&/^\d+$/.test(t)))return"-";var a="string"===typeof t?parseInt(t,10):t,s=a<1e12?1e3*a:a;e=new Date(s)}return isNaN(e.getTime())?"-":e.toLocaleString()}catch(i){return"-"}},initCharts:function(){this.initPieChart(),this.initDrawdownChart(),this.initHourlyChart()},initPieChart:function(){var t=this,e=this.$refs.pieChart;if(e){this.pieChart=mt.init(e);var a=Array.isArray(this.summary.strategy_stats)?this.summary.strategy_stats:[],s=Array.isArray(this.summary.strategy_pnl_chart)?this.summary.strategy_pnl_chart:[],i=[];i=a.length>0?a.map(function(t){var e=t&&t.strategy_name?String(t.strategy_name):"-",a=Number(t&&t.total_pnl?t.total_pnl:0),s=Number(t&&t.total_trades?t.total_trades:0),i=0!==a?Math.abs(a):s;return{name:e,value:i,signedValue:a,trades:s}}).filter(function(t){return t.value>0}):s.map(function(t){var e=t&&t.name?String(t.name):"-",a=Number(t&&t.value?t.value:0);return{name:e,value:Math.abs(a),signedValue:a}}).filter(function(t){return t.value>0});var r=this.isDarkTheme,n=r?"#9ca3af":"#6b7280",o=[new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#3b82f6"},{offset:1,color:"#1d4ed8"}]),new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#8b5cf6"},{offset:1,color:"#6d28d9"}]),new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#10b981"},{offset:1,color:"#059669"}]),new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#f59e0b"},{offset:1,color:"#d97706"}]),new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#ec4899"},{offset:1,color:"#be185d"}]),new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#06b6d4"},{offset:1,color:"#0891b2"}])],l={backgroundColor:"transparent",tooltip:{trigger:"item",backgroundColor:r?"rgba(17, 24, 39, 0.95)":"rgba(255, 255, 255, 0.95)",borderColor:r?"#374151":"#e5e7eb",textStyle:{color:r?"#f3f4f6":"#1f2937"},formatter:function(e){var a=e&&e.data&&"number"===typeof e.data.signedValue?e.data.signedValue:0,s=(a>=0?"+":"")+t.formatNumber(a,2),i=a>=0?"#10b981":"#ef4444";return'\n
\n
'.concat(e.name,'
\n
占比 ').concat(e.percent,'%
\n
PNL $').concat(s,"
\n
\n ")}},legend:{bottom:10,left:"center",itemWidth:12,itemHeight:12,itemGap:16,textStyle:{color:n,fontSize:11}},color:o,series:[{name:"策略分布",type:"pie",radius:["50%","75%"],center:["50%","45%"],avoidLabelOverlap:!1,itemStyle:{borderRadius:6,borderColor:r?"#1f2937":"#ffffff",borderWidth:3},label:{show:!1},emphasis:{label:{show:!0,fontSize:14,fontWeight:"bold",color:r?"#f3f4f6":"#1f2937"},scaleSize:8},labelLine:{show:!1},data:i.length>0?i:[{value:1,name:this.$t("dashboard.noData"),signedValue:0}]}]};this.pieChart.setOption(l)}},initDrawdownChart:function(){var t=this,e=this.$refs.drawdownChart;if(e){this.drawdownChart=mt.init(e);var a,s=(this.summary.daily_pnl_chart||[]).map(function(t){return t.date}),i=(this.summary.daily_pnl_chart||[]).map(function(t){return Number(t.profit||0)}),r=[],n=0,o=(0,d.A)(i);try{for(o.s();!(a=o.n()).done;){var l=a.value;n+=Number(l||0),r.push(n)}}catch(f){o.e(f)}finally{o.f()}var c=-1/0,u=0,p=0,m=r.map(function(t,e){c=Math.max(c,t);var a=Number((t-c).toFixed(2));return a\n
').concat(s,'
\n
\n \n \n ').concat(t.$t("dashboard.drawdown")||"Drawdown",'\n \n -$').concat(r,'\n
\n
\n
\n
\n \n ')}},grid:{left:55,right:20,bottom:35,top:20,containLabel:!1},xAxis:{type:"category",data:s,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:h,fontSize:10,formatter:function(t){return t.slice(5)}}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:h,fontSize:10,formatter:function(t){return Math.abs(t)>=1e3?"-$"+(Math.abs(t)/1e3).toFixed(1)+"k":0===t?"0":"-$"+Math.abs(t)}},splitLine:{lineStyle:{color:_,type:[4,4]}},max:0},series:[{name:this.$t("dashboard.drawdown")||"Drawdown",type:"line",data:m,smooth:.3,showSymbol:!1,lineStyle:{width:2.5,color:new mt.graphic.LinearGradient(0,0,1,0,[{offset:0,color:"#ef4444"},{offset:.5,color:"#f87171"},{offset:1,color:"#fca5a5"}]),shadowColor:"rgba(239, 68, 68, 0.4)",shadowBlur:8,shadowOffsetY:4},areaStyle:{color:new mt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:g?"rgba(239, 68, 68, 0.4)":"rgba(239, 68, 68, 0.25)"},{offset:.5,color:g?"rgba(248, 113, 113, 0.15)":"rgba(248, 113, 113, 0.1)"},{offset:1,color:"transparent"}])},markPoint:u<0?{symbol:"pin",symbolSize:45,itemStyle:{color:new mt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"#f87171"},{offset:1,color:"#dc2626"}]),shadowColor:"rgba(239, 68, 68, 0.5)",shadowBlur:10},label:{show:!0,color:"#fff",fontSize:10,fontWeight:"bold",formatter:function(){return t.$t("dashboard.label.maxDrawdownPoint")||"MAX"}},data:[{name:this.$t("dashboard.maxDrawdown")||"Max Drawdown",coord:[p,u]}]}:void 0,markLine:{silent:!0,symbol:"none",lineStyle:{color:g?"#52525b":"#a1a1aa",type:"dashed",width:1},data:[{yAxis:0}],label:{show:!1}}}]};this.drawdownChart.setOption(y)}},initHourlyChart:function(){var t=this,e=this.$refs.hourlyChart;if(e){this.hourlyChart=mt.init(e);var a=this.summary.hourly_distribution||[],s=a.map(function(t){return"".concat(String(t.hour).padStart(2,"0"),":00")}),i=a.map(function(t){return t.count||0}),r=a.map(function(t){return t.profit||0}),n=this.isDarkTheme,o=n?"#9ca3af":"#6b7280",l=n?"rgba(75, 85, 99, 0.3)":"rgba(229, 231, 235, 0.8)",c={backgroundColor:"transparent",tooltip:{trigger:"axis",backgroundColor:n?"rgba(17, 24, 39, 0.95)":"rgba(255, 255, 255, 0.95)",borderColor:n?"#374151":"#e5e7eb",textStyle:{color:n?"#f3f4f6":"#1f2937"},formatter:function(e){var a,s=Array.isArray(e)?e:[],i=s[0]&&s[0].axisValue?s[0].axisValue:"",r=0,l=0,c=t.$t("dashboard.tradeCount")||"Trade Count",u=t.$t("dashboard.profit")||"Profit",p=t.$t("dashboard.unit.trades")||"",m=(0,d.A)(s);try{for(m.s();!(a=m.n()).done;){var g=a.value;g.seriesName===c&&(r=g.data||0),g.seriesName===u&&(l=g.data||0)}}catch(y){m.e(y)}finally{m.f()}var h=l>=0?"#10b981":"#ef4444",_=(l>=0?"+":"")+t.formatNumber(l,2);return'\n
\n
'.concat(i,'
\n
').concat(c,' ').concat(r," ").concat(p,'
\n
').concat(u,' $').concat(_,"
\n
\n ")}},grid:{left:50,right:20,bottom:30,top:10,containLabel:!1},xAxis:{type:"category",data:s,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o,fontSize:10,interval:3}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o,fontSize:10},splitLine:{lineStyle:{color:l,type:"dashed"}}},series:[{name:this.$t("dashboard.tradeCount")||"Trade Count",type:"bar",data:i,barMaxWidth:16,itemStyle:{borderRadius:[3,3,0,0],color:new mt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"#60a5fa"},{offset:1,color:"#3b82f6"}])}},{name:this.$t("dashboard.profit")||"Profit",type:"line",data:r,smooth:!0,showSymbol:!1,lineStyle:{width:2,color:"#a855f7"}}]};this.hourlyChart.setOption(c)}},handleResize:function(){this.pieChart&&this.pieChart.resize(),this.drawdownChart&&this.drawdownChart.resize(),this.hourlyChart&&this.hourlyChart.resize()}}},vt=ft,bt=(0,C.A)(vt,ut,pt,!1,null,"80b7f8d0",null),xt=bt.exports,Ct=a(40011),kt=["BTC/USDT","ETH/USDT","BNB/USDT","SOL/USDT","ADA/USDT","XRP/USDT","DOGE/USDT","DOT/USDT","MATIC/USDT","AVAX/USDT","LINK/USDT","UNI/USDT","LTC/USDT","ATOM/USDT","ETC/USDT"],St=[{value:"binance",labelKey:"binance"},{value:"okx",labelKey:"okx"},{value:"bitget",labelKey:"bitget"},{value:"bybit",labelKey:"bybit"},{value:"coinbaseexchange",labelKey:"coinbaseexchange"},{value:"kraken",labelKey:"kraken"},{value:"kucoin",labelKey:"kucoin"},{value:"gate",labelKey:"gate"},{value:"bitfinex",labelKey:"bitfinex"},{value:"deepcoin",labelKey:"deepcoin"}],wt=[{value:"ibkr",labelKey:"ibkr",name:"Interactive Brokers"}],$t=[{value:"mt5",labelKey:"mt5",name:"MetaTrader 5"}],At={name:"TradingAssistant",mixins:[_.t],components:{TradingRecords:S,PositionRecords:M,StrategyTypeSelector:O,StrategyEditor:Q,PerformanceAnalysis:it,StrategyLogs:dt,DashboardOverview:xt,ExchangeAccountModal:Ct.A},computed:{showAssistantGuide:function(){return!this.assistantGuideDismissed},assistantGuideStorageKey:function(){var t,e=(null===(t=this.$store.getters.userInfo)||void 0===t?void 0:t.id)||"guest";return"trading-assistant-guide-dismissed:".concat(e)},isAdvancedMode:function(){return"advanced"===this.creationMode},isSimpleMode:function(){return"simple"===this.creationMode},isSimpleCreateMode:function(){return this.isSimpleMode&&!this.editingStrategy},strategyFormWrapClass:function(){var t=["strategy-form-modal"];return this.isMobile&&t.push("mobile-modal"),this.isDarkTheme&&t.push("strategy-form-modal-dark"),t.join(" ")},displayCurrentStep:function(){return"script"===this.strategyMode?this.currentStep:this.isSimpleMode&&!this.editingStrategy?0===this.currentStep?0:1:this.currentStep},isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},needsPassphrase:function(){return["okx","okex","coinbaseexchange","kucoin","bitget","deepcoin"].includes(this.currentExchangeId)},isIBKRMarket:function(){return"USStock"===this.selectedMarketCategory},isMT5Market:function(){return"Forex"===this.selectedMarketCategory},isBrokerMarket:function(){return this.isIBKRMarket||this.isMT5Market},filteredExchangeCredentials:function(){var t=this;return this.exchangeCredentials&&Array.isArray(this.exchangeCredentials)?this.exchangeCredentials.filter(function(e){return t.isCredentialCompatible(e)}):[]},formattedExchangeOptions:function(){var t=this;return St.map(function(e){var a="";try{if(e.labelKey){var s="trading-assistant.exchangeNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},totalPnl:function(){return null!==this.currentEquity&&this.selectedStrategy&&this.selectedStrategy.initial_capital?this.currentEquity-(this.selectedStrategy.initial_capital||0):null},totalPnlPercent:function(){return null!==this.totalPnl&&this.selectedStrategy&&this.selectedStrategy.initial_capital?0===this.selectedStrategy.initial_capital?0:this.totalPnl/this.selectedStrategy.initial_capital*100:null},getEquityColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},getPnlColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},isCryptoMarket:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()},canUseLiveTrading:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()||("USStock"===t||"Forex"===t)},isLiveTradingAvailable:function(){var t=this.selectedMarketCategory||"Crypto",e=this.currentExchangeId||"";return"crypto"===String(t).toLowerCase()?["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"].includes(e):"USStock"===t?"ibkr"===this.currentBrokerId:"Forex"===t&&"mt5"===this.currentBrokerId},showDemoTradingSwitch:function(){return this.currentExchangeId&&"binance"===this.currentExchangeId.toLowerCase()},brokerOptions:function(){var t=this;return wt.map(function(e){var a="";try{var s="trading-assistant.brokerNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},forexBrokerOptions:function(){var t=this;return $t.map(function(e){var a="";try{var s="trading-assistant.brokerNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},cryptoExchangeOptions:function(){var t=this;return St.map(function(e){var a="";try{if(e.labelKey){var s="trading-assistant.exchangeNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},groupedStrategies:function(){return"symbol"===this.groupByMode?this.groupedBySymbol:this.groupedByStrategy},groupedByStrategy:function(){var t,e={},a=[],s=(0,d.A)(this.strategies);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i.strategy_group_id;r&&r.trim()?(e[r]||(e[r]={id:r,baseName:i.group_base_name||i.strategy_name.split("-")[0],strategies:[],runningCount:0,stoppedCount:0}),e[r].strategies.push(i),"running"===i.status?e[r].runningCount++:e[r].stoppedCount++):a.push(i)}}catch(o){s.e(o)}finally{s.f()}var n=Object.values(e).sort(function(t,e){var a=Math.max.apply(Math,(0,c.A)(t.strategies.map(function(t){return t.created_at||0}))),s=Math.max.apply(Math,(0,c.A)(e.strategies.map(function(t){return t.created_at||0})));return s-a});return{groups:n,ungrouped:a}},groupedBySymbol:function(){var t,e={},a=[],s=(0,d.A)(this.strategies);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i.trading_config||{},n=r.symbol;if(n&&n.trim()){e[n]||(e[n]={id:"symbol_".concat(n),baseName:n,strategies:[],runningCount:0,stoppedCount:0});var o=(0,u.A)((0,u.A)({},i),{},{displayInfo:{strategyName:i.strategy_name||i.group_base_name||"Unnamed",timeframe:r.timeframe||"-",indicatorName:i.indicator_name||i.indicator_config&&i.indicator_config.name||"-"}});e[n].strategies.push(o),"running"===i.status?e[n].runningCount++:e[n].stoppedCount++}else a.push(i)}}catch(c){s.e(c)}finally{s.f()}var l=Object.values(e).sort(function(t,e){return t.baseName.localeCompare(e.baseName)});return{groups:l,ungrouped:a}},unconfiguredChannels:function(){var t=[];return this.notifyChannelsUi.includes("telegram")&&(this.userNotificationSettings.telegram_bot_token||this.userNotificationSettings.telegram_chat_id||t.push("Telegram")),this.notifyChannelsUi.includes("email")&&(this.userNotificationSettings.email||t.push("Email")),this.notifyChannelsUi.includes("discord")&&(this.userNotificationSettings.discord_webhook||t.push("Discord")),this.notifyChannelsUi.includes("webhook")&&(this.userNotificationSettings.webhook_url||t.push("Webhook")),t}},data:function(){return{topTab:"overview",loading:!1,loadingRecords:!1,strategies:[],selectedStrategy:null,showFormModal:!1,creationMode:"simple",showAdvancedSettings:!1,pendingRouteIndicatorId:"",lastAutoStrategyName:"",strategyMode:"",strategyCode:"",pendingScriptTemplateKey:"",showModeSelector:!1,strategyType:"indicator",selectedMarketCategory:"Crypto",currentStep:0,saving:!1,loadingIndicators:!1,availableIndicators:[],selectedIndicator:null,indicatorParams:[],indicatorParamValues:{},cryptoSymbols:kt,loadingWatchlist:!1,watchlist:[],exchangeOptions:St,currentExchangeId:"",currentBrokerId:"ibkr",connectionTestResult:null,indicatorsLoaded:!1,editingStrategy:null,currentEquity:null,equityPollingTimer:null,backtestCollapseKeys:["risk"],trailingEnabledUi:!1,entryPctMaxUi:100,aiFilterEnabledUi:!1,isEditMode:!1,supportedIPs:[],executionModeUi:"signal",liveDisclaimerAckUi:!1,notifyChannelsUi:["browser"],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},loadingExchangeCredentials:!1,exchangeCredentials:[],showExchangeAccountModal:!1,saveCredentialUi:!1,suppressApiClearOnce:!1,selectedSymbols:[],crossSectionalSymbols:[],collapsedGroups:{},groupByMode:"strategy",showAddSymbolModal:!1,addSymbolMarket:"Crypto",addSymbolMarketTypes:[{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],addSymbolKeyword:"",searchingSymbol:!1,symbolSearchResults:[],selectedAddSymbol:null,hasSearchedSymbol:!1,addingSymbol:!1,hotSymbols:[],loadingHotSymbols:!1,searchTimer:null,assistantGuideDismissed:!1}},beforeCreate:function(){this.form=this.$form.createForm(this)},mounted:function(){var t=this;this.restoreAssistantGuidePreference(),"strategy"!==this.$route.query.tab&&"create"!==this.$route.query.mode||(this.topTab="strategy"),this.loadStrategies(),this.loadUserNotificationSettings(),"create"===this.$route.query.mode&&this.$nextTick(function(){var e=t.$route.query.indicator_id;e?(t.strategyMode="signal",t.creationMode="simple",t.pendingRouteIndicatorId=String(e),t._openCreateModal()):t.handleCreateStrategy()})},beforeDestroy:function(){this.stopEquityPolling()},methods:{restoreAssistantGuidePreference:function(){try{this.assistantGuideDismissed="1"===window.localStorage.getItem(this.assistantGuideStorageKey)}catch(t){this.assistantGuideDismissed=!1}},dismissAssistantGuide:function(){this.assistantGuideDismissed=!0;try{window.localStorage.setItem(this.assistantGuideStorageKey,"1")}catch(t){}},goToStrategyTab:function(){this.topTab="strategy"},openCreateStrategyFromGuide:function(){var t=this;this.topTab="strategy",this.$nextTick(function(){t.handleCreateStrategy()})},loadUserNotificationSettings:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,h.vF)();case 1:a=e.v,1===a.code&&a.data&&(t.userNotificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadWatchlist:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingWatchlist=!0,e.p=1,e.n=2,(0,m.Qo)({userid:1});case 2:a=e.v,a&&1===a.code?t.watchlist=Array.isArray(a.data)?a.data:[]:t.watchlist=[],e.n=4;break;case 3:e.p=3,e.v,t.watchlist=[];case 4:return e.p=4,t.loadingWatchlist=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCloseAddSymbolModal:function(){this.showAddSymbolModal=!1,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1},handleAddSymbolMarketChange:function(t){this.addSymbolMarket=t,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1,this.loadHotSymbols(t)},handleSymbolSearchInputChange:function(t){var e=this,a=t.target.value;if(this.addSymbolKeyword=a,this.searchTimer&&clearTimeout(this.searchTimer),!a||""===a.trim())return this.symbolSearchResults=[],this.hasSearchedSymbol=!1,void(this.selectedAddSymbol=null);this.searchTimer=setTimeout(function(){e.searchSymbolsInModal(a)},500)},handleSearchSymbol:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t&&t.trim()){a.n=1;break}return a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return e.$message.warning(e.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:if(!(e.symbolSearchResults.length>0)){a.n=3;break}return a.a(2);case 3:e.hasSearchedSymbol&&0===e.symbolSearchResults.length?e.handleDirectAdd():e.searchSymbolsInModal(t);case 4:return a.a(2)}},a)}))()},searchSymbolsInModal:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&""!==t.trim()){a.n=1;break}return e.symbolSearchResults=[],e.hasSearchedSymbol=!1,a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return a.a(2);case 2:return e.searchingSymbol=!0,e.hasSearchedSymbol=!0,a.p=3,a.n=4,(0,m._3)({market:e.addSymbolMarket,keyword:t.trim()});case 4:s=a.v,s&&1===s.code&&Array.isArray(s.data)?e.symbolSearchResults=s.data:e.symbolSearchResults=[],a.n=6;break;case 5:a.p=5,a.v,e.symbolSearchResults=[];case 6:return a.p=6,e.searchingSymbol=!1,a.f(6);case 7:return a.a(2)}},a,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.addSymbolKeyword&&this.addSymbolKeyword.trim()?this.addSymbolMarket?this.selectedAddSymbol={market:this.addSymbolMarket,symbol:this.addSymbolKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},handleSelectAddSymbol:function(t){this.selectedAddSymbol={market:this.addSymbolMarket,symbol:t.symbol,name:t.name||""}},loadHotSymbols:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t||(t=e.addSymbolMarket||"Crypto"),t){a.n=1;break}return a.a(2);case 1:return e.loadingHotSymbols=!0,a.p=2,a.n=3,(0,m.z6)({market:t,limit:10});case 3:s=a.v,s&&1===s.code&&s.data?e.hotSymbols=s.data:e.hotSymbols=[],a.n=5;break;case 4:a.p=4,a.v,e.hotSymbols=[];case 5:return a.p=5,e.loadingHotSymbols=!1,a.f(5);case 6:return a.a(2)}},a,null,[[2,4,5,6]])}))()},handleConfirmAddSymbol:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r,n,l,d;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a="",s="",!t.selectedAddSymbol){e.n=1;break}a=t.selectedAddSymbol.market,s=t.selectedAddSymbol.symbol.toUpperCase(),e.n=4;break;case 1:if(!t.addSymbolKeyword||!t.addSymbolKeyword.trim()){e.n=3;break}if(t.addSymbolMarket){e.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),e.a(2);case 2:a=t.addSymbolMarket,s=t.addSymbolKeyword.trim().toUpperCase(),e.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),e.a(2);case 4:return t.addingSymbol=!0,e.p=5,e.n=6,(0,m.dp)({userid:1,market:a,symbol:s});case 6:if(i=e.v,!i||1!==i.code){e.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),e.n=7,t.loadWatchlist();case 7:r="".concat(a,":").concat(s),t.isEditMode?(t.form.setFieldsValue({symbol:r}),t.handleWatchlistSymbolChange(r)):(t.selectedSymbols.includes(r)||(t.selectedSymbols=[].concat((0,c.A)(t.selectedSymbols),[r])),t.handleMultiSymbolChange(t.selectedSymbols)),t.handleCloseAddSymbolModal(),e.n=9;break;case 8:t.$message.error((null===i||void 0===i?void 0:i.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:e.n=11;break;case 10:e.p=10,d=e.v,l=(null===d||void 0===d||null===(n=d.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.msg)||(null===d||void 0===d?void 0:d.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(l);case 11:return e.p=11,t.addingSymbol=!1,e.f(11);case 12:return e.a(2)}},e,null,[[5,10,11,12]])}))()},filterWatchlistOption:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===s||String(s).toLowerCase().includes(String(t||"").toLowerCase())},filterWatchlistOptionWithAdd:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===s||String(s).toLowerCase().includes(String(t||"").toLowerCase())},handleMultiSymbolChangeWithAdd:function(t){if(t&&t.includes("__add_symbol_option__"))return this.selectedSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);this.handleMultiSymbolChange(t)},handleStrategyTypeChange:function(t){var e=t.target.value;"single"===e&&(this.crossSectionalSymbols=[])},handleCrossSectionalSymbolChange:function(t){if(t&&t.includes("__add_symbol_option__"))return this.crossSectionalSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(this.crossSectionalSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),s=e.slice(0,a);this.selectedMarketCategory=s||"Crypto"}}},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},handleWatchlistSymbolChange:function(t){var e=this;if("__add_symbol_option__"===t)return this.$nextTick(function(){e.form.setFieldsValue({symbol:void 0})}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(t&&"string"===typeof t&&t.includes(":")){var a=t.indexOf(":"),s=t.slice(0,a);if(this.selectedMarketCategory=s||"Crypto","Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var i=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!i){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}}},handleSimpleSymbolChange:function(t){if("__add_symbol_option__"===t)return this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);var e=t?[t]:[];this.handleMultiSymbolChange(e)},handleMultiSymbolChange:function(t){if(this.selectedSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),s=e.slice(0,a);this.selectedMarketCategory=s||"Crypto"}}if("Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var i=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!i){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}},loadExchangeCredentials:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingExchangeCredentials=!0,e.p=1,e.n=2,(0,g.IA)({user_id:1});case 2:a=e.v,a&&1===a.code?t.exchangeCredentials=a.data&&a.data.items||[]:(t.exchangeCredentials=[],t.$message.warning((null===a||void 0===a?void 0:a.msg)||t.$t("trading-assistant.messages.loadFailed"))),e.n=4;break;case 3:e.p=3,e.v,t.exchangeCredentials=[],t.$message.warning(t.$t("trading-assistant.exchange.testFailed"));case 4:return e.p=4,t.loadingExchangeCredentials=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},goToIndicatorAnalysisCreate:function(){this.$router.push("/indicator-analysis")},handleExchangeAccountCreated:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return a.n=1,e.loadExchangeCredentials();case 1:if(s=t&&(t.id||t.credential_id),!s){a.n=3;break}try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:s})}catch(r){}return a.n=2,e.handleCredentialSelectChange(s);case 2:a.n=4;break;case 3:if(1!==e.exchangeCredentials.length){a.n=4;break}i=e.exchangeCredentials[0].id;try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:i})}catch(r){}return a.n=4,e.handleCredentialSelectChange(i);case 4:return a.a(2)}},a)}))()},formatCredentialLabel:function(t){if(!t)return"";var e=(t.name||"").trim(),a=t.exchange_id||"",s=t.api_key_hint||"";return e?"".concat(a.toUpperCase()," - ").concat(e," (").concat(s,")"):"".concat(a.toUpperCase()," (").concat(s,")")},isCredentialCompatible:function(t){if(!t||!t.exchange_id)return!0;var e=(t.exchange_id||"").toLowerCase(),a=this.selectedMarketCategory||"Crypto";if("mt5"===e)return"Forex"===a;if("ibkr"===e)return"USStock"===a;var s=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex","deepcoin"];return!s.includes(e)||"Crypto"===a},handleCredentialSelectChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t){a.n=1;break}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 1:if(s=e.exchangeCredentials.find(function(e){return String(e.id)===String(t)}),!s){a.n=5;break}if(i=(s.exchange_id||"").toLowerCase(),"mt5"!==i||"Forex"===e.selectedMarketCategory){a.n=2;break}e.$message.error(e.$t("trading-assistant.validation.mt5OnlyForForex"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 2:if("ibkr"!==i||"USStock"===e.selectedMarketCategory){a.n=3;break}e.$message.error(e.$t("trading-assistant.validation.ibkrOnlyForUSStock"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 3:if(r=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"],!r.includes(i)||"Crypto"===e.selectedMarketCategory){a.n=4;break}e.$message.error(e.$t("trading-assistant.validation.cryptoExchangeOnlyForCrypto"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 4:e.currentExchangeId=s.exchange_id||"";case 5:e.connectionTestResult=null;case 6:return a.a(2)}},a)}))()},onSaveCredentialChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.saveCredentialUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({save_credential:e})}catch(a){}},onExecutionModeChange:function(t){var e=t&&t.target?t.target.value:t;if(this.executionModeUi=e||"signal",!this.canUseLiveTrading&&"signal"!==this.executionModeUi){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(a){}}},setExecutionModeUi:function(t){var e=t||"signal";this.onExecutionModeChange(e);try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:e})}catch(a){}},onLiveDisclaimerAckChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.liveDisclaimerAckUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:e})}catch(a){}},onNotifyChannelsChange:function(t){this.notifyChannelsUi=Array.isArray(t)?t:[]},formatCurrency:function(t){return null===t||void 0===t?"-":"$"+t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnl:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+"$"+Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnlPercent:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+Math.abs(t).toFixed(2)+"%"},loadStrategies:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,p.EM)();case 2:a=e.v,1===a.code?(s=a.data.strategies||[],t.strategies=s,t.selectedStrategy&&(i=t.strategies.find(function(e){return e.id===t.selectedStrategy.id}),t.selectedStrategy=i||null)):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadFailed")),e.n=4;break;case 3:e.p=3,e.v,t.$message.error(t.$t("trading-assistant.messages.loadFailed"));case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCreateStrategy:function(){this.isEditMode=!1,this.editingStrategy=null,this.creationMode="simple",this.strategyMode="",this.strategyCode="",this.pendingScriptTemplateKey="",this.showModeSelector=!0,this.showFormModal=!1},handleModeSelect:function(t){this.strategyMode=t,this.pendingScriptTemplateKey="",this.showModeSelector=!1,this._openCreateModal()},handleUseTemplate:function(t){this.strategyMode="script",this.pendingScriptTemplateKey=t,this.showModeSelector=!1,this._openCreateModal()},_openCreateModal:function(){var t=this;this.strategyType="indicator",this.creationMode=this.editingStrategy?"advanced":"simple",this.currentStep=0,this.currentExchangeId="",this.currentBrokerId="ibkr",this.selectedIndicator=null,this.connectionTestResult=null,this.executionModeUi="signal",this.notifyChannelsUi=["browser"],this.saveCredentialUi=!1,this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.selectedMarketCategory="Crypto",this.selectedSymbols=[],this.showAdvancedSettings=!1;var e=this.buildStrategyDefaultName();this.lastAutoStrategyName=e,this.form.resetFields(),this.form.setFieldsValue({strategy_name:e,execution_mode:"signal",notify_channels:["browser"],save_credential:!1,live_disclaimer_ack:!1,initial_capital:1e3,market_type:"swap",leverage:5,trade_direction:"long",timeframe:"15m",cs_strategy_type:"single"}),this.liveDisclaimerAckUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.loadWatchlist();case 1:return e.n=2,t.loadIndicators();case 2:t.applyPendingRouteIndicatorSelection(),t.loadExchangeCredentials();case 3:return e.a(2)}},e)})))},handleEditStrategy:function(t){var e=this;"running"!==t.status?(this.strategyType="indicator",this.strategyMode=t.strategy_mode||"signal",this.creationMode="advanced",this.strategyCode=t.strategy_code||"",this.pendingScriptTemplateKey="",this.isEditMode=!0,this.editingStrategy=t,this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.form.resetFields(),this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return e.loadWatchlist(),e.loadIndicators(),e.loadExchangeCredentials(),a.n=1,e.loadStrategyDataToForm(t);case 1:return a.a(2)}},a)})))):this.$message.warning(this.$t("trading-assistant.messages.runningWarning"))},loadStrategyDataToForm:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r,l,c,d,u,p,m,g,h,_,y,f,v,b,x,C,k,S,w,$,A,T,P,M,I,F,N,D,V,E,R,z,L,q,U,K,O,B,G,H;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(e.indicatorsLoaded){a.n=1;break}return a.n=1,e.loadIndicators();case 1:return a.n=2,e.$nextTick();case 2:return e.selectedMarketCategory=t.market_category||"Crypto",d=t.execution_mode||"signal",e.executionModeUi=d,e.liveDisclaimerAckUi="live"===d,u=t.notification_config&&t.notification_config.channels||["browser"],e.notifyChannelsUi=Array.isArray(u)?u:["browser"],p=!1,m=!1,t.trading_config&&(f=t.trading_config||{},v=f.trailing&&"object"===(0,n.A)(f.trailing)?f.trailing:null,p=void 0!==f.trailing_enabled?!!f.trailing_enabled:!(!v||!v.enabled),b=f.enable_ai_filter,m=!0===b||"true"===b||1===b||"1"===b,x=f.scale&&"object"===(0,n.A)(f.scale)?f.scale:null,C=f.position&&"object"===(0,n.A)(f.position)?f.position:null,k=new Set(["risk"]),(f.trend_add_enabled||f.dca_add_enabled||x&&(null!==(g=x.trendAdd)&&void 0!==g&&g.enabled||null!==(h=x.dcaAdd)&&void 0!==h&&h.enabled))&&k.add("scale"),(f.trend_reduce_enabled||f.adverse_reduce_enabled||x&&(null!==(_=x.trendReduce)&&void 0!==_&&_.enabled||null!==(y=x.adverseReduce)&&void 0!==y&&y.enabled))&&k.add("reduce"),(void 0!==f.entry_pct||C&&void 0!==C.entryPct)&&k.add("position"),e.backtestCollapseKeys=Array.from(k)),e.trailingEnabledUi=p,e.aiFilterEnabledUi=m,a.n=3,e.$nextTick();case 3:return e.form.setFieldsValue({enable_ai_filter:m}),a.n=4,e.$nextTick();case 4:if(e.form.setFieldsValue({execution_mode:e.executionModeUi,live_disclaimer_ack:e.liveDisclaimerAckUi,notify_channels:e.notifyChannelsUi,notify_email:(null===(s=t.notification_config)||void 0===s||null===(s=s.targets)||void 0===s?void 0:s.email)||"",notify_phone:(null===(i=t.notification_config)||void 0===i||null===(i=i.targets)||void 0===i?void 0:i.phone)||"",notify_telegram:(null===(r=t.notification_config)||void 0===r||null===(r=r.targets)||void 0===r?void 0:r.telegram)||"",notify_discord:(null===(l=t.notification_config)||void 0===l||null===(l=l.targets)||void 0===l?void 0:l.discord)||"",notify_webhook:(null===(c=t.notification_config)||void 0===c||null===(c=c.targets)||void 0===c?void 0:c.webhook)||""}),!t.indicator_config||!t.indicator_config.indicator_id){a.n=7;break}if(S=t.indicator_config.indicator_id,w=e.availableIndicators.find(function(t){return String(t.id)===String(S)}),!w){a.n=6;break}return A=String(w.id),e.form.setFieldsValue({indicator_id:A}),a.n=5,e.handleIndicatorChange(A);case 5:T=null===($=t.trading_config)||void 0===$?void 0:$.indicator_params,T&&"object"===(0,n.A)(T)&&Object.keys(T).forEach(function(t){t in e.indicatorParamValues&&e.$set(e.indicatorParamValues,t,T[t])}),a.n=7;break;case 6:e.form.setFieldsValue({indicator_id:String(S)});case 7:if(!t.exchange_config){a.n=11;break}if(P=t.exchange_config.exchange_id||"",M="live"===e.executionModeUi,I=["Crypto","USStock","Forex"].includes(e.selectedMarketCategory),F="USStock"===e.selectedMarketCategory,N="Forex"===e.selectedMarketCategory,!M||!I){a.n=10;break}if(!F){a.n=8;break}e.currentBrokerId=P||"ibkr",e.form.setFieldsValue({broker_id:P||"ibkr",ibkr_host:t.exchange_config.ibkr_host||"127.0.0.1",ibkr_port:t.exchange_config.ibkr_port||7497,ibkr_client_id:t.exchange_config.ibkr_client_id||1,ibkr_account:t.exchange_config.ibkr_account||""}),a.n=10;break;case 8:if(!N){a.n=9;break}e.currentBrokerId=P||"mt5",e.form.setFieldsValue({forex_broker_id:P||"mt5",mt5_server:t.exchange_config.mt5_server||"",mt5_login:t.exchange_config.mt5_login||"",mt5_password:t.exchange_config.mt5_password||"",mt5_terminal_path:t.exchange_config.mt5_terminal_path||""}),a.n=10;break;case 9:if(e.currentExchangeId=P||t.exchange_config.exchange_id||"",D=t.exchange_config.credential_id,!D){a.n=10;break}return e.form.setFieldsValue({credential_id:D}),a.n=10,e.handleCredentialSelectChange(D);case 10:F||N?e.currentBrokerId=P||(N?"mt5":"ibkr"):e.currentExchangeId=P;case 11:if(t.trading_config){if(V=t.trading_config||{},E=V.trailing&&"object"===(0,n.A)(V.trailing)?V.trailing:null,R=V.scale&&"object"===(0,n.A)(V.scale)?V.scale:null,z=V.position&&"object"===(0,n.A)(V.position)?V.position:null,L=V.strategy_type||t.strategy_type||"single","cross_sectional"===L)if(e.form.setFieldsValue({cs_strategy_type:"cross_sectional",portfolio_size:V.portfolio_size||10,long_ratio:V.long_ratio||.5,rebalance_frequency:V.rebalance_frequency||"daily"}),V.symbol_list&&Array.isArray(V.symbol_list))e.crossSectionalSymbols=V.symbol_list;else if(t.symbol_list)try{q="string"===typeof t.symbol_list?JSON.parse(t.symbol_list):t.symbol_list,Array.isArray(q)&&(e.crossSectionalSymbols=q)}catch(o){e.crossSectionalSymbols=[]}else e.crossSectionalSymbols=[];else e.form.setFieldsValue({cs_strategy_type:"single"}),e.crossSectionalSymbols=[];U=R&&R.trendAdd?R.trendAdd:null,K=R&&R.dcaAdd?R.dcaAdd:null,O=R&&R.trendReduce?R.trendReduce:null,B=R&&R.adverseReduce?R.adverseReduce:null,G=V.symbol,H="string"===typeof G&&G.includes(":")?G:"".concat(e.selectedMarketCategory,":").concat(G),e.form.setFieldsValue({strategy_name:t.strategy_name,symbol:H,initial_capital:V.initial_capital,leverage:V.leverage,trade_direction:V.trade_direction||"long",timeframe:V.timeframe||"1H",market_type:"futures"===V.market_type?"swap":V.market_type||"swap",take_profit_pct:V.take_profit_pct||0,stop_loss_pct:V.stop_loss_pct||0,trailing_enabled:p,trailing_stop_pct:void 0!==V.trailing_stop_pct?V.trailing_stop_pct||0:E&&E.pct||0,trailing_activation_pct:void 0!==V.trailing_activation_pct?V.trailing_activation_pct||0:E&&E.activationPct||0,trend_add_enabled:void 0!==V.trend_add_enabled?!!V.trend_add_enabled:!(!U||!U.enabled),trend_add_step_pct:void 0!==V.trend_add_step_pct?V.trend_add_step_pct||0:U&&U.stepPct||0,trend_add_size_pct:void 0!==V.trend_add_size_pct?V.trend_add_size_pct||0:U&&U.sizePct||0,trend_add_max_times:void 0!==V.trend_add_max_times?V.trend_add_max_times||0:U&&U.maxTimes||0,dca_add_enabled:void 0!==V.dca_add_enabled?!!V.dca_add_enabled:!(!K||!K.enabled),dca_add_step_pct:void 0!==V.dca_add_step_pct?V.dca_add_step_pct||0:K&&K.stepPct||0,dca_add_size_pct:void 0!==V.dca_add_size_pct?V.dca_add_size_pct||0:K&&K.sizePct||0,dca_add_max_times:void 0!==V.dca_add_max_times?V.dca_add_max_times||0:K&&K.maxTimes||0,trend_reduce_enabled:void 0!==V.trend_reduce_enabled?!!V.trend_reduce_enabled:!(!O||!O.enabled),trend_reduce_step_pct:void 0!==V.trend_reduce_step_pct?V.trend_reduce_step_pct||0:O&&O.stepPct||0,trend_reduce_size_pct:void 0!==V.trend_reduce_size_pct?V.trend_reduce_size_pct||0:O&&O.sizePct||0,trend_reduce_max_times:void 0!==V.trend_reduce_max_times?V.trend_reduce_max_times||0:O&&O.maxTimes||0,adverse_reduce_enabled:void 0!==V.adverse_reduce_enabled?!!V.adverse_reduce_enabled:!(!B||!B.enabled),adverse_reduce_step_pct:void 0!==V.adverse_reduce_step_pct?V.adverse_reduce_step_pct||0:B&&B.stepPct||0,adverse_reduce_size_pct:void 0!==V.adverse_reduce_size_pct?V.adverse_reduce_size_pct||0:B&&B.sizePct||0,adverse_reduce_max_times:void 0!==V.adverse_reduce_max_times?V.adverse_reduce_max_times||0:B&&B.maxTimes||0,entry_pct:0===V.entry_pct||V.entry_pct?V.entry_pct:z&&z.entryPct?z.entryPct:100,enable_ai_filter:m}),e.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()})}case 12:return a.a(2)}},a)}))()},handleSelectStrategy:function(t){this.selectedStrategy=t,this.currentEquity=null,this.loadStrategyDetails(),this.startEquityPolling()},loadStrategyDetails:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,n,l,c,u,m,g,h,_,y,f;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedStrategy){e.n=1;break}return e.a(2,Promise.resolve());case 1:return e.p=1,e.n=2,Promise.all([(0,p.Yx)(t.selectedStrategy.id),(0,p.oK)(t.selectedStrategy.id)]);case 2:if(a=e.v,s=(0,r.A)(a,2),i=s[0],n=s[1],l=null,1===i.code&&i.data&&(Array.isArray(i.data)&&i.data.length>0?(c=i.data[i.data.length-1],l=c.equity):(m=(null===(u=t.selectedStrategy.trading_config)||void 0===u?void 0:u.initial_capital)||t.selectedStrategy.initial_capital,l=m||null)),g=0,1===n.code&&n.data){h=n.data.positions||n.data.items||[],_=(0,d.A)(h);try{for(_.s();!(y=_.n()).done;)f=y.value,g+=parseFloat(f.unrealized_pnl||f.unrealizedPnl||0)}catch(o){_.e(o)}finally{_.f()}}t.currentEquity=null!==l?l+g:null,e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},startEquityPolling:function(){var t=this;this.stopEquityPolling(),this.selectedStrategy&&(this.loadStrategyDetails(),this.equityPollingTimer=setInterval(function(){t.loadStrategyDetails()},1e4))},stopEquityPolling:function(){this.equityPollingTimer&&(clearInterval(this.equityPollingTimer),this.equityPollingTimer=null)},handleCloseModal:function(){this.showFormModal=!1,this.editingStrategy=null,this.isEditMode=!1,this.strategyType="indicator",this.strategyMode="",this.strategyCode="",this.pendingScriptTemplateKey="",this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.indicatorsLoaded=!1,this.availableIndicators=[],this.pendingRouteIndicatorId="",this.lastAutoStrategyName="",this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showAdvancedSettings=!1,this.executionModeUi="signal",this.liveDisclaimerAckUi=!1,this.form.resetFields()},handleRefresh:function(){this.loadStrategies(),this.showFormModal=!1},handleMenuClick:function(t,e){switch(t){case"start":this.handleStartStrategy(e.id);break;case"stop":this.handleStopStrategy(e.id);break;case"edit":this.handleEditStrategy(e);break;case"backtest":this.handleBacktestStrategy(e);break;case"delete":this.handleDeleteStrategy(e);break}},toggleGroup:function(t){this.$set(this.collapsedGroups,t,!this.collapsedGroups[t])},handleBacktestStrategy:function(t){t&&t.id&&this.$router.push({path:"/backtest-center",query:{tab:"strategy",strategy_id:String(t.id)}})},handleGroupMenuClick:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i,r;return(0,o.A)().w(function(s){while(1)switch(s.n){case 0:i=e.strategies.map(function(t){return t.id}),r=t,s.n="startAll"===r?1:"stopAll"===r?3:"deleteAll"===r?5:7;break;case 1:return s.n=2,a.handleBatchStartStrategies(i,e.baseName);case 2:return s.a(3,7);case 3:return s.n=4,a.handleBatchStopStrategies(i,e.baseName);case 4:return s.a(3,7);case 5:return s.n=6,a.handleBatchDeleteStrategies(i,e.baseName);case 6:return s.a(3,7);case 7:return s.a(2)}},s)}))()},handleBatchStartStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.UH)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStartSuccess",{count:r})),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchStartFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStartFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchStopStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.GF)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStopSuccess",{count:r})),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchStopFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStopFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchDeleteStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i;return(0,o.A)().w(function(s){while(1)switch(s.n){case 0:i=a.$t("trading-assistant.messages.batchDeleteConfirm",{count:t.length,name:e}),a.$confirm({class:a.isDarkTheme?"ta-strategy-confirm-modal":"",title:a.$t("trading-assistant.deleteAll"),content:i,okText:a.$t("trading-assistant.deleteAll"),okType:"danger",cancelText:a.$t("trading-assistant.form.cancel"),onOk:function(){var e=(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.xQ)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchDeleteSuccess",{count:r})),a.selectedStrategy&&t.includes(a.selectedStrategy.id)&&(a.selectedStrategy=null,a.stopEquityPolling()),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchDeleteFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchDeleteFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}));function s(){return e.apply(this,arguments)}return s}()});case 1:return s.a(2)}},s)}))()},handleStartStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.mV)(t);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.startSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="running")):e.$message.error(s.msg||e.$t("trading-assistant.messages.startFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.startFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleStopStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.Ke)(t);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.stopSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="stopped")):e.$message.error(s.msg||e.$t("trading-assistant.messages.stopFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.stopFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleDeleteStrategy:function(t){var e=this,a=this.$t("trading-assistant.messages.deleteConfirmWithName",{name:t.strategy_name});this.$confirm({class:this.isDarkTheme?"ta-strategy-confirm-modal":"",title:this.$t("trading-assistant.deleteStrategy"),content:a,okText:this.$t("trading-assistant.deleteStrategy"),okType:"danger",cancelText:this.$t("trading-assistant.form.cancel"),onOk:function(){var a=(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.v_)(t.id);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.deleteSuccess")),e.selectedStrategy&&e.selectedStrategy.id===t.id&&(e.selectedStrategy=null,e.stopEquityPolling()),e.loadStrategies()):e.$message.error(s.msg||e.$t("trading-assistant.messages.deleteFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.deleteFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}));function s(){return a.apply(this,arguments)}return s}()})},getStatusColor:function(t){var e={running:"green",stopped:"default",error:"red"};return e[t]||"default"},getStatusText:function(t){return this.$t("trading-assistant.status.".concat(t))||t},getStrategyTypeText:function(t){return this.$t("trading-assistant.strategyType.".concat(t))||t},getTradeDirectionText:function(t){if(!t)return"";var e={long:this.$t("trading-assistant.form.tradeDirectionLong")||"做多",short:this.$t("trading-assistant.form.tradeDirectionShort")||"做空",both:this.$t("trading-assistant.form.tradeDirectionBoth")||"双向"};return e[t]||t},handleIndicatorSelectFocus:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.indicatorsLoaded||t.loadingIndicators){e.n=1;break}return e.n=1,t.loadIndicators();case 1:return e.a(2)}},e)}))()},loadIndicators:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.loadingIndicators){e.n=1;break}return e.a(2,new Promise(function(e){var a=setInterval(function(){t.loadingIndicators||(clearInterval(a),e())},100)}));case 1:if(!t.indicatorsLoaded){e.n=2;break}return e.a(2,Promise.resolve());case 2:return a=t.$store.getters.userInfo||{},s=a.id||1,t.loadingIndicators=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:s}});case 4:i=e.v,1===i.code&&i.data?(r=i.data.map(function(t){return{id:t.id,name:t.name,description:t.description,type:t.indicator_type||t.indicatorType||"python",code:t.code,is_buy:t.is_buy,source:1===t.is_buy?"bought":"custom"}}),t.availableIndicators=r,t.indicatorsLoaded=!0,t.applyPendingRouteIndicatorSelection()):(t.availableIndicators=[],t.$message.warning(i.msg||t.$t("trading-assistant.messages.loadIndicatorsFailed"))),e.n=6;break;case 5:e.p=5,e.v,t.availableIndicators=[],t.$message.warning(t.$t("trading-assistant.messages.loadIndicatorsFailed"));case 6:return e.p=6,t.loadingIndicators=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleIndicatorChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=String(t),e.selectedIndicator=e.availableIndicators.find(function(t){return String(t.id)===s}),e.applyAutoStrategyName(e.selectedIndicator),e.indicatorParams=[],e.indicatorParamValues={},!t){a.n=4;break}return a.p=1,a.n=2,e.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:t}});case 2:i=a.v,i&&1===i.code&&Array.isArray(i.data)&&(e.indicatorParams=i.data,r={},i.data.forEach(function(t){r[t.name]=t.default}),e.indicatorParamValues=r),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},handleMarketTypeChange:function(t){var e=t.target.value;"spot"===e&&this.form.setFieldsValue({trade_direction:"long",leverage:1})},recalcEntryPctMaxUi:function(){if(this.form){var t=!!this.form.getFieldValue("trend_add_enabled"),e=!!this.form.getFieldValue("dca_add_enabled"),a=Number(this.form.getFieldValue("trend_add_max_times")||0),s=Number(this.form.getFieldValue("dca_add_max_times")||0),i=Number(this.form.getFieldValue("trend_add_size_pct")||0),r=Number(this.form.getFieldValue("dca_add_size_pct")||0),n=(t?a*i:0)+(e?s*r:0),o=Math.max(0,Math.min(100,100-n));this.entryPctMaxUi=o}else this.entryPctMaxUi=100},normalizeEntryPct:function(){if(this.form){var t=Number(this.form.getFieldValue("entry_pct")||0),e=Number(this.entryPctMaxUi||100);t>e&&this.form.setFieldsValue({entry_pct:e})}},onTrendAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({dca_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onDcaAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({trend_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onScaleParamsChange:function(){var t=this;this.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()})},onEntryPctChange:function(){var t=this;this.$nextTick(function(){return t.normalizeEntryPct()})},onTrailingToggle:function(t){this.form&&(this.trailingEnabledUi=!!t,t||this.form.setFieldsValue({trailing_stop_pct:0,trailing_activation_pct:0}))},onAiFilterToggle:function(t){this.aiFilterEnabledUi=!!t;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({enable_ai_filter:!!t})}catch(e){}},filterIndicatorOption:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.label)||"";return s.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorOptionLabel:function(t){return t?t.description?"".concat(t.name," - ").concat(t.description):t.name:""},buildStrategyDefaultName:function(t){var e=t&&t.name?t.name:this.$t("trading-assistant.form.defaultStrategyName"),a=this.$t("trading-assistant.form.defaultStrategySuffix");return"".concat(e).concat(a)},applyAutoStrategyName:function(t){if(!this.editingStrategy&&this.form&&"script"!==this.strategyMode){var e=this.buildStrategyDefaultName(t),a=this.form.getFieldValue("strategy_name");a&&a!==this.lastAutoStrategyName||(this.form.setFieldsValue({strategy_name:e}),this.lastAutoStrategyName=e)}},applyPendingRouteIndicatorSelection:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s;return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.pendingRouteIndicatorId&&t.form&&!t.loadingIndicators){e.n=1;break}return e.a(2);case 1:if(a=String(t.pendingRouteIndicatorId),s=t.availableIndicators.find(function(t){return String(t.id)===a}),s){e.n=2;break}return e.a(2);case 2:return t.form.setFieldsValue({indicator_id:a}),e.n=3,t.handleIndicatorChange(a);case 3:t.pendingRouteIndicatorId="";case 4:return e.a(2)}},e)}))()},filterSymbolOption:function(t,e){return e.componentOptions.children[0].text.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorTypeColor:function(t){var e={trend:"blue",momentum:"green",volatility:"orange",volume:"purple",custom:"cyan",python:"geekblue",pine:"magenta"};return e[t]||"cyan"},getIndicatorTypeName:function(t){var e="trading-assistant.indicatorType.".concat(t),a=this.$t(e);return a!==e?a:t},getExchangeName:function(t){if(t.labelKey){var e="trading-assistant.exchangeNames.".concat(t.labelKey),a=this.$t(e);return a===e?t.value.charAt(0).toUpperCase()+t.value.slice(1):a}return t.label||t.value},getExchangeDisplayName:function(t){if(!t)return"";var e=this.exchangeOptions.find(function(e){return e.value===t});return e?this.getExchangeName(e):t.charAt(0).toUpperCase()+t.slice(1)},getExchangeTagColor:function(t){var e={binance:"gold",okx:"blue",coinbaseexchange:"cyan",kraken:"purple",bitfinex:"geekblue",huobi:"orange",gate:"green",mexc:"lime",kucoin:"volcano",bybit:"red",bitget:"magenta",bitmex:"red",deribit:"blue",phemex:"cyan",bitmart:"geekblue",bitstamp:"purple",bittrex:"orange",poloniex:"green",gemini:"lime",cryptocom:"volcano",blockchaincom:"magenta",bitflyer:"red",upbit:"blue",bithumb:"cyan",coinone:"purple",zb:"geekblue",lbank:"orange",bibox:"green",bigone:"lime",bitrue:"volcano",coinex:"magenta",ftx:"red",ftxus:"blue",binanceus:"gold",binancecoinm:"gold",binanceusdm:"gold",ibkr:"green"};return e[t]||"default"},handleApiConfigChange:function(){this.connectionTestResult=null},getModalPopupContainer:function(){return window.document.body},handleBrokerSelectChange:function(t){this.currentBrokerId=t||"ibkr",this.connectionTestResult=null},handleForexBrokerSelectChange:function(t){this.currentBrokerId=t||"mt5",this.connectionTestResult=null},handleExchangeSelectChange:function(t){var e=this;this.currentExchangeId=t||"",this.connectionTestResult=null,this.suppressApiClearOnce?this.suppressApiClearOnce=!1:this.$nextTick(function(){var t={api_key:void 0,secret_key:void 0,passphrase:void 0,enable_demo_trading:!1};setTimeout(function(){e.form.setFieldsValue(t)},100)})},getPlaceholder:function(t){var e={okx:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},okex:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},binance:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},coinbaseexchange:{api_key:"请输入API Key(或Key Name)",secret_key:"请输入API Secret(或Private Key)",passphrase:"请输入Passphrase(Legacy Pro API需要)"},kucoin:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase"},gate:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},mexc:{api_key:"请输入Access Key",secret_key:"请输入Secret Key"},kraken:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitfinex:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bybit:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitget:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(Legacy Pro API需要)"}},a=e[this.currentExchangeId]||{};if(a[t])return a[t];var s={api_key:this.$t("trading-assistant.placeholders.inputApiKey"),secret_key:this.$t("trading-assistant.placeholders.inputSecretKey"),passphrase:this.$t("trading-assistant.placeholders.inputPassphrase")};return s[t]||this.$t("trading-assistant.placeholders.inputApiKey")},handleNext:function(){var t=this;if("script"!==this.strategyMode){if(0===this.currentStep){var e=["indicator_id","strategy_name"];e.push("initial_capital","market_type","leverage","trade_direction","timeframe"),this.isEditMode&&e.push("symbol"),this.form.validateFields(e,function(e,a){if(!e){if(!t.isEditMode){var s=t.form.getFieldValue("cs_strategy_type")||"single";if("cross_sectional"===s){if(!t.crossSectionalSymbols||0===t.crossSectionalSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}else if(!t.selectedSymbols||0===t.selectedSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}try{var i=a&&a.market_type||t.form.getFieldValue("market_type");"spot"===i&&t.form.setFieldsValue({leverage:1,trade_direction:"long"})}catch(r){}t.backtestCollapseKeys=["risk"];try{t.trailingEnabledUi=!!t.form.getFieldValue("trailing_enabled")}catch(r){t.trailingEnabledUi=!1}t.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()}),t.isSimpleMode&&!t.editingStrategy?t.currentStep=2:t.currentStep++}})}else if(1===this.currentStep){try{var a=this.form.getFieldValue("execution_mode")||"signal";this.executionModeUi=a;var s=this.form.getFieldValue("notify_channels")||["browser"];this.notifyChannelsUi=Array.isArray(s)?s:["browser"]}catch(o){}this.currentStep++}}else if(0===this.currentStep){var i=["strategy_name","symbol","initial_capital","timeframe"];this.form.validateFields(i,function(e){e||(t.currentStep=1)})}else if(1===this.currentStep){if(!this.strategyCode||this.strategyCode.trim().length<20)return void this.$message.warning(this.$t("trading-assistant.editor.codeHint"));try{var r=this.form.getFieldValue("execution_mode")||"signal";this.executionModeUi=r;var n=this.form.getFieldValue("notify_channels")||["browser"];this.notifyChannelsUi=Array.isArray(n)?n:["browser"]}catch(o){}this.currentStep=2}},handlePrev:function(){if(this.currentStep>0){if("script"===this.strategyMode)return void this.currentStep--;this.isSimpleMode&&!this.editingStrategy&&2===this.currentStep?this.currentStep=0:this.currentStep--}},handleSubmit:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:t.form.validateFields(function(){var e=(0,l.A)((0,o.A)().m(function e(a,s){var i,r,n,l,c,d,u,m,g,h,_,y,f,v,b,x,C,k,S,w,$,A,T,P,M,I;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a){e.n=15;break}if(e.p=1,t.saving=!0,"script"!==t.strategyMode||t.editingStrategy){e.n=3;break}return i={channels:s.notify_channels||["browser"],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},r=s.symbol||"",n="Crypto","string"===typeof r&&r.includes(":")&&(l=r.indexOf(":"),n=r.slice(0,l)||"Crypto",r=r.slice(l+1)),c="futures"===s.market_type?"swap":s.market_type||"swap",d=null!=s.leverage?s.leverage:5,u=s.trade_direction||"both","spot"===c?(d=1,u="long"):(d<1&&(d=1),d>125&&(d=125)),m={user_id:1,strategy_name:s.strategy_name,strategy_type:"ScriptStrategy",strategy_mode:"script",strategy_code:t.strategyCode,market_category:n,execution_mode:s.execution_mode||"signal",notification_config:i,trading_config:{initial_capital:s.initial_capital||1e3,leverage:d,trade_direction:u,timeframe:s.timeframe||"15m",market_type:c,symbol:r,commission:null!=s.commission?s.commission:0,slippage:null!=s.slippage?s.slippage:0}},e.n=2,(0,p.WM)(m);case 2:return g=e.v,1===g.code?(t.$message.success(t.$t("trading-assistant.messages.createSuccess")),t.handleRefresh()):t.$message.error(g.msg||t.$t("trading-assistant.messages.createFailed")),t.saving=!1,t.showFormModal=!1,e.a(2);case 3:if(h=t.canUseLiveTrading&&"live"===s.execution_mode,!h){e.n=4;break}if(_=s.credential_id,_){e.n=4;break}return t.$message.warning(t.$t("trading-assistant.validation.credentialRequired")),t.saving=!1,e.a(2);case 4:if(y={channels:s.notify_channels||[],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},y.channels&&0!==y.channels.length){e.n=5;break}return t.$message.warning(t.$t("trading-assistant.validation.notifyChannelRequired")),t.saving=!1,e.a(2);case 5:if(f=String(s.indicator_id),v=t.availableIndicators.find(function(t){return String(t.id)===f}),v){e.n=6;break}return t.$message.error(t.$t("trading-assistant.validation.indicatorRequired")),t.saving=!1,e.a(2);case 6:if(b=!!t.aiFilterEnabledUi,x="futures"===s.market_type?"swap":s.market_type||"swap",C=s.leverage||1,k=s.trade_direction||"long","spot"===x?(C=1,k="long",t.$message.info(t.$t("trading-assistant.messages.spotLimitations"))):(C<1&&(C=1),C>125&&(C=125)),S={strategy_name:s.strategy_name,market_category:t.selectedMarketCategory||"Crypto",execution_mode:s.execution_mode||"signal",notification_config:y,indicator_config:{indicator_id:v.id,indicator_name:v.name,indicator_code:v.code||""},exchange_config:h?t.isIBKRMarket?{exchange_id:s.broker_id||t.currentBrokerId||"ibkr",ibkr_host:s.ibkr_host||"127.0.0.1",ibkr_port:s.ibkr_port||7497,ibkr_client_id:s.ibkr_client_id||1,ibkr_account:s.ibkr_account||""}:t.isMT5Market?{exchange_id:s.forex_broker_id||t.currentBrokerId||"mt5",mt5_server:s.mt5_server||"",mt5_login:s.mt5_login||"",mt5_password:s.mt5_password||"",mt5_terminal_path:s.mt5_terminal_path||""}:{credential_id:s.credential_id,exchange_id:t.currentExchangeId||void 0}:void 0,trading_config:{initial_capital:s.initial_capital,leverage:C,trade_direction:k,timeframe:s.timeframe,market_type:x,margin_mode:"cross",signal_mode:"confirmed",take_profit_pct:s.take_profit_pct||0,stop_loss_pct:s.stop_loss_pct||0,trailing_enabled:!!s.trailing_enabled,trailing_stop_pct:s.trailing_stop_pct||0,trailing_activation_pct:s.trailing_activation_pct||0,trend_add_enabled:!!s.trend_add_enabled,trend_add_step_pct:s.trend_add_step_pct||0,trend_add_size_pct:s.trend_add_size_pct||0,trend_add_max_times:s.trend_add_max_times||0,dca_add_enabled:!!s.dca_add_enabled,dca_add_step_pct:s.dca_add_step_pct||0,dca_add_size_pct:s.dca_add_size_pct||0,dca_add_max_times:s.dca_add_max_times||0,trend_reduce_enabled:!!s.trend_reduce_enabled,trend_reduce_step_pct:s.trend_reduce_step_pct||0,trend_reduce_size_pct:s.trend_reduce_size_pct||0,trend_reduce_max_times:s.trend_reduce_max_times||0,adverse_reduce_enabled:!!s.adverse_reduce_enabled,adverse_reduce_step_pct:s.adverse_reduce_step_pct||0,adverse_reduce_size_pct:s.adverse_reduce_size_pct||0,adverse_reduce_max_times:s.adverse_reduce_max_times||0,entry_pct:0===s.entry_pct||s.entry_pct?s.entry_pct:100,commission:s.commission||0,slippage:s.slippage||0,enable_ai_filter:b,indicator_params:t.indicatorParamValues,strategy_type:s.cs_strategy_type||"single",symbol_list:"cross_sectional"===s.cs_strategy_type?t.crossSectionalSymbols:void 0,portfolio_size:"cross_sectional"===s.cs_strategy_type?s.portfolio_size||10:void 0,long_ratio:"cross_sectional"===s.cs_strategy_type?s.long_ratio||.5:void 0,rebalance_frequency:"cross_sectional"===s.cs_strategy_type?s.rebalance_frequency||"daily":void 0}},!t.editingStrategy){e.n=8;break}return $=s.symbol,"string"===typeof $&&$.includes(":")&&(A=$.indexOf(":"),S.market_category=$.slice(0,A)||S.market_category,$=$.slice(A+1)),S.trading_config.symbol=$,e.n=7,(0,p.P7)(t.editingStrategy.id,S);case 7:w=e.v,e.n=12;break;case 8:if(S.user_id=1,S.strategy_type="IndicatorStrategy","cross_sectional"!==s.cs_strategy_type){e.n=10;break}return S.strategy_type="IndicatorStrategy",S.trading_config.symbol=null,e.n=9,(0,p.WM)(S);case 9:w=e.v,e.n=12;break;case 10:return S.symbols=t.selectedSymbols,e.n=11,(0,p.Ox)(S);case 11:w=e.v;case 12:1===w.code?(t.isEditMode?t.$message.success(t.$t("trading-assistant.messages.updateSuccess")):(P=s.cs_strategy_type||"single",M="cross_sectional"===P?t.crossSectionalSymbols.length:t.selectedSymbols.length,I=(null===(T=w.data)||void 0===T?void 0:T.total_created)||M,t.$message.success(t.$t("trading-assistant.messages.batchCreateSuccess",{count:I}))),t.handleRefresh()):t.$message.error(w.msg||(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"))),e.n=14;break;case 13:e.p=13,e.v,t.$message.error(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"));case 14:return e.p=14,t.saving=!1,e.f(14);case 15:return e.a(2)}},e,null,[[1,13,14,15]])}));return function(t,a){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},getFormValues:function(){var t=this;return new Promise(function(e,a){t.form.validateFields(function(t,s){t?a(t):e(s)})})},getDropdownContainer:function(t){return document.body}}},Tt=At,Pt=(0,C.A)(Tt,s,i,!1,null,"533cb131",null),Mt=Pt.exports},84841:function(t,e,a){a.d(e,{DK:function(){return v},E$:function(){return d},Gl:function(){return m},O0:function(){return c},TK:function(){return n},aU:function(){return i},cw:function(){return l},d$:function(){return x},hG:function(){return o},hl:function(){return g},kg:function(){return r},nY:function(){return f},r7:function(){return u},rx:function(){return _},v9:function(){return h},vF:function(){return p},vi:function(){return b},wq:function(){return y}});var s=a(75769);function i(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function c(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function d(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function p(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function m(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function g(){return(0,s.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function h(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function _(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function y(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function f(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function v(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function b(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function x(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/254-legacy.f0b6cf6d.js b/frontend/dist/js/254-legacy.f0b6cf6d.js deleted file mode 100644 index 4265a1e..0000000 --- a/frontend/dist/js/254-legacy.f0b6cf6d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[254],{12254:function(t,e,a){a.r(e),a.d(e,{default:function(){return Mt}});a(52675),a(89463),a(28706),a(74423),a(48598),a(62010),a(2892),a(9868),a(21699);var s=function(){var t,e=this,a=e._self._c;return a("div",{staticClass:"trading-assistant",class:{"theme-dark":e.isDarkTheme}},[e.showAssistantGuide?a("div",{staticClass:"assistant-guide-bar"},[a("div",{staticClass:"assistant-guide-copy"},[a("div",{staticClass:"assistant-guide-eyebrow"},[e._v(e._s(e.$t("trading-assistant.guide.eyebrow")))]),a("div",{staticClass:"assistant-guide-title"},[e._v(e._s(e.$t("trading-assistant.guide.title")))]),a("div",{staticClass:"assistant-guide-desc"},[e._v(e._s(e.$t("trading-assistant.guide.desc")))])]),a("div",{staticClass:"assistant-guide-steps"},[a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("1")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step1Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step1Desc")))])])]),a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("2")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step2Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step2Desc")))])])]),a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("3")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step3Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step3Desc")))])])])]),a("div",{staticClass:"assistant-guide-actions"},[a("a-button",{on:{click:e.goToStrategyTab}},[a("a-icon",{attrs:{type:"appstore"}}),e._v(" "+e._s(e.$t("trading-assistant.guide.secondary"))+" ")],1),a("a-button",{attrs:{type:"primary"},on:{click:e.openCreateStrategyFromGuide}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.guide.primary"))+" ")],1),a("a-button",{staticClass:"assistant-guide-close",on:{click:e.dismissAssistantGuide}},[a("a-icon",{attrs:{type:"close"}})],1)],1)]):e._e(),a("a-tabs",{staticClass:"top-level-tabs",attrs:{animated:!1},model:{value:e.topTab,callback:function(t){e.topTab=t},expression:"topTab"}},[a("a-tab-pane",{key:"overview",attrs:{tab:e.$t("trading-assistant.tabs.overview")}},["overview"===e.topTab?a("dashboard-overview",{attrs:{"hide-setup-guide":!0}}):e._e()],1),a("a-tab-pane",{key:"strategy",attrs:{tab:e.$t("trading-assistant.tabs.strategyManage")}},[a("a-row",{staticClass:"strategy-layout",attrs:{gutter:24}},[a("a-col",{staticClass:"strategy-list-col",attrs:{xs:24,sm:24,md:10,lg:8,xl:8}},[a("a-card",{staticClass:"strategy-list-card",attrs:{bordered:!1}},[a("div",{staticClass:"card-title",attrs:{slot:"title"},slot:"title"},[a("span",[e._v(e._s(e.$t("trading-assistant.strategyList")))]),a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1),a("div",{staticClass:"group-mode-switch"},[a("span",{staticClass:"group-mode-label"},[e._v(e._s(e.$t("trading-assistant.groupBy"))+":")]),a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.groupByMode,callback:function(t){e.groupByMode=t},expression:"groupByMode"}},[a("a-radio-button",{attrs:{value:"strategy"}},[a("a-icon",{attrs:{type:"folder"}}),e._v(" "+e._s(e.$t("trading-assistant.groupByStrategy"))+" ")],1),a("a-radio-button",{attrs:{value:"symbol"}},[a("a-icon",{attrs:{type:"stock"}}),e._v(" "+e._s(e.$t("trading-assistant.groupBySymbol"))+" ")],1)],1)],1),a("a-spin",{attrs:{spinning:e.loading}},[e.loading||0!==e.strategies.length?a("div",{staticClass:"strategy-grouped-list"},[e._l(e.groupedStrategies.groups,function(t){return a("div",{key:t.id,staticClass:"strategy-group"},[a("div",{staticClass:"strategy-group-header",on:{click:function(a){return e.toggleGroup(t.id)}}},[a("div",{staticClass:"group-header-left"},[a("a-icon",{staticClass:"collapse-icon",attrs:{type:e.collapsedGroups[t.id]?"right":"down"}}),a("a-icon",{staticClass:"group-icon",attrs:{type:"symbol"===e.groupByMode?"stock":"folder"}}),a("span",{staticClass:"group-name"},[e._v(e._s(t.baseName))]),a("a-tag",{attrs:{size:"small",color:"blue"}},[e._v(e._s(t.strategies.length)+" "+e._s("symbol"===e.groupByMode?e.$t("trading-assistant.strategyCount"):e.$t("trading-assistant.symbolCount")))])],1),a("div",{staticClass:"group-header-right",on:{click:function(t){t.stopPropagation()}}},[t.runningCount>0?a("span",{staticClass:"group-status running"},[e._v(" "+e._s(t.runningCount)+" "+e._s(e.$t("trading-assistant.status.running"))+" ")]):e._e(),t.stoppedCount>0?a("span",{staticClass:"group-status stopped"},[e._v(" "+e._s(t.stoppedCount)+" "+e._s(e.$t("trading-assistant.status.stopped"))+" ")]):e._e(),a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleGroupMenuClick(s,t)}},slot:"overlay"},[a("a-menu-item",{key:"startAll"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startAll"))+" ")],1),a("a-menu-item",{key:"stopAll"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopAll"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"deleteAll",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteAll"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)]),a("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsedGroups[t.id],expression:"!collapsedGroups[group.id]"}],staticClass:"strategy-group-content"},e._l(t.strategies,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id},{"strategy-list-item--strategy-group":"strategy"===e.groupByMode}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{class:["strategy-name-wrapper",{"strategy-name-wrapper--grouped":"symbol"===e.groupByMode}]},["strategy"===e.groupByMode?[a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e(),"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e()]:[a("span",{staticClass:"info-item strategy-name-text"},[a("a-icon",{attrs:{type:"thunderbolt"}}),e._v(" "+e._s(t.displayInfo?t.displayInfo.strategyName:t.strategy_name)+" ")],1),t.displayInfo&&t.displayInfo.timeframe?a("a-tag",{attrs:{size:"small",color:"cyan"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.displayInfo.timeframe)+" ")],1):e._e(),t.displayInfo&&t.displayInfo.indicatorName&&"-"!==t.displayInfo.indicatorName?a("a-tag",{attrs:{size:"small",color:"purple"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"line-chart"}}),e._v(" "+e._s(t.displayInfo.indicatorName)+" ")],1):e._e(),"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e()]],2)]),a("div",{staticClass:"strategy-item-info"},["strategy"===e.groupByMode?[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),t.exchange_config&&t.exchange_config.exchange_id?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),t.trading_config&&t.trading_config.timeframe?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.trading_config.timeframe)+" ")],1):e._e()]:e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])],2)]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleMenuClick(s,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-item",{key:"backtest"},[a("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("dashboard.indicator.action.backtest"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])}),0)])}),e._l(e.groupedStrategies.ungrouped,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},[t.exchange_config&&t.exchange_config.exchange_id?a("a-tag",{staticClass:"exchange-tag",attrs:{color:e.getExchangeTagColor(t.exchange_config.exchange_id),size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e()],1)]),a("div",{staticClass:"strategy-item-info"},[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleMenuClick(s,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-item",{key:"backtest"},[a("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("dashboard.indicator.action.backtest"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])})],2):a("div",{staticClass:"strategy-empty-state"},[a("a-empty",{attrs:{description:e.$t("trading-assistant.empty.title")}}),a("div",{staticClass:"strategy-empty-desc"},[e._v(e._s(e.$t("trading-assistant.empty.desc")))]),a("a-button",{attrs:{type:"primary"},on:{click:e.openCreateStrategyFromGuide}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.empty.primary"))+" ")],1)],1)])],1)],1),a("a-col",{staticClass:"strategy-detail-col",attrs:{xs:24,sm:24,md:14,lg:16,xl:16}},[e.selectedStrategy?a("div",{staticClass:"strategy-detail-panel"},[a("a-card",{staticClass:"strategy-header-card",attrs:{bordered:!1}},[a("div",{staticClass:"strategy-header"},[a("div",{staticClass:"header-left"},[a("div",{staticClass:"strategy-title-row"},[a("h3",{staticClass:"strategy-title"},[e._v(e._s(e.selectedStrategy.strategy_name))]),a("div",{staticClass:"status-badge",class:["status-".concat(e.selectedStrategy.status)]},[a("span",{staticClass:"status-dot"}),e._v(" "+e._s(e.getStatusText(e.selectedStrategy.status))+" ")])]),a("div",{staticClass:"key-stats-grid"},[e.selectedStrategy.initial_capital||e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.initial_capital?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon investment"},[a("a-icon",{attrs:{type:"wallet"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalInvestment")))]),a("div",{staticClass:"stat-value"},[e._v("$"+e._s(parseFloat(e.selectedStrategy.initial_capital||(null===(t=e.selectedStrategy.trading_config)||void 0===t?void 0:t.initial_capital)||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})))])])]):e._e(),null!==e.currentEquity?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon equity"},[a("a-icon",{attrs:{type:"fund"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.currentEquity")))]),a("div",{staticClass:"stat-value",class:e.getEquityColorClass},[e._v(e._s(e.formatCurrency(e.currentEquity)))])])]):e._e(),null!==e.totalPnl?a("div",{staticClass:"stat-card pnl-card",class:{profit:e.totalPnl>0,loss:e.totalPnl<0}},[a("div",{staticClass:"stat-icon pnl"},[a("a-icon",{attrs:{type:e.totalPnl>=0?"rise":"fall"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalPnl")))]),a("div",{staticClass:"stat-value",class:e.getPnlColorClass},[e._v(" "+e._s(e.formatPnl(e.totalPnl))+" "),a("span",{staticClass:"pnl-percent"},[e._v("("+e._s(e.formatPnlPercent(e.totalPnlPercent))+")")])])])]):e._e()]),a("div",{staticClass:"strategy-tags"},[e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"stock"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.symbol))])],1):e._e(),e.selectedStrategy.indicator_config&&e.selectedStrategy.indicator_config.indicator_name?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"line-chart"}}),a("span",[e._v(e._s(e.selectedStrategy.indicator_config.indicator_name))])],1):e._e(),e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"thunderbolt"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.leverage||1)+"x")])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.trade_direction?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"swap"}}),a("span",[e._v(e._s(e.getTradeDirectionText(e.selectedStrategy.trading_config.trade_direction)))])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.timeframe?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.timeframe))])],1):e._e()])]),a("div",{staticClass:"header-right"},["stopped"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn start-btn",attrs:{type:"primary",size:"large"},on:{click:function(t){return e.handleStartStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn stop-btn",attrs:{type:"danger",size:"large"},on:{click:function(t){return e.handleStopStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e()],1)])]),a("a-card",{staticClass:"strategy-content-card",attrs:{bordered:!1}},[a("a-tabs",{attrs:{defaultActiveKey:"positions"}},[a("a-tab-pane",{key:"positions",attrs:{tab:e.$t("trading-assistant.tabs.positions")}},[a("position-records",{attrs:{"strategy-id":e.selectedStrategy.id,"market-type":e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.market_type||"swap",leverage:e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.leverage||1,loading:e.loadingRecords,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"trades",attrs:{tab:e.$t("trading-assistant.tabs.tradingRecords")}},[a("trading-records",{attrs:{"strategy-id":e.selectedStrategy.id,loading:e.loadingRecords,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"performance",attrs:{tab:e.$t("trading-assistant.tabs.performance")}},[a("performance-analysis",{attrs:{"strategy-id":e.selectedStrategy.id,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"logs",attrs:{tab:e.$t("trading-assistant.tabs.logs")}},[a("strategy-logs",{attrs:{"strategy-id":e.selectedStrategy.id,"is-dark":e.isDarkTheme}})],1)],1)],1)],1):a("div",{staticClass:"strategy-empty-detail"},[a("div",{staticClass:"strategy-empty-detail-card"},[a("div",{staticClass:"strategy-empty-detail-icon"},[a("a-icon",{attrs:{type:"deployment-unit"}})],1),a("h3",{staticClass:"strategy-empty-detail-title"},[e._v(e._s(e.$t("trading-assistant.emptyDetail.title")))]),a("p",{staticClass:"strategy-empty-detail-hint"},[e._v(e._s(e.$t("trading-assistant.emptyDetail.hint")))]),a("div",{staticClass:"strategy-empty-detail-actions"},[a("a-button",{attrs:{type:"primary"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1)])])])],1),a("a-modal",{staticClass:"mode-selector-modal",attrs:{visible:e.showModeSelector,title:e.$t("trading-assistant.selectMode"),width:e.isMobile?"95%":700,footer:null,maskClosable:!0,bodyStyle:{padding:"16px 24px"}},on:{cancel:function(t){e.showModeSelector=!1}}},[a("strategy-type-selector",{attrs:{selected:e.strategyMode,"is-dark":e.isDarkTheme},on:{select:e.handleModeSelect,"use-template":e.handleUseTemplate}})],1),a("a-modal",{attrs:{visible:e.showFormModal,title:e.editingStrategy?e.$t("trading-assistant.editStrategy"):e.$t("trading-assistant.createStrategy")+("script"===e.strategyMode?" - "+e.$t("trading-assistant.strategyMode.script"):""),width:e.isMobile?"95%":1120,confirmLoading:e.saving,maskClosable:!1,wrapClassName:e.strategyFormWrapClass,bodyStyle:{maxHeight:"76vh",overflowY:"auto",paddingBottom:"8px"}},on:{ok:e.handleSubmit,cancel:e.handleCloseModal}},[a("a-spin",{attrs:{spinning:e.loadingIndicators}},[e.editingStrategy||"script"===e.strategyMode?e._e():a("div",{staticClass:"creation-mode-toggle"},[a("div",{staticClass:"mode-meta"},[a("div",{staticClass:"mode-title"},[e._v(e._s(e.$t("trading-assistant.selectMode")))]),a("div",{staticClass:"mode-hint"},[e._v(e._s(e.isSimpleMode?e.$t("trading-assistant.form.simpleModeHint"):e.$t("trading-assistant.form.advancedModeHint")))])]),a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.creationMode,callback:function(t){e.creationMode=t},expression:"creationMode"}},[a("a-radio-button",{attrs:{value:"simple"}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.form.simpleMode"))+" ")],1),a("a-radio-button",{attrs:{value:"advanced"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.advancedMode"))+" ")],1)],1)],1),a("a-steps",{staticClass:"steps-container",attrs:{current:e.displayCurrentStep}},["script"===e.strategyMode?[a("a-step",{attrs:{title:e.$t("trading-assistant.form.simpleStep1")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.editor.title")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.form.step3Signal")}})]:[a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep1"):e.$t("trading-assistant.form.step1")}}),e.isAdvancedMode||e.editingStrategy?a("a-step",{attrs:{title:e.$t("trading-assistant.form.step2Params")}}):e._e(),a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep2"):e.$t("trading-assistant.form.step3Signal")}})]],2),a("div",{staticClass:"form-container"},[a("div",{directives:[{name:"show",rawName:"v-show",value:0===e.currentStep,expression:"currentStep === 0"}],staticClass:"step-content"},["indicator"===e.strategyType&&"script"!==e.strategyMode?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicator")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["indicator_id",{rules:[{required:!0,message:e.$t("trading-assistant.validation.indicatorRequired")}]}],expression:"['indicator_id', { rules: [{ required: true, message: $t('trading-assistant.validation.indicatorRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectIndicator"),"show-search":"",optionLabelProp:"label","filter-option":e.filterIndicatorOption,loading:e.loadingIndicators,getPopupContainer:function(t){return t.parentNode}},on:{focus:e.handleIndicatorSelectFocus,change:e.handleIndicatorChange}},e._l(e.availableIndicators,function(t){return a("a-select-option",{key:String(t.id),attrs:{value:String(t.id),label:e.getIndicatorOptionLabel(t)}},[a("div",{staticClass:"indicator-option"},[a("div",{staticClass:"indicator-option-main"},[a("span",{staticClass:"indicator-name"},[e._v(e._s(t.name))]),t.description?a("span",{staticClass:"indicator-option-desc"},[e._v(e._s(t.description))]):e._e()]),t.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(t.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(t.type))+" ")]):e._e()],1)])}),1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorHint"))+" ")]),e.loadingIndicators||e.availableIndicators&&0!==e.availableIndicators.length?e._e():a("a-alert",{staticStyle:{"margin-top":"12px"},attrs:{type:"info","show-icon":"",message:e.$t("trading-assistant.indicatorEmpty.title"),description:e.$t("trading-assistant.indicatorEmpty.desc")}},[a("template",{slot:"action"},[a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.goToIndicatorAnalysisCreate}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.indicatorEmpty.cta"))+" ")],1)],1)],2)],1),e.selectedIndicator?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorDescription")}},[a("div",{staticClass:"selected-indicator-card"},[a("div",{staticClass:"selected-indicator-header"},[a("span",{staticClass:"selected-indicator-name"},[e._v(e._s(e.selectedIndicator.name))]),e.selectedIndicator.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(e.selectedIndicator.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(e.selectedIndicator.type))+" ")]):e._e()],1),a("div",{staticClass:"indicator-description"},[e._v(" "+e._s(e.selectedIndicator.description||e.$t("trading-assistant.form.noDescription"))+" ")])])]):e._e(),e.indicatorParams.length>0?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorParams")}},[a("div",{staticClass:"indicator-params-form"},[a("a-row",{attrs:{gutter:16}},e._l(e.indicatorParams,function(t){return a("a-col",{key:t.name,attrs:{xs:24,sm:12,md:8}},[a("div",{staticClass:"param-item"},[a("label",{staticClass:"param-label"},[e._v(" "+e._s(t.name)+" "),t.description?a("a-tooltip",{attrs:{title:t.description}},[a("a-icon",{staticStyle:{"margin-left":"4px",color:"#999"},attrs:{type:"question-circle"}})],1):e._e()],1),"int"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"float"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"bool"===t.type?a("a-switch",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):a("a-input",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}})],1)])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"8px"}},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorParamsHint"))+" ")])],1)]):e._e(),a("a-divider"),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyNameHint"))+" ")])],1),e.isSimpleMode&&!e.editingStrategy?a("div",{staticClass:"simple-essentials-card"},[a("div",{staticClass:"simple-mode-hero"},[a("div",{staticClass:"simple-mode-hero-main"},[a("div",{staticClass:"simple-mode-kicker"},[e._v(e._s(e.$t("trading-assistant.form.simpleModePreset")))]),a("div",{staticClass:"simple-mode-hero-desc"},[e._v(e._s(e.$t("trading-assistant.form.simpleModePresetValue")))])]),a("div",{staticClass:"simple-mode-badges"},[a("a-tag",[e._v("15m")]),a("a-tag",{attrs:{color:"blue"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-tag",{attrs:{color:"purple"}},[e._v("5x")])],1)]),a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.simpleModeSectionCore")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.simpleModeSectionCoreDesc")))])]),a("a-form-item",{staticClass:"compact-form-item"},[a("span",{staticClass:"required-label",attrs:{slot:"label"},slot:"label"},[a("span",{staticClass:"required-star"},[e._v("*")]),e._v(e._s(e.$t("trading-assistant.form.symbol"))+" ")]),a("a-select",{attrs:{value:e.selectedSymbols[0],placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,"allow-clear":"",getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleSimpleSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolHintCrypto"))+" ")])],1),a("a-row",{staticClass:"compact-grid-row",attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.leverage")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}})],1)],1)],1),a("a-row",{staticClass:"compact-grid-row",attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1)],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1):e._e(),e.isAdvancedMode||e.editingStrategy?a("div",{staticClass:"advanced-settings-shell"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.advancedMode")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.advancedModeHint")))])]),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["cs_strategy_type",{initialValue:"single"}],expression:"['cs_strategy_type', { initialValue: 'single' }]"}],on:{change:e.handleStrategyTypeChange}},[a("a-radio",{attrs:{value:"single"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeSingle")))]),a("a-radio",{attrs:{value:"cross_sectional"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeCrossSectional")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyTypeHint"))+" ")])],1)],1):e._e(),(e.isAdvancedMode||e.editingStrategy)&&"cross_sectional"===e.form.getFieldValue("cs_strategy_type")?[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbolList")}},[a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:5},on:{change:e.handleCrossSectionalSymbolChange},model:{value:e.crossSectionalSymbols,callback:function(t){e.crossSectionalSymbols=t},expression:"crossSectionalSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolListHint"))+" ")])],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.portfolioSize")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["portfolio_size",{initialValue:10,rules:[{required:!0,message:e.$t("trading-assistant.validation.portfolioSizeRequired")}]}],expression:"['portfolio_size', { initialValue: 10, rules: [{ required: true, message: $t('trading-assistant.validation.portfolioSizeRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:100,step:1}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.portfolioSizeHint"))+" ")])],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.longRatio")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["long_ratio",{initialValue:.5,rules:[{required:!0,message:e.$t("trading-assistant.validation.longRatioRequired")}]}],expression:"['long_ratio', { initialValue: 0.5, rules: [{ required: true, message: $t('trading-assistant.validation.longRatioRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:1,step:.1,precision:2}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.longRatioHint"))+" ")])],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.rebalanceFrequency")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["rebalance_frequency",{initialValue:"daily"}],expression:"['rebalance_frequency', { initialValue: 'daily' }]"}],staticStyle:{width:"100%"}},[a("a-select-option",{attrs:{value:"daily"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceDaily")))]),a("a-select-option",{attrs:{value:"weekly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceWeekly")))]),a("a-select-option",{attrs:{value:"monthly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceMonthly")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.rebalanceFrequencyHint"))+" ")])],1)]:e._e(),(e.isAdvancedMode||e.editingStrategy)&&"cross_sectional"!==e.form.getFieldValue("cs_strategy_type")?a("a-form-item",{attrs:{label:e.isEditMode?e.$t("trading-assistant.form.symbol"):e.$t("trading-assistant.form.symbols")}},[e.isEditMode?a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2):a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:3},on:{change:e.handleMultiSymbolChangeWithAdd},model:{value:e.selectedSymbols,callback:function(t){e.selectedSymbols=t},expression:"selectedSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.isEditMode?e.$t("trading-assistant.form.symbolHintCrypto"):e.$t("trading-assistant.form.symbolsHint"))+" ")])],1):e._e(),e.isAdvancedMode||e.editingStrategy?a("div",[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.marketTypeHint"))+" ")])],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}}),a("div",{staticClass:"form-item-hint"},["spot"===e.form.getFieldValue("market_type")?a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.spotLeverageFixed"))+" ")]):a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.leverageHint"))+" ")])])],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1),"spot"===e.form.getFieldValue("market_type")?a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.spotOnlyLongHint"))+" ")]):e._e()],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}})],1)],1):e._e()],2)],1):e._e(),"script"===e.strategyMode?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}})],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbol")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{initialValue:1e3,rules:[{required:!0}]}],expression:"['initial_capital', { initialValue: 1000, rules: [{ required: true }] }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}]},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5}],expression:"['leverage', { initialValue: 5 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:125,step:1}})],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"both"}],expression:"['trade_direction', { initialValue: 'both' }]"}],attrs:{getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-select-option",{attrs:{value:"short"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionShort")))]),a("a-select-option",{attrs:{value:"both"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionBoth")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.commission")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["commission",{initialValue:.05}],expression:"['commission', { initialValue: 0.05 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.slippage")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["slippage",{initialValue:0}],expression:"['slippage', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1)],1)],1)],1):e._e()]),"script"===e.strategyMode?a("div",{directives:[{name:"show",rawName:"v-show",value:1===e.currentStep,expression:"currentStep === 1"}],staticClass:"step-content"},[a("strategy-editor",{ref:"strategyEditor",attrs:{"is-dark":e.isDarkTheme,"user-id":1,visible:e.showFormModal&&"script"===e.strategyMode&&1===e.currentStep,"initial-template-key":e.pendingScriptTemplateKey},model:{value:e.strategyCode,callback:function(t){e.strategyCode=t},expression:"strategyCode"}})],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:"script"!==e.strategyMode&&1===e.currentStep,expression:"strategyMode !== 'script' && currentStep === 1"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-collapse",{staticClass:"strategy-params-collapse",attrs:{bordered:!1},model:{value:e.backtestCollapseKeys,callback:function(t){e.backtestCollapseKeys=t},expression:"backtestCollapseKeys"}},[a("a-collapse-panel",{key:"risk",attrs:{header:e.$t("dashboard.indicator.backtest.panel.risk")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.stopLossPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["stop_loss_pct",{initialValue:3}],expression:"['stop_loss_pct', { initialValue: 3 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.takeProfitPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["take_profit_pct",{initialValue:6}],expression:"['take_profit_pct', { initialValue: 6 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trailing_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrailingToggle}})],1)],1),a("a-col",{attrs:{span:12}})],1),e.trailingEnabledUi?[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingStopPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_stop_pct",{initialValue:0}],expression:"['trailing_stop_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingActivationPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_activation_pct",{initialValue:0}],expression:"['trailing_activation_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1)]:e._e()],2),a("a-collapse-panel",{key:"scale",attrs:{header:e.$t("dashboard.indicator.backtest.panel.scale")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrendAddToggle}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['dca_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onDcaAddToggle}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_step_pct",{initialValue:0}],expression:"['trend_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_step_pct",{initialValue:0}],expression:"['dca_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_size_pct",{initialValue:0}],expression:"['trend_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_size_pct",{initialValue:0}],expression:"['dca_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_max_times",{initialValue:0}],expression:"['trend_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_max_times",{initialValue:0}],expression:"['dca_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1)],1)],1),a("a-collapse-panel",{key:"reduce",attrs:{header:e.$t("dashboard.indicator.backtest.panel.reduce")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['adverse_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_step_pct",{initialValue:0}],expression:"['trend_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_step_pct",{initialValue:0}],expression:"['adverse_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_size_pct",{initialValue:0}],expression:"['trend_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_size_pct",{initialValue:0}],expression:"['adverse_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_max_times",{initialValue:0}],expression:"['trend_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_max_times",{initialValue:0}],expression:"['adverse_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1)],1)],1),a("a-collapse-panel",{key:"position",attrs:{header:e.$t("dashboard.indicator.backtest.panel.position")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.entryPct"),help:e.$t("dashboard.indicator.backtest.hint.entryPctMax",{maxPct:Number(e.entryPctMaxUi||0).toFixed(0)})}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_pct",{initialValue:100}],expression:"['entry_pct', { initialValue: 100 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:e.entryPctMaxUi,step:.1,precision:4},on:{change:e.onEntryPctChange}})],1)],1),a("a-col",{attrs:{span:12}})],1)],1)],1),a("div",{staticClass:"ai-filter-box"},[a("div",{staticClass:"ai-filter-header"},[a("div",{staticClass:"ai-filter-title"},[a("a-icon",{attrs:{type:"robot"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.enableAiFilter")))])],1),a("a-switch",{attrs:{checked:e.aiFilterEnabledUi},on:{change:e.onAiFilterToggle}})],1),a("div",{staticClass:"ai-filter-hint"},[e._v(e._s(e.$t("trading-assistant.form.enableAiFilterHint")))])])],1)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],staticClass:"step-content"},[a("a-form",{attrs:{form:e.form,layout:"vertical",autocomplete:"off"}},[a("div",{staticClass:"execution-step-layout"},[a("div",{staticClass:"execution-step-hero"},[a("div",{staticClass:"simple-mode-kicker"},[e._v(e._s(e.$t("trading-assistant.form.step2HeroTitle")))]),a("div",{staticClass:"execution-step-hero-desc"},[e._v(e._s(e.$t("trading-assistant.form.step2HeroDesc")))])]),a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.executionSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.executionSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.executionMode")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["execution_mode",{initialValue:"signal"}],expression:"['execution_mode', { initialValue: 'signal' }]"}],staticStyle:{display:"none"}}),a("div",{staticClass:"execution-mode-cards"},[a("div",{class:["execution-mode-card",{active:"signal"===e.executionModeUi}],on:{click:function(t){return e.setExecutionModeUi("signal")}}},[a("div",{staticClass:"execution-mode-card-icon signal"},[a("a-icon",{attrs:{type:"notification"}})],1),a("div",{staticClass:"execution-mode-card-body"},[a("div",{staticClass:"execution-mode-card-title"},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignal")))]),a("div",{staticClass:"execution-mode-card-desc"},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignalDesc")))])]),"signal"===e.executionModeUi?a("a-icon",{staticClass:"execution-mode-card-check",attrs:{type:"check-circle",theme:"filled"}}):e._e()],1),a("div",{class:["execution-mode-card","live-card",{active:"live"===e.executionModeUi,disabled:!e.canUseLiveTrading}],on:{click:function(t){e.canUseLiveTrading&&e.setExecutionModeUi("live")}}},[a("div",{staticClass:"execution-mode-card-icon live"},[a("a-icon",{attrs:{type:"thunderbolt"}})],1),a("div",{staticClass:"execution-mode-card-body"},[a("div",{staticClass:"execution-mode-card-title"},[e._v(e._s(e.$t("trading-assistant.form.executionModeLive")))]),a("div",{staticClass:"execution-mode-card-desc"},[e._v(" "+e._s(e.canUseLiveTrading?e.$t("trading-assistant.form.executionModeLiveDesc"):e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])]),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-icon",{staticClass:"execution-mode-card-check",attrs:{type:"check-circle",theme:"filled"}}):e._e()],1)]),e.canUseLiveTrading?e._e():a("div",{staticClass:"form-item-hint execution-warn-text"},[e._v(" "+e._s(e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.title"),description:e.$t("trading-assistant.liveDisclaimer.content")}}):e._e()],1),a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.notificationSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.notificationSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.notifyChannels")}},[a("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["notify_channels",{initialValue:["browser"]}],expression:"['notify_channels', { initialValue: ['browser'] }]"}],staticClass:"notify-channel-grid",on:{change:e.onNotifyChannelsChange}},[a("a-checkbox",{attrs:{value:"browser"}},[e._v(e._s(e.$t("trading-assistant.notify.browser")))]),a("a-checkbox",{attrs:{value:"email"}},[e._v(e._s(e.$t("trading-assistant.notify.email")))]),a("a-checkbox",{attrs:{value:"telegram"}},[e._v(e._s(e.$t("trading-assistant.notify.telegram")))]),a("a-checkbox",{attrs:{value:"discord"}},[e._v(e._s(e.$t("trading-assistant.notify.discord")))]),a("a-checkbox",{attrs:{value:"webhook"}},[e._v(e._s(e.$t("trading-assistant.notify.webhook")))]),a("a-checkbox",{attrs:{value:"phone"}},[e._v(e._s(e.$t("trading-assistant.notify.phone")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(e._s(e.$t("trading-assistant.form.notifyChannelsHint")))])],1),e.unconfiguredChannels.length>0?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationConfigMissing",{channels:e.unconfiguredChannels.join(", ")}))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,2930252607)}):e.notifyChannelsUi.length>0&&!e.notifyChannelsUi.includes("browser")||e.notifyChannelsUi.length>1?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"info",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationFromProfile"))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}])}):e._e()],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.liveConnectionSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.liveConnectionSectionDesc")))])]),a("a-alert",{staticClass:"section-inline-alert",staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning","show-icon":"",message:e.$t("trading-assistant.form.liveTradingConfigTitle"),description:e.$t("trading-assistant.form.liveTradingConfigHint")}}),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.savedCredential")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["credential_id",{rules:[{required:!0,message:e.$t("profile.exchange.noCredentialHint")}],getValueFromEvent:function(t){return t||void 0}}],expression:"['credential_id', {\n rules: [{ required: true, message: $t('profile.exchange.noCredentialHint') }],\n getValueFromEvent: (val) => val || undefined\n }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSavedCredential"),"allow-clear":"","show-search":"","option-filter-prop":"children",loading:e.loadingExchangeCredentials},on:{change:e.handleCredentialSelectChange}},e._l(e.filteredExchangeCredentials,function(t){return a("a-select-option",{key:t.id,attrs:{value:t.id}},[e._v(" "+e._s(e.formatCredentialLabel(t))+" ")])}),1),a("div",{staticClass:"form-item-hint ta-credential-actions",staticStyle:{"margin-top":"6px"}},[a("a-button",{staticClass:"ta-add-cred-btn",attrs:{type:"link",size:"small"},on:{click:function(t){e.showExchangeAccountModal=!0}}},[a("a-icon",{attrs:{type:"plus-circle"}}),e._v(" "+e._s(e.$t("quickTrade.addAccountInline"))+" ")],1),a("span",{staticClass:"ta-credential-actions-sep"},[e._v("·")]),a("router-link",{attrs:{to:"/profile?tab=exchange"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),e._v(e._s(e.$t("profile.exchange.goToManage"))+" ")],1)],1),"live"===e.executionModeUi&&e.canUseLiveTrading&&!e.loadingExchangeCredentials&&0===e.filteredExchangeCredentials.length?a("a-alert",{staticStyle:{"margin-top":"10px"},attrs:{type:"warning","show-icon":"",message:e.$t("trading-assistant.noCredentialForLive.title")}},[a("template",{slot:"description"},[a("span",[e._v(e._s(e.$t("trading-assistant.noCredentialForLive.desc")))]),a("a-button",{staticStyle:{"margin-left":"8px"},attrs:{type:"primary",size:"small"},on:{click:function(t){e.showExchangeAccountModal=!0}}},[e._v(" "+e._s(e.$t("quickTrade.addAccountInline"))+" ")])],1)],2):e._e()],1)],1):e._e()])])],1)])],1),a("template",{slot:"footer"},[a("a-button",{on:{click:e.handleCloseModal}},[e._v(e._s(e.$t("trading-assistant.form.cancel")))]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep>0,expression:"currentStep > 0"}],on:{click:e.handlePrev}},[e._v(" "+e._s(e.$t("trading-assistant.form.prev"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep<2,expression:"currentStep < 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleNext}},[e._v(" "+e._s(e.$t("trading-assistant.form.next"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.editingStrategy?e.$t("trading-assistant.form.confirmEdit"):e.$t("trading-assistant.form.confirmCreate"))+" ")])],1)],2),a("a-modal",{attrs:{title:e.$t("trading-assistant.form.addSymbolTitle"),visible:e.showAddSymbolModal,confirmLoading:e.addingSymbol,width:"600px",okText:e.$t("trading-assistant.form.confirmAdd"),cancelText:e.$t("trading-assistant.form.cancel"),maskClosable:!1,keyboard:!1},on:{ok:e.handleConfirmAddSymbol,cancel:e.handleCloseAddSymbolModal}},[a("div",{staticClass:"add-symbol-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:e.handleAddSymbolMarketChange},model:{value:e.addSymbolMarket,callback:function(t){e.addSymbolMarket=t},expression:"addSymbolMarket"}},e._l(e.addSymbolMarketTypes,function(t){return a("a-tab-pane",{key:t.value,attrs:{tab:e.$t(t.i18nKey||"dashboard.analysis.market.".concat(t.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:e.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:e.searchingSymbol,size:"large","allow-clear":""},on:{search:e.handleSearchSymbol,change:e.handleSymbolSearchInputChange},model:{value:e.addSymbolKeyword,callback:function(t){e.addSymbolKeyword=t},expression:"addSymbolKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),e.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.symbolSearchResults,loading:e.searchingSymbol,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,2801225082)})],1):e._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:e.loadingHotSymbols}},[e.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.hotSymbols,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,3959834868)}):a("a-empty",{attrs:{description:e.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),e.selectedAddSymbol?a("div",{staticClass:"selected-symbol-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#52c41a","margin-right":"4px"},attrs:{type:"check-circle"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.selectedSymbol"))+" ")],1),a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:e.getMarketColor(e.addSymbolMarket)}},[e._v(e._s(e.addSymbolMarket))]),a("span",{staticClass:"symbol-code"},[e._v(e._s(e.selectedAddSymbol.symbol))]),e.selectedAddSymbol.name?a("span",{staticClass:"symbol-name"},[e._v(e._s(e.selectedAddSymbol.name))]):e._e()],1)]):e._e()],1)])],1)],1),a("exchange-account-modal",{attrs:{visible:e.showExchangeAccountModal},on:{"update:visible":function(t){e.showExchangeAccountModal=t},success:e.handleExchangeAccountCreated}})],1)},i=[],r=a(15863),n=a(44735),o=a(81127),l=a(56252),c=a(2403),d=a(57532),u=a(76338),p=(a(2008),a(50113),a(23418),a(62062),a(34782),a(26910),a(79432),a(26099),a(16034),a(31415),a(47764),a(42762),a(23500),a(62953),a(36911)),m=a(35038),g=a(42430),h=a(84841),_=a(55434),y=a(75769),f=function(){var t=this,e=t._self._c;return e("div",{staticClass:"trading-records strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[0!==t.records.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.records,loading:t.loading,pagination:{pageSize:10},size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("a-tag",{attrs:{color:t.getTradeTypeColor(a)}},[t._v(" "+t._s(t.getTradeTypeText(a))+" ")])]}},{key:"price",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"amount",fn:function(e){return[t._v(" "+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"value",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(2))+" ")]}},{key:"profit",fn:function(a,s){return[e("span",{style:{color:a>0?"#52c41a":a<0?"#f5222d":"#666"}},[t._v(" "+t._s(t.formatProfit(a,s))+" ")])]}},{key:"commission",fn:function(e){return[t._v(" "+t._s(t.formatCommission(e))+" ")]}},{key:"time",fn:function(e,a){return[t._v(" "+t._s(t.formatTime(a.created_at||e))+" ")]}}])}):e("div",{staticClass:"empty-state strategy-tab-empty"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},v=[],b=(a(27495),{name:"TradingRecords",props:{strategyId:{type:Number,required:!0},loading:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.time"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"time"}},{title:this.$t("dashboard.indicator.backtest.tradeType"),dataIndex:"type",key:"type",width:140,scopedSlots:{customRender:"type"}},{title:this.$t("trading-assistant.table.price"),dataIndex:"price",key:"price",width:120,scopedSlots:{customRender:"price"}},{title:this.$t("trading-assistant.table.amount"),dataIndex:"amount",key:"amount",width:120,scopedSlots:{customRender:"amount"}},{title:this.$t("trading-assistant.table.value"),dataIndex:"value",key:"value",width:120,scopedSlots:{customRender:"value"}},{title:this.$t("dashboard.indicator.backtest.profit"),dataIndex:"profit",key:"profit",width:120,scopedSlots:{customRender:"profit"}},{title:this.$t("trading-assistant.table.commission"),dataIndex:"commission",key:"commission",width:100,scopedSlots:{customRender:"commission"}}]}},data:function(){return{records:[]}},watch:{strategyId:{handler:function(t){t&&this.loadRecords()},immediate:!0}},methods:{loadRecords:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,p.tq)(t.strategyId);case 2:a=e.v,1===a.code?t.records=(a.data.trades||[]).map(function(t){return(0,u.A)((0,u.A)({},t),{},{time:t.created_at||t.time})}):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadTradesFailed")),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},formatTime:function(t){if(!t)return"--";try{var e;if("number"===typeof t){var a=t<1e12?1e3*t:t;e=new Date(a)}else{if("string"!==typeof t)return"--";if(/^\d+$/.test(t)){var s=parseInt(t,10),i=s<1e12?1e3*s:s;e=new Date(i)}else e=new Date(t)}if(isNaN(e.getTime()))return"--";var r=this.$i18n.locale||"zh-CN",n={"zh-CN":"zh-CN","zh-TW":"zh-TW","en-US":"en-US"};return e.toLocaleString(n[r]||"zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch(o){return"--"}},getTradeTypeColor:function(t){var e={buy:"green",sell:"red",liquidation:"orange",open_long:"green",add_long:"cyan",close_long:"orange",close_long_stop:"red",close_long_profit:"lime",open_short:"red",add_short:"magenta",close_short:"blue",close_short_stop:"red",close_short_profit:"cyan"};return e[t]||"default"},getTradeTypeText:function(t){var e={buy:this.$t("dashboard.indicator.backtest.buy"),sell:this.$t("dashboard.indicator.backtest.sell"),liquidation:this.$t("dashboard.indicator.backtest.liquidation"),open_long:this.$t("dashboard.indicator.backtest.openLong"),add_long:this.$t("dashboard.indicator.backtest.addLong"),close_long:this.$t("dashboard.indicator.backtest.closeLong"),close_long_stop:this.$t("dashboard.indicator.backtest.closeLongStop"),close_long_profit:this.$t("dashboard.indicator.backtest.closeLongProfit"),open_short:this.$t("dashboard.indicator.backtest.openShort"),add_short:this.$t("dashboard.indicator.backtest.addShort"),close_short:this.$t("dashboard.indicator.backtest.closeShort"),close_short_stop:this.$t("dashboard.indicator.backtest.closeShortStop"),close_short_profit:this.$t("dashboard.indicator.backtest.closeShortProfit")};return e[t]||t},formatMoney:function(t){if(null===t||void 0===t)return"--";var e=t>=0?"+":"-";return"".concat(e,"$").concat(Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}))},formatProfit:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),s=["open_long","open_short","add_long","add_short"];return 0===a&&e&&s.includes(e.type)?"--":Math.abs(a)<1e-6?e&&s.includes(e.type)?"--":"$0.00":this.formatMoney(a)},formatCommission:function(t){if(null===t||void 0===t)return"--";var e=parseFloat(t);return isNaN(e)||Math.abs(e)<1e-6?"--":"$".concat(e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6}))}}}),x=b,C=a(845),k=(0,C.A)(x,f,v,!1,null,"bdf54cd6",null),S=k.exports,w=function(){var t=this,e=t._self._c;return e("div",{staticClass:"position-records strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[0!==t.positions.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.positions,loading:t.loading,pagination:!1,size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"symbol",fn:function(a,s){return[e("strong",[t._v(t._s(s.symbol||a))])]}},{key:"side",fn:function(a,s){return[e("a-tag",{attrs:{color:"long"===(s.side||a)?"green":"red"}},[t._v(" "+t._s("long"===(s.side||a)?t.$t("trading-assistant.table.long"):t.$t("trading-assistant.table.short"))+" ")])]}},{key:"entryPrice",fn:function(a,s){return[t.hasValidPrice(s.entry_price||a)?e("span",[t._v(" $"+t._s(parseFloat(s.entry_price||a).toFixed(4))+" ")]):e("span",[t._v("--")])]}},{key:"currentPrice",fn:function(e,a){return[t._v(" $"+t._s(parseFloat(a.current_price||e||0).toFixed(4))+" ")]}},{key:"size",fn:function(e,a){return[t._v(" "+t._s(parseFloat(a.size||e||0).toFixed(4))+" ")]}},{key:"unrealizedPnl",fn:function(a,s){return[e("span",{class:{profit:parseFloat(s.unrealized_pnl||a||0)>0,loss:parseFloat(s.unrealized_pnl||a||0)<0}},[t._v(" $"+t._s(parseFloat(s.unrealized_pnl||a||0).toFixed(2))+" ")])]}},{key:"pnlPercent",fn:function(a,s){return[e("span",{class:{profit:parseFloat(s.pnl_percent||a||0)>0,loss:parseFloat(s.pnl_percent||a||0)<0}},[t._v(" "+t._s(parseFloat(s.pnl_percent||a||0).toFixed(2))+"% ")])]}}])}):e("div",{staticClass:"empty-state strategy-tab-empty"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},$=[],A=(a(25428),a(38781),{name:"PositionRecords",props:{strategyId:{type:Number,required:!0},marketType:{type:String,default:"swap"},leverage:{type:[Number,String],default:1},loading:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},data:function(){return{positions:[]}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.symbol"),dataIndex:"symbol",key:"symbol",width:120,scopedSlots:{customRender:"symbol"}},{title:this.$t("trading-assistant.table.side"),dataIndex:"side",key:"side",width:80,scopedSlots:{customRender:"side"}},{title:this.$t("trading-assistant.table.size"),dataIndex:"size",key:"size",width:120,scopedSlots:{customRender:"size"}},{title:this.$t("trading-assistant.table.entryPrice"),dataIndex:"entry_price",key:"entry_price",width:120,scopedSlots:{customRender:"entryPrice"}},{title:this.$t("trading-assistant.table.currentPrice"),dataIndex:"current_price",key:"current_price",width:120,scopedSlots:{customRender:"currentPrice"}},{title:this.$t("trading-assistant.table.unrealizedPnl"),dataIndex:"unrealized_pnl",key:"unrealized_pnl",width:120,scopedSlots:{customRender:"unrealizedPnl"}},{title:this.$t("trading-assistant.table.pnlPercent"),dataIndex:"pnl_percent",key:"pnl_percent",width:100,scopedSlots:{customRender:"pnlPercent"}}]}},watch:{strategyId:{handler:function(t){t?(this.loadPositions(),this.startPolling()):this.stopPolling()},immediate:!0}},beforeDestroy:function(){this.stopPolling()},methods:{loadPositions:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,p.oK)(t.strategyId);case 2:a=e.v,1===a.code?(s=a.data.positions||[],t.positions=s.map(function(e,a){var s=String(t.marketType||"swap").toLowerCase(),i=parseFloat(t.leverage);(!isFinite(i)||i<=0)&&(i=1),"spot"===s&&(i=1);var r=parseFloat(e.entry_price||e.entryPrice||0),n=parseFloat(e.size||"0")||0,o=parseFloat(e.unrealized_pnl||e.unrealizedPnl||"0")||0,l=parseFloat(e.pnl_percent||e.pnlPercent||"0")||0;r>0&&n>0?l=o/(r*n)*100*i:"spot"!==s&&(l*=i);var c={id:e.id||a,symbol:e.symbol||"",side:e.side||"long",size:n>0?n.toString():"0",entry_price:r>0?r.toString():"0",current_price:e.current_price||e.currentPrice||"0",unrealized_pnl:e.unrealized_pnl||e.unrealizedPnl||"0",pnl_percent:l,updated_at:e.updated_at||e.updatedAt||""};return c})):t.positions=[],e.n=4;break;case 3:e.p=3,e.v,t.positions=[];case 4:return e.a(2)}},e,null,[[1,3]])}))()},hasValidPrice:function(t){var e=parseFloat(t);return Number.isFinite(e)&&e>0},startPolling:function(){var t=this;this.stopPolling(),this.pollingTimer=setInterval(function(){t.loadPositions()},5e3)},stopPolling:function(){this.pollingTimer&&(clearInterval(this.pollingTimer),this.pollingTimer=null)}}}),T=A,P=(0,C.A)(T,w,$,!1,null,"6ba7d922",null),M=P.exports,I=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-type-selector",class:{"theme-dark":t.isDark}},[e("div",{staticClass:"selector-header"},[e("h3",[t._v(t._s(t.$t("trading-assistant.selectMode")))]),e("p",{staticClass:"selector-hint"},[t._v(t._s(t.$t("trading-assistant.selectModeHint")))])]),e("div",{staticClass:"mode-cards"},[e("div",{staticClass:"mode-card",class:{selected:"signal"===t.selected},on:{click:function(e){return t.$emit("select","signal")}}},[e("div",{staticClass:"card-icon signal-icon"},[e("a-icon",{attrs:{type:"line-chart"}})],1),e("div",{staticClass:"card-body"},[e("div",{staticClass:"card-badge-row"},[e("span",{staticClass:"card-badge"},[t._v(t._s(t.$t("trading-assistant.strategyMode.signalBadge")))])]),e("h4",[t._v(t._s(t.$t("trading-assistant.strategyMode.signal")))]),e("p",{staticClass:"card-desc"},[t._v(t._s(t.$t("trading-assistant.strategyMode.signalDesc")))]),e("ul",{staticClass:"card-features"},[e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature1")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature2")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature3")))],1)])]),e("a-button",{staticClass:"card-btn",attrs:{type:"primary",ghost:""},on:{click:function(e){return e.stopPropagation(),t.$emit("select","signal")}}},[t._v(" "+t._s(t.$t("trading-assistant.useThisMode"))+" ")])],1),e("div",{staticClass:"mode-card",class:{selected:"script"===t.selected},on:{click:function(e){return t.$emit("select","script")}}},[e("div",{staticClass:"card-icon script-icon"},[e("a-icon",{attrs:{type:"code"}})],1),e("div",{staticClass:"card-body"},[e("div",{staticClass:"card-badge-row"},[e("span",{staticClass:"card-badge card-badge--script"},[t._v(t._s(t.$t("trading-assistant.strategyMode.scriptBadge")))])]),e("h4",[t._v(t._s(t.$t("trading-assistant.strategyMode.script")))]),e("p",{staticClass:"card-desc"},[t._v(t._s(t.$t("trading-assistant.strategyMode.scriptDesc")))]),e("ul",{staticClass:"card-features"},[e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature1")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature2")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature3")))],1)])]),e("a-button",{staticClass:"card-btn",attrs:{type:"primary",ghost:""},on:{click:function(e){return e.stopPropagation(),t.$emit("select","script")}}},[t._v(" "+t._s(t.$t("trading-assistant.useThisMode"))+" ")])],1)]),e("div",{staticClass:"template-quick-start"},[e("a-divider",[e("span",{staticClass:"divider-text"},[t._v(t._s(t.$t("trading-assistant.fromTemplate")))])]),e("div",{staticClass:"template-tags"},t._l(t.templates,function(a){return e("a-tag",{key:a.key,staticClass:"template-tag",on:{click:function(e){return t.$emit("use-template",a.key)}}},[e("span",{staticClass:"tpl-icon"},[t._v(t._s(a.icon))]),t._v(" "+t._s(t.$t("trading-assistant.template.".concat(a.key)))+" ")])}),1)],1)])},F=[],N=(a(84864),a(25440),[{key:"trendFollowing",icon:"📈",code:"\"\"\"\nTrend Following Strategy\nUses EMA crossover with dynamic stop-loss / take-profit.\n\"\"\"\n\ndef on_init(ctx):\n ctx.fast_period = ctx.param('fast_period', 12)\n ctx.slow_period = ctx.param('slow_period', 26)\n ctx.position_pct = ctx.param('position_pct', 0.95)\n ctx.stop_pct = ctx.param('stop_pct', 0.03)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.08)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.slow_period + 5)\n if len(bars) < ctx.slow_period:\n return\n\n closes = [b['close'] for b in bars]\n fast_ema = _ema(closes, ctx.fast_period)\n slow_ema = _ema(closes, ctx.slow_period)\n price = bar['close']\n\n if fast_ema > slow_ema and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BUY at {price:.2f}\")\n\n elif fast_ema < slow_ema and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"SELL at {price:.2f}\")\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct <= -ctx.stop_pct:\n ctx.close_position()\n ctx.log(f\"STOP LOSS at {price:.2f}\")\n elif pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.log(f\"TAKE PROFIT at {price:.2f}\")\n\ndef _ema(data, period):\n k = 2 / (period + 1)\n ema = data[0]\n for price in data[1:]:\n ema = price * k + ema * (1 - k)\n return ema\n",params:[{name:"fast_period",type:"integer",default:12,min:2,max:120,step:1},{name:"slow_period",type:"integer",default:26,min:5,max:240,step:1},{name:"position_pct",type:"percent",default:.95,min:.05,max:1,step:.01},{name:"stop_pct",type:"percent",default:.03,min:.001,max:.5,step:.001},{name:"take_profit_pct",type:"percent",default:.08,min:.001,max:1,step:.001}]},{key:"martingale",icon:"🔥",code:"\"\"\"\nMartingale Strategy\nDouble position on each loss, with max layer control.\n\"\"\"\n\ndef on_init(ctx):\n ctx.base_amount = ctx.param('base_amount', 100)\n ctx.max_layers = ctx.param('max_layers', 5)\n ctx.multiplier = ctx.param('multiplier', 2.0)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.02)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.04)\n ctx.cooldown_bars = ctx.param('cooldown_bars', 1)\n ctx.current_layer = 0\n ctx.cooldown = 0\n\ndef on_bar(ctx, bar):\n if ctx.cooldown > 0:\n ctx.cooldown -= 1\n return\n\n price = bar['close']\n if not ctx.position:\n amount = ctx.base_amount * (ctx.multiplier ** ctx.current_layer)\n if amount <= ctx.balance:\n qty = amount / price\n ctx.buy(price, qty)\n ctx.log(f\"Layer {ctx.current_layer}: BUY {qty:.4f} at {price:.2f}\")\n else:\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n\n if pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.current_layer = 0\n ctx.cooldown = ctx.cooldown_bars\n ctx.log(f\"TAKE PROFIT at {price:.2f}, reset layers\")\n\n elif pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.cooldown = ctx.cooldown_bars\n if ctx.current_layer < ctx.max_layers:\n ctx.current_layer += 1\n ctx.log(f\"LOSS, escalate to layer {ctx.current_layer}\")\n else:\n ctx.current_layer = 0\n ctx.log(\"Max layers reached, reset\")\n",params:[{name:"base_amount",type:"number",default:100,min:10,max:1e6,step:10},{name:"max_layers",type:"integer",default:5,min:1,max:20,step:1},{name:"multiplier",type:"number",default:2,min:1,max:5,step:.1},{name:"take_profit_pct",type:"percent",default:.02,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.04,min:.001,max:1,step:.001},{name:"cooldown_bars",type:"integer",default:1,min:0,max:500,step:1}]},{key:"grid",icon:"📐",code:"\"\"\"\nGrid Trading Strategy\nPlaces buy/sell orders at equal intervals within a price range.\n\"\"\"\n\ndef on_init(ctx):\n ctx.grid_upper = ctx.param('grid_upper', 70000)\n ctx.grid_lower = ctx.param('grid_lower', 60000)\n ctx.grid_levels = ctx.param('grid_levels', 10)\n ctx.order_amount = ctx.param('order_amount', 100)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.05)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.03)\n ctx.filled_grids = set()\n\n spacing = (ctx.grid_upper - ctx.grid_lower) / ctx.grid_levels\n ctx.grid_prices = [ctx.grid_lower + i * spacing for i in range(ctx.grid_levels + 1)]\n\ndef on_bar(ctx, bar):\n price = bar['close']\n if price < ctx.grid_lower or price > ctx.grid_upper:\n return\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct >= ctx.take_profit_pct or pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.filled_grids.clear()\n ctx.log(f\"Grid risk exit at {price:.2f}, pnl={pnl_pct:.2%}\")\n return\n\n for i, gp in enumerate(ctx.grid_prices[:-1]):\n upper_gp = ctx.grid_prices[i + 1]\n grid_id = f\"grid_{i}\"\n\n if price <= gp and grid_id not in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.buy(price, qty)\n ctx.filled_grids.add(grid_id)\n ctx.log(f\"Grid BUY at {price:.2f} (level {i})\")\n\n elif price >= upper_gp and grid_id in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.sell(price, qty)\n ctx.filled_grids.discard(grid_id)\n ctx.log(f\"Grid SELL at {price:.2f} (level {i})\")\n",params:[{name:"grid_upper",type:"number",default:7e4,min:1,max:1e8,step:10},{name:"grid_lower",type:"number",default:6e4,min:1,max:1e8,step:10},{name:"grid_levels",type:"integer",default:10,min:2,max:200,step:1},{name:"order_amount",type:"number",default:100,min:1,max:1e6,step:1},{name:"take_profit_pct",type:"percent",default:.05,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.03,min:.001,max:1,step:.001}]},{key:"dca",icon:"💰",code:"\"\"\"\nDCA (Dollar Cost Averaging) Strategy\nPeriodic purchases with optional dip-buying.\n\"\"\"\n\ndef on_init(ctx):\n ctx.buy_amount = ctx.param('buy_amount', 100)\n ctx.dip_threshold = ctx.param('dip_threshold', 0.05)\n ctx.dip_multiplier = ctx.param('dip_multiplier', 2.0)\n ctx.buy_interval = ctx.param('buy_interval', 24)\n ctx.max_orders = ctx.param('max_orders', 999)\n ctx.bar_count = 0\n ctx.order_count = 0\n ctx.last_buy_price = None\n\ndef on_bar(ctx, bar):\n ctx.bar_count += 1\n price = bar['close']\n\n if ctx.order_count >= ctx.max_orders:\n return\n\n is_dip = False\n if ctx.last_buy_price and price < ctx.last_buy_price * (1 - ctx.dip_threshold):\n is_dip = True\n\n if ctx.bar_count % ctx.buy_interval == 0 or is_dip:\n amount = ctx.buy_amount * (ctx.dip_multiplier if is_dip else 1.0)\n if amount <= ctx.balance:\n qty = amount / price\n ctx.buy(price, qty)\n ctx.last_buy_price = price\n ctx.order_count += 1\n tag = \" (DIP BUY)\" if is_dip else \"\"\n ctx.log(f\"DCA BUY {qty:.6f} at {price:.2f}{tag}\")\n",params:[{name:"buy_amount",type:"number",default:100,min:1,max:1e6,step:1},{name:"buy_interval",type:"integer",default:24,min:1,max:1e3,step:1},{name:"dip_threshold",type:"percent",default:.05,min:.001,max:1,step:.001},{name:"dip_multiplier",type:"number",default:2,min:1,max:10,step:.1},{name:"max_orders",type:"integer",default:999,min:1,max:9999,step:1}]},{key:"meanReversion",icon:"🔄",code:"\"\"\"\nMean Reversion Strategy\nBollinger Bands based: buy at lower band, sell at upper band.\n\"\"\"\n\ndef on_init(ctx):\n ctx.period = ctx.param('period', 20)\n ctx.std_mult = ctx.param('std_mult', 2.0)\n ctx.position_pct = ctx.param('position_pct', 0.5)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.03)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.02)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.period + 5)\n if len(bars) < ctx.period:\n return\n\n closes = [b['close'] for b in bars[-ctx.period:]]\n mean = sum(closes) / len(closes)\n std = (sum((c - mean) ** 2 for c in closes) / len(closes)) ** 0.5\n\n upper = mean + ctx.std_mult * std\n lower = mean - ctx.std_mult * std\n price = bar['close']\n\n if price <= lower and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BUY at {price:.2f} (below lower band {lower:.2f})\")\n\n elif price >= upper and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"SELL at {price:.2f} (above upper band {upper:.2f})\")\n\n elif ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct >= ctx.take_profit_pct or pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.log(f\"Risk exit at {price:.2f}, pnl={pnl_pct:.2%}\")\n",params:[{name:"period",type:"integer",default:20,min:2,max:300,step:1},{name:"std_mult",type:"number",default:2,min:.5,max:6,step:.1},{name:"position_pct",type:"percent",default:.5,min:.05,max:1,step:.01},{name:"take_profit_pct",type:"percent",default:.03,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.02,min:.001,max:1,step:.001}]},{key:"breakout",icon:"⚡",code:"\"\"\"\nBreakout Strategy\nEnter when price breaks key resistance/support with volume confirmation.\n\"\"\"\n\ndef on_init(ctx):\n ctx.lookback = ctx.param('lookback', 20)\n ctx.volume_mult = ctx.param('volume_mult', 1.5)\n ctx.position_pct = ctx.param('position_pct', 0.9)\n ctx.stop_pct = ctx.param('stop_pct', 0.02)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.05)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.lookback + 5)\n if len(bars) < ctx.lookback:\n return\n\n recent = bars[-ctx.lookback:]\n high = max(b['high'] for b in recent[:-1])\n low = min(b['low'] for b in recent[:-1])\n avg_vol = sum(b['volume'] for b in recent[:-1]) / (len(recent) - 1)\n price = bar['close']\n vol = bar['volume']\n\n if price > high and vol > avg_vol * ctx.volume_mult and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BREAKOUT BUY at {price:.2f} (prev high: {high:.2f})\")\n\n elif price < low and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"BREAK DOWN, close at {price:.2f}\")\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct <= -ctx.stop_pct:\n ctx.close_position()\n ctx.log(f\"STOP LOSS at {price:.2f}\")\n elif pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.log(f\"TAKE PROFIT at {price:.2f}\")\n",params:[{name:"lookback",type:"integer",default:20,min:2,max:300,step:1},{name:"volume_mult",type:"number",default:1.5,min:.5,max:10,step:.1},{name:"position_pct",type:"percent",default:.9,min:.05,max:1,step:.01},{name:"stop_pct",type:"percent",default:.02,min:.001,max:1,step:.001},{name:"take_profit_pct",type:"percent",default:.05,min:.001,max:1,step:.001}]},{key:"rsiMeanReversion",icon:"📉",code:"\"\"\"\nRSI mean reversion (long-focused)\nBuys when RSI is oversold; exits long when RSI is overbought.\n\"\"\"\n\ndef on_init(ctx):\n ctx.rsi_period = ctx.param('rsi_period', 14)\n ctx.oversold = ctx.param('oversold', 30)\n ctx.overbought = ctx.param('overbought', 70)\n ctx.position_pct = ctx.param('position_pct', 0.5)\n\ndef _rsi_simple(closes, period):\n n = len(closes)\n if n < period + 1:\n return None\n gains = 0.0\n losses = 0.0\n for i in range(n - period, n):\n diff = closes[i] - closes[i - 1]\n if diff > 0:\n gains += diff\n else:\n losses -= diff\n if losses == 0:\n return 100.0 if gains > 0 else 50.0\n rs = gains / losses\n return 100.0 - (100.0 / (1.0 + rs))\n\ndef on_bar(ctx, bar):\n need = ctx.rsi_period + 3\n bars = ctx.bars(need)\n if len(bars) < need:\n return\n closes = [b['close'] for b in bars]\n r = _rsi_simple(closes, ctx.rsi_period)\n if r is None:\n return\n price = bar['close']\n if r <= ctx.oversold and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"RSI BUY r={r:.1f} at {price:.2f}\")\n elif r >= ctx.overbought and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"RSI SELL r={r:.1f} at {price:.2f}\")\n",params:[{name:"rsi_period",type:"integer",default:14,min:2,max:100,step:1},{name:"oversold",type:"number",default:30,min:1,max:50,step:1},{name:"overbought",type:"number",default:70,min:50,max:99,step:1},{name:"position_pct",type:"percent",default:.5,min:.05,max:1,step:.01}]},{key:"macdCross",icon:"📊",code:"\"\"\"\nMACD histogram crossover\nEnters long when MACD histogram crosses above zero; exits when it crosses below.\n\"\"\"\n\ndef on_init(ctx):\n ctx.macd_fast = ctx.param('macd_fast', 12)\n ctx.macd_slow = ctx.param('macd_slow', 26)\n ctx.macd_signal = ctx.param('macd_signal', 9)\n ctx.position_pct = ctx.param('position_pct', 0.6)\n\ndef _ema_series(vals, period):\n k = 2.0 / (period + 1)\n out = []\n e = float(vals[0])\n out.append(e)\n for v in vals[1:]:\n v = float(v)\n e = v * k + e * (1 - k)\n out.append(e)\n return out\n\ndef _macd_hist_last_two(closes, fast, slow, sig):\n n = len(closes)\n if n < slow + sig + 2:\n return None, None\n ef = _ema_series(closes, fast)\n es = _ema_series(closes, slow)\n macd = [ef[i] - es[i] for i in range(n)]\n sg = _ema_series(macd, sig)\n hist = [macd[i] - sg[i] for i in range(n)]\n return hist[-2], hist[-1]\n\ndef on_bar(ctx, bar):\n need = ctx.macd_slow + ctx.macd_signal + 30\n bars = ctx.bars(need)\n if len(bars) < need:\n return\n closes = [b['close'] for b in bars]\n h0, h1 = _macd_hist_last_two(closes, ctx.macd_fast, ctx.macd_slow, ctx.macd_signal)\n if h0 is None:\n return\n price = bar['close']\n if h0 <= 0 and h1 > 0 and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"MACD cross up at {price:.2f}\")\n elif h0 >= 0 and h1 < 0 and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"MACD cross down at {price:.2f}\")\n",params:[{name:"macd_fast",type:"integer",default:12,min:2,max:50,step:1},{name:"macd_slow",type:"integer",default:26,min:5,max:120,step:1},{name:"macd_signal",type:"integer",default:9,min:2,max:50,step:1},{name:"position_pct",type:"percent",default:.6,min:.05,max:1,step:.01}]}]);function D(t){return String(t).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function V(t){return"boolean"===typeof t?t?"True":"False":"number"===typeof t?Number.isFinite(t)?String(t):"0":null===t||void 0===t?"None":"'".concat(String(t).replace(/\\/g,"\\\\").replace(/'/g,"\\'"),"'")}var E=N;function R(t){return N.find(function(e){return e.key===t})||null}function z(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a="string"===typeof t?R(t):t;return a?a.params.reduce(function(t,a){return t[a.name]=Object.prototype.hasOwnProperty.call(e,a.name)?e[a.name]:a.default,t},{}):{}}function L(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a="string"===typeof t?R(t):t;if(!a)return"";var s=z(a,e);return a.params.reduce(function(t,e){var a=V(s[e.name]),i=new RegExp("(ctx\\.param\\(['\"]".concat(D(e.name),"['\"],\\s*)([^\\)]+)(\\))"));return t.replace(i,"$1".concat(a,"$3"))},a.code)}var q={name:"StrategyTypeSelector",props:{selected:{type:String,default:""},isDark:{type:Boolean,default:!1}},data:function(){return{templates:E.map(function(t){return{key:t.key,icon:t.icon}})}}},U=q,K=(0,C.A)(U,I,F,!1,null,"8ec7ab14",null),O=K.exports,B=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-editor",class:{"theme-dark":t.isDark}},[e("a-row",{staticClass:"editor-layout",attrs:{gutter:16}},[e("a-col",{staticClass:"code-col",attrs:{xs:24,md:16}},[e("div",{staticClass:"code-section"},[e("div",{staticClass:"section-header"},[e("div",{staticClass:"section-title-wrap"},[e("span",{staticClass:"section-title"},[e("a-icon",{attrs:{type:"code"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.title"))+" ")],1),t.selectedTemplate?e("a-tag",{staticClass:"current-template-tag",attrs:{color:"blue"}},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key)))+" ")]):t._e()],1),e("div",{staticClass:"section-actions"},[e("a-button",{staticClass:"verify-btn",attrs:{type:"link",size:"small",loading:t.verifying},on:{click:t.handleVerify}},[e("a-icon",{attrs:{type:"check-circle"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.verify"))+" ")],1)],1)]),e("div",{ref:"editorContainer",staticClass:"code-editor-container"})])]),e("a-col",{staticClass:"side-col",attrs:{xs:24,md:8}},[e("a-tabs",{staticClass:"side-tabs",attrs:{size:"small",animated:!1},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("a-tab-pane",{key:"templates",attrs:{tab:t.$t("trading-assistant.editor.templateTab"),"force-render":!0}},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(t._s(t.$t("trading-assistant.editor.templateIntroTitle")))]),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.templateIntroDesc")))])]),e("div",{staticClass:"template-list"},t._l(t.templates,function(a){return e("div",{key:a.key,staticClass:"template-item",class:{active:t.selectedTemplateKey===a.key},on:{click:function(e){return t.loadTemplate(a.key,{focusParams:!0,resetParams:!0})}}},[e("div",{staticClass:"tpl-header"},[e("span",{staticClass:"tpl-icon"},[t._v(t._s(a.icon))]),e("span",{staticClass:"tpl-name"},[t._v(t._s(t.$t("trading-assistant.template.".concat(a.key))))])]),e("p",{staticClass:"tpl-desc"},[t._v(t._s(t.$t("trading-assistant.template.".concat(a.key,"Desc"))))]),e("a-button",{staticClass:"tpl-use-btn",attrs:{type:"link",size:"small"}},[t._v(" "+t._s(t.$t("trading-assistant.template.useTemplate"))+" "),e("a-icon",{attrs:{type:"arrow-right"}})],1)],1)}),0)]),e("a-tab-pane",{key:"params",attrs:{tab:t.$t("trading-assistant.editor.paramsTab"),"force-render":!0}},[t.selectedTemplate?e("div",{staticClass:"params-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key)))+" ")]),e("div",{staticClass:"panel-intro__desc"},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key,"Desc")))+" ")])]),e("a-alert",{staticClass:"params-tip",attrs:{type:"info","show-icon":"",message:t.$t("trading-assistant.editor.paramsHint")}}),e("div",{staticClass:"param-list"},t._l(t.selectedTemplate.params,function(a){return e("div",{key:a.name,staticClass:"param-item"},[e("div",{staticClass:"param-item__label-row"},[e("span",{staticClass:"param-item__label"},[t._v(t._s(t.getParamLabel(a)))]),e("span",{staticClass:"param-item__type"},[t._v(t._s(t.getParamTypeLabel(a.type)))])]),t.getParamDescription(a)?e("div",{staticClass:"param-item__desc"},[t._v(t._s(t.getParamDescription(a)))]):t._e(),"number"===a.type||"integer"===a.type||"percent"===a.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{value:t.templateParamValues[a.name],min:a.min,max:a.max,step:a.step||1,precision:"integer"===a.type?0:t.getParamPrecision(a)},on:{change:function(e){return t.handleNumericParamChange(a,e)}}}):"select"===a.type?e("a-select",{staticStyle:{width:"100%"},attrs:{value:t.templateParamValues[a.name]},on:{change:function(e){return t.handleSelectParamChange(a,e)}}},t._l(a.options||[],function(a){return e("a-select-option",{key:a.value,attrs:{value:a.value}},[t._v(" "+t._s(t.getOptionLabel(a))+" ")])}),1):"boolean"===a.type?e("div",{staticClass:"param-item__switch"},[e("a-switch",{attrs:{checked:!!t.templateParamValues[a.name]},on:{change:function(e){return t.handleBooleanParamChange(a,e)}}}),e("span",[t._v(t._s(t.templateParamValues[a.name]?t.$t("common.yes"):t.$t("common.no")))])],1):e("a-input",{attrs:{value:t.templateParamValues[a.name]},on:{input:function(e){return t.handleTextParamChange(a,e.target.value)}}})],1)}),0),e("div",{staticClass:"params-actions"},[e("a-button",{on:{click:t.resetTemplateParams}},[t._v(" "+t._s(t.$t("trading-assistant.editor.resetTemplateParams"))+" ")]),e("a-button",{attrs:{type:"primary",disabled:!t.templateDirty},on:{click:t.applySelectedTemplateToCode}},[t._v(" "+t._s(t.$t("trading-assistant.editor.applyTemplateParams"))+" ")])],1)],1):e("div",{staticClass:"params-empty-guide"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.editor.paramsEmpty")}},[e("a-button",{attrs:{type:"primary",size:"small",ghost:""},on:{click:function(e){t.activeTab="templates"}}},[e("a-icon",{attrs:{type:"appstore"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.templateTab"))+" ")],1)],1)],1)]),e("a-tab-pane",{key:"ai",attrs:{tab:t.$t("trading-assistant.editor.aiTab"),"force-render":!0}},[e("div",{staticClass:"ai-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(t.$t("trading-assistant.editor.aiGenerate")))])],1),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.aiHint")))])]),e("div",{staticClass:"ai-suggestions"},t._l(t.aiPromptSuggestions,function(a){return e("a-tag",{key:a.id,staticClass:"prompt-tag",on:{click:function(e){return t.applyPromptSuggestion(a.value)}}},[t._v(" "+t._s(a.label)+" ")])}),1),e("a-textarea",{attrs:{placeholder:t.$t("trading-assistant.editor.aiPromptPlaceholder"),rows:10,"auto-size":{minRows:8,maxRows:16}},model:{value:t.aiPrompt,callback:function(e){t.aiPrompt=e},expression:"aiPrompt"}}),e("div",{staticClass:"ai-actions"},[e("a-button",{attrs:{type:"primary",block:"",loading:t.aiAdjustingParams,disabled:t.aiGenerating,size:"large"},on:{click:t.handleAIAdjustParams}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.aiAdjustParamsBtn"))+" ")],1),e("a-button",{staticStyle:{"margin-top":"8px"},attrs:{block:"",loading:t.aiGenerating,disabled:t.aiAdjustingParams,size:"large"},on:{click:t.handleAIGenerate}},[e("a-icon",{attrs:{type:"code"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.aiGenerateFullCodeBtn"))+" ")],1)],1),t.aiGenerating||t.aiAdjustingParams?e("div",{staticClass:"ai-status"},[e("a-icon",{attrs:{type:"loading",spin:""}}),t._v(" "+t._s(t.aiAdjustingParams?t.$t("trading-assistant.editor.aiAdjustingParams"):t.$t("trading-assistant.editor.generating"))+" ")],1):t._e()],1)])],1)],1)],1)],1)},G=[],H=(a(6011),a(18787)),W=(a(32637),a(15237)),j=a.n(W),Y=(a(74806),a(55218),a(97923),a(50436),{name:"StrategyEditor",props:{value:{type:String,default:""},isDark:{type:Boolean,default:!1},userId:{type:[Number,String],default:1},visible:{type:Boolean,default:!1},initialTemplateKey:{type:String,default:""}},data:function(){return{activeTab:"templates",aiPrompt:"",aiGenerating:!1,aiAdjustingParams:!1,verifying:!1,editor:null,templates:E,selectedTemplateKey:"",templateParamValues:{},templateDirty:!1,refreshTimer:null}},computed:{selectedTemplate:function(){return R(this.selectedTemplateKey)},aiPromptSuggestions:function(){return[{id:"improve",label:this.$t("trading-assistant.editor.aiSuggestionImprove"),value:this.$t("trading-assistant.editor.aiSuggestionImprovePrompt")},{id:"risk",label:this.$t("trading-assistant.editor.aiSuggestionRisk"),value:this.$t("trading-assistant.editor.aiSuggestionRiskPrompt")},{id:"explain",label:this.$t("trading-assistant.editor.aiSuggestionExplain"),value:this.$t("trading-assistant.editor.aiSuggestionExplainPrompt")}]}},mounted:function(){var t=this;this.$nextTick(function(){t.initEditor(),t.initialTemplateKey?t.loadTemplate(t.initialTemplateKey,{focusParams:!0,resetParams:!0}):t.value||t.$emit("input",t._getDefaultCode())}),window.addEventListener("resize",this.scheduleEditorRefresh)},beforeDestroy:function(){window.removeEventListener("resize",this.scheduleEditorRefresh),this.refreshTimer&&(clearTimeout(this.refreshTimer),this.refreshTimer=null),this.editor&&("function"===typeof this.editor.toTextArea&&this.editor.toTextArea(),this.editor=null)},watch:{value:function(t){this.editor&&this.editor.getValue()!==t&&(this.editor.setValue(t||""),this.scheduleEditorRefresh())},isDark:function(){this.editor&&this.editor.setOption("theme",this.isDark?"monokai":"eclipse"),this.scheduleEditorRefresh()},visible:function(t){var e=this;t&&this.$nextTick(function(){e.scheduleEditorRefresh();try{window.dispatchEvent(new Event("resize"))}catch(t){}})},initialTemplateKey:function(t){t&&t!==this.selectedTemplateKey&&this.loadTemplate(t,{focusParams:!0,resetParams:!0})}},methods:{initEditor:function(){var t=this;this.$refs.editorContainer&&(this.editor=j()(this.$refs.editorContainer,{value:this.value||this._getDefaultCode(),mode:"python",theme:this.isDark?"monokai":"eclipse",lineNumbers:!0,autoCloseBrackets:!0,matchBrackets:!0,styleActiveLine:!0,tabSize:4,indentUnit:4,indentWithTabs:!1,lineWrapping:!1,viewportMargin:1/0,gutters:["CodeMirror-linenumbers"]}),this.editor.on("change",function(){t.$emit("input",t.editor.getValue())}),this.scheduleEditorRefresh())},scheduleEditorRefresh:function(){var t=this;this.refreshTimer&&clearTimeout(this.refreshTimer),this.refreshTimer=setTimeout(function(){t.editor&&t.editor.refresh()},60)},_getDefaultCode:function(){return'"""\nMy Custom Strategy\n"""\n\ndef on_init(ctx):\n # Initialize strategy parameters\n pass\n\ndef on_bar(ctx, bar):\n # Core trading logic, called on each K-line bar\n # bar: { open, high, low, close, volume, timestamp }\n price = bar[\'close\']\n\n bars = ctx.bars(20)\n if len(bars) < 20:\n return\n\n avg = sum(b[\'close\'] for b in bars) / len(bars)\n\n if price > avg and not ctx.position:\n ctx.buy(price, ctx.equity * 0.9 / price)\n ctx.log(f"BUY at {price}")\n\n elif price < avg and ctx.position:\n ctx.close_position()\n ctx.log(f"SELL at {price}")\n'},loadTemplate:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=e.focusParams,s=void 0!==a&&a,i=e.resetParams,r=void 0===i||i,n=R(t);n&&(this.selectedTemplateKey=t,!r&&this.templateParamValues&&0!==Object.keys(this.templateParamValues).length||(this.templateParamValues=z(n)),this.templateDirty=!0,this.applySelectedTemplateToCode({silent:!0}),s&&(this.activeTab="params"),this.aiPrompt.trim()||(this.aiPrompt=this.$t("trading-assistant.editor.aiPromptTemplateHint")+" "+this.$t("trading-assistant.template.".concat(n.key))),this.scheduleEditorRefresh())},getCode:function(){return this.editor?this.editor.getValue():this.value},setCode:function(t){this.editor&&this.editor.getValue()!==t?this.editor.setValue(t):this.$emit("input",t),this.scheduleEditorRefresh()},applySelectedTemplateToCode:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.silent,a=void 0!==e&&e;if(this.selectedTemplate){var s=L(this.selectedTemplate,this.templateParamValues);this.setCode(s),this.templateDirty=!1,this.$emit("template-change",{key:this.selectedTemplateKey,params:(0,u.A)({},this.templateParamValues)}),a||H.A.success(this.$t("trading-assistant.editor.templateApplied"))}},resetTemplateParams:function(){this.selectedTemplate&&(this.templateParamValues=z(this.selectedTemplate),this.templateDirty=!0,this.applySelectedTemplateToCode({silent:!1}))},getParamLabel:function(t){var e="trading-assistant.templateParam.".concat(t.name,".label"),a=this.$t(e);return a===e?t.name:a},getParamDescription:function(t){var e="trading-assistant.templateParam.".concat(t.name,".desc"),a=this.$t(e);return a===e?"":a},getParamTypeLabel:function(t){return this.$t("trading-assistant.editor.paramType.".concat(t))},getOptionLabel:function(t){if(!t)return"";if(t.labelKey){var e=this.$t(t.labelKey);if(e!==t.labelKey)return e}return t.label||t.value},getParamPrecision:function(t){if("integer"===t.type)return 0;var e=t.step;if(!e||Number.isInteger(e))return 0;var a=String(e),s=a.split(".");return s[1]?s[1].length:0},handleNumericParamChange:function(t,e){var a=""===e||null===e||void 0===e?t.default:"integer"===t.type?parseInt(e,10):Number(e);this.$set(this.templateParamValues,t.name,a),this.templateDirty=!0},handleSelectParamChange:function(t,e){this.$set(this.templateParamValues,t.name,e),this.templateDirty=!0},handleBooleanParamChange:function(t,e){this.$set(this.templateParamValues,t.name,!!e),this.templateDirty=!0},handleTextParamChange:function(t,e){this.$set(this.templateParamValues,t.name,e),this.templateDirty=!0},applyPromptSuggestion:function(t){this.aiPrompt=t},handleVerify:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.verifying=!0,e.p=1,a=t.getCode(),e.n=2,(0,y.Ay)({url:"/api/strategies/verify-code",method:"post",data:{code:a,user_id:t.userId}});case 2:s=e.v,s&&s.success?H.A.success(t.$t("trading-assistant.editor.verifySuccess")):H.A.error(s&&(s.msg||s.message)||t.$t("trading-assistant.editor.verifyFailed")),e.n=4;break;case 3:e.p=3,i=e.v,H.A.error(t.$t("trading-assistant.editor.verifyFailed")+": "+(i.message||""));case 4:return e.p=4,t.verifying=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},_coerceParamValue:function(t,e){if(null!==e&&void 0!==e){var a=t.type;if("boolean"===a)return"boolean"===typeof e?e:"true"===e||1===e||"1"===e||"false"!==e&&0!==e&&"0"!==e&&void 0;if("integer"===a){var s=parseInt(String(e),10);if(!Number.isFinite(s))return;var i=s;return null!=t.min&&(i=Math.max(t.min,i)),null!=t.max&&(i=Math.min(t.max,i)),i}if("number"===a||"percent"===a){var r=Number(e);if(!Number.isFinite(r))return;var n=r;return null!=t.min&&(n=Math.max(t.min,n)),null!=t.max&&(n=Math.min(t.max,n)),n}if("select"===a){var o=t.options||[],l=new Set(o.map(function(t){return t.value}));if(l.has(e))return e;var c=String(e);return l.has(c)?c:void 0}return String(e)}},applyAIParamUpdates:function(t){var e=this;if(!this.selectedTemplate||!t||"object"!==(0,n.A)(t))return!1;var a=new Set(this.selectedTemplate.params.map(function(t){return t.name})),s=!1;return Object.keys(t).forEach(function(i){if(a.has(i)){var r=e.selectedTemplate.params.find(function(t){return t.name===i}),n=e._coerceParamValue(r,t[i]);void 0!==n&&(e.$set(e.templateParamValues,i,n),s=!0)}}),s},handleAIAdjustParams:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt.trim()){e.n=1;break}return H.A.warning(t.$t("trading-assistant.editor.aiPromptRequired")),e.a(2);case 1:if(t.selectedTemplate){e.n=2;break}return H.A.warning(t.$t("trading-assistant.editor.aiAdjustParamsNeedTemplate")),e.a(2);case 2:return t.aiAdjustingParams=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/strategies/ai-generate",method:"post",data:{prompt:t.aiPrompt,user_id:t.userId,intent:"adjust_params",template_key:t.selectedTemplateKey,params:(0,u.A)({},t.templateParamValues),code:t.getCode()}});case 4:a=e.v,a&&a.params&&"object"===(0,n.A)(a.params)?(s=t.applyAIParamUpdates(a.params),s?(t.templateDirty=!0,t.applySelectedTemplateToCode({silent:!0}),H.A.success(t.$t("trading-assistant.editor.aiAdjustParamsSuccess"))):H.A.warning(t.$t("trading-assistant.editor.aiAdjustParamsNoChanges"))):H.A.error(a&&(a.msg||a.message)||t.$t("trading-assistant.editor.aiAdjustParamsFailed")),e.n=6;break;case 5:e.p=5,i=e.v,H.A.error(i&&i.message||t.$t("trading-assistant.editor.aiAdjustParamsFailed"));case 6:return e.p=6,t.aiAdjustingParams=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleAIGenerate:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt.trim()){e.n=1;break}return H.A.warning(t.$t("trading-assistant.editor.aiPromptRequired")),e.a(2);case 1:return t.aiGenerating=!0,e.p=2,e.n=3,(0,y.Ay)({url:"/api/strategies/ai-generate",method:"post",data:{prompt:t.aiPrompt,user_id:t.userId,intent:"generate_code",template_key:t.selectedTemplateKey||void 0,params:t.selectedTemplate?(0,u.A)({},t.templateParamValues):void 0,code:t.getCode()}});case 3:a=e.v,s=a&&"string"===typeof a.code?a.code:"",s?(t.setCode(s),H.A.success(t.$t("trading-assistant.editor.aiGenerateSuccess"))):H.A.error(a&&(a.msg||a.message)||t.$t("trading-assistant.editor.aiGenerateFailed")),e.n=5;break;case 4:e.p=4,i=e.v,H.A.error(i&&i.message||t.$t("trading-assistant.editor.aiGenerateFailed"));case 5:return e.p=5,t.aiGenerating=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()}}}),J=Y,X=(0,C.A)(J,B,G,!1,null,"35a0a386",null),Q=X.exports,Z=function(){var t=this,e=t._self._c;return e("div",{staticClass:"performance-analysis strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[e("a-spin",{attrs:{spinning:t.loading}},[t.hasData?e("div",[e("div",{staticClass:"metrics-grid"},[e("div",{staticClass:"metric-card",class:t.getMetricClass(t.metrics.totalReturn)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.totalReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.totalReturn)))])]),e("div",{staticClass:"metric-card",class:t.getMetricClass(t.metrics.annualReturn)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.annualReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.annualReturn)))])]),e("div",{staticClass:"metric-card negative"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.maxDrawdown")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.maxDrawdown)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.sharpe")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.metrics.sharpe||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.winRate")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.winRate)))])]),e("div",{staticClass:"metric-card",class:t.getMetricClass((t.metrics.profitFactor||0)-1)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.profitFactor")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.metrics.profitFactor||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.totalTrades")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.metrics.totalTrades||0))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.runningDays")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.metrics.runningDays||0))])])]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("trading-assistant.performance.equityCurve")))]),e("div",{ref:"equityChart",staticClass:"chart-container"})]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("trading-assistant.performance.dailyReturns")))]),e("div",{ref:"dailyChart",staticClass:"chart-container",staticStyle:{height:"250px"}})])]):t.loading?t._e():e("a-empty",{staticClass:"strategy-tab-empty",attrs:{description:t.$t("trading-assistant.performance.noData")}})],1)],1)},tt=[],et={name:"PerformanceAnalysis",props:{strategyId:{type:[Number,String],default:null},isDark:{type:Boolean,default:!1}},data:function(){return{loading:!1,metrics:{},equityData:[],dailyReturns:[],equityChartInstance:null,dailyChartInstance:null}},computed:{hasData:function(){return this.equityData.length>0}},watch:{strategyId:{handler:function(t){t&&this.loadData()},immediate:!0},isDark:function(){var t=this;this.disposeCharts(),this.$nextTick(function(){return t.renderCharts()})}},beforeDestroy:function(){this.disposeCharts()},methods:{loadData:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return t.loading=!0,e.p=2,e.n=3,(0,p.Yx)(t.strategyId);case 3:a=e.v,a&&a.data&&(t.equityData=a.data.equity_curve||a.data||[],t.computeMetrics(),t.$nextTick(function(){return t.renderCharts()})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.p=5,t.loading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},computeMetrics:function(){var t=this.equityData;if(t.length){for(var e=t.map(function(t){return t.equity||t.value||t.y||0}),a=e[0]||1,s=e[e.length-1]||a,i=(s-a)/a,r=e[0],n=0,o=[],l=1;lr&&(r=e[l]);var c=(e[l]-r)/r;c1?Math.sqrt(o.reduce(function(t,e){return t+Math.pow(e-p,2)},0)/(o.length-1)):0,g=t.filter(function(t){return t.trade_count}).reduce(function(t,e){return t+e.trade_count},0)||0,h=t.filter(function(t){return t.win_count}).reduce(function(t,e){return t+e.win_count},0)||0,_=t.filter(function(t){return t.gross_profit}).reduce(function(t,e){return t+e.gross_profit},0),y=Math.abs(t.filter(function(t){return t.gross_loss}).reduce(function(t,e){return t+e.gross_loss},0));this.metrics={totalReturn:i,annualReturn:Math.pow(1+i,u)-1,maxDrawdown:n,sharpe:m>0?p/m*Math.sqrt(252):0,winRate:g>0?h/g:0,profitFactor:y>0?_/y:_>0?999:0,totalTrades:g,runningDays:d}}else this.metrics={}},renderCharts:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.getEcharts();case 1:if(a=e.v,a){e.n=2;break}return e.a(2);case 2:t.renderEquityChart(a),t.renderDailyChart(a);case 3:return e.a(2)}},e)}))()},getEcharts:function(){return(0,l.A)((0,o.A)().m(function t(){var e;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!window.echarts){t.n=1;break}return t.a(2,window.echarts);case 1:return t.p=1,t.n=2,Promise.resolve().then(a.bind(a,29362));case 2:return e=t.v,window.echarts=e.default||e,t.a(2,window.echarts);case 3:return t.p=3,t.v,t.a(2,null)}},t,null,[[1,3]])}))()},renderEquityChart:function(t){if(this.$refs.equityChart){this.equityChartInstance=t.init(this.$refs.equityChart,this.isDark?"dark":null);var e=this.equityData.map(function(t){return t.date||t.timestamp||t.x||""}),a=this.equityData.map(function(t){return t.equity||t.value||t.y||0});this.equityChartInstance.setOption({tooltip:{trigger:"axis"},grid:{left:60,right:20,top:20,bottom:30},xAxis:{type:"category",data:e,axisLabel:{fontSize:10}},yAxis:{type:"value",axisLabel:{fontSize:10}},series:[{type:"line",data:a,smooth:!0,lineStyle:{width:2,color:"#1890ff"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(24,144,255,0.3)"},{offset:1,color:"rgba(24,144,255,0.02)"}]}},itemStyle:{color:"#1890ff"},showSymbol:!1}]})}},renderDailyChart:function(t){this.$refs.dailyChart&&this.dailyReturns.length&&(this.dailyChartInstance=t.init(this.$refs.dailyChart,this.isDark?"dark":null),this.dailyChartInstance.setOption({tooltip:{trigger:"axis",formatter:function(t){return"".concat((100*t[0].value).toFixed(2),"%")}},grid:{left:60,right:20,top:10,bottom:30},xAxis:{type:"category",data:this.dailyReturns.map(function(t,e){return e+1}),show:!1},yAxis:{type:"value",axisLabel:{formatter:function(t){return(100*t).toFixed(1)+"%"},fontSize:10}},series:[{type:"bar",data:this.dailyReturns.map(function(t){return{value:t,itemStyle:{color:t>=0?"#52c41a":"#ff4d4f"}}}),barMaxWidth:6}]}))},disposeCharts:function(){this.equityChartInstance&&(this.equityChartInstance.dispose(),this.equityChartInstance=null),this.dailyChartInstance&&(this.dailyChartInstance.dispose(),this.dailyChartInstance=null)},formatPercent:function(t){return void 0===t||null===t?"--":(t>=0?"+":"")+(100*t).toFixed(2)+"%"},getMetricClass:function(t){return t?t>0?"positive":t<0?"negative":"":""}}},at=et,st=(0,C.A)(at,Z,tt,!1,null,"01ff5f5a",null),it=st.exports,rt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-logs strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[e("div",{staticClass:"logs-toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.filterLevel,callback:function(e){t.filterLevel=e},expression:"filterLevel"}},[e("a-radio-button",{attrs:{value:"all"}},[t._v("All")]),e("a-radio-button",{attrs:{value:"trade"}},[e("a-badge",{attrs:{count:t.countByLevel("trade"),"overflow-count":99,offset:[6,-2]}},[t._v(" "+t._s(t.$t("trading-assistant.logs.level.trade"))+" ")])],1),e("a-radio-button",{attrs:{value:"signal"}},[t._v(t._s(t.$t("trading-assistant.logs.level.signal")))]),e("a-radio-button",{attrs:{value:"error"}},[t._v(t._s(t.$t("trading-assistant.logs.level.error")))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-switch",{attrs:{checked:t.autoRefresh,size:"small"},on:{change:t.toggleAutoRefresh}}),e("span",{staticClass:"auto-refresh-label"},[t._v(t._s(t.$t("trading-assistant.logs.autoRefresh")))])],1)]),e("div",{ref:"logsContainer",staticClass:"logs-container custom-scrollbar"},[0===t.filteredLogs.length?e("div",{staticClass:"logs-empty"},[e("a-icon",{staticStyle:{"font-size":"32px",color:"#ccc"},attrs:{type:"file-text"}}),e("p",[t._v(t._s(t.$t("trading-assistant.logs.noLogs")))])],1):t._e(),t._l(t.filteredLogs,function(a,s){return e("div",{key:s,staticClass:"log-entry",class:"level-"+a.level},[e("span",{staticClass:"log-time"},[t._v(t._s(t.formatTime(a.timestamp)))]),e("a-tag",{staticClass:"log-level",attrs:{color:t.getLevelColor(a.level),size:"small"}},[t._v(" "+t._s(t.getLevelText(a.level))+" ")]),e("span",{staticClass:"log-message"},[t._v(t._s(a.message))])],1)})],2)])},nt=[],ot={name:"StrategyLogs",props:{strategyId:{type:[Number,String],default:null},isDark:{type:Boolean,default:!1}},data:function(){return{logs:[],filterLevel:"all",autoRefresh:!1,refreshTimer:null,loading:!1}},computed:{filteredLogs:function(){var t=this;return"all"===this.filterLevel?this.logs:this.logs.filter(function(e){return e.level===t.filterLevel})}},watch:{strategyId:{handler:function(t){t&&this.loadLogs()},immediate:!0}},beforeDestroy:function(){this.stopAutoRefresh()},methods:{loadLogs:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return t.loading=!0,e.p=2,e.n=3,(0,y.Ay)({url:"/api/strategies/logs",method:"get",params:{id:t.strategyId,limit:200}});case 3:a=e.v,a&&a.data&&(t.logs=a.data,t.$nextTick(function(){return t.scrollToBottom()})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.p=5,t.loading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},toggleAutoRefresh:function(t){var e=this;this.autoRefresh=t,t?this.refreshTimer=setInterval(function(){return e.loadLogs()},5e3):this.stopAutoRefresh()},stopAutoRefresh:function(){this.refreshTimer&&(clearInterval(this.refreshTimer),this.refreshTimer=null)},scrollToBottom:function(){var t=this.$refs.logsContainer;t&&(t.scrollTop=t.scrollHeight)},countByLevel:function(t){return this.logs.filter(function(e){return e.level===t}).length},formatTime:function(t){if(!t)return"";try{var e=new Date(t);return e.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch(a){return t}},getLevelColor:function(t){var e={info:"blue",warn:"orange",error:"red",trade:"green",signal:"purple"};return e[t]||"default"},getLevelText:function(t){var e="trading-assistant.logs.level.".concat(t),a=this.$t(e);return a!==e?a:t}}},lt=ot,ct=(0,C.A)(lt,rt,nt,!1,null,"73589ce4",null),dt=ct.exports,ut=function(){var t=this,e=t._self._c;return e("div",{staticClass:"dashboard-pro",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"kpi-grid"},[e("div",{staticClass:"kpi-card kpi-primary"},[e("div",{staticClass:"kpi-glow"}),e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"wallet"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.totalEquity")))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"currency"},[t._v("$")]),e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.summary.total_equity)))])]),e("div",{staticClass:"kpi-sub"},[e("span",{class:t.summary.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.total_pnl>=0?"+":"")+t._s(t.formatNumber(t.summary.total_pnl))+" ")]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.totalPnl")))])])])]),e("div",{staticClass:"kpi-card kpi-win-rate"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"trophy"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.winRate")||"胜率"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.performance.win_rate,1)))]),e("span",{staticClass:"unit"},[t._v("%")])]),e("div",{staticClass:"kpi-sub"},[e("span",{staticClass:"positive"},[t._v(t._s(t.performance.winning_trades))]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.win")))]),e("span",{staticClass:"divider"},[t._v("/")]),e("span",{staticClass:"negative"},[t._v(t._s(t.performance.losing_trades))]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.lose")))])])]),e("div",{staticClass:"kpi-ring"},[e("svg",{attrs:{viewBox:"0 0 36 36"}},[e("path",{staticClass:"ring-bg",attrs:{d:"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"}}),e("path",{staticClass:"ring-progress",attrs:{"stroke-dasharray":"".concat(t.performance.win_rate||0,", 100"),d:"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"}})])])]),e("div",{staticClass:"kpi-card kpi-profit-factor"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"rise"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.profitFactor")||"盈亏比"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.performance.profit_factor,2)))]),e("span",{staticClass:"unit"},[t._v(":1")])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v(t._s(t.$t("dashboard.label.avgProfit"))+" ")]),e("span",{staticClass:"positive"},[t._v("$"+t._s(t.formatNumber(t.performance.avg_win)))])])])]),e("div",{staticClass:"kpi-card kpi-drawdown"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"fall"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.maxDrawdown")||"最大回撤"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount negative"},[t._v(t._s(t.formatNumber(t.performance.max_drawdown_pct,1)))]),e("span",{staticClass:"unit"},[t._v("%")])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v("$"+t._s(t.formatNumber(t.performance.max_drawdown)))])])])]),e("div",{staticClass:"kpi-card kpi-trades"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"swap"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.totalTrades")||"总交易"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.performance.total_trades))]),e("span",{staticClass:"unit"},[t._v(t._s(t.$t("dashboard.unit.trades")))])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v(t._s(t.$t("dashboard.label.avgDaily"))+" ")]),e("span",[t._v(t._s(t.avgTradesPerDay))]),e("span",{staticClass:"label"},[t._v(" "+t._s(t.$t("dashboard.unit.trades")))])])])]),e("div",{staticClass:"kpi-card kpi-strategies clickable",on:{click:t.goToStrategyManagement}},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.runningStrategies")||"运行中策略"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.summary.indicator_strategy_count))]),e("span",{staticClass:"unit"},[t._v(t._s(t.$t("dashboard.unit.strategies")))])]),e("div",{staticClass:"kpi-sub"},[e("span",{staticClass:"highlight"},[t._v(t._s(t.summary.indicator_strategy_count))]),e("span",{staticClass:"label"},[t._v(" "+t._s(t.$t("dashboard.label.indicator")))])])]),e("div",{staticClass:"card-arrow"},[e("a-icon",{attrs:{type:"right"}})],1)])]),t.showSetupGuide&&!t.hideSetupGuide?e("div",{staticClass:"setup-guide-card"},[e("div",{staticClass:"setup-guide-copy"},[e("div",{staticClass:"setup-guide-title"},[t._v(t._s(t.$t("dashboard.setupGuide.title")))]),e("div",{staticClass:"setup-guide-desc"},[t._v(t._s(t.$t("dashboard.setupGuide.desc")))]),e("div",{staticClass:"setup-guide-path"},[t._v(t._s(t.$t("dashboard.setupGuide.path")))])]),e("div",{staticClass:"setup-guide-actions"},[e("a-button",{on:{click:t.goToStrategyManagement}},[e("a-icon",{attrs:{type:"appstore"}}),t._v(" "+t._s(t.$t("dashboard.setupGuide.secondary"))+" ")],1),e("a-button",{attrs:{type:"primary"},on:{click:t.goToStrategyCreate}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("dashboard.setupGuide.primary"))+" ")],1)],1)]):t._e(),e("div",{staticClass:"chart-row"},[e("div",{staticClass:"chart-panel chart-main"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"calendar"}}),e("span",[t._v(t._s(t.$t("dashboard.profitCalendar")||"收益日曆"))])],1),e("div",{staticClass:"calendar-nav"},[e("a-button",{attrs:{type:"link",size:"small",disabled:t.currentCalendarIndex>=t.calendarMonths.length-1},on:{click:t.prevMonth}},[e("a-icon",{attrs:{type:"left"}})],1),e("span",{staticClass:"current-month"},[t._v(t._s(t.currentMonthLabel))]),e("a-button",{attrs:{type:"link",size:"small",disabled:t.currentCalendarIndex<=0},on:{click:t.nextMonth}},[e("a-icon",{attrs:{type:"right"}})],1)],1)]),e("div",{staticClass:"profit-calendar"},[t.currentCalendarMonth?[e("div",{staticClass:"month-summary"},[e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.ranking.totalProfit")))]),e("span",{staticClass:"summary-value",class:t.currentCalendarMonth.total>=0?"positive":"negative"},[t._v(" "+t._s(t.currentCalendarMonth.total>=0?"+":"")+"$"+t._s(t.formatNumber(t.currentCalendarMonth.total))+" ")])]),e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.label.win")))]),e("span",{staticClass:"summary-value positive"},[t._v(t._s(t.currentCalendarMonth.win_days))])]),e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.label.lose")))]),e("span",{staticClass:"summary-value negative"},[t._v(t._s(t.currentCalendarMonth.lose_days))])])]),e("div",{staticClass:"calendar-weekdays"},t._l(t.weekdays,function(a){return e("div",{key:a,staticClass:"weekday"},[t._v(t._s(a))])}),0),e("div",{staticClass:"calendar-grid"},[t._l(t.calendarFirstDayOffset,function(t){return e("div",{key:"empty-"+t,staticClass:"calendar-cell empty"})}),t._l(t.currentCalendarMonth.days_in_month,function(a){return e("div",{key:a,staticClass:"calendar-cell",class:t.getDayClass(a)},[e("span",{staticClass:"day-number"},[t._v(t._s(a))]),null!==t.getDayProfit(a)?e("span",{staticClass:"day-profit",class:t.getDayProfit(a)>=0?"positive":"negative"},[t._v(" "+t._s(t.getDayProfit(a)>=0?"+":"")+t._s(t.formatCompactNumber(t.getDayProfit(a)))+" ")]):t._e()])})],2)]:e("div",{staticClass:"calendar-empty"},[e("a-icon",{attrs:{type:"inbox"}}),e("span",[t._v(t._s(t.$t("dashboard.noData")))])],1)],2)]),e("div",{staticClass:"chart-panel chart-side"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"pie-chart"}}),e("span",[t._v(t._s(t.$t("dashboard.strategyAllocation")||"策略分布"))])],1)]),e("div",{ref:"pieChart",staticClass:"chart-body"})])]),e("div",{staticClass:"chart-row"},[e("div",{staticClass:"chart-panel chart-half"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"area-chart"}}),e("span",[t._v(t._s(t.$t("dashboard.drawdownCurve")||"回撤曲线"))])],1)]),e("div",{ref:"drawdownChart",staticClass:"chart-body chart-sm"})]),e("div",{staticClass:"chart-panel chart-half"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"clock-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.hourlyDistribution")||"交易时段"))])],1)]),e("div",{ref:"hourlyChart",staticClass:"chart-body chart-sm"})])]),e("div",{staticClass:"chart-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"ordered-list"}}),e("span",[t._v(t._s(t.$t("dashboard.strategyRanking")||"策略排行榜"))])],1)]),e("div",{staticClass:"strategy-ranking"},[0===t.strategyStats.length?e("div",{staticClass:"empty-state"},[e("a-icon",{attrs:{type:"inbox"}}),e("span",[t._v(t._s(t.$t("dashboard.noStrategyData")))])],1):e("div",{staticClass:"ranking-grid"},t._l(t.strategyStats.slice(0,6),function(a,s){return e("div",{key:a.strategy_id,staticClass:"ranking-card",class:{"rank-top":s<3}},[e("div",{staticClass:"rank-badge",class:"rank-".concat(s+1)},[t._v(t._s(s+1))]),e("div",{staticClass:"rank-info"},[e("div",{staticClass:"rank-name"},[t._v(t._s(a.strategy_name))]),e("div",{staticClass:"rank-stats"},[e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.ranking.totalProfit")))]),e("span",{class:a.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(a.total_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(a.total_pnl))+" ")])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.winRate")))]),e("span",[t._v(t._s(t.formatNumber(a.win_rate,1))+"%")])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.profitFactor")))]),e("span",[t._v(t._s(t.formatNumber(a.profit_factor,2)))])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.ranking.trades")))]),e("span",[t._v(t._s(a.total_trades))])])])]),e("div",{staticClass:"rank-pnl-bar"},[e("div",{staticClass:"bar-fill",class:a.total_pnl>=0?"positive":"negative",style:{width:"".concat(Math.min(100,Math.abs(a.total_pnl)/t.maxStrategyPnl*100),"%")}})])])}),0)])]),e("div",{staticClass:"table-row"},[e("div",{staticClass:"table-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"stock"}}),e("span",[t._v(t._s(t.$t("dashboard.currentPositions")))])],1),e("div",{staticClass:"panel-badge"},[t._v(t._s((t.summary.current_positions||[]).length))])]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.positionColumns,"data-source":t.summary.current_positions,rowKey:"id",pagination:!1,size:"small",scroll:{x:"max-content"}},scopedSlots:t._u([{key:"symbol",fn:function(a,s){return[e("div",{staticClass:"symbol-cell"},[e("span",{staticClass:"symbol-name"},[t._v(t._s(a))]),e("span",{staticClass:"symbol-strategy"},[t._v(t._s(s.strategy_name))])])]}},{key:"side",fn:function(a){return[e("span",{staticClass:"side-tag",class:"long"===a?"long":"short"},[t._v(" "+t._s("long"===a?"LONG":"SHORT")+" ")])]}},{key:"unrealized_pnl",fn:function(a,s){return[e("div",{staticClass:"pnl-cell"},[e("span",{class:a>=0?"positive":"negative"},[t._v(" "+t._s(a>=0?"+":"")+"$"+t._s(t.formatNumber(a))+" ")]),e("span",{staticClass:"pnl-percent",class:s.pnl_percent>=0?"positive":"negative"},[t._v(" "+t._s(s.pnl_percent>=0?"+":"")+t._s(t.formatNumber(s.pnl_percent))+"% ")])])]}}])})],1),e("div",{staticClass:"table-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"history"}}),e("span",[t._v(t._s(t.$t("dashboard.recentTrades")))])],1)]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.columns,"data-source":t.summary.recent_trades,rowKey:"id",pagination:{pageSize:8,size:"small"},size:"small",scroll:{x:"max-content"}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("span",{staticClass:"type-tag",class:t.getTypeClass(a)},[t._v(" "+t._s(t.getSignalTypeText(a))+" ")])]}},{key:"profit",fn:function(a,s){return[e("span",{class:"--"!==t.formatProfitValue(a,s)?a>=0?"positive":"negative":""},[t._v(" "+t._s(t.formatProfitValue(a,s))+" ")])]}},{key:"time",fn:function(a){return[e("span",{staticClass:"time-cell"},[t._v(t._s(t.formatTime(a)))])]}}])})],1)]),e("div",{staticClass:"chart-panel orders-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"unordered-list"}}),e("span",[t._v(t._s(t.$t("dashboard.pendingOrders")))]),e("a-tooltip",{attrs:{title:t.soundEnabled?t.$t("dashboard.clickToMute"):t.$t("dashboard.clickToUnmute")}},[e("a-icon",{staticClass:"sound-toggle",class:{"sound-off":!t.soundEnabled},attrs:{type:t.soundEnabled?"sound":"audio-muted"},on:{click:t.toggleSound}})],1)],1),e("div",{staticClass:"panel-badge"},[t._v(t._s(t.ordersPagination.total))])]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.orderColumns,"data-source":t.pendingOrders,rowKey:"id",pagination:{current:t.ordersPagination.current,pageSize:t.ordersPagination.pageSize,total:t.ordersPagination.total,showSizeChanger:!0,size:"small",showTotal:function(e){return t.$t("dashboard.totalOrders",{total:e})}},size:"small",loading:t.ordersLoading,scroll:{x:1200}},on:{change:t.handleOrdersTableChange},scopedSlots:t._u([{key:"strategy_name",fn:function(a,s){return[e("div",{staticClass:"symbol-cell"},[e("span",{staticClass:"symbol-name"},[t._v(t._s(a||"-"))]),e("span",{staticClass:"symbol-strategy"},[t._v("ID: "+t._s(s.strategy_id))])])]}},{key:"symbol",fn:function(a){return[e("span",{staticClass:"symbol-tag"},[t._v(t._s(a))])]}},{key:"signal_type",fn:function(a){return[e("span",{staticClass:"type-tag",class:t.getTypeClass(a)},[t._v(" "+t._s(t.getSignalTypeText(a))+" ")])]}},{key:"exchange",fn:function(a,s){return[s&&(s.exchange_display||s.exchange_id||a)?e("span",{staticClass:"exchange-tag",class:(s.exchange_display||s.exchange_id||a).toLowerCase()},[t._v(" "+t._s(String(s.exchange_display||s.exchange_id||a).toUpperCase())+" ")]):e("span",{staticClass:"text-muted"},[t._v("-")]),s&&s.market_type?e("div",{staticClass:"market-type"},[t._v(" "+t._s(String(s.market_type).toUpperCase())+" ")]):t._e()]}},{key:"notify",fn:function(a,s){return[e("div",{staticClass:"notify-icons"},[t._l(s&&s.notify_channels?s.notify_channels:[],function(a){return e("a-tooltip",{key:"".concat(s.id,"-").concat(a),attrs:{title:String(a)}},[e("a-icon",{staticClass:"notify-icon",attrs:{type:t.getNotifyIconType(a)}})],1)}),s&&s.notify_channels&&0!==s.notify_channels.length?t._e():e("span",{staticClass:"text-muted"},[t._v("-")])],2)]}},{key:"status",fn:function(a,s){return[e("span",{staticClass:"status-tag",class:a},[t._v(" "+t._s(t.getStatusText(a))+" ")]),"failed"===a&&s.error_message?e("div",{staticClass:"error-hint"},[e("a-tooltip",{attrs:{title:s.error_message}},[e("a-icon",{attrs:{type:"exclamation-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.viewError")))])],1)],1):t._e()]}},{key:"amount",fn:function(a,s){return[e("div",[t._v(t._s(t.formatNumber(a,8)))]),s.filled_amount?e("div",{staticClass:"sub-text"},[t._v(" "+t._s(t.$t("dashboard.filled"))+": "+t._s(t.formatNumber(s.filled_amount,8))+" ")]):t._e()]}},{key:"price",fn:function(a,s){return[s.filled_price?e("div",[t._v(t._s(t.formatNumber(s.filled_price)))]):e("div",{staticClass:"text-muted"},[t._v("-")])]}},{key:"time_info",fn:function(a,s){return[e("div",{staticClass:"time-cell"},[t._v(t._s(t.formatTime(s.created_at)))]),s.executed_at?e("div",{staticClass:"sub-text"},[t._v(" "+t._s(t.formatTime(s.executed_at))+" ")]):t._e()]}}])})],1)])},pt=[],mt=(a(36033),a(68156),a(29362)),gt={summary:"/api/dashboard/summary",pendingOrders:"/api/dashboard/pendingOrders"};function ht(){return(0,y.Ay)({url:gt.summary,method:"get"})}function _t(t){return(0,y.Ay)({url:gt.pendingOrders,method:"get",params:t})}var yt=a(95353),ft={name:"Dashboard",props:{hideSetupGuide:{type:Boolean,default:!1}},data:function(){return{summary:{ai_strategy_count:0,indicator_strategy_count:0,total_equity:0,total_pnl:0,total_realized_pnl:0,total_unrealized_pnl:0,performance:{},strategy_stats:[],daily_pnl_chart:[],strategy_pnl_chart:[],monthly_returns:[],hourly_distribution:[],calendar_months:[],recent_trades:[],current_positions:[]},currentCalendarIndex:0,pieChart:null,drawdownChart:null,hourlyChart:null,pendingOrders:[],ordersLoading:!1,ordersPagination:{current:1,pageSize:20,total:0},orderPollTimer:null,lastOrderId:0,orderPollIntervalMs:5e3,soundEnabled:!0,beepCtx:null}},computed:(0,u.A)((0,u.A)({},(0,yt.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},performance:function(){return this.summary.performance||{}},strategyStats:function(){return this.summary.strategy_stats||[]},showSetupGuide:function(){var t=Number(this.summary.indicator_strategy_count||0),e=Array.isArray(this.summary.current_positions)&&this.summary.current_positions.length>0,a=Array.isArray(this.summary.recent_trades)&&this.summary.recent_trades.length>0;return 0===t||!e&&!a},maxStrategyPnl:function(){var t=this.strategyStats;return t.length?Math.max.apply(Math,(0,c.A)(t.map(function(t){return Math.abs(t.total_pnl||0)})).concat([1])):1},avgTradesPerDay:function(){var t=this.summary.daily_pnl_chart||[],e=t.length||1,a=this.performance.total_trades||0;return(a/e).toFixed(1)},calendarMonths:function(){return this.summary.calendar_months||[]},currentCalendarMonth:function(){var t=this.calendarMonths;return t.length&&t[this.currentCalendarIndex]||null},currentMonthLabel:function(){var t=this.currentCalendarMonth;if(!t)return"-";var e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];return"".concat(e[t.month-1]," ").concat(t.year)},weekdays:function(){return["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]},calendarFirstDayOffset:function(){var t=this.currentCalendarMonth;return t?t.first_weekday:0},orderStrategyFilters:function(){var t,e=Array.isArray(this.pendingOrders)?this.pendingOrders:[],a=new Map,s=(0,d.A)(e);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i&&i.strategy_id;if(void 0!==r&&null!==r&&!a.has(String(r))){var n=i&&i.strategy_name?String(i.strategy_name):"",o=n?"".concat(n," (ID: ").concat(r,")"):"ID: ".concat(r);a.set(String(r),{text:o,value:String(r)})}}}catch(l){s.e(l)}finally{s.f()}return Array.from(a.values()).sort(function(t,e){return String(t.text).localeCompare(String(e.text))})},columns:function(){var t=this;return[{title:this.$t("dashboard.table.time"),dataIndex:"created_at",scopedSlots:{customRender:"time"},width:150},{title:this.$t("dashboard.table.symbol"),dataIndex:"symbol",width:100},{title:this.$t("dashboard.table.type"),dataIndex:"type",scopedSlots:{customRender:"type"},width:90},{title:this.$t("dashboard.table.price"),dataIndex:"price",customRender:function(e){return t.formatNumber(e)},width:100},{title:this.$t("dashboard.table.profit"),dataIndex:"profit",scopedSlots:{customRender:"profit"},align:"right",width:100}]},positionColumns:function(){var t=this;return[{title:this.$t("dashboard.table.symbol"),dataIndex:"symbol",scopedSlots:{customRender:"symbol"}},{title:this.$t("dashboard.table.side"),dataIndex:"side",scopedSlots:{customRender:"side"}},{title:this.$t("dashboard.table.size"),dataIndex:"size",customRender:function(e){return t.formatNumber(e,4)}},{title:this.$t("dashboard.table.entryPrice"),dataIndex:"entry_price",customRender:function(e){return t.formatNumber(e)}},{title:this.$t("dashboard.table.pnl"),dataIndex:"unrealized_pnl",scopedSlots:{customRender:"unrealized_pnl"},align:"right"}]},orderColumns:function(){return[{title:this.$t("dashboard.orderTable.strategy"),dataIndex:"strategy_name",scopedSlots:{customRender:"strategy_name"},filters:this.orderStrategyFilters,filterMultiple:!0,onFilter:function(t,e){return String(e&&e.strategy_id)===String(t)},width:150},{title:this.$t("dashboard.orderTable.exchange"),dataIndex:"exchange_id",scopedSlots:{customRender:"exchange"},width:120},{title:this.$t("dashboard.orderTable.notify"),dataIndex:"notify_channels",scopedSlots:{customRender:"notify"},width:100},{title:this.$t("dashboard.orderTable.symbol"),dataIndex:"symbol",scopedSlots:{customRender:"symbol"},width:110},{title:this.$t("dashboard.orderTable.signalType"),dataIndex:"signal_type",scopedSlots:{customRender:"signal_type"},width:100},{title:this.$t("dashboard.orderTable.amount"),dataIndex:"amount",scopedSlots:{customRender:"amount"},width:130},{title:this.$t("dashboard.orderTable.price"),dataIndex:"filled_price",scopedSlots:{customRender:"price"},width:100},{title:this.$t("dashboard.orderTable.status"),dataIndex:"status",scopedSlots:{customRender:"status"},width:130},{title:this.$t("dashboard.orderTable.timeInfo"),dataIndex:"created_at",scopedSlots:{customRender:"time_info"},width:160}]}}),mounted:function(){this.fetchData(),this.fetchPendingOrders(),this.startOrderPolling(),window.addEventListener("resize",this.handleResize)},beforeDestroy:function(){this.stopOrderPolling(),window.removeEventListener("resize",this.handleResize),this.pieChart&&this.pieChart.dispose(),this.drawdownChart&&this.drawdownChart.dispose(),this.hourlyChart&&this.hourlyChart.dispose()},methods:{goToStrategyManagement:function(){this.$router.push("/trading-assistant?tab=strategy")},goToStrategyCreate:function(){this.$router.push("/trading-assistant?tab=strategy&mode=create")},fetchData:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,ht();case 1:a=e.v,1===a.code&&(t.summary=(0,u.A)((0,u.A)({},t.summary),a.data),t.$nextTick(function(){t.initCharts()})),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},fetchPendingOrders:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i,r,n,l;return(0,o.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return a.ordersLoading=!0,s.p=1,i=t||a.ordersPagination.current||1,r=e||a.ordersPagination.pageSize||20,s.n=2,_t({page:i,pageSize:r});case 2:n=s.v,1===n.code&&(l=n.data||{},a.pendingOrders=l.list||[],a.ordersPagination.current=Number(l.page||i||1),a.ordersPagination.pageSize=Number(l.pageSize||r||20),a.ordersPagination.total=Number(l.total||0)),s.n=4;break;case 3:s.p=3,s.v;case 4:return s.p=4,a.ordersLoading=!1,s.f(4);case 5:return s.a(2)}},s,null,[[1,3,4,5]])}))()},playOrderBeep:function(){if(this.soundEnabled)try{var t=window.AudioContext||window.webkitAudioContext;if(!t)return;this.beepCtx||(this.beepCtx=new t);var e=this.beepCtx;"suspended"===e.state&&"function"===typeof e.resume&&e.resume().catch(function(){});var a=function(t,a){var s=e.createOscillator(),i=e.createGain();s.type="sine",s.frequency.value=a,i.gain.value=.08,s.connect(i),i.connect(e.destination),s.start(t),s.stop(t+.12)},s=e.currentTime;a(s,880),a(s+.18,1100)}catch(i){}},startOrderPolling:function(){var t=this;this.stopOrderPolling(),this.initLastOrderId(),this.orderPollTimer=setInterval(function(){t.pollNewOrders()},this.orderPollIntervalMs)},stopOrderPolling:function(){this.orderPollTimer&&(clearInterval(this.orderPollTimer),this.orderPollTimer=null)},initLastOrderId:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,_t({page:1,pageSize:1});case 1:a=e.v,1===a.code&&a.data&&a.data.list&&a.data.list.length>0&&(t.lastOrderId=a.data.list[0].id||0),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},pollNewOrders:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r,n,l,c,u;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,_t({page:1,pageSize:10});case 1:if(a=e.v,1===a.code&&a.data&&a.data.list){e.n=2;break}return e.a(2);case 2:if(s=a.data.list||[],0!==s.length){e.n=3;break}return e.a(2);case 3:i=!1,r=t.lastOrderId,n=(0,d.A)(s);try{for(n.s();!(l=n.n()).done;)c=l.value,u=c.id||0,u>t.lastOrderId&&(i=!0,u>r&&(r=u))}catch(o){n.e(o)}finally{n.f()}i&&(t.lastOrderId=r,t.playOrderBeep(),t.fetchPendingOrders(),t.$notification.info({message:t.$t("dashboard.newOrderNotify"),description:t.$t("dashboard.newOrderDesc"),duration:4})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[0,4]])}))()},toggleSound:function(){this.soundEnabled=!this.soundEnabled,this.soundEnabled?this.$message.success(this.$t("dashboard.soundEnabled")):this.$message.info(this.$t("dashboard.soundDisabled"))},handleOrdersTableChange:function(t){var e=t&&t.current?t.current:1,a=t&&t.pageSize?t.pageSize:this.ordersPagination.pageSize||20;this.ordersPagination.current=e,this.ordersPagination.pageSize=a,this.fetchPendingOrders(e,a)},getTypeClass:function(t){if(!t)return"";var e=t.toLowerCase();return e.includes("open_long")||e.includes("add_long")?"long":e.includes("open_short")||e.includes("add_short")?"short":e.includes("close_long")?"close-long":e.includes("close_short")?"close-short":""},getSignalTypeColor:function(t){return t?(t=t.toLowerCase(),t.includes("open_long")||t.includes("add_long")?"green":t.includes("open_short")||t.includes("add_short")?"red":t.includes("close_long")?"orange":t.includes("close_short")?"purple":"blue"):"default"},getSignalTypeText:function(t){if(!t)return"-";var e={open_long:this.$t("dashboard.signalType.openLong"),open_short:this.$t("dashboard.signalType.openShort"),close_long:this.$t("dashboard.signalType.closeLong"),close_short:this.$t("dashboard.signalType.closeShort"),add_long:this.$t("dashboard.signalType.addLong"),add_short:this.$t("dashboard.signalType.addShort")};return e[t.toLowerCase()]||t.toUpperCase()},getStatusColor:function(t){var e={pending:"orange",processing:"blue",completed:"green",failed:"red",cancelled:"default"};return e[t]||"default"},getStatusText:function(t){if(!t)return"-";var e={pending:this.$t("dashboard.status.pending"),processing:this.$t("dashboard.status.processing"),completed:this.$t("dashboard.status.completed"),failed:this.$t("dashboard.status.failed"),cancelled:this.$t("dashboard.status.cancelled")};return e[t.toLowerCase()]||t.toUpperCase()},getNotifyIconType:function(t){var e=String(t||"").trim().toLowerCase(),a={browser:"bell",webhook:"link",discord:"comment",telegram:"message",tg:"message",tele:"message",email:"mail",phone:"phone"};return a[e]||"notification"},getExchangeTagColor:function(t){var e=String(t||"").trim().toLowerCase(),a={binance:"gold",okx:"purple",bitget:"cyan",signal:"geekblue"};return a[e]||"blue"},formatNumber:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t?"0.00":Number(t).toLocaleString("en-US",{minimumFractionDigits:e,maximumFractionDigits:e})},formatProfitValue:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),s=["open_long","open_short","add_long","add_short"];if(0===a&&e&&s.includes(e.type))return"--";if(Math.abs(a)<1e-6)return e&&s.includes(e.type)?"--":"$0.00";var i=a>=0?"+":"";return"".concat(i,"$").concat(this.formatNumber(a))},formatCompactNumber:function(t){if(void 0===t||null===t)return"0";var e=Math.abs(t);return e>=1e6?(t/1e6).toFixed(1)+"M":e>=1e3?(t/1e3).toFixed(1)+"k":e>=100?Math.round(t):t.toFixed(0)},prevMonth:function(){this.currentCalendarIndex0&&this.currentCalendarIndex--},getDayProfit:function(t){var e=this.currentCalendarMonth;if(!e||!e.days)return null;var a=String(t).padStart(2,"0");return void 0!==e.days[a]?e.days[a]:null},getDayClass:function(t){var e=this.getDayProfit(t);return null===e?"no-data":e>0?"profit":e<0?"loss":"zero"},formatTime:function(t){if(!t)return"-";try{var e;if("string"===typeof t&&t.includes("-")&&t.includes(":"))e=new Date(t);else{if(!("number"===typeof t||"string"===typeof t&&/^\d+$/.test(t)))return"-";var a="string"===typeof t?parseInt(t,10):t,s=a<1e12?1e3*a:a;e=new Date(s)}return isNaN(e.getTime())?"-":e.toLocaleString()}catch(i){return"-"}},initCharts:function(){this.initPieChart(),this.initDrawdownChart(),this.initHourlyChart()},initPieChart:function(){var t=this,e=this.$refs.pieChart;if(e){this.pieChart=mt.init(e);var a=Array.isArray(this.summary.strategy_stats)?this.summary.strategy_stats:[],s=Array.isArray(this.summary.strategy_pnl_chart)?this.summary.strategy_pnl_chart:[],i=[];i=a.length>0?a.map(function(t){var e=t&&t.strategy_name?String(t.strategy_name):"-",a=Number(t&&t.total_pnl?t.total_pnl:0),s=Number(t&&t.total_trades?t.total_trades:0),i=0!==a?Math.abs(a):s;return{name:e,value:i,signedValue:a,trades:s}}).filter(function(t){return t.value>0}):s.map(function(t){var e=t&&t.name?String(t.name):"-",a=Number(t&&t.value?t.value:0);return{name:e,value:Math.abs(a),signedValue:a}}).filter(function(t){return t.value>0});var r=this.isDarkTheme,n=r?"#9ca3af":"#6b7280",o=[new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#3b82f6"},{offset:1,color:"#1d4ed8"}]),new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#8b5cf6"},{offset:1,color:"#6d28d9"}]),new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#10b981"},{offset:1,color:"#059669"}]),new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#f59e0b"},{offset:1,color:"#d97706"}]),new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#ec4899"},{offset:1,color:"#be185d"}]),new mt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#06b6d4"},{offset:1,color:"#0891b2"}])],l={backgroundColor:"transparent",tooltip:{trigger:"item",backgroundColor:r?"rgba(17, 24, 39, 0.95)":"rgba(255, 255, 255, 0.95)",borderColor:r?"#374151":"#e5e7eb",textStyle:{color:r?"#f3f4f6":"#1f2937"},formatter:function(e){var a=e&&e.data&&"number"===typeof e.data.signedValue?e.data.signedValue:0,s=(a>=0?"+":"")+t.formatNumber(a,2),i=a>=0?"#10b981":"#ef4444";return'\n
\n
'.concat(e.name,'
\n
占比 ').concat(e.percent,'%
\n
PNL $').concat(s,"
\n
\n ")}},legend:{bottom:10,left:"center",itemWidth:12,itemHeight:12,itemGap:16,textStyle:{color:n,fontSize:11}},color:o,series:[{name:"策略分布",type:"pie",radius:["50%","75%"],center:["50%","45%"],avoidLabelOverlap:!1,itemStyle:{borderRadius:6,borderColor:r?"#1f2937":"#ffffff",borderWidth:3},label:{show:!1},emphasis:{label:{show:!0,fontSize:14,fontWeight:"bold",color:r?"#f3f4f6":"#1f2937"},scaleSize:8},labelLine:{show:!1},data:i.length>0?i:[{value:1,name:this.$t("dashboard.noData"),signedValue:0}]}]};this.pieChart.setOption(l)}},initDrawdownChart:function(){var t=this,e=this.$refs.drawdownChart;if(e){this.drawdownChart=mt.init(e);var a,s=(this.summary.daily_pnl_chart||[]).map(function(t){return t.date}),i=(this.summary.daily_pnl_chart||[]).map(function(t){return Number(t.profit||0)}),r=[],n=0,o=(0,d.A)(i);try{for(o.s();!(a=o.n()).done;){var l=a.value;n+=Number(l||0),r.push(n)}}catch(f){o.e(f)}finally{o.f()}var c=-1/0,u=0,p=0,m=r.map(function(t,e){c=Math.max(c,t);var a=Number((t-c).toFixed(2));return a\n
').concat(s,'
\n
\n \n \n ').concat(t.$t("dashboard.drawdown")||"Drawdown",'\n \n -$').concat(r,'\n
\n
\n
\n
\n \n ')}},grid:{left:55,right:20,bottom:35,top:20,containLabel:!1},xAxis:{type:"category",data:s,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:h,fontSize:10,formatter:function(t){return t.slice(5)}}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:h,fontSize:10,formatter:function(t){return Math.abs(t)>=1e3?"-$"+(Math.abs(t)/1e3).toFixed(1)+"k":0===t?"0":"-$"+Math.abs(t)}},splitLine:{lineStyle:{color:_,type:[4,4]}},max:0},series:[{name:this.$t("dashboard.drawdown")||"Drawdown",type:"line",data:m,smooth:.3,showSymbol:!1,lineStyle:{width:2.5,color:new mt.graphic.LinearGradient(0,0,1,0,[{offset:0,color:"#ef4444"},{offset:.5,color:"#f87171"},{offset:1,color:"#fca5a5"}]),shadowColor:"rgba(239, 68, 68, 0.4)",shadowBlur:8,shadowOffsetY:4},areaStyle:{color:new mt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:g?"rgba(239, 68, 68, 0.4)":"rgba(239, 68, 68, 0.25)"},{offset:.5,color:g?"rgba(248, 113, 113, 0.15)":"rgba(248, 113, 113, 0.1)"},{offset:1,color:"transparent"}])},markPoint:u<0?{symbol:"pin",symbolSize:45,itemStyle:{color:new mt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"#f87171"},{offset:1,color:"#dc2626"}]),shadowColor:"rgba(239, 68, 68, 0.5)",shadowBlur:10},label:{show:!0,color:"#fff",fontSize:10,fontWeight:"bold",formatter:function(){return t.$t("dashboard.label.maxDrawdownPoint")||"MAX"}},data:[{name:this.$t("dashboard.maxDrawdown")||"Max Drawdown",coord:[p,u]}]}:void 0,markLine:{silent:!0,symbol:"none",lineStyle:{color:g?"#52525b":"#a1a1aa",type:"dashed",width:1},data:[{yAxis:0}],label:{show:!1}}}]};this.drawdownChart.setOption(y)}},initHourlyChart:function(){var t=this,e=this.$refs.hourlyChart;if(e){this.hourlyChart=mt.init(e);var a=this.summary.hourly_distribution||[],s=a.map(function(t){return"".concat(String(t.hour).padStart(2,"0"),":00")}),i=a.map(function(t){return t.count||0}),r=a.map(function(t){return t.profit||0}),n=this.isDarkTheme,o=n?"#9ca3af":"#6b7280",l=n?"rgba(75, 85, 99, 0.3)":"rgba(229, 231, 235, 0.8)",c={backgroundColor:"transparent",tooltip:{trigger:"axis",backgroundColor:n?"rgba(17, 24, 39, 0.95)":"rgba(255, 255, 255, 0.95)",borderColor:n?"#374151":"#e5e7eb",textStyle:{color:n?"#f3f4f6":"#1f2937"},formatter:function(e){var a,s=Array.isArray(e)?e:[],i=s[0]&&s[0].axisValue?s[0].axisValue:"",r=0,l=0,c=t.$t("dashboard.tradeCount")||"Trade Count",u=t.$t("dashboard.profit")||"Profit",p=t.$t("dashboard.unit.trades")||"",m=(0,d.A)(s);try{for(m.s();!(a=m.n()).done;){var g=a.value;g.seriesName===c&&(r=g.data||0),g.seriesName===u&&(l=g.data||0)}}catch(y){m.e(y)}finally{m.f()}var h=l>=0?"#10b981":"#ef4444",_=(l>=0?"+":"")+t.formatNumber(l,2);return'\n
\n
'.concat(i,'
\n
').concat(c,' ').concat(r," ").concat(p,'
\n
').concat(u,' $').concat(_,"
\n
\n ")}},grid:{left:50,right:20,bottom:30,top:10,containLabel:!1},xAxis:{type:"category",data:s,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o,fontSize:10,interval:3}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o,fontSize:10},splitLine:{lineStyle:{color:l,type:"dashed"}}},series:[{name:this.$t("dashboard.tradeCount")||"Trade Count",type:"bar",data:i,barMaxWidth:16,itemStyle:{borderRadius:[3,3,0,0],color:new mt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"#60a5fa"},{offset:1,color:"#3b82f6"}])}},{name:this.$t("dashboard.profit")||"Profit",type:"line",data:r,smooth:!0,showSymbol:!1,lineStyle:{width:2,color:"#a855f7"}}]};this.hourlyChart.setOption(c)}},handleResize:function(){this.pieChart&&this.pieChart.resize(),this.drawdownChart&&this.drawdownChart.resize(),this.hourlyChart&&this.hourlyChart.resize()}}},vt=ft,bt=(0,C.A)(vt,ut,pt,!1,null,"80b7f8d0",null),xt=bt.exports,Ct=a(75402),kt=["BTC/USDT","ETH/USDT","BNB/USDT","SOL/USDT","ADA/USDT","XRP/USDT","DOGE/USDT","DOT/USDT","MATIC/USDT","AVAX/USDT","LINK/USDT","UNI/USDT","LTC/USDT","ATOM/USDT","ETC/USDT"],St=[{value:"binance",labelKey:"binance"},{value:"okx",labelKey:"okx"},{value:"bitget",labelKey:"bitget"},{value:"bybit",labelKey:"bybit"},{value:"coinbaseexchange",labelKey:"coinbaseexchange"},{value:"kraken",labelKey:"kraken"},{value:"kucoin",labelKey:"kucoin"},{value:"gate",labelKey:"gate"},{value:"bitfinex",labelKey:"bitfinex"},{value:"deepcoin",labelKey:"deepcoin"}],wt=[{value:"ibkr",labelKey:"ibkr",name:"Interactive Brokers"}],$t=[{value:"mt5",labelKey:"mt5",name:"MetaTrader 5"}],At={name:"TradingAssistant",mixins:[_.t],components:{TradingRecords:S,PositionRecords:M,StrategyTypeSelector:O,StrategyEditor:Q,PerformanceAnalysis:it,StrategyLogs:dt,DashboardOverview:xt,ExchangeAccountModal:Ct.A},computed:{showAssistantGuide:function(){return!this.assistantGuideDismissed},assistantGuideStorageKey:function(){var t,e=(null===(t=this.$store.getters.userInfo)||void 0===t?void 0:t.id)||"guest";return"trading-assistant-guide-dismissed:".concat(e)},isAdvancedMode:function(){return"advanced"===this.creationMode},isSimpleMode:function(){return"simple"===this.creationMode},isSimpleCreateMode:function(){return this.isSimpleMode&&!this.editingStrategy},strategyFormWrapClass:function(){var t=["strategy-form-modal"];return this.isMobile&&t.push("mobile-modal"),this.isDarkTheme&&t.push("strategy-form-modal-dark"),t.join(" ")},displayCurrentStep:function(){return"script"===this.strategyMode?this.currentStep:this.isSimpleMode&&!this.editingStrategy?0===this.currentStep?0:1:this.currentStep},isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},needsPassphrase:function(){return["okx","okex","coinbaseexchange","kucoin","bitget","deepcoin"].includes(this.currentExchangeId)},isIBKRMarket:function(){return"USStock"===this.selectedMarketCategory},isMT5Market:function(){return"Forex"===this.selectedMarketCategory},isBrokerMarket:function(){return this.isIBKRMarket||this.isMT5Market},filteredExchangeCredentials:function(){var t=this;return this.exchangeCredentials&&Array.isArray(this.exchangeCredentials)?this.exchangeCredentials.filter(function(e){return t.isCredentialCompatible(e)}):[]},formattedExchangeOptions:function(){var t=this;return St.map(function(e){var a="";try{if(e.labelKey){var s="trading-assistant.exchangeNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},totalPnl:function(){return null!==this.currentEquity&&this.selectedStrategy&&this.selectedStrategy.initial_capital?this.currentEquity-(this.selectedStrategy.initial_capital||0):null},totalPnlPercent:function(){return null!==this.totalPnl&&this.selectedStrategy&&this.selectedStrategy.initial_capital?0===this.selectedStrategy.initial_capital?0:this.totalPnl/this.selectedStrategy.initial_capital*100:null},getEquityColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},getPnlColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},isCryptoMarket:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()},canUseLiveTrading:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()||("USStock"===t||"Forex"===t)},isLiveTradingAvailable:function(){var t=this.selectedMarketCategory||"Crypto",e=this.currentExchangeId||"";return"crypto"===String(t).toLowerCase()?["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"].includes(e):"USStock"===t?"ibkr"===this.currentBrokerId:"Forex"===t&&"mt5"===this.currentBrokerId},showDemoTradingSwitch:function(){return this.currentExchangeId&&"binance"===this.currentExchangeId.toLowerCase()},brokerOptions:function(){var t=this;return wt.map(function(e){var a="";try{var s="trading-assistant.brokerNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},forexBrokerOptions:function(){var t=this;return $t.map(function(e){var a="";try{var s="trading-assistant.brokerNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},cryptoExchangeOptions:function(){var t=this;return St.map(function(e){var a="";try{if(e.labelKey){var s="trading-assistant.exchangeNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},groupedStrategies:function(){return"symbol"===this.groupByMode?this.groupedBySymbol:this.groupedByStrategy},groupedByStrategy:function(){var t,e={},a=[],s=(0,d.A)(this.strategies);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i.strategy_group_id;r&&r.trim()?(e[r]||(e[r]={id:r,baseName:i.group_base_name||i.strategy_name.split("-")[0],strategies:[],runningCount:0,stoppedCount:0}),e[r].strategies.push(i),"running"===i.status?e[r].runningCount++:e[r].stoppedCount++):a.push(i)}}catch(o){s.e(o)}finally{s.f()}var n=Object.values(e).sort(function(t,e){var a=Math.max.apply(Math,(0,c.A)(t.strategies.map(function(t){return t.created_at||0}))),s=Math.max.apply(Math,(0,c.A)(e.strategies.map(function(t){return t.created_at||0})));return s-a});return{groups:n,ungrouped:a}},groupedBySymbol:function(){var t,e={},a=[],s=(0,d.A)(this.strategies);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i.trading_config||{},n=r.symbol;if(n&&n.trim()){e[n]||(e[n]={id:"symbol_".concat(n),baseName:n,strategies:[],runningCount:0,stoppedCount:0});var o=(0,u.A)((0,u.A)({},i),{},{displayInfo:{strategyName:i.strategy_name||i.group_base_name||"Unnamed",timeframe:r.timeframe||"-",indicatorName:i.indicator_name||i.indicator_config&&i.indicator_config.name||"-"}});e[n].strategies.push(o),"running"===i.status?e[n].runningCount++:e[n].stoppedCount++}else a.push(i)}}catch(c){s.e(c)}finally{s.f()}var l=Object.values(e).sort(function(t,e){return t.baseName.localeCompare(e.baseName)});return{groups:l,ungrouped:a}},unconfiguredChannels:function(){var t=[];return this.notifyChannelsUi.includes("telegram")&&(this.userNotificationSettings.telegram_bot_token||this.userNotificationSettings.telegram_chat_id||t.push("Telegram")),this.notifyChannelsUi.includes("email")&&(this.userNotificationSettings.email||t.push("Email")),this.notifyChannelsUi.includes("discord")&&(this.userNotificationSettings.discord_webhook||t.push("Discord")),this.notifyChannelsUi.includes("webhook")&&(this.userNotificationSettings.webhook_url||t.push("Webhook")),t}},data:function(){return{topTab:"overview",loading:!1,loadingRecords:!1,strategies:[],selectedStrategy:null,showFormModal:!1,creationMode:"simple",showAdvancedSettings:!1,pendingRouteIndicatorId:"",lastAutoStrategyName:"",strategyMode:"",strategyCode:"",pendingScriptTemplateKey:"",showModeSelector:!1,strategyType:"indicator",selectedMarketCategory:"Crypto",currentStep:0,saving:!1,loadingIndicators:!1,availableIndicators:[],selectedIndicator:null,indicatorParams:[],indicatorParamValues:{},cryptoSymbols:kt,loadingWatchlist:!1,watchlist:[],exchangeOptions:St,currentExchangeId:"",currentBrokerId:"ibkr",connectionTestResult:null,indicatorsLoaded:!1,editingStrategy:null,currentEquity:null,equityPollingTimer:null,backtestCollapseKeys:["risk"],trailingEnabledUi:!1,entryPctMaxUi:100,aiFilterEnabledUi:!1,isEditMode:!1,supportedIPs:[],executionModeUi:"signal",liveDisclaimerAckUi:!1,notifyChannelsUi:["browser"],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},loadingExchangeCredentials:!1,exchangeCredentials:[],showExchangeAccountModal:!1,saveCredentialUi:!1,suppressApiClearOnce:!1,selectedSymbols:[],crossSectionalSymbols:[],collapsedGroups:{},groupByMode:"strategy",showAddSymbolModal:!1,addSymbolMarket:"Crypto",addSymbolMarketTypes:[{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],addSymbolKeyword:"",searchingSymbol:!1,symbolSearchResults:[],selectedAddSymbol:null,hasSearchedSymbol:!1,addingSymbol:!1,hotSymbols:[],loadingHotSymbols:!1,searchTimer:null,assistantGuideDismissed:!1}},beforeCreate:function(){this.form=this.$form.createForm(this)},mounted:function(){var t=this;this.restoreAssistantGuidePreference(),"strategy"!==this.$route.query.tab&&"create"!==this.$route.query.mode||(this.topTab="strategy"),this.loadStrategies(),this.loadUserNotificationSettings(),"create"===this.$route.query.mode&&this.$nextTick(function(){var e=t.$route.query.indicator_id;e?(t.strategyMode="signal",t.creationMode="simple",t.pendingRouteIndicatorId=String(e),t._openCreateModal()):t.handleCreateStrategy()})},beforeDestroy:function(){this.stopEquityPolling()},methods:{restoreAssistantGuidePreference:function(){try{this.assistantGuideDismissed="1"===window.localStorage.getItem(this.assistantGuideStorageKey)}catch(t){this.assistantGuideDismissed=!1}},dismissAssistantGuide:function(){this.assistantGuideDismissed=!0;try{window.localStorage.setItem(this.assistantGuideStorageKey,"1")}catch(t){}},goToStrategyTab:function(){this.topTab="strategy"},openCreateStrategyFromGuide:function(){var t=this;this.topTab="strategy",this.$nextTick(function(){t.handleCreateStrategy()})},loadUserNotificationSettings:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,h.vF)();case 1:a=e.v,1===a.code&&a.data&&(t.userNotificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadWatchlist:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingWatchlist=!0,e.p=1,e.n=2,(0,m.Qo)({userid:1});case 2:a=e.v,a&&1===a.code?t.watchlist=Array.isArray(a.data)?a.data:[]:t.watchlist=[],e.n=4;break;case 3:e.p=3,e.v,t.watchlist=[];case 4:return e.p=4,t.loadingWatchlist=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCloseAddSymbolModal:function(){this.showAddSymbolModal=!1,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1},handleAddSymbolMarketChange:function(t){this.addSymbolMarket=t,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1,this.loadHotSymbols(t)},handleSymbolSearchInputChange:function(t){var e=this,a=t.target.value;if(this.addSymbolKeyword=a,this.searchTimer&&clearTimeout(this.searchTimer),!a||""===a.trim())return this.symbolSearchResults=[],this.hasSearchedSymbol=!1,void(this.selectedAddSymbol=null);this.searchTimer=setTimeout(function(){e.searchSymbolsInModal(a)},500)},handleSearchSymbol:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t&&t.trim()){a.n=1;break}return a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return e.$message.warning(e.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:if(!(e.symbolSearchResults.length>0)){a.n=3;break}return a.a(2);case 3:e.hasSearchedSymbol&&0===e.symbolSearchResults.length?e.handleDirectAdd():e.searchSymbolsInModal(t);case 4:return a.a(2)}},a)}))()},searchSymbolsInModal:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&""!==t.trim()){a.n=1;break}return e.symbolSearchResults=[],e.hasSearchedSymbol=!1,a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return a.a(2);case 2:return e.searchingSymbol=!0,e.hasSearchedSymbol=!0,a.p=3,a.n=4,(0,m._3)({market:e.addSymbolMarket,keyword:t.trim()});case 4:s=a.v,s&&1===s.code&&Array.isArray(s.data)?e.symbolSearchResults=s.data:e.symbolSearchResults=[],a.n=6;break;case 5:a.p=5,a.v,e.symbolSearchResults=[];case 6:return a.p=6,e.searchingSymbol=!1,a.f(6);case 7:return a.a(2)}},a,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.addSymbolKeyword&&this.addSymbolKeyword.trim()?this.addSymbolMarket?this.selectedAddSymbol={market:this.addSymbolMarket,symbol:this.addSymbolKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},handleSelectAddSymbol:function(t){this.selectedAddSymbol={market:this.addSymbolMarket,symbol:t.symbol,name:t.name||""}},loadHotSymbols:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t||(t=e.addSymbolMarket||"Crypto"),t){a.n=1;break}return a.a(2);case 1:return e.loadingHotSymbols=!0,a.p=2,a.n=3,(0,m.z6)({market:t,limit:10});case 3:s=a.v,s&&1===s.code&&s.data?e.hotSymbols=s.data:e.hotSymbols=[],a.n=5;break;case 4:a.p=4,a.v,e.hotSymbols=[];case 5:return a.p=5,e.loadingHotSymbols=!1,a.f(5);case 6:return a.a(2)}},a,null,[[2,4,5,6]])}))()},handleConfirmAddSymbol:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r,n,l,d;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a="",s="",!t.selectedAddSymbol){e.n=1;break}a=t.selectedAddSymbol.market,s=t.selectedAddSymbol.symbol.toUpperCase(),e.n=4;break;case 1:if(!t.addSymbolKeyword||!t.addSymbolKeyword.trim()){e.n=3;break}if(t.addSymbolMarket){e.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),e.a(2);case 2:a=t.addSymbolMarket,s=t.addSymbolKeyword.trim().toUpperCase(),e.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),e.a(2);case 4:return t.addingSymbol=!0,e.p=5,e.n=6,(0,m.dp)({userid:1,market:a,symbol:s});case 6:if(i=e.v,!i||1!==i.code){e.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),e.n=7,t.loadWatchlist();case 7:r="".concat(a,":").concat(s),t.isEditMode?(t.form.setFieldsValue({symbol:r}),t.handleWatchlistSymbolChange(r)):(t.selectedSymbols.includes(r)||(t.selectedSymbols=[].concat((0,c.A)(t.selectedSymbols),[r])),t.handleMultiSymbolChange(t.selectedSymbols)),t.handleCloseAddSymbolModal(),e.n=9;break;case 8:t.$message.error((null===i||void 0===i?void 0:i.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:e.n=11;break;case 10:e.p=10,d=e.v,l=(null===d||void 0===d||null===(n=d.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.msg)||(null===d||void 0===d?void 0:d.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(l);case 11:return e.p=11,t.addingSymbol=!1,e.f(11);case 12:return e.a(2)}},e,null,[[5,10,11,12]])}))()},filterWatchlistOption:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===s||String(s).toLowerCase().includes(String(t||"").toLowerCase())},filterWatchlistOptionWithAdd:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===s||String(s).toLowerCase().includes(String(t||"").toLowerCase())},handleMultiSymbolChangeWithAdd:function(t){if(t&&t.includes("__add_symbol_option__"))return this.selectedSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);this.handleMultiSymbolChange(t)},handleStrategyTypeChange:function(t){var e=t.target.value;"single"===e&&(this.crossSectionalSymbols=[])},handleCrossSectionalSymbolChange:function(t){if(t&&t.includes("__add_symbol_option__"))return this.crossSectionalSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(this.crossSectionalSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),s=e.slice(0,a);this.selectedMarketCategory=s||"Crypto"}}},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},handleWatchlistSymbolChange:function(t){var e=this;if("__add_symbol_option__"===t)return this.$nextTick(function(){e.form.setFieldsValue({symbol:void 0})}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(t&&"string"===typeof t&&t.includes(":")){var a=t.indexOf(":"),s=t.slice(0,a);if(this.selectedMarketCategory=s||"Crypto","Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var i=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!i){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}}},handleSimpleSymbolChange:function(t){if("__add_symbol_option__"===t)return this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);var e=t?[t]:[];this.handleMultiSymbolChange(e)},handleMultiSymbolChange:function(t){if(this.selectedSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),s=e.slice(0,a);this.selectedMarketCategory=s||"Crypto"}}if("Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var i=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!i){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}},loadExchangeCredentials:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingExchangeCredentials=!0,e.p=1,e.n=2,(0,g.IA)({user_id:1});case 2:a=e.v,a&&1===a.code?t.exchangeCredentials=a.data&&a.data.items||[]:(t.exchangeCredentials=[],t.$message.warning((null===a||void 0===a?void 0:a.msg)||t.$t("trading-assistant.messages.loadFailed"))),e.n=4;break;case 3:e.p=3,e.v,t.exchangeCredentials=[],t.$message.warning(t.$t("trading-assistant.exchange.testFailed"));case 4:return e.p=4,t.loadingExchangeCredentials=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},goToIndicatorAnalysisCreate:function(){this.$router.push("/indicator-analysis")},handleExchangeAccountCreated:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return a.n=1,e.loadExchangeCredentials();case 1:if(s=t&&(t.id||t.credential_id),!s){a.n=3;break}try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:s})}catch(r){}return a.n=2,e.handleCredentialSelectChange(s);case 2:a.n=4;break;case 3:if(1!==e.exchangeCredentials.length){a.n=4;break}i=e.exchangeCredentials[0].id;try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:i})}catch(r){}return a.n=4,e.handleCredentialSelectChange(i);case 4:return a.a(2)}},a)}))()},formatCredentialLabel:function(t){if(!t)return"";var e=(t.name||"").trim(),a=t.exchange_id||"",s=t.api_key_hint||"";return e?"".concat(a.toUpperCase()," - ").concat(e," (").concat(s,")"):"".concat(a.toUpperCase()," (").concat(s,")")},isCredentialCompatible:function(t){if(!t||!t.exchange_id)return!0;var e=(t.exchange_id||"").toLowerCase(),a=this.selectedMarketCategory||"Crypto";if("mt5"===e)return"Forex"===a;if("ibkr"===e)return"USStock"===a;var s=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex","deepcoin"];return!s.includes(e)||"Crypto"===a},handleCredentialSelectChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t){a.n=1;break}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 1:if(s=e.exchangeCredentials.find(function(e){return String(e.id)===String(t)}),!s){a.n=5;break}if(i=(s.exchange_id||"").toLowerCase(),"mt5"!==i||"Forex"===e.selectedMarketCategory){a.n=2;break}e.$message.error(e.$t("trading-assistant.validation.mt5OnlyForForex"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 2:if("ibkr"!==i||"USStock"===e.selectedMarketCategory){a.n=3;break}e.$message.error(e.$t("trading-assistant.validation.ibkrOnlyForUSStock"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 3:if(r=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"],!r.includes(i)||"Crypto"===e.selectedMarketCategory){a.n=4;break}e.$message.error(e.$t("trading-assistant.validation.cryptoExchangeOnlyForCrypto"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 4:e.currentExchangeId=s.exchange_id||"";case 5:e.connectionTestResult=null;case 6:return a.a(2)}},a)}))()},onSaveCredentialChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.saveCredentialUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({save_credential:e})}catch(a){}},onExecutionModeChange:function(t){var e=t&&t.target?t.target.value:t;if(this.executionModeUi=e||"signal",!this.canUseLiveTrading&&"signal"!==this.executionModeUi){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(a){}}},setExecutionModeUi:function(t){var e=t||"signal";this.onExecutionModeChange(e);try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:e})}catch(a){}},onLiveDisclaimerAckChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.liveDisclaimerAckUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:e})}catch(a){}},onNotifyChannelsChange:function(t){this.notifyChannelsUi=Array.isArray(t)?t:[]},formatCurrency:function(t){return null===t||void 0===t?"-":"$"+t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnl:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+"$"+Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnlPercent:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+Math.abs(t).toFixed(2)+"%"},loadStrategies:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,p.EM)();case 2:a=e.v,1===a.code?(s=a.data.strategies||[],t.strategies=s,t.selectedStrategy&&(i=t.strategies.find(function(e){return e.id===t.selectedStrategy.id}),t.selectedStrategy=i||null)):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadFailed")),e.n=4;break;case 3:e.p=3,e.v,t.$message.error(t.$t("trading-assistant.messages.loadFailed"));case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCreateStrategy:function(){this.isEditMode=!1,this.editingStrategy=null,this.creationMode="simple",this.strategyMode="",this.strategyCode="",this.pendingScriptTemplateKey="",this.showModeSelector=!0,this.showFormModal=!1},handleModeSelect:function(t){this.strategyMode=t,this.pendingScriptTemplateKey="",this.showModeSelector=!1,this._openCreateModal()},handleUseTemplate:function(t){this.strategyMode="script",this.pendingScriptTemplateKey=t,this.showModeSelector=!1,this._openCreateModal()},_openCreateModal:function(){var t=this;this.strategyType="indicator",this.creationMode=this.editingStrategy?"advanced":"simple",this.currentStep=0,this.currentExchangeId="",this.currentBrokerId="ibkr",this.selectedIndicator=null,this.connectionTestResult=null,this.executionModeUi="signal",this.notifyChannelsUi=["browser"],this.saveCredentialUi=!1,this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.selectedMarketCategory="Crypto",this.selectedSymbols=[],this.showAdvancedSettings=!1;var e=this.buildStrategyDefaultName();this.lastAutoStrategyName=e,this.form.resetFields(),this.form.setFieldsValue({strategy_name:e,execution_mode:"signal",notify_channels:["browser"],save_credential:!1,live_disclaimer_ack:!1,initial_capital:1e3,market_type:"swap",leverage:5,trade_direction:"long",timeframe:"15m",cs_strategy_type:"single"}),this.liveDisclaimerAckUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.loadWatchlist();case 1:return e.n=2,t.loadIndicators();case 2:t.applyPendingRouteIndicatorSelection(),t.loadExchangeCredentials();case 3:return e.a(2)}},e)})))},handleEditStrategy:function(t){var e=this;"running"!==t.status?(this.strategyType="indicator",this.strategyMode=t.strategy_mode||"signal",this.creationMode="advanced",this.strategyCode=t.strategy_code||"",this.pendingScriptTemplateKey="",this.isEditMode=!0,this.editingStrategy=t,this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.form.resetFields(),this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return e.loadWatchlist(),e.loadIndicators(),e.loadExchangeCredentials(),a.n=1,e.loadStrategyDataToForm(t);case 1:return a.a(2)}},a)})))):this.$message.warning(this.$t("trading-assistant.messages.runningWarning"))},loadStrategyDataToForm:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r,l,c,d,u,p,m,g,h,_,y,f,v,b,x,C,k,S,w,$,A,T,P,M,I,F,N,D,V,E,R,z,L,q,U,K,O,B,G,H;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(e.indicatorsLoaded){a.n=1;break}return a.n=1,e.loadIndicators();case 1:return a.n=2,e.$nextTick();case 2:return e.selectedMarketCategory=t.market_category||"Crypto",d=t.execution_mode||"signal",e.executionModeUi=d,e.liveDisclaimerAckUi="live"===d,u=t.notification_config&&t.notification_config.channels||["browser"],e.notifyChannelsUi=Array.isArray(u)?u:["browser"],p=!1,m=!1,t.trading_config&&(f=t.trading_config||{},v=f.trailing&&"object"===(0,n.A)(f.trailing)?f.trailing:null,p=void 0!==f.trailing_enabled?!!f.trailing_enabled:!(!v||!v.enabled),b=f.enable_ai_filter,m=!0===b||"true"===b||1===b||"1"===b,x=f.scale&&"object"===(0,n.A)(f.scale)?f.scale:null,C=f.position&&"object"===(0,n.A)(f.position)?f.position:null,k=new Set(["risk"]),(f.trend_add_enabled||f.dca_add_enabled||x&&(null!==(g=x.trendAdd)&&void 0!==g&&g.enabled||null!==(h=x.dcaAdd)&&void 0!==h&&h.enabled))&&k.add("scale"),(f.trend_reduce_enabled||f.adverse_reduce_enabled||x&&(null!==(_=x.trendReduce)&&void 0!==_&&_.enabled||null!==(y=x.adverseReduce)&&void 0!==y&&y.enabled))&&k.add("reduce"),(void 0!==f.entry_pct||C&&void 0!==C.entryPct)&&k.add("position"),e.backtestCollapseKeys=Array.from(k)),e.trailingEnabledUi=p,e.aiFilterEnabledUi=m,a.n=3,e.$nextTick();case 3:return e.form.setFieldsValue({enable_ai_filter:m}),a.n=4,e.$nextTick();case 4:if(e.form.setFieldsValue({execution_mode:e.executionModeUi,live_disclaimer_ack:e.liveDisclaimerAckUi,notify_channels:e.notifyChannelsUi,notify_email:(null===(s=t.notification_config)||void 0===s||null===(s=s.targets)||void 0===s?void 0:s.email)||"",notify_phone:(null===(i=t.notification_config)||void 0===i||null===(i=i.targets)||void 0===i?void 0:i.phone)||"",notify_telegram:(null===(r=t.notification_config)||void 0===r||null===(r=r.targets)||void 0===r?void 0:r.telegram)||"",notify_discord:(null===(l=t.notification_config)||void 0===l||null===(l=l.targets)||void 0===l?void 0:l.discord)||"",notify_webhook:(null===(c=t.notification_config)||void 0===c||null===(c=c.targets)||void 0===c?void 0:c.webhook)||""}),!t.indicator_config||!t.indicator_config.indicator_id){a.n=7;break}if(S=t.indicator_config.indicator_id,w=e.availableIndicators.find(function(t){return String(t.id)===String(S)}),!w){a.n=6;break}return A=String(w.id),e.form.setFieldsValue({indicator_id:A}),a.n=5,e.handleIndicatorChange(A);case 5:T=null===($=t.trading_config)||void 0===$?void 0:$.indicator_params,T&&"object"===(0,n.A)(T)&&Object.keys(T).forEach(function(t){t in e.indicatorParamValues&&e.$set(e.indicatorParamValues,t,T[t])}),a.n=7;break;case 6:e.form.setFieldsValue({indicator_id:String(S)});case 7:if(!t.exchange_config){a.n=11;break}if(P=t.exchange_config.exchange_id||"",M="live"===e.executionModeUi,I=["Crypto","USStock","Forex"].includes(e.selectedMarketCategory),F="USStock"===e.selectedMarketCategory,N="Forex"===e.selectedMarketCategory,!M||!I){a.n=10;break}if(!F){a.n=8;break}e.currentBrokerId=P||"ibkr",e.form.setFieldsValue({broker_id:P||"ibkr",ibkr_host:t.exchange_config.ibkr_host||"127.0.0.1",ibkr_port:t.exchange_config.ibkr_port||7497,ibkr_client_id:t.exchange_config.ibkr_client_id||1,ibkr_account:t.exchange_config.ibkr_account||""}),a.n=10;break;case 8:if(!N){a.n=9;break}e.currentBrokerId=P||"mt5",e.form.setFieldsValue({forex_broker_id:P||"mt5",mt5_server:t.exchange_config.mt5_server||"",mt5_login:t.exchange_config.mt5_login||"",mt5_password:t.exchange_config.mt5_password||"",mt5_terminal_path:t.exchange_config.mt5_terminal_path||""}),a.n=10;break;case 9:if(e.currentExchangeId=P||t.exchange_config.exchange_id||"",D=t.exchange_config.credential_id,!D){a.n=10;break}return e.form.setFieldsValue({credential_id:D}),a.n=10,e.handleCredentialSelectChange(D);case 10:F||N?e.currentBrokerId=P||(N?"mt5":"ibkr"):e.currentExchangeId=P;case 11:if(t.trading_config){if(V=t.trading_config||{},E=V.trailing&&"object"===(0,n.A)(V.trailing)?V.trailing:null,R=V.scale&&"object"===(0,n.A)(V.scale)?V.scale:null,z=V.position&&"object"===(0,n.A)(V.position)?V.position:null,L=V.strategy_type||t.strategy_type||"single","cross_sectional"===L)if(e.form.setFieldsValue({cs_strategy_type:"cross_sectional",portfolio_size:V.portfolio_size||10,long_ratio:V.long_ratio||.5,rebalance_frequency:V.rebalance_frequency||"daily"}),V.symbol_list&&Array.isArray(V.symbol_list))e.crossSectionalSymbols=V.symbol_list;else if(t.symbol_list)try{q="string"===typeof t.symbol_list?JSON.parse(t.symbol_list):t.symbol_list,Array.isArray(q)&&(e.crossSectionalSymbols=q)}catch(o){e.crossSectionalSymbols=[]}else e.crossSectionalSymbols=[];else e.form.setFieldsValue({cs_strategy_type:"single"}),e.crossSectionalSymbols=[];U=R&&R.trendAdd?R.trendAdd:null,K=R&&R.dcaAdd?R.dcaAdd:null,O=R&&R.trendReduce?R.trendReduce:null,B=R&&R.adverseReduce?R.adverseReduce:null,G=V.symbol,H="string"===typeof G&&G.includes(":")?G:"".concat(e.selectedMarketCategory,":").concat(G),e.form.setFieldsValue({strategy_name:t.strategy_name,symbol:H,initial_capital:V.initial_capital,leverage:V.leverage,trade_direction:V.trade_direction||"long",timeframe:V.timeframe||"1H",market_type:"futures"===V.market_type?"swap":V.market_type||"swap",take_profit_pct:V.take_profit_pct||0,stop_loss_pct:V.stop_loss_pct||0,trailing_enabled:p,trailing_stop_pct:void 0!==V.trailing_stop_pct?V.trailing_stop_pct||0:E&&E.pct||0,trailing_activation_pct:void 0!==V.trailing_activation_pct?V.trailing_activation_pct||0:E&&E.activationPct||0,trend_add_enabled:void 0!==V.trend_add_enabled?!!V.trend_add_enabled:!(!U||!U.enabled),trend_add_step_pct:void 0!==V.trend_add_step_pct?V.trend_add_step_pct||0:U&&U.stepPct||0,trend_add_size_pct:void 0!==V.trend_add_size_pct?V.trend_add_size_pct||0:U&&U.sizePct||0,trend_add_max_times:void 0!==V.trend_add_max_times?V.trend_add_max_times||0:U&&U.maxTimes||0,dca_add_enabled:void 0!==V.dca_add_enabled?!!V.dca_add_enabled:!(!K||!K.enabled),dca_add_step_pct:void 0!==V.dca_add_step_pct?V.dca_add_step_pct||0:K&&K.stepPct||0,dca_add_size_pct:void 0!==V.dca_add_size_pct?V.dca_add_size_pct||0:K&&K.sizePct||0,dca_add_max_times:void 0!==V.dca_add_max_times?V.dca_add_max_times||0:K&&K.maxTimes||0,trend_reduce_enabled:void 0!==V.trend_reduce_enabled?!!V.trend_reduce_enabled:!(!O||!O.enabled),trend_reduce_step_pct:void 0!==V.trend_reduce_step_pct?V.trend_reduce_step_pct||0:O&&O.stepPct||0,trend_reduce_size_pct:void 0!==V.trend_reduce_size_pct?V.trend_reduce_size_pct||0:O&&O.sizePct||0,trend_reduce_max_times:void 0!==V.trend_reduce_max_times?V.trend_reduce_max_times||0:O&&O.maxTimes||0,adverse_reduce_enabled:void 0!==V.adverse_reduce_enabled?!!V.adverse_reduce_enabled:!(!B||!B.enabled),adverse_reduce_step_pct:void 0!==V.adverse_reduce_step_pct?V.adverse_reduce_step_pct||0:B&&B.stepPct||0,adverse_reduce_size_pct:void 0!==V.adverse_reduce_size_pct?V.adverse_reduce_size_pct||0:B&&B.sizePct||0,adverse_reduce_max_times:void 0!==V.adverse_reduce_max_times?V.adverse_reduce_max_times||0:B&&B.maxTimes||0,entry_pct:0===V.entry_pct||V.entry_pct?V.entry_pct:z&&z.entryPct?z.entryPct:100,enable_ai_filter:m}),e.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()})}case 12:return a.a(2)}},a)}))()},handleSelectStrategy:function(t){this.selectedStrategy=t,this.currentEquity=null,this.loadStrategyDetails(),this.startEquityPolling()},loadStrategyDetails:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,n,l,c,u,m,g,h,_,y,f;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedStrategy){e.n=1;break}return e.a(2,Promise.resolve());case 1:return e.p=1,e.n=2,Promise.all([(0,p.Yx)(t.selectedStrategy.id),(0,p.oK)(t.selectedStrategy.id)]);case 2:if(a=e.v,s=(0,r.A)(a,2),i=s[0],n=s[1],l=null,1===i.code&&i.data&&(Array.isArray(i.data)&&i.data.length>0?(c=i.data[i.data.length-1],l=c.equity):(m=(null===(u=t.selectedStrategy.trading_config)||void 0===u?void 0:u.initial_capital)||t.selectedStrategy.initial_capital,l=m||null)),g=0,1===n.code&&n.data){h=n.data.positions||n.data.items||[],_=(0,d.A)(h);try{for(_.s();!(y=_.n()).done;)f=y.value,g+=parseFloat(f.unrealized_pnl||f.unrealizedPnl||0)}catch(o){_.e(o)}finally{_.f()}}t.currentEquity=null!==l?l+g:null,e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},startEquityPolling:function(){var t=this;this.stopEquityPolling(),this.selectedStrategy&&(this.loadStrategyDetails(),this.equityPollingTimer=setInterval(function(){t.loadStrategyDetails()},1e4))},stopEquityPolling:function(){this.equityPollingTimer&&(clearInterval(this.equityPollingTimer),this.equityPollingTimer=null)},handleCloseModal:function(){this.showFormModal=!1,this.editingStrategy=null,this.isEditMode=!1,this.strategyType="indicator",this.strategyMode="",this.strategyCode="",this.pendingScriptTemplateKey="",this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.indicatorsLoaded=!1,this.availableIndicators=[],this.pendingRouteIndicatorId="",this.lastAutoStrategyName="",this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showAdvancedSettings=!1,this.executionModeUi="signal",this.liveDisclaimerAckUi=!1,this.form.resetFields()},handleRefresh:function(){this.loadStrategies(),this.showFormModal=!1},handleMenuClick:function(t,e){switch(t){case"start":this.handleStartStrategy(e.id);break;case"stop":this.handleStopStrategy(e.id);break;case"edit":this.handleEditStrategy(e);break;case"backtest":this.handleBacktestStrategy(e);break;case"delete":this.handleDeleteStrategy(e);break}},toggleGroup:function(t){this.$set(this.collapsedGroups,t,!this.collapsedGroups[t])},handleBacktestStrategy:function(t){t&&t.id&&this.$router.push({path:"/backtest-center",query:{tab:"strategy",strategy_id:String(t.id)}})},handleGroupMenuClick:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i,r;return(0,o.A)().w(function(s){while(1)switch(s.n){case 0:i=e.strategies.map(function(t){return t.id}),r=t,s.n="startAll"===r?1:"stopAll"===r?3:"deleteAll"===r?5:7;break;case 1:return s.n=2,a.handleBatchStartStrategies(i,e.baseName);case 2:return s.a(3,7);case 3:return s.n=4,a.handleBatchStopStrategies(i,e.baseName);case 4:return s.a(3,7);case 5:return s.n=6,a.handleBatchDeleteStrategies(i,e.baseName);case 6:return s.a(3,7);case 7:return s.a(2)}},s)}))()},handleBatchStartStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.UH)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStartSuccess",{count:r})),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchStartFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStartFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchStopStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.GF)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStopSuccess",{count:r})),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchStopFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStopFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchDeleteStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i;return(0,o.A)().w(function(s){while(1)switch(s.n){case 0:i=a.$t("trading-assistant.messages.batchDeleteConfirm",{count:t.length,name:e}),a.$confirm({class:a.isDarkTheme?"ta-strategy-confirm-modal":"",title:a.$t("trading-assistant.deleteAll"),content:i,okText:a.$t("trading-assistant.deleteAll"),okType:"danger",cancelText:a.$t("trading-assistant.form.cancel"),onOk:function(){var e=(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.xQ)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchDeleteSuccess",{count:r})),a.selectedStrategy&&t.includes(a.selectedStrategy.id)&&(a.selectedStrategy=null,a.stopEquityPolling()),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchDeleteFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchDeleteFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}));function s(){return e.apply(this,arguments)}return s}()});case 1:return s.a(2)}},s)}))()},handleStartStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.mV)(t);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.startSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="running")):e.$message.error(s.msg||e.$t("trading-assistant.messages.startFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.startFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleStopStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.Ke)(t);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.stopSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="stopped")):e.$message.error(s.msg||e.$t("trading-assistant.messages.stopFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.stopFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleDeleteStrategy:function(t){var e=this,a=this.$t("trading-assistant.messages.deleteConfirmWithName",{name:t.strategy_name});this.$confirm({class:this.isDarkTheme?"ta-strategy-confirm-modal":"",title:this.$t("trading-assistant.deleteStrategy"),content:a,okText:this.$t("trading-assistant.deleteStrategy"),okType:"danger",cancelText:this.$t("trading-assistant.form.cancel"),onOk:function(){var a=(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.v_)(t.id);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.deleteSuccess")),e.selectedStrategy&&e.selectedStrategy.id===t.id&&(e.selectedStrategy=null,e.stopEquityPolling()),e.loadStrategies()):e.$message.error(s.msg||e.$t("trading-assistant.messages.deleteFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.deleteFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}));function s(){return a.apply(this,arguments)}return s}()})},getStatusColor:function(t){var e={running:"green",stopped:"default",error:"red"};return e[t]||"default"},getStatusText:function(t){return this.$t("trading-assistant.status.".concat(t))||t},getStrategyTypeText:function(t){return this.$t("trading-assistant.strategyType.".concat(t))||t},getTradeDirectionText:function(t){if(!t)return"";var e={long:this.$t("trading-assistant.form.tradeDirectionLong")||"做多",short:this.$t("trading-assistant.form.tradeDirectionShort")||"做空",both:this.$t("trading-assistant.form.tradeDirectionBoth")||"双向"};return e[t]||t},handleIndicatorSelectFocus:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.indicatorsLoaded||t.loadingIndicators){e.n=1;break}return e.n=1,t.loadIndicators();case 1:return e.a(2)}},e)}))()},loadIndicators:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.loadingIndicators){e.n=1;break}return e.a(2,new Promise(function(e){var a=setInterval(function(){t.loadingIndicators||(clearInterval(a),e())},100)}));case 1:if(!t.indicatorsLoaded){e.n=2;break}return e.a(2,Promise.resolve());case 2:return a=t.$store.getters.userInfo||{},s=a.id||1,t.loadingIndicators=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:s}});case 4:i=e.v,1===i.code&&i.data?(r=i.data.map(function(t){return{id:t.id,name:t.name,description:t.description,type:t.indicator_type||t.indicatorType||"python",code:t.code,is_buy:t.is_buy,source:1===t.is_buy?"bought":"custom"}}),t.availableIndicators=r,t.indicatorsLoaded=!0,t.applyPendingRouteIndicatorSelection()):(t.availableIndicators=[],t.$message.warning(i.msg||t.$t("trading-assistant.messages.loadIndicatorsFailed"))),e.n=6;break;case 5:e.p=5,e.v,t.availableIndicators=[],t.$message.warning(t.$t("trading-assistant.messages.loadIndicatorsFailed"));case 6:return e.p=6,t.loadingIndicators=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleIndicatorChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=String(t),e.selectedIndicator=e.availableIndicators.find(function(t){return String(t.id)===s}),e.applyAutoStrategyName(e.selectedIndicator),e.indicatorParams=[],e.indicatorParamValues={},!t){a.n=4;break}return a.p=1,a.n=2,e.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:t}});case 2:i=a.v,i&&1===i.code&&Array.isArray(i.data)&&(e.indicatorParams=i.data,r={},i.data.forEach(function(t){r[t.name]=t.default}),e.indicatorParamValues=r),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},handleMarketTypeChange:function(t){var e=t.target.value;"spot"===e&&this.form.setFieldsValue({trade_direction:"long",leverage:1})},recalcEntryPctMaxUi:function(){if(this.form){var t=!!this.form.getFieldValue("trend_add_enabled"),e=!!this.form.getFieldValue("dca_add_enabled"),a=Number(this.form.getFieldValue("trend_add_max_times")||0),s=Number(this.form.getFieldValue("dca_add_max_times")||0),i=Number(this.form.getFieldValue("trend_add_size_pct")||0),r=Number(this.form.getFieldValue("dca_add_size_pct")||0),n=(t?a*i:0)+(e?s*r:0),o=Math.max(0,Math.min(100,100-n));this.entryPctMaxUi=o}else this.entryPctMaxUi=100},normalizeEntryPct:function(){if(this.form){var t=Number(this.form.getFieldValue("entry_pct")||0),e=Number(this.entryPctMaxUi||100);t>e&&this.form.setFieldsValue({entry_pct:e})}},onTrendAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({dca_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onDcaAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({trend_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onScaleParamsChange:function(){var t=this;this.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()})},onEntryPctChange:function(){var t=this;this.$nextTick(function(){return t.normalizeEntryPct()})},onTrailingToggle:function(t){this.form&&(this.trailingEnabledUi=!!t,t||this.form.setFieldsValue({trailing_stop_pct:0,trailing_activation_pct:0}))},onAiFilterToggle:function(t){this.aiFilterEnabledUi=!!t;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({enable_ai_filter:!!t})}catch(e){}},filterIndicatorOption:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.label)||"";return s.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorOptionLabel:function(t){return t?t.description?"".concat(t.name," - ").concat(t.description):t.name:""},buildStrategyDefaultName:function(t){var e=t&&t.name?t.name:this.$t("trading-assistant.form.defaultStrategyName"),a=this.$t("trading-assistant.form.defaultStrategySuffix");return"".concat(e).concat(a)},applyAutoStrategyName:function(t){if(!this.editingStrategy&&this.form&&"script"!==this.strategyMode){var e=this.buildStrategyDefaultName(t),a=this.form.getFieldValue("strategy_name");a&&a!==this.lastAutoStrategyName||(this.form.setFieldsValue({strategy_name:e}),this.lastAutoStrategyName=e)}},applyPendingRouteIndicatorSelection:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s;return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.pendingRouteIndicatorId&&t.form&&!t.loadingIndicators){e.n=1;break}return e.a(2);case 1:if(a=String(t.pendingRouteIndicatorId),s=t.availableIndicators.find(function(t){return String(t.id)===a}),s){e.n=2;break}return e.a(2);case 2:return t.form.setFieldsValue({indicator_id:a}),e.n=3,t.handleIndicatorChange(a);case 3:t.pendingRouteIndicatorId="";case 4:return e.a(2)}},e)}))()},filterSymbolOption:function(t,e){return e.componentOptions.children[0].text.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorTypeColor:function(t){var e={trend:"blue",momentum:"green",volatility:"orange",volume:"purple",custom:"cyan",python:"geekblue",pine:"magenta"};return e[t]||"cyan"},getIndicatorTypeName:function(t){var e="trading-assistant.indicatorType.".concat(t),a=this.$t(e);return a!==e?a:t},getExchangeName:function(t){if(t.labelKey){var e="trading-assistant.exchangeNames.".concat(t.labelKey),a=this.$t(e);return a===e?t.value.charAt(0).toUpperCase()+t.value.slice(1):a}return t.label||t.value},getExchangeDisplayName:function(t){if(!t)return"";var e=this.exchangeOptions.find(function(e){return e.value===t});return e?this.getExchangeName(e):t.charAt(0).toUpperCase()+t.slice(1)},getExchangeTagColor:function(t){var e={binance:"gold",okx:"blue",coinbaseexchange:"cyan",kraken:"purple",bitfinex:"geekblue",huobi:"orange",gate:"green",mexc:"lime",kucoin:"volcano",bybit:"red",bitget:"magenta",bitmex:"red",deribit:"blue",phemex:"cyan",bitmart:"geekblue",bitstamp:"purple",bittrex:"orange",poloniex:"green",gemini:"lime",cryptocom:"volcano",blockchaincom:"magenta",bitflyer:"red",upbit:"blue",bithumb:"cyan",coinone:"purple",zb:"geekblue",lbank:"orange",bibox:"green",bigone:"lime",bitrue:"volcano",coinex:"magenta",ftx:"red",ftxus:"blue",binanceus:"gold",binancecoinm:"gold",binanceusdm:"gold",ibkr:"green"};return e[t]||"default"},handleApiConfigChange:function(){this.connectionTestResult=null},getModalPopupContainer:function(){return window.document.body},handleBrokerSelectChange:function(t){this.currentBrokerId=t||"ibkr",this.connectionTestResult=null},handleForexBrokerSelectChange:function(t){this.currentBrokerId=t||"mt5",this.connectionTestResult=null},handleExchangeSelectChange:function(t){var e=this;this.currentExchangeId=t||"",this.connectionTestResult=null,this.suppressApiClearOnce?this.suppressApiClearOnce=!1:this.$nextTick(function(){var t={api_key:void 0,secret_key:void 0,passphrase:void 0,enable_demo_trading:!1};setTimeout(function(){e.form.setFieldsValue(t)},100)})},getPlaceholder:function(t){var e={okx:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},okex:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},binance:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},coinbaseexchange:{api_key:"请输入API Key(或Key Name)",secret_key:"请输入API Secret(或Private Key)",passphrase:"请输入Passphrase(Legacy Pro API需要)"},kucoin:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase"},gate:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},mexc:{api_key:"请输入Access Key",secret_key:"请输入Secret Key"},kraken:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitfinex:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bybit:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitget:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(Legacy Pro API需要)"}},a=e[this.currentExchangeId]||{};if(a[t])return a[t];var s={api_key:this.$t("trading-assistant.placeholders.inputApiKey"),secret_key:this.$t("trading-assistant.placeholders.inputSecretKey"),passphrase:this.$t("trading-assistant.placeholders.inputPassphrase")};return s[t]||this.$t("trading-assistant.placeholders.inputApiKey")},handleNext:function(){var t=this;if("script"!==this.strategyMode){if(0===this.currentStep){var e=["indicator_id","strategy_name"];e.push("initial_capital","market_type","leverage","trade_direction","timeframe"),this.isEditMode&&e.push("symbol"),this.form.validateFields(e,function(e,a){if(!e){if(!t.isEditMode){var s=t.form.getFieldValue("cs_strategy_type")||"single";if("cross_sectional"===s){if(!t.crossSectionalSymbols||0===t.crossSectionalSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}else if(!t.selectedSymbols||0===t.selectedSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}try{var i=a&&a.market_type||t.form.getFieldValue("market_type");"spot"===i&&t.form.setFieldsValue({leverage:1,trade_direction:"long"})}catch(r){}t.backtestCollapseKeys=["risk"];try{t.trailingEnabledUi=!!t.form.getFieldValue("trailing_enabled")}catch(r){t.trailingEnabledUi=!1}t.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()}),t.isSimpleMode&&!t.editingStrategy?t.currentStep=2:t.currentStep++}})}else if(1===this.currentStep){try{var a=this.form.getFieldValue("execution_mode")||"signal";this.executionModeUi=a;var s=this.form.getFieldValue("notify_channels")||["browser"];this.notifyChannelsUi=Array.isArray(s)?s:["browser"]}catch(o){}this.currentStep++}}else if(0===this.currentStep){var i=["strategy_name","symbol","initial_capital","timeframe"];this.form.validateFields(i,function(e){e||(t.currentStep=1)})}else if(1===this.currentStep){if(!this.strategyCode||this.strategyCode.trim().length<20)return void this.$message.warning(this.$t("trading-assistant.editor.codeHint"));try{var r=this.form.getFieldValue("execution_mode")||"signal";this.executionModeUi=r;var n=this.form.getFieldValue("notify_channels")||["browser"];this.notifyChannelsUi=Array.isArray(n)?n:["browser"]}catch(o){}this.currentStep=2}},handlePrev:function(){if(this.currentStep>0){if("script"===this.strategyMode)return void this.currentStep--;this.isSimpleMode&&!this.editingStrategy&&2===this.currentStep?this.currentStep=0:this.currentStep--}},handleSubmit:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:t.form.validateFields(function(){var e=(0,l.A)((0,o.A)().m(function e(a,s){var i,r,n,l,c,d,u,m,g,h,_,y,f,v,b,x,C,k,S,w,$,A,T,P,M,I;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a){e.n=15;break}if(e.p=1,t.saving=!0,"script"!==t.strategyMode||t.editingStrategy){e.n=3;break}return i={channels:s.notify_channels||["browser"],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},r=s.symbol||"",n="Crypto","string"===typeof r&&r.includes(":")&&(l=r.indexOf(":"),n=r.slice(0,l)||"Crypto",r=r.slice(l+1)),c="futures"===s.market_type?"swap":s.market_type||"swap",d=null!=s.leverage?s.leverage:5,u=s.trade_direction||"both","spot"===c?(d=1,u="long"):(d<1&&(d=1),d>125&&(d=125)),m={user_id:1,strategy_name:s.strategy_name,strategy_type:"ScriptStrategy",strategy_mode:"script",strategy_code:t.strategyCode,market_category:n,execution_mode:s.execution_mode||"signal",notification_config:i,trading_config:{initial_capital:s.initial_capital||1e3,leverage:d,trade_direction:u,timeframe:s.timeframe||"15m",market_type:c,symbol:r,commission:null!=s.commission?s.commission:0,slippage:null!=s.slippage?s.slippage:0}},e.n=2,(0,p.WM)(m);case 2:return g=e.v,1===g.code?(t.$message.success(t.$t("trading-assistant.messages.createSuccess")),t.handleRefresh()):t.$message.error(g.msg||t.$t("trading-assistant.messages.createFailed")),t.saving=!1,t.showFormModal=!1,e.a(2);case 3:if(h=t.canUseLiveTrading&&"live"===s.execution_mode,!h){e.n=4;break}if(_=s.credential_id,_){e.n=4;break}return t.$message.warning(t.$t("trading-assistant.validation.credentialRequired")),t.saving=!1,e.a(2);case 4:if(y={channels:s.notify_channels||[],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},y.channels&&0!==y.channels.length){e.n=5;break}return t.$message.warning(t.$t("trading-assistant.validation.notifyChannelRequired")),t.saving=!1,e.a(2);case 5:if(f=String(s.indicator_id),v=t.availableIndicators.find(function(t){return String(t.id)===f}),v){e.n=6;break}return t.$message.error(t.$t("trading-assistant.validation.indicatorRequired")),t.saving=!1,e.a(2);case 6:if(b=!!t.aiFilterEnabledUi,x="futures"===s.market_type?"swap":s.market_type||"swap",C=s.leverage||1,k=s.trade_direction||"long","spot"===x?(C=1,k="long",t.$message.info(t.$t("trading-assistant.messages.spotLimitations"))):(C<1&&(C=1),C>125&&(C=125)),S={strategy_name:s.strategy_name,market_category:t.selectedMarketCategory||"Crypto",execution_mode:s.execution_mode||"signal",notification_config:y,indicator_config:{indicator_id:v.id,indicator_name:v.name,indicator_code:v.code||""},exchange_config:h?t.isIBKRMarket?{exchange_id:s.broker_id||t.currentBrokerId||"ibkr",ibkr_host:s.ibkr_host||"127.0.0.1",ibkr_port:s.ibkr_port||7497,ibkr_client_id:s.ibkr_client_id||1,ibkr_account:s.ibkr_account||""}:t.isMT5Market?{exchange_id:s.forex_broker_id||t.currentBrokerId||"mt5",mt5_server:s.mt5_server||"",mt5_login:s.mt5_login||"",mt5_password:s.mt5_password||"",mt5_terminal_path:s.mt5_terminal_path||""}:{credential_id:s.credential_id,exchange_id:t.currentExchangeId||void 0}:void 0,trading_config:{initial_capital:s.initial_capital,leverage:C,trade_direction:k,timeframe:s.timeframe,market_type:x,margin_mode:"cross",signal_mode:"confirmed",take_profit_pct:s.take_profit_pct||0,stop_loss_pct:s.stop_loss_pct||0,trailing_enabled:!!s.trailing_enabled,trailing_stop_pct:s.trailing_stop_pct||0,trailing_activation_pct:s.trailing_activation_pct||0,trend_add_enabled:!!s.trend_add_enabled,trend_add_step_pct:s.trend_add_step_pct||0,trend_add_size_pct:s.trend_add_size_pct||0,trend_add_max_times:s.trend_add_max_times||0,dca_add_enabled:!!s.dca_add_enabled,dca_add_step_pct:s.dca_add_step_pct||0,dca_add_size_pct:s.dca_add_size_pct||0,dca_add_max_times:s.dca_add_max_times||0,trend_reduce_enabled:!!s.trend_reduce_enabled,trend_reduce_step_pct:s.trend_reduce_step_pct||0,trend_reduce_size_pct:s.trend_reduce_size_pct||0,trend_reduce_max_times:s.trend_reduce_max_times||0,adverse_reduce_enabled:!!s.adverse_reduce_enabled,adverse_reduce_step_pct:s.adverse_reduce_step_pct||0,adverse_reduce_size_pct:s.adverse_reduce_size_pct||0,adverse_reduce_max_times:s.adverse_reduce_max_times||0,entry_pct:0===s.entry_pct||s.entry_pct?s.entry_pct:100,commission:s.commission||0,slippage:s.slippage||0,enable_ai_filter:b,indicator_params:t.indicatorParamValues,strategy_type:s.cs_strategy_type||"single",symbol_list:"cross_sectional"===s.cs_strategy_type?t.crossSectionalSymbols:void 0,portfolio_size:"cross_sectional"===s.cs_strategy_type?s.portfolio_size||10:void 0,long_ratio:"cross_sectional"===s.cs_strategy_type?s.long_ratio||.5:void 0,rebalance_frequency:"cross_sectional"===s.cs_strategy_type?s.rebalance_frequency||"daily":void 0}},!t.editingStrategy){e.n=8;break}return $=s.symbol,"string"===typeof $&&$.includes(":")&&(A=$.indexOf(":"),S.market_category=$.slice(0,A)||S.market_category,$=$.slice(A+1)),S.trading_config.symbol=$,e.n=7,(0,p.P7)(t.editingStrategy.id,S);case 7:w=e.v,e.n=12;break;case 8:if(S.user_id=1,S.strategy_type="IndicatorStrategy","cross_sectional"!==s.cs_strategy_type){e.n=10;break}return S.strategy_type="IndicatorStrategy",S.trading_config.symbol=null,e.n=9,(0,p.WM)(S);case 9:w=e.v,e.n=12;break;case 10:return S.symbols=t.selectedSymbols,e.n=11,(0,p.Ox)(S);case 11:w=e.v;case 12:1===w.code?(t.isEditMode?t.$message.success(t.$t("trading-assistant.messages.updateSuccess")):(P=s.cs_strategy_type||"single",M="cross_sectional"===P?t.crossSectionalSymbols.length:t.selectedSymbols.length,I=(null===(T=w.data)||void 0===T?void 0:T.total_created)||M,t.$message.success(t.$t("trading-assistant.messages.batchCreateSuccess",{count:I}))),t.handleRefresh()):t.$message.error(w.msg||(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"))),e.n=14;break;case 13:e.p=13,e.v,t.$message.error(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"));case 14:return e.p=14,t.saving=!1,e.f(14);case 15:return e.a(2)}},e,null,[[1,13,14,15]])}));return function(t,a){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},getFormValues:function(){var t=this;return new Promise(function(e,a){t.form.validateFields(function(t,s){t?a(t):e(s)})})},getDropdownContainer:function(t){return document.body}}},Tt=At,Pt=(0,C.A)(Tt,s,i,!1,null,"533cb131",null),Mt=Pt.exports},84841:function(t,e,a){a.d(e,{DK:function(){return v},E$:function(){return d},Gl:function(){return m},O0:function(){return c},TK:function(){return n},aU:function(){return i},cw:function(){return l},d$:function(){return x},hG:function(){return o},hl:function(){return g},kg:function(){return r},nY:function(){return f},r7:function(){return u},rx:function(){return _},v9:function(){return h},vF:function(){return p},vi:function(){return b},wq:function(){return y}});var s=a(75769);function i(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function c(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function d(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function p(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function m(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function g(){return(0,s.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function h(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function _(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function y(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function f(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function v(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function b(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function x(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/286-legacy.45ebd67d.js b/frontend/dist/js/286-legacy.45ebd67d.js new file mode 100644 index 0000000..095d1ed --- /dev/null +++ b/frontend/dist/js/286-legacy.45ebd67d.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[286],{59286:function(t,e,a){a.d(e,{A:function(){return C}});a(62010),a(27495),a(25440);var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"quick-trade-panel-root"},[e("a-drawer",{staticClass:"quick-trade-drawer",class:{"theme-dark":t.isDark},attrs:{title:null,width:400,visible:t.visible,closable:!1,bodyStyle:{padding:0},maskStyle:{background:"rgba(0,0,0,0.45)"}},on:{close:t.handleClose}},[e("div",{staticClass:"qt-header"},[e("div",{staticClass:"qt-header-left"},[e("a-icon",{staticClass:"qt-icon",attrs:{type:"thunderbolt",theme:"filled"}}),e("span",{staticClass:"qt-header-title"},[t._v(t._s(t.$t("quickTrade.title")))])],1),e("a-icon",{staticClass:"qt-close",attrs:{type:"close"},on:{click:t.handleClose}})],1),e("div",{staticClass:"qt-symbol-bar"},[e("div",{staticClass:"qt-symbol-selector"},[e("a-select",{staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:t.$t("quickTrade.selectSymbol"),"filter-option":!1,"not-found-content":t.symbolSearching?null:void 0,loading:t.symbolSearching},on:{search:t.handleSymbolSearch,change:t.handleSymbolChange,focus:t.handleSymbolFocus},model:{value:t.currentSymbol,callback:function(e){t.currentSymbol=e},expression:"currentSymbol"}},[e("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),t._l(t.symbolSuggestions,function(a){return e("a-select-option",{key:a.value,attrs:{value:a.value}},[e("div",{staticClass:"qt-symbol-option"},[e("span",{staticClass:"qt-symbol-option-name"},[t._v(t._s(a.symbol))]),a.name?e("span",{staticClass:"qt-symbol-option-desc"},[t._v(t._s(a.name))]):t._e()])])})],2)],1),e("div",{staticClass:"qt-price-display",class:t.priceChangeClass},[e("span",{staticClass:"qt-current-price"},[t._v("$"+t._s(t.formatPrice(t.currentPrice)))])])]),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.exchange"))+" "),e("span",{staticClass:"qt-crypto-hint"},[t._v(t._s(t.$t("quickTrade.cryptoOnly")))])]),e("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:t.$t("quickTrade.selectExchange"),loading:t.credLoading,notFoundContent:t.$t("quickTrade.noExchange")},on:{change:t.onCredentialChange},model:{value:t.selectedCredentialId,callback:function(e){t.selectedCredentialId=e},expression:"selectedCredentialId"}},t._l(t.credentials,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[e("span",{staticStyle:{"text-transform":"capitalize"}},[t._v(t._s(a.exchange_id||a.name))]),a.enable_demo_trading?e("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{color:"orange",size:"small"}},[t._v(t._s(t.$t("quickTrade.testnetTag")))]):t._e(),a.market_type?e("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{size:"small"}},[t._v(t._s(a.market_type))]):t._e()],1)}),1),t.credLoading||0!==t.credentials.length?t._e():e("div",{staticClass:"qt-no-cred-actions"},[e("a-button",{attrs:{type:"primary",block:"",size:"small"},on:{click:function(e){t.showAddExchangeModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("quickTrade.addAccountInline"))+" ")],1)],1),e("div",{staticClass:"qt-manage-link"},[e("a",{on:{click:function(e){e.preventDefault(),t.showAddExchangeModal=!0}}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus-circle"}}),t._v(t._s(t.$t("quickTrade.addAccountInline"))+" ")],1),e("span",{staticClass:"qt-manage-sep"},[t._v("·")]),e("router-link",{attrs:{to:"/profile?tab=exchange"}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),t._v(t._s(t.$t("profile.exchange.goToManage"))+" ")],1)],1),t.selectedCredentialId?e("div",{staticClass:"qt-balance"},[t.balanceLoading?[e("a-spin",{attrs:{size:"small"}}),e("span",{staticClass:"qt-balance-label qt-balance-loading-text"},[t._v(t._s(t.$t("quickTrade.available"))+"…")])]:t.balance.error?[e("span",{staticClass:"qt-balance-label"},[t._v(t._s(t.$t("quickTrade.available"))+":")]),e("span",{staticClass:"qt-balance-error",attrs:{title:t.balance.error}},[t._v("—")])]:[e("span",{staticClass:"qt-balance-label"},[t._v(t._s(t.$t("quickTrade.available"))+":")]),e("span",{staticClass:"qt-balance-value"},[t._v("$"+t._s(t.formatPrice(t.balance.available)))])]],2):t._e()],1),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-direction-toggle"},[e("div",{staticClass:"qt-dir-btn qt-dir-long",class:{active:"buy"===t.side},on:{click:function(e){return t.setTradeSide("buy")}}},[e("a-icon",{attrs:{type:"arrow-up"}}),t._v(" "+t._s(t.$t("quickTrade.long"))+" ")],1),e("div",{staticClass:"qt-dir-btn qt-dir-short",class:{active:"sell"===t.side,"qt-dir-disabled":!t.isSwapMode},on:{click:function(e){return t.setTradeSide("sell")}}},[e("a-icon",{attrs:{type:"arrow-down"}}),t._v(" "+t._s(t.$t("quickTrade.short"))+" ")],1)]),t.isSwapMode?t._e():e("div",{staticClass:"qt-hint-text qt-hint-inline"},[t._v(t._s(t.$t("quickTrade.shortDisabledSpot")))])]),e("div",{staticClass:"qt-section"},[e("a-radio-group",{staticStyle:{width:"100%"},attrs:{"button-style":"solid",size:"small"},model:{value:t.orderType,callback:function(e){t.orderType=e},expression:"orderType"}},[e("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"market"}},[t._v(" "+t._s(t.$t("quickTrade.market"))+" ")]),e("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"limit"}},[t._v(" "+t._s(t.$t("quickTrade.limit"))+" ")])],1)],1),"limit"===t.orderType?e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.limitPrice")))]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.enterPrice")},model:{value:t.limitPrice,callback:function(e){t.limitPrice=e},expression:"limitPrice"}})],1):t._e(),e("div",{staticClass:"qt-section qt-amount-block"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.amount"))+" (USDT)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1,step:10,precision:2,placeholder:t.$t("quickTrade.enterAmount")},model:{value:t.amount,callback:function(e){t.amount=e},expression:"amount"}}),e("div",{staticClass:"qt-quick-amounts"},t._l(t.quickAmountPcts,function(a){return e("a-button",{key:a,attrs:{size:"small",disabled:t.balance.available<=0},on:{click:function(e){return t.setAmountByPercent(a)}}},[t._v(" "+t._s(a)+"% ")])}),1)],1),e("div",{staticClass:"qt-section qt-card qt-mode-card"},[t.isSwapMode?[e("div",{staticClass:"qt-section-title-row"},[e("span",{staticClass:"qt-section-title"},[t._v(t._s(t.$t("quickTrade.leverage")))]),e("span",{staticClass:"qt-badge-contract"},[t._v(t._s(t.$t("quickTrade.contractBadge")))])]),e("div",{staticClass:"qt-leverage-row"},[e("a-slider",{staticStyle:{flex:"1","margin-right":"12px"},attrs:{min:1,max:125,marks:t.leverageMarks,tipFormatter:function(t){return t+"x"}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}}),e("a-input-number",{staticClass:"qt-leverage-input",attrs:{min:1,max:125,formatter:function(t){return"".concat(t,"x")},parser:function(t){return String(t).replace("x","")}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}})],1),e("div",{staticClass:"qt-label qt-label-spaced"},[t._v(t._s(t.$t("quickTrade.marginMode")))]),e("a-radio-group",{staticClass:"qt-margin-radio",attrs:{size:"small","button-style":"solid"},model:{value:t.marginMode,callback:function(e){t.marginMode=e},expression:"marginMode"}},[e("a-radio-button",{attrs:{value:"cross"}},[t._v(t._s(t.$t("quickTrade.crossMargin")))]),e("a-radio-button",{attrs:{value:"isolated"}},[t._v(t._s(t.$t("quickTrade.isolatedMargin")))])],1),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.marginModeHint")))])]:e("div",{staticClass:"qt-spot-banner"},[e("a-icon",{staticClass:"qt-spot-banner-icon",attrs:{type:"wallet"}}),e("div",{staticClass:"qt-spot-banner-text"},[e("div",{staticClass:"qt-spot-banner-title"},[t._v(t._s(t.$t("quickTrade.spotModeTitle")))]),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.spotModeHint")))])])],1)],2),e("div",{staticClass:"qt-section qt-card qt-tpsl-card"},[e("div",{staticClass:"qt-section-title-row"},[e("span",{staticClass:"qt-section-title"},[t._v(t._s(t.$t("quickTrade.tpsl")))]),e("span",{staticClass:"qt-optional-tag"},[t._v(t._s(t.$t("quickTrade.optional")))])]),e("div",{staticClass:"qt-tpsl-row"},[e("div",{staticClass:"qt-tpsl-item"},[e("span",{staticClass:"qt-label qt-tp-label"},[t._v(t._s(t.$t("quickTrade.tp")))]),e("a-input-number",{staticClass:"qt-input-full",attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.tpPlaceholder")},model:{value:t.tpPrice,callback:function(e){t.tpPrice=e},expression:"tpPrice"}})],1),e("div",{staticClass:"qt-tpsl-item"},[e("span",{staticClass:"qt-label qt-sl-label"},[t._v(t._s(t.$t("quickTrade.sl")))]),e("a-input-number",{staticClass:"qt-input-full",attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.slPlaceholder")},model:{value:t.slPrice,callback:function(e){t.slPrice=e},expression:"slPrice"}})],1)]),e("div",{staticClass:"qt-hint-text qt-tpsl-record-hint"},[t._v(t._s(t.$t("quickTrade.tpslRecordOnlyHint")))])]),e("div",{staticClass:"qt-submit-section"},[e("a-button",{staticClass:"qt-submit-btn",class:["buy"===t.side?"qt-btn-long":"qt-btn-short"],attrs:{type:"buy"===t.side?"primary":"danger",size:"large",block:"",loading:t.submitting,disabled:!t.canSubmit},on:{click:t.handleSubmit}},[e("a-icon",{attrs:{type:"buy"===t.side?"arrow-up":"arrow-down"}}),t._v(" "+t._s("buy"===t.side?t.$t("quickTrade.buyLong"):t.$t("quickTrade.sellShort"))+" "+t._s(t.symbol)+" ")],1)],1),e("div",{staticClass:"qt-position-section"},[e("div",{staticClass:"qt-section-header"},[e("a-icon",{attrs:{type:"wallet"}}),t._v(" "+t._s(t.$t("quickTrade.currentPosition"))+" "),t.currentPositions.length>1?e("span",{staticClass:"qt-position-count"},[t._v("("+t._s(t.currentPositions.length)+")")]):t._e()],1),t.currentPositions.length>0?[t.isSwapMode?e("div",{staticClass:"qt-close-scope qt-close-scope-global"},[e("div",{staticClass:"qt-label qt-label-close-scope"},[t._v(t._s(t.$t("quickTrade.closeScopeLabel")))]),e("a-radio-group",{staticClass:"qt-close-scope-radio",attrs:{size:"small"},model:{value:t.closeScope,callback:function(e){t.closeScope=e},expression:"closeScope"}},[e("a-radio-button",{attrs:{value:"full"}},[t._v(t._s(t.$t("quickTrade.closeScopeFull")))]),e("a-radio-button",{attrs:{value:"system_tracked"}},[t._v(t._s(t.$t("quickTrade.closeScopeSystem")))])],1),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.closeScopeSystemHint")))])],1):t._e(),t._l(t.currentPositions,function(a,i){return e("div",{key:"pos-"+i+"-"+(a.side||"")+"-"+String(a.size||""),staticClass:"qt-position-card",class:a.side},[e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.side")))]),e("a-tag",{attrs:{color:"long"===a.side?"#52c41a":"#f5222d",size:"small"}},[t._v(" "+t._s("long"===a.side?t.$t("quickTrade.long"):t.$t("quickTrade.short"))+" ")])],1),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.posSize")))]),e("span",[t._v(t._s(a.size))])]),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.entryPrice")))]),e("span",[t._v("$"+t._s(t.formatPrice(a.entry_price)))])]),a.mark_price?e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.markPrice")))]),e("span",[t._v("$"+t._s(t.formatPrice(a.mark_price)))])]):t._e(),a.leverage&&a.leverage>1?e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.leverage")))]),e("span",[t._v(t._s(a.leverage)+"x")])]):t._e(),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.unrealizedPnl")))]),e("span",{class:a.unrealized_pnl>=0?"qt-green":"qt-red"},[t._v(" $"+t._s(t.formatPrice(a.unrealized_pnl))+" ")])]),e("a-button",{staticStyle:{"margin-top":"8px"},attrs:{type:"danger",size:"small",block:"",ghost:"",loading:t.closingPositionSide===a.side},on:{click:function(e){return t.handleClosePosition(a)}}},[t._v(" "+t._s(t.$t("quickTrade.closePosition"))+" ")])],1)})]:e("div",{staticClass:"qt-position-empty"},[e("a-icon",{staticClass:"qt-empty-icon",attrs:{type:"inbox"}}),e("span",{staticClass:"qt-empty-desc"},[t._v(t._s(t.$t("quickTrade.noPositionHint")))])],1)],2),t.recentTrades.length>0?e("div",{staticClass:"qt-history-section"},[e("a-collapse",{attrs:{bordered:!1,activeKey:t.historyCollapsed?[]:["history"]},on:{change:t.handleHistoryCollapse}},[e("a-collapse-panel",{key:"history",style:t.collapseStyle,attrs:{showArrow:!1}},[e("template",{slot:"header"},[e("div",{staticClass:"qt-section-header",staticStyle:{margin:"0",padding:"0"}},[e("a-icon",{attrs:{type:"history"}}),t._v(" "+t._s(t.$t("quickTrade.recentTrades"))+" "),e("span",{staticClass:"qt-history-count"},[t._v("("+t._s(t.recentTrades.length)+")")])],1)]),e("div",{staticClass:"qt-trade-list"},t._l(t.recentTrades,function(a){return e("div",{key:a.id,staticClass:"qt-trade-item"},[e("div",{staticClass:"qt-trade-main"},[e("a-tag",{attrs:{color:"buy"===a.side?"#52c41a":"#f5222d",size:"small"}},[t._v(" "+t._s("buy"===a.side?"LONG":"SHORT")+" ")]),e("span",{staticClass:"qt-trade-symbol"},[t._v(t._s(a.symbol))]),e("span",{staticClass:"qt-trade-amount"},[t._v("$"+t._s(t.formatPrice(a.amount)))])],1),e("div",{staticClass:"qt-trade-meta"},[e("a-tag",{attrs:{color:"filled"===a.status?"#52c41a":"failed"===a.status?"#f5222d":"#faad14",size:"small"}},[t._v(" "+t._s(a.status)+" ")]),e("span",{staticClass:"qt-trade-time"},[t._v(t._s(t.formatTime(a.created_at)))])],1)])}),0)],2)],1)],1):t._e()]),e("exchange-account-modal",{attrs:{visible:t.showAddExchangeModal},on:{"update:visible":function(e){t.showAddExchangeModal=e},success:t.onExchangeAccountSaved}})],1)},s=[],r=a(81127),n=a(56252),c=a(76338),l=(a(28706),a(2008),a(74423),a(62062),a(2892),a(26099),a(21699),a(68156),a(42762),a(95353)),o=a(42430),d=a(75402),u=a(75769);function p(t){return(0,u.Ay)({url:"/api/quick-trade/place-order",method:"post",data:t})}function m(t){return(0,u.Ay)({url:"/api/quick-trade/balance",method:"get",params:t})}function v(t){return(0,u.Ay)({url:"/api/quick-trade/position",method:"get",params:t})}function h(t){return(0,u.Ay)({url:"/api/quick-trade/history",method:"get",params:t})}function b(t){return(0,u.Ay)({url:"/api/quick-trade/close-position",method:"post",data:t})}var g=a(35038),f=a(505),y={name:"QuickTradePanel",components:{ExchangeAccountModal:d.A},props:{visible:{type:Boolean,default:!1},symbol:{type:String,default:""},presetSide:{type:String,default:""},presetPrice:{type:Number,default:0},source:{type:String,default:"manual"},marketType:{type:String,default:"swap"}},data:function(){return{credentials:[],selectedCredentialId:void 0,credLoading:!1,balanceLoading:!1,balance:{available:0,total:0},side:"buy",orderType:"market",limitPrice:0,amount:100,leverage:5,marginMode:"cross",tpPrice:null,slPrice:null,submitting:!1,closingPositionSide:null,currentPrice:0,currentPositions:[],recentTrades:[],historyCollapsed:!0,closeScope:"full",currentSymbol:"",symbolSuggestions:[],symbolSearching:!1,symbolSearchTimer:null,userId:null,quickAmountPcts:[10,25,50,75,100],leverageMarks:{1:"1x",5:"5x",10:"10x",25:"25x",50:"50x",100:"100x",125:"125x"},pollTimer:null,showAddExchangeModal:!1}},computed:(0,c.A)((0,c.A)({},(0,l.aH)({navTheme:function(t){return t.app.theme}})),{},{isDark:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isSwapMode:function(){return Number(this.leverage)>1},effectiveMarketType:function(){return this.isSwapMode?"swap":"spot"},priceStep:function(){return this.currentPrice>1e4?1:this.currentPrice>100?.1:this.currentPrice>1?.01:1e-4},pricePrecision:function(){return this.currentPrice>1e4?0:this.currentPrice>100?1:this.currentPrice>1?2:4},canSubmit:function(){return this.selectedCredentialId&&this.currentSymbol&&this.amount>0&&!this.submitting},priceChangeClass:function(){return""},collapseStyle:function(){return{background:"transparent",borderRadius:"4px",border:0,overflow:"hidden"}}}),watch:{visible:function(t){t?this.init():this.stopPolling()},symbol:function(t){t&&(this.currentSymbol=t)},currentSymbol:function(t){t&&(this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",t))},selectedCredentialId:function(t){t&&this.currentSymbol&&this.loadPosition()},presetSide:function(t){t&&(this.side=t)},presetPrice:function(t){t>0&&(this.currentPrice=t,this.limitPrice=t)},leverage:function(){var t=this;this.isSwapMode||"sell"!==this.side||(this.side="buy"),this.$nextTick(function(){t.selectedCredentialId&&(t.loadBalance(),t.loadPosition())})}},methods:{setTradeSide:function(t){"sell"!==t||this.isSwapMode?this.side=t:this.$message.warning(this.$t("quickTrade.shortDisabledSpot"))},init:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){return(0,r.A)().w(function(e){while(1)switch(e.n){case 0:return t.currentSymbol=t.symbol||"",t.presetSide&&(t.side=t.presetSide),"spot"===t.marketType&&(t.leverage=1),t.presetPrice>0&&(t.currentPrice=t.presetPrice,t.limitPrice=t.presetPrice),e.n=1,t.loadCredentials();case 1:return e.n=2,t.loadUserInfo();case 2:return e.n=3,t.loadWatchlistSymbols();case 3:if(!t.currentSymbol){e.n=4;break}return e.n=4,t.loadPrice();case 4:if(!t.selectedCredentialId||!t.currentSymbol){e.n=5;break}return e.n=5,t.loadPosition();case 5:t.loadHistory(),t.startPolling();case 6:return e.a(2)}},e)}))()},loadUserInfo:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s,n;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(e.p=0,i=t.$store,s=(null===i||void 0===i||null===(a=i.getters)||void 0===a?void 0:a.userInfo)||{},!s||!s.id){e.n=1;break}return t.userId=s.id,e.a(2);case 1:return e.n=2,(0,f.ug)();case 2:n=e.v,n&&1===n.code&&n.data&&(t.userId=n.data.id,i&&i.commit("SET_INFO",n.data)),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[0,3]])}))()},loadWatchlistSymbols:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.userId){e.n=2;break}return e.n=1,t.loadUserInfo();case 1:if(t.userId){e.n=2;break}return e.a(2);case 2:return e.p=2,e.n=3,(0,g.Qo)({userid:t.userId});case 3:a=e.v,a&&1===a.code&&a.data&&(i=(a.data||[]).filter(function(t){return"crypto"===(t.market||"").toLowerCase()}).map(function(t){return{value:t.symbol||"",symbol:t.symbol||"",name:t.name||""}}).filter(function(t){return t.value}),t.symbolSuggestions=i),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[2,4]])}))()},handleSymbolSearch:function(t){var e=this;this.symbolSearchTimer&&clearTimeout(this.symbolSearchTimer),t&&""!==t.trim()?this.symbolSearchTimer=setTimeout((0,n.A)((0,r.A)().m(function a(){var i;return(0,r.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return e.symbolSearching=!0,a.p=1,a.n=2,(0,g._3)({market:"Crypto",keyword:t.trim(),limit:20});case 2:i=a.v,i&&1===i.code&&i.data?e.symbolSuggestions=(i.data.items||i.data||[]).map(function(t){return{value:t.symbol||"",symbol:t.symbol||"",name:t.name||""}}).filter(function(t){return t.value}):e.symbolSuggestions=[],a.n=4;break;case 3:a.p=3,a.v,e.symbolSuggestions=[];case 4:return a.p=4,e.symbolSearching=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])})),300):this.loadWatchlistSymbols()},handleSymbolChange:function(t){t&&t!==this.currentSymbol&&(this.currentSymbol=t,this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",t))},loadPrice:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.currentSymbol){e.n=1;break}return t.currentPrice=0,e.a(2);case 1:return e.p=1,e.n=2,(0,u.Ay)({url:"/api/market/price",method:"get",params:{market:"Crypto",symbol:t.currentSymbol}});case 2:a=e.v,a&&1===a.code&&a.data&&(i=parseFloat(a.data.price||0),i>0&&(t.currentPrice=i,0!==t.limitPrice&&t.limitPrice!==t.presetPrice||(t.limitPrice=i))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},handleSymbolFocus:function(){0===this.symbolSuggestions.length&&this.loadWatchlistSymbols()},loadCredentials:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.credLoading=!0,e.p=1,e.n=2,(0,o.IA)();case 2:a=e.v,1===a.code&&a.data&&(i=a.data.items||a.data||[],s=["ibkr","mt5"],t.credentials=i.filter(function(t){var e=(t.exchange_id||t.name||"").toLowerCase();return!s.includes(e)}),!t.selectedCredentialId&&t.credentials.length>0&&(t.selectedCredentialId=t.credentials[0].id,t.onCredentialChange(t.selectedCredentialId))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.credLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},onExchangeAccountSaved:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s;return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return i=e.selectedCredentialId,a.n=1,e.loadCredentials();case 1:if(s=t&&(t.id||t.credential_id),!s){a.n=3;break}return e.selectedCredentialId=s,a.n=2,e.onCredentialChange(s);case 2:a.n=4;break;case 3:if(i||1!==e.credentials.length){a.n=4;break}return e.selectedCredentialId=e.credentials[0].id,a.n=4,e.onCredentialChange(e.selectedCredentialId);case 4:return a.a(2)}},a)}))()},onCredentialChange:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return e.selectedCredentialId=t,a.n=1,e.loadBalance();case 1:return a.n=2,e.loadPosition();case 2:return a.a(2)}},a)}))()},loadBalance:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedCredentialId){e.n=1;break}return e.a(2);case 1:return t.balanceLoading=!0,e.p=2,e.n=3,m({credential_id:t.selectedCredentialId,market_type:t.effectiveMarketType});case 3:a=e.v,1===a.code&&a.data?t.balance=(0,c.A)({available:0,total:0},a.data):t.balance={available:0,total:0},e.n=5;break;case 4:e.p=4,i=e.v,t.balance={available:0,total:0,error:String(i.message||i)};case 5:return e.p=5,t.balanceLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},loadPosition:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedCredentialId&&t.currentSymbol){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,v({credential_id:t.selectedCredentialId,symbol:t.currentSymbol,market_type:t.effectiveMarketType});case 2:if(a=e.v,!(1===a.code&&a.data&&a.data.positions&&a.data.positions.length>0)){e.n=3;break}return t.currentPositions=a.data.positions,e.a(2,!0);case 3:return t.currentPositions=[],e.a(2,!1);case 4:e.n=6;break;case 5:return e.p=5,e.v,t.currentPositions=[],e.a(2,!1);case 6:return e.a(2)}},e,null,[[1,5]])}))()},loadPositionWithRetry:function(){var t=arguments,e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s,n,c;return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return i=t.length>0&&void 0!==t[0]?t[0]:3,s=t.length>1&&void 0!==t[1]?t[1]:2e3,a.n=1,e.loadPosition();case 1:if(n=a.v,!n){a.n=2;break}return a.a(2);case 2:c=0;case 3:if(!(c0&&(this.amount=Math.floor(this.balance.available*t/100*100)/100)},handleSubmit:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s,n,c,l;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.canSubmit){e.n=1;break}return e.a(2);case 1:return t.submitting=!0,e.p=2,a={credential_id:t.selectedCredentialId,symbol:t.currentSymbol,side:t.side,order_type:t.orderType,amount:t.amount,price:"limit"===t.orderType?t.limitPrice:0,leverage:t.isSwapMode?t.leverage:1,market_type:t.effectiveMarketType,margin_mode:t.isSwapMode?t.marginMode:void 0,tp_price:t.tpPrice||0,sl_price:t.slPrice||0,source:t.source},e.n=3,p(a);case 3:if(i=e.v,1!==i.code){e.n=7;break}return t.$emit("order-success",i.data),e.n=4,t.loadBalance();case 4:return e.n=5,t.loadHistory();case 5:return e.n=6,t.loadPositionWithRetry();case 6:e.n=8;break;case 7:s=i.error_hint?t.$t(i.error_hint):"",t.$notification.error({message:t.$t("quickTrade.orderFailed"),description:s||i.msg||""});case 8:e.n=10;break;case 9:e.p=9,l=e.v,n=l&&l.response&&l.response.data||{},c=n.error_hint?t.$t(n.error_hint):"",t.$notification.error({message:t.$t("quickTrade.orderFailed"),description:c||n.msg||l.message||""});case 10:return e.p=10,t.submitting=!1,e.f(10);case 11:return e.a(2)}},e,null,[[2,9,10,11]])}))()},handleClosePosition:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s,c,l,o,d,u;return(0,r.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&e.selectedCredentialId&&e.currentSymbol){a.n=1;break}return a.a(2);case 1:return i=(t.side||"").toLowerCase(),e.closingPositionSide=i||null,a.p=2,s={credential_id:e.selectedCredentialId,symbol:e.currentSymbol,market_type:e.effectiveMarketType,size:0,close_scope:e.isSwapMode?e.closeScope:"full",position_side:i,source:"manual"},a.n=3,b(s);case 3:if(c=a.v,1!==c.code){a.n=6;break}return e.$message.success(e.$t("quickTrade.positionClosed")),a.n=4,e.loadBalance();case 4:return a.n=5,e.loadHistory();case 5:e.currentPositions=e.currentPositions.filter(function(t){return(t.side||"").toLowerCase()!==i}),setTimeout((0,n.A)((0,r.A)().m(function t(){return(0,r.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,e.loadPosition();case 1:return t.a(2)}},t)})),2e3),a.n=7;break;case 6:l=c.error_hint?e.$t(c.error_hint):"",e.$notification.error({message:e.$t("quickTrade.orderFailed"),description:l||c.msg||""});case 7:a.n=9;break;case 8:a.p=8,u=a.v,o=u&&u.response&&u.response.data||{},d=o.error_hint?e.$t(o.error_hint):"",e.$notification.error({message:e.$t("quickTrade.orderFailed"),description:d||o.msg||u.message||""});case 9:return a.p=9,e.closingPositionSide=null,a.f(9);case 10:return a.a(2)}},a,null,[[2,8,9,10]])}))()},startPolling:function(){var t=this;this.stopPolling(),this.pollTimer=setInterval(function(){t.currentSymbol&&t.loadPrice(),t.selectedCredentialId&&t.currentSymbol&&(t.loadBalance(),t.loadPosition())},1e4)},stopPolling:function(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)},handleClose:function(){this.$emit("close"),this.$emit("update:visible",!1)},handleHistoryCollapse:function(t){this.historyCollapsed=!t.includes("history")},formatPrice:function(t){var e=parseFloat(t||0);return Math.abs(e)>=1e4?e.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0}):Math.abs(e)>=100?e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):Math.abs(e)>=1?e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4}):e.toLocaleString("en-US",{minimumFractionDigits:4,maximumFractionDigits:6})},formatTime:function(t){if(!t)return"";var e=new Date(t),a=function(t){return String(t).padStart(2,"0")};return"".concat(a(e.getMonth()+1),"-").concat(a(e.getDate())," ").concat(a(e.getHours()),":").concat(a(e.getMinutes()))}},beforeDestroy:function(){this.stopPolling()}},_=y,q=a(845),k=(0,q.A)(_,i,s,!1,null,"66414eaf",null),C=k.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/305-legacy.b89232fc.js b/frontend/dist/js/305-legacy.b89232fc.js new file mode 100644 index 0000000..923c2ae --- /dev/null +++ b/frontend/dist/js/305-legacy.b89232fc.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[305],{33620:function(t,a,e){e.r(a),e.d(a,{default:function(){return R}});e(62010),e(9868);var s=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-asset-analysis-page",class:{"theme-dark":t.isDarkTheme}},[t.opportunities.length>0?a("div",{staticClass:"radar-section"},[a("div",{staticClass:"radar-header"},[a("div",{staticClass:"radar-header-left"},[a("h2",{staticClass:"radar-title"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.title")))]),a("p",{staticClass:"radar-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.updateHint")))])]),a("a-button",{staticClass:"radar-refresh-btn",attrs:{size:"small",loading:t.oppLoading},on:{click:function(a){return t.loadOpportunities(!0)}}},[a("a-icon",{attrs:{type:"sync"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),a("div",{staticClass:"radar-carousel",on:{mouseenter:function(a){t.oppHover=!0},mouseleave:function(a){t.oppHover=!1}}},[a("div",{staticClass:"radar-track",class:{paused:t.oppHover},style:t.oppTrackStyle},t._l(t.carouselItems,function(e,s){return a("div",{key:"opp-"+s,staticClass:"radar-card",class:[e.impact,{"is-prediction":"PredictionMarket"===e.market}],on:{click:function(a){return t.analyzeOpportunity(e)}}},[a("div",{staticClass:"rc-head"},[a("span",{staticClass:"rc-symbol",class:{"rc-prediction-title":"PredictionMarket"===e.market}},[t._v(" "+t._s("PredictionMarket"===e.market&&e.name||e.symbol)+" ")]),a("span",{staticClass:"rc-market",class:"rc-market-"+(e.market||"").toLowerCase()},[t._v(" "+t._s(t.getMarketLabel(e.market))+" ")])]),"PredictionMarket"!==e.market?a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"当前价格":"Price"))]),a("span",{staticClass:"rc-metric-value"},[t._v("$"+t._s(t.formatOppPrice(e.price)))])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"24h涨跌":"24h Change"))]),a("span",{staticClass:"rc-metric-value",class:e.change_24h>=0?"rc-up":"rc-down"},[t._v(" "+t._s(e.change_24h>=0?"+":"")+t._s((e.change_24h||0).toFixed(2))+"% ")])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"信号":"Signal"))]),a("span",{staticClass:"rc-metric-value rc-signal-val",class:"rc-signal-"+(e.signal||"")},[t._v(" "+t._s(t.getSignalLabel(e.signal))+" ")])])]):a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"市场概率":"Probability"))]),a("span",{staticClass:"rc-metric-value"},[t._v(t._s((e.price||0).toFixed(1))+"%")])]),e.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"机会评分":"Score"))]),a("span",{staticClass:"rc-metric-value rc-up"},[t._v(t._s(e.ai_analysis.opportunity_score.toFixed(0)))])]):t._e(),e.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"建议":"Rec."))]),a("span",{staticClass:"rc-metric-value",class:"YES"===e.ai_analysis.recommendation?"rc-up":"NO"===e.ai_analysis.recommendation?"rc-down":""},[t._v(" "+t._s(t.getRecommendationLabel(e.ai_analysis.recommendation))+" ")])]):t._e()]),a("div",{staticClass:"rc-footer"},[a("span",{staticClass:"rc-reason"},[t._v(t._s(t.getReasonText(e)))]),"Crypto"===e.market?a("span",{staticClass:"rc-cta",on:{click:function(a){return a.stopPropagation(),t.openQuickTradeFromOpp(e)}}},[a("a-icon",{attrs:{type:"transaction"}}),t._v(" "+t._s(t.$t("quickTrade.tradeNow"))+" ")],1):t._e()])])}),0)])]):t._e(),a("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentAnalysisSymbol?a("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTradeFromCurrent}},[a("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),a("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:t.qtSource,"market-type":"swap"},on:{close:function(a){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}}),a("a-card",{staticClass:"workspace-card",attrs:{bordered:!1}},[a("a-tabs",{staticClass:"workspace-tabs",attrs:{size:"large"},model:{value:t.activeTab,callback:function(a){t.activeTab=a},expression:"activeTab"}},[a("a-tab-pane",{key:"quick"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.quick"))+" ")],1),a("div",{staticClass:"tab-body"},["quick"===t.activeTab?a("AnalysisView",{attrs:{embedded:!0,"preset-symbol":t.presetSymbol,"auto-analyze-signal":t.autoAnalyzeSignal},on:{"symbol-change":t.onAnalysisSymbolChange}}):t._e()],1)]),a("a-tab-pane",{key:"polymarket"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"radar-chart"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.polymarket"))+" ")],1),a("div",{staticClass:"tab-body"},[a("div",{staticClass:"polymarket-tab-content"},[a("div",{staticClass:"polymarket-placeholder"},[a("div",{staticClass:"placeholder-icon"},[a("a-icon",{attrs:{type:"radar-chart"}})],1),a("h3",[t._v(t._s(t.$t("polymarket.analysis.title")))]),a("p",[t._v(t._s(t.$t("polymarket.analysis.description")))]),a("a-button",{staticStyle:{"margin-top":"16px"},attrs:{type:"primary",size:"large",icon:"thunderbolt"},on:{click:function(a){t.showPolymarketModal=!0}}},[t._v(" "+t._s(t.$t("polymarket.analysis.startAnalysis"))+" ")])],1)])])])],1)],1),a("PolymarketAnalysisModal",{attrs:{visible:t.showPolymarketModal},on:{close:function(a){t.showPolymarketModal=!1}}})],1)},i=[],n=e(81127),r=e(56252),o=e(2403),l=e(76338),c=(e(28706),e(74423),e(34782),e(27495),e(21699),e(25440),e(95353)),u=e(43156),d=e(44146),y=e(59286),p=(e(42762),function(){var t=this,a=t._self._c;return a("a-modal",{attrs:{visible:t.visible,title:t.$t("polymarket.analysis.title"),width:900,footer:null,wrapClassName:t.isDarkTheme?"qd-dark-modal":"",maskClosable:!1},on:{cancel:t.handleClose}},[a("div",{staticClass:"polymarket-analysis-modal",class:{"theme-dark":t.isDarkTheme}},[a("a-tabs",{attrs:{"default-active-key":"analyze"},on:{change:t.handleTabChange}},[a("a-tab-pane",{key:"analyze",attrs:{tab:t.$t("polymarket.analysis.tabAnalyze")}},[t.analysisResult?t._e():a("div",{staticClass:"input-section"},[a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("polymarket.analysis.inputHint"),type:"info","show-icon":""}}),a("a-textarea",{attrs:{placeholder:t.$t("polymarket.analysis.inputPlaceholder"),rows:3,disabled:t.analyzing},on:{pressEnter:t.handleAnalyze},model:{value:t.inputText,callback:function(a){t.inputText=a},expression:"inputText"}}),a("div",{staticClass:"input-actions"},[a("a-button",{staticStyle:{width:"100%","margin-top":"12px"},attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.inputText.trim()},on:{click:t.handleAnalyze}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzeButton"))+" ")])],1)],1),t.analysisResult?a("div",{staticClass:"result-section"},[a("div",{staticClass:"market-info"},[a("h3",[t._v(t._s(t.analysisResult.market.question))]),a("div",{staticClass:"market-meta"},[a("a-tag",{attrs:{color:t.getStatusColor(t.analysisResult.market.status)}},[t._v(" "+t._s(t.analysisResult.market.status)+" ")]),a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"percentage"}}),t._v(" "+t._s(t.analysisResult.market.current_probability)+"% ")],1),t.analysisResult.market.volume_24h?a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"dollar"}}),t._v(" "+t._s(t.formatVolume(t.analysisResult.market.volume_24h))+" ")],1):t._e(),t.analysisResult.market.polymarket_url?a("a-button",{attrs:{type:"link",size:"small",icon:"link",href:t.analysisResult.market.polymarket_url,target:"_blank"}},[t._v(" "+t._s(t.$t("polymarket.analysis.viewOnPolymarket"))+" ")]):t._e()],1)]),a("div",{staticClass:"analysis-result"},[a("a-divider",[t._v(t._s(t.$t("polymarket.analysis.aiAnalysis")))]),a("div",{staticClass:"probability-comparison"},[a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.marketProbability")))]),a("div",{staticClass:"prob-value"},[t._v(t._s(t.analysisResult.analysis.market_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.aiPredictedProbability")))]),a("div",{staticClass:"prob-value ai-prob"},[t._v(t._s(t.analysisResult.analysis.ai_predicted_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.divergence")))]),a("div",{staticClass:"prob-value",class:t.getDivergenceClass(t.analysisResult.analysis.divergence)},[t._v(" "+t._s(t.analysisResult.analysis.divergence>=0?"+":"")+t._s(t.analysisResult.analysis.divergence.toFixed(2))+"% ")])])]),a("div",{staticClass:"recommendation-section"},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.recommendation")))]),a("a-tag",{staticStyle:{"font-size":"16px",padding:"4px 12px"},attrs:{color:t.getRecommendationColor(t.analysisResult.analysis.recommendation)}},[t._v(" "+t._s(t.getRecommendationLabel(t.analysisResult.analysis.recommendation))+" ")])],1)]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.confidenceScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.confidence_score.toFixed(0)))])])]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.opportunityScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.opportunity_score.toFixed(0)))])])])],1)],1),t.analysisResult.analysis.reasoning?a("div",{staticClass:"reasoning-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.reasoning")))]),a("p",{staticClass:"reasoning-text"},[t._v(t._s(t.analysisResult.analysis.reasoning))])]):t._e(),t.analysisResult.analysis.key_factors&&t.analysisResult.analysis.key_factors.length>0?a("div",{staticClass:"key-factors-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.keyFactors")))]),t._l(t.analysisResult.analysis.key_factors,function(e,s){return a("a-tag",{key:s,staticStyle:{margin:"4px"},attrs:{color:"blue"}},[t._v(" "+t._s(e)+" ")])})],2):t._e(),t.analysisResult.credits_charged>0?a("div",{staticClass:"billing-info"},[a("a-alert",{staticStyle:{"margin-top":"16px"},attrs:{message:t.$t("polymarket.analysis.creditsCharged",{credits:t.analysisResult.credits_charged}),type:"success","show-icon":""}}),void 0!==t.analysisResult.remaining_credits?a("div",{staticStyle:{"margin-top":"8px","text-align":"right"},style:{color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.remainingCredits",{credits:t.analysisResult.remaining_credits.toFixed(0)}))+" ")]):t._e()],1):t._e()],1),a("div",{staticClass:"result-actions"},[a("a-button",{staticStyle:{"margin-right":"8px"},on:{click:t.handleNewAnalysis}},[t._v(" "+t._s(t.$t("polymarket.analysis.newAnalysis"))+" ")]),a("a-button",{attrs:{type:"primary"},on:{click:t.handleClose}},[t._v(" "+t._s(t.$t("common.close"))+" ")])],1)]):t._e(),t.analyzing?a("div",{staticClass:"loading-section"},[a("a-spin",{attrs:{size:"large"}}),a("p",{style:{marginTop:"16px",color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzing"))+" ")])],1):t._e()]),a("a-tab-pane",{key:"history",attrs:{tab:t.$t("polymarket.analysis.tabHistory")}},[a("div",{staticClass:"history-section"},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-table",{attrs:{columns:t.historyColumns,"data-source":t.historyList,pagination:t.historyPagination,"row-key":function(t){return t.id},size:"small"},on:{change:t.handleHistoryTableChange},scopedSlots:t._u([{key:"market_title",fn:function(e,s){return[a("a-button",{staticStyle:{padding:"0"},attrs:{type:"link"},on:{click:function(a){return t.viewHistoryItem(s)}}},[t._v(" "+t._s(e)+" ")])]}},{key:"recommendation",fn:function(e){return[a("a-tag",{attrs:{color:t.getRecommendationColor(e)}},[t._v(" "+t._s(t.getRecommendationLabel(e))+" ")])]}},{key:"created_at",fn:function(a){return[t._v(" "+t._s(t.formatDateTime(a))+" ")]}}])})],1)],1)])],1)],1)])}),m=[],h=(e(26099),e(75769)),v="/api/polymarket";function k(t){return(0,h.Ay)({url:"".concat(v,"/analyze"),method:"post",data:t,timeout:12e4})}function _(t){return(0,h.Ay)({url:"".concat(v,"/history"),method:"get",params:t})}var g={name:"PolymarketAnalysisModal",props:{visible:{type:Boolean,default:!1}},data:function(){var t=this;return{inputText:"",analyzing:!1,analysisResult:null,activeTab:"analyze",historyLoading:!1,historyList:[],historyPagination:{current:1,pageSize:20,total:0,showSizeChanger:!0,showTotal:function(a){return t.$t("polymarket.analysis.historyTotal",{total:a})}},historyColumns:[]}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),methods:{handleAnalyze:function(){var t=this;this.inputText.trim()?(this.analyzing=!0,this.analysisResult=null,k({input:this.inputText.trim(),language:this.$i18n.locale||"zh-CN"}).then(function(a){1===a.code?(t.analysisResult=a.data,t.$message.success(t.$t("polymarket.analysis.success"))):"Insufficient credits"===a.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(a.msg||t.$t("polymarket.analysis.failed"))}).catch(function(a){a.response&&a.response.data&&"Insufficient credits"===a.response.data.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(t.$t("polymarket.analysis.failed"))}).finally(function(){t.analyzing=!1})):this.$message.warning(this.$t("polymarket.analysis.inputRequired"))},handleNewAnalysis:function(){this.inputText="",this.analysisResult=null},handleClose:function(){var t=this;this.$emit("close"),setTimeout(function(){t.inputText="",t.analysisResult=null,t.analyzing=!1},300)},getStatusColor:function(t){var a={active:"green",closed:"default",resolved:"blue"};return a[t]||"default"},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"orange"};return a[t]||"default"},getRecommendationLabel:function(t){var a={YES:this.$t("polymarket.analysis.recommendationYes"),NO:this.$t("polymarket.analysis.recommendationNo"),HOLD:this.$t("polymarket.analysis.recommendationHold")};return a[t]||t},getDivergenceClass:function(t){return t>5?"divergence-positive":t<-5?"divergence-negative":"divergence-neutral"},formatVolume:function(t){return t>=1e6?"$".concat((t/1e6).toFixed(2),"M"):t>=1e3?"$".concat((t/1e3).toFixed(2),"K"):"$".concat(t.toFixed(2))},handleTabChange:function(t){this.activeTab=t,"history"===t&&0===this.historyList.length&&this.loadHistory()},loadHistory:function(){var t=this;return(0,r.A)((0,n.A)().m(function a(){var e;return(0,n.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,_({page:t.historyPagination.current,page_size:t.historyPagination.pageSize});case 2:e=a.v,1===e.code&&e.data&&(t.historyList=e.data.items||[],t.historyPagination.total=e.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("polymarket.analysis.loadHistoryFailed"));case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},handleHistoryTableChange:function(t){this.historyPagination.current=t.current,this.historyPagination.pageSize=t.pageSize,this.loadHistory()},viewHistoryItem:function(t){this.activeTab="analyze",this.analysisResult={market:{question:t.market_title,market_id:t.market_id,polymarket_url:t.market_url,current_probability:t.market_probability,status:"active"},analysis:{ai_predicted_probability:t.ai_predicted_probability,market_probability:t.market_probability,recommendation:t.recommendation,opportunity_score:t.opportunity_score,confidence_score:t.confidence_score}}},formatDateTime:function(t){if(!t)return"";var a=new Date(t);return a.toLocaleString("zh-CN"===this.$i18n.locale?"zh-CN":"en-US")}},mounted:function(){this.historyColumns=[{title:this.$t("polymarket.analysis.historyMarket"),dataIndex:"market_title",key:"market_title",scopedSlots:{customRender:"market_title"}},{title:this.$t("polymarket.analysis.historyRecommendation"),dataIndex:"recommendation",key:"recommendation",width:120,scopedSlots:{customRender:"recommendation"}},{title:this.$t("polymarket.analysis.historyOpportunityScore"),dataIndex:"opportunity_score",key:"opportunity_score",width:120,align:"right"},{title:this.$t("polymarket.analysis.historyCreatedAt"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]}},b=g,f=e(845),C=(0,f.A)(b,p,m,!1,null,"67e891d2",null),$=C.exports,S={name:"AIAssetAnalysis",components:{AnalysisView:u["default"],QuickTradePanel:y.A,PolymarketAnalysisModal:$},data:function(){return{activeTab:"quick",opportunities:[],oppLoading:!1,oppHover:!1,presetSymbol:"",autoAnalyzeSignal:0,showQuickTrade:!1,qtSymbol:"",qtSide:"",qtPrice:0,qtSource:"ai_radar",currentAnalysisSymbol:"",currentAnalysisMarket:"",showPolymarketModal:!1}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},carouselItems:function(){return 0===this.opportunities.length?[]:[].concat((0,o.A)(this.opportunities),(0,o.A)(this.opportunities))},oppTrackStyle:function(){var t=3*this.opportunities.length;return{animationDuration:t+"s"}}}),created:function(){this.loadOpportunities()},methods:{loadOpportunities:function(){var t=arguments,a=this;return(0,r.A)((0,n.A)().m(function e(){var s,i,r;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],a.oppLoading=!0,e.p=1,i=s?{force:!0}:{},e.n=2,(0,d.r9)(i);case 2:r=e.v,r&&1===r.code&&Array.isArray(r.data)&&(a.opportunities=r.data.slice(0,20)),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,a.oppLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},getSignalColor:function(t){var a={overbought:"volcano",oversold:"green",bullish_momentum:"cyan",bearish_momentum:"red"};return a[t]||"default"},getSignalLabel:function(t){var a="aiAssetAnalysis.opportunities.signal.".concat(t),e=this.$t(a);return e!==a?e:t},getMarketTagColor:function(t){var a={Crypto:"purple",USStock:"green",CNStock:"blue",HKStock:"geekblue",Forex:"gold",PredictionMarket:"cyan"};return a[t]||"default"},getMarketLabel:function(t){var a="aiAssetAnalysis.opportunities.market.".concat(t),e=this.$t(a);return e!==a?e:t},getReasonText:function(t){var a=(t.market||"Crypto").toLowerCase(),e=t.signal||"",s="aiAssetAnalysis.opportunities.reason.".concat(a,".").concat(e),i=this.$t(s);if(i===s)return t.reason||"";var n=Math.abs(t.change_24h||0).toFixed(1),r=Math.abs(t.change_7d||0).toFixed(1);return i.replace("{change}",n).replace("{change7d}",r)},formatOppPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1?t.toFixed(2):t.toFixed(4):"--"},analyzeOpportunity:function(t){var a=this;if("PredictionMarket"===t.market)return this.activeTab="polymarket",void(this.showPolymarketModal=!0);this.activeTab="quick";var e=t.market||"Crypto";this.presetSymbol="".concat(e,":").concat(t.symbol),this.$nextTick(function(){a.autoAnalyzeSignal++})},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"default"};return a[t]||"default"},getRecommendationLabel:function(t){return this.$t("polymarket.recommendation.".concat(t))||t},onAnalysisSymbolChange:function(t){if(!t)return this.currentAnalysisSymbol="",void(this.currentAnalysisMarket="");var a=t.split(":"),e=a.length>1?a[0]:"Crypto",s=a.length>1?a[1]:a[0];this.currentAnalysisMarket=e,this.currentAnalysisSymbol="Crypto"===e?s:""},openQuickTradeFromCurrent:function(){this.currentAnalysisSymbol&&(this.qtSymbol=this.currentAnalysisSymbol,this.qtSide="",this.qtPrice=0,this.qtSource="ai_analysis",this.showQuickTrade=!0)},openQuickTradeFromOpp:function(t){if("Crypto"===t.market){this.qtSymbol=t.symbol||"";var a=(t.signal||"").toLowerCase();a.includes("oversold")||a.includes("bullish")?this.qtSide="buy":a.includes("overbought")||a.includes("bearish")?this.qtSide="sell":this.qtSide="",this.qtPrice=t.price||0,this.qtSource="ai_radar",this.showQuickTrade=!0}},onQuickTradeSuccess:function(){this.$message.success(this.$t("quickTrade.orderSuccess"))},handleQuickTradeSymbolChange:function(t){t&&(this.qtSymbol=t)}}},T=S,A=(0,f.A)(T,s,i,!1,null,"4f6cc952",null),R=A.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/313.f241066a.js b/frontend/dist/js/313.f241066a.js new file mode 100644 index 0000000..a8ac7dd --- /dev/null +++ b/frontend/dist/js/313.f241066a.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[313],{61313:function(t,a,s){s.r(a),s.d(a,{default:function(){return D}});s(74423);var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-analysis-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded},style:{"--primary-color":t.primaryColor}},[a("div",{staticClass:"main-content-full"},[a("div",{staticClass:"top-index-bar"},[t.loadingSentiment?[t._m(0),t._m(1),t._m(2)]:[a("div",{staticClass:"indicator-box fear-greed",class:t.getFearGreedClass(t.marketData.fearGreed)},[a("span",{staticClass:"ind-label"},[t._v(t._s(t.$t("globalMarket.fearGreedShort")))]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.fearGreed||"--"))])]),a("div",{staticClass:"indicator-box vix",class:t.getVixLevel(t.marketData.vix)},[a("span",{staticClass:"ind-label"},[t._v("VIX")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.vix||"--"))])]),a("div",{staticClass:"indicator-box dxy"},[a("span",{staticClass:"ind-label"},[t._v("DXY")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.dxy||"--"))])])],a("div",{staticClass:"indices-marquee"},[t.loadingIndices?[a("div",{staticClass:"indices-loading"},[a("a-icon",{attrs:{type:"loading"}}),t._v(" "+t._s(t.$t("common.loading")||"加载中...")+" ")],1)]:t.marketData.indices.length>0?[a("div",{staticClass:"marquee-track"},[t._l(t.marketData.indices,function(s){return a("div",{key:"a-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])}),t._l(t.marketData.indices,function(s){return a("div",{key:"b-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])})],2)]:[a("div",{staticClass:"indices-empty"},[t._v("--")])]],2),a("a-button",{staticClass:"refresh-btn",attrs:{type:"link",size:"small",loading:t.loadingMarket},on:{click:t.loadMarketData}},[a("a-icon",{attrs:{type:"sync",spin:t.loadingMarket}})],1)],2),a("div",{staticClass:"main-body"},[a("div",{staticClass:"left-panel"},[a("div",{staticClass:"heatmap-box"},[a("div",{staticClass:"box-header"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.heatmapType,callback:function(a){t.heatmapType=a},expression:"heatmapType"}},[a("a-radio-button",{attrs:{value:"crypto"}},[t._v(t._s(t.$t("globalMarket.cryptoHeatmap")))]),a("a-radio-button",{attrs:{value:"commodities"}},[t._v(t._s(t.$t("globalMarket.commoditiesHeatmap")))]),a("a-radio-button",{attrs:{value:"sectors"}},[t._v(t._s(t.$t("globalMarket.sectorHeatmap")))]),a("a-radio-button",{attrs:{value:"forex"}},[t._v(t._s(t.$t("globalMarket.forexHeatmap")))])],1)],1),a("div",{staticClass:"heatmap-grid"},[t.loadingHeatmap?t._l(12,function(t){return a("div",{key:"skel-"+t,staticClass:"heat-cell skeleton-cell"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.currentHeatmap.length>0?t._l(t.currentHeatmap.slice(0,12),function(s,e){return a("div",{key:e,staticClass:"heat-cell",style:t.getHeatmapStyle(s.value)},[a("span",{staticClass:"heat-name"},[t._v(t._s(t.getHeatmapName(s)))]),s.price?a("span",{staticClass:"heat-price"},[t._v(t._s(t.formatHeatmapPrice(s.price)))]):t._e(),a("span",{staticClass:"heat-val"},[t._v(t._s(s.value>=0?"+":"")+t._s(t.formatNum(s.value))+"%")])])}):[a("div",{staticClass:"heatmap-empty"},[t._v(t._s(t.$t("common.noData")||"暂无数据"))])]],2)]),a("div",{staticClass:"calendar-box"},[a("div",{staticClass:"box-header"},[a("span",{staticClass:"box-title"},[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t.$t("globalMarket.calendar")))],1)]),a("div",{staticClass:"calendar-list"},[t.loadingCalendar?t._l(5,function(t){return a("div",{key:"cal-skel-"+t,staticClass:"cal-item skeleton-item"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.marketData.calendar.length>0?t._l(t.marketData.calendar.slice(0,10),function(s){return a("div",{key:s.id,staticClass:"cal-item",class:s.importance},[a("span",{staticClass:"cal-date"},[t._v(t._s(t.formatCalendarDate(s.date)))]),a("span",{staticClass:"cal-time"},[t._v(t._s(s.time||"--:--"))]),a("span",{staticClass:"cal-flag"},[t._v(t._s(t.getCountryFlag(s.country)))]),a("span",{staticClass:"cal-name"},[t._v(t._s(t.isZhLocale?s.name:s.name_en))]),a("span",{staticClass:"cal-impact",class:t.getImpactClass(s)},["bullish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-up"}}):"bearish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-down"}}):a("a-icon",{attrs:{type:"minus"}}),t._v(" "+t._s(s.actual||s.forecast||"--")+" ")],1)])}):[a("div",{staticClass:"cal-empty"},[t._v(t._s(t.$t("globalMarket.noEvents")))])]],2)])]),a("div",{staticClass:"right-panel"},[a("div",{staticClass:"analysis-toolbar"},[a("a-select",{staticClass:"symbol-selector",attrs:{placeholder:t.$t("dashboard.analysis.empty.selectSymbol"),size:"large","show-search":"","allow-clear":"","option-label-prop":"label","filter-option":t.filterSymbolOption},on:{change:t.handleSymbolChange},model:{value:t.selectedSymbol,callback:function(a){t.selectedSymbol=a},expression:"selectedSymbol"}},[t._l(t.watchlist||[],function(s){return a("a-select-option",{key:"".concat(s.market,"-").concat(s.symbol),attrs:{value:"".concat(s.market,":").concat(s.symbol),label:t.watchlistSelectLabel(s)}},[a("span",{staticClass:"symbol-option wl-select-option-row"},[a("a-tag",{attrs:{color:t.getMarketColor(s.market),size:"small"}},[t._v(t._s(t.getMarketName(s.market)))]),a("strong",{staticClass:"wl-select-symbol"},[t._v(t._s(s.symbol))]),s.name?a("span",{staticClass:"symbol-name wl-select-name"},[t._v(t._s(s.name))]):t._e()],1)])}),a("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[a("div",{staticStyle:{"text-align":"center",padding:"4px 0",color:"#1890ff"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),t._v(t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")],1)])],2),a("a-button",{staticClass:"analyze-button",attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.selectedSymbol||t.analyzing},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")]),a("a-button",{staticClass:"history-button",attrs:{size:"large",icon:"history"},on:{click:function(a){t.showHistoryModal=!0,t.loadHistoryList()}}},[t._v(" "+t._s(t.$t("fastAnalysis.history"))+" ")])],1),a("div",{staticClass:"analysis-main"},[t.analysisResult||t.analyzing||t.analysisError?t._e():a("div",{staticClass:"analysis-placeholder"},[a("div",{staticClass:"placeholder-hero"},[t._m(3),a("div",{staticClass:"hero-body"},[a("div",{staticClass:"hero-badge"},[t._v("AI-POWERED")]),a("h2",{staticClass:"hero-title"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.title")))]),a("p",{staticClass:"hero-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.subtitle")))]),a("div",{staticClass:"hero-stats"},[a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"line-chart"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"dashboard"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"apartment"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3Desc")))])])])]),a("div",{staticClass:"hero-cta"},[a("a-button",{attrs:{type:"primary",size:"large",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")]),a("a-button",{attrs:{size:"large",icon:"thunderbolt",disabled:!t.selectedSymbol},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")])],1),a("p",{staticClass:"hero-hint"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.quickStart")))])])])]),t.analysisResult||t.analyzing||t.analysisError?a("FastAnalysisReport",{attrs:{result:t.analysisResult,loading:t.analyzing,error:t.analysisError,"error-tone":t.analysisErrorTone},on:{retry:t.startFastAnalysis}}):t._e()],1)]),a("div",{staticClass:"watchlist-panel"},[a("div",{staticClass:"panel-header"},[a("span",{staticClass:"panel-title"},[a("a-icon",{attrs:{type:"star",theme:"filled"}}),t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.title")))],1),a("span",{staticClass:"panel-header-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage")}},[a("a-badge",{attrs:{count:t.monitors.length,offset:[-2,2],"number-style":{fontSize:"9px",minWidth:"14px",height:"14px",lineHeight:"14px",padding:"0 3px"}}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"unordered-list"},on:{click:function(a){t.showTaskDrawer=!0}}})],1)],1),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.batch.schedule")}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"schedule"},on:{click:t.toggleBatchMode}})],1),a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"plus"},on:{click:function(a){t.showAddStockModal=!0}}})],1)]),t.watchlist&&t.watchlist.length>0?a("div",{staticClass:"panel-summary"},[a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlist.length))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.totalAssets")))])]),t.watchlistPositionCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistPositionCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.positionCount")))])]):t._e(),t.watchlistTaskCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistTaskCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.taskCount")))])]):t._e(),0!==t.watchlistTotalPnl?a("div",{staticClass:"summary-chip pnl"},[a("span",{staticClass:"sc-num",class:t.watchlistTotalPnl>=0?"up":"down"},[t._v(t._s(t.watchlistTotalPnl>=0?"+":"")+t._s(t.formatNum(t.watchlistTotalPnl)))]),a("span",{staticClass:"sc-label"},[t._v("P&L")])]):t._e()]):t._e(),t.batchMode?a("div",{staticClass:"batch-bar"},[a("a-checkbox",{staticClass:"batch-all-cb",attrs:{checked:t.batchSelectedAll,indeterminate:t.batchIndeterminate},on:{change:t.onBatchSelectAll}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.selectAll"))+" ")]),a("a-button",{attrs:{type:"primary",size:"small",disabled:0===t.batchSelectedKeys.length},on:{click:t.openBatchScheduleModal}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.schedule"))),t.batchSelectedKeys.length>0?[t._v(" "+t._s(t.batchSelectedKeys.length))]:t._e()],2),a("a-button",{attrs:{size:"small"},on:{click:t.toggleBatchMode}},[t._v(t._s(t.$t("common.cancel")))])],1):t._e(),a("div",{staticClass:"watchlist-list"},[t._l(t.watchlist||[],function(s){var e,i,n;return a("div",{key:"wl-".concat(s.market,"-").concat(s.symbol),staticClass:"wl-card",class:{active:t.selectedSymbol==="".concat(s.market,":").concat(s.symbol)},on:{click:function(a){return t.selectWatchlistItem(s)}}},[t.batchMode?a("a-checkbox",{staticClass:"wl-card-cb",attrs:{checked:t.batchSelectedKeys.includes("".concat(s.market,":").concat(s.symbol))},on:{change:function(a){return t.onBatchItemToggle(s,a)}},nativeOn:{click:function(t){t.stopPropagation()}}}):t._e(),a("div",{staticClass:"wl-card-body",class:{"with-cb":t.batchMode}},[a("div",{staticClass:"wl-row-main"},[a("span",{staticClass:"wl-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"wl-market"},[t._v(t._s(t.getMarketName(s.market)))]),a("span",{staticClass:"wl-spacer"}),t.watchlistPrices["".concat(s.market,":").concat(s.symbol)]?[a("span",{staticClass:"wl-price"},[t._v(t._s(t.formatPrice(t.watchlistPrices["".concat(s.market,":").concat(s.symbol)].price)))]),a("span",{staticClass:"wl-change",class:((null===(e=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===e?void 0:e.change)||0)>=0?"up":"down"},[t._v(" "+t._s(((null===(i=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===i?void 0:i.change)||0)>=0?"+":"")+t._s(t.formatNum(null===(n=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===n?void 0:n.change))+"% ")])]:t._e()],2),t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)]?a("div",{staticClass:"wl-row-pnl"},[a("span",{staticClass:"wl-pnl-qty"},[t._v(t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].quantity,4))+" @ "+t._s(t.formatPrice(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].avgEntry||0)))]),a("span",{staticClass:"wl-pnl-val",class:t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"up":"down"},[t._v(" "+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl||0))+" ("+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent||0))+"%) ")])]):t._e(),t.getMonitorMeta(s)?a("div",{staticClass:"wl-row-task"},[a("span",{staticClass:"wl-task-badge",class:t.getMonitorMeta(s).activeCount>0?"active":"paused",on:{click:function(a){return a.stopPropagation(),t.toggleStockMonitor(s)}}},[a("a-icon",{attrs:{type:t.getMonitorMeta(s).activeCount>0?"sync":"pause-circle",spin:t.getMonitorMeta(s).activeCount>0}}),t._v(" "+t._s(t.getMonitorMeta(s).activeCount>0?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")],1),t.getMonitorMeta(s).nextRunAtText?a("span",{staticClass:"wl-task-next"},[t._v(t._s(t.getMonitorMeta(s).nextRunAtText))]):t._e()]):t._e()]),a("div",{staticClass:"wl-card-hover-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.position.quickAdd")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openPositionModal(s)}}},[a("a-icon",{attrs:{type:"wallet"}})],1)]),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.monitor.quickTask")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openMonitorModal(s)}}},[a("a-icon",{attrs:{type:"clock-circle"}})],1)]),a("span",{staticClass:"wl-hover-btn danger",on:{click:function(a){return a.stopPropagation(),t.removeFromWatchlist(s)}}},[a("a-icon",{attrs:{type:"delete"}})],1)],1)],1)}),t.watchlist&&0!==t.watchlist.length?t._e():a("div",{staticClass:"watchlist-empty"},[a("div",{staticClass:"we-icon"},[a("a-icon",{attrs:{type:"star"}})],1),a("p",[t._v(t._s(t.$t("dashboard.analysis.empty.noWatchlist")))]),a("a-button",{attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")])],1)],2)])])]),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",wrapClassName:t.isDarkTheme?"qd-dark-modal":"",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[a("div",{staticClass:"add-stock-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(a){t.selectedMarketTab=a},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(s){return a("a-tab-pane",{key:s.value,attrs:{tab:t.$t(s.i18nKey||"dashboard.analysis.market.".concat(s.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(a){t.symbolSearchKeyword=a},expression:"symbolSearchKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):a("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?a("div",{staticClass:"selected-symbol-section"},[a("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(a){t.selectedSymbolForAdd=null}}},[a("template",{slot:"description"},[a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),a("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?a("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):t._e()],1)])],2)],1):t._e()],1)]),a("a-modal",{attrs:{visible:t.showPositionModal,title:"".concat(t.$i18n&&"zh-CN"===t.$i18n.locale?"创建持仓(虚拟仓)":"Create Position (Virtual)"," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.savePosition,cancel:function(a){t.showPositionModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("portfolio.positions.side")||"Direction"}},[a("a-select",{model:{value:t.positionForm.side,callback:function(a){t.$set(t.positionForm,"side",a)},expression:"positionForm.side"}},[a("a-select-option",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")||"Long"))]),a("a-select-option",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")||"Short"))])],1)],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"数量":"Quantity"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.quantity,callback:function(a){t.$set(t.positionForm,"quantity",a)},expression:"positionForm.quantity"}})],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"买入单价":"Entry Price"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.entryPrice,callback:function(a){t.$set(t.positionForm,"entryPrice",a)},expression:"positionForm.entryPrice"}})],1)],1)],1),a("a-modal",{attrs:{visible:t.showMonitorModal,title:"".concat(t.$t("aiAssetAnalysis.monitor.quickTask")," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveMonitorTask,cancel:function(a){t.showMonitorModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.monitorForm.interval_min,callback:function(a){t.$set(t.monitorForm,"interval_min",a)},expression:"monitorForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.monitorForm.notify_channels,callback:function(a){t.$set(t.monitorForm,"notify_channels",a)},expression:"monitorForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1),a("a-alert",{attrs:{message:t.$t("aiAssetAnalysis.monitor.tip"),type:"info","show-icon":""}})],1)],1),a("a-modal",{attrs:{visible:t.showBatchScheduleModal,title:t.$t("aiAssetAnalysis.batch.scheduleTitle"),confirmLoading:t.batchRunning,width:"520px",wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveBatchSchedule,cancel:function(a){t.showBatchScheduleModal=!1}}},[a("div",{staticClass:"batch-modal-summary"},[a("p",[t._v(t._s(t.$t("aiAssetAnalysis.batch.scheduleDesc",{count:t.batchSelectedKeys.length})))]),a("div",{staticClass:"batch-symbols-preview"},t._l(t.batchSelectedKeys,function(s){return a("a-tag",{key:s,staticStyle:{"margin-bottom":"4px"},attrs:{color:"blue"}},[t._v(t._s(s.split(":")[1]))])}),1)]),a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.interval_min,callback:function(a){t.$set(t.batchScheduleForm,"interval_min",a)},expression:"batchScheduleForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.notify_channels,callback:function(a){t.$set(t.batchScheduleForm,"notify_channels",a)},expression:"batchScheduleForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1),a("a-alert",{staticStyle:{"margin-top":"8px"},attrs:{message:t.$t("aiAssetAnalysis.batch.scheduleTip"),type:"info","show-icon":""}})],1),a("a-drawer",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage"),visible:t.showTaskDrawer,width:"420",placement:"right",wrapClassName:t.isDarkTheme?"qd-dark-drawer":""},on:{close:function(a){t.showTaskDrawer=!1}}},[0===t.monitors.length?a("div",{staticClass:"task-drawer-empty"},[a("a-icon",{staticStyle:{"font-size":"40px",color:"#ccc"},attrs:{type:"inbox"}}),a("p",[t._v(t._s(t.$t("aiAssetAnalysis.tasks.empty")))])],1):a("div",{staticClass:"task-drawer-list"},t._l(t.monitors,function(s){return a("div",{key:s.id,staticClass:"task-item"},[a("div",{staticClass:"task-item-header"},[a("span",{staticClass:"task-item-name"},[t._v(t._s(s.name||"AI Task"))]),a("a-tag",{attrs:{color:s.is_active?"green":"default",size:"small"}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")])],1),a("div",{staticClass:"task-item-meta"},[s.config&&s.config.run_interval_minutes?a("span",[a("a-icon",{attrs:{type:"clock-circle"}}),t._v(" "+t._s(t.formatIntervalText(s.config.run_interval_minutes))+" ")],1):t._e(),s.next_run_at?a("span",[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t._formatNextRunText(s.next_run_at))+" ")],1):t._e()]),a("div",{staticClass:"task-item-actions"},[a("a-button",{attrs:{size:"small",type:s.is_active?"default":"primary",icon:"poweroff"},on:{click:function(a){return t.handleToggleTask(s)}}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.tasks.pause"):t.$t("aiAssetAnalysis.tasks.resume"))+" ")]),a("a-button",{attrs:{size:"small",icon:"edit"},on:{click:function(a){return t.handleEditTask(s)}}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.edit")))]),a("a-popconfirm",{attrs:{title:t.$t("aiAssetAnalysis.tasks.deleteConfirm"),okText:t.$t("common.confirm"),cancelText:t.$t("common.cancel")},on:{confirm:function(a){return t.handleDeleteTask(s)}}},[a("a-button",{attrs:{size:"small",type:"danger",icon:"delete"}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.delete")))])],1)],1)])}),0)]),a("a-modal",{attrs:{visible:t.showEditTaskModal,title:t.$t("aiAssetAnalysis.tasks.edit"),confirmLoading:t.editTaskLoading,wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveEditTask,cancel:function(a){t.showEditTaskModal=!1}}},[t.editTaskForm?a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.tasks.name")}},[a("a-input",{model:{value:t.editTaskForm.name,callback:function(a){t.$set(t.editTaskForm,"name",a)},expression:"editTaskForm.name"}})],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.interval_min,callback:function(a){t.$set(t.editTaskForm,"interval_min",a)},expression:"editTaskForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.notify_channels,callback:function(a){t.$set(t.editTaskForm,"notify_channels",a)},expression:"editTaskForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1):t._e()],1),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.history.title"),visible:t.showHistoryModal,footer:null,width:"800px",bodyStyle:{maxHeight:"60vh",overflowY:"auto"},wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{cancel:function(a){t.showHistoryModal=!1}}},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-list",{attrs:{"data-source":t.historyList,pagination:{current:t.historyPage,pageSize:t.historyPageSize,total:t.historyTotal,onChange:function(a){t.historyPage=a,t.loadHistoryList()},showSizeChanger:!0,pageSizeOptions:["10","20","50"],onShowSizeChange:function(a,s){t.historyPageSize=s,t.historyPage=1,t.loadHistoryList()}}},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticStyle:{display:"flex","align-items":"center","justify-content":"space-between"}},[a("div",[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(s.market)}},[t._v(" "+t._s(t.getMarketName(s.market))+" ")]),a("strong",[t._v(t._s(s.symbol))]),a("a-tag",{staticStyle:{"margin-left":"12px"},attrs:{color:"BUY"===s.decision?"green":"SELL"===s.decision?"red":"blue"}},[t._v(" "+t._s(s.decision)+" ")]),a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{color:t.getStatusColor(s.status||"completed")}},[t._v(" "+t._s(t.getStatusText(s.status||"completed"))+" ")]),a("span",{staticStyle:{color:"#999","margin-left":"8px","font-size":"12px"}},[t._v(" "+t._s(t.$t("fastAnalysis.confidence"))+": "+t._s(s.confidence)+"% ")])],1),a("div",[a("a-button",{attrs:{type:"link",size:"small",icon:"eye",disabled:"processing"===(s.status||"").toLowerCase()},on:{click:function(a){return t.viewHistoryResult(s)}}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.viewResult"))+" ")]),a("a-popconfirm",{attrs:{title:t.$t("dashboard.analysis.modal.history.deleteConfirm"),"ok-text":t.$t("common.confirm"),"cancel-text":t.$t("common.cancel")},on:{confirm:function(a){return t.deleteHistoryItem(s)}}},[a("a-button",{staticStyle:{color:"#ff4d4f"},attrs:{type:"link",size:"small",icon:"delete"}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.delete"))+" ")])],1)],1)])]),a("template",{slot:"description"},[a("div",{staticStyle:{color:"#666","font-size":"12px"}},[s.price?a("span",[t._v("$"+t._s(t.formatNumber(s.price)))]):t._e(),s.summary?a("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(s.summary.substring(0,80))+t._s(s.summary.length>80?"...":""))]):t._e()]),s.created_at?a("div",{staticStyle:{color:"#999","font-size":"12px","margin-top":"4px"}},[t._v(" "+t._s(t.formatIsoTime(s.created_at))+" ")]):t._e()])],2)],1)}}])}),t.historyLoading||0!==t.historyList.length?t._e():a("a-empty",{attrs:{description:t.$t("dashboard.analysis.empty.noHistory")}})],1)],1)],1)},i=[function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"hero-bg"},[a("div",{staticClass:"hero-bg-circle c1"}),a("div",{staticClass:"hero-bg-circle c2"}),a("div",{staticClass:"hero-bg-grid"})])}],n=s(44735),r=s(21560),o=s(57532),l=s(2403),c=s(15863),d=s(81127),u=s(56252),m=s(76338),h=s(95353),p=s(505),v=s(35038),y=s(24364),f=s(75769),b="/api/fast-analysis";function g(t){return(0,f.Ay)({url:"".concat(b,"/analyze"),method:"post",data:t,timeout:3e5})}function _(t){return(0,f.Ay)({url:"".concat(b,"/history/all"),method:"get",params:t})}function k(t){return(0,f.Ay)({url:"".concat(b,"/history/").concat(t),method:"delete"})}function C(t){return(0,f.Ay)({url:"".concat(b,"/feedback"),method:"post",data:t})}var A=s(44146),S=function(){var t,a,s,e,i,n,r,o,l,c,d,u,m,h,p,v,y,f,b,g,_,k,C=this,A=C._self._c;return A("div",{staticClass:"fast-analysis-report",class:{"theme-dark":C.isDarkTheme}},[C.loading?A("div",{staticClass:"loading-container"},[A("div",{staticClass:"loading-content-pro"},[A("div",{staticClass:"loading-header"},[A("a-icon",{staticClass:"loading-icon-pro",attrs:{type:"thunderbolt"}}),A("span",{staticClass:"loading-title"},[C._v(C._s(C.$t("fastAnalysis.analyzing")))])],1),A("div",{staticClass:"progress-wrapper"},[A("a-progress",{attrs:{percent:C.progressPercent,showInfo:!1,strokeColor:"#1890ff",strokeWidth:8}}),A("span",{staticClass:"progress-text"},[C._v(C._s(C.formatProgress(C.progressPercent))+"%")])],1),A("div",{staticClass:"current-step"},[A("a-icon",{attrs:{type:"loading",spin:""}}),A("span",[C._v(C._s(C.currentStepText))])],1),A("div",{staticClass:"steps-list"},[A("div",{staticClass:"step-item",class:{done:C.step>1,active:1===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step1")||"获取实时数据"))]),C.step>1?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>2,active:2===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step2")||"计算技术指标"))]),C.step>2?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>3,active:3===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step3")||"AI深度分析"))]),C.step>3?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>4,active:4===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step4")||"生成报告"))]),C.step>4?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1)]),A("div",{staticClass:"loading-footer"},[A("span",{staticClass:"elapsed-time"},[C._v(C._s(C.elapsedTimeText))])])])]):C.error?A("div",{staticClass:"error-container"},[A("a-result",{attrs:{status:"warning"===C.errorTone?"warning":"error",title:C.errorTitle,"sub-title":C.error},scopedSlots:C._u([{key:"extra",fn:function(){return[A("a-button",{attrs:{type:"primary"},on:{click:function(t){return C.$emit("retry")}}},[C._v(" "+C._s(C.$t("fastAnalysis.retry"))+" ")])]},proxy:!0}])})],1):C.result?A("div",{staticClass:"result-container"},[A("div",{staticClass:"decision-card",class:C.decisionClass},[A("div",{staticClass:"decision-main"},[A("div",{staticClass:"decision-badge"},[A("a-icon",{attrs:{type:C.decisionIcon}}),A("span",{staticClass:"decision-text"},[C._v(C._s(C.result.decision))])],1),A("div",{staticClass:"confidence-ring"},[A("a-progress",{attrs:{type:"circle",percent:C.result.confidence,width:80,strokeColor:C.confidenceColor},scopedSlots:C._u([{key:"format",fn:function(t){return[A("span",{staticClass:"confidence-value"},[C._v(C._s(t)+"%")])]}}])}),A("div",{staticClass:"confidence-label"},[C._v(C._s(C.$t("fastAnalysis.confidence")))])],1)]),A("div",{staticClass:"decision-summary"},[C._v(" "+C._s(C.result.summary)+" ")]),C.consensusBlock?A("div",{staticClass:"consensus-strip"},[A("div",{staticClass:"consensus-strip-title"},[A("a-icon",{attrs:{type:"cluster"}}),C._v(" "+C._s(C.$t("fastAnalysis.consensusTitle"))+" ")],1),A("div",{staticClass:"consensus-strip-metrics"},[A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusDecision")))]),C._v(" "+C._s(C.consensusBlock.consensus_decision)+" ")]),A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusScore")))]),C._v(" "+C._s(C.formatConsensusNum(C.consensusBlock.consensus_score))+" ")]),null!=C.consensusBlock.agreement_ratio?A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusAgreement")))]),C._v(" "+C._s(C.formatAgreementPct(C.consensusBlock.agreement_ratio))+" ")]):C._e()])]):C._e()]),A("div",{staticClass:"price-info-row",class:{"hold-mode":C.isHoldDecision}},[A("div",{staticClass:"price-card current"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.currentPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(null===(t=C.result.market_data)||void 0===t?void 0:t.current_price)))]),A("div",{staticClass:"price-change",class:(null===(a=C.result.market_data)||void 0===a?void 0:a.change_24h)>=0?"positive":"negative"},[C._v(" "+C._s((null===(s=C.result.market_data)||void 0===s?void 0:s.change_24h)>=0?"+":"")+C._s(C.formatNumber(null===(e=C.result.market_data)||void 0===e?void 0:e.change_24h,2))+"% ")])]),C.isHoldDecision?C._e():[A("div",{staticClass:"price-card entry"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.entryPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.entry_price)))])]),A("div",{staticClass:"price-card stop"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.stopLoss")))]),A("div",{staticClass:"price-value negative"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.stop_loss)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.stopLossHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)]),A("div",{staticClass:"price-card target"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.takeProfit")))]),A("div",{staticClass:"price-value positive"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.take_profit)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.takeProfitHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)])]],2),C.trendOutlookBlocks.length||C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-card"},[A("div",{staticClass:"trend-outlook-header"},[A("a-icon",{attrs:{type:"calendar"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.trendOutlookTitle")))])],1),C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-summary"},[C._v(" "+C._s(C.trendOutlookSummaryText)+" ")]):C._e(),C.trendOutlookBlocks.length?A("div",{staticClass:"trend-outlook-grid"},C._l(C.trendOutlookBlocks,function(t){return A("div",{key:t.key,staticClass:"trend-outlook-item"},[A("div",{staticClass:"to-label"},[C._v(C._s(t.label))]),A("div",{staticClass:"to-trend",class:C.outlookTrendClass(t.trend)},[C._v(" "+C._s(C.formatOutlookTrend(t.trend))+" ")]),A("div",{staticClass:"to-meta"},[A("span",{staticClass:"to-score"},[C._v(C._s(null!=t.score?t.score:"--"))]),A("span",{staticClass:"to-str"},[C._v(C._s(t.strength||"--"))])])])}),0):C._e()]):C._e(),A("div",{staticClass:"scores-row"},[A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technical")))])],1),A("a-progress",{attrs:{percent:(null===(i=C.result.scores)||void 0===i?void 0:i.technical)||50,strokeColor:C.getScoreColor(null===(n=C.result.scores)||void 0===n?void 0:n.technical),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(r=C.result.scores)||void 0===r?void 0:r.technical)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamental")))])],1),A("a-progress",{attrs:{percent:(null===(o=C.result.scores)||void 0===o?void 0:o.fundamental)||50,strokeColor:C.getScoreColor(null===(l=C.result.scores)||void 0===l?void 0:l.fundamental),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(c=C.result.scores)||void 0===c?void 0:c.fundamental)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentiment")))])],1),A("a-progress",{attrs:{percent:(null===(d=C.result.scores)||void 0===d?void 0:d.sentiment)||50,strokeColor:C.getScoreColor(null===(u=C.result.scores)||void 0===u?void 0:u.sentiment),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(m=C.result.scores)||void 0===m?void 0:m.sentiment)||50))])],1),A("div",{staticClass:"score-item overall"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"dashboard"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.overall")))])],1),A("a-progress",{attrs:{percent:(null===(h=C.result.scores)||void 0===h?void 0:h.overall)||50,strokeColor:C.getScoreColor(null===(p=C.result.scores)||void 0===p?void 0:p.overall),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(v=C.result.scores)||void 0===v?void 0:v.overall)||50))])],1)]),C.result.detailed_analysis?A("div",{staticClass:"detailed-analysis"},[C.result.detailed_analysis.technical?A("div",{staticClass:"analysis-card technical"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technicalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(y=C.result.scores)||void 0===y?void 0:y.technical)}},[C._v(" "+C._s((null===(f=C.result.scores)||void 0===f?void 0:f.technical)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.technical)+" ")])]):C._e(),C.result.detailed_analysis.fundamental?A("div",{staticClass:"analysis-card fundamental"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamentalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(b=C.result.scores)||void 0===b?void 0:b.fundamental)}},[C._v(" "+C._s((null===(g=C.result.scores)||void 0===g?void 0:g.fundamental)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.fundamental)+" ")])]):C._e(),C.result.detailed_analysis.sentiment?A("div",{staticClass:"analysis-card sentiment"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentimentAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(_=C.result.scores)||void 0===_?void 0:_.sentiment)}},[C._v(" "+C._s((null===(k=C.result.scores)||void 0===k?void 0:k.sentiment)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.sentiment)+" ")])]):C._e()]):C._e(),A("div",{staticClass:"analysis-details"},[A("div",{staticClass:"detail-section reasons"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"bulb",theme:"twoTone",twoToneColor:"#52c41a"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.keyReasons")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.reasons,function(t,a){return A("li",{key:"r-"+a},[C._v(" "+C._s(t)+" ")])}),0)]),A("div",{staticClass:"detail-section risks"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"warning",theme:"twoTone",twoToneColor:"#faad14"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.risks")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.risks,function(t,a){return A("li",{key:"k-"+a},[C._v(" "+C._s(t)+" ")])}),0)])]),C.result.indicators&&Object.keys(C.result.indicators).length>0?A("div",{staticClass:"indicators-section"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"stock"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicators")))]),A("a-tag",{staticClass:"indicators-pro-badge",attrs:{color:"blue"}},[C._v(C._s(C.$t("fastAnalysis.indicatorsProBadge")))])],1),A("div",{staticClass:"indicators-methodology"},[A("a-icon",{attrs:{type:"experiment"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicatorsProSubtitle")))])],1),A("div",{staticClass:"indicators-grid"},[C.result.indicators.rsi?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("RSI (14)")]),A("div",{staticClass:"indicator-value",class:C.getRsiClass(C.result.indicators.rsi.value)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.rsi.value,1))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.rsi.signal)))])]):C._e(),C.result.indicators.macd?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("MACD (12,26,9)")]),A("div",{staticClass:"indicator-value",class:"bullish"===C.result.indicators.macd.signal?"bullish":"bearish"===C.result.indicators.macd.signal?"bearish":""},[C._v(" "+C._s(C.translateTrend(C.result.indicators.macd.trend))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.macd.signal)))])]):C._e(),C.result.indicators.moving_averages?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.maTrend")))]),A("div",{staticClass:"indicator-value",class:C.getMaTrendClass(C.result.indicators.moving_averages.trend)},[C._v(" "+C._s(C.translateTrend(C.result.indicators.moving_averages.trend))+" ")])]):C._e(),C.result.indicators.volatility&&null!=C.result.indicators.volatility.atr?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("ATR (14)")]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" $"+C._s(C.formatPrice(C.result.indicators.volatility.atr))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.atrTrueRange")))])]):C._e(),C.result.indicators.bollinger&&null!=C.result.indicators.bollinger.BB_width?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.bbWidth")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.bollinger.BB_width,2))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.bbWidthHint")))])]):C._e(),null!=C.result.indicators.price_position?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.rangePct20")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.price_position,1))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.rangePct20Hint")))])]):C._e(),null!=C.result.indicators.volume_ratio?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volumeRatio")))]),A("div",{staticClass:"indicator-value",class:C.volumeRatioClass(C.result.indicators.volume_ratio)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.volume_ratio,2))+"× ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.volumeRatioHint")))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.support")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.support)))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.resistance")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.resistance)))])]):C._e(),C.result.indicators.volatility?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volatility")))]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" "+C._s(C.translateVolatility(C.result.indicators.volatility.level))+" ("+C._s(C.result.indicators.volatility.pct)+"%) ")])]):C._e()]),C.professionalIndicatorRows.length?A("div",{staticClass:"indicators-pro-wrap"},[A("div",{staticClass:"indicators-pro-title"},[A("a-icon",{attrs:{type:"deployment-unit"}}),C._v(" "+C._s(C.$i18n&&"zh-CN"===C.$i18n.locale?"量化参数明细":"Quant Parameters")+" ")],1),A("a-descriptions",{staticClass:"indicators-pro-desc",attrs:{bordered:"",size:"small",column:2}},C._l(C.professionalIndicatorRows,function(t){return A("a-descriptions-item",{key:t.key,attrs:{label:t.label}},[A("span",{class:t.valueClass},[C._v(C._s(t.text))])])}),1)],1):C._e()]):C._e(),A("div",{staticClass:"feedback-section"},[A("div",{staticClass:"feedback-question"},[C._v(C._s(C.$t("fastAnalysis.wasHelpful")))]),A("div",{staticClass:"feedback-buttons"},[A("a-button",{attrs:{type:"helpful"===C.userFeedback?"primary":"default",size:"small",loading:"helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("helpful")}}},[A("a-icon",{attrs:{type:"like"}}),C._v(" "+C._s(C.$t("fastAnalysis.helpful"))+" ")],1),A("a-button",{attrs:{type:"not_helpful"===C.userFeedback?"danger":"default",size:"small",loading:"not_helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("not_helpful")}}},[A("a-icon",{attrs:{type:"dislike"}}),C._v(" "+C._s(C.$t("fastAnalysis.notHelpful"))+" ")],1)],1),A("div",{staticClass:"analysis-meta"},[A("span",[C._v(C._s(C.$t("fastAnalysis.analysisTime"))+": "+C._s(C.result.analysis_time_ms)+"ms")]),C.result.memory_id?A("span",[C._v("ID: #"+C._s(C.result.memory_id))]):C._e()])])]):A("div",{staticClass:"empty-container"},[A("div",{staticClass:"empty-content"},[A("a-icon",{staticClass:"empty-icon",attrs:{type:"radar-chart"}}),A("div",{staticClass:"empty-title"},[C._v(C._s(C.$t("fastAnalysis.selectSymbol")))]),A("div",{staticClass:"empty-hint"},[C._v(C._s(C.$t("fastAnalysis.selectHint")))])],1)])])},w=[],$={name:"FastAnalysisReport",props:{result:{type:Object,default:null},loading:{type:Boolean,default:!1},error:{type:String,default:null},errorTone:{type:String,default:"error",validator:function(t){return["error","warning","info"].includes(t)}}},data:function(){return{userFeedback:null,feedbackLoading:null,progress:0,elapsedSeconds:0,mainTimer:null}},computed:(0,m.A)((0,m.A)({},(0,h.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},progressPercent:function(){return Math.round(10*this.progress)/10},step:function(){return this.progress<25?1:this.progress<50?2:this.progress<75?3:4},currentStepText:function(){var t={1:this.$t("fastAnalysis.step1")||"获取实时数据",2:this.$t("fastAnalysis.step2")||"计算技术指标",3:this.$t("fastAnalysis.step3")||"AI深度分析",4:this.$t("fastAnalysis.step4")||"生成报告"};return t[this.step]||this.$t("fastAnalysis.preparing")||"准备中..."},elapsedTimeText:function(){if(this.elapsedSeconds<60)return"".concat(this.elapsedSeconds,"s");var t=Math.floor(this.elapsedSeconds/60),a=this.elapsedSeconds%60;return"".concat(t,"m ").concat(a,"s")},isHoldDecision:function(){return this.result&&"HOLD"===this.result.decision},decisionClass:function(){if(!this.result)return"";var t=this.result.decision;return"BUY"===t?"decision-buy":"SELL"===t?"decision-sell":"decision-hold"},decisionIcon:function(){if(!this.result)return"question";var t=this.result.decision;return"BUY"===t?"arrow-up":"SELL"===t?"arrow-down":"pause"},confidenceColor:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.confidence)||50;return a>=70?"#52c41a":a>=50?"#1890ff":"#faad14"},consensusBlock:function(){var t,a=null===(t=this.result)||void 0===t?void 0:t.consensus;return a&&"object"===(0,n.A)(a)?null==a.consensus_decision&&null==a.consensus_score?null:a:null},tradingPlan:function(){var t,a,s,e,i,n,r=(null===(t=this.result)||void 0===t?void 0:t.trading_plan)||{},o=null!==(a=r.entry_price)&&void 0!==a?a:r.entryPrice,l=null!==(s=null!==(e=r.stop_loss)&&void 0!==e?e:r.stopLoss)&&void 0!==s?s:r.loss_exit_price,c=null!==(i=null!==(n=r.take_profit)&&void 0!==n?n:r.takeProfit)&&void 0!==i?i:r.profit_target_price;return{entry_price:o,stop_loss:l,take_profit:c}},trendOutlookRaw:function(){var t,a;return(null===(t=this.result)||void 0===t?void 0:t.trend_outlook)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlook)||null},trendOutlookSummaryText:function(){var t,a,s=(null===(t=this.result)||void 0===t?void 0:t.trend_outlook_summary)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlookSummary);return s&&String(s).trim()?String(s).trim():""},trendOutlookBlocks:function(){var t=this,a=this.trendOutlookRaw;if(!a||"object"!==(0,n.A)(a))return[];var s=[{key:"next_24h",labelKey:"fastAnalysis.outlook24h"},{key:"next_3d",labelKey:"fastAnalysis.outlook3d"},{key:"next_1w",labelKey:"fastAnalysis.outlook1w"},{key:"next_1m",labelKey:"fastAnalysis.outlook1m"}];return s.map(function(s){var e=s.key,i=s.labelKey,n=a[e]||{};return{key:e,label:t.$t(i),trend:n.trend,score:n.score,strength:n.strength}}).filter(function(t){var s=a[t.key];return s&&"object"===(0,n.A)(s)&&(null!=s.trend||null!=s.score)})},stopLossHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.stopLossHintShort"):this.$t("fastAnalysis.stopLossHint")},takeProfitHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.takeProfitHintShort"):this.$t("fastAnalysis.takeProfitHint")},professionalIndicatorRows:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.indicators)||{},s=[],e=function(t,a,e){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";void 0!==e&&null!==e&&""!==e&&s.push({key:t,label:a,text:String(e),valueClass:i})},i=a.macd||{};if(null!=i.value&&e("macd_dif",this.$t("fastAnalysis.macdDif"),this.formatCompactNum(i.value)),null!=i.signal_line&&e("macd_dea",this.$t("fastAnalysis.macdDea"),this.formatCompactNum(i.signal_line)),null!=i.histogram){var n=Number(i.histogram),r=n>0?"bullish":n<0?"bearish":"";e("macd_hist",this.$t("fastAnalysis.macdHist"),this.formatCompactNum(i.histogram),r)}var o=a.moving_averages||{};null!=o.ma5&&e("ma5",this.$t("fastAnalysis.ma5Label"),"$"+this.formatPrice(o.ma5)),null!=o.ma10&&e("ma10",this.$t("fastAnalysis.ma10Label"),"$"+this.formatPrice(o.ma10)),null!=o.ma20&&e("ma20",this.$t("fastAnalysis.ma20Label"),"$"+this.formatPrice(o.ma20));var l=a.bollinger||{};null!=l.BB_upper&&e("bb_u",this.$t("fastAnalysis.bbUpper"),"$"+this.formatPrice(l.BB_upper)),null!=l.BB_middle&&e("bb_m",this.$t("fastAnalysis.bbMiddle"),"$"+this.formatPrice(l.BB_middle)),null!=l.BB_lower&&e("bb_l",this.$t("fastAnalysis.bbLower"),"$"+this.formatPrice(l.BB_lower)),null!=l.BB_width&&e("bb_w",this.$t("fastAnalysis.bbWidthPct"),this.formatNumber(l.BB_width,2)+"%");var c=a.levels||{};null!=c.pivot&&e("piv",this.$t("fastAnalysis.pivotStd"),"$"+this.formatPrice(c.pivot)),null!=c.s1&&e("s1",this.$t("fastAnalysis.levelS1"),"$"+this.formatPrice(c.s1)),null!=c.r1&&e("r1",this.$t("fastAnalysis.levelR1"),"$"+this.formatPrice(c.r1)),null!=c.s2&&e("s2",this.$t("fastAnalysis.levelS2"),"$"+this.formatPrice(c.s2)),null!=c.r2&&e("r2",this.$t("fastAnalysis.levelR2"),"$"+this.formatPrice(c.r2)),null!=c.swing_high&&e("sw_h",this.$t("fastAnalysis.swingHigh20"),"$"+this.formatPrice(c.swing_high)),null!=c.swing_low&&e("sw_l",this.$t("fastAnalysis.swingLow20"),"$"+this.formatPrice(c.swing_low));var d=a.volatility||{};if(null!=d.atr){var u=null!=d.pct?this.formatNumber(d.pct,2)+"% ATR/Price":"";e("atr14",this.$t("fastAnalysis.atr14Label"),"$"+this.formatPrice(d.atr)+(u?" · "+u:""))}var m=a.trading_levels||{};return null!=m.risk_reward_ratio&&Number(m.risk_reward_ratio)>0&&e("rr",this.$t("fastAnalysis.rrLongRef"),"1 : "+this.formatNumber(m.risk_reward_ratio,2)),null!=a.current_price&&e("cref",this.$t("fastAnalysis.refClose"),"$"+this.formatPrice(a.current_price)),s},insufficientCreditsError:function(){if(!this.error)return!1;var t=String(this.error);return t.includes("积分不足")||t.toLowerCase().includes("insufficient credits")},errorTitle:function(){return"warning"===this.errorTone?this.$t("fastAnalysis.analysisInProgressTitle"):this.insufficientCreditsError?this.$t("fastAnalysis.insufficientCredits"):this.$t("fastAnalysis.error")}}),watch:{result:function(){this.userFeedback=null},loading:{handler:function(t){t?this.startProgressTimer():this.stopProgressTimer()},immediate:!0}},mounted:function(){this.loading&&this.startProgressTimer()},beforeDestroy:function(){this.stopProgressTimer()},methods:{formatPrice:function(t){if(void 0===t||null===t)return"--";var a=parseFloat(t);return isNaN(a)?"--":a<1?a.toFixed(6):a<100?a.toFixed(4):a<1e4?a.toFixed(2):a.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatNumber:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(void 0===t||null===t)return"--";var s=parseFloat(t);return isNaN(s)?"--":s.toFixed(a)},formatConsensusNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?"--":a.toFixed(1)},formatAgreementPct:function(t){var a=Number(t);return Number.isNaN(a)?"--":"".concat(Math.round(100*a),"%")},formatProgress:function(t){var a=parseFloat(t)||0;return a%1===0?a.toFixed(0):a.toFixed(1)},formatOutlookTrend:function(t){var a=String(t||"HOLD").toUpperCase();return"BUY"===a?this.$t("fastAnalysis.outlookBull"):"SELL"===a?this.$t("fastAnalysis.outlookBear"):this.$t("fastAnalysis.outlookNeutral")},outlookTrendClass:function(t){var a=String(t||"").toUpperCase();return"BUY"===a?"trend-bull":"SELL"===a?"trend-bear":"trend-neutral"},formatCompactNum:function(t){var a=parseFloat(t);return Number.isNaN(a)?"--":0!==a&&Math.abs(a)<1e-4?a.toExponential(2):Math.abs(a)<1?a.toFixed(6):Math.abs(a)<100?a.toFixed(4):a.toFixed(2)},volumeRatioClass:function(t){var a=parseFloat(t);return Number.isNaN(a)?"":a>=1.5?"bullish":a<=.65?"bearish":""},getScoreColor:function(t){return t>=70?"#52c41a":t>=50?"#1890ff":t>=30?"#faad14":"#ff4d4f"},getScoreTagColor:function(t){return t>=70?"green":t>=50?"blue":t>=30?"orange":"red"},getRsiClass:function(t){return t<30?"oversold":t>70?"overbought":""},getMaTrendClass:function(t){return t?t.includes("uptrend")||t.includes("strong_uptrend")?"bullish":t.includes("downtrend")||t.includes("strong_downtrend")?"bearish":"":""},getVolatilityClass:function(t){return"high"===t?"high-volatility":"low"===t?"low-volatility":""},translateSignal:function(t){if(!t)return"--";var a="fastAnalysis.signal.".concat(t),s=this.$t(a);return s===a?t:s},translateTrend:function(t){if(!t)return"--";var a="fastAnalysis.trend.".concat(t),s=this.$t(a);return s===a?t:s},translateVolatility:function(t){if(!t)return"--";var a="fastAnalysis.volatilityLevel.".concat(t),s=this.$t(a);return s===a?t:s},submitFeedback:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(null!==(e=a.result)&&void 0!==e&&e.memory_id){s.n=1;break}return a.$message.warning(a.$t("fastAnalysis.feedbackUnavailable")||"反馈功能暂不可用,请刷新后重试"),s.a(2);case 1:return a.feedbackLoading=t,s.p=2,s.n=3,C({memory_id:a.result.memory_id,feedback:t});case 3:a.userFeedback=t,a.$message.success(a.$t("fastAnalysis.feedbackThanks")),s.n=5;break;case 4:s.p=4,s.v,a.$message.error(a.$t("fastAnalysis.feedbackFailed"));case 5:return s.p=5,a.feedbackLoading=null,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},startProgressTimer:function(){var t=this;this.stopProgressTimer(),this.progress=0,this.elapsedSeconds=0;var a=Date.now();this.mainTimer=window.setInterval(function(){t.elapsedSeconds=Math.floor((Date.now()-a)/1e3),t.progress<75?t.progress=Math.min(t.progress+1,75):t.progress<90?t.progress=Math.min(t.progress+.5,90):t.progress<95&&(t.progress=Math.min(t.progress+.2,95))},100)},stopProgressTimer:function(){this.mainTimer&&(window.clearInterval(this.mainTimer),this.mainTimer=null),this.progress=0,this.elapsedSeconds=0}}},T=$,x=s(845),M=(0,x.A)(T,S,w,!1,null,"03feb1fa",null),P=M.exports,F={name:"Analysis",props:{embedded:{type:Boolean,default:!1},presetSymbol:{type:String,default:""},autoAnalyzeSignal:{type:Number,default:0}},components:{FastAnalysisReport:P},data:function(){return{loadingMarket:!1,heatmapType:"crypto",marketData:{fearGreed:null,vix:null,dxy:null,indices:[],heatmap:{crypto:[],commodities:[],sectors:[],forex:[]},calendar:[]},loadingSentiment:!1,loadingIndices:!1,loadingHeatmap:!1,loadingCalendar:!1,watchlistPriceTimer:null,watchlistPrices:{},localUserInfo:{},loadingUserInfo:!1,userId:1,watchlist:[],loadingWatchlist:!1,showAddStockModal:!1,addingStock:!1,selectedSymbol:void 0,analyzing:!1,analysisResult:null,analysisError:null,analysisErrorTone:"error",showHistoryModal:!1,historyList:[],historyLoading:!1,historyPage:1,historyPageSize:20,historyTotal:0,currentTaskId:null,taskPollingTimer:null,taskPollingStartedAt:0,marketTypes:[],selectedMarketTab:"",symbolSearchKeyword:"",symbolSearchResults:[],searchingSymbols:!1,hotSymbols:[],loadingHotSymbols:!1,selectedSymbolForAdd:null,searchTimer:null,hasSearched:!1,positions:[],monitors:[],positionSummaryMap:{},showPositionModal:!1,showMonitorModal:!1,targetStockForOps:null,positionForm:{side:"long",quantity:null,entryPrice:null},monitorForm:{interval_min:240,notify_channels:[]},batchMode:!1,batchSelectedKeys:[],batchRunning:!1,batchProgress:0,showBatchScheduleModal:!1,batchScheduleForm:{interval_min:240,notify_channels:[]},showTaskDrawer:!1,showEditTaskModal:!1,editTaskLoading:!1,editTaskId:null,editTaskForm:{name:"",interval_min:240,notify_channels:[]}}},computed:(0,m.A)((0,m.A)((0,m.A)({},(0,h.L8)(["userInfo"])),(0,h.aH)({navTheme:function(t){return t.app.theme},primaryColor:function(t){return t.app.color||"#1890ff"}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isZhLocale:function(){return"zh-CN"===this.$i18n.locale},currentHeatmap:function(){return this.marketData.heatmap[this.heatmapType]||[]},storeUserInfo:function(){return this.userInfo||{}},mergedUserInfo:function(){return this.localUserInfo&&this.localUserInfo.email?this.localUserInfo:this.storeUserInfo},watchlistTotalPnl:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(Number(a.pnl)||0)},0)},watchlistPositionCount:function(){return Object.values(this.positionSummaryMap).filter(function(t){return t.quantity>0}).length},watchlistTaskCount:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(a.monitorCount||0)},0)},batchSelectedAll:function(){return this.watchlist&&this.watchlist.length>0&&this.batchSelectedKeys.length===this.watchlist.length},batchIndeterminate:function(){return this.batchSelectedKeys.length>0&&this.batchSelectedKeys.length<(this.watchlist||[]).length}}),created:function(){this.loadUserInfo(),this.loadMarketTypes(),this.loadWatchlist(),this.loadPositionData(),this.loadMarketData()},mounted:function(){this.startWatchlistPriceRefresh()},beforeDestroy:function(){this.watchlistPriceTimer&&clearInterval(this.watchlistPriceTimer),this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null)},methods:{stopTaskPolling:function(){this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null),this.currentTaskId=null,this.taskPollingStartedAt=0},pollTaskResult:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.currentTaskId){a.n=1;break}return a.a(2);case 1:return a.p=1,a.n=2,_({page:1,pagesize:50});case 2:if(s=a.v,s&&1===s.code&&s.data){a.n=3;break}return a.a(2);case 3:if(e=s.data.list||[],i=e.find(function(a){return Number(a.id)===Number(t.currentTaskId)}),i){a.n=4;break}return a.a(2);case 4:if(n=String(i.status||"").toLowerCase(),"completed"!==n){a.n=8;break}if(!i.full_result){a.n=5;break}t.analysisResult=i.full_result,a.n=6;break;case 5:return a.n=6,t.viewHistoryResult(i);case 6:return t.$message.success(t.$t("dashboard.analysis.message.analysisComplete")),a.n=7,t.refreshUserInfoFromServer();case 7:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 8:if("failed"!==n){a.n=10;break}return t.analysisError=i.error_message||t.$t("dashboard.analysis.message.analysisFailed"),t.analysisErrorTone="error",t.$message.error(t.analysisError),a.n=9,t.refreshUserInfoFromServer();case 9:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 10:Date.now()-t.taskPollingStartedAt>18e4&&(t.$message.warning(t.$t("fastAnalysis.analysisStillProcessing")||"任务仍在处理中,请稍后在历史记录查看"),t.analyzing=!1,t.stopTaskPolling());case 11:a.n=13;break;case 12:a.p=12,a.v;case 13:return a.a(2)}},a,null,[[1,12]])}))()},startTaskPolling:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:return a.stopTaskPolling(),a.currentTaskId=Number(t),a.taskPollingStartedAt=Date.now(),s.n=1,a.pollTaskResult();case 1:a.taskPollingTimer=setInterval(function(){a.pollTaskResult()},2500);case 2:return s.a(2)}},s)}))()},watchlistSelectLabel:function(t){if(!t)return"";var a=(t.symbol||"").trim(),s=(t.name||"").trim();return s&&s!==a?"".concat(a," · ").concat(s):a},filterSymbolOption:function(t,a){var s,e=(null===(s=a.componentOptions)||void 0===s?void 0:s.propsData)||{},i=e.value||"";if("__add_stock_option__"===i)return!0;var n=(t||"").toLowerCase(),r=(e.label||"").toString().toLowerCase();return i.toLowerCase().includes(n)||r&&r.includes(n)},handleSymbolChange:function(t){var a=this;if("__add_stock_option__"===t)return this.showAddStockModal=!0,void this.$nextTick(function(){a.selectedSymbol=void 0});this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",t)},selectWatchlistItem:function(t){this.selectedSymbol="".concat(t.market,":").concat(t.symbol),this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",this.selectedSymbol)},hasMonitorForStock:function(t){if(!t)return!1;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!!(s&&s.monitorCount>0)},getMonitorMeta:function(t){if(!t)return null;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!s||s.monitorCount<=0?null:{activeCount:s.activeMonitorCount||0,nextRunAtText:s.nextRunAtText||""}},getPnlBarStyle:function(t){var a=Math.abs(Number((null===t||void 0===t?void 0:t.pnlPercent)||0)),s=Math.min(100,Math.max(4,a));return{width:"".concat(s,"%")}},_displayDateTimeLocaleOptions:function(){var t=String(this.storeUserInfo&&this.storeUserInfo.timezone||"").trim(),a={year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};if(!t)return a;try{return Intl.DateTimeFormat(void 0,{timeZone:t}).format(new Date),(0,m.A)((0,m.A)({},a),{},{timeZone:t})}catch(s){return a}},_parseInstantForDisplay:function(t){if(t=String(t||"").trim(),!t)return null;var a=/[zZ]$/.test(t)||/[+-]\d{2}:?\d{2}$/.test(t);if(!a){var s=t.replace(" ","T");t=s.endsWith("Z")?s:"".concat(s,"Z")}var e=new Date(t);return Number.isNaN(e.getTime())?null:e},_formatNextRunText:function(t){try{var a=this._parseInstantForDisplay(t);return a?a.toLocaleString(void 0,this._displayDateTimeLocaleOptions()):""}catch(s){return""}},buildPositionSummary:function(){var t=this,a={},s=Array.isArray(this.positions)?this.positions:[],e=Array.isArray(this.monitors)?this.monitors:[],i=new Set,n={};s.forEach(function(t){n[Number(t.id)]="".concat(t.market,":").concat(t.symbol)}),e.forEach(function(s){var e=Array.isArray(s.position_ids)?s.position_ids:[];e.forEach(function(t){return i.add(Number(t))});var r=!!s.is_active,o=s.next_run_at||"";e.forEach(function(s){var e=n[Number(s)];e&&(a[e]||(a[e]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[e].monitorCount+=1,r&&(a[e].activeMonitorCount+=1),!a[e].nextRunAtText&&o&&(a[e].nextRunAtText=t._formatNextRunText(o)))})}),s.forEach(function(t){var s="".concat(t.market,":").concat(t.symbol),e=Number(t.quantity||0),n=Number(t.entry_price||0);a[s]||(a[s]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[s].quantity+=e,a[s].weightedEntry+=e*n,a[s].pnl+=Number(t.pnl||0),a[s].marketValue+=Number(t.market_value||0),i.has(Number(t.id))&&(a[s].monitorCount+=1)}),Object.keys(a).forEach(function(t){var s=a[t];s.avgEntry=s.quantity>0?s.weightedEntry/s.quantity:0;var e=s.quantity>0?s.weightedEntry:0;s.pnlPercent=e>0?s.pnl/e*100:0}),this.positionSummaryMap=a},toggleStockMonitor:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r,o,l;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(e="".concat(t.market,":").concat(t.symbol),i=(a.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),0!==i.length){s.n=1;break}return s.a(2);case 1:if(n=(a.monitors||[]).filter(function(t){var a=Array.isArray(t.position_ids)?t.position_ids.map(function(t){return Number(t)}):[];return a.some(function(t){return i.includes(t)})}),0!==n.length){s.n=2;break}return s.a(2);case 2:return r=!n.some(function(t){return!!t.is_active}),s.p=3,s.n=4,Promise.all(n.map(function(t){return(0,y.sk)(t.id,{is_active:r})}));case 4:return a.$message.success(r?a.$t("aiAssetAnalysis.monitor.enabled")||"已启用任务":a.$t("aiAssetAnalysis.monitor.disabled")||"已暂停任务"),s.n=5,a.loadPositionData();case 5:s.n=7;break;case 6:s.p=6,l=s.v,a.$message.error((null===l||void 0===l||null===(o=l.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===l||void 0===l?void 0:l.message)||"Toggle monitor failed");case 7:return s.a(2)}},s,null,[[3,6]])}))()},loadPositionData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,Promise.all([(0,y.Dt)(),(0,y.w1)()]);case 1:s=a.v,e=(0,c.A)(s,2),i=e[0],n=e[1],t.positions=i&&1===i.code&&i.data||[],t.monitors=n&&1===n.code&&n.data||[],t.buildPositionSummary(),a.n=3;break;case 2:a.p=2,a.v,t.positions=[],t.monitors=[],t.positionSummaryMap={};case 3:return a.a(2)}},a,null,[[0,2]])}))()},openPositionModal:function(t){this.targetStockForOps=t;var a="".concat(t.market,":").concat(t.symbol),s=(this.positions||[]).find(function(t){return"".concat(t.market,":").concat(t.symbol)===a});if(s){var e=Number(s.quantity||0);this.positionForm={side:s.side||(e<0?"short":"long"),quantity:Math.abs(e)||null,entryPrice:Number(s.entry_price||0)||null}}else this.positionForm={side:"long",quantity:null,entryPrice:null};this.showPositionModal=!0},savePosition:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:if(e=Number(t.positionForm.quantity||0),i=Number(t.positionForm.entryPrice||0),e>0&&i>0){a.n=2;break}return t.$message.warning(t.$i18n&&"zh-CN"===t.$i18n.locale?"请输入有效的数量和买入单价":"Please enter valid quantity and entry price"),a.a(2);case 2:return a.p=2,a.n=3,(0,y.Ps)({market:s.market,symbol:s.symbol,name:s.name||s.symbol,side:t.positionForm.side||"long",quantity:e,entry_price:i});case 3:if(n=a.v,!n||1!==n.code){a.n=5;break}return t.$message.success(t.$t("portfolio.positions.add")+" OK"),t.showPositionModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===n||void 0===n?void 0:n.msg)||"Add position failed");case 6:a.n=8;break;case 7:a.p=7,o=a.v,t.$message.error((null===o||void 0===o||null===(r=o.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===o||void 0===o?void 0:o.message)||"Add position failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},openMonitorModal:function(t){this.targetStockForOps=t,this.monitorForm={interval_min:240,notify_channels:[]},this.showMonitorModal=!0},saveMonitorTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,c;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:return e="".concat(s.market,":").concat(s.symbol),i=t.monitorForm.interval_min,n=t.monitorForm.notify_channels||[],r=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(s.symbol,"-").concat(i,"m"),position_ids:r,monitor_type:"ai",config:{run_interval_minutes:i,symbol:s.symbol,market:s.market,language:t.$store.getters.lang||t.$i18n.locale||"en-US"},notification_config:{channels:n},is_active:!0});case 3:if(o=a.v,!o||1!==o.code){a.n=5;break}return t.$message.success(t.$t("aiAssetAnalysis.monitor.created")),t.showMonitorModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||"Create monitor failed");case 6:a.n=8;break;case 7:a.p=7,c=a.v,t.$message.error((null===c||void 0===c||null===(l=c.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.msg)||(null===c||void 0===c?void 0:c.message)||"Create monitor failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},toggleBatchMode:function(){this.batchMode=!this.batchMode,this.batchMode||(this.batchSelectedKeys=[])},onBatchSelectAll:function(t){t.target.checked?this.batchSelectedKeys=(this.watchlist||[]).map(function(t){return"".concat(t.market,":").concat(t.symbol)}):this.batchSelectedKeys=[]},onBatchItemToggle:function(t,a){var s="".concat(t.market,":").concat(t.symbol);a.target.checked?this.batchSelectedKeys.includes(s)||this.batchSelectedKeys.push(s):this.batchSelectedKeys=this.batchSelectedKeys.filter(function(t){return t!==s})},openBatchScheduleModal:function(){0!==this.batchSelectedKeys.length&&(this.batchScheduleForm={interval_min:240,notify_channels:[]},this.showBatchScheduleModal=!0)},saveBatchSchedule:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,u,m,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=(0,l.A)(t.batchSelectedKeys),0!==s.length){a.n=1;break}return a.a(2);case 1:t.batchRunning=!0,e=t.batchScheduleForm.interval_min,i=t.batchScheduleForm.notify_channels||[],n=0,u=(0,o.A)(s),a.p=2,h=(0,d.A)().m(function a(){var s,r,o,l,u,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=m.value,r=s.split(":"),o=(0,c.A)(r,2),l=o[0],u=o[1],h=(t.watchlist||[]).find(function(t){return t.market===l&&t.symbol===u}),h){a.n=1;break}return a.a(2,1);case 1:return p=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===s}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(u,"-").concat(e,"m"),position_ids:p,monitor_type:"ai",config:{run_interval_minutes:e,symbol:u,market:l,language:t.$store.getters.lang||t.$i18n.locale||"en-US"},notification_config:{channels:i},is_active:!0});case 3:n++,a.n=5;break;case 4:a.p=4,a.v;case 5:return a.a(2)}},a,null,[[2,4]])}),u.s();case 3:if((m=u.n()).done){a.n=6;break}return a.d((0,r.A)(h()),4);case 4:if(!a.v){a.n=5;break}return a.a(3,5);case 5:a.n=3;break;case 6:a.n=8;break;case 7:a.p=7,p=a.v,u.e(p);case 8:return a.p=8,u.f(),a.f(8);case 9:return t.batchRunning=!1,t.showBatchScheduleModal=!1,t.batchMode=!1,t.batchSelectedKeys=[],a.n=10,t.loadPositionData();case 10:t.$message.success(t.$t("aiAssetAnalysis.batch.done")+" (".concat(n,"/").concat(s.length,")"));case 11:return a.a(2)}},a,null,[[2,7,8,9]])}))()},formatIntervalText:function(t){return t>=1440?"".concat(Math.round(t/1440),"d"):t>=60?"".concat(Math.round(t/60),"h"):"".concat(t,"m")},handleToggleTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.sk)(t.id,{is_active:!t.is_active});case 1:return a.$message.success(t.is_active?a.$t("aiAssetAnalysis.tasks.paused"):a.$t("aiAssetAnalysis.tasks.resumed")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},handleEditTask:function(t){this.editTaskId=t.id,this.editTaskForm={name:t.name||"",interval_min:t.config&&t.config.run_interval_minutes||240,notify_channels:t.notification_config&&t.notification_config.channels||[]},this.showEditTaskModal=!0},saveEditTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.editTaskId){a.n=1;break}return a.a(2);case 1:return t.editTaskLoading=!0,a.p=2,a.n=3,(0,y.sk)(t.editTaskId,{name:t.editTaskForm.name,config:{run_interval_minutes:t.editTaskForm.interval_min},notification_config:{channels:t.editTaskForm.notify_channels}});case 3:return t.$message.success("OK"),t.showEditTaskModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:a.p=5,e=a.v,t.$message.error((null===e||void 0===e||null===(s=e.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.msg)||(null===e||void 0===e?void 0:e.message)||"Failed");case 6:return a.p=6,t.editTaskLoading=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},handleDeleteTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.ei)(t.id);case 1:return a.$message.success(a.$t("aiAssetAnalysis.tasks.deleted")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},loadMarketData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){return(0,d.A)().w(function(a){while(1)switch(a.n){case 0:t.loadingMarket=!0,t.loadSentimentData(),t.loadIndicesData(),t.loadHeatmapData(),t.loadCalendarData();case 1:return a.a(2)}},a)}))()},loadSentimentData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingSentiment=!0,a.p=1,a.n=2,(0,A.EF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.fearGreed=(null===(e=s.data.fear_greed)||void 0===e?void 0:e.value)||null,t.marketData.vix=(null===(i=s.data.vix)||void 0===i?void 0:i.value)||null,t.marketData.dxy=(null===(n=s.data.dxy)||void 0===n?void 0:n.value)||null),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingSentiment=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadIndicesData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingIndices=!0,a.p=1,a.n=2,(0,A.yI)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.indices=s.data.indices||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingIndices=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadHeatmapData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingHeatmap=!0,a.p=1,a.n=2,(0,A.f$)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.heatmap={crypto:s.data.crypto||[],commodities:s.data.commodities||[],sectors:s.data.sectors||[],forex:s.data.forex||[]}),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingHeatmap=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadCalendarData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingCalendar=!0,a.p=1,a.n=2,(0,A.kF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&(t.marketData.calendar=s.data||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingCalendar=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},checkAllLoaded:function(){this.loadingSentiment||this.loadingIndices||this.loadingHeatmap||this.loadingCalendar||(this.loadingMarket=!1)},getFearGreedClass:function(t){return t?t<=25?"extreme-fear":t<=45?"fear":t<=55?"neutral":t<=75?"greed":"extreme-greed":""},getVixLevel:function(t){return t?t<15?"low":t<25?"medium":"high":""},formatNum:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t||isNaN(t)?"--":Number(t).toFixed(a)},getHeatmapStyle:function(t){var a=parseFloat(t)||0,s=Math.min(Math.abs(a)/5,1),e=this.isDarkTheme;if(a>=0){var i=e?a>2?"#fff":"#4ade80":a>2?"#fff":"#166534";return{background:"rgba(34, 197, 94, ".concat(.15+.6*s,")"),color:i}}var n=e?a<-2?"#fff":"#f87171":a<-2?"#fff":"#991b1b";return{background:"rgba(239, 68, 68, ".concat(.15+.6*s,")"),color:n}},getCountryFlag:function(t){var a={US:"🇺🇸",CN:"🇨🇳",EU:"🇪🇺",JP:"🇯🇵",UK:"🇬🇧",DE:"🇩🇪",AU:"🇦🇺",CA:"🇨🇦"};return a[t]||"🌍"},formatCalendarDate:function(t){if(!t)return"";try{var a=new Date(t),s=new Date,e=new Date(s);if(e.setDate(e.getDate()+1),a.toDateString()===s.toDateString())return this.isZhLocale?"今天":"Today";if(a.toDateString()===e.toDateString())return this.isZhLocale?"明天":"Tmrw";var i=a.getMonth()+1,n=a.getDate();return"".concat(i,"/").concat(n)}catch(r){return t}},formatPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1e3?t.toFixed(0):t.toFixed(2):"--"},formatHeatmapPrice:function(t){return t?t>=1e4?"$"+(t/1e3).toFixed(1)+"K":t>=1e3?"$"+t.toFixed(0):t>=1?"$"+t.toFixed(2):"$"+t.toFixed(4):""},getHeatmapName:function(t){return"sectors"===this.heatmapType||"commodities"===this.heatmapType||"forex"===this.heatmapType?this.isZhLocale?t.name_cn||t.name:t.name_en||t.name:t.name},getImpactClass:function(t){return t.actual_impact||t.expected_impact||"neutral"},getMarketColor:function(t){var a={USStock:"green",CNStock:"blue",HKStock:"geekblue",Crypto:"purple",Forex:"gold",Futures:"cyan"};return a[t]||"default"},getCurrencySymbol:function(t){return"$"},formatCreditNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?String(t):Number.isInteger(a)?String(a):a.toFixed(2)},refreshUserInfoFromServer:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.ug)();case 1:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data)),a.n=3;break;case 2:a.p=2,a.v;case 3:return a.a(2)}},a,null,[[0,2]])}))()},startFastAnalysis:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,u,h,p,v,y,f,b,_,k,C;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(!t.analyzing){a.n=1;break}return a.a(2);case 1:if(t.selectedSymbol){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.message.selectSymbol")),a.a(2);case 2:return t.analyzing=!0,t.analysisError=null,t.analysisErrorTone="error",s=t.selectedSymbol.split(":"),e=(0,c.A)(s,2),i=e[0],n=e[1],r=t.$store.getters.lang||"zh-CN",o=!1,a.p=3,a.n=4,g({market:i,symbol:n,language:r,timeframe:"1D",async_submit:!0});case 4:if(l=a.v,!l||1!==l.code||!l.data){a.n=9;break}if("processing"!==l.data.status){a.n=6;break}return o=!0,u=l.data.remaining_credits,void 0!==u&&null!==u?t.$message.success(t.$t("fastAnalysis.analysisSubmittedWithCredits",{remaining:t.formatCreditNum(u)})):t.$message.success(t.$t("fastAnalysis.analysisSubmitted")||"任务已提交,正在分析中"),a.n=5,t.startTaskPolling(l.data.task_id);case 5:a.n=7;break;case 6:h=(0,m.A)({},l.data),delete h.credits_charged,delete h.remaining_credits,t.analysisResult=h,p=l.data.remaining_credits,void 0!==p&&null!==p?t.$message.success(t.$t("fastAnalysis.analysisCompleteWithCredits",{remaining:t.formatCreditNum(p)})):t.$message.success(t.$t("dashboard.analysis.message.analysisComplete"));case 7:return a.n=8,t.refreshUserInfoFromServer();case 8:a.n=10;break;case 9:throw new Error((null===l||void 0===l?void 0:l.msg)||"分析失败");case 10:a.n=12;break;case 11:a.p=11,C=a.v,f=null===C||void 0===C||null===(v=C.response)||void 0===v?void 0:v.status,b=(null===C||void 0===C||null===(y=C.response)||void 0===y?void 0:y.data)||{},_=b.msg,k=b.data,429===f&&k&&k.in_progress?(t.analysisErrorTone="warning",t.analysisError=t.$t("fastAnalysis.analysisInProgress"),t.$message.warning(t.analysisError)):400===f&&"Insufficient credits"===_?(t.analysisError=t.$t("fastAnalysis.insufficientCreditsDetail",{required:t.formatCreditNum(null===k||void 0===k?void 0:k.required),current:t.formatCreditNum(null===k||void 0===k?void 0:k.current),shortage:t.formatCreditNum(null===k||void 0===k?void 0:k.shortage)}),t.$message.error(t.analysisError)):(t.analysisError=_||(null===C||void 0===C?void 0:C.message)||t.$t("dashboard.analysis.message.analysisFailed"),t.$message.error(t.analysisError));case 12:return a.p=12,o||(t.analyzing=!1),a.f(12);case 13:return a.a(2)}},a,null,[[3,11,12,13]])}))()},loadHistoryList:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,_({page:t.historyPage,pagesize:t.historyPageSize});case 2:s=a.v,s&&1===s.code&&s.data&&(t.historyList=s.data.list||[],t.historyTotal=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("dashboard.analysis.message.loadHistoryFailed")||"加载历史记录失败");case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},viewHistoryResult:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r;return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:if("processing"!==(t.status||"").toLowerCase()){s.n=1;break}return a.$message.info(a.$t("fastAnalysis.analysisStillProcessing")||"该任务仍在处理中,请稍后刷新历史记录"),s.a(2);case 1:if(!t.full_result){s.n=2;break}return a.analysisResult=t.full_result,a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1,s.a(2);case 2:e=Number(t.price)||0,i=String(t.decision||"HOLD").toUpperCase(),n=null,r=null,e>0&&("SELL"===i?(n=1.05*e,r=.95*e):"BUY"===i&&(n=.95*e,r=1.05*e)),a.analysisResult={decision:t.decision,confidence:t.confidence,summary:t.summary,market_data:{current_price:t.price,change_24h:0},trading_plan:{entry_price:t.price,stop_loss:n,take_profit:r},scores:t.scores||{},reasons:t.reasons||[],risks:[],indicators:t.indicators||{},memory_id:t.id,analysis_time_ms:0},a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1;case 3:return s.a(2)}},s)}))()},deleteHistoryItem:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,k(t.id);case 1:e=s.v,e&&1===e.code?(a.$message.success(a.$t("dashboard.analysis.message.deleteSuccess")),a.loadHistoryList()):a.$message.error((null===e||void 0===e?void 0:e.msg)||a.$t("dashboard.analysis.message.deleteFailed")),s.n=3;break;case 2:s.p=2,s.v,a.$message.error(a.$t("dashboard.analysis.message.deleteFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},formatTime:function(t){if(!t)return"-";var a=new Date(1e3*t);return Number.isNaN(a.getTime())?"-":a.toLocaleString(void 0,this._displayDateTimeLocaleOptions())},formatIsoTime:function(t){var a=this._parseInstantForDisplay(t);return a?a.toLocaleString(void 0,this._displayDateTimeLocaleOptions()):"-"},getStatusColor:function(t){var a={pending:"orange",processing:"blue",completed:"green",failed:"red"};return a[t]||"default"},getStatusText:function(t){var a={pending:"dashboard.analysis.status.pending",processing:"dashboard.analysis.status.processing",completed:"dashboard.analysis.status.completed",failed:"dashboard.analysis.status.failed"},s=a[t];return s?this.$t(s):t},loadUserInfo:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.loadingUserInfo=!0,a.p=1,!t.storeUserInfo||!t.storeUserInfo.email){a.n=2;break}return t.localUserInfo=t.storeUserInfo,t.userId=t.storeUserInfo.id,t.loadingUserInfo=!1,t.loadWatchlist(),a.a(2);case 2:return a.n=3,(0,p.ug)();case 3:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data),t.loadWatchlist()),a.n=5;break;case 4:a.p=4,a.v;case 5:return a.p=5,t.loadingUserInfo=!1,a.f(5);case 6:return a.a(2)}},a,null,[[1,4,5,6]])}))()},loadWatchlist:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.userId){a.n=1;break}return a.a(2);case 1:return t.loadingWatchlist=!0,a.p=2,a.n=3,(0,v.Qo)({userid:t.userId});case 3:if(s=a.v,!s||1!==s.code||!s.data){a.n=4;break}return t.watchlist=s.data.map(function(t){return(0,m.A)((0,m.A)({},t),{},{price:0,change:0,changePercent:0})}),a.n=4,t.loadWatchlistPrices();case 4:a.n=6;break;case 5:a.p=5,a.v;case 6:return a.p=6,t.loadingWatchlist=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},loadWatchlistPrices:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.watchlist&&0!==t.watchlist.length){a.n=1;break}return a.a(2);case 1:return a.p=1,s=t.watchlist.map(function(t){return{market:t.market,symbol:t.symbol}}),a.n=2,(0,v.ms)({watchlist:s});case 2:e=a.v,e&&1===e.code&&e.data&&(i={},n={},e.data.forEach(function(t){i["".concat(t.market,"-").concat(t.symbol)]=t,n["".concat(t.market,":").concat(t.symbol)]={price:t.price||0,change:t.changePercent||0}}),t.watchlistPrices=n,t.watchlist=t.watchlist.map(function(t){var a="".concat(t.market,"-").concat(t.symbol),s=i[a];return s?(0,m.A)((0,m.A)({},t),{},{price:s.price||0,change:s.change||0,changePercent:s.changePercent||0}):t})),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},startWatchlistPriceRefresh:function(){var t=this;this.watchlistPriceTimer=setInterval(function(){t.watchlist&&t.watchlist.length>0&&t.loadWatchlistPrices()},3e4),this.watchlist&&this.watchlist.length>0&&this.loadWatchlistPrices()},handleAddStock:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s="",e="",i="",!t.selectedSymbolForAdd){a.n=1;break}s=t.selectedSymbolForAdd.market,e=t.selectedSymbolForAdd.symbol.toUpperCase(),i=t.selectedSymbolForAdd.name||"",a.n=4;break;case 1:if(!t.symbolSearchKeyword||!t.symbolSearchKeyword.trim()){a.n=3;break}if(t.selectedMarketTab){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:s=t.selectedMarketTab,e=t.symbolSearchKeyword.trim().toUpperCase(),i="",a.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),a.a(2);case 4:return t.addingStock=!0,a.p=5,a.n=6,(0,v.dp)({userid:t.userId,market:s,symbol:e,name:i});case 6:if(n=a.v,!n||1!==n.code){a.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),t.handleCloseAddStockModal(),a.n=7,t.loadWatchlist();case 7:a.n=9;break;case 8:t.$message.error((null===n||void 0===n?void 0:n.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:a.n=11;break;case 10:a.p=10,l=a.v,o=(null===l||void 0===l||null===(r=l.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===l||void 0===l?void 0:l.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(o);case 11:return a.p=11,t.addingStock=!1,a.f(11);case 12:return a.a(2)}},a,null,[[5,10,11,12]])}))()},handleCloseAddStockModal:function(){this.showAddStockModal=!1,this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.selectedMarketTab=this.marketTypes.length>0?this.marketTypes[0].value:""},handleMarketTabChange:function(t){this.selectedMarketTab=t,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.selectedSymbolForAdd=null,this.hasSearched=!1,this.loadHotSymbols(t)},handleSymbolSearchInput:function(t){var a=this,s=t.target.value;if(this.symbolSearchKeyword=s,this.searchTimer&&clearTimeout(this.searchTimer),!s||""===s.trim())return this.symbolSearchResults=[],this.hasSearched=!1,void(this.selectedSymbolForAdd=null);this.searchTimer=setTimeout(function(){a.searchSymbolsInModal(s)},500)},handleSearchOrInput:function(t){t&&t.trim()&&(this.selectedMarketTab?this.symbolSearchResults.length>0||(this.hasSearched&&0===this.symbolSearchResults.length?this.handleDirectAdd():this.searchSymbolsInModal(t)):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},searchSymbolsInModal:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t&&""!==t.trim()){s.n=1;break}return a.symbolSearchResults=[],a.hasSearched=!1,s.a(2);case 1:if(a.selectedMarketTab){s.n=2;break}return a.$message.warning(a.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),s.a(2);case 2:return a.searchingSymbols=!0,a.hasSearched=!0,s.p=3,s.n=4,(0,v._3)({market:a.selectedMarketTab,keyword:t.trim(),limit:20});case 4:e=s.v,e&&1===e.code&&e.data&&e.data.length>0?a.symbolSearchResults=e.data:(a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""}),s.n=6;break;case 5:s.p=5,s.v,a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""};case 6:return s.p=6,a.searchingSymbols=!1,s.f(6);case 7:return s.a(2)}},s,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.symbolSearchKeyword&&this.symbolSearchKeyword.trim()?this.selectedMarketTab?this.selectedSymbolForAdd={market:this.selectedMarketTab,symbol:this.symbolSearchKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},selectSymbol:function(t){this.selectedSymbolForAdd={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},loadHotSymbols:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t||(t=a.selectedMarketTab||(a.marketTypes.length>0?a.marketTypes[0].value:"")),t){s.n=1;break}return s.a(2);case 1:return a.loadingHotSymbols=!0,s.p=2,s.n=3,(0,v.z6)({market:t,limit:10});case 3:e=s.v,e&&1===e.code&&e.data?a.hotSymbols=e.data:a.hotSymbols=[],s.n=5;break;case 4:s.p=4,s.v,a.hotSymbols=[];case 5:return s.p=5,a.loadingHotSymbols=!1,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},removeFromWatchlist:function(t){var a=arguments,s=this;return(0,u.A)((0,d.A)().m(function e(){var i,r,o;return(0,d.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(s.userId){e.n=1;break}return e.a(2);case 1:return i="object"===(0,n.A)(t)?t.symbol:t,r="object"===(0,n.A)(t)?t.market:a[1],e.p=2,e.n=3,(0,v.mk)({userid:s.userId,symbol:i,market:r});case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return s.$message.success(s.$t("dashboard.analysis.message.removeStockSuccess")),e.n=4,s.loadWatchlist();case 4:e.n=6;break;case 5:s.$message.error((null===o||void 0===o?void 0:o.msg)||s.$t("dashboard.analysis.message.removeStockFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,s.$message.error(s.$t("dashboard.analysis.message.removeStockFailed"));case 8:return e.a(2)}},e,null,[[2,7]])}))()},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},formatNumber:function(t){return"string"===typeof t?t:t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},loadMarketTypes:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,v.iO)();case 1:s=a.v,s&&1===s.code&&s.data&&Array.isArray(s.data)?t.marketTypes=s.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"CNStock",i18nKey:"dashboard.analysis.market.CNStock"},{value:"HKStock",i18nKey:"dashboard.analysis.market.HKStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],a.n=3;break;case 2:a.p=2,a.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"CNStock",i18nKey:"dashboard.analysis.market.CNStock"},{value:"HKStock",i18nKey:"dashboard.analysis.market.HKStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:t.marketTypes.length>0&&!t.selectedMarketTab&&(t.selectedMarketTab=t.marketTypes[0].value);case 4:return a.a(2)}},a,null,[[0,2]])}))()}},watch:{presetSymbol:function(t){t&&t!==this.selectedSymbol&&(this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error")},autoAnalyzeSignal:function(t){var a=this;t&&(this.presetSymbol&&this.presetSymbol!==this.selectedSymbol&&(this.selectedSymbol=this.presetSymbol),this.$nextTick(function(){a.startFastAnalysis()}))},showAddStockModal:function(t){t?(this.marketTypes.length>0&&!this.selectedMarketTab&&(this.selectedMarketTab=this.marketTypes[0].value),this.selectedMarketTab&&this.loadHotSymbols(this.selectedMarketTab)):(this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.searchTimer&&(clearTimeout(this.searchTimer),this.searchTimer=null))}}},N=F,I=(0,x.A)(N,e,i,!1,null,"0fce93ef",null),D=I.exports},44146:function(t,a,s){s.d(a,{EF:function(){return l},f$:function(){return r},kF:function(){return o},r9:function(){return c},yI:function(){return n}});var e=s(75769),i="/api/global-market";function n(){return(0,e.Ay)({url:"".concat(i,"/overview"),method:"get"})}function r(){return(0,e.Ay)({url:"".concat(i,"/heatmap"),method:"get"})}function o(){return(0,e.Ay)({url:"".concat(i,"/calendar"),method:"get"})}function l(){return(0,e.Ay)({url:"".concat(i,"/sentiment"),method:"get"})}function c(t){return(0,e.Ay)({url:"".concat(i,"/opportunities"),method:"get",params:t})}},35038:function(t,a,s){s.d(a,{Qo:function(){return n},_3:function(){return d},dp:function(){return r},iO:function(){return c},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var e=s(75769),i={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function n(t){return(0,e.Ay)({url:i.GetWatchlist,method:"get",params:t})}function r(t){return(0,e.Ay)({url:i.AddWatchlist,method:"post",data:t})}function o(t){return(0,e.Ay)({url:i.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,e.Ay)({url:i.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function c(){return(0,e.Ay)({url:i.GetMarketTypes,method:"get"})}function d(t){return(0,e.Ay)({url:i.SearchSymbols,method:"get",params:t})}function u(t){return(0,e.Ay)({url:i.GetHotSymbols,method:"get",params:t})}},24364:function(t,a,s){s.d(a,{$p:function(){return o},Dt:function(){return i},Iw:function(){return v},Ps:function(){return n},Xg:function(){return r},_3:function(){return g},aU:function(){return h},bC:function(){return l},cg:function(){return y},ei:function(){return m},f:function(){return b},iO:function(){return _},qS:function(){return f},qu:function(){return p},sk:function(){return u},w1:function(){return c},yr:function(){return d}});var e=s(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function n(t){return(0,e.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function r(t,a){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:a})}function o(t){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"get"})}function d(t){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function u(t,a){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:a})}function m(t){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function h(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:a})}function p(){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function y(t,a){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:a})}function f(t){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function b(){return(0,e.Ay)({url:"/api/portfolio/groups",method:"get"})}function g(t){return(0,e.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function _(){return(0,e.Ay)({url:"/api/market/types",method:"get"})}},21560:function(t,a,s){s.d(a,{A:function(){return i}});var e=s(44735);function i(t){if(null!=t){var a=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],s=0;if(a)return a.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&s>=t.length&&(t=void 0),{value:t&&t[s++],done:!t}}}}throw new TypeError((0,e.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/37.4b1f5240.js b/frontend/dist/js/37.4b1f5240.js new file mode 100644 index 0000000..2f4b82f --- /dev/null +++ b/frontend/dist/js/37.4b1f5240.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[37],{40037:function(t,e,a){a.r(e),a.d(e,{default:function(){return Lt}});a(74423);var s=function(){var t,e=this,a=e._self._c;return a("div",{staticClass:"trading-assistant",class:{"theme-dark":e.isDarkTheme}},[e.showAssistantGuide?a("div",{staticClass:"assistant-guide-bar"},[a("div",{staticClass:"assistant-guide-copy"},[a("div",{staticClass:"assistant-guide-eyebrow"},[e._v(e._s(e.$t("trading-assistant.guide.eyebrow")))]),a("div",{staticClass:"assistant-guide-title"},[e._v(e._s(e.$t("trading-assistant.guide.title")))]),a("div",{staticClass:"assistant-guide-desc"},[e._v(e._s(e.$t("trading-assistant.guide.desc")))])]),a("div",{staticClass:"assistant-guide-steps"},[a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("1")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step1Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step1Desc")))])])]),a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("2")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step2Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step2Desc")))])])]),a("div",{staticClass:"assistant-step-card"},[a("div",{staticClass:"assistant-step-index"},[e._v("3")]),a("div",{staticClass:"assistant-step-body"},[a("div",{staticClass:"assistant-step-title"},[e._v(e._s(e.$t("trading-assistant.guide.step3Title")))]),a("div",{staticClass:"assistant-step-desc"},[e._v(e._s(e.$t("trading-assistant.guide.step3Desc")))])])])]),a("div",{staticClass:"assistant-guide-actions"},[a("a-button",{on:{click:e.goToStrategyTab}},[a("a-icon",{attrs:{type:"appstore"}}),e._v(" "+e._s(e.$t("trading-assistant.guide.secondary"))+" ")],1),a("a-button",{attrs:{type:"primary"},on:{click:e.openCreateStrategyFromGuide}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.guide.primary"))+" ")],1),a("a-button",{staticClass:"assistant-guide-close",on:{click:e.dismissAssistantGuide}},[a("a-icon",{attrs:{type:"close"}})],1)],1)]):e._e(),a("a-tabs",{staticClass:"top-level-tabs",attrs:{animated:!1},model:{value:e.topTab,callback:function(t){e.topTab=t},expression:"topTab"}},[a("a-tab-pane",{key:"overview",attrs:{tab:e.$t("trading-assistant.tabs.overview")}},["overview"===e.topTab?a("dashboard-overview",{attrs:{"hide-setup-guide":!0}}):e._e()],1),a("a-tab-pane",{key:"strategy",attrs:{tab:e.$t("trading-assistant.tabs.strategyManage")}},[a("a-row",{staticClass:"strategy-layout",attrs:{gutter:24}},[a("a-col",{staticClass:"strategy-list-col",attrs:{xs:24,sm:24,md:10,lg:8,xl:8}},[a("a-card",{staticClass:"strategy-list-card",attrs:{bordered:!1}},[a("div",{staticClass:"card-title",attrs:{slot:"title"},slot:"title"},[a("span",[e._v(e._s(e.$t("trading-assistant.strategyList")))]),a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1),a("div",{staticClass:"group-mode-switch"},[a("span",{staticClass:"group-mode-label"},[e._v(e._s(e.$t("trading-assistant.groupBy"))+":")]),a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.groupByMode,callback:function(t){e.groupByMode=t},expression:"groupByMode"}},[a("a-radio-button",{attrs:{value:"strategy"}},[a("a-icon",{attrs:{type:"folder"}}),e._v(" "+e._s(e.$t("trading-assistant.groupByStrategy"))+" ")],1),a("a-radio-button",{attrs:{value:"symbol"}},[a("a-icon",{attrs:{type:"stock"}}),e._v(" "+e._s(e.$t("trading-assistant.groupBySymbol"))+" ")],1)],1)],1),a("a-spin",{attrs:{spinning:e.loading}},[e.loading||0!==e.strategies.length?a("div",{staticClass:"strategy-grouped-list"},[e._l(e.groupedStrategies.groups,function(t){return a("div",{key:t.id,staticClass:"strategy-group"},[a("div",{staticClass:"strategy-group-header",on:{click:function(a){return e.toggleGroup(t.id)}}},[a("div",{staticClass:"group-header-left"},[a("a-icon",{staticClass:"collapse-icon",attrs:{type:e.collapsedGroups[t.id]?"right":"down"}}),a("a-icon",{staticClass:"group-icon",attrs:{type:"symbol"===e.groupByMode?"stock":"folder"}}),a("span",{staticClass:"group-name"},[e._v(e._s(t.baseName))]),a("a-tag",{attrs:{size:"small",color:"blue"}},[e._v(e._s(t.strategies.length)+" "+e._s("symbol"===e.groupByMode?e.$t("trading-assistant.strategyCount"):e.$t("trading-assistant.symbolCount")))])],1),a("div",{staticClass:"group-header-right",on:{click:function(t){t.stopPropagation()}}},[t.runningCount>0?a("span",{staticClass:"group-status running"},[e._v(" "+e._s(t.runningCount)+" "+e._s(e.$t("trading-assistant.status.running"))+" ")]):e._e(),t.stoppedCount>0?a("span",{staticClass:"group-status stopped"},[e._v(" "+e._s(t.stoppedCount)+" "+e._s(e.$t("trading-assistant.status.stopped"))+" ")]):e._e(),a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleGroupMenuClick(s,t)}},slot:"overlay"},[a("a-menu-item",{key:"startAll"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startAll"))+" ")],1),a("a-menu-item",{key:"stopAll"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopAll"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"deleteAll",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteAll"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)]),a("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsedGroups[t.id],expression:"!collapsedGroups[group.id]"}],staticClass:"strategy-group-content"},e._l(t.strategies,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id},{"strategy-list-item--strategy-group":"strategy"===e.groupByMode}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{class:["strategy-name-wrapper",{"strategy-name-wrapper--grouped":"symbol"===e.groupByMode}]},["strategy"===e.groupByMode?[a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e(),"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e(),"script"===t.strategy_mode&&e.scriptTemplateKeyOf(t)?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(e.scriptTemplateLabel(e.scriptTemplateKeyOf(t)))+" ")]):e._e()]:[a("span",{staticClass:"info-item strategy-name-text"},[a("a-icon",{attrs:{type:"thunderbolt"}}),e._v(" "+e._s(t.displayInfo?t.displayInfo.strategyName:t.strategy_name)+" ")],1),t.displayInfo&&t.displayInfo.timeframe?a("a-tag",{attrs:{size:"small",color:"cyan"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.displayInfo.timeframe)+" ")],1):e._e(),t.displayInfo&&t.displayInfo.indicatorName&&"-"!==t.displayInfo.indicatorName?a("a-tag",{attrs:{size:"small",color:"purple"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"line-chart"}}),e._v(" "+e._s(t.displayInfo.indicatorName)+" ")],1):e._e(),"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e(),"script"===t.strategy_mode&&e.scriptTemplateKeyOf(t)?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(e.scriptTemplateLabel(e.scriptTemplateKeyOf(t)))+" ")]):e._e()]],2)]),a("div",{staticClass:"strategy-item-info"},["strategy"===e.groupByMode?[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),t.exchange_config&&t.exchange_config.exchange_id?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),t.trading_config&&t.trading_config.timeframe?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.trading_config.timeframe)+" ")],1):e._e()]:e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])],2)]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleMenuClick(s,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-item",{key:"backtest"},[a("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("dashboard.indicator.action.backtest"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])}),0)])}),e._l(e.groupedStrategies.ungrouped,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},[t.exchange_config&&t.exchange_config.exchange_id?a("a-tag",{staticClass:"exchange-tag",attrs:{color:e.getExchangeTagColor(t.exchange_config.exchange_id),size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e(),"script"===t.strategy_mode?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"green"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"code"}}),e._v(e._s(e.$t("trading-assistant.strategyMode.script"))+" ")],1):e._e(),"script"===t.strategy_mode&&e.scriptTemplateKeyOf(t)?a("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(e.scriptTemplateLabel(e.scriptTemplateKeyOf(t)))+" ")]):e._e()],1)]),a("div",{staticClass:"strategy-item-info"},[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var s=a.key;return e.handleMenuClick(s,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-item",{key:"backtest"},[a("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("dashboard.indicator.action.backtest"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])})],2):a("div",{staticClass:"strategy-empty-state"},[a("a-empty",{attrs:{description:e.$t("trading-assistant.empty.title")}}),a("div",{staticClass:"strategy-empty-desc"},[e._v(e._s(e.$t("trading-assistant.empty.desc")))]),a("a-button",{attrs:{type:"primary"},on:{click:e.openCreateStrategyFromGuide}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.empty.primary"))+" ")],1)],1)])],1)],1),a("a-col",{staticClass:"strategy-detail-col",attrs:{xs:24,sm:24,md:14,lg:16,xl:16}},[e.selectedStrategy?a("div",{staticClass:"strategy-detail-panel"},[a("a-card",{staticClass:"strategy-header-card",attrs:{bordered:!1}},[a("div",{staticClass:"strategy-header"},[a("div",{staticClass:"header-left"},[a("div",{staticClass:"strategy-title-row"},[a("h3",{staticClass:"strategy-title"},[e._v(e._s(e.selectedStrategy.strategy_name))]),a("div",{staticClass:"status-badge",class:["status-".concat(e.selectedStrategy.status)]},[a("span",{staticClass:"status-dot"}),e._v(" "+e._s(e.getStatusText(e.selectedStrategy.status))+" ")])]),a("div",{staticClass:"key-stats-grid"},[e.selectedStrategy.initial_capital||e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.initial_capital?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon investment"},[a("a-icon",{attrs:{type:"wallet"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalInvestment")))]),a("div",{staticClass:"stat-value"},[e._v("$"+e._s(parseFloat(e.selectedStrategy.initial_capital||(null===(t=e.selectedStrategy.trading_config)||void 0===t?void 0:t.initial_capital)||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})))])])]):e._e(),null!==e.currentEquity?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon equity"},[a("a-icon",{attrs:{type:"fund"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.currentEquity")))]),a("div",{staticClass:"stat-value",class:e.getEquityColorClass},[e._v(e._s(e.formatCurrency(e.currentEquity)))])])]):e._e(),null!==e.totalPnl?a("div",{staticClass:"stat-card pnl-card",class:{profit:e.totalPnl>0,loss:e.totalPnl<0}},[a("div",{staticClass:"stat-icon pnl"},[a("a-icon",{attrs:{type:e.totalPnl>=0?"rise":"fall"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalPnl")))]),a("div",{staticClass:"stat-value",class:e.getPnlColorClass},[e._v(" "+e._s(e.formatPnl(e.totalPnl))+" "),a("span",{staticClass:"pnl-percent"},[e._v("("+e._s(e.formatPnlPercent(e.totalPnlPercent))+")")])])])]):e._e()]),a("div",{staticClass:"strategy-tags"},[e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"stock"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.symbol))])],1):e._e(),e.selectedStrategy.indicator_config&&e.selectedStrategy.indicator_config.indicator_name?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"line-chart"}}),a("span",[e._v(e._s(e.selectedStrategy.indicator_config.indicator_name))])],1):e._e(),e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"thunderbolt"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.leverage||1)+"x")])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.trade_direction?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"swap"}}),a("span",[e._v(e._s(e.getTradeDirectionText(e.selectedStrategy.trading_config.trade_direction)))])],1):e._e(),"script"===e.selectedStrategy.strategy_mode&&e.scriptTemplateKeyOf(e.selectedStrategy)?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"file-text"}}),a("span",[e._v(e._s(e.scriptTemplateLabel(e.scriptTemplateKeyOf(e.selectedStrategy))))])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.timeframe?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.timeframe))])],1):e._e()])]),a("div",{staticClass:"header-right"},["stopped"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn start-btn",attrs:{type:"primary",size:"large"},on:{click:function(t){return e.handleStartStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn stop-btn",attrs:{type:"danger",size:"large"},on:{click:function(t){return e.handleStopStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e()],1)])]),a("a-card",{staticClass:"strategy-content-card",attrs:{bordered:!1}},[a("a-tabs",{attrs:{defaultActiveKey:"positions"}},[a("a-tab-pane",{key:"positions",attrs:{tab:e.$t("trading-assistant.tabs.positions")}},[a("position-records",{attrs:{"strategy-id":e.selectedStrategy.id,"market-type":e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.market_type||"swap",leverage:e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.leverage||1,loading:e.loadingRecords,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"trades",attrs:{tab:e.$t("trading-assistant.tabs.tradingRecords")}},[a("trading-records",{attrs:{"strategy-id":e.selectedStrategy.id,loading:e.loadingRecords,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"performance",attrs:{tab:e.$t("trading-assistant.tabs.performance")}},[a("performance-analysis",{attrs:{"strategy-id":e.selectedStrategy.id,"is-dark":e.isDarkTheme}})],1),a("a-tab-pane",{key:"logs",attrs:{tab:e.$t("trading-assistant.tabs.logs")}},[a("strategy-logs",{attrs:{"strategy-id":e.selectedStrategy.id,"is-dark":e.isDarkTheme}})],1)],1)],1)],1):a("div",{staticClass:"strategy-empty-detail"},[a("div",{staticClass:"strategy-empty-detail-card"},[a("div",{staticClass:"strategy-empty-detail-icon"},[a("a-icon",{attrs:{type:"deployment-unit"}})],1),a("h3",{staticClass:"strategy-empty-detail-title"},[e._v(e._s(e.$t("trading-assistant.emptyDetail.title")))]),a("p",{staticClass:"strategy-empty-detail-hint"},[e._v(e._s(e.$t("trading-assistant.emptyDetail.hint")))]),a("div",{staticClass:"strategy-empty-detail-actions"},[a("a-button",{attrs:{type:"primary"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1)])])])],1),a("a-modal",{staticClass:"mode-selector-modal",attrs:{visible:e.showModeSelector,title:e.$t("trading-assistant.selectMode"),width:e.isMobile?"95%":700,footer:null,maskClosable:!0,bodyStyle:{padding:"16px 24px"}},on:{cancel:function(t){e.showModeSelector=!1}}},[a("strategy-type-selector",{attrs:{selected:e.strategyMode,"is-dark":e.isDarkTheme},on:{select:e.handleModeSelect,"use-template":e.handleUseTemplate}})],1),a("a-modal",{attrs:{visible:e.showFormModal,title:e.editingStrategy?e.$t("trading-assistant.editStrategy"):e.$t("trading-assistant.createStrategy")+("script"===e.strategyMode?" - "+e.$t("trading-assistant.strategyMode.script"):""),width:e.isMobile?"95%":1120,confirmLoading:e.saving,maskClosable:!1,wrapClassName:e.strategyFormWrapClass,bodyStyle:{maxHeight:"76vh",overflowY:"auto",paddingBottom:"8px"}},on:{ok:e.handleSubmit,cancel:e.handleCloseModal}},[a("a-spin",{attrs:{spinning:e.loadingIndicators}},[a("a-steps",{staticClass:"steps-container",attrs:{current:e.displayCurrentStep}},["script"===e.strategyMode?[a("a-step",{attrs:{title:e.$t("trading-assistant.form.simpleStep1")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.editor.title")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.form.step3Signal")}})]:[a("a-step",{attrs:{title:e.$t("trading-assistant.form.stepMergedConfig")}}),a("a-step",{attrs:{title:e.$t("trading-assistant.form.step3Signal")}})]],2),a("div",{staticClass:"form-container"},[a("div",{directives:[{name:"show",rawName:"v-show",value:0===e.currentStep,expression:"currentStep === 0"}],staticClass:"step-content"},["indicator"===e.strategyType&&"script"!==e.strategyMode?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicator")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["indicator_id",{rules:[{required:!0,message:e.$t("trading-assistant.validation.indicatorRequired")}]}],expression:"['indicator_id', { rules: [{ required: true, message: $t('trading-assistant.validation.indicatorRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectIndicator"),"show-search":"",optionLabelProp:"label","filter-option":e.filterIndicatorOption,loading:e.loadingIndicators,getPopupContainer:function(t){return t.parentNode}},on:{focus:e.handleIndicatorSelectFocus,change:e.handleIndicatorChange}},e._l(e.availableIndicators,function(t){return a("a-select-option",{key:String(t.id),attrs:{value:String(t.id),label:e.getIndicatorOptionLabel(t)}},[a("div",{staticClass:"indicator-option"},[a("div",{staticClass:"indicator-option-main"},[a("span",{staticClass:"indicator-name"},[e._v(e._s(t.name))]),t.description?a("span",{staticClass:"indicator-option-desc"},[e._v(e._s(t.description))]):e._e()]),t.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(t.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(t.type))+" ")]):e._e()],1)])}),1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorHint"))+" ")]),e.loadingIndicators||e.availableIndicators&&0!==e.availableIndicators.length?e._e():a("a-alert",{staticStyle:{"margin-top":"12px"},attrs:{type:"info","show-icon":"",message:e.$t("trading-assistant.indicatorEmpty.title"),description:e.$t("trading-assistant.indicatorEmpty.desc")}},[a("template",{slot:"action"},[a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.goToIndicatorAnalysisCreate}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.indicatorEmpty.cta"))+" ")],1)],1)],2)],1),e.selectedIndicator?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorDescription")}},[a("div",{staticClass:"selected-indicator-card"},[a("div",{staticClass:"selected-indicator-header"},[a("span",{staticClass:"selected-indicator-name"},[e._v(e._s(e.selectedIndicator.name))]),e.selectedIndicator.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(e.selectedIndicator.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(e.selectedIndicator.type))+" ")]):e._e()],1),a("div",{staticClass:"indicator-description"},[e._v(" "+e._s(e.selectedIndicator.description||e.$t("trading-assistant.form.noDescription"))+" ")])])]):e._e(),e.indicatorParams.length>0?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorParams")}},[a("div",{staticClass:"indicator-params-form"},[a("a-row",{attrs:{gutter:16}},e._l(e.indicatorParams,function(t){return a("a-col",{key:t.name,attrs:{xs:24,sm:12,md:8}},[a("div",{staticClass:"param-item"},[a("label",{staticClass:"param-label"},[e._v(" "+e._s(t.name)+" "),t.description?a("a-tooltip",{attrs:{title:t.description}},[a("a-icon",{staticStyle:{"margin-left":"4px",color:"#999"},attrs:{type:"question-circle"}})],1):e._e()],1),"int"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"float"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"bool"===t.type?a("a-switch",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):a("a-input",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}})],1)])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"8px"}},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorParamsHint"))+" ")])],1)]):e._e(),a("a-divider"),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyNameHint"))+" ")])],1),a("div",{staticClass:"advanced-settings-shell"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.sectionStrategyMarket")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.sectionStrategyMarketDesc")))])]),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["cs_strategy_type",{initialValue:"single"}],expression:"['cs_strategy_type', { initialValue: 'single' }]"}],on:{change:e.handleStrategyTypeChange}},[a("a-radio",{attrs:{value:"single"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeSingle")))]),a("a-radio",{attrs:{value:"cross_sectional"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeCrossSectional")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyTypeHint"))+" ")])],1)],1),"cross_sectional"===e.form.getFieldValue("cs_strategy_type")?[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbolList")}},[a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:5},on:{change:e.handleCrossSectionalSymbolChange},model:{value:e.crossSectionalSymbols,callback:function(t){e.crossSectionalSymbols=t},expression:"crossSectionalSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolListHint"))+" ")])],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.portfolioSize")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["portfolio_size",{initialValue:10,rules:[{required:!0,message:e.$t("trading-assistant.validation.portfolioSizeRequired")}]}],expression:"['portfolio_size', { initialValue: 10, rules: [{ required: true, message: $t('trading-assistant.validation.portfolioSizeRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:100,step:1}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.portfolioSizeHint"))+" ")])],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.longRatio")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["long_ratio",{initialValue:.5,rules:[{required:!0,message:e.$t("trading-assistant.validation.longRatioRequired")}]}],expression:"['long_ratio', { initialValue: 0.5, rules: [{ required: true, message: $t('trading-assistant.validation.longRatioRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:1,step:.1,precision:2}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.longRatioHint"))+" ")])],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.rebalanceFrequency")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["rebalance_frequency",{initialValue:"daily"}],expression:"['rebalance_frequency', { initialValue: 'daily' }]"}],staticStyle:{width:"100%"}},[a("a-select-option",{attrs:{value:"daily"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceDaily")))]),a("a-select-option",{attrs:{value:"weekly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceWeekly")))]),a("a-select-option",{attrs:{value:"monthly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceMonthly")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.rebalanceFrequencyHint"))+" ")])],1)]:e._e(),"cross_sectional"!==e.form.getFieldValue("cs_strategy_type")?a("a-form-item",{attrs:{label:e.isEditMode?e.$t("trading-assistant.form.symbol"):e.$t("trading-assistant.form.symbols")}},[e.isEditMode?a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2):a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:3},on:{change:e.handleMultiSymbolChangeWithAdd},model:{value:e.selectedSymbols,callback:function(t){e.selectedSymbols=t},expression:"selectedSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.isEditMode?e.$t("trading-assistant.form.symbolHintCrypto"):e.$t("trading-assistant.form.symbolsHint"))+" ")])],1):e._e(),a("div",[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.marketTypeHint"))+" ")])],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}}),a("div",{staticClass:"form-item-hint"},["spot"===e.form.getFieldValue("market_type")?a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.spotLeverageFixed"))+" ")]):a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.leverageHint"))+" ")])])],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1),"spot"===e.form.getFieldValue("market_type")?a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.spotOnlyLongHint"))+" ")]):e._e()],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}})],1)],1),a("a-divider"),a("div",{staticClass:"section-block-title",staticStyle:{"margin-top":"4px"}},[a("span",[e._v(e._s(e.$t("trading-assistant.form.sectionRiskExecutionParams")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.sectionRiskExecutionParamsDesc")))])]),a("a-collapse",{staticClass:"strategy-params-collapse",attrs:{bordered:!1},model:{value:e.backtestCollapseKeys,callback:function(t){e.backtestCollapseKeys=t},expression:"backtestCollapseKeys"}},[a("a-collapse-panel",{key:"risk",attrs:{header:e.$t("dashboard.indicator.backtest.panel.risk")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.stopLossPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["stop_loss_pct",{initialValue:3}],expression:"['stop_loss_pct', { initialValue: 3 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.takeProfitPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["take_profit_pct",{initialValue:6}],expression:"['take_profit_pct', { initialValue: 6 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trailing_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrailingToggle}})],1)],1),a("a-col",{attrs:{span:12}})],1),e.trailingEnabledUi?[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingStopPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_stop_pct",{initialValue:0}],expression:"['trailing_stop_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingActivationPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_activation_pct",{initialValue:0}],expression:"['trailing_activation_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1)]:e._e()],2),a("a-collapse-panel",{key:"scale",attrs:{header:e.$t("dashboard.indicator.backtest.panel.scale")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrendAddToggle}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['dca_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onDcaAddToggle}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_step_pct",{initialValue:0}],expression:"['trend_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_step_pct",{initialValue:0}],expression:"['dca_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_size_pct",{initialValue:0}],expression:"['trend_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_size_pct",{initialValue:0}],expression:"['dca_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_max_times",{initialValue:0}],expression:"['trend_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_max_times",{initialValue:0}],expression:"['dca_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1)],1)],1),a("a-collapse-panel",{key:"reduce",attrs:{header:e.$t("dashboard.indicator.backtest.panel.reduce")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['adverse_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_step_pct",{initialValue:0}],expression:"['trend_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_step_pct",{initialValue:0}],expression:"['adverse_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_size_pct",{initialValue:0}],expression:"['trend_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_size_pct",{initialValue:0}],expression:"['adverse_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_max_times",{initialValue:0}],expression:"['trend_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_max_times",{initialValue:0}],expression:"['adverse_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1)],1)],1),a("a-collapse-panel",{key:"position",attrs:{header:e.$t("dashboard.indicator.backtest.panel.position")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.entryPct"),help:e.$t("dashboard.indicator.backtest.hint.entryPctMax",{maxPct:Number(e.entryPctMaxUi||0).toFixed(0)})}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_pct",{initialValue:100}],expression:"['entry_pct', { initialValue: 100 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:e.entryPctMaxUi,step:.1,precision:4},on:{change:e.onEntryPctChange}})],1)],1),a("a-col",{attrs:{span:12}})],1)],1)],1),a("div",{staticClass:"ai-filter-box"},[a("div",{staticClass:"ai-filter-header"},[a("div",{staticClass:"ai-filter-title"},[a("a-icon",{attrs:{type:"robot"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.enableAiFilter")))])],1),a("a-switch",{attrs:{checked:e.aiFilterEnabledUi},on:{change:e.onAiFilterToggle}})],1),a("div",{staticClass:"ai-filter-hint"},[e._v(e._s(e.$t("trading-assistant.form.enableAiFilterHint")))])])],2)],1):e._e(),"script"===e.strategyMode?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}})],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbol")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{initialValue:1e3,rules:[{required:!0}]}],expression:"['initial_capital', { initialValue: 1000, rules: [{ required: true }] }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}]},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5}],expression:"['leverage', { initialValue: 5 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:125,step:1}})],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"both"}],expression:"['trade_direction', { initialValue: 'both' }]"}],attrs:{getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-select-option",{attrs:{value:"short"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionShort")))]),a("a-select-option",{attrs:{value:"both"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionBoth")))])],1)],1)],1)],1):e._e()]),"script"===e.strategyMode?a("div",{directives:[{name:"show",rawName:"v-show",value:1===e.currentStep,expression:"currentStep === 1"}],staticClass:"step-content"},[a("strategy-editor",{ref:"strategyEditor",attrs:{"is-dark":e.isDarkTheme,"user-id":1,visible:e.showFormModal&&"script"===e.strategyMode&&1===e.currentStep,"initial-template-key":e.pendingScriptTemplateKey},on:{"template-change":e.onScriptTemplateChange},model:{value:e.strategyCode,callback:function(t){e.strategyCode=t},expression:"strategyCode"}})],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:"script"===e.strategyMode&&2===e.currentStep||"script"!==e.strategyMode&&1===e.currentStep,expression:"(strategyMode === 'script' && currentStep === 2) || (strategyMode !== 'script' && currentStep === 1)"}],staticClass:"step-content"},[a("a-form",{attrs:{form:e.form,layout:"vertical",autocomplete:"off"}},[a("div",{staticClass:"execution-step-layout"},[a("div",{staticClass:"execution-step-hero"},[a("div",{staticClass:"simple-mode-kicker"},[e._v(e._s(e.$t("trading-assistant.form.step2HeroTitle")))]),a("div",{staticClass:"execution-step-hero-desc"},[e._v(e._s(e.$t("trading-assistant.form.step2HeroDesc")))])]),a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.executionSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.executionSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.executionMode")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["execution_mode",{initialValue:"signal"}],expression:"['execution_mode', { initialValue: 'signal' }]"}],staticStyle:{display:"none"}}),a("div",{staticClass:"execution-mode-cards"},[a("div",{class:["execution-mode-card",{active:"signal"===e.executionModeUi}],on:{click:function(t){return e.setExecutionModeUi("signal")}}},[a("div",{staticClass:"execution-mode-card-icon signal"},[a("a-icon",{attrs:{type:"notification"}})],1),a("div",{staticClass:"execution-mode-card-body"},[a("div",{staticClass:"execution-mode-card-title"},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignal")))]),a("div",{staticClass:"execution-mode-card-desc"},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignalDesc")))])]),"signal"===e.executionModeUi?a("a-icon",{staticClass:"execution-mode-card-check",attrs:{type:"check-circle",theme:"filled"}}):e._e()],1),a("div",{class:["execution-mode-card","live-card",{active:"live"===e.executionModeUi,disabled:!e.canUseLiveTrading}],on:{click:function(t){e.canUseLiveTrading&&e.setExecutionModeUi("live")}}},[a("div",{staticClass:"execution-mode-card-icon live"},[a("a-icon",{attrs:{type:"thunderbolt"}})],1),a("div",{staticClass:"execution-mode-card-body"},[a("div",{staticClass:"execution-mode-card-title"},[e._v(e._s(e.$t("trading-assistant.form.executionModeLive")))]),a("div",{staticClass:"execution-mode-card-desc"},[e._v(" "+e._s(e.canUseLiveTrading?e.$t("trading-assistant.form.executionModeLiveDesc"):e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])]),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-icon",{staticClass:"execution-mode-card-check",attrs:{type:"check-circle",theme:"filled"}}):e._e()],1)]),e.canUseLiveTrading?e._e():a("div",{staticClass:"form-item-hint execution-warn-text"},[e._v(" "+e._s(e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.title"),description:e.$t("trading-assistant.liveDisclaimer.content")}}):e._e()],1),a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.notificationSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.notificationSectionDesc")))])]),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.notifyChannels")}},[a("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["notify_channels",{initialValue:["browser"]}],expression:"['notify_channels', { initialValue: ['browser'] }]"}],staticClass:"notify-channel-grid",on:{change:e.onNotifyChannelsChange}},[a("a-checkbox",{attrs:{value:"browser"}},[e._v(e._s(e.$t("trading-assistant.notify.browser")))]),a("a-checkbox",{attrs:{value:"email"}},[e._v(e._s(e.$t("trading-assistant.notify.email")))]),a("a-checkbox",{attrs:{value:"telegram"}},[e._v(e._s(e.$t("trading-assistant.notify.telegram")))]),a("a-checkbox",{attrs:{value:"discord"}},[e._v(e._s(e.$t("trading-assistant.notify.discord")))]),a("a-checkbox",{attrs:{value:"webhook"}},[e._v(e._s(e.$t("trading-assistant.notify.webhook")))]),a("a-checkbox",{attrs:{value:"phone"}},[e._v(e._s(e.$t("trading-assistant.notify.phone")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(e._s(e.$t("trading-assistant.form.notifyChannelsHint")))])],1),e.unconfiguredChannels.length>0?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"warning",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationConfigMissing",{channels:e.unconfiguredChannels.join(", ")}))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,2930252607)}):e.notifyChannelsUi.length>0&&!e.notifyChannelsUi.includes("browser")||e.notifyChannelsUi.length>1?a("a-alert",{staticClass:"section-inline-alert",attrs:{type:"info",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationFromProfile"))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}])}):e._e()],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("div",{staticClass:"execution-section-card"},[a("div",{staticClass:"section-block-title"},[a("span",[e._v(e._s(e.$t("trading-assistant.form.liveConnectionSectionTitle")))]),a("span",{staticClass:"section-block-desc"},[e._v(e._s(e.$t("trading-assistant.form.liveConnectionSectionDesc")))])]),a("a-alert",{staticClass:"section-inline-alert",staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning","show-icon":"",message:e.$t("trading-assistant.form.liveTradingConfigTitle"),description:e.$t("trading-assistant.form.liveTradingConfigHint")}}),a("a-form-item",{staticClass:"compact-form-item",attrs:{label:e.$t("trading-assistant.form.savedCredential")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["credential_id",{rules:[{required:!0,message:e.$t("profile.exchange.noCredentialHint")}],getValueFromEvent:function(t){return t||void 0}}],expression:"['credential_id', {\n rules: [{ required: true, message: $t('profile.exchange.noCredentialHint') }],\n getValueFromEvent: (val) => val || undefined\n }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSavedCredential"),"allow-clear":"","show-search":"","option-filter-prop":"children",loading:e.loadingExchangeCredentials},on:{change:e.handleCredentialSelectChange}},e._l(e.filteredExchangeCredentials,function(t){return a("a-select-option",{key:t.id,attrs:{value:t.id}},[e._v(" "+e._s(e.formatCredentialLabel(t))+" ")])}),1),a("div",{staticClass:"form-item-hint ta-credential-actions",staticStyle:{"margin-top":"6px"}},[a("a-button",{staticClass:"ta-add-cred-btn",attrs:{type:"link",size:"small"},on:{click:function(t){e.showExchangeAccountModal=!0}}},[a("a-icon",{attrs:{type:"plus-circle"}}),e._v(" "+e._s(e.$t("quickTrade.addAccountInline"))+" ")],1),a("span",{staticClass:"ta-credential-actions-sep"},[e._v("·")]),a("router-link",{attrs:{to:"/profile?tab=exchange"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),e._v(e._s(e.$t("profile.exchange.goToManage"))+" ")],1)],1),"live"===e.executionModeUi&&e.canUseLiveTrading&&!e.loadingExchangeCredentials&&0===e.filteredExchangeCredentials.length?a("a-alert",{staticStyle:{"margin-top":"10px"},attrs:{type:"warning","show-icon":"",message:e.$t("trading-assistant.noCredentialForLive.title")}},[a("template",{slot:"description"},[a("span",[e._v(e._s(e.$t("trading-assistant.noCredentialForLive.desc")))]),a("a-button",{staticStyle:{"margin-left":"8px"},attrs:{type:"primary",size:"small"},on:{click:function(t){e.showExchangeAccountModal=!0}}},[e._v(" "+e._s(e.$t("quickTrade.addAccountInline"))+" ")])],1)],2):e._e()],1)],1):e._e()])])],1)])],1),a("template",{slot:"footer"},[a("a-button",{on:{click:e.handleCloseModal}},[e._v(e._s(e.$t("trading-assistant.form.cancel")))]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep>0,expression:"currentStep > 0"}],on:{click:e.handlePrev}},[e._v(" "+e._s(e.$t("trading-assistant.form.prev"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.showStrategyFormNext,expression:"showStrategyFormNext"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleNext}},[e._v(" "+e._s(e.$t("trading-assistant.form.next"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.showStrategyFormSubmit,expression:"showStrategyFormSubmit"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.editingStrategy?e.$t("trading-assistant.form.confirmEdit"):e.$t("trading-assistant.form.confirmCreate"))+" ")])],1)],2),a("a-modal",{attrs:{title:e.$t("trading-assistant.form.addSymbolTitle"),visible:e.showAddSymbolModal,confirmLoading:e.addingSymbol,width:"600px",okText:e.$t("trading-assistant.form.confirmAdd"),cancelText:e.$t("trading-assistant.form.cancel"),maskClosable:!1,keyboard:!1},on:{ok:e.handleConfirmAddSymbol,cancel:e.handleCloseAddSymbolModal}},[a("div",{staticClass:"add-symbol-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:e.handleAddSymbolMarketChange},model:{value:e.addSymbolMarket,callback:function(t){e.addSymbolMarket=t},expression:"addSymbolMarket"}},e._l(e.addSymbolMarketTypes,function(t){return a("a-tab-pane",{key:t.value,attrs:{tab:e.$t(t.i18nKey||"dashboard.analysis.market.".concat(t.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:e.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:e.searchingSymbol,size:"large","allow-clear":""},on:{search:e.handleSearchSymbol,change:e.handleSymbolSearchInputChange},model:{value:e.addSymbolKeyword,callback:function(t){e.addSymbolKeyword=t},expression:"addSymbolKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),e.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.symbolSearchResults,loading:e.searchingSymbol,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,2801225082)})],1):e._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:e.loadingHotSymbols}},[e.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.hotSymbols,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,3959834868)}):a("a-empty",{attrs:{description:e.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),e.selectedAddSymbol?a("div",{staticClass:"selected-symbol-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#52c41a","margin-right":"4px"},attrs:{type:"check-circle"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.selectedSymbol"))+" ")],1),a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:e.getMarketColor(e.addSymbolMarket)}},[e._v(e._s(e.addSymbolMarket))]),a("span",{staticClass:"symbol-code"},[e._v(e._s(e.selectedAddSymbol.symbol))]),e.selectedAddSymbol.name?a("span",{staticClass:"symbol-name"},[e._v(e._s(e.selectedAddSymbol.name))]):e._e()],1)]):e._e()],1)])],1)],1),a("exchange-account-modal",{attrs:{visible:e.showExchangeAccountModal},on:{"update:visible":function(t){e.showExchangeAccountModal=t},success:e.handleExchangeAccountCreated}})],1)},i=[],r=a(15863),n=a(44735),o=a(81127),l=a(56252),c=a(2403),d=a(57532),u=a(76338),p=a(36911),m=a(35038),g=a(42430),h=a(84841),_=a(55434),y=a(75769),f=function(){var t=this,e=t._self._c;return e("div",{staticClass:"trading-records strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[0!==t.records.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.records,loading:t.loading,pagination:{pageSize:10},size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("a-tag",{attrs:{color:t.getTradeTypeColor(a)}},[t._v(" "+t._s(t.getTradeTypeText(a))+" ")])]}},{key:"price",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"amount",fn:function(e){return[t._v(" "+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"value",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(2))+" ")]}},{key:"profit",fn:function(a,s){return[e("span",{style:{color:a>0?"#52c41a":a<0?"#f5222d":"#666"}},[t._v(" "+t._s(t.formatProfit(a,s))+" ")])]}},{key:"commission",fn:function(e){return[t._v(" "+t._s(t.formatCommission(e))+" ")]}},{key:"time",fn:function(e,a){return[t._v(" "+t._s(t.formatTime(a.created_at||e))+" ")]}}])}):e("div",{staticClass:"empty-state strategy-tab-empty"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},v=[];function b(t,e){if(null==t)return{};var a={};for(var s in t)if({}.hasOwnProperty.call(t,s)){if(-1!==e.indexOf(s))continue;a[s]=t[s]}return a}function x(t,e){if(null==t)return{};var a,s,i=b(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(s=0;s1&&void 0!==arguments[1]?arguments[1]:{},a=A(t);if(!a)return null!=e.fallback?e.fallback:"-";var s=e.locale||"undefined"!==typeof navigator&&navigator.language||"zh-CN",i=$(),r={year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1};i&&(r.timeZone=i);try{return a.toLocaleString(s,r)}catch(o){try{r.timeZone;var n=x(r,w);return a.toLocaleString(s,n)}catch(l){return a.toLocaleString()}}}var P={name:"TradingRecords",props:{strategyId:{type:Number,required:!0},loading:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.time"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"time"}},{title:this.$t("dashboard.indicator.backtest.tradeType"),dataIndex:"type",key:"type",width:140,scopedSlots:{customRender:"type"}},{title:this.$t("trading-assistant.table.price"),dataIndex:"price",key:"price",width:120,scopedSlots:{customRender:"price"}},{title:this.$t("trading-assistant.table.amount"),dataIndex:"amount",key:"amount",width:120,scopedSlots:{customRender:"amount"}},{title:this.$t("trading-assistant.table.value"),dataIndex:"value",key:"value",width:120,scopedSlots:{customRender:"value"}},{title:this.$t("dashboard.indicator.backtest.profit"),dataIndex:"profit",key:"profit",width:120,scopedSlots:{customRender:"profit"}},{title:this.$t("trading-assistant.table.commission"),dataIndex:"commission",key:"commission",width:100,scopedSlots:{customRender:"commission"}}]}},data:function(){return{records:[]}},watch:{strategyId:{handler:function(t){t&&this.loadRecords()},immediate:!0}},methods:{loadRecords:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,p.tq)(t.strategyId);case 2:a=e.v,1===a.code?t.records=(a.data.trades||[]).map(function(t){return(0,u.A)((0,u.A)({},t),{},{time:t.created_at||t.time})}):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadTradesFailed")),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},formatTime:function(t){if(!t)return"--";var e=this.$i18n.locale||"zh-CN";return T(t,{locale:e,fallback:"--"})},getTradeTypeColor:function(t){var e={buy:"green",sell:"red",liquidation:"orange",open_long:"green",add_long:"cyan",close_long:"orange",close_long_stop:"red",close_long_profit:"lime",open_short:"red",add_short:"magenta",close_short:"blue",close_short_stop:"red",close_short_profit:"cyan"};return e[t]||"default"},getTradeTypeText:function(t){var e={buy:this.$t("dashboard.indicator.backtest.buy"),sell:this.$t("dashboard.indicator.backtest.sell"),liquidation:this.$t("dashboard.indicator.backtest.liquidation"),open_long:this.$t("dashboard.indicator.backtest.openLong"),add_long:this.$t("dashboard.indicator.backtest.addLong"),close_long:this.$t("dashboard.indicator.backtest.closeLong"),close_long_stop:this.$t("dashboard.indicator.backtest.closeLongStop"),close_long_profit:this.$t("dashboard.indicator.backtest.closeLongProfit"),open_short:this.$t("dashboard.indicator.backtest.openShort"),add_short:this.$t("dashboard.indicator.backtest.addShort"),close_short:this.$t("dashboard.indicator.backtest.closeShort"),close_short_stop:this.$t("dashboard.indicator.backtest.closeShortStop"),close_short_profit:this.$t("dashboard.indicator.backtest.closeShortProfit")};return e[t]||t},formatMoney:function(t){if(null===t||void 0===t)return"--";var e=t>=0?"+":"-";return"".concat(e,"$").concat(Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}))},formatProfit:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),s=["open_long","open_short","add_long","add_short"];return 0===a&&e&&s.includes(e.type)?"--":Math.abs(a)<1e-6?e&&s.includes(e.type)?"--":"$0.00":this.formatMoney(a)},formatCommission:function(t){if(null===t||void 0===t)return"--";var e=parseFloat(t);return isNaN(e)||Math.abs(e)<1e-6?"--":"$".concat(e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6}))}}},M=P,F=a(845),I=(0,F.A)(M,f,v,!1,null,"46c92dab",null),N=I.exports,D=function(){var t=this,e=t._self._c;return e("div",{staticClass:"position-records strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[0!==t.positions.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.positions,loading:t.loading,pagination:!1,size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"symbol",fn:function(a,s){return[e("strong",[t._v(t._s(s.symbol||a))])]}},{key:"side",fn:function(a,s){return[e("a-tag",{attrs:{color:"long"===(s.side||a)?"green":"red"}},[t._v(" "+t._s("long"===(s.side||a)?t.$t("trading-assistant.table.long"):t.$t("trading-assistant.table.short"))+" ")])]}},{key:"entryPrice",fn:function(a,s){return[t.hasValidPrice(s.entry_price||a)?e("span",[t._v(" $"+t._s(parseFloat(s.entry_price||a).toFixed(4))+" ")]):e("span",[t._v("--")])]}},{key:"currentPrice",fn:function(e,a){return[t._v(" $"+t._s(parseFloat(a.current_price||e||0).toFixed(4))+" ")]}},{key:"size",fn:function(e,a){return[t._v(" "+t._s(parseFloat(a.size||e||0).toFixed(4))+" ")]}},{key:"unrealizedPnl",fn:function(a,s){return[e("span",{class:{profit:parseFloat(s.unrealized_pnl||a||0)>0,loss:parseFloat(s.unrealized_pnl||a||0)<0}},[t._v(" $"+t._s(parseFloat(s.unrealized_pnl||a||0).toFixed(2))+" ")])]}},{key:"pnlPercent",fn:function(a,s){return[e("span",{class:{profit:parseFloat(s.pnl_percent||a||0)>0,loss:parseFloat(s.pnl_percent||a||0)<0}},[t._v(" "+t._s(parseFloat(s.pnl_percent||a||0).toFixed(2))+"% ")])]}}])}):e("div",{staticClass:"empty-state strategy-tab-empty"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},V=[],E={name:"PositionRecords",props:{strategyId:{type:Number,required:!0},marketType:{type:String,default:"swap"},leverage:{type:[Number,String],default:1},loading:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},data:function(){return{positions:[]}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.symbol"),dataIndex:"symbol",key:"symbol",width:120,scopedSlots:{customRender:"symbol"}},{title:this.$t("trading-assistant.table.side"),dataIndex:"side",key:"side",width:80,scopedSlots:{customRender:"side"}},{title:this.$t("trading-assistant.table.size"),dataIndex:"size",key:"size",width:120,scopedSlots:{customRender:"size"}},{title:this.$t("trading-assistant.table.entryPrice"),dataIndex:"entry_price",key:"entry_price",width:120,scopedSlots:{customRender:"entryPrice"}},{title:this.$t("trading-assistant.table.currentPrice"),dataIndex:"current_price",key:"current_price",width:120,scopedSlots:{customRender:"currentPrice"}},{title:this.$t("trading-assistant.table.unrealizedPnl"),dataIndex:"unrealized_pnl",key:"unrealized_pnl",width:120,scopedSlots:{customRender:"unrealizedPnl"}},{title:this.$t("trading-assistant.table.pnlPercent"),dataIndex:"pnl_percent",key:"pnl_percent",width:100,scopedSlots:{customRender:"pnlPercent"}}]}},watch:{strategyId:{handler:function(t){t?(this.loadPositions(),this.startPolling()):this.stopPolling()},immediate:!0}},beforeDestroy:function(){this.stopPolling()},methods:{loadPositions:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,p.oK)(t.strategyId);case 2:a=e.v,1===a.code?(s=a.data.positions||[],t.positions=s.map(function(e,a){var s=String(t.marketType||"swap").toLowerCase(),i=parseFloat(t.leverage);(!isFinite(i)||i<=0)&&(i=1),"spot"===s&&(i=1);var r=parseFloat(e.entry_price||e.entryPrice||0),n=parseFloat(e.size||"0")||0,o=parseFloat(e.unrealized_pnl||e.unrealizedPnl||"0")||0,l=parseFloat(e.pnl_percent||e.pnlPercent||"0")||0;r>0&&n>0?l=o/(r*n)*100*i:"spot"!==s&&(l*=i);var c={id:e.id||a,symbol:e.symbol||"",side:e.side||"long",size:n>0?n.toString():"0",entry_price:r>0?r.toString():"0",current_price:e.current_price||e.currentPrice||"0",unrealized_pnl:e.unrealized_pnl||e.unrealizedPnl||"0",pnl_percent:l,updated_at:e.updated_at||e.updatedAt||""};return c})):t.positions=[],e.n=4;break;case 3:e.p=3,e.v,t.positions=[];case 4:return e.a(2)}},e,null,[[1,3]])}))()},hasValidPrice:function(t){var e=parseFloat(t);return Number.isFinite(e)&&e>0},startPolling:function(){var t=this;this.stopPolling(),this.pollingTimer=setInterval(function(){t.loadPositions()},5e3)},stopPolling:function(){this.pollingTimer&&(clearInterval(this.pollingTimer),this.pollingTimer=null)}}},R=E,z=(0,F.A)(R,D,V,!1,null,"6ba7d922",null),L=z.exports,U=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-type-selector",class:{"theme-dark":t.isDark}},[e("div",{staticClass:"selector-header"},[e("h3",[t._v(t._s(t.$t("trading-assistant.selectMode")))]),e("p",{staticClass:"selector-hint"},[t._v(t._s(t.$t("trading-assistant.selectModeHint")))])]),e("div",{staticClass:"mode-cards"},[e("div",{staticClass:"mode-card",class:{selected:"signal"===t.selected},on:{click:function(e){return t.$emit("select","signal")}}},[e("div",{staticClass:"card-icon signal-icon"},[e("a-icon",{attrs:{type:"line-chart"}})],1),e("div",{staticClass:"card-body"},[e("div",{staticClass:"card-badge-row"},[e("span",{staticClass:"card-badge"},[t._v(t._s(t.$t("trading-assistant.strategyMode.signalBadge")))])]),e("h4",[t._v(t._s(t.$t("trading-assistant.strategyMode.signal")))]),e("p",{staticClass:"card-desc"},[t._v(t._s(t.$t("trading-assistant.strategyMode.signalDesc")))]),e("ul",{staticClass:"card-features"},[e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature1")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature2")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.signalFeature3")))],1)])]),e("a-button",{staticClass:"card-btn",attrs:{type:"primary",ghost:""},on:{click:function(e){return e.stopPropagation(),t.$emit("select","signal")}}},[t._v(" "+t._s(t.$t("trading-assistant.useThisMode"))+" ")])],1),e("div",{staticClass:"mode-card",class:{selected:"script"===t.selected},on:{click:function(e){return t.$emit("select","script")}}},[e("div",{staticClass:"card-icon script-icon"},[e("a-icon",{attrs:{type:"code"}})],1),e("div",{staticClass:"card-body"},[e("div",{staticClass:"card-badge-row"},[e("span",{staticClass:"card-badge card-badge--script"},[t._v(t._s(t.$t("trading-assistant.strategyMode.scriptBadge")))])]),e("h4",[t._v(t._s(t.$t("trading-assistant.strategyMode.script")))]),e("p",{staticClass:"card-desc"},[t._v(t._s(t.$t("trading-assistant.strategyMode.scriptDesc")))]),e("ul",{staticClass:"card-features"},[e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature1")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature2")))],1),e("li",[e("a-icon",{attrs:{type:"check"}}),t._v(" "+t._s(t.$t("trading-assistant.strategyMode.scriptFeature3")))],1)])]),e("a-button",{staticClass:"card-btn",attrs:{type:"primary",ghost:""},on:{click:function(e){return e.stopPropagation(),t.$emit("select","script")}}},[t._v(" "+t._s(t.$t("trading-assistant.useThisMode"))+" ")])],1)]),e("div",{staticClass:"template-quick-start"},[e("a-divider",[e("span",{staticClass:"divider-text"},[t._v(t._s(t.$t("trading-assistant.fromTemplate")))])]),e("div",{staticClass:"template-tags"},t._l(t.templates,function(a){return e("a-tag",{key:a.key,staticClass:"template-tag",on:{click:function(e){return t.$emit("use-template",a.key)}}},[e("span",{staticClass:"tpl-icon"},[t._v(t._s(a.icon))]),t._v(" "+t._s(t.$t("trading-assistant.template.".concat(a.key)))+" ")])}),1)],1)])},q=[],K=[{key:"trendFollowing",icon:"📈",code:"\"\"\"\nTrend Following Strategy\nUses EMA crossover with dynamic stop-loss / take-profit.\n\"\"\"\n\ndef on_init(ctx):\n ctx.fast_period = ctx.param('fast_period', 12)\n ctx.slow_period = ctx.param('slow_period', 26)\n ctx.position_pct = ctx.param('position_pct', 0.95)\n ctx.stop_pct = ctx.param('stop_pct', 0.03)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.08)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.slow_period + 5)\n if len(bars) < ctx.slow_period:\n return\n\n closes = [b['close'] for b in bars]\n fast_ema = _ema(closes, ctx.fast_period)\n slow_ema = _ema(closes, ctx.slow_period)\n price = bar['close']\n\n if fast_ema > slow_ema and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BUY at {price:.2f}\")\n\n elif fast_ema < slow_ema and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"SELL at {price:.2f}\")\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct <= -ctx.stop_pct:\n ctx.close_position()\n ctx.log(f\"STOP LOSS at {price:.2f}\")\n elif pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.log(f\"TAKE PROFIT at {price:.2f}\")\n\ndef _ema(data, period):\n k = 2 / (period + 1)\n ema = data[0]\n for price in data[1:]:\n ema = price * k + ema * (1 - k)\n return ema\n",params:[{name:"fast_period",type:"integer",default:12,min:2,max:120,step:1},{name:"slow_period",type:"integer",default:26,min:5,max:240,step:1},{name:"position_pct",type:"percent",default:.95,min:.05,max:1,step:.01},{name:"stop_pct",type:"percent",default:.03,min:.001,max:.5,step:.001},{name:"take_profit_pct",type:"percent",default:.08,min:.001,max:1,step:.001}]},{key:"martingale",icon:"🔥",code:"\"\"\"\nMartingale Strategy\nDouble position on each loss, with max layer control.\n\"\"\"\n\ndef on_init(ctx):\n ctx.base_amount = ctx.param('base_amount', 100)\n ctx.max_layers = ctx.param('max_layers', 5)\n ctx.multiplier = ctx.param('multiplier', 2.0)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.02)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.04)\n ctx.cooldown_bars = ctx.param('cooldown_bars', 1)\n ctx.current_layer = 0\n ctx.cooldown = 0\n\ndef on_bar(ctx, bar):\n if ctx.cooldown > 0:\n ctx.cooldown -= 1\n return\n\n price = bar['close']\n if not ctx.position:\n amount = ctx.base_amount * (ctx.multiplier ** ctx.current_layer)\n if amount <= ctx.balance:\n qty = amount / price\n ctx.buy(price, qty)\n ctx.log(f\"Layer {ctx.current_layer}: BUY {qty:.4f} at {price:.2f}\")\n else:\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n\n if pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.current_layer = 0\n ctx.cooldown = ctx.cooldown_bars\n ctx.log(f\"TAKE PROFIT at {price:.2f}, reset layers\")\n\n elif pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.cooldown = ctx.cooldown_bars\n if ctx.current_layer < ctx.max_layers:\n ctx.current_layer += 1\n ctx.log(f\"LOSS, escalate to layer {ctx.current_layer}\")\n else:\n ctx.current_layer = 0\n ctx.log(\"Max layers reached, reset\")\n",params:[{name:"base_amount",type:"number",default:100,min:10,max:1e6,step:10},{name:"max_layers",type:"integer",default:5,min:1,max:20,step:1},{name:"multiplier",type:"number",default:2,min:1,max:5,step:.1},{name:"take_profit_pct",type:"percent",default:.02,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.04,min:.001,max:1,step:.001},{name:"cooldown_bars",type:"integer",default:1,min:0,max:500,step:1}]},{key:"grid",icon:"📐",code:"\"\"\"\nGrid-style strategy (K-line / bar simulation).\n\nUnlike an exchange-native grid that pre-places many limit orders on the book, this template\nevaluates once per CLOSED bar: if the close crosses a grid cell edge, it emits buy/sell actions.\nLive behavior still depends on trade_direction (long / short / both) and spot vs futures.\n\ngrid_mode:\n- neutral: buy on dips into a cell, sell when price moves up out of a filled cell (futures+both may open shorts after flat)\n- long: long-biased grid; prefer trade_direction=long (spot is always long-only)\n- short: short-biased grid (sell to open on rallies, buy to cover on dips); prefer trade_direction=short or both\n\"\"\"\n\ndef on_init(ctx):\n ctx.grid_mode = ctx.param('grid_mode', 'neutral')\n ctx.grid_upper = ctx.param('grid_upper', 70000)\n ctx.grid_lower = ctx.param('grid_lower', 60000)\n ctx.grid_levels = ctx.param('grid_levels', 10)\n ctx.order_amount = ctx.param('order_amount', 100)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.05)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.03)\n ctx.filled_grids = set()\n\n spacing = (ctx.grid_upper - ctx.grid_lower) / ctx.grid_levels\n ctx.grid_prices = [ctx.grid_lower + i * spacing for i in range(ctx.grid_levels + 1)]\n\ndef on_bar(ctx, bar):\n price = bar['close']\n mode = str(ctx.grid_mode or 'neutral').lower()\n if mode not in ('neutral', 'long', 'short'):\n mode = 'neutral'\n\n if price < ctx.grid_lower or price > ctx.grid_upper:\n return\n\n if ctx.position:\n side = ctx.position.get('side') or ''\n entry = float(ctx.position.get('entry_price') or 0)\n if side == 'long' and entry > 0:\n pnl_pct = (price - entry) / entry\n elif side == 'short' and entry > 0:\n pnl_pct = (entry - price) / entry\n else:\n pnl_pct = 0.0\n if side in ('long', 'short') and (pnl_pct >= ctx.take_profit_pct or pnl_pct <= -ctx.stop_loss_pct):\n ctx.close_position()\n ctx.filled_grids.clear()\n ctx.log(f\"Grid risk exit at {price:.2f}, pnl={pnl_pct:.2%}\")\n return\n\n if mode == 'short':\n for i, gp in enumerate(ctx.grid_prices[:-1]):\n upper_gp = ctx.grid_prices[i + 1]\n grid_id = f\"grid_{i}\"\n if price >= upper_gp and grid_id not in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.sell(price, qty)\n ctx.filled_grids.add(grid_id)\n ctx.log(f\"Grid SHORT add at {price:.2f} (level {i})\")\n elif price <= gp and grid_id in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.buy(price, qty)\n ctx.filled_grids.discard(grid_id)\n ctx.log(f\"Grid SHORT cover at {price:.2f} (level {i})\")\n return\n\n for i, gp in enumerate(ctx.grid_prices[:-1]):\n upper_gp = ctx.grid_prices[i + 1]\n grid_id = f\"grid_{i}\"\n if price <= gp and grid_id not in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.buy(price, qty)\n ctx.filled_grids.add(grid_id)\n ctx.log(f\"Grid BUY at {price:.2f} (level {i})\")\n elif price >= upper_gp and grid_id in ctx.filled_grids:\n qty = ctx.order_amount / price\n ctx.sell(price, qty)\n ctx.filled_grids.discard(grid_id)\n ctx.log(f\"Grid SELL at {price:.2f} (level {i})\")\n",params:[{name:"grid_mode",type:"select",default:"neutral",options:[{value:"neutral",labelKey:"trading-assistant.templateParam.grid_mode.optionNeutral"},{value:"long",labelKey:"trading-assistant.templateParam.grid_mode.optionLong"},{value:"short",labelKey:"trading-assistant.templateParam.grid_mode.optionShort"}]},{name:"grid_upper",type:"number",default:7e4,min:1,max:1e8,step:10},{name:"grid_lower",type:"number",default:6e4,min:1,max:1e8,step:10},{name:"grid_levels",type:"integer",default:10,min:2,max:200,step:1},{name:"order_amount",type:"number",default:100,min:1,max:1e6,step:1},{name:"take_profit_pct",type:"percent",default:.05,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.03,min:.001,max:1,step:.001}]},{key:"dca",icon:"💰",code:"\"\"\"\nDCA (Dollar Cost Averaging) Strategy\nPeriodic purchases with optional dip-buying.\n\"\"\"\n\ndef on_init(ctx):\n ctx.buy_amount = ctx.param('buy_amount', 100)\n ctx.dip_threshold = ctx.param('dip_threshold', 0.05)\n ctx.dip_multiplier = ctx.param('dip_multiplier', 2.0)\n ctx.buy_interval = ctx.param('buy_interval', 24)\n ctx.max_orders = ctx.param('max_orders', 999)\n ctx.bar_count = 0\n ctx.order_count = 0\n ctx.last_buy_price = None\n\ndef on_bar(ctx, bar):\n ctx.bar_count += 1\n price = bar['close']\n\n if ctx.order_count >= ctx.max_orders:\n return\n\n is_dip = False\n if ctx.last_buy_price and price < ctx.last_buy_price * (1 - ctx.dip_threshold):\n is_dip = True\n\n if ctx.bar_count % ctx.buy_interval == 0 or is_dip:\n amount = ctx.buy_amount * (ctx.dip_multiplier if is_dip else 1.0)\n if amount <= ctx.balance:\n qty = amount / price\n ctx.buy(price, qty)\n ctx.last_buy_price = price\n ctx.order_count += 1\n tag = \" (DIP BUY)\" if is_dip else \"\"\n ctx.log(f\"DCA BUY {qty:.6f} at {price:.2f}{tag}\")\n",params:[{name:"buy_amount",type:"number",default:100,min:1,max:1e6,step:1},{name:"buy_interval",type:"integer",default:24,min:1,max:1e3,step:1},{name:"dip_threshold",type:"percent",default:.05,min:.001,max:1,step:.001},{name:"dip_multiplier",type:"number",default:2,min:1,max:10,step:.1},{name:"max_orders",type:"integer",default:999,min:1,max:9999,step:1}]},{key:"meanReversion",icon:"🔄",code:"\"\"\"\nMean Reversion Strategy\nBollinger Bands based: buy at lower band, sell at upper band.\n\"\"\"\n\ndef on_init(ctx):\n ctx.period = ctx.param('period', 20)\n ctx.std_mult = ctx.param('std_mult', 2.0)\n ctx.position_pct = ctx.param('position_pct', 0.5)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.03)\n ctx.stop_loss_pct = ctx.param('stop_loss_pct', 0.02)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.period + 5)\n if len(bars) < ctx.period:\n return\n\n closes = [b['close'] for b in bars[-ctx.period:]]\n mean = sum(closes) / len(closes)\n std = (sum((c - mean) ** 2 for c in closes) / len(closes)) ** 0.5\n\n upper = mean + ctx.std_mult * std\n lower = mean - ctx.std_mult * std\n price = bar['close']\n\n if price <= lower and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BUY at {price:.2f} (below lower band {lower:.2f})\")\n\n elif price >= upper and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"SELL at {price:.2f} (above upper band {upper:.2f})\")\n\n elif ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct >= ctx.take_profit_pct or pnl_pct <= -ctx.stop_loss_pct:\n ctx.close_position()\n ctx.log(f\"Risk exit at {price:.2f}, pnl={pnl_pct:.2%}\")\n",params:[{name:"period",type:"integer",default:20,min:2,max:300,step:1},{name:"std_mult",type:"number",default:2,min:.5,max:6,step:.1},{name:"position_pct",type:"percent",default:.5,min:.05,max:1,step:.01},{name:"take_profit_pct",type:"percent",default:.03,min:.001,max:1,step:.001},{name:"stop_loss_pct",type:"percent",default:.02,min:.001,max:1,step:.001}]},{key:"breakout",icon:"⚡",code:"\"\"\"\nBreakout Strategy\nEnter when price breaks key resistance/support with volume confirmation.\n\"\"\"\n\ndef on_init(ctx):\n ctx.lookback = ctx.param('lookback', 20)\n ctx.volume_mult = ctx.param('volume_mult', 1.5)\n ctx.position_pct = ctx.param('position_pct', 0.9)\n ctx.stop_pct = ctx.param('stop_pct', 0.02)\n ctx.take_profit_pct = ctx.param('take_profit_pct', 0.05)\n\ndef on_bar(ctx, bar):\n bars = ctx.bars(ctx.lookback + 5)\n if len(bars) < ctx.lookback:\n return\n\n recent = bars[-ctx.lookback:]\n high = max(b['high'] for b in recent[:-1])\n low = min(b['low'] for b in recent[:-1])\n avg_vol = sum(b['volume'] for b in recent[:-1]) / (len(recent) - 1)\n price = bar['close']\n vol = bar['volume']\n\n if price > high and vol > avg_vol * ctx.volume_mult and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"BREAKOUT BUY at {price:.2f} (prev high: {high:.2f})\")\n\n elif price < low and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"BREAK DOWN, close at {price:.2f}\")\n\n if ctx.position and ctx.position['side'] == 'long':\n entry = ctx.position['entry_price']\n pnl_pct = (price - entry) / entry\n if pnl_pct <= -ctx.stop_pct:\n ctx.close_position()\n ctx.log(f\"STOP LOSS at {price:.2f}\")\n elif pnl_pct >= ctx.take_profit_pct:\n ctx.close_position()\n ctx.log(f\"TAKE PROFIT at {price:.2f}\")\n",params:[{name:"lookback",type:"integer",default:20,min:2,max:300,step:1},{name:"volume_mult",type:"number",default:1.5,min:.5,max:10,step:.1},{name:"position_pct",type:"percent",default:.9,min:.05,max:1,step:.01},{name:"stop_pct",type:"percent",default:.02,min:.001,max:1,step:.001},{name:"take_profit_pct",type:"percent",default:.05,min:.001,max:1,step:.001}]},{key:"rsiMeanReversion",icon:"📉",code:"\"\"\"\nRSI mean reversion (long-focused)\nBuys when RSI is oversold; exits long when RSI is overbought.\n\"\"\"\n\ndef on_init(ctx):\n ctx.rsi_period = ctx.param('rsi_period', 14)\n ctx.oversold = ctx.param('oversold', 30)\n ctx.overbought = ctx.param('overbought', 70)\n ctx.position_pct = ctx.param('position_pct', 0.5)\n\ndef _rsi_simple(closes, period):\n n = len(closes)\n if n < period + 1:\n return None\n gains = 0.0\n losses = 0.0\n for i in range(n - period, n):\n diff = closes[i] - closes[i - 1]\n if diff > 0:\n gains += diff\n else:\n losses -= diff\n if losses == 0:\n return 100.0 if gains > 0 else 50.0\n rs = gains / losses\n return 100.0 - (100.0 / (1.0 + rs))\n\ndef on_bar(ctx, bar):\n need = ctx.rsi_period + 3\n bars = ctx.bars(need)\n if len(bars) < need:\n return\n closes = [b['close'] for b in bars]\n r = _rsi_simple(closes, ctx.rsi_period)\n if r is None:\n return\n price = bar['close']\n if r <= ctx.oversold and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"RSI BUY r={r:.1f} at {price:.2f}\")\n elif r >= ctx.overbought and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"RSI SELL r={r:.1f} at {price:.2f}\")\n",params:[{name:"rsi_period",type:"integer",default:14,min:2,max:100,step:1},{name:"oversold",type:"number",default:30,min:1,max:50,step:1},{name:"overbought",type:"number",default:70,min:50,max:99,step:1},{name:"position_pct",type:"percent",default:.5,min:.05,max:1,step:.01}]},{key:"macdCross",icon:"📊",code:"\"\"\"\nMACD histogram crossover\nEnters long when MACD histogram crosses above zero; exits when it crosses below.\n\"\"\"\n\ndef on_init(ctx):\n ctx.macd_fast = ctx.param('macd_fast', 12)\n ctx.macd_slow = ctx.param('macd_slow', 26)\n ctx.macd_signal = ctx.param('macd_signal', 9)\n ctx.position_pct = ctx.param('position_pct', 0.6)\n\ndef _ema_series(vals, period):\n k = 2.0 / (period + 1)\n out = []\n e = float(vals[0])\n out.append(e)\n for v in vals[1:]:\n v = float(v)\n e = v * k + e * (1 - k)\n out.append(e)\n return out\n\ndef _macd_hist_last_two(closes, fast, slow, sig):\n n = len(closes)\n if n < slow + sig + 2:\n return None, None\n ef = _ema_series(closes, fast)\n es = _ema_series(closes, slow)\n macd = [ef[i] - es[i] for i in range(n)]\n sg = _ema_series(macd, sig)\n hist = [macd[i] - sg[i] for i in range(n)]\n return hist[-2], hist[-1]\n\ndef on_bar(ctx, bar):\n need = ctx.macd_slow + ctx.macd_signal + 30\n bars = ctx.bars(need)\n if len(bars) < need:\n return\n closes = [b['close'] for b in bars]\n h0, h1 = _macd_hist_last_two(closes, ctx.macd_fast, ctx.macd_slow, ctx.macd_signal)\n if h0 is None:\n return\n price = bar['close']\n if h0 <= 0 and h1 > 0 and not ctx.position:\n qty = (ctx.equity * ctx.position_pct) / price\n ctx.buy(price, qty)\n ctx.log(f\"MACD cross up at {price:.2f}\")\n elif h0 >= 0 and h1 < 0 and ctx.position and ctx.position['side'] == 'long':\n ctx.close_position()\n ctx.log(f\"MACD cross down at {price:.2f}\")\n",params:[{name:"macd_fast",type:"integer",default:12,min:2,max:50,step:1},{name:"macd_slow",type:"integer",default:26,min:5,max:120,step:1},{name:"macd_signal",type:"integer",default:9,min:2,max:50,step:1},{name:"position_pct",type:"percent",default:.6,min:.05,max:1,step:.01}]}];function O(t){return String(t).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function B(t){return"boolean"===typeof t?t?"True":"False":"number"===typeof t?Number.isFinite(t)?String(t):"0":null===t||void 0===t?"None":"'".concat(String(t).replace(/\\/g,"\\\\").replace(/'/g,"\\'"),"'")}var G=K;function H(t){return K.find(function(e){return e.key===t})||null}function W(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a="string"===typeof t?H(t):t;return a?a.params.reduce(function(t,a){return t[a.name]=Object.prototype.hasOwnProperty.call(e,a.name)?e[a.name]:a.default,t},{}):{}}function j(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a="string"===typeof t?H(t):t;if(!a)return"";var s=W(a,e);return a.params.reduce(function(t,e){var a=B(s[e.name]),i=new RegExp("(ctx\\.param\\(['\"]".concat(O(e.name),"['\"],\\s*)([^\\)]+)(\\))"));return t.replace(i,"$1".concat(a,"$3"))},a.code)}var Y={name:"StrategyTypeSelector",props:{selected:{type:String,default:""},isDark:{type:Boolean,default:!1}},data:function(){return{templates:G.map(function(t){return{key:t.key,icon:t.icon}})}}},J=Y,X=(0,F.A)(J,U,q,!1,null,"8ec7ab14",null),Z=X.exports,Q=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-editor",class:{"theme-dark":t.isDark}},[e("a-row",{staticClass:"editor-layout",attrs:{gutter:16}},[e("a-col",{staticClass:"code-col",attrs:{xs:24,md:16}},[e("div",{staticClass:"code-section"},[e("div",{staticClass:"section-header"},[e("div",{staticClass:"section-title-wrap"},[e("span",{staticClass:"section-title"},[e("a-icon",{attrs:{type:"code"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.title"))+" ")],1),t.selectedTemplate?e("a-tag",{staticClass:"current-template-tag",attrs:{color:"blue"}},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key)))+" ")]):t._e()],1),e("div",{staticClass:"section-actions"},[e("a-button",{staticClass:"verify-btn",attrs:{type:"link",size:"small",loading:t.verifying},on:{click:t.handleVerify}},[e("a-icon",{attrs:{type:"check-circle"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.verify"))+" ")],1)],1)]),e("div",{ref:"editorContainer",staticClass:"code-editor-container"})])]),e("a-col",{staticClass:"side-col",attrs:{xs:24,md:8}},[e("a-tabs",{staticClass:"side-tabs",attrs:{size:"small",animated:!1},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("a-tab-pane",{key:"templates",attrs:{tab:t.$t("trading-assistant.editor.templateTab"),"force-render":!0}},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(t._s(t.$t("trading-assistant.editor.templateIntroTitle")))]),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.templateIntroDesc")))])]),e("div",{staticClass:"template-list"},t._l(t.templates,function(a){return e("div",{key:a.key,staticClass:"template-item",class:{active:t.selectedTemplateKey===a.key},on:{click:function(e){return t.loadTemplate(a.key,{focusParams:!0,resetParams:!0})}}},[e("div",{staticClass:"tpl-header"},[e("span",{staticClass:"tpl-icon"},[t._v(t._s(a.icon))]),e("span",{staticClass:"tpl-name"},[t._v(t._s(t.$t("trading-assistant.template.".concat(a.key))))])]),e("p",{staticClass:"tpl-desc"},[t._v(t._s(t.$t("trading-assistant.template.".concat(a.key,"Desc"))))]),e("a-button",{staticClass:"tpl-use-btn",attrs:{type:"link",size:"small"}},[t._v(" "+t._s(t.$t("trading-assistant.template.useTemplate"))+" "),e("a-icon",{attrs:{type:"arrow-right"}})],1)],1)}),0)]),e("a-tab-pane",{key:"params",attrs:{tab:t.$t("trading-assistant.editor.paramsTab"),"force-render":!0}},[t.selectedTemplate?e("div",{staticClass:"params-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key)))+" ")]),e("div",{staticClass:"panel-intro__desc"},[t._v(" "+t._s(t.$t("trading-assistant.template.".concat(t.selectedTemplate.key,"Desc")))+" ")])]),e("a-alert",{staticClass:"params-tip",attrs:{type:"info","show-icon":"",message:t.$t("trading-assistant.editor.paramsHint")}}),e("div",{staticClass:"param-list"},t._l(t.selectedTemplate.params,function(a){return e("div",{key:a.name,staticClass:"param-item"},[e("div",{staticClass:"param-item__label-row"},[e("span",{staticClass:"param-item__label"},[t._v(t._s(t.getParamLabel(a)))]),e("span",{staticClass:"param-item__type"},[t._v(t._s(t.getParamTypeLabel(a.type)))])]),t.getParamDescription(a)?e("div",{staticClass:"param-item__desc"},[t._v(t._s(t.getParamDescription(a)))]):t._e(),"number"===a.type||"integer"===a.type||"percent"===a.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{value:t.templateParamValues[a.name],min:a.min,max:a.max,step:a.step||1,precision:"integer"===a.type?0:t.getParamPrecision(a)},on:{change:function(e){return t.handleNumericParamChange(a,e)}}}):"select"===a.type?e("a-select",{staticStyle:{width:"100%"},attrs:{value:t.templateParamValues[a.name]},on:{change:function(e){return t.handleSelectParamChange(a,e)}}},t._l(a.options||[],function(a){return e("a-select-option",{key:a.value,attrs:{value:a.value}},[t._v(" "+t._s(t.getOptionLabel(a))+" ")])}),1):"boolean"===a.type?e("div",{staticClass:"param-item__switch"},[e("a-switch",{attrs:{checked:!!t.templateParamValues[a.name]},on:{change:function(e){return t.handleBooleanParamChange(a,e)}}}),e("span",[t._v(t._s(t.templateParamValues[a.name]?t.$t("common.yes"):t.$t("common.no")))])],1):e("a-input",{attrs:{value:t.templateParamValues[a.name]},on:{input:function(e){return t.handleTextParamChange(a,e.target.value)}}})],1)}),0),e("div",{staticClass:"params-actions"},[e("a-button",{on:{click:t.resetTemplateParams}},[t._v(" "+t._s(t.$t("trading-assistant.editor.resetTemplateParams"))+" ")]),e("a-button",{attrs:{type:"primary",disabled:!t.templateDirty},on:{click:t.applySelectedTemplateToCode}},[t._v(" "+t._s(t.$t("trading-assistant.editor.applyTemplateParams"))+" ")])],1)],1):e("div",{staticClass:"params-empty-guide"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.editor.paramsEmpty")}},[e("a-button",{attrs:{type:"primary",size:"small",ghost:""},on:{click:function(e){t.activeTab="templates"}}},[e("a-icon",{attrs:{type:"appstore"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.templateTab"))+" ")],1)],1)],1)]),e("a-tab-pane",{key:"ai",attrs:{tab:t.$t("trading-assistant.editor.aiTab"),"force-render":!0}},[e("div",{staticClass:"ai-panel"},[e("div",{staticClass:"panel-intro"},[e("div",{staticClass:"panel-intro__title"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(t.$t("trading-assistant.editor.aiGenerate")))])],1),e("div",{staticClass:"panel-intro__desc"},[t._v(t._s(t.$t("trading-assistant.editor.aiHint")))])]),e("div",{staticClass:"ai-suggestions"},t._l(t.aiPromptSuggestions,function(a){return e("a-tag",{key:a.id,staticClass:"prompt-tag",on:{click:function(e){return t.applyPromptSuggestion(a.value)}}},[t._v(" "+t._s(a.label)+" ")])}),1),e("a-textarea",{attrs:{placeholder:t.$t("trading-assistant.editor.aiPromptPlaceholder"),rows:10,"auto-size":{minRows:8,maxRows:16}},model:{value:t.aiPrompt,callback:function(e){t.aiPrompt=e},expression:"aiPrompt"}}),e("div",{staticClass:"ai-actions"},[e("a-button",{attrs:{type:"primary",block:"",loading:t.aiAdjustingParams,disabled:t.aiGenerating,size:"large"},on:{click:t.handleAIAdjustParams}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.aiAdjustParamsBtn"))+" ")],1),e("a-button",{staticStyle:{"margin-top":"8px"},attrs:{block:"",loading:t.aiGenerating,disabled:t.aiAdjustingParams,size:"large"},on:{click:t.handleAIGenerate}},[e("a-icon",{attrs:{type:"code"}}),t._v(" "+t._s(t.$t("trading-assistant.editor.aiGenerateFullCodeBtn"))+" ")],1)],1),t.aiGenerating||t.aiAdjustingParams?e("div",{staticClass:"ai-status"},[e("a-icon",{attrs:{type:"loading",spin:""}}),t._v(" "+t._s(t.aiAdjustingParams?t.$t("trading-assistant.editor.aiAdjustingParams"):t.$t("trading-assistant.editor.generating"))+" ")],1):t._e()],1)])],1)],1)],1)],1)},tt=[],et=(a(6011),a(18787)),at=a(15237),st=a.n(at),it=(a(74806),a(55218),a(97923),a(50436),{name:"StrategyEditor",props:{value:{type:String,default:""},isDark:{type:Boolean,default:!1},userId:{type:[Number,String],default:1},visible:{type:Boolean,default:!1},initialTemplateKey:{type:String,default:""}},data:function(){return{activeTab:"templates",aiPrompt:"",aiGenerating:!1,aiAdjustingParams:!1,verifying:!1,editor:null,templates:G,selectedTemplateKey:"",templateParamValues:{},templateDirty:!1,refreshTimer:null}},computed:{selectedTemplate:function(){return H(this.selectedTemplateKey)},aiPromptSuggestions:function(){return[{id:"improve",label:this.$t("trading-assistant.editor.aiSuggestionImprove"),value:this.$t("trading-assistant.editor.aiSuggestionImprovePrompt")},{id:"risk",label:this.$t("trading-assistant.editor.aiSuggestionRisk"),value:this.$t("trading-assistant.editor.aiSuggestionRiskPrompt")},{id:"explain",label:this.$t("trading-assistant.editor.aiSuggestionExplain"),value:this.$t("trading-assistant.editor.aiSuggestionExplainPrompt")}]}},mounted:function(){var t=this;this.$nextTick(function(){t.initEditor(),t.initialTemplateKey?t.loadTemplate(t.initialTemplateKey,{focusParams:!0,resetParams:!0}):t.value||t.$emit("input",t._getDefaultCode())}),window.addEventListener("resize",this.scheduleEditorRefresh)},beforeDestroy:function(){window.removeEventListener("resize",this.scheduleEditorRefresh),this.refreshTimer&&(clearTimeout(this.refreshTimer),this.refreshTimer=null),this.editor&&("function"===typeof this.editor.toTextArea&&this.editor.toTextArea(),this.editor=null)},watch:{value:function(t){this.editor&&this.editor.getValue()!==t&&(this.editor.setValue(t||""),this.scheduleEditorRefresh())},isDark:function(){this.editor&&this.editor.setOption("theme",this.isDark?"monokai":"eclipse"),this.scheduleEditorRefresh()},visible:function(t){var e=this;t&&this.$nextTick(function(){e.scheduleEditorRefresh();try{window.dispatchEvent(new Event("resize"))}catch(t){}})},initialTemplateKey:function(t){t&&t!==this.selectedTemplateKey&&this.loadTemplate(t,{focusParams:!0,resetParams:!0})}},methods:{initEditor:function(){var t=this;this.$refs.editorContainer&&(this.editor=st()(this.$refs.editorContainer,{value:this.value||this._getDefaultCode(),mode:"python",theme:this.isDark?"monokai":"eclipse",lineNumbers:!0,autoCloseBrackets:!0,matchBrackets:!0,styleActiveLine:!0,tabSize:4,indentUnit:4,indentWithTabs:!1,lineWrapping:!1,viewportMargin:1/0,gutters:["CodeMirror-linenumbers"]}),this.editor.on("change",function(){t.$emit("input",t.editor.getValue())}),this.scheduleEditorRefresh())},scheduleEditorRefresh:function(){var t=this;this.refreshTimer&&clearTimeout(this.refreshTimer),this.refreshTimer=setTimeout(function(){t.editor&&t.editor.refresh()},60)},_getDefaultCode:function(){return'"""\nMy Custom Strategy\n"""\n\ndef on_init(ctx):\n # Initialize strategy parameters\n pass\n\ndef on_bar(ctx, bar):\n # Core trading logic, called on each K-line bar\n # bar: { open, high, low, close, volume, timestamp }\n price = bar[\'close\']\n\n bars = ctx.bars(20)\n if len(bars) < 20:\n return\n\n avg = sum(b[\'close\'] for b in bars) / len(bars)\n\n if price > avg and not ctx.position:\n ctx.buy(price, ctx.equity * 0.9 / price)\n ctx.log(f"BUY at {price}")\n\n elif price < avg and ctx.position:\n ctx.close_position()\n ctx.log(f"SELL at {price}")\n'},loadTemplate:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=e.focusParams,s=void 0!==a&&a,i=e.resetParams,r=void 0===i||i,n=H(t);n&&(this.selectedTemplateKey=t,!r&&this.templateParamValues&&0!==Object.keys(this.templateParamValues).length||(this.templateParamValues=W(n)),this.templateDirty=!0,this.applySelectedTemplateToCode({silent:!0}),s&&(this.activeTab="params"),this.aiPrompt.trim()||(this.aiPrompt=this.$t("trading-assistant.editor.aiPromptTemplateHint")+" "+this.$t("trading-assistant.template.".concat(n.key))),this.scheduleEditorRefresh())},getCode:function(){return this.editor?this.editor.getValue():this.value},setCode:function(t){this.editor&&this.editor.getValue()!==t?this.editor.setValue(t):this.$emit("input",t),this.scheduleEditorRefresh()},applySelectedTemplateToCode:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.silent,a=void 0!==e&&e;if(this.selectedTemplate){var s=j(this.selectedTemplate,this.templateParamValues);this.setCode(s),this.templateDirty=!1,this.$emit("template-change",{key:this.selectedTemplateKey,params:(0,u.A)({},this.templateParamValues)}),a||et.A.success(this.$t("trading-assistant.editor.templateApplied"))}},resetTemplateParams:function(){this.selectedTemplate&&(this.templateParamValues=W(this.selectedTemplate),this.templateDirty=!0,this.applySelectedTemplateToCode({silent:!1}))},getParamLabel:function(t){var e="trading-assistant.templateParam.".concat(t.name,".label"),a=this.$t(e);return a===e?t.name:a},getParamDescription:function(t){var e="trading-assistant.templateParam.".concat(t.name,".desc"),a=this.$t(e);return a===e?"":a},getParamTypeLabel:function(t){return this.$t("trading-assistant.editor.paramType.".concat(t))},getOptionLabel:function(t){if(!t)return"";if(t.labelKey){var e=this.$t(t.labelKey);if(e!==t.labelKey)return e}return t.label||t.value},getParamPrecision:function(t){if("integer"===t.type)return 0;var e=t.step;if(!e||Number.isInteger(e))return 0;var a=String(e),s=a.split(".");return s[1]?s[1].length:0},handleNumericParamChange:function(t,e){var a=""===e||null===e||void 0===e?t.default:"integer"===t.type?parseInt(e,10):Number(e);this.$set(this.templateParamValues,t.name,a),this.templateDirty=!0},handleSelectParamChange:function(t,e){this.$set(this.templateParamValues,t.name,e),this.templateDirty=!0},handleBooleanParamChange:function(t,e){this.$set(this.templateParamValues,t.name,!!e),this.templateDirty=!0},handleTextParamChange:function(t,e){this.$set(this.templateParamValues,t.name,e),this.templateDirty=!0},applyPromptSuggestion:function(t){this.aiPrompt=t},handleVerify:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.verifying=!0,e.p=1,a=t.getCode(),e.n=2,(0,y.Ay)({url:"/api/strategies/verify-code",method:"post",data:{code:a,user_id:t.userId}});case 2:s=e.v,s&&s.success?et.A.success(t.$t("trading-assistant.editor.verifySuccess")):et.A.error(s&&(s.msg||s.message)||t.$t("trading-assistant.editor.verifyFailed")),e.n=4;break;case 3:e.p=3,i=e.v,et.A.error(t.$t("trading-assistant.editor.verifyFailed")+": "+(i.message||""));case 4:return e.p=4,t.verifying=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},_coerceParamValue:function(t,e){if(null!==e&&void 0!==e){var a=t.type;if("boolean"===a)return"boolean"===typeof e?e:"true"===e||1===e||"1"===e||"false"!==e&&0!==e&&"0"!==e&&void 0;if("integer"===a){var s=parseInt(String(e),10);if(!Number.isFinite(s))return;var i=s;return null!=t.min&&(i=Math.max(t.min,i)),null!=t.max&&(i=Math.min(t.max,i)),i}if("number"===a||"percent"===a){var r=Number(e);if(!Number.isFinite(r))return;var n=r;return null!=t.min&&(n=Math.max(t.min,n)),null!=t.max&&(n=Math.min(t.max,n)),n}if("select"===a){var o=t.options||[],l=new Set(o.map(function(t){return t.value}));if(l.has(e))return e;var c=String(e);return l.has(c)?c:void 0}return String(e)}},applyAIParamUpdates:function(t){var e=this;if(!this.selectedTemplate||!t||"object"!==(0,n.A)(t))return!1;var a=new Set(this.selectedTemplate.params.map(function(t){return t.name})),s=!1;return Object.keys(t).forEach(function(i){if(a.has(i)){var r=e.selectedTemplate.params.find(function(t){return t.name===i}),n=e._coerceParamValue(r,t[i]);void 0!==n&&(e.$set(e.templateParamValues,i,n),s=!0)}}),s},handleAIAdjustParams:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt.trim()){e.n=1;break}return et.A.warning(t.$t("trading-assistant.editor.aiPromptRequired")),e.a(2);case 1:if(t.selectedTemplate){e.n=2;break}return et.A.warning(t.$t("trading-assistant.editor.aiAdjustParamsNeedTemplate")),e.a(2);case 2:return t.aiAdjustingParams=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/strategies/ai-generate",method:"post",data:{prompt:t.aiPrompt,user_id:t.userId,intent:"adjust_params",template_key:t.selectedTemplateKey,params:(0,u.A)({},t.templateParamValues),code:t.getCode()}});case 4:a=e.v,a&&a.params&&"object"===(0,n.A)(a.params)?(s=t.applyAIParamUpdates(a.params),s?(t.templateDirty=!0,t.applySelectedTemplateToCode({silent:!0}),et.A.success(t.$t("trading-assistant.editor.aiAdjustParamsSuccess"))):et.A.warning(t.$t("trading-assistant.editor.aiAdjustParamsNoChanges"))):et.A.error(a&&(a.msg||a.message)||t.$t("trading-assistant.editor.aiAdjustParamsFailed")),e.n=6;break;case 5:e.p=5,i=e.v,et.A.error(i&&i.message||t.$t("trading-assistant.editor.aiAdjustParamsFailed"));case 6:return e.p=6,t.aiAdjustingParams=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleAIGenerate:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt.trim()){e.n=1;break}return et.A.warning(t.$t("trading-assistant.editor.aiPromptRequired")),e.a(2);case 1:return t.aiGenerating=!0,e.p=2,e.n=3,(0,y.Ay)({url:"/api/strategies/ai-generate",method:"post",data:{prompt:t.aiPrompt,user_id:t.userId,intent:"generate_code",template_key:t.selectedTemplateKey||void 0,params:t.selectedTemplate?(0,u.A)({},t.templateParamValues):void 0,code:t.getCode()}});case 3:a=e.v,s=a&&"string"===typeof a.code?a.code:"",s?(t.setCode(s),et.A.success(t.$t("trading-assistant.editor.aiGenerateSuccess"))):et.A.error(a&&(a.msg||a.message)||t.$t("trading-assistant.editor.aiGenerateFailed")),e.n=5;break;case 4:e.p=4,i=e.v,et.A.error(i&&i.message||t.$t("trading-assistant.editor.aiGenerateFailed"));case 5:return e.p=5,t.aiGenerating=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()}}}),rt=it,nt=(0,F.A)(rt,Q,tt,!1,null,"35a0a386",null),ot=nt.exports,lt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"performance-analysis strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[e("a-spin",{attrs:{spinning:t.loading}},[t.hasData?e("div",[e("div",{staticClass:"metrics-grid"},[e("div",{staticClass:"metric-card",class:t.getMetricClass(t.metrics.totalReturn)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.totalReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.totalReturn)))])]),e("div",{staticClass:"metric-card",class:t.getMetricClass(t.metrics.annualReturn)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.annualReturn")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.annualReturn)))])]),e("div",{staticClass:"metric-card negative"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.maxDrawdown")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.maxDrawdown)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.sharpe")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.metrics.sharpe||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.winRate")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.formatPercent(t.metrics.winRate)))])]),e("div",{staticClass:"metric-card",class:t.getMetricClass((t.metrics.profitFactor||0)-1)},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.profitFactor")))]),e("div",{staticClass:"metric-value"},[t._v(t._s((t.metrics.profitFactor||0).toFixed(2)))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.totalTrades")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.metrics.totalTrades||0))])]),e("div",{staticClass:"metric-card"},[e("div",{staticClass:"metric-label"},[t._v(t._s(t.$t("trading-assistant.performance.runningDays")))]),e("div",{staticClass:"metric-value"},[t._v(t._s(t.metrics.runningDays||0))])])]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("trading-assistant.performance.equityCurve")))]),e("div",{ref:"equityChart",staticClass:"chart-container"})]),e("div",{staticClass:"chart-section"},[e("div",{staticClass:"chart-title"},[t._v(t._s(t.$t("trading-assistant.performance.dailyReturns")))]),e("div",{ref:"dailyChart",staticClass:"chart-container",staticStyle:{height:"250px"}})])]):t.loading?t._e():e("a-empty",{staticClass:"strategy-tab-empty",attrs:{description:t.$t("trading-assistant.performance.noData")}})],1)],1)},ct=[],dt={name:"PerformanceAnalysis",props:{strategyId:{type:[Number,String],default:null},isDark:{type:Boolean,default:!1}},data:function(){return{loading:!1,metrics:{},equityData:[],dailyReturns:[],equityChartInstance:null,dailyChartInstance:null}},computed:{hasData:function(){return this.equityData.length>0}},watch:{strategyId:{handler:function(t){t&&this.loadData()},immediate:!0},isDark:function(){var t=this;this.disposeCharts(),this.$nextTick(function(){return t.renderCharts()})}},beforeDestroy:function(){this.disposeCharts()},methods:{loadData:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return t.loading=!0,e.p=2,e.n=3,(0,p.Yx)(t.strategyId);case 3:a=e.v,a&&a.data&&(t.equityData=a.data.equity_curve||a.data||[],t.computeMetrics(),t.$nextTick(function(){return t.renderCharts()})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.p=5,t.loading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},computeMetrics:function(){var t=this.equityData;if(t.length){for(var e=t.map(function(t){return t.equity||t.value||t.y||0}),a=e[0]||1,s=e[e.length-1]||a,i=(s-a)/a,r=e[0],n=0,o=[],l=1;lr&&(r=e[l]);var c=(e[l]-r)/r;c1?Math.sqrt(o.reduce(function(t,e){return t+Math.pow(e-p,2)},0)/(o.length-1)):0,g=t.filter(function(t){return t.trade_count}).reduce(function(t,e){return t+e.trade_count},0)||0,h=t.filter(function(t){return t.win_count}).reduce(function(t,e){return t+e.win_count},0)||0,_=t.filter(function(t){return t.gross_profit}).reduce(function(t,e){return t+e.gross_profit},0),y=Math.abs(t.filter(function(t){return t.gross_loss}).reduce(function(t,e){return t+e.gross_loss},0));this.metrics={totalReturn:i,annualReturn:Math.pow(1+i,u)-1,maxDrawdown:n,sharpe:m>0?p/m*Math.sqrt(252):0,winRate:g>0?h/g:0,profitFactor:y>0?_/y:_>0?999:0,totalTrades:g,runningDays:d}}else this.metrics={}},renderCharts:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.getEcharts();case 1:if(a=e.v,a){e.n=2;break}return e.a(2);case 2:t.renderEquityChart(a),t.renderDailyChart(a);case 3:return e.a(2)}},e)}))()},getEcharts:function(){return(0,l.A)((0,o.A)().m(function t(){var e;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!window.echarts){t.n=1;break}return t.a(2,window.echarts);case 1:return t.p=1,t.n=2,Promise.resolve().then(a.bind(a,29362));case 2:return e=t.v,window.echarts=e.default||e,t.a(2,window.echarts);case 3:return t.p=3,t.v,t.a(2,null)}},t,null,[[1,3]])}))()},renderEquityChart:function(t){if(this.$refs.equityChart){this.equityChartInstance=t.init(this.$refs.equityChart,this.isDark?"dark":null);var e=this.equityData.map(function(t){return t.date||t.timestamp||t.x||""}),a=this.equityData.map(function(t){return t.equity||t.value||t.y||0});this.equityChartInstance.setOption({tooltip:{trigger:"axis"},grid:{left:60,right:20,top:20,bottom:30},xAxis:{type:"category",data:e,axisLabel:{fontSize:10}},yAxis:{type:"value",axisLabel:{fontSize:10}},series:[{type:"line",data:a,smooth:!0,lineStyle:{width:2,color:"#1890ff"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(24,144,255,0.3)"},{offset:1,color:"rgba(24,144,255,0.02)"}]}},itemStyle:{color:"#1890ff"},showSymbol:!1}]})}},renderDailyChart:function(t){this.$refs.dailyChart&&this.dailyReturns.length&&(this.dailyChartInstance=t.init(this.$refs.dailyChart,this.isDark?"dark":null),this.dailyChartInstance.setOption({tooltip:{trigger:"axis",formatter:function(t){return"".concat((100*t[0].value).toFixed(2),"%")}},grid:{left:60,right:20,top:10,bottom:30},xAxis:{type:"category",data:this.dailyReturns.map(function(t,e){return e+1}),show:!1},yAxis:{type:"value",axisLabel:{formatter:function(t){return(100*t).toFixed(1)+"%"},fontSize:10}},series:[{type:"bar",data:this.dailyReturns.map(function(t){return{value:t,itemStyle:{color:t>=0?"#52c41a":"#ff4d4f"}}}),barMaxWidth:6}]}))},disposeCharts:function(){this.equityChartInstance&&(this.equityChartInstance.dispose(),this.equityChartInstance=null),this.dailyChartInstance&&(this.dailyChartInstance.dispose(),this.dailyChartInstance=null)},formatPercent:function(t){return void 0===t||null===t?"--":(t>=0?"+":"")+(100*t).toFixed(2)+"%"},getMetricClass:function(t){return t?t>0?"positive":t<0?"negative":"":""}}},ut=dt,pt=(0,F.A)(ut,lt,ct,!1,null,"01ff5f5a",null),mt=pt.exports,gt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"strategy-logs strategy-tab-pane-inner",class:{"theme-dark":t.isDark}},[e("div",{staticClass:"logs-toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.filterLevel,callback:function(e){t.filterLevel=e},expression:"filterLevel"}},[e("a-radio-button",{attrs:{value:"all"}},[t._v("All")]),e("a-radio-button",{attrs:{value:"trade"}},[e("a-badge",{attrs:{count:t.countByLevel("trade"),"overflow-count":99,offset:[6,-2]}},[t._v(" "+t._s(t.$t("trading-assistant.logs.level.trade"))+" ")])],1),e("a-radio-button",{attrs:{value:"signal"}},[t._v(t._s(t.$t("trading-assistant.logs.level.signal")))]),e("a-radio-button",{attrs:{value:"error"}},[t._v(t._s(t.$t("trading-assistant.logs.level.error")))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-switch",{attrs:{checked:t.autoRefresh,size:"small"},on:{change:t.toggleAutoRefresh}}),e("span",{staticClass:"auto-refresh-label"},[t._v(t._s(t.$t("trading-assistant.logs.autoRefresh")))])],1)]),e("div",{ref:"logsContainer",staticClass:"logs-container custom-scrollbar"},[0===t.filteredLogs.length?e("div",{staticClass:"logs-empty"},[e("a-icon",{staticStyle:{"font-size":"32px",color:"#ccc"},attrs:{type:"file-text"}}),e("p",[t._v(t._s(t.$t("trading-assistant.logs.noLogs")))])],1):t._e(),t._l(t.filteredLogs,function(a,s){return e("div",{key:s,staticClass:"log-entry",class:"level-"+a.level},[e("span",{staticClass:"log-time"},[t._v(t._s(t.formatTime(a.timestamp)))]),e("a-tag",{staticClass:"log-level",attrs:{color:t.getLevelColor(a.level),size:"small"}},[t._v(" "+t._s(t.getLevelText(a.level))+" ")]),e("span",{staticClass:"log-message"},[t._v(t._s(a.message))])],1)})],2)])},ht=[],_t={name:"StrategyLogs",props:{strategyId:{type:[Number,String],default:null},isDark:{type:Boolean,default:!1}},data:function(){return{logs:[],filterLevel:"all",autoRefresh:!1,refreshTimer:null,loading:!1}},computed:{filteredLogs:function(){var t=this;return"all"===this.filterLevel?this.logs:this.logs.filter(function(e){return e.level===t.filterLevel})}},watch:{strategyId:{handler:function(t){t&&this.loadLogs()},immediate:!0}},beforeDestroy:function(){this.stopAutoRefresh()},methods:{loadLogs:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return t.loading=!0,e.p=2,e.n=3,(0,y.Ay)({url:"/api/strategies/logs",method:"get",params:{id:t.strategyId,limit:200}});case 3:a=e.v,a&&a.data&&(t.logs=a.data,t.$nextTick(function(){return t.scrollToBottom()})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.p=5,t.loading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},toggleAutoRefresh:function(t){var e=this;this.autoRefresh=t,t?this.refreshTimer=setInterval(function(){return e.loadLogs()},5e3):this.stopAutoRefresh()},stopAutoRefresh:function(){this.refreshTimer&&(clearInterval(this.refreshTimer),this.refreshTimer=null)},scrollToBottom:function(){var t=this.$refs.logsContainer;t&&(t.scrollTop=t.scrollHeight)},countByLevel:function(t){return this.logs.filter(function(e){return e.level===t}).length},formatTime:function(t){if(!t)return"";var e=this.$i18n.locale||"zh-CN";return T(t,{locale:e,fallback:String(t)})},getLevelColor:function(t){var e={info:"blue",warn:"orange",error:"red",trade:"green",signal:"purple"};return e[t]||"default"},getLevelText:function(t){var e="trading-assistant.logs.level.".concat(t),a=this.$t(e);return a!==e?a:t}}},yt=_t,ft=(0,F.A)(yt,gt,ht,!1,null,"5ea7be7d",null),vt=ft.exports,bt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"dashboard-pro",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"kpi-grid"},[e("div",{staticClass:"kpi-card kpi-primary"},[e("div",{staticClass:"kpi-glow"}),e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"wallet"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.totalEquity")))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"currency"},[t._v("$")]),e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.summary.total_equity)))])]),e("div",{staticClass:"kpi-sub"},[e("span",{class:t.summary.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.total_pnl>=0?"+":"")+t._s(t.formatNumber(t.summary.total_pnl))+" ")]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.totalPnl")))])])])]),e("div",{staticClass:"kpi-card kpi-win-rate"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"trophy"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.winRate")||"胜率"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.performance.win_rate,1)))]),e("span",{staticClass:"unit"},[t._v("%")])]),e("div",{staticClass:"kpi-sub"},[e("span",{staticClass:"positive"},[t._v(t._s(t.performance.winning_trades))]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.win")))]),e("span",{staticClass:"divider"},[t._v("/")]),e("span",{staticClass:"negative"},[t._v(t._s(t.performance.losing_trades))]),e("span",{staticClass:"label"},[t._v(t._s(t.$t("dashboard.label.lose")))])])]),e("div",{staticClass:"kpi-ring"},[e("svg",{attrs:{viewBox:"0 0 36 36"}},[e("path",{staticClass:"ring-bg",attrs:{d:"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"}}),e("path",{staticClass:"ring-progress",attrs:{"stroke-dasharray":"".concat(t.performance.win_rate||0,", 100"),d:"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"}})])])]),e("div",{staticClass:"kpi-card kpi-profit-factor"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"rise"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.profitFactor")||"盈亏比"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.performance.profit_factor,2)))]),e("span",{staticClass:"unit"},[t._v(":1")])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v(t._s(t.$t("dashboard.label.avgProfit"))+" ")]),e("span",{staticClass:"positive"},[t._v("$"+t._s(t.formatNumber(t.performance.avg_win)))])])])]),e("div",{staticClass:"kpi-card kpi-drawdown"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"fall"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.maxDrawdown")||"最大回撤"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount negative"},[t._v(t._s(t.formatNumber(t.performance.max_drawdown_pct,1)))]),e("span",{staticClass:"unit"},[t._v("%")])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v("$"+t._s(t.formatNumber(t.performance.max_drawdown)))])])])]),e("div",{staticClass:"kpi-card kpi-trades"},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"swap"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.totalTrades")||"总交易"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.performance.total_trades))]),e("span",{staticClass:"unit"},[t._v(t._s(t.$t("dashboard.unit.trades")))])]),e("div",{staticClass:"kpi-sub"},[e("span",[t._v(t._s(t.$t("dashboard.label.avgDaily"))+" ")]),e("span",[t._v(t._s(t.avgTradesPerDay))]),e("span",{staticClass:"label"},[t._v(" "+t._s(t.$t("dashboard.unit.trades")))])])])]),e("div",{staticClass:"kpi-card kpi-strategies clickable",on:{click:t.goToStrategyManagement}},[e("div",{staticClass:"kpi-content"},[e("div",{staticClass:"kpi-header"},[e("span",{staticClass:"kpi-icon"},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1),e("span",{staticClass:"kpi-label"},[t._v(t._s(t.$t("dashboard.runningStrategies")||"运行中策略"))])]),e("div",{staticClass:"kpi-value"},[e("span",{staticClass:"amount"},[t._v(t._s(t.summary.indicator_strategy_count))]),e("span",{staticClass:"unit"},[t._v(t._s(t.$t("dashboard.unit.strategies")))])]),e("div",{staticClass:"kpi-sub"},[e("span",{staticClass:"highlight"},[t._v(t._s(t.summary.indicator_strategy_count))]),e("span",{staticClass:"label"},[t._v(" "+t._s(t.$t("dashboard.label.indicator")))])])]),e("div",{staticClass:"card-arrow"},[e("a-icon",{attrs:{type:"right"}})],1)])]),t.showSetupGuide&&!t.hideSetupGuide?e("div",{staticClass:"setup-guide-card"},[e("div",{staticClass:"setup-guide-copy"},[e("div",{staticClass:"setup-guide-title"},[t._v(t._s(t.$t("dashboard.setupGuide.title")))]),e("div",{staticClass:"setup-guide-desc"},[t._v(t._s(t.$t("dashboard.setupGuide.desc")))]),e("div",{staticClass:"setup-guide-path"},[t._v(t._s(t.$t("dashboard.setupGuide.path")))])]),e("div",{staticClass:"setup-guide-actions"},[e("a-button",{on:{click:t.goToStrategyManagement}},[e("a-icon",{attrs:{type:"appstore"}}),t._v(" "+t._s(t.$t("dashboard.setupGuide.secondary"))+" ")],1),e("a-button",{attrs:{type:"primary"},on:{click:t.goToStrategyCreate}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("dashboard.setupGuide.primary"))+" ")],1)],1)]):t._e(),e("div",{staticClass:"chart-row"},[e("div",{staticClass:"chart-panel chart-main"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"calendar"}}),e("span",[t._v(t._s(t.$t("dashboard.profitCalendar")||"收益日曆"))])],1),e("div",{staticClass:"calendar-nav"},[e("a-button",{attrs:{type:"link",size:"small",disabled:t.currentCalendarIndex>=t.calendarMonths.length-1},on:{click:t.prevMonth}},[e("a-icon",{attrs:{type:"left"}})],1),e("span",{staticClass:"current-month"},[t._v(t._s(t.currentMonthLabel))]),e("a-button",{attrs:{type:"link",size:"small",disabled:t.currentCalendarIndex<=0},on:{click:t.nextMonth}},[e("a-icon",{attrs:{type:"right"}})],1)],1)]),e("div",{staticClass:"profit-calendar"},[t.currentCalendarMonth?[e("div",{staticClass:"month-summary"},[e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.ranking.totalProfit")))]),e("span",{staticClass:"summary-value",class:t.currentCalendarMonth.total>=0?"positive":"negative"},[t._v(" "+t._s(t.currentCalendarMonth.total>=0?"+":"")+"$"+t._s(t.formatNumber(t.currentCalendarMonth.total))+" ")])]),e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.label.win")))]),e("span",{staticClass:"summary-value positive"},[t._v(t._s(t.currentCalendarMonth.win_days))])]),e("div",{staticClass:"summary-item"},[e("span",{staticClass:"summary-label"},[t._v(t._s(t.$t("dashboard.label.lose")))]),e("span",{staticClass:"summary-value negative"},[t._v(t._s(t.currentCalendarMonth.lose_days))])])]),e("div",{staticClass:"calendar-weekdays"},t._l(t.weekdays,function(a){return e("div",{key:a,staticClass:"weekday"},[t._v(t._s(a))])}),0),e("div",{staticClass:"calendar-grid"},[t._l(t.calendarFirstDayOffset,function(t){return e("div",{key:"empty-"+t,staticClass:"calendar-cell empty"})}),t._l(t.currentCalendarMonth.days_in_month,function(a){return e("div",{key:a,staticClass:"calendar-cell",class:t.getDayClass(a)},[e("span",{staticClass:"day-number"},[t._v(t._s(a))]),null!==t.getDayProfit(a)?e("span",{staticClass:"day-profit",class:t.getDayProfit(a)>=0?"positive":"negative"},[t._v(" "+t._s(t.getDayProfit(a)>=0?"+":"")+t._s(t.formatCompactNumber(t.getDayProfit(a)))+" ")]):t._e()])})],2)]:e("div",{staticClass:"calendar-empty"},[e("a-icon",{attrs:{type:"inbox"}}),e("span",[t._v(t._s(t.$t("dashboard.noData")))])],1)],2)]),e("div",{staticClass:"chart-panel chart-side"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"pie-chart"}}),e("span",[t._v(t._s(t.$t("dashboard.strategyAllocation")||"策略分布"))])],1)]),e("div",{ref:"pieChart",staticClass:"chart-body"})])]),e("div",{staticClass:"chart-row"},[e("div",{staticClass:"chart-panel chart-half"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"area-chart"}}),e("span",[t._v(t._s(t.$t("dashboard.drawdownCurve")||"回撤曲线"))])],1)]),e("div",{ref:"drawdownChart",staticClass:"chart-body chart-sm"})]),e("div",{staticClass:"chart-panel chart-half"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"clock-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.hourlyDistribution")||"交易时段"))])],1)]),e("div",{ref:"hourlyChart",staticClass:"chart-body chart-sm"})])]),e("div",{staticClass:"chart-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"ordered-list"}}),e("span",[t._v(t._s(t.$t("dashboard.strategyRanking")||"策略排行榜"))])],1)]),e("div",{staticClass:"strategy-ranking"},[0===t.strategyStats.length?e("div",{staticClass:"empty-state"},[e("a-icon",{attrs:{type:"inbox"}}),e("span",[t._v(t._s(t.$t("dashboard.noStrategyData")))])],1):e("div",{staticClass:"ranking-grid"},t._l(t.strategyStats.slice(0,6),function(a,s){return e("div",{key:a.strategy_id,staticClass:"ranking-card",class:{"rank-top":s<3}},[e("div",{staticClass:"rank-badge",class:"rank-".concat(s+1)},[t._v(t._s(s+1))]),e("div",{staticClass:"rank-info"},[e("div",{staticClass:"rank-name"},[t._v(t._s(a.strategy_name))]),e("div",{staticClass:"rank-stats"},[e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.ranking.totalProfit")))]),e("span",{class:a.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(a.total_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(a.total_pnl))+" ")])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.winRate")))]),e("span",[t._v(t._s(t.formatNumber(a.win_rate,1))+"%")])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.profitFactor")))]),e("span",[t._v(t._s(t.formatNumber(a.profit_factor,2)))])]),e("span",{staticClass:"stat"},[e("label",[t._v(t._s(t.$t("dashboard.ranking.trades")))]),e("span",[t._v(t._s(a.total_trades))])])])]),e("div",{staticClass:"rank-pnl-bar"},[e("div",{staticClass:"bar-fill",class:a.total_pnl>=0?"positive":"negative",style:{width:"".concat(Math.min(100,Math.abs(a.total_pnl)/t.maxStrategyPnl*100),"%")}})])])}),0)])]),e("div",{staticClass:"table-row"},[e("div",{staticClass:"table-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"stock"}}),e("span",[t._v(t._s(t.$t("dashboard.currentPositions")))])],1),e("div",{staticClass:"panel-badge"},[t._v(t._s((t.summary.current_positions||[]).length))])]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.positionColumns,"data-source":t.summary.current_positions,rowKey:"id",pagination:!1,size:"small",scroll:{x:"max-content"}},scopedSlots:t._u([{key:"symbol",fn:function(a,s){return[e("div",{staticClass:"symbol-cell"},[e("span",{staticClass:"symbol-name"},[t._v(t._s(a))]),e("span",{staticClass:"symbol-strategy"},[t._v(t._s(s.strategy_name))])])]}},{key:"side",fn:function(a){return[e("span",{staticClass:"side-tag",class:"long"===a?"long":"short"},[t._v(" "+t._s("long"===a?"LONG":"SHORT")+" ")])]}},{key:"unrealized_pnl",fn:function(a,s){return[e("div",{staticClass:"pnl-cell"},[e("span",{class:a>=0?"positive":"negative"},[t._v(" "+t._s(a>=0?"+":"")+"$"+t._s(t.formatNumber(a))+" ")]),e("span",{staticClass:"pnl-percent",class:s.pnl_percent>=0?"positive":"negative"},[t._v(" "+t._s(s.pnl_percent>=0?"+":"")+t._s(t.formatNumber(s.pnl_percent))+"% ")])])]}}])})],1),e("div",{staticClass:"table-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"history"}}),e("span",[t._v(t._s(t.$t("dashboard.recentTrades")))])],1)]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.columns,"data-source":t.summary.recent_trades,rowKey:"id",pagination:{pageSize:8,size:"small"},size:"small",scroll:{x:"max-content"}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("span",{staticClass:"type-tag",class:t.getTypeClass(a)},[t._v(" "+t._s(t.getSignalTypeText(a))+" ")])]}},{key:"profit",fn:function(a,s){return[e("span",{class:"--"!==t.formatProfitValue(a,s)?a>=0?"positive":"negative":""},[t._v(" "+t._s(t.formatProfitValue(a,s))+" ")])]}},{key:"time",fn:function(a){return[e("span",{staticClass:"time-cell"},[t._v(t._s(t.formatTime(a)))])]}}])})],1)]),e("div",{staticClass:"chart-panel orders-panel"},[e("div",{staticClass:"panel-header"},[e("div",{staticClass:"panel-title"},[e("a-icon",{attrs:{type:"unordered-list"}}),e("span",[t._v(t._s(t.$t("dashboard.pendingOrders")))]),e("a-tooltip",{attrs:{title:t.soundEnabled?t.$t("dashboard.clickToMute"):t.$t("dashboard.clickToUnmute")}},[e("a-icon",{staticClass:"sound-toggle",class:{"sound-off":!t.soundEnabled},attrs:{type:t.soundEnabled?"sound":"audio-muted"},on:{click:t.toggleSound}})],1)],1),e("div",{staticClass:"panel-badge"},[t._v(t._s(t.ordersPagination.total))])]),e("a-table",{staticClass:"pro-table",attrs:{columns:t.orderColumns,"data-source":t.pendingOrders,rowKey:"id",pagination:{current:t.ordersPagination.current,pageSize:t.ordersPagination.pageSize,total:t.ordersPagination.total,showSizeChanger:!0,size:"small",showTotal:function(e){return t.$t("dashboard.totalOrders",{total:e})}},size:"small",loading:t.ordersLoading,scroll:{x:1200}},on:{change:t.handleOrdersTableChange},scopedSlots:t._u([{key:"strategy_name",fn:function(a,s){return[e("div",{staticClass:"symbol-cell"},[e("span",{staticClass:"symbol-name"},[t._v(t._s(a||"-"))]),e("span",{staticClass:"symbol-strategy"},[t._v("ID: "+t._s(s.strategy_id))])])]}},{key:"symbol",fn:function(a){return[e("span",{staticClass:"symbol-tag"},[t._v(t._s(a))])]}},{key:"signal_type",fn:function(a){return[e("span",{staticClass:"type-tag",class:t.getTypeClass(a)},[t._v(" "+t._s(t.getSignalTypeText(a))+" ")])]}},{key:"exchange",fn:function(a,s){return[s&&(s.exchange_display||s.exchange_id||a)?e("span",{staticClass:"exchange-tag",class:(s.exchange_display||s.exchange_id||a).toLowerCase()},[t._v(" "+t._s(String(s.exchange_display||s.exchange_id||a).toUpperCase())+" ")]):e("span",{staticClass:"text-muted"},[t._v("-")]),s&&s.market_type?e("div",{staticClass:"market-type"},[t._v(" "+t._s(String(s.market_type).toUpperCase())+" ")]):t._e()]}},{key:"notify",fn:function(a,s){return[e("div",{staticClass:"notify-icons"},[t._l(s&&s.notify_channels?s.notify_channels:[],function(a){return e("a-tooltip",{key:"".concat(s.id,"-").concat(a),attrs:{title:String(a)}},[e("a-icon",{staticClass:"notify-icon",attrs:{type:t.getNotifyIconType(a)}})],1)}),s&&s.notify_channels&&0!==s.notify_channels.length?t._e():e("span",{staticClass:"text-muted"},[t._v("-")])],2)]}},{key:"status",fn:function(a,s){return[e("span",{staticClass:"status-tag",class:a},[t._v(" "+t._s(t.getStatusText(a))+" ")]),"failed"===a&&s.error_message?e("div",{staticClass:"error-hint"},[e("a-tooltip",{attrs:{title:s.error_message}},[e("a-icon",{attrs:{type:"exclamation-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.viewError")))])],1)],1):t._e()]}},{key:"amount",fn:function(a,s){return[e("div",[t._v(t._s(t.formatNumber(a,8)))]),s.filled_amount?e("div",{staticClass:"sub-text"},[t._v(" "+t._s(t.$t("dashboard.filled"))+": "+t._s(t.formatNumber(s.filled_amount,8))+" ")]):t._e()]}},{key:"price",fn:function(a,s){return[s.filled_price?e("div",[t._v(t._s(t.formatNumber(s.filled_price)))]):e("div",{staticClass:"text-muted"},[t._v("-")])]}},{key:"time_info",fn:function(a,s){return[e("div",{staticClass:"time-cell"},[t._v(t._s(t.formatTime(s.created_at)))]),s.executed_at?e("div",{staticClass:"sub-text"},[t._v(" "+t._s(t.formatTime(s.executed_at))+" ")]):t._e()]}}])})],1)])},xt=[],kt=a(29362),Ct={summary:"/api/dashboard/summary",pendingOrders:"/api/dashboard/pendingOrders"};function St(){return(0,y.Ay)({url:Ct.summary,method:"get"})}function wt(t){return(0,y.Ay)({url:Ct.pendingOrders,method:"get",params:t})}var $t=a(95353),At={name:"Dashboard",props:{hideSetupGuide:{type:Boolean,default:!1}},data:function(){return{summary:{ai_strategy_count:0,indicator_strategy_count:0,total_equity:0,total_pnl:0,total_realized_pnl:0,total_unrealized_pnl:0,performance:{},strategy_stats:[],daily_pnl_chart:[],strategy_pnl_chart:[],monthly_returns:[],hourly_distribution:[],calendar_months:[],recent_trades:[],current_positions:[]},currentCalendarIndex:0,pieChart:null,drawdownChart:null,hourlyChart:null,pendingOrders:[],ordersLoading:!1,ordersPagination:{current:1,pageSize:20,total:0},orderPollTimer:null,lastOrderId:0,orderPollIntervalMs:5e3,soundEnabled:!0,beepCtx:null}},computed:(0,u.A)((0,u.A)({},(0,$t.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},performance:function(){return this.summary.performance||{}},strategyStats:function(){return this.summary.strategy_stats||[]},showSetupGuide:function(){var t=Number(this.summary.indicator_strategy_count||0),e=Array.isArray(this.summary.current_positions)&&this.summary.current_positions.length>0,a=Array.isArray(this.summary.recent_trades)&&this.summary.recent_trades.length>0;return 0===t||!e&&!a},maxStrategyPnl:function(){var t=this.strategyStats;return t.length?Math.max.apply(Math,(0,c.A)(t.map(function(t){return Math.abs(t.total_pnl||0)})).concat([1])):1},avgTradesPerDay:function(){var t=this.summary.daily_pnl_chart||[],e=t.length||1,a=this.performance.total_trades||0;return(a/e).toFixed(1)},calendarMonths:function(){return this.summary.calendar_months||[]},currentCalendarMonth:function(){var t=this.calendarMonths;return t.length&&t[this.currentCalendarIndex]||null},currentMonthLabel:function(){var t=this.currentCalendarMonth;if(!t)return"-";var e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];return"".concat(e[t.month-1]," ").concat(t.year)},weekdays:function(){return["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]},calendarFirstDayOffset:function(){var t=this.currentCalendarMonth;return t?t.first_weekday:0},orderStrategyFilters:function(){var t,e=Array.isArray(this.pendingOrders)?this.pendingOrders:[],a=new Map,s=(0,d.A)(e);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i&&i.strategy_id;if(void 0!==r&&null!==r&&!a.has(String(r))){var n=i&&i.strategy_name?String(i.strategy_name):"",o=n?"".concat(n," (ID: ").concat(r,")"):"ID: ".concat(r);a.set(String(r),{text:o,value:String(r)})}}}catch(l){s.e(l)}finally{s.f()}return Array.from(a.values()).sort(function(t,e){return String(t.text).localeCompare(String(e.text))})},columns:function(){var t=this;return[{title:this.$t("dashboard.table.time"),dataIndex:"created_at",scopedSlots:{customRender:"time"},width:150},{title:this.$t("dashboard.table.symbol"),dataIndex:"symbol",width:100},{title:this.$t("dashboard.table.type"),dataIndex:"type",scopedSlots:{customRender:"type"},width:90},{title:this.$t("dashboard.table.price"),dataIndex:"price",customRender:function(e){return t.formatNumber(e)},width:100},{title:this.$t("dashboard.table.profit"),dataIndex:"profit",scopedSlots:{customRender:"profit"},align:"right",width:100}]},positionColumns:function(){var t=this;return[{title:this.$t("dashboard.table.symbol"),dataIndex:"symbol",scopedSlots:{customRender:"symbol"}},{title:this.$t("dashboard.table.side"),dataIndex:"side",scopedSlots:{customRender:"side"}},{title:this.$t("dashboard.table.size"),dataIndex:"size",customRender:function(e){return t.formatNumber(e,4)}},{title:this.$t("dashboard.table.entryPrice"),dataIndex:"entry_price",customRender:function(e){return t.formatNumber(e)}},{title:this.$t("dashboard.table.pnl"),dataIndex:"unrealized_pnl",scopedSlots:{customRender:"unrealized_pnl"},align:"right"}]},orderColumns:function(){return[{title:this.$t("dashboard.orderTable.strategy"),dataIndex:"strategy_name",scopedSlots:{customRender:"strategy_name"},filters:this.orderStrategyFilters,filterMultiple:!0,onFilter:function(t,e){return String(e&&e.strategy_id)===String(t)},width:150},{title:this.$t("dashboard.orderTable.exchange"),dataIndex:"exchange_id",scopedSlots:{customRender:"exchange"},width:120},{title:this.$t("dashboard.orderTable.notify"),dataIndex:"notify_channels",scopedSlots:{customRender:"notify"},width:100},{title:this.$t("dashboard.orderTable.symbol"),dataIndex:"symbol",scopedSlots:{customRender:"symbol"},width:110},{title:this.$t("dashboard.orderTable.signalType"),dataIndex:"signal_type",scopedSlots:{customRender:"signal_type"},width:100},{title:this.$t("dashboard.orderTable.amount"),dataIndex:"amount",scopedSlots:{customRender:"amount"},width:130},{title:this.$t("dashboard.orderTable.price"),dataIndex:"filled_price",scopedSlots:{customRender:"price"},width:100},{title:this.$t("dashboard.orderTable.status"),dataIndex:"status",scopedSlots:{customRender:"status"},width:130},{title:this.$t("dashboard.orderTable.timeInfo"),dataIndex:"created_at",scopedSlots:{customRender:"time_info"},width:160}]}}),mounted:function(){this.fetchData(),this.fetchPendingOrders(),this.startOrderPolling(),window.addEventListener("resize",this.handleResize)},beforeDestroy:function(){this.stopOrderPolling(),window.removeEventListener("resize",this.handleResize),this.pieChart&&this.pieChart.dispose(),this.drawdownChart&&this.drawdownChart.dispose(),this.hourlyChart&&this.hourlyChart.dispose()},methods:{goToStrategyManagement:function(){this.$router.push("/trading-assistant?tab=strategy")},goToStrategyCreate:function(){this.$router.push("/trading-assistant?tab=strategy&mode=create")},fetchData:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,St();case 1:a=e.v,1===a.code&&(t.summary=(0,u.A)((0,u.A)({},t.summary),a.data),t.$nextTick(function(){t.initCharts()})),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},fetchPendingOrders:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i,r,n,l;return(0,o.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return a.ordersLoading=!0,s.p=1,i=t||a.ordersPagination.current||1,r=e||a.ordersPagination.pageSize||20,s.n=2,wt({page:i,pageSize:r});case 2:n=s.v,1===n.code&&(l=n.data||{},a.pendingOrders=l.list||[],a.ordersPagination.current=Number(l.page||i||1),a.ordersPagination.pageSize=Number(l.pageSize||r||20),a.ordersPagination.total=Number(l.total||0)),s.n=4;break;case 3:s.p=3,s.v;case 4:return s.p=4,a.ordersLoading=!1,s.f(4);case 5:return s.a(2)}},s,null,[[1,3,4,5]])}))()},playOrderBeep:function(){if(this.soundEnabled)try{var t=window.AudioContext||window.webkitAudioContext;if(!t)return;this.beepCtx||(this.beepCtx=new t);var e=this.beepCtx;"suspended"===e.state&&"function"===typeof e.resume&&e.resume().catch(function(){});var a=function(t,a){var s=e.createOscillator(),i=e.createGain();s.type="sine",s.frequency.value=a,i.gain.value=.08,s.connect(i),i.connect(e.destination),s.start(t),s.stop(t+.12)},s=e.currentTime;a(s,880),a(s+.18,1100)}catch(i){}},startOrderPolling:function(){var t=this;this.stopOrderPolling(),this.initLastOrderId(),this.orderPollTimer=setInterval(function(){t.pollNewOrders()},this.orderPollIntervalMs)},stopOrderPolling:function(){this.orderPollTimer&&(clearInterval(this.orderPollTimer),this.orderPollTimer=null)},initLastOrderId:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,wt({page:1,pageSize:1});case 1:a=e.v,1===a.code&&a.data&&a.data.list&&a.data.list.length>0&&(t.lastOrderId=a.data.list[0].id||0),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},pollNewOrders:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r,n,l,c,u;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,wt({page:1,pageSize:10});case 1:if(a=e.v,1===a.code&&a.data&&a.data.list){e.n=2;break}return e.a(2);case 2:if(s=a.data.list||[],0!==s.length){e.n=3;break}return e.a(2);case 3:i=!1,r=t.lastOrderId,n=(0,d.A)(s);try{for(n.s();!(l=n.n()).done;)c=l.value,u=c.id||0,u>t.lastOrderId&&(i=!0,u>r&&(r=u))}catch(o){n.e(o)}finally{n.f()}i&&(t.lastOrderId=r,t.playOrderBeep(),t.fetchPendingOrders(),t.$notification.info({message:t.$t("dashboard.newOrderNotify"),description:t.$t("dashboard.newOrderDesc"),duration:4})),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[0,4]])}))()},toggleSound:function(){this.soundEnabled=!this.soundEnabled,this.soundEnabled?this.$message.success(this.$t("dashboard.soundEnabled")):this.$message.info(this.$t("dashboard.soundDisabled"))},handleOrdersTableChange:function(t){var e=t&&t.current?t.current:1,a=t&&t.pageSize?t.pageSize:this.ordersPagination.pageSize||20;this.ordersPagination.current=e,this.ordersPagination.pageSize=a,this.fetchPendingOrders(e,a)},getTypeClass:function(t){if(!t)return"";var e=t.toLowerCase();return e.includes("open_long")||e.includes("add_long")?"long":e.includes("open_short")||e.includes("add_short")?"short":e.includes("close_long")?"close-long":e.includes("close_short")?"close-short":""},getSignalTypeColor:function(t){return t?(t=t.toLowerCase(),t.includes("open_long")||t.includes("add_long")?"green":t.includes("open_short")||t.includes("add_short")?"red":t.includes("close_long")?"orange":t.includes("close_short")?"purple":"blue"):"default"},getSignalTypeText:function(t){if(!t)return"-";var e={open_long:this.$t("dashboard.signalType.openLong"),open_short:this.$t("dashboard.signalType.openShort"),close_long:this.$t("dashboard.signalType.closeLong"),close_short:this.$t("dashboard.signalType.closeShort"),add_long:this.$t("dashboard.signalType.addLong"),add_short:this.$t("dashboard.signalType.addShort")};return e[t.toLowerCase()]||t.toUpperCase()},getStatusColor:function(t){var e={pending:"orange",processing:"blue",completed:"green",failed:"red",cancelled:"default"};return e[t]||"default"},getStatusText:function(t){if(!t)return"-";var e={pending:this.$t("dashboard.status.pending"),processing:this.$t("dashboard.status.processing"),completed:this.$t("dashboard.status.completed"),failed:this.$t("dashboard.status.failed"),cancelled:this.$t("dashboard.status.cancelled")};return e[t.toLowerCase()]||t.toUpperCase()},getNotifyIconType:function(t){var e=String(t||"").trim().toLowerCase(),a={browser:"bell",webhook:"link",discord:"comment",telegram:"message",tg:"message",tele:"message",email:"mail",phone:"phone"};return a[e]||"notification"},getExchangeTagColor:function(t){var e=String(t||"").trim().toLowerCase(),a={binance:"gold",okx:"purple",bitget:"cyan",signal:"geekblue"};return a[e]||"blue"},formatNumber:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t?"0.00":Number(t).toLocaleString("en-US",{minimumFractionDigits:e,maximumFractionDigits:e})},formatProfitValue:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),s=["open_long","open_short","add_long","add_short"];if(0===a&&e&&s.includes(e.type))return"--";if(Math.abs(a)<1e-6)return e&&s.includes(e.type)?"--":"$0.00";var i=a>=0?"+":"";return"".concat(i,"$").concat(this.formatNumber(a))},formatCompactNumber:function(t){if(void 0===t||null===t)return"0";var e=Math.abs(t);return e>=1e6?(t/1e6).toFixed(1)+"M":e>=1e3?(t/1e3).toFixed(1)+"k":e>=100?Math.round(t):t.toFixed(0)},prevMonth:function(){this.currentCalendarIndex0&&this.currentCalendarIndex--},getDayProfit:function(t){var e=this.currentCalendarMonth;if(!e||!e.days)return null;var a=String(t).padStart(2,"0");return void 0!==e.days[a]?e.days[a]:null},getDayClass:function(t){var e=this.getDayProfit(t);return null===e?"no-data":e>0?"profit":e<0?"loss":"zero"},formatTime:function(t){if(!t)return"-";var e=this.$i18n&&this.$i18n.locale?this.$i18n.locale:"zh-CN",a=T(t,{locale:e,fallback:"-"});return a||"-"},initCharts:function(){this.initPieChart(),this.initDrawdownChart(),this.initHourlyChart()},initPieChart:function(){var t=this,e=this.$refs.pieChart;if(e){this.pieChart=kt.init(e);var a=Array.isArray(this.summary.strategy_stats)?this.summary.strategy_stats:[],s=Array.isArray(this.summary.strategy_pnl_chart)?this.summary.strategy_pnl_chart:[],i=[];i=a.length>0?a.map(function(t){var e=t&&t.strategy_name?String(t.strategy_name):"-",a=Number(t&&t.total_pnl?t.total_pnl:0),s=Number(t&&t.total_trades?t.total_trades:0),i=0!==a?Math.abs(a):s;return{name:e,value:i,signedValue:a,trades:s}}).filter(function(t){return t.value>0}):s.map(function(t){var e=t&&t.name?String(t.name):"-",a=Number(t&&t.value?t.value:0);return{name:e,value:Math.abs(a),signedValue:a}}).filter(function(t){return t.value>0});var r=this.isDarkTheme,n=r?"#9ca3af":"#6b7280",o=[new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#3b82f6"},{offset:1,color:"#1d4ed8"}]),new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#8b5cf6"},{offset:1,color:"#6d28d9"}]),new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#10b981"},{offset:1,color:"#059669"}]),new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#f59e0b"},{offset:1,color:"#d97706"}]),new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#ec4899"},{offset:1,color:"#be185d"}]),new kt.graphic.LinearGradient(0,0,1,1,[{offset:0,color:"#06b6d4"},{offset:1,color:"#0891b2"}])],l={backgroundColor:"transparent",tooltip:{trigger:"item",backgroundColor:r?"rgba(17, 24, 39, 0.95)":"rgba(255, 255, 255, 0.95)",borderColor:r?"#374151":"#e5e7eb",textStyle:{color:r?"#f3f4f6":"#1f2937"},formatter:function(e){var a=e&&e.data&&"number"===typeof e.data.signedValue?e.data.signedValue:0,s=(a>=0?"+":"")+t.formatNumber(a,2),i=a>=0?"#10b981":"#ef4444";return'\n
\n
'.concat(e.name,'
\n
占比 ').concat(e.percent,'%
\n
PNL $').concat(s,"
\n
\n ")}},legend:{bottom:10,left:"center",itemWidth:12,itemHeight:12,itemGap:16,textStyle:{color:n,fontSize:11}},color:o,series:[{name:"策略分布",type:"pie",radius:["50%","75%"],center:["50%","45%"],avoidLabelOverlap:!1,itemStyle:{borderRadius:6,borderColor:r?"#1f2937":"#ffffff",borderWidth:3},label:{show:!1},emphasis:{label:{show:!0,fontSize:14,fontWeight:"bold",color:r?"#f3f4f6":"#1f2937"},scaleSize:8},labelLine:{show:!1},data:i.length>0?i:[{value:1,name:this.$t("dashboard.noData"),signedValue:0}]}]};this.pieChart.setOption(l)}},initDrawdownChart:function(){var t=this,e=this.$refs.drawdownChart;if(e){this.drawdownChart=kt.init(e);var a,s=(this.summary.daily_pnl_chart||[]).map(function(t){return t.date}),i=(this.summary.daily_pnl_chart||[]).map(function(t){return Number(t.profit||0)}),r=[],n=0,o=(0,d.A)(i);try{for(o.s();!(a=o.n()).done;){var l=a.value;n+=Number(l||0),r.push(n)}}catch(f){o.e(f)}finally{o.f()}var c=-1/0,u=0,p=0,m=r.map(function(t,e){c=Math.max(c,t);var a=Number((t-c).toFixed(2));return a\n
').concat(s,'
\n
\n \n \n ').concat(t.$t("dashboard.drawdown")||"Drawdown",'\n \n -$').concat(r,'\n
\n
\n
\n
\n \n ')}},grid:{left:55,right:20,bottom:35,top:20,containLabel:!1},xAxis:{type:"category",data:s,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:h,fontSize:10,formatter:function(t){return t.slice(5)}}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:h,fontSize:10,formatter:function(t){return Math.abs(t)>=1e3?"-$"+(Math.abs(t)/1e3).toFixed(1)+"k":0===t?"0":"-$"+Math.abs(t)}},splitLine:{lineStyle:{color:_,type:[4,4]}},max:0},series:[{name:this.$t("dashboard.drawdown")||"Drawdown",type:"line",data:m,smooth:.3,showSymbol:!1,lineStyle:{width:2.5,color:new kt.graphic.LinearGradient(0,0,1,0,[{offset:0,color:"#ef4444"},{offset:.5,color:"#f87171"},{offset:1,color:"#fca5a5"}]),shadowColor:"rgba(239, 68, 68, 0.4)",shadowBlur:8,shadowOffsetY:4},areaStyle:{color:new kt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:g?"rgba(239, 68, 68, 0.4)":"rgba(239, 68, 68, 0.25)"},{offset:.5,color:g?"rgba(248, 113, 113, 0.15)":"rgba(248, 113, 113, 0.1)"},{offset:1,color:"transparent"}])},markPoint:u<0?{symbol:"pin",symbolSize:45,itemStyle:{color:new kt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"#f87171"},{offset:1,color:"#dc2626"}]),shadowColor:"rgba(239, 68, 68, 0.5)",shadowBlur:10},label:{show:!0,color:"#fff",fontSize:10,fontWeight:"bold",formatter:function(){return t.$t("dashboard.label.maxDrawdownPoint")||"MAX"}},data:[{name:this.$t("dashboard.maxDrawdown")||"Max Drawdown",coord:[p,u]}]}:void 0,markLine:{silent:!0,symbol:"none",lineStyle:{color:g?"#52525b":"#a1a1aa",type:"dashed",width:1},data:[{yAxis:0}],label:{show:!1}}}]};this.drawdownChart.setOption(y)}},initHourlyChart:function(){var t=this,e=this.$refs.hourlyChart;if(e){this.hourlyChart=kt.init(e);var a=this.summary.hourly_distribution||[],s=a.map(function(t){return"".concat(String(t.hour).padStart(2,"0"),":00")}),i=a.map(function(t){return t.count||0}),r=a.map(function(t){return t.profit||0}),n=this.isDarkTheme,o=n?"#9ca3af":"#6b7280",l=n?"rgba(75, 85, 99, 0.3)":"rgba(229, 231, 235, 0.8)",c={backgroundColor:"transparent",tooltip:{trigger:"axis",backgroundColor:n?"rgba(17, 24, 39, 0.95)":"rgba(255, 255, 255, 0.95)",borderColor:n?"#374151":"#e5e7eb",textStyle:{color:n?"#f3f4f6":"#1f2937"},formatter:function(e){var a,s=Array.isArray(e)?e:[],i=s[0]&&s[0].axisValue?s[0].axisValue:"",r=0,l=0,c=t.$t("dashboard.tradeCount")||"Trade Count",u=t.$t("dashboard.profit")||"Profit",p=t.$t("dashboard.unit.trades")||"",m=(0,d.A)(s);try{for(m.s();!(a=m.n()).done;){var g=a.value;g.seriesName===c&&(r=g.data||0),g.seriesName===u&&(l=g.data||0)}}catch(y){m.e(y)}finally{m.f()}var h=l>=0?"#10b981":"#ef4444",_=(l>=0?"+":"")+t.formatNumber(l,2);return'\n
\n
'.concat(i,'
\n
').concat(c,' ').concat(r," ").concat(p,'
\n
').concat(u,' $').concat(_,"
\n
\n ")}},grid:{left:50,right:20,bottom:30,top:10,containLabel:!1},xAxis:{type:"category",data:s,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o,fontSize:10,interval:3}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:o,fontSize:10},splitLine:{lineStyle:{color:l,type:"dashed"}}},series:[{name:this.$t("dashboard.tradeCount")||"Trade Count",type:"bar",data:i,barMaxWidth:16,itemStyle:{borderRadius:[3,3,0,0],color:new kt.graphic.LinearGradient(0,0,0,1,[{offset:0,color:"#60a5fa"},{offset:1,color:"#3b82f6"}])}},{name:this.$t("dashboard.profit")||"Profit",type:"line",data:r,smooth:!0,showSymbol:!1,lineStyle:{width:2,color:"#a855f7"}}]};this.hourlyChart.setOption(c)}},handleResize:function(){this.pieChart&&this.pieChart.resize(),this.drawdownChart&&this.drawdownChart.resize(),this.hourlyChart&&this.hourlyChart.resize()}}},Tt=At,Pt=(0,F.A)(Tt,bt,xt,!1,null,"23d6ebe6",null),Mt=Pt.exports,Ft=a(40011),It=["BTC/USDT","ETH/USDT","BNB/USDT","SOL/USDT","ADA/USDT","XRP/USDT","DOGE/USDT","DOT/USDT","MATIC/USDT","AVAX/USDT","LINK/USDT","UNI/USDT","LTC/USDT","ATOM/USDT","ETC/USDT"],Nt=[{value:"binance",labelKey:"binance"},{value:"okx",labelKey:"okx"},{value:"bitget",labelKey:"bitget"},{value:"bybit",labelKey:"bybit"},{value:"coinbaseexchange",labelKey:"coinbaseexchange"},{value:"kraken",labelKey:"kraken"},{value:"kucoin",labelKey:"kucoin"},{value:"gate",labelKey:"gate"},{value:"bitfinex",labelKey:"bitfinex"},{value:"deepcoin",labelKey:"deepcoin"}],Dt=[{value:"ibkr",labelKey:"ibkr",name:"Interactive Brokers"}],Vt=[{value:"mt5",labelKey:"mt5",name:"MetaTrader 5"}],Et={name:"TradingAssistant",mixins:[_.t],components:{TradingRecords:N,PositionRecords:L,StrategyTypeSelector:Z,StrategyEditor:ot,PerformanceAnalysis:mt,StrategyLogs:vt,DashboardOverview:Mt,ExchangeAccountModal:Ft.A},computed:{showAssistantGuide:function(){return!this.assistantGuideDismissed},assistantGuideStorageKey:function(){var t,e=(null===(t=this.$store.getters.userInfo)||void 0===t?void 0:t.id)||"guest";return"trading-assistant-guide-dismissed:".concat(e)},strategyFormWrapClass:function(){var t=["strategy-form-modal"];return this.isMobile&&t.push("mobile-modal"),this.isDarkTheme&&t.push("strategy-form-modal-dark"),t.join(" ")},displayCurrentStep:function(){return this.currentStep},strategyFormLastStepIndex:function(){return"script"===this.strategyMode?2:1},showStrategyFormNext:function(){return this.currentStep=0?"text-success":"text-danger"},getPnlColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},isCryptoMarket:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()},canUseLiveTrading:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()||("USStock"===t||"Forex"===t)},isLiveTradingAvailable:function(){var t=this.selectedMarketCategory||"Crypto",e=this.currentExchangeId||"";return"crypto"===String(t).toLowerCase()?["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"].includes(e):"USStock"===t?"ibkr"===this.currentBrokerId:"Forex"===t&&"mt5"===this.currentBrokerId},showDemoTradingSwitch:function(){return this.currentExchangeId&&"binance"===this.currentExchangeId.toLowerCase()},brokerOptions:function(){var t=this;return Dt.map(function(e){var a="";try{var s="trading-assistant.brokerNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},forexBrokerOptions:function(){var t=this;return Vt.map(function(e){var a="";try{var s="trading-assistant.brokerNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},cryptoExchangeOptions:function(){var t=this;return Nt.map(function(e){var a="";try{if(e.labelKey){var s="trading-assistant.exchangeNames.".concat(e.labelKey),i=t.$t(s);i!==s&&(a=i)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},groupedStrategies:function(){return"symbol"===this.groupByMode?this.groupedBySymbol:this.groupedByStrategy},groupedByStrategy:function(){var t,e={},a=[],s=(0,d.A)(this.strategies);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i.strategy_group_id;r&&r.trim()?(e[r]||(e[r]={id:r,baseName:i.group_base_name||i.strategy_name.split("-")[0],strategies:[],runningCount:0,stoppedCount:0}),e[r].strategies.push(i),"running"===i.status?e[r].runningCount++:e[r].stoppedCount++):a.push(i)}}catch(o){s.e(o)}finally{s.f()}var n=Object.values(e).sort(function(t,e){var a=Math.max.apply(Math,(0,c.A)(t.strategies.map(function(t){return t.created_at||0}))),s=Math.max.apply(Math,(0,c.A)(e.strategies.map(function(t){return t.created_at||0})));return s-a});return{groups:n,ungrouped:a}},groupedBySymbol:function(){var t,e={},a=[],s=(0,d.A)(this.strategies);try{for(s.s();!(t=s.n()).done;){var i=t.value,r=i.trading_config||{},n=r.symbol;if(n&&n.trim()){e[n]||(e[n]={id:"symbol_".concat(n),baseName:n,strategies:[],runningCount:0,stoppedCount:0});var o=(0,u.A)((0,u.A)({},i),{},{displayInfo:{strategyName:i.strategy_name||i.group_base_name||"Unnamed",timeframe:r.timeframe||"-",indicatorName:i.indicator_name||i.indicator_config&&i.indicator_config.name||"-"}});e[n].strategies.push(o),"running"===i.status?e[n].runningCount++:e[n].stoppedCount++}else a.push(i)}}catch(c){s.e(c)}finally{s.f()}var l=Object.values(e).sort(function(t,e){return t.baseName.localeCompare(e.baseName)});return{groups:l,ungrouped:a}},unconfiguredChannels:function(){var t=[];return this.notifyChannelsUi.includes("telegram")&&(this.userNotificationSettings.telegram_bot_token||this.userNotificationSettings.telegram_chat_id||t.push("Telegram")),this.notifyChannelsUi.includes("email")&&(this.userNotificationSettings.email||t.push("Email")),this.notifyChannelsUi.includes("discord")&&(this.userNotificationSettings.discord_webhook||t.push("Discord")),this.notifyChannelsUi.includes("webhook")&&(this.userNotificationSettings.webhook_url||t.push("Webhook")),t}},data:function(){return{topTab:"overview",loading:!1,loadingRecords:!1,strategies:[],selectedStrategy:null,showFormModal:!1,pendingRouteIndicatorId:"",lastAutoStrategyName:"",lastAutoScriptStrategyName:"",scriptTemplateKeyForPayload:"",strategyMode:"",strategyCode:"",pendingScriptTemplateKey:"",showModeSelector:!1,strategyType:"indicator",selectedMarketCategory:"Crypto",currentStep:0,saving:!1,loadingIndicators:!1,availableIndicators:[],selectedIndicator:null,indicatorParams:[],indicatorParamValues:{},cryptoSymbols:It,loadingWatchlist:!1,watchlist:[],exchangeOptions:Nt,currentExchangeId:"",currentBrokerId:"ibkr",connectionTestResult:null,indicatorsLoaded:!1,editingStrategy:null,currentEquity:null,equityPollingTimer:null,backtestCollapseKeys:["risk"],trailingEnabledUi:!1,entryPctMaxUi:100,aiFilterEnabledUi:!1,isEditMode:!1,supportedIPs:[],executionModeUi:"signal",liveDisclaimerAckUi:!1,notifyChannelsUi:["browser"],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},loadingExchangeCredentials:!1,exchangeCredentials:[],showExchangeAccountModal:!1,saveCredentialUi:!1,suppressApiClearOnce:!1,selectedSymbols:[],crossSectionalSymbols:[],collapsedGroups:{},groupByMode:"strategy",showAddSymbolModal:!1,addSymbolMarket:"Crypto",addSymbolMarketTypes:[{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],addSymbolKeyword:"",searchingSymbol:!1,symbolSearchResults:[],selectedAddSymbol:null,hasSearchedSymbol:!1,addingSymbol:!1,hotSymbols:[],loadingHotSymbols:!1,searchTimer:null,assistantGuideDismissed:!1}},beforeCreate:function(){this.form=this.$form.createForm(this)},mounted:function(){var t=this;this.restoreAssistantGuidePreference(),"strategy"!==this.$route.query.tab&&"create"!==this.$route.query.mode||(this.topTab="strategy"),this.loadStrategies(),this.loadUserNotificationSettings(),"create"===this.$route.query.mode&&this.$nextTick(function(){var e=t.$route.query.indicator_id;e?(t.strategyMode="signal",t.pendingRouteIndicatorId=String(e),t._openCreateModal()):t.handleCreateStrategy()})},beforeDestroy:function(){this.stopEquityPolling()},methods:{restoreAssistantGuidePreference:function(){try{this.assistantGuideDismissed="1"===window.localStorage.getItem(this.assistantGuideStorageKey)}catch(t){this.assistantGuideDismissed=!1}},dismissAssistantGuide:function(){this.assistantGuideDismissed=!0;try{window.localStorage.setItem(this.assistantGuideStorageKey,"1")}catch(t){}},goToStrategyTab:function(){this.topTab="strategy"},openCreateStrategyFromGuide:function(){var t=this;this.topTab="strategy",this.$nextTick(function(){t.handleCreateStrategy()})},loadUserNotificationSettings:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,h.vF)();case 1:a=e.v,1===a.code&&a.data&&(t.userNotificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadWatchlist:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingWatchlist=!0,e.p=1,e.n=2,(0,m.Qo)({userid:1});case 2:a=e.v,a&&1===a.code?t.watchlist=Array.isArray(a.data)?a.data:[]:t.watchlist=[],e.n=4;break;case 3:e.p=3,e.v,t.watchlist=[];case 4:return e.p=4,t.loadingWatchlist=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCloseAddSymbolModal:function(){this.showAddSymbolModal=!1,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1},handleAddSymbolMarketChange:function(t){this.addSymbolMarket=t,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1,this.loadHotSymbols(t)},handleSymbolSearchInputChange:function(t){var e=this,a=t.target.value;if(this.addSymbolKeyword=a,this.searchTimer&&clearTimeout(this.searchTimer),!a||""===a.trim())return this.symbolSearchResults=[],this.hasSearchedSymbol=!1,void(this.selectedAddSymbol=null);this.searchTimer=setTimeout(function(){e.searchSymbolsInModal(a)},500)},handleSearchSymbol:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t&&t.trim()){a.n=1;break}return a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return e.$message.warning(e.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:if(!(e.symbolSearchResults.length>0)){a.n=3;break}return a.a(2);case 3:e.hasSearchedSymbol&&0===e.symbolSearchResults.length?e.handleDirectAdd():e.searchSymbolsInModal(t);case 4:return a.a(2)}},a)}))()},searchSymbolsInModal:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&""!==t.trim()){a.n=1;break}return e.symbolSearchResults=[],e.hasSearchedSymbol=!1,a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return a.a(2);case 2:return e.searchingSymbol=!0,e.hasSearchedSymbol=!0,a.p=3,a.n=4,(0,m._3)({market:e.addSymbolMarket,keyword:t.trim()});case 4:s=a.v,s&&1===s.code&&Array.isArray(s.data)?e.symbolSearchResults=s.data:e.symbolSearchResults=[],a.n=6;break;case 5:a.p=5,a.v,e.symbolSearchResults=[];case 6:return a.p=6,e.searchingSymbol=!1,a.f(6);case 7:return a.a(2)}},a,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.addSymbolKeyword&&this.addSymbolKeyword.trim()?this.addSymbolMarket?this.selectedAddSymbol={market:this.addSymbolMarket,symbol:this.addSymbolKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},handleSelectAddSymbol:function(t){this.selectedAddSymbol={market:this.addSymbolMarket,symbol:t.symbol,name:t.name||""}},loadHotSymbols:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t||(t=e.addSymbolMarket||"Crypto"),t){a.n=1;break}return a.a(2);case 1:return e.loadingHotSymbols=!0,a.p=2,a.n=3,(0,m.z6)({market:t,limit:10});case 3:s=a.v,s&&1===s.code&&s.data?e.hotSymbols=s.data:e.hotSymbols=[],a.n=5;break;case 4:a.p=4,a.v,e.hotSymbols=[];case 5:return a.p=5,e.loadingHotSymbols=!1,a.f(5);case 6:return a.a(2)}},a,null,[[2,4,5,6]])}))()},handleConfirmAddSymbol:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r,n,l,d;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a="",s="",!t.selectedAddSymbol){e.n=1;break}a=t.selectedAddSymbol.market,s=t.selectedAddSymbol.symbol.toUpperCase(),e.n=4;break;case 1:if(!t.addSymbolKeyword||!t.addSymbolKeyword.trim()){e.n=3;break}if(t.addSymbolMarket){e.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),e.a(2);case 2:a=t.addSymbolMarket,s=t.addSymbolKeyword.trim().toUpperCase(),e.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),e.a(2);case 4:return t.addingSymbol=!0,e.p=5,e.n=6,(0,m.dp)({userid:1,market:a,symbol:s});case 6:if(i=e.v,!i||1!==i.code){e.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),e.n=7,t.loadWatchlist();case 7:r="".concat(a,":").concat(s),t.isEditMode?(t.form.setFieldsValue({symbol:r}),t.handleWatchlistSymbolChange(r)):(t.selectedSymbols.includes(r)||(t.selectedSymbols=[].concat((0,c.A)(t.selectedSymbols),[r])),t.handleMultiSymbolChange(t.selectedSymbols)),t.handleCloseAddSymbolModal(),e.n=9;break;case 8:t.$message.error((null===i||void 0===i?void 0:i.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:e.n=11;break;case 10:e.p=10,d=e.v,l=(null===d||void 0===d||null===(n=d.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.msg)||(null===d||void 0===d?void 0:d.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(l);case 11:return e.p=11,t.addingSymbol=!1,e.f(11);case 12:return e.a(2)}},e,null,[[5,10,11,12]])}))()},filterWatchlistOption:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===s||String(s).toLowerCase().includes(String(t||"").toLowerCase())},filterWatchlistOptionWithAdd:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===s||String(s).toLowerCase().includes(String(t||"").toLowerCase())},handleMultiSymbolChangeWithAdd:function(t){if(t&&t.includes("__add_symbol_option__"))return this.selectedSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);this.handleMultiSymbolChange(t)},handleStrategyTypeChange:function(t){var e=t.target.value;"single"===e&&(this.crossSectionalSymbols=[])},handleCrossSectionalSymbolChange:function(t){if(t&&t.includes("__add_symbol_option__"))return this.crossSectionalSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(this.crossSectionalSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),s=e.slice(0,a);this.selectedMarketCategory=s||"Crypto"}}},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},handleWatchlistSymbolChange:function(t){var e=this;if("__add_symbol_option__"===t)return this.$nextTick(function(){e.form.setFieldsValue({symbol:void 0})}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(t&&"string"===typeof t&&t.includes(":")){var a=t.indexOf(":"),s=t.slice(0,a);if(this.selectedMarketCategory=s||"Crypto","Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var i=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!i){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}}},handleSimpleSymbolChange:function(t){if("__add_symbol_option__"===t)return this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);var e=t?[t]:[];this.handleMultiSymbolChange(e)},handleMultiSymbolChange:function(t){if(this.selectedSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),s=e.slice(0,a);this.selectedMarketCategory=s||"Crypto"}}if("Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var i=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!i){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}},loadExchangeCredentials:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingExchangeCredentials=!0,e.p=1,e.n=2,(0,g.IA)({user_id:1});case 2:a=e.v,a&&1===a.code?t.exchangeCredentials=a.data&&a.data.items||[]:(t.exchangeCredentials=[],t.$message.warning((null===a||void 0===a?void 0:a.msg)||t.$t("trading-assistant.messages.loadFailed"))),e.n=4;break;case 3:e.p=3,e.v,t.exchangeCredentials=[],t.$message.warning(t.$t("trading-assistant.exchange.testFailed"));case 4:return e.p=4,t.loadingExchangeCredentials=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},goToIndicatorAnalysisCreate:function(){this.$router.push("/indicator-analysis")},handleExchangeAccountCreated:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return a.n=1,e.loadExchangeCredentials();case 1:if(s=t&&(t.id||t.credential_id),!s){a.n=3;break}try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:s})}catch(r){}return a.n=2,e.handleCredentialSelectChange(s);case 2:a.n=4;break;case 3:if(1!==e.exchangeCredentials.length){a.n=4;break}i=e.exchangeCredentials[0].id;try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:i})}catch(r){}return a.n=4,e.handleCredentialSelectChange(i);case 4:return a.a(2)}},a)}))()},formatCredentialLabel:function(t){if(!t)return"";var e=(t.name||"").trim(),a=t.exchange_id||"",s=t.api_key_hint||"";return e?"".concat(a.toUpperCase()," - ").concat(e," (").concat(s,")"):"".concat(a.toUpperCase()," (").concat(s,")")},isCredentialCompatible:function(t){if(!t||!t.exchange_id)return!0;var e=(t.exchange_id||"").toLowerCase(),a=this.selectedMarketCategory||"Crypto";if("mt5"===e)return"Forex"===a;if("ibkr"===e)return"USStock"===a;var s=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex","deepcoin"];return!s.includes(e)||"Crypto"===a},handleCredentialSelectChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t){a.n=1;break}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 1:if(s=e.exchangeCredentials.find(function(e){return String(e.id)===String(t)}),!s){a.n=5;break}if(i=(s.exchange_id||"").toLowerCase(),"mt5"!==i||"Forex"===e.selectedMarketCategory){a.n=2;break}e.$message.error(e.$t("trading-assistant.validation.mt5OnlyForForex"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 2:if("ibkr"!==i||"USStock"===e.selectedMarketCategory){a.n=3;break}e.$message.error(e.$t("trading-assistant.validation.ibkrOnlyForUSStock"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 3:if(r=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"],!r.includes(i)||"Crypto"===e.selectedMarketCategory){a.n=4;break}e.$message.error(e.$t("trading-assistant.validation.cryptoExchangeOnlyForCrypto"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 4:e.currentExchangeId=s.exchange_id||"";case 5:e.connectionTestResult=null;case 6:return a.a(2)}},a)}))()},onSaveCredentialChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.saveCredentialUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({save_credential:e})}catch(a){}},onExecutionModeChange:function(t){var e=t&&t.target?t.target.value:t;if(this.executionModeUi=e||"signal",!this.canUseLiveTrading&&"signal"!==this.executionModeUi){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(a){}}},setExecutionModeUi:function(t){var e=t||"signal";this.onExecutionModeChange(e);try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:e})}catch(a){}},onLiveDisclaimerAckChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.liveDisclaimerAckUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:e})}catch(a){}},onNotifyChannelsChange:function(t){this.notifyChannelsUi=Array.isArray(t)?t:[]},formatCurrency:function(t){return null===t||void 0===t?"-":"$"+t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnl:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+"$"+Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnlPercent:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+Math.abs(t).toFixed(2)+"%"},loadStrategies:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,p.EM)();case 2:a=e.v,1===a.code?(s=a.data.strategies||[],t.strategies=s,t.selectedStrategy&&(i=t.strategies.find(function(e){return e.id===t.selectedStrategy.id}),t.selectedStrategy=i||null)):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadFailed")),e.n=4;break;case 3:e.p=3,e.v,t.$message.error(t.$t("trading-assistant.messages.loadFailed"));case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCreateStrategy:function(){this.isEditMode=!1,this.editingStrategy=null,this.strategyMode="",this.strategyCode="",this.pendingScriptTemplateKey="",this.showModeSelector=!0,this.showFormModal=!1},handleModeSelect:function(t){this.strategyMode=t,this.pendingScriptTemplateKey="",this.showModeSelector=!1,this._openCreateModal()},handleUseTemplate:function(t){this.strategyMode="script",this.pendingScriptTemplateKey=t,this.showModeSelector=!1,this._openCreateModal()},_openCreateModal:function(){var t=this;this.strategyType="indicator",this.currentStep=0,this.currentExchangeId="",this.currentBrokerId="ibkr",this.selectedIndicator=null,this.connectionTestResult=null,this.executionModeUi="signal",this.notifyChannelsUi=["browser"],this.saveCredentialUi=!1,this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.selectedMarketCategory="Crypto",this.selectedSymbols=[];var e="script"===this.strategyMode,a=e?this.buildScriptStrategyDefaultName(this.pendingScriptTemplateKey||null):this.buildStrategyDefaultName();this.lastAutoStrategyName=a,this.lastAutoScriptStrategyName=e?a:"",this.scriptTemplateKeyForPayload=e&&this.pendingScriptTemplateKey||"",this.form.resetFields(),this.form.setFieldsValue({strategy_name:a,execution_mode:"signal",notify_channels:["browser"],save_credential:!1,live_disclaimer_ack:!1,initial_capital:1e3,market_type:"swap",leverage:5,trade_direction:"long",timeframe:"15m",cs_strategy_type:"single"}),this.liveDisclaimerAckUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.loadWatchlist();case 1:return e.n=2,t.loadIndicators();case 2:t.applyPendingRouteIndicatorSelection(),t.loadExchangeCredentials();case 3:return e.a(2)}},e)})))},handleEditStrategy:function(t){var e=this;"running"!==t.status?(this.strategyType="indicator",this.strategyMode=t.strategy_mode||"signal",this.strategyCode=t.strategy_code||"",this.pendingScriptTemplateKey="",this.isEditMode=!0,this.editingStrategy=t,this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.form.resetFields(),this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return e.loadWatchlist(),e.loadIndicators(),e.loadExchangeCredentials(),a.n=1,e.loadStrategyDataToForm(t);case 1:return a.a(2)}},a)})))):this.$message.warning(this.$t("trading-assistant.messages.runningWarning"))},loadStrategyDataToForm:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r,l,c,d,u,p,m,g,h,_,y,f,v,b,x,k,C,S,w,$,A,T,P,M,F,I,N,D,V,E,R,z,L,U,q,K,O,B,G,H,W,j,Y,J,X,Z;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(e.indicatorsLoaded){a.n=1;break}return a.n=1,e.loadIndicators();case 1:return a.n=2,e.$nextTick();case 2:return e.selectedMarketCategory=t.market_category||"Crypto",d=t.execution_mode||"signal",e.executionModeUi=d,e.liveDisclaimerAckUi="live"===d,u=t.notification_config&&t.notification_config.channels||["browser"],e.notifyChannelsUi=Array.isArray(u)?u:["browser"],p=!1,m=!1,t.trading_config&&(f=t.trading_config||{},v=f.trailing&&"object"===(0,n.A)(f.trailing)?f.trailing:null,p=void 0!==f.trailing_enabled?!!f.trailing_enabled:!(!v||!v.enabled),b=f.enable_ai_filter,m=!0===b||"true"===b||1===b||"1"===b,x=f.scale&&"object"===(0,n.A)(f.scale)?f.scale:null,k=f.position&&"object"===(0,n.A)(f.position)?f.position:null,C=new Set(["risk"]),(f.trend_add_enabled||f.dca_add_enabled||x&&(null!==(g=x.trendAdd)&&void 0!==g&&g.enabled||null!==(h=x.dcaAdd)&&void 0!==h&&h.enabled))&&C.add("scale"),(f.trend_reduce_enabled||f.adverse_reduce_enabled||x&&(null!==(_=x.trendReduce)&&void 0!==_&&_.enabled||null!==(y=x.adverseReduce)&&void 0!==y&&y.enabled))&&C.add("reduce"),(void 0!==f.entry_pct||k&&void 0!==k.entryPct)&&C.add("position"),e.backtestCollapseKeys=Array.from(C)),e.trailingEnabledUi=p,e.aiFilterEnabledUi=m,a.n=3,e.$nextTick();case 3:return e.form.setFieldsValue({enable_ai_filter:m}),a.n=4,e.$nextTick();case 4:if(e.form.setFieldsValue({execution_mode:e.executionModeUi,live_disclaimer_ack:e.liveDisclaimerAckUi,notify_channels:e.notifyChannelsUi,notify_email:(null===(s=t.notification_config)||void 0===s||null===(s=s.targets)||void 0===s?void 0:s.email)||"",notify_phone:(null===(i=t.notification_config)||void 0===i||null===(i=i.targets)||void 0===i?void 0:i.phone)||"",notify_telegram:(null===(r=t.notification_config)||void 0===r||null===(r=r.targets)||void 0===r?void 0:r.telegram)||"",notify_discord:(null===(l=t.notification_config)||void 0===l||null===(l=l.targets)||void 0===l?void 0:l.discord)||"",notify_webhook:(null===(c=t.notification_config)||void 0===c||null===(c=c.targets)||void 0===c?void 0:c.webhook)||""}),S="script"===t.strategy_mode||"ScriptStrategy"===t.strategy_type,!S){a.n=5;break}return w=t.trading_config||{},$=w.symbol||t.symbol||"",A="string"===typeof $&&$.includes(":")?$:"".concat(e.selectedMarketCategory,":").concat($),T=w.script_template_key?String(w.script_template_key):"",e.scriptTemplateKeyForPayload=T,e.pendingScriptTemplateKey=T,e.lastAutoScriptStrategyName=t.strategy_name||"",e.lastAutoStrategyName=t.strategy_name||"",P="futures"===w.market_type?"swap":w.market_type||"swap",e.form.setFieldsValue({strategy_name:t.strategy_name,symbol:A,initial_capital:null!=w.initial_capital?w.initial_capital:t.initial_capital||1e3,leverage:null!=w.leverage?w.leverage:t.leverage||5,trade_direction:w.trade_direction||"long",timeframe:w.timeframe||t.timeframe||"15m",market_type:P}),a.a(2);case 5:if(!t.indicator_config||!t.indicator_config.indicator_id){a.n=8;break}if(M=t.indicator_config.indicator_id,F=e.availableIndicators.find(function(t){return String(t.id)===String(M)}),!F){a.n=7;break}return N=String(F.id),e.form.setFieldsValue({indicator_id:N}),a.n=6,e.handleIndicatorChange(N);case 6:D=null===(I=t.trading_config)||void 0===I?void 0:I.indicator_params,D&&"object"===(0,n.A)(D)&&Object.keys(D).forEach(function(t){t in e.indicatorParamValues&&e.$set(e.indicatorParamValues,t,D[t])}),a.n=8;break;case 7:e.form.setFieldsValue({indicator_id:String(M)});case 8:if(!t.exchange_config){a.n=12;break}if(V=t.exchange_config.exchange_id||"",E="live"===e.executionModeUi,R=["Crypto","USStock","Forex"].includes(e.selectedMarketCategory),z="USStock"===e.selectedMarketCategory,L="Forex"===e.selectedMarketCategory,!E||!R){a.n=11;break}if(!z){a.n=9;break}e.currentBrokerId=V||"ibkr",e.form.setFieldsValue({broker_id:V||"ibkr",ibkr_host:t.exchange_config.ibkr_host||"127.0.0.1",ibkr_port:t.exchange_config.ibkr_port||7497,ibkr_client_id:t.exchange_config.ibkr_client_id||1,ibkr_account:t.exchange_config.ibkr_account||""}),a.n=11;break;case 9:if(!L){a.n=10;break}e.currentBrokerId=V||"mt5",e.form.setFieldsValue({forex_broker_id:V||"mt5",mt5_server:t.exchange_config.mt5_server||"",mt5_login:t.exchange_config.mt5_login||"",mt5_password:t.exchange_config.mt5_password||"",mt5_terminal_path:t.exchange_config.mt5_terminal_path||""}),a.n=11;break;case 10:if(e.currentExchangeId=V||t.exchange_config.exchange_id||"",U=t.exchange_config.credential_id,!U){a.n=11;break}return e.form.setFieldsValue({credential_id:U}),a.n=11,e.handleCredentialSelectChange(U);case 11:z||L?e.currentBrokerId=V||(L?"mt5":"ibkr"):e.currentExchangeId=V;case 12:if(t.trading_config){if(q=t.trading_config||{},K=q.trailing&&"object"===(0,n.A)(q.trailing)?q.trailing:null,O=q.scale&&"object"===(0,n.A)(q.scale)?q.scale:null,B=q.position&&"object"===(0,n.A)(q.position)?q.position:null,G=q.strategy_type||t.strategy_type||"single","cross_sectional"===G)if(e.form.setFieldsValue({cs_strategy_type:"cross_sectional",portfolio_size:q.portfolio_size||10,long_ratio:q.long_ratio||.5,rebalance_frequency:q.rebalance_frequency||"daily"}),q.symbol_list&&Array.isArray(q.symbol_list))e.crossSectionalSymbols=q.symbol_list;else if(t.symbol_list)try{H="string"===typeof t.symbol_list?JSON.parse(t.symbol_list):t.symbol_list,Array.isArray(H)&&(e.crossSectionalSymbols=H)}catch(o){e.crossSectionalSymbols=[]}else e.crossSectionalSymbols=[];else e.form.setFieldsValue({cs_strategy_type:"single"}),e.crossSectionalSymbols=[];W=O&&O.trendAdd?O.trendAdd:null,j=O&&O.dcaAdd?O.dcaAdd:null,Y=O&&O.trendReduce?O.trendReduce:null,J=O&&O.adverseReduce?O.adverseReduce:null,X=q.symbol,Z="string"===typeof X&&X.includes(":")?X:"".concat(e.selectedMarketCategory,":").concat(X),e.form.setFieldsValue({strategy_name:t.strategy_name,symbol:Z,initial_capital:q.initial_capital,leverage:q.leverage,trade_direction:q.trade_direction||"long",timeframe:q.timeframe||"1H",market_type:"futures"===q.market_type?"swap":q.market_type||"swap",take_profit_pct:q.take_profit_pct||0,stop_loss_pct:q.stop_loss_pct||0,trailing_enabled:p,trailing_stop_pct:void 0!==q.trailing_stop_pct?q.trailing_stop_pct||0:K&&K.pct||0,trailing_activation_pct:void 0!==q.trailing_activation_pct?q.trailing_activation_pct||0:K&&K.activationPct||0,trend_add_enabled:void 0!==q.trend_add_enabled?!!q.trend_add_enabled:!(!W||!W.enabled),trend_add_step_pct:void 0!==q.trend_add_step_pct?q.trend_add_step_pct||0:W&&W.stepPct||0,trend_add_size_pct:void 0!==q.trend_add_size_pct?q.trend_add_size_pct||0:W&&W.sizePct||0,trend_add_max_times:void 0!==q.trend_add_max_times?q.trend_add_max_times||0:W&&W.maxTimes||0,dca_add_enabled:void 0!==q.dca_add_enabled?!!q.dca_add_enabled:!(!j||!j.enabled),dca_add_step_pct:void 0!==q.dca_add_step_pct?q.dca_add_step_pct||0:j&&j.stepPct||0,dca_add_size_pct:void 0!==q.dca_add_size_pct?q.dca_add_size_pct||0:j&&j.sizePct||0,dca_add_max_times:void 0!==q.dca_add_max_times?q.dca_add_max_times||0:j&&j.maxTimes||0,trend_reduce_enabled:void 0!==q.trend_reduce_enabled?!!q.trend_reduce_enabled:!(!Y||!Y.enabled),trend_reduce_step_pct:void 0!==q.trend_reduce_step_pct?q.trend_reduce_step_pct||0:Y&&Y.stepPct||0,trend_reduce_size_pct:void 0!==q.trend_reduce_size_pct?q.trend_reduce_size_pct||0:Y&&Y.sizePct||0,trend_reduce_max_times:void 0!==q.trend_reduce_max_times?q.trend_reduce_max_times||0:Y&&Y.maxTimes||0,adverse_reduce_enabled:void 0!==q.adverse_reduce_enabled?!!q.adverse_reduce_enabled:!(!J||!J.enabled),adverse_reduce_step_pct:void 0!==q.adverse_reduce_step_pct?q.adverse_reduce_step_pct||0:J&&J.stepPct||0,adverse_reduce_size_pct:void 0!==q.adverse_reduce_size_pct?q.adverse_reduce_size_pct||0:J&&J.sizePct||0,adverse_reduce_max_times:void 0!==q.adverse_reduce_max_times?q.adverse_reduce_max_times||0:J&&J.maxTimes||0,entry_pct:0===q.entry_pct||q.entry_pct?q.entry_pct:B&&B.entryPct?B.entryPct:100,enable_ai_filter:m}),e.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()})}case 13:return a.a(2)}},a)}))()},handleSelectStrategy:function(t){this.selectedStrategy=t,this.currentEquity=null,this.loadStrategyDetails(),this.startEquityPolling()},loadStrategyDetails:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,n,l,c,u,m,g,h,_,y,f;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedStrategy){e.n=1;break}return e.a(2,Promise.resolve());case 1:return e.p=1,e.n=2,Promise.all([(0,p.Yx)(t.selectedStrategy.id),(0,p.oK)(t.selectedStrategy.id)]);case 2:if(a=e.v,s=(0,r.A)(a,2),i=s[0],n=s[1],l=null,1===i.code&&i.data&&(Array.isArray(i.data)&&i.data.length>0?(c=i.data[i.data.length-1],l=c.equity):(m=(null===(u=t.selectedStrategy.trading_config)||void 0===u?void 0:u.initial_capital)||t.selectedStrategy.initial_capital,l=m||null)),g=0,1===n.code&&n.data){h=n.data.positions||n.data.items||[],_=(0,d.A)(h);try{for(_.s();!(y=_.n()).done;)f=y.value,g+=parseFloat(f.unrealized_pnl||f.unrealizedPnl||0)}catch(o){_.e(o)}finally{_.f()}}t.currentEquity=null!==l?l+g:null,e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},startEquityPolling:function(){var t=this;this.stopEquityPolling(),this.selectedStrategy&&(this.loadStrategyDetails(),this.equityPollingTimer=setInterval(function(){t.loadStrategyDetails()},1e4))},stopEquityPolling:function(){this.equityPollingTimer&&(clearInterval(this.equityPollingTimer),this.equityPollingTimer=null)},handleCloseModal:function(){this.showFormModal=!1,this.editingStrategy=null,this.isEditMode=!1,this.strategyType="indicator",this.strategyMode="",this.strategyCode="",this.pendingScriptTemplateKey="",this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.indicatorsLoaded=!1,this.availableIndicators=[],this.pendingRouteIndicatorId="",this.lastAutoStrategyName="",this.lastAutoScriptStrategyName="",this.scriptTemplateKeyForPayload="",this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.executionModeUi="signal",this.liveDisclaimerAckUi=!1,this.form.resetFields()},handleRefresh:function(){this.loadStrategies(),this.showFormModal=!1},handleMenuClick:function(t,e){switch(t){case"start":this.handleStartStrategy(e.id);break;case"stop":this.handleStopStrategy(e.id);break;case"edit":this.handleEditStrategy(e);break;case"backtest":this.handleBacktestStrategy(e);break;case"delete":this.handleDeleteStrategy(e);break}},toggleGroup:function(t){this.$set(this.collapsedGroups,t,!this.collapsedGroups[t])},handleBacktestStrategy:function(t){t&&t.id&&this.$router.push({path:"/backtest-center",query:{tab:"strategy",strategy_id:String(t.id)}})},handleGroupMenuClick:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i,r;return(0,o.A)().w(function(s){while(1)switch(s.n){case 0:i=e.strategies.map(function(t){return t.id}),r=t,s.n="startAll"===r?1:"stopAll"===r?3:"deleteAll"===r?5:7;break;case 1:return s.n=2,a.handleBatchStartStrategies(i,e.baseName);case 2:return s.a(3,7);case 3:return s.n=4,a.handleBatchStopStrategies(i,e.baseName);case 4:return s.a(3,7);case 5:return s.n=6,a.handleBatchDeleteStrategies(i,e.baseName);case 6:return s.a(3,7);case 7:return s.a(2)}},s)}))()},handleBatchStartStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.UH)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStartSuccess",{count:r})),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchStartFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStartFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchStopStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.GF)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStopSuccess",{count:r})),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchStopFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStopFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchDeleteStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function s(){var i;return(0,o.A)().w(function(s){while(1)switch(s.n){case 0:i=a.$t("trading-assistant.messages.batchDeleteConfirm",{count:t.length,name:e}),a.$confirm({class:a.isDarkTheme?"ta-strategy-confirm-modal":"",title:a.$t("trading-assistant.deleteAll"),content:i,okText:a.$t("trading-assistant.deleteAll"),okType:"danger",cancelText:a.$t("trading-assistant.form.cancel"),onOk:function(){var e=(0,l.A)((0,o.A)().m(function e(){var s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.xQ)({strategy_ids:t});case 1:s=e.v,1===s.code?(r=(null===(i=s.data)||void 0===i||null===(i=i.success_ids)||void 0===i?void 0:i.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchDeleteSuccess",{count:r})),a.selectedStrategy&&t.includes(a.selectedStrategy.id)&&(a.selectedStrategy=null,a.stopEquityPolling()),a.loadStrategies()):a.$message.error(s.msg||a.$t("trading-assistant.messages.batchDeleteFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchDeleteFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}));function s(){return e.apply(this,arguments)}return s}()});case 1:return s.a(2)}},s)}))()},handleStartStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.mV)(t);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.startSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="running")):e.$message.error(s.msg||e.$t("trading-assistant.messages.startFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.startFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleStopStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.Ke)(t);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.stopSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="stopped")):e.$message.error(s.msg||e.$t("trading-assistant.messages.stopFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.stopFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleDeleteStrategy:function(t){var e=this,a=this.$t("trading-assistant.messages.deleteConfirmWithName",{name:t.strategy_name});this.$confirm({class:this.isDarkTheme?"ta-strategy-confirm-modal":"",title:this.$t("trading-assistant.deleteStrategy"),content:a,okText:this.$t("trading-assistant.deleteStrategy"),okType:"danger",cancelText:this.$t("trading-assistant.form.cancel"),onOk:function(){var a=(0,l.A)((0,o.A)().m(function a(){var s;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.v_)(t.id);case 1:s=a.v,1===s.code?(e.$message.success(e.$t("trading-assistant.messages.deleteSuccess")),e.selectedStrategy&&e.selectedStrategy.id===t.id&&(e.selectedStrategy=null,e.stopEquityPolling()),e.loadStrategies()):e.$message.error(s.msg||e.$t("trading-assistant.messages.deleteFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.deleteFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}));function s(){return a.apply(this,arguments)}return s}()})},getStatusColor:function(t){var e={running:"green",stopped:"default",error:"red"};return e[t]||"default"},getStatusText:function(t){return this.$t("trading-assistant.status.".concat(t))||t},getStrategyTypeText:function(t){return this.$t("trading-assistant.strategyType.".concat(t))||t},getTradeDirectionText:function(t){if(!t)return"";var e={long:this.$t("trading-assistant.form.tradeDirectionLong")||"做多",short:this.$t("trading-assistant.form.tradeDirectionShort")||"做空",both:this.$t("trading-assistant.form.tradeDirectionBoth")||"双向"};return e[t]||t},handleIndicatorSelectFocus:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.indicatorsLoaded||t.loadingIndicators){e.n=1;break}return e.n=1,t.loadIndicators();case 1:return e.a(2)}},e)}))()},loadIndicators:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s,i,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.loadingIndicators){e.n=1;break}return e.a(2,new Promise(function(e){var a=setInterval(function(){t.loadingIndicators||(clearInterval(a),e())},100)}));case 1:if(!t.indicatorsLoaded){e.n=2;break}return e.a(2,Promise.resolve());case 2:return a=t.$store.getters.userInfo||{},s=a.id||1,t.loadingIndicators=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:s}});case 4:i=e.v,1===i.code&&i.data?(r=i.data.map(function(t){return{id:t.id,name:t.name,description:t.description,type:t.indicator_type||t.indicatorType||"python",code:t.code,is_buy:t.is_buy,source:1===t.is_buy?"bought":"custom"}}),t.availableIndicators=r,t.indicatorsLoaded=!0,t.applyPendingRouteIndicatorSelection()):(t.availableIndicators=[],t.$message.warning(i.msg||t.$t("trading-assistant.messages.loadIndicatorsFailed"))),e.n=6;break;case 5:e.p=5,e.v,t.availableIndicators=[],t.$message.warning(t.$t("trading-assistant.messages.loadIndicatorsFailed"));case 6:return e.p=6,t.loadingIndicators=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleIndicatorChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var s,i,r;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=String(t),e.selectedIndicator=e.availableIndicators.find(function(t){return String(t.id)===s}),e.applyAutoStrategyName(e.selectedIndicator),e.indicatorParams=[],e.indicatorParamValues={},!t){a.n=4;break}return a.p=1,a.n=2,e.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:t}});case 2:i=a.v,i&&1===i.code&&Array.isArray(i.data)&&(e.indicatorParams=i.data,r={},i.data.forEach(function(t){r[t.name]=t.default}),e.indicatorParamValues=r),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},handleMarketTypeChange:function(t){var e=t.target.value;"spot"===e&&this.form.setFieldsValue({trade_direction:"long",leverage:1})},recalcEntryPctMaxUi:function(){if(this.form){var t=!!this.form.getFieldValue("trend_add_enabled"),e=!!this.form.getFieldValue("dca_add_enabled"),a=Number(this.form.getFieldValue("trend_add_max_times")||0),s=Number(this.form.getFieldValue("dca_add_max_times")||0),i=Number(this.form.getFieldValue("trend_add_size_pct")||0),r=Number(this.form.getFieldValue("dca_add_size_pct")||0),n=(t?a*i:0)+(e?s*r:0),o=Math.max(0,Math.min(100,100-n));this.entryPctMaxUi=o}else this.entryPctMaxUi=100},normalizeEntryPct:function(){if(this.form){var t=Number(this.form.getFieldValue("entry_pct")||0),e=Number(this.entryPctMaxUi||100);t>e&&this.form.setFieldsValue({entry_pct:e})}},onTrendAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({dca_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onDcaAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({trend_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onScaleParamsChange:function(){var t=this;this.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()})},onEntryPctChange:function(){var t=this;this.$nextTick(function(){return t.normalizeEntryPct()})},onTrailingToggle:function(t){this.form&&(this.trailingEnabledUi=!!t,t||this.form.setFieldsValue({trailing_stop_pct:0,trailing_activation_pct:0}))},onAiFilterToggle:function(t){this.aiFilterEnabledUi=!!t;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({enable_ai_filter:!!t})}catch(e){}},filterIndicatorOption:function(t,e){var a,s=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.label)||"";return s.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorOptionLabel:function(t){return t?t.description?"".concat(t.name," - ").concat(t.description):t.name:""},buildStrategyDefaultName:function(t){var e=t&&t.name?t.name:this.$t("trading-assistant.form.defaultStrategyName"),a=this.$t("trading-assistant.form.defaultStrategySuffix");return"".concat(e).concat(a)},buildScriptStrategyDefaultName:function(t){var e=this.$t("trading-assistant.form.defaultStrategySuffix"),a=t&&String(t).trim();if(a){var s="trading-assistant.template.".concat(a),i=this.$t(s),r=i!==s?i:a;return"".concat(r).concat(e)}var n=this.$t("trading-assistant.form.defaultScriptStrategyName");return"".concat(n).concat(e)},scriptTemplateKeyOf:function(t){if(!t||!t.trading_config)return"";var e=t.trading_config.script_template_key;return e?String(e):""},scriptTemplateLabel:function(t){if(!t)return"";var e="trading-assistant.template.".concat(t),a=this.$t(e);return a!==e?a:String(t)},onScriptTemplateChange:function(t){var e=t&&t.key?String(t.key):"";if(this.scriptTemplateKeyForPayload=e,"script"===this.strategyMode&&this.form){var a=this.buildScriptStrategyDefaultName(e||null),s=this.form.getFieldValue("strategy_name");s&&s!==this.lastAutoScriptStrategyName&&s!==this.lastAutoStrategyName||(this.form.setFieldsValue({strategy_name:a}),this.lastAutoScriptStrategyName=a,this.lastAutoStrategyName=a)}},applyAutoStrategyName:function(t){if(!this.editingStrategy&&this.form&&"script"!==this.strategyMode){var e=this.buildStrategyDefaultName(t),a=this.form.getFieldValue("strategy_name");a&&a!==this.lastAutoStrategyName||(this.form.setFieldsValue({strategy_name:e}),this.lastAutoStrategyName=e)}},applyPendingRouteIndicatorSelection:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,s;return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.pendingRouteIndicatorId&&t.form&&!t.loadingIndicators){e.n=1;break}return e.a(2);case 1:if(a=String(t.pendingRouteIndicatorId),s=t.availableIndicators.find(function(t){return String(t.id)===a}),s){e.n=2;break}return e.a(2);case 2:return t.form.setFieldsValue({indicator_id:a}),e.n=3,t.handleIndicatorChange(a);case 3:t.pendingRouteIndicatorId="";case 4:return e.a(2)}},e)}))()},filterSymbolOption:function(t,e){return e.componentOptions.children[0].text.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorTypeColor:function(t){var e={trend:"blue",momentum:"green",volatility:"orange",volume:"purple",custom:"cyan",python:"geekblue",pine:"magenta"};return e[t]||"cyan"},getIndicatorTypeName:function(t){var e="trading-assistant.indicatorType.".concat(t),a=this.$t(e);return a!==e?a:t},getExchangeName:function(t){if(t.labelKey){var e="trading-assistant.exchangeNames.".concat(t.labelKey),a=this.$t(e);return a===e?t.value.charAt(0).toUpperCase()+t.value.slice(1):a}return t.label||t.value},getExchangeDisplayName:function(t){if(!t)return"";var e=this.exchangeOptions.find(function(e){return e.value===t});return e?this.getExchangeName(e):t.charAt(0).toUpperCase()+t.slice(1)},getExchangeTagColor:function(t){var e={binance:"gold",okx:"blue",coinbaseexchange:"cyan",kraken:"purple",bitfinex:"geekblue",huobi:"orange",gate:"green",mexc:"lime",kucoin:"volcano",bybit:"red",bitget:"magenta",bitmex:"red",deribit:"blue",phemex:"cyan",bitmart:"geekblue",bitstamp:"purple",bittrex:"orange",poloniex:"green",gemini:"lime",cryptocom:"volcano",blockchaincom:"magenta",bitflyer:"red",upbit:"blue",bithumb:"cyan",coinone:"purple",zb:"geekblue",lbank:"orange",bibox:"green",bigone:"lime",bitrue:"volcano",coinex:"magenta",ftx:"red",ftxus:"blue",binanceus:"gold",binancecoinm:"gold",binanceusdm:"gold",ibkr:"green"};return e[t]||"default"},handleApiConfigChange:function(){this.connectionTestResult=null},getModalPopupContainer:function(){return window.document.body},handleBrokerSelectChange:function(t){this.currentBrokerId=t||"ibkr",this.connectionTestResult=null},handleForexBrokerSelectChange:function(t){this.currentBrokerId=t||"mt5",this.connectionTestResult=null},handleExchangeSelectChange:function(t){var e=this;this.currentExchangeId=t||"",this.connectionTestResult=null,this.suppressApiClearOnce?this.suppressApiClearOnce=!1:this.$nextTick(function(){var t={api_key:void 0,secret_key:void 0,passphrase:void 0,enable_demo_trading:!1};setTimeout(function(){e.form.setFieldsValue(t)},100)})},getPlaceholder:function(t){var e={okx:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},okex:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},binance:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},coinbaseexchange:{api_key:"请输入API Key(或Key Name)",secret_key:"请输入API Secret(或Private Key)",passphrase:"请输入Passphrase(Legacy Pro API需要)"},kucoin:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase"},gate:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},mexc:{api_key:"请输入Access Key",secret_key:"请输入Secret Key"},kraken:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitfinex:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bybit:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitget:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(Legacy Pro API需要)"}},a=e[this.currentExchangeId]||{};if(a[t])return a[t];var s={api_key:this.$t("trading-assistant.placeholders.inputApiKey"),secret_key:this.$t("trading-assistant.placeholders.inputSecretKey"),passphrase:this.$t("trading-assistant.placeholders.inputPassphrase")};return s[t]||this.$t("trading-assistant.placeholders.inputApiKey")},handleNext:function(){var t=this;if("script"!==this.strategyMode){if(0===this.currentStep){var e=["indicator_id","strategy_name"];e.push("initial_capital","market_type","leverage","trade_direction","timeframe"),this.isEditMode&&e.push("symbol"),this.form.validateFields(e,function(e,a){if(!e){if(!t.isEditMode){var s=t.form.getFieldValue("cs_strategy_type")||"single";if("cross_sectional"===s){if(!t.crossSectionalSymbols||0===t.crossSectionalSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}else if(!t.selectedSymbols||0===t.selectedSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}try{var i=a&&a.market_type||t.form.getFieldValue("market_type");"spot"===i&&t.form.setFieldsValue({leverage:1,trade_direction:"long"})}catch(o){}t.backtestCollapseKeys=["risk"];try{t.trailingEnabledUi=!!t.form.getFieldValue("trailing_enabled")}catch(o){t.trailingEnabledUi=!1}t.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()});try{var r=t.form.getFieldValue("execution_mode")||"signal";t.executionModeUi=r;var n=t.form.getFieldValue("notify_channels")||["browser"];t.notifyChannelsUi=Array.isArray(n)?n:["browser"]}catch(o){}t.currentStep=1}})}}else if(0===this.currentStep){var a=["strategy_name","symbol","initial_capital","timeframe"];this.form.validateFields(a,function(e){e||(t.currentStep=1)})}else if(1===this.currentStep){if(!this.strategyCode||this.strategyCode.trim().length<20)return void this.$message.warning(this.$t("trading-assistant.editor.codeHint"));try{var s=this.form.getFieldValue("execution_mode")||"signal";this.executionModeUi=s;var i=this.form.getFieldValue("notify_channels")||["browser"];this.notifyChannelsUi=Array.isArray(i)?i:["browser"]}catch(r){}this.currentStep=2}},handlePrev:function(){this.currentStep>0&&this.currentStep--},handleSubmit:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.currentStep===t.strategyFormLastStepIndex){e.n=1;break}return e.a(2);case 1:t.form.validateFields(function(){var e=(0,l.A)((0,o.A)().m(function e(a,s){var i,r,l,c,d,m,g,h,_,y,f,v,b,x,k,C,S,w,$,A,T,P,M,F,I,N,D,V,E;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a){e.n=19;break}if(e.p=1,t.saving=!0,"script"!==t.strategyMode){e.n=7;break}if(i={channels:s.notify_channels||["browser"],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},i.channels&&0!==i.channels.length){e.n=2;break}return t.$message.warning(t.$t("trading-assistant.validation.notifyChannelRequired")),t.saving=!1,e.a(2);case 2:if(r=s.symbol||"",l="Crypto","string"===typeof r&&r.includes(":")&&(c=r.indexOf(":"),l=r.slice(0,c)||"Crypto",r=r.slice(c+1)),d="futures"===s.market_type?"swap":s.market_type||"swap",m=null!=s.leverage?s.leverage:5,g=s.trade_direction||"both","spot"===d?(m=1,g="long"):(m<1&&(m=1),m>125&&(m=125)),h=t.editingStrategy&&t.editingStrategy.trading_config,_=h&&"object"===(0,n.A)(h)&&!Array.isArray(h)?(0,u.A)({},h):{},y=(0,u.A)((0,u.A)({},_),{},{initial_capital:s.initial_capital||1e3,leverage:m,trade_direction:g,timeframe:s.timeframe||"15m",market_type:d,symbol:r}),t.scriptTemplateKeyForPayload?y.script_template_key=t.scriptTemplateKeyForPayload:delete y.script_template_key,f={strategy_name:s.strategy_name,strategy_type:"ScriptStrategy",strategy_mode:"script",strategy_code:t.strategyCode,market_category:l,execution_mode:s.execution_mode||"signal",notification_config:i,trading_config:y},!t.editingStrategy){e.n=4;break}return e.n=3,(0,p.P7)(t.editingStrategy.id,f);case 3:v=e.v,e.n=6;break;case 4:return f.user_id=1,e.n=5,(0,p.WM)(f);case 5:v=e.v;case 6:return 1===v.code?(t.$message.success(t.editingStrategy?t.$t("trading-assistant.messages.updateSuccess"):t.$t("trading-assistant.messages.createSuccess")),t.handleRefresh()):t.$message.error(v.msg||(t.editingStrategy?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"))),t.saving=!1,t.showFormModal=!1,e.a(2);case 7:if(b=t.canUseLiveTrading&&"live"===s.execution_mode,!b){e.n=8;break}if(x=s.credential_id,x){e.n=8;break}return t.$message.warning(t.$t("trading-assistant.validation.credentialRequired")),t.saving=!1,e.a(2);case 8:if(k={channels:s.notify_channels||[],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},k.channels&&0!==k.channels.length){e.n=9;break}return t.$message.warning(t.$t("trading-assistant.validation.notifyChannelRequired")),t.saving=!1,e.a(2);case 9:if(C=String(s.indicator_id),S=t.availableIndicators.find(function(t){return String(t.id)===C}),S){e.n=10;break}return t.$message.error(t.$t("trading-assistant.validation.indicatorRequired")),t.saving=!1,e.a(2);case 10:if(w=!!t.aiFilterEnabledUi,$="futures"===s.market_type?"swap":s.market_type||"swap",A=s.leverage||1,T=s.trade_direction||"long","spot"===$?(A=1,T="long",t.$message.info(t.$t("trading-assistant.messages.spotLimitations"))):(A<1&&(A=1),A>125&&(A=125)),P={strategy_name:s.strategy_name,market_category:t.selectedMarketCategory||"Crypto",execution_mode:s.execution_mode||"signal",notification_config:k,indicator_config:{indicator_id:S.id,indicator_name:S.name,indicator_code:S.code||""},exchange_config:b?t.isIBKRMarket?{exchange_id:s.broker_id||t.currentBrokerId||"ibkr",ibkr_host:s.ibkr_host||"127.0.0.1",ibkr_port:s.ibkr_port||7497,ibkr_client_id:s.ibkr_client_id||1,ibkr_account:s.ibkr_account||""}:t.isMT5Market?{exchange_id:s.forex_broker_id||t.currentBrokerId||"mt5",mt5_server:s.mt5_server||"",mt5_login:s.mt5_login||"",mt5_password:s.mt5_password||"",mt5_terminal_path:s.mt5_terminal_path||""}:{credential_id:s.credential_id,exchange_id:t.currentExchangeId||void 0}:void 0,trading_config:{initial_capital:s.initial_capital,leverage:A,trade_direction:T,timeframe:s.timeframe,market_type:$,margin_mode:"cross",signal_mode:"confirmed",take_profit_pct:s.take_profit_pct||0,stop_loss_pct:s.stop_loss_pct||0,trailing_enabled:!!s.trailing_enabled,trailing_stop_pct:s.trailing_stop_pct||0,trailing_activation_pct:s.trailing_activation_pct||0,trend_add_enabled:!!s.trend_add_enabled,trend_add_step_pct:s.trend_add_step_pct||0,trend_add_size_pct:s.trend_add_size_pct||0,trend_add_max_times:s.trend_add_max_times||0,dca_add_enabled:!!s.dca_add_enabled,dca_add_step_pct:s.dca_add_step_pct||0,dca_add_size_pct:s.dca_add_size_pct||0,dca_add_max_times:s.dca_add_max_times||0,trend_reduce_enabled:!!s.trend_reduce_enabled,trend_reduce_step_pct:s.trend_reduce_step_pct||0,trend_reduce_size_pct:s.trend_reduce_size_pct||0,trend_reduce_max_times:s.trend_reduce_max_times||0,adverse_reduce_enabled:!!s.adverse_reduce_enabled,adverse_reduce_step_pct:s.adverse_reduce_step_pct||0,adverse_reduce_size_pct:s.adverse_reduce_size_pct||0,adverse_reduce_max_times:s.adverse_reduce_max_times||0,entry_pct:0===s.entry_pct||s.entry_pct?s.entry_pct:100,commission:s.commission||0,slippage:s.slippage||0,enable_ai_filter:w,indicator_params:t.indicatorParamValues,strategy_type:s.cs_strategy_type||"single",symbol_list:"cross_sectional"===s.cs_strategy_type?t.crossSectionalSymbols:void 0,portfolio_size:"cross_sectional"===s.cs_strategy_type?s.portfolio_size||10:void 0,long_ratio:"cross_sectional"===s.cs_strategy_type?s.long_ratio||.5:void 0,rebalance_frequency:"cross_sectional"===s.cs_strategy_type?s.rebalance_frequency||"daily":void 0}},!t.editingStrategy){e.n=12;break}return F=s.symbol,"string"===typeof F&&F.includes(":")&&(I=F.indexOf(":"),P.market_category=F.slice(0,I)||P.market_category,F=F.slice(I+1)),P.trading_config.symbol=F,e.n=11,(0,p.P7)(t.editingStrategy.id,P);case 11:M=e.v,e.n=16;break;case 12:if(P.user_id=1,P.strategy_type="IndicatorStrategy","cross_sectional"!==s.cs_strategy_type){e.n=14;break}return P.strategy_type="IndicatorStrategy",P.trading_config.symbol=null,e.n=13,(0,p.WM)(P);case 13:M=e.v,e.n=16;break;case 14:return P.symbols=t.selectedSymbols,e.n=15,(0,p.Ox)(P);case 15:M=e.v;case 16:1===M.code?(t.isEditMode?t.$message.success(t.$t("trading-assistant.messages.updateSuccess")):(D=s.cs_strategy_type||"single",V="cross_sectional"===D?t.crossSectionalSymbols.length:t.selectedSymbols.length,E=(null===(N=M.data)||void 0===N?void 0:N.total_created)||V,t.$message.success(t.$t("trading-assistant.messages.batchCreateSuccess",{count:E}))),t.handleRefresh()):t.$message.error(M.msg||(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"))),e.n=18;break;case 17:e.p=17,e.v,t.$message.error(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"));case 18:return e.p=18,t.saving=!1,e.f(18);case 19:return e.a(2)}},e,null,[[1,17,18,19]])}));return function(t,a){return e.apply(this,arguments)}}());case 2:return e.a(2)}},e)}))()},getFormValues:function(){var t=this;return new Promise(function(e,a){t.form.validateFields(function(t,s){t?a(t):e(s)})})},getDropdownContainer:function(t){return document.body}}},Rt=Et,zt=(0,F.A)(Rt,s,i,!1,null,"7a5d79cc",null),Lt=zt.exports},84841:function(t,e,a){a.d(e,{DK:function(){return v},E$:function(){return d},Gl:function(){return m},O0:function(){return c},TK:function(){return n},aU:function(){return i},cw:function(){return l},d$:function(){return x},hG:function(){return o},hl:function(){return g},kg:function(){return r},nY:function(){return f},r7:function(){return u},rx:function(){return _},v9:function(){return h},vF:function(){return p},vi:function(){return b},wq:function(){return y}});var s=a(75769);function i(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function c(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function d(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function p(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function m(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function g(){return(0,s.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function h(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function _(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function y(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function f(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function v(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function b(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function x(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/447-legacy.998c00ff.js b/frontend/dist/js/394-legacy.02ee9300.js similarity index 71% rename from frontend/dist/js/447-legacy.998c00ff.js rename to frontend/dist/js/394-legacy.02ee9300.js index b5e1888..3f6536a 100644 --- a/frontend/dist/js/447-legacy.998c00ff.js +++ b/frontend/dist/js/394-legacy.02ee9300.js @@ -1,4 +1,4 @@ -(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[447],{83401:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return $a}});i(52675),i(89463),i(62010),i(9868);var n=function(){var t=this,e=t._self._c;return e("div",{staticClass:"chart-container",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"chart-header"},[e("div",{staticClass:"header-top"},[e("div",{staticClass:"header-left"},[e("div",{staticClass:"search-section"},[e("a-select",{staticClass:"symbol-select",attrs:{"show-search":"",placeholder:t.$t("dashboard.indicator.selectSymbol"),dropdownClassName:"dark-dropdown","filter-option":t.filterSymbolOption,"not-found-content":null,open:t.symbolSearchOpen},on:{search:t.handleSymbolSearch,change:t.handleSymbolSelect,dropdownVisibleChange:t.handleDropdownVisibleChange},model:{value:t.searchSymbol,callback:function(e){t.searchSymbol=e},expression:"searchSymbol"}},[e("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),t._l(t.symbolSuggestions,function(i){return e("a-select-option",{key:i.value,attrs:{value:i.value}},[e("div",{staticClass:"symbol-option"},[e("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:t.getMarketColor(i.market)}},[t._v(" "+t._s(t.getMarketName(i.market))+" ")]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.symbol))]),i.name?e("span",{staticClass:"symbol-name-extra"},[t._v(t._s(i.name))]):t._e()],1)])}),e("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[e("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),e("span",[t._v(t._s(t.$t("dashboard.analysis.watchlist.add")))])],1)])],2)],1),e("div",{staticClass:"timeframe-group"},t._l(["1m","5m","15m","30m","1H","4H","1D","1W"],function(i){return e("div",{key:i,staticClass:"timeframe-item",class:{active:t.timeframe===i},on:{click:function(e){return t.setTimeframe(i)}}},[t._v(" "+t._s(i)+" ")])}),0)]),t.currentSymbol?e("div",{staticClass:"current-symbol"},[e("div",{staticClass:"symbol-info"},[e("span",{staticClass:"symbol-label"},[t._v(t._s(t.currentSymbol))]),e("span",{staticClass:"market-tag"},[t._v(t._s(t.currentMarket))])]),e("div",{staticClass:"price-info",class:t.priceChangeClass},[e("span",{staticClass:"symbol-price"},[t._v(t._s(t.currentPrice))]),e("span",{staticClass:"symbol-change"},[t._v(" "+t._s(t.priceChange>0?"+":"")+t._s(t.priceChange.toFixed(2))+"% ")])]),t.isCryptoMarket?e("a-button",{staticClass:"qt-header-btn",attrs:{size:"small"},on:{click:t.openQuickTrade}},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}}),t._v(" "+t._s(t.$t("quickTrade.openPanel"))+" ")],1):t._e()],1):t._e()])]),e("div",{staticClass:"chart-content"},[e("div",{staticClass:"chart-main-row"},[t.currentSymbol?e("div",{staticClass:"mobile-symbol-price"},[e("div",{staticClass:"mobile-symbol-info"},[e("span",{staticClass:"mobile-market-tag"},[t._v(t._s(t.currentMarket))]),e("span",[t._v("-")]),e("span",{staticClass:"mobile-symbol-label"},[t._v(t._s(t.currentSymbol))])]),e("div",{staticClass:"mobile-price-info",class:t.priceChangeClass},[e("span",{staticClass:"mobile-symbol-price"},[t._v(t._s(t.currentPrice))]),e("span",{staticClass:"mobile-symbol-change"},[t._v(" "+t._s(t.priceChange>0?"+":"")+t._s(t.priceChange.toFixed(2))+"% ")])])]):t._e(),e("kline-chart",{ref:"klineChart",attrs:{symbol:t.currentSymbol,market:t.currentMarket,timeframe:t.timeframe,theme:t.chartTheme,activeIndicators:t.activeIndicators,realtimeEnabled:t.realtimeEnabled},on:{"price-change":t.handlePriceChange,retry:t.handleChartRetry,"indicator-toggle":t.handleIndicatorToggle}}),e("div",{staticClass:"chart-right"},[e("div",{staticClass:"indicators-panel"},[e("div",{staticClass:"panel-header"},[e("span",[t._v(t._s(t.$t("dashboard.indicator.panel.title")))]),e("div",{staticStyle:{display:"flex","align-items":"center","margin-left":"auto",gap:"8px"}},[t.isMobile?e("a-button",{staticClass:"mobile-header-create-btn",attrs:{type:"primary",size:"small",icon:"plus"},on:{click:t.handleCreateIndicator}},[t._v(" "+t._s(t.$t("dashboard.indicator.create"))+" ")]):t._e(),e("a-tooltip",{attrs:{title:t.realtimeEnabled?t.$t("dashboard.indicator.panel.realtimeOn"):t.$t("dashboard.indicator.panel.realtimeOff")}},[e("a-button",{staticClass:"realtime-toggle-btn",class:{active:t.realtimeEnabled},attrs:{type:"text"},on:{click:t.toggleRealtime}},[e("a-icon",{attrs:{type:t.realtimeEnabled?"sync":"pause-circle",spin:t.realtimeEnabled}})],1)],1)],1)]),e("div",{staticClass:"panel-body"},[t.isMobile?[e("div",{staticClass:"mobile-tab-content"},[e("div",{staticClass:"section-content custom-scrollbar"},[t._l(t.customIndicators,function(i){return e("div",{key:"custom-"+i.id,class:["indicator-card",{"indicator-active":t.isIndicatorActive("custom-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"custom")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[t._v(t._s(i.name))]),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.edit")}},[e("a-icon",{staticClass:"action-icon edit-icon",attrs:{type:"edit"},on:{click:function(e){return e.stopPropagation(),t.handleEditIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.delete")}},[e("a-icon",{staticClass:"action-icon delete-icon",attrs:{type:"delete"},on:{click:function(e){return e.stopPropagation(),t.handleDeleteIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.isIndicatorActive("custom-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("custom-"+i.id)}],attrs:{type:t.isIndicatorActive("custom-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"custom")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1),e("a-tooltip",{attrs:{title:i.publish_to_community?t.$t("dashboard.indicator.action.unpublish"):t.$t("dashboard.indicator.action.publish")}},[e("a-icon",{class:["action-icon","publish-icon",{published:i.publish_to_community}],attrs:{type:i.publish_to_community?"cloud":"cloud-upload"},on:{click:function(e){return e.stopPropagation(),t.handlePublishIndicator(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.customIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"info-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.empty")))])],1):t._e()],2)])]:[e("div",{staticClass:"indicator-section",class:{"section-empty":0===t.customIndicators.length}},[e("div",{staticClass:"section-label"},[e("div",{staticClass:"section-label-left",on:{click:t.toggleCustomSection}},[e("a-icon",{staticClass:"collapse-icon",attrs:{type:t.customSectionCollapsed?"right":"down"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.section.myCreated"))+" ("+t._s(t.customIndicators.length)+")")])],1),e("a-button",{staticClass:"create-indicator-btn",attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(e){return e.stopPropagation(),t.handleCreateIndicator.apply(null,arguments)}}},[t._v(" "+t._s(t.$t("dashboard.indicator.create"))+" ")])],1),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.customSectionCollapsed,expression:"!customSectionCollapsed"}],staticClass:"section-content custom-scrollbar"},[t._l(t.customIndicators,function(i){return e("div",{key:"custom-"+i.id,class:["indicator-card",{"indicator-active":t.isIndicatorActive("custom-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"custom")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[t._v(t._s(i.name))]),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.edit")}},[e("a-icon",{staticClass:"action-icon edit-icon",attrs:{type:"edit"},on:{click:function(e){return e.stopPropagation(),t.handleEditIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.delete")}},[e("a-icon",{staticClass:"action-icon delete-icon",attrs:{type:"delete"},on:{click:function(e){return e.stopPropagation(),t.handleDeleteIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.isIndicatorActive("custom-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("custom-"+i.id)}],attrs:{type:t.isIndicatorActive("custom-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"custom")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1),e("a-tooltip",{attrs:{title:i.publish_to_community?t.$t("dashboard.indicator.action.unpublish"):t.$t("dashboard.indicator.action.publish")}},[e("a-icon",{class:["action-icon","publish-icon",{published:i.publish_to_community}],attrs:{type:i.publish_to_community?"cloud":"cloud-upload"},on:{click:function(e){return e.stopPropagation(),t.handlePublishIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.createStrategy")}},[e("a-icon",{staticClass:"action-icon create-strategy-icon",attrs:{type:"rocket"},on:{click:function(e){return e.stopPropagation(),t.handleCreateStrategyFromIndicator(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.customIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"info-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.empty")))])],1):t._e()],2)]),e("div",{staticClass:"indicator-section",class:{"section-empty":0===t.purchasedIndicators.length}},[e("div",{staticClass:"section-label"},[e("div",{staticClass:"section-label-left",on:{click:function(e){t.purchasedSectionCollapsed=!t.purchasedSectionCollapsed}}},[e("a-icon",{staticClass:"collapse-icon",attrs:{type:t.purchasedSectionCollapsed?"right":"down"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.section.purchased"))+" ("+t._s(t.purchasedIndicators.length)+")")])],1),e("a-button",{staticClass:"buy-indicator-btn",attrs:{type:"link",size:"small",icon:"shop"},on:{click:function(e){return e.stopPropagation(),t.goToIndicatorMarket.apply(null,arguments)}}},[t._v(" "+t._s(t.$t("menu.dashboard.community"))+" ")])],1),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.purchasedSectionCollapsed,expression:"!purchasedSectionCollapsed"}],staticClass:"section-content custom-scrollbar"},[t._l(t.purchasedIndicators,function(i){return e("div",{key:"purchased-"+i.id,class:["indicator-card","purchased-indicator",{"indicator-active":t.isIndicatorActive("purchased-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"purchased")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[e("a-icon",{staticClass:"purchased-icon",attrs:{type:"shopping"}}),t._v(" "+t._s(i.name)+" ")],1),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.isIndicatorActive("purchased-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("purchased-"+i.id)}],attrs:{type:t.isIndicatorActive("purchased-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"purchased")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.purchasedIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"shopping"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.emptyPurchased")))])],1):t._e()],2)])]],2)])])],1),e("indicator-editor",{ref:"indicatorEditor",attrs:{visible:t.showIndicatorEditor,indicator:t.editingIndicator,userId:t.userId},on:{run:t.handleRunIndicator,save:t.handleSaveIndicator,cancel:function(e){t.showIndicatorEditor=!1,t.editingIndicator=null}}}),e("a-modal",{attrs:{visible:t.showParamsModal,title:t.$t("dashboard.indicator.paramsConfig.title"),confirmLoading:t.loadingParams,width:500,maskClosable:!1,keyboard:!1},on:{ok:t.confirmIndicatorParams,cancel:t.cancelIndicatorParams,afterClose:t.handleParamsModalAfterClose}},[t.pendingIndicator?e("div",{staticClass:"params-config-modal"},[e("div",{staticClass:"indicator-info"},[e("span",{staticClass:"indicator-name"},[t._v(t._s(t.pendingIndicator.name))])]),e("a-divider"),t.indicatorParams.length>0?e("div",{staticClass:"params-form"},t._l(t.indicatorParams,function(i){return e("div",{key:i.name,staticClass:"param-item"},[e("div",{staticClass:"param-header"},[e("label",{staticClass:"param-label"},[t._v(t._s(i.name))]),i.description?e("a-tooltip",{attrs:{title:i.description}},[e("a-icon",{staticStyle:{color:"#999","margin-left":"4px"},attrs:{type:"question-circle"}})],1):t._e()],1),"int"===i.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0},model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):"float"===i.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4},model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):"bool"===i.type?e("a-switch",{model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):e("a-input",{model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}})],1)}),0):e("a-empty",{attrs:{description:t.$t("dashboard.indicator.paramsConfig.noParams")}})],1):t._e()]),e("a-modal",{attrs:{title:t.publishIndicator&&t.publishIndicator.publish_to_community?t.$t("dashboard.indicator.publish.editTitle"):t.$t("dashboard.indicator.publish.title"),visible:t.showPublishModal,confirmLoading:t.publishing,width:"500px",okText:t.publishIndicator&&t.publishIndicator.publish_to_community?t.$t("dashboard.indicator.publish.update"):t.$t("dashboard.indicator.publish.confirm"),cancelText:t.$t("common.cancel")},on:{ok:t.handleConfirmPublish,cancel:function(e){t.showPublishModal=!1,t.publishIndicator=null}}},[e("a-form-model",{ref:"publishForm",attrs:{model:t.publishForm,rules:t.publishRules,layout:"vertical"}},[e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info","show-icon":"",message:t.$t("dashboard.indicator.publish.hint")}}),e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.pricingType"),prop:"pricingType"}},[e("a-radio-group",{model:{value:t.publishPricingType,callback:function(e){t.publishPricingType=e},expression:"publishPricingType"}},[e("a-radio",{attrs:{value:"free"}},[t._v(t._s(t.$t("dashboard.indicator.publish.free")))]),e("a-radio",{attrs:{value:"paid"}},[t._v(t._s(t.$t("dashboard.indicator.publish.paid")))])],1)],1),"paid"===t.publishPricingType?e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.price"),prop:"price"}},[e("a-input-number",{staticStyle:{width:"200px"},attrs:{min:1,max:1e4,precision:0},model:{value:t.publishPrice,callback:function(e){t.publishPrice=e},expression:"publishPrice"}}),e("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(t.$t("community.credits")))])],1):t._e(),"paid"===t.publishPricingType?e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.vipFree")}},[e("a-switch",{model:{value:t.publishVipFree,callback:function(e){t.publishVipFree=e},expression:"publishVipFree"}}),e("div",{staticStyle:{"margin-top":"6px",color:"rgba(0,0,0,0.45)","font-size":"12px"}},[t._v(" "+t._s(t.$t("dashboard.indicator.publish.vipFreeHint"))+" ")])],1):t._e(),e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.description"),prop:"description"}},[e("a-textarea",{attrs:{placeholder:t.$t("dashboard.indicator.publish.descriptionPlaceholder"),rows:4,maxLength:500},model:{value:t.publishDescription,callback:function(e){t.publishDescription=e},expression:"publishDescription"}})],1),t.publishIndicator&&t.publishIndicator.publish_to_community?e("div",{staticStyle:{"margin-top":"16px"}},[e("a-button",{attrs:{type:"danger",ghost:"",loading:t.unpublishing},on:{click:t.handleUnpublish}},[e("a-icon",{attrs:{type:"close-circle"}}),t._v(" "+t._s(t.$t("dashboard.indicator.publish.unpublish"))+" ")],1)],1):t._e()],1)],1),e("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[e("div",{staticClass:"add-stock-modal-content"},[e("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(e){t.selectedMarketTab=e},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(i){return e("a-tab-pane",{key:i.value,attrs:{tab:t.$t(i.i18nKey||"dashboard.analysis.market.".concat(i.value))}})}),1),e("div",{staticClass:"symbol-search-section"},[e("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(e){t.symbolSearchKeyword=e},expression:"symbolSearchKeyword"}},[e("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?e("div",{staticClass:"search-results-section"},[e("div",{staticClass:"section-title"},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),e("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(i){return e("a-list-item",{staticClass:"symbol-list-item",on:{click:function(e){return t.selectSymbol(i)}}},[e("a-list-item-meta",[e("template",{slot:"title"},[e("div",{staticClass:"symbol-item-content"},[e("span",{staticClass:"symbol-code"},[t._v(t._s(i.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.name))]),i.exchange?e("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(i.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),e("div",{staticClass:"hot-symbols-section"},[e("div",{staticClass:"section-title"},[e("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),e("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?e("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(i){return e("a-list-item",{staticClass:"symbol-list-item",on:{click:function(e){return t.selectSymbol(i)}}},[e("a-list-item-meta",[e("template",{slot:"title"},[e("div",{staticClass:"symbol-item-content"},[e("span",{staticClass:"symbol-code"},[t._v(t._s(i.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.name))]),i.exchange?e("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(i.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):e("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?e("div",{staticClass:"selected-symbol-section"},[e("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(e){t.selectedSymbolForAdd=null}}},[e("template",{slot:"description"},[e("div",{staticClass:"selected-symbol-info"},[e("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),e("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?e("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):e("span",{staticStyle:{color:"#999","margin-left":"8px","font-style":"italic"}},[t._v(t._s(t.$t("dashboard.analysis.modal.addStock.nameWillBeFetched")))])],1)])],2)],1):t._e()],1)])],1),e("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentSymbol&&t.isCryptoMarket?e("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTrade}},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),e("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:"indicator","market-type":"swap"},on:{close:function(e){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}})],1)},a=[],r=(i(62621),i(43898)),o=i(44735),s=i(15863),l=i(81127),c=i(56252),u=(i(6011),i(18787)),d=i(76338),h=(i(28706),i(2008),i(50113),i(48980),i(74423),i(48598),i(62062),i(54554),i(79432),i(26099),i(16034),i(38781),i(31415),i(21699),i(47764),i(42762),i(23500),i(62953),i(85471)),p=i(95353),v=i(75769),f=i(35038),g=i(505),m=function(){var t=this,e=t._self._c;return e("div",[e("a-modal",{staticClass:"indicator-editor-modal",style:t.isMobile?{top:0,paddingBottom:0}:{top:"2%"},attrs:{title:t.$t("dashboard.indicator.editor.title"),visible:t.visible,width:t.isMobile?"100%":"95vw",confirmLoading:t.saving,okText:t.$t("dashboard.indicator.editor.save"),cancelText:t.$t("dashboard.indicator.editor.cancel"),maskClosable:!1,centered:!1},on:{ok:t.handleSave,cancel:t.handleCancel,afterClose:t.handleAfterClose}},[e("div",{staticClass:"editor-content"},[e("a-row",{staticClass:"editor-layout",class:{"mobile-layout":t.isMobile},attrs:{gutter:16}},[e("a-col",{staticClass:"code-editor-column",attrs:{span:24,xs:24,sm:24,md:24}},[e("div",{staticClass:"code-section"},[e("div",{staticClass:"section-header"},[e("div",{staticClass:"header-left"},[e("span",{staticClass:"section-title"},[t._v(t._s(t.$t("dashboard.indicator.editor.code")))])]),e("div",{staticClass:"section-actions"},[e("a-button",{staticStyle:{padding:"0 8px",color:"#52c41a","font-weight":"bold"},attrs:{type:"link",size:"small",loading:t.verifying},on:{click:t.handleVerifyCode}},[e("a-icon",{attrs:{type:"check-circle"}}),t._v(" "+t._s(t.$t("dashboard.indicator.editor.verifyCode"))+" ")],1),e("a-button",{staticStyle:{padding:"0"},attrs:{type:"link",size:"small"},on:{click:t.goToDocs}},[e("a-icon",{attrs:{type:"book"}}),t._v(" "+t._s(t.$t("dashboard.indicator.editor.guide"))+" ")],1)],1)]),e("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":"",message:t.$t("dashboard.indicator.boundary.message"),description:t.$t("dashboard.indicator.boundary.indicatorRule")}}),e("div",{staticClass:"code-mode-split"},[e("a-row",{staticClass:"code-mode-row",attrs:{gutter:16}},[e("a-col",{staticClass:"code-pane",attrs:{xs:24,sm:24,md:18}},[e("div",{ref:"codeEditorContainer",staticClass:"code-editor-container"})]),e("a-col",{staticClass:"ai-pane",attrs:{xs:24,sm:24,md:6}},[e("div",{staticClass:"ai-panel"},[e("div",{staticClass:"ai-panel-title"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.editor.aiGenerate")))])],1),e("a-textarea",{attrs:{placeholder:t.$t("dashboard.indicator.editor.aiPromptPlaceholder"),rows:12,"auto-size":{minRows:12,maxRows:20}},model:{value:t.aiPrompt,callback:function(e){t.aiPrompt=e},expression:"aiPrompt"}}),e("a-button",{staticStyle:{"margin-top":"10px"},attrs:{type:"primary",block:"",loading:t.aiGenerating,size:"large"},on:{click:t.handleAIGenerate}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.aiGenerateBtn"))+" ")])],1)])],1)],1)],1)])],1)],1),e("div",{staticClass:"editor-footer",attrs:{slot:"footer"},slot:"footer"},[e("a-button",{on:{click:t.handleCancel}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.cancel"))+" ")]),e("a-button",{attrs:{type:"primary",loading:t.saving},on:{click:t.handleSave}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.save"))+" ")])],1)])],1)},y=[],_=i(57532),b=(i(2892),i(27495),i(99449),i(25440),i(11392),i(15237)),x=i.n(b),w=(i(74806),i(55218),i(97923),i(50436),i(74053)),S=i.n(w),C=i(75314),k={name:"IndicatorEditor",props:{visible:{type:Boolean,default:!1},indicator:{type:Object,default:null},userId:{type:Number,default:null}},data:function(){return{saving:!1,codeEditor:null,aiPrompt:"",aiGenerating:!1,verifying:!1,isMobile:!1}},computed:{},watch:{visible:function(t){var e=this;t?this.$nextTick(function(){setTimeout(function(){!e.codeEditor&&e.$refs.codeEditorContainer&&e.initCodeEditor(),e.initFormData()},200)}):this.codeEditor&&this.codeEditor.refresh()},indicator:{handler:function(t){var e=this;t&&this.visible&&this.$nextTick(function(){setTimeout(function(){e.initFormData()},100)})},deep:!0}},mounted:function(){var t=this;this.checkMobile(),window.addEventListener("resize",this.checkMobile),this.visible&&this.$nextTick(function(){setTimeout(function(){t.initCodeEditor()},100)})},beforeDestroy:function(){if(window.removeEventListener("resize",this.checkMobile),this.codeEditor)try{if("function"===typeof this.codeEditor.toTextArea)this.codeEditor.toTextArea();else if("function"===typeof this.codeEditor.getWrapperElement){var t=this.codeEditor.getWrapperElement();t&&t.parentNode&&t.parentNode.removeChild(t)}}catch(e){}finally{this.codeEditor=null}},methods:{getDefaultIndicatorCode:function(){return'#Demo Code:\n#my_indicator_name = "My Buy/Sell Indicator"\n#my_indicator_description = "Buy/Sell only; execution is normalized in backend."\n\n#df = df.copy()\n#sma = df["close"].rolling(14).mean()\n#buy = (df["close"] > sma) & (df["close"].shift(1) <= sma.shift(1))\n#sell = (df["close"] < sma) & (df["close"].shift(1) >= sma.shift(1))\n#df["buy"] = buy.fillna(False).astype(bool)\n#df["sell"] = sell.fillna(False).astype(bool)\n\n#buy_marks = [df["low"].iloc[i] * 0.995 if df["buy"].iloc[i] else None for i in range(len(df))]\n#sell_marks = [df["high"].iloc[i] * 1.005 if df["sell"].iloc[i] else None for i in range(len(df))]\n\n#output = {\n# "name": my_indicator_name,\n# "plots": [],\n# "signals": [\n# {"type": "buy", "text": "B", "data": buy_marks, "color": "#00E676"},\n# {"type": "sell", "text": "S", "data": sell_marks, "color": "#FF5252"}\n# ]\n#}\n'},checkMobile:function(){this.isMobile=window.innerWidth<=768},goToDocs:function(){window.open("https://github.com/brokermr810/QuantDinger/blob/main/docs/STRATEGY_DEV_GUIDE.md","_blank")},handleVerifyCode:function(){var t=this,e=this.codeEditor?this.codeEditor.getValue():"";e&&e.trim()?(this.verifying=!0,(0,v.Ay)({url:"/api/indicator/verifyCode",method:"post",data:{code:e}}).then(function(e){if(1===e.code){var i=e.data||{};t.$message.success("".concat(t.$t("dashboard.indicator.editor.verifyCodeSuccess")," (").concat(i.plots_count||0," plots, ").concat(i.signals_count||0," signals)"))}else{var n=e.data||{};t.$error({title:t.$t("dashboard.indicator.editor.verifyCodeFailed"),width:600,content:function(t){return t("div",[t("p",{style:{fontWeight:"bold",color:"#ff4d4f"}},e.msg),n.details?t("pre",{style:{background:"#f5f5f5",padding:"8px",overflow:"auto",maxHeight:"300px",marginTop:"8px",fontSize:"12px",fontFamily:"monospace"}},n.details):null])}})}}).catch(function(e){t.$message.error("Request Failed: "+(e.message||"Unknown Error"))}).finally(function(){t.verifying=!1})):this.$message.warning(this.$t("dashboard.indicator.editor.verifyCodeEmpty"))},cleanMarkdownCodeBlocks:function(t){if(!t||"string"!==typeof t)return t;var e=t.trim(),i=/```/.test(e);return i?(e=e.replace(/^```[\w]*\s*\n?/i,""),e.startsWith("```")&&(e=e.replace(/^```\s*\n?/g,"")),e.endsWith("```")&&(e=e.replace(/\n?```\s*$/g,"")),e=e.replace(/^\s*```[\w]*\s*$/gm,""),e=e.replace(/^\s*```\s*$/gm,""),e=e.replace(/\n{3,}/g,"\n\n"),e=e.trim(),e):e},initFormData:function(){var t=this;if(this.visible){var e=this.indicator&&this.indicator.code||"";e&&String(e).trim()||(e=this.getDefaultIndicatorCode()),this.$nextTick(function(){setTimeout(function(){t.aiPrompt="",t.codeEditor&&(t.codeEditor.setValue(e),t.codeEditor.refresh())},50)})}},initCodeEditor:function(){var t=this;if(this.$refs.codeEditorContainer){if(this.codeEditor){try{if("function"===typeof this.codeEditor.toTextArea)this.codeEditor.toTextArea();else if("function"===typeof this.codeEditor.getWrapperElement){var e=this.codeEditor.getWrapperElement();e&&e.parentNode&&e.parentNode.removeChild(e)}}catch(i){}this.codeEditor=null}try{this.$refs.codeEditorContainer.innerHTML="",this.codeEditor=x()(this.$refs.codeEditorContainer,{value:function(){var e=t.indicator&&t.indicator.code||"";return e&&String(e).trim()?e:t.getDefaultIndicatorCode()}(),mode:"python",theme:"eclipse",lineNumbers:!0,lineWrapping:!0,indentUnit:4,indentWithTabs:!1,smartIndent:!0,matchBrackets:!0,autoCloseBrackets:!0,styleActiveLine:!0,foldGutter:!1,gutters:["CodeMirror-linenumbers"],tabSize:4,viewportMargin:1/0}),this.codeEditor.on("change",function(t){t.getValue()}),this.$nextTick(function(){t.codeEditor&&t.codeEditor.refresh()})}catch(n){}}},handleSave:function(){var t=this.codeEditor?this.codeEditor.getValue():"",e=t||"";e.trim()?(this.saving=!0,this.$emit("save",{id:this.indicator?this.indicator.id:0,code:e,userid:this.userId})):this.$message.warning(this.$t("dashboard.indicator.editor.codeRequired"))},handleCancel:function(){this.codeEditor&&this.codeEditor.setValue(""),this.$emit("cancel")},handleAfterClose:function(){var t=this;this.codeEditor&&this.$nextTick(function(){t.codeEditor&&t.codeEditor.refresh()}),this.aiPrompt=""},handleAIGenerate:function(){var t=this;return(0,c.A)((0,l.A)().m(function e(){var i,n,a,r,o,s,c,u,d,h,p,v,f,g,m,y,b,x,w,k,I,E,A,P,M;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt&&t.aiPrompt.trim()){e.n=1;break}return t.$message.warning(t.$t("dashboard.indicator.editor.aiPromptRequired")),e.a(2);case 1:return t.aiGenerating=!0,i="",t.codeEditor&&(i=t.codeEditor.getValue()||""),t.codeEditor&&(t.codeEditor.setValue("# AI generating...\n"),t.codeEditor.refresh()),n="",e.p=2,a="/api/indicator/aiGenerate",r=S().get(C.Xh),o={prompt:t.aiPrompt.trim()},i.trim()&&(o.existingCode=i.trim()),e.n=3,fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:r?"Bearer ".concat(r):"","Access-Token":r||"",Token:r||""},body:JSON.stringify(o),credentials:"include"});case 3:if(s=e.v,s.ok){e.n=5;break}return e.n=4,s.text().catch(function(){return""});case 4:throw c=e.v,new Error(c||"HTTP error! status: ".concat(s.status));case 5:if(s.body&&"function"===typeof s.body.getReader){e.n=6;break}throw new Error("AI 服务未返回可读取的流(response.body 不存在)");case 6:u=s.body.getReader(),d=new TextDecoder,h="";case 7:return e.n=8,u.read();case 8:if(p=e.v,v=p.done,f=p.value,!v){e.n=9;break}return e.a(3,21);case 9:h+=d.decode(f,{stream:!0}),g=h.split("\n\n"),h=g.pop()||"",m=(0,_.A)(g),e.p=10,m.s();case 11:if((y=m.n()).done){e.n=17;break}if(b=y.value,b.trim()&&b.startsWith("data: ")){e.n=12;break}return e.a(3,16);case 12:if(x=b.substring(6),"[DONE]"!==x){e.n=13;break}return e.a(3,17);case 13:if(e.p=13,w=JSON.parse(x),!w.error){e.n=14;break}throw new Error(w.error);case 14:w.content&&(n+=w.content,k=t.cleanMarkdownCodeBlocks(n),t.codeEditor&&(t.codeEditor.setValue(k),I=t.codeEditor.lineCount(),t.codeEditor.setCursor({line:I-1,ch:0}),t.codeEditor.refresh())),e.n=16;break;case 15:e.p=15,e.v;case 16:e.n=11;break;case 17:e.n=19;break;case 18:e.p=18,P=e.v,m.e(P);case 19:return e.p=19,m.f(),e.f(19);case 20:e.n=7;break;case 21:t.codeEditor&&n?(E=t.cleanMarkdownCodeBlocks(n),t.codeEditor.setValue(E),t.codeEditor.refresh(),t.$message.success(t.$t("dashboard.indicator.editor.aiGenerateSuccess"))):n||t.$message.warning("未生成任何代码,请尝试更详细的提示词"),e.n=23;break;case 22:e.p=22,M=e.v,t.$message.error(M.message||t.$t("dashboard.indicator.editor.aiGenerateError")),n&&t.codeEditor&&(A=t.cleanMarkdownCodeBlocks(n),t.codeEditor.setValue(A));case 23:return e.p=23,t.aiGenerating=!1,e.f(23);case 24:return e.a(2)}},e,null,[[13,15],[10,18,19,20],[2,22,23,24]])}))()}}},I=k,E=i(845),A=(0,E.A)(I,m,y,!1,null,"4fea1865",null),P=A.exports,M=function(){var t=this,e=t._self._c;return e("div",{staticClass:"chart-left",class:{"theme-dark":"dark"===t.chartTheme}},[e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"drawing-toolbar"},[t._l(t.drawingTools,function(i){return e("a-tooltip",{key:i.name,attrs:{title:i.title,placement:"right"}},[e("div",{staticClass:"drawing-tool-btn",class:{active:t.activeDrawingTool===i.name},on:{click:function(e){return t.selectDrawingTool(i.name)}}},[e("a-icon",{attrs:{type:i.icon}})],1)])}),e("a-divider",{attrs:{type:"vertical"}}),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.drawing.clearAll"),placement:"right"}},[e("div",{staticClass:"drawing-tool-btn",on:{click:t.clearAllDrawings}},[e("a-icon",{attrs:{type:"delete"}})],1)])],2),e("div",{staticClass:"chart-content-area"},[e("div",{staticClass:"indicator-toolbar"},t._l(t.indicatorButtons,function(i){return e("div",{key:i.id,staticClass:"indicator-btn",class:{active:t.isIndicatorActive(i.id)},attrs:{title:i.name},on:{click:function(e){return t.toggleIndicator(i)}}},[t._v(" "+t._s(i.shortName)+" ")])}),0),e("div",{staticClass:"kline-chart-container",attrs:{id:"kline-chart-container"}})]),t.loading?e("div",{staticClass:"chart-overlay"},[e("a-spin",{attrs:{size:"large"}},[e("a-icon",{staticStyle:{"font-size":"24px",color:"#13c2c2"},attrs:{slot:"indicator",type:"loading",spin:""},slot:"indicator"})],1)],1):t._e(),t.error?e("div",{staticClass:"chart-overlay"},[e("div",{staticClass:"error-box"},[e("a-icon",{staticStyle:{"font-size":"24px",color:"#ef5350","margin-bottom":"10px"},attrs:{type:"warning"}}),e("span",[t._v(t._s(t.error))]),e("a-button",{staticStyle:{"margin-top":"12px"},attrs:{type:"primary",size:"small",ghost:""},on:{click:t.handleRetry}},[t._v(" "+t._s(t.$t("dashboard.indicator.retry"))+" ")])],1)]):t._e(),t.pyodideLoadFailed?e("div",{staticClass:"chart-overlay pyodide-warning"},[e("div",{staticClass:"warning-box"},[e("a-icon",{staticStyle:{"font-size":"32px",color:"#faad14","margin-bottom":"12px"},attrs:{type:"warning"}}),e("div",{staticClass:"warning-title"},[t._v(t._s(t.$t("dashboard.indicator.warning.pyodideLoadFailed")))]),e("div",{staticClass:"warning-desc"},[t._v(t._s(t.$t("dashboard.indicator.warning.pyodideLoadFailedDesc")))])],1)]):t._e(),t.symbol||t.loading||t.error||t.pyodideLoadFailed?t._e():e("div",{staticClass:"chart-overlay initial-hint"},[e("div",{staticClass:"hint-box"},[e("a-icon",{staticStyle:{"font-size":"48px",color:"#1890ff","margin-bottom":"16px"},attrs:{type:"line-chart"}}),e("div",{staticClass:"hint-title"},[t._v(t._s(t.$t("dashboard.indicator.hint.selectSymbol")))]),e("div",{staticClass:"hint-desc"},[t._v(t._s(t.$t("dashboard.indicator.hint.selectSymbolDesc")))])],1)])])])},D=[],T=i(21560),B=i(26297),F=i(2403),R=(i(34782),i(26910),i(71761),function(t,e){return R=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},R(t,e)});function L(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function i(){this.constructor=t}R(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}var N,O,z,V,W,H,$,Y,X,K=function(){return K=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0&&a[a.length-1])&&(6===s[0]||2===s[0])){r=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Z(t,e){var i="function"===typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,a,r=i.call(t),o=[];try{while((void 0===e||e-- >0)&&!(n=r.next()).done)o.push(n.value)}catch(s){a={error:s}}finally{try{n&&!n.done&&(i=r["return"])&&i.call(r)}finally{if(a)throw a.error}}return o}function q(t,e,i){if(i||2===arguments.length)for(var n,a=0,r=e.length;a1e9)return"".concat(+(e/1e9).toFixed(3),"B");if(e>1e6)return"".concat(+(e/1e6).toFixed(3),"M");if(e>1e3)return"".concat(+(e/1e3).toFixed(3),"K")}return"".concat(t)}function zt(t,e){var i="".concat(t);if(0===e.length)return i;if(i.includes(".")){var n=i.split(".");return"".concat(n[0].replace(/(\d)(?=(\d{3})+$)/g,function(t){return"".concat(t).concat(e)}),".").concat(n[1])}return i.replace(/(\d)(?=(\d{3})+$)/g,function(t){return"".concat(t).concat(e)})}function Vt(t,e){var i="".concat(t),n=new RegExp("\\.0{"+e+",}[1-9][0-9]*$");if(n.test(i)){var a=i.split("."),r=a[a.length-1],o=r.match(/0*/);if(At(o)){var s=o[0].length;return a[a.length-1]=r.replace(/0*/,"0{".concat(s,"}")),a.join(".")}}return i}function Wt(t){var e,i,n;return null!==(n=null===(i=null===(e=t.ownerDocument)||void 0===e?void 0:e.defaultView)||void 0===i?void 0:i.devicePixelRatio)&&void 0!==n?n:1}function Ht(t,e,i){return"".concat(null!==e&&void 0!==e?e:"normal"," ").concat(null!==t&&void 0!==t?t:12,"px ").concat(null!==i&&void 0!==i?i:"Helvetica Neue")}function $t(t,e,i,n){if(!At(Dt)){var a=document.createElement("canvas"),r=Wt(a);Dt=a.getContext("2d"),Dt.scale(r,r)}return Dt.font=Ht(e,i,n),Math.round(Dt.measureText(t).width)}(function(t){t["OnDataReady"]="onDataReady",t["OnZoom"]="onZoom",t["OnScroll"]="onScroll",t["OnVisibleRangeChange"]="onVisibleRangeChange",t["OnTooltipIconClick"]="onTooltipIconClick",t["OnCrosshairChange"]="onCrosshairChange",t["OnCandleBarClick"]="onCandleBarClick",t["OnPaneDrag"]="onPaneDrag"})(Tt||(Tt={}));var Yt,Xt,Kt=function(){function t(){this._callbacks=[]}return t.prototype.subscribe=function(t){var e,i=null!==(e=this._callbacks.indexOf(t))&&void 0!==e?e:-1;i<0&&this._callbacks.push(t)},t.prototype.unsubscribe=function(t){var e;if(kt(t)){var i=null!==(e=this._callbacks.indexOf(t))&&void 0!==e?e:-1;i>-1&&this._callbacks.splice(i,1)}else this._callbacks=[]},t.prototype.execute=function(t){this._callbacks.forEach(function(e){e(t)})},t.prototype.isEmpty=function(){return 0===this._callbacks.length},t}();function jt(t,e,i,n,a){var r,o=e.result,s=e.figures,l=e.styles,c=Rt(l,"circles",n.circles),u=c.length,d=Rt(l,"bars",n.bars),h=d.length,p=Rt(l,"lines",n.lines),v=p.length,f=0,g=0,m=0,y=0;s.forEach(function(s){var l;switch(s.type){case"circle":y=f;var _=c[f%u];r=K(K({},_),{color:_.noChangeColor}),f++;break;case"bar":y=g;var b=d[g%h];r=K(K({},b),{color:b.noChangeColor}),g++;break;case"line":y=m,r=p[m%v],m++;break}if(At(r)){var x={prev:{kLineData:t[i-1],indicatorData:o[i-1]},current:{kLineData:t[i],indicatorData:o[i]},next:{kLineData:t[i+1],indicatorData:o[i+1]}},w=null===(l=s.styles)||void 0===l?void 0:l.call(s,x,e,n);a(s,K(K({},r),w),y)}})}(function(t){t["Init"]="init",t["Forward"]="forward",t["Backward"]="backward"})(Yt||(Yt={})),function(t){t["Normal"]="normal",t["Price"]="price",t["Volume"]="volume"}(Xt||(Xt={}));var Ut,Gt=function(){function t(t){this.result=[],this._precisionFlag=!1;var e=t.name,i=t.shortName,n=t.series,a=t.calcParams,r=t.figures,o=t.precision,s=t.shouldOhlc,l=t.shouldFormatBigNumber,c=t.visible,u=t.zLevel,d=t.minValue,h=t.maxValue,p=t.styles,v=t.extendData,f=t.regenerateFigures,g=t.createTooltipDataSource,m=t.draw;this.name=e,this.shortName=null!==i&&void 0!==i?i:e,this.series=null!==n&&void 0!==n?n:Xt.Normal,this.precision=null!==o&&void 0!==o?o:4,this.calcParams=null!==a&&void 0!==a?a:[],this.figures=null!==r&&void 0!==r?r:[],this.shouldOhlc=null!==s&&void 0!==s&&s,this.shouldFormatBigNumber=null!==l&&void 0!==l&&l,this.visible=null===c||void 0===c||c,this.zLevel=null!==u&&void 0!==u?u:0,this.minValue=null!==d&&void 0!==d?d:null,this.maxValue=null!==h&&void 0!==h?h:null,this.styles=St(null!==p&&void 0!==p?p:{}),this.extendData=v,this.regenerateFigures=null!==f&&void 0!==f?f:null,this.createTooltipDataSource=null!==g&&void 0!==g?g:null,this.draw=null!==m&&void 0!==m?m:null}return t.prototype.setShortName=function(t){return this.shortName!==t&&(this.shortName=t,!0)},t.prototype.setSeries=function(t){return this.series!==t&&(this.series=t,!0)},t.prototype.setPrecision=function(t,e){var i=null!==e&&void 0!==e&&e,n=Math.floor(t);return!(!(n!==this.precision&&t>=0)||i&&(!i||this._precisionFlag))&&(this.precision=n,i||(this._precisionFlag=!0),!0)},t.prototype.setCalcParams=function(t){var e,i;return this.calcParams=t,this.figures=null!==(i=null===(e=this.regenerateFigures)||void 0===e?void 0:e.call(this,t))&&void 0!==i?i:this.figures,!0},t.prototype.setShouldOhlc=function(t){return this.shouldOhlc!==t&&(this.shouldOhlc=t,!0)},t.prototype.setShouldFormatBigNumber=function(t){return this.shouldFormatBigNumber!==t&&(this.shouldFormatBigNumber=t,!0)},t.prototype.setVisible=function(t){return this.visible!==t&&(this.visible=t,!0)},t.prototype.setZLevel=function(t){return this.zLevel!==t&&(this.zLevel=t,!0)},t.prototype.setStyles=function(t){return wt(this.styles,t),!0},t.prototype.setExtendData=function(t){return this.extendData!==t&&(this.extendData=t,!0)},t.prototype.setFigures=function(t){return this.figures!==t&&(this.figures=t,!0)},t.prototype.setMinValue=function(t){return this.minValue!==t&&(this.minValue=t,!0)},t.prototype.setMaxValue=function(t){return this.maxValue!==t&&(this.maxValue=t,!0)},t.prototype.setRegenerateFigures=function(t){return this.regenerateFigures!==t&&(this.regenerateFigures=t,!0)},t.prototype.setCreateTooltipDataSource=function(t){return this.createTooltipDataSource!==t&&(this.createTooltipDataSource=t,!0)},t.prototype.setDraw=function(t){return this.draw!==t&&(this.draw=t,!0)},t.prototype.calcIndicator=function(t){return j(this,void 0,void 0,function(){var e;return U(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this.calc(t,this)];case 1:return e=i.sent(),this.result=e,[2,!0];case 2:return i.sent(),[2,!1];case 3:return[2]}})})},t.extend=function(e){var i=function(t){function i(){return t.call(this,e)||this}return L(i,t),i.prototype.calc=function(t,i){return e.calc(t,i)},i}(t);return i},t}();function Zt(){return["mouseClickEvent","mouseDoubleClickEvent","mouseRightClickEvent","tapEvent","doubleTapEvent","mouseDownEvent","touchStartEvent","mouseMoveEvent","touchMoveEvent"]}(function(t){t["Normal"]="normal",t["WeakMagnet"]="weak_magnet",t["StrongMagnet"]="strong_magnet"})(Ut||(Ut={}));var qt,Jt=1,Qt=-1,te="overlay_",ee="overlay_figure_",ie=function(){function t(t){this.currentStep=Jt,this.points=[],this._prevPressedPoint=null,this._prevPressedPoints=[];var e=t.mode,i=t.modeSensitivity,n=t.extendData,a=t.styles,r=t.name,o=t.totalStep,s=t.lock,l=t.visible,c=t.zLevel,u=t.needDefaultPointFigure,d=t.needDefaultXAxisFigure,h=t.needDefaultYAxisFigure,p=t.createPointFigures,v=t.createXAxisFigures,f=t.createYAxisFigures,g=t.performEventPressedMove,m=t.performEventMoveForDrawing,y=t.onDrawStart,_=t.onDrawing,b=t.onDrawEnd,x=t.onClick,w=t.onDoubleClick,S=t.onRightClick,C=t.onPressedMoveStart,k=t.onPressedMoving,I=t.onPressedMoveEnd,E=t.onMouseEnter,A=t.onMouseLeave,P=t.onRemoved,M=t.onSelected,D=t.onDeselected;this.name=r,this.totalStep=!Et(o)||o<2?1:o,this.lock=null!==s&&void 0!==s&&s,this.visible=null===l||void 0===l||l,this.zLevel=null!==c&&void 0!==c?c:0,this.needDefaultPointFigure=null!==u&&void 0!==u&&u,this.needDefaultXAxisFigure=null!==d&&void 0!==d&&d,this.needDefaultYAxisFigure=null!==h&&void 0!==h&&h,this.mode=null!==e&&void 0!==e?e:Ut.Normal,this.modeSensitivity=null!==i&&void 0!==i?i:8,this.extendData=n,this.styles=St(null!==a&&void 0!==a?a:{}),this.createPointFigures=null!==p&&void 0!==p?p:null,this.createXAxisFigures=null!==v&&void 0!==v?v:null,this.createYAxisFigures=null!==f&&void 0!==f?f:null,this.performEventPressedMove=null!==g&&void 0!==g?g:null,this.performEventMoveForDrawing=null!==m&&void 0!==m?m:null,this.onDrawStart=null!==y&&void 0!==y?y:null,this.onDrawing=null!==_&&void 0!==_?_:null,this.onDrawEnd=null!==b&&void 0!==b?b:null,this.onClick=null!==x&&void 0!==x?x:null,this.onDoubleClick=null!==w&&void 0!==w?w:null,this.onRightClick=null!==S&&void 0!==S?S:null,this.onPressedMoveStart=null!==C&&void 0!==C?C:null,this.onPressedMoving=null!==k&&void 0!==k?k:null,this.onPressedMoveEnd=null!==I&&void 0!==I?I:null,this.onMouseEnter=null!==E&&void 0!==E?E:null,this.onMouseLeave=null!==A&&void 0!==A?A:null,this.onRemoved=null!==P&&void 0!==P?P:null,this.onSelected=null!==M&&void 0!==M?M:null,this.onDeselected=null!==D&&void 0!==D?D:null}return t.prototype.setId=function(t){return!Mt(this.id)&&(this.id=t,!0)},t.prototype.setGroupId=function(t){return!Mt(this.groupId)&&(this.groupId=t,!0)},t.prototype.setPaneId=function(t){this.paneId=t},t.prototype.setExtendData=function(t){return t!==this.extendData&&(this.extendData=t,!0)},t.prototype.setStyles=function(t){return wt(this.styles,t),!0},t.prototype.setPoints=function(t){if(t.length>0){var e=void 0;if(this.points=q([],Z(t),!1),t.length>=this.totalStep-1?(this.currentStep=Qt,e=this.totalStep-1):(this.currentStep=t.length+1,e=t.length),null!==this.performEventMoveForDrawing)for(var i=0;is?n=r:a=r,o<=2)break}return n}function ve(t){var e=Math.floor(ye(t)),i=_e(e),n=t/i,a=0;return a=n<1.5?1:n<2.5?2:n<3.5?3:n<4.5?4:n<5.5?5:n<6.5?6:8,t=a*i,e>=-20?+t.toFixed(e<0?-e:0):t}function fe(t,e){null==e&&(e=10),e=Math.min(Math.max(0,e),20);var i=(+t).toFixed(e);return+i}function ge(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var a=e.indexOf(".");return a<0?0:e.length-1-a}function me(t,e,i){var n=[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER];return t.forEach(function(t){var a,r;n[0]=Math.max(null!==(a=t[e])&&void 0!==a?a:t,n[0]),n[1]=Math.min(null!==(r=t[i])&&void 0!==r?r:t,n[1])}),n}function ye(t){return Math.log(t)/Math.log(10)}function _e(t){return Math.pow(10,t)}function be(){return{from:0,to:0,realFrom:0,realTo:0}}var xe={MIN:1,MAX:50},we=8,Se=80,Ce=.88,ke=10,Ie=function(){function t(t){this._dateTimeFormat=this._buildDateTimeFormat(),this._zoomEnabled=!0,this._scrollEnabled=!0,this._totalBarSpace=0,this._barSpace=we,this._offsetRightDistance=Se,this._startLastBarRightSideDiffBarCount=0,this._scrollLimitRole=0,this._minVisibleBarCount={left:2,right:2},this._maxOffsetDistance={left:50,right:50},this._visibleRange=be(),this._chartStore=t,this._gapBarSpace=this._calcGapBarSpace(),this._lastBarRightSideDiffBarCount=this._offsetRightDistance/this._barSpace}return t.prototype._calcGapBarSpace=function(){var t;return this._barSpace>3?t=Math.floor(this._barSpace*Ce):(t=Math.floor(this._barSpace),t===this._barSpace&&t--),t%2===0&&t--,t=Math.max(1,t),t},t.prototype.adjustVisibleRange=function(){var t,e,i,n,a=this._chartStore.getDataList(),r=a.length,o=this._totalBarSpace/this._barSpace;1===this._scrollLimitRole?(i=(this._totalBarSpace-this._maxOffsetDistance.right)/this._barSpace,n=(this._totalBarSpace-this._maxOffsetDistance.left)/this._barSpace):(i=this._minVisibleBarCount.left,n=this._minVisibleBarCount.right),i=Math.max(0,i),n=Math.max(0,n);var s=o-Math.min(i,r);this._lastBarRightSideDiffBarCount>s&&(this._lastBarRightSideDiffBarCount=s);var l=-r+Math.min(n,r);this._lastBarRightSideDiffBarCountr&&(c=r);var d=Math.round(c-o)-1;d<0&&(d=0);var h=this._lastBarRightSideDiffBarCount>0?Math.round(r+this._lastBarRightSideDiffBarCount-o)-1:d;if(this._visibleRange={from:d,to:c,realFrom:h,realTo:u},this._chartStore.getActionStore().execute(Tt.OnVisibleRangeChange,this._visibleRange),this._chartStore.adjustVisibleDataList(),0===d){var p=a[0];this._chartStore.executeLoadMoreCallback(null!==(t=null===p||void 0===p?void 0:p.timestamp)&&void 0!==t?t:null),this._chartStore.executeLoadDataCallback({type:Yt.Forward,data:null!==p&&void 0!==p?p:null})}c===r&&this._chartStore.executeLoadDataCallback({type:Yt.Backward,data:null!==(e=a[r-1])&&void 0!==e?e:null})},t.prototype.getDateTimeFormat=function(){return this._dateTimeFormat},t.prototype._buildDateTimeFormat=function(t){var e={hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"};Mt(t)&&(e.timeZone=t);var i=null;try{i=new Intl.DateTimeFormat("en",e)}catch(n){_t("","","Timezone is error!!!")}return i},t.prototype.setTimezone=function(t){var e=this._buildDateTimeFormat(t);null!==e&&(this._dateTimeFormat=e)},t.prototype.getTimezone=function(){return this._dateTimeFormat.resolvedOptions().timeZone},t.prototype.getBarSpace=function(){return{bar:this._barSpace,halfBar:this._barSpace/2,gapBar:this._gapBarSpace,halfGapBar:Math.floor(this._gapBarSpace/2)}},t.prototype.setBarSpace=function(t,e){txe.MAX||this._barSpace===t||(this._barSpace=t,this._gapBarSpace=this._calcGapBarSpace(),null===e||void 0===e||e(),this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0))},t.prototype.setTotalBarSpace=function(t){return this._totalBarSpace!==t&&(this._totalBarSpace=t,this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0)),this},t.prototype.setOffsetRightDistance=function(t,e){return this._offsetRightDistance=1===this._scrollLimitRole?Math.min(this._maxOffsetDistance.right,t):t,this._lastBarRightSideDiffBarCount=this._offsetRightDistance/this._barSpace,null!==e&&void 0!==e&&e&&(this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0)),this},t.prototype.resetOffsetRightDistance=function(){this.setOffsetRightDistance(this._offsetRightDistance)},t.prototype.getInitialOffsetRightDistance=function(){return this._offsetRightDistance},t.prototype.getOffsetRightDistance=function(){return Math.max(0,this._lastBarRightSideDiffBarCount*this._barSpace)},t.prototype.getLastBarRightSideDiffBarCount=function(){return this._lastBarRightSideDiffBarCount},t.prototype.setLastBarRightSideDiffBarCount=function(t){return this._lastBarRightSideDiffBarCount=t,this},t.prototype.setMaxOffsetLeftDistance=function(t){return this._scrollLimitRole=1,this._maxOffsetDistance.left=t,this},t.prototype.setMaxOffsetRightDistance=function(t){return this._scrollLimitRole=1,this._maxOffsetDistance.right=t,this},t.prototype.setLeftMinVisibleBarCount=function(t){return this._scrollLimitRole=0,this._minVisibleBarCount.left=t,this},t.prototype.setRightMinVisibleBarCount=function(t){return this._scrollLimitRole=0,this._minVisibleBarCount.right=t,this},t.prototype.getVisibleRange=function(){return this._visibleRange},t.prototype.startScroll=function(){this._startLastBarRightSideDiffBarCount=this._lastBarRightSideDiffBarCount},t.prototype.scroll=function(t){if(this._scrollEnabled){var e=t/this._barSpace,i=this._lastBarRightSideDiffBarCount*this._barSpace;this._lastBarRightSideDiffBarCount=this._startLastBarRightSideDiffBarCount-e,this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0);var n=Math.round(i-this._lastBarRightSideDiffBarCount*this._barSpace);0!==n&&this._chartStore.getActionStore().execute(Tt.OnScroll,{distance:n})}},t.prototype.getDataByDataIndex=function(t){var e;return null!==(e=this._chartStore.getDataList()[t])&&void 0!==e?e:null},t.prototype.coordinateToFloatIndex=function(t){var e=this._chartStore.getDataList().length,i=(this._totalBarSpace-t)/this._barSpace,n=e+this._lastBarRightSideDiffBarCount-i;return Math.round(1e6*n)/1e6},t.prototype.dataIndexToTimestamp=function(t){var e,i=this.getDataByDataIndex(t);return null!==(e=null===i||void 0===i?void 0:i.timestamp)&&void 0!==e?e:null},t.prototype.timestampToDataIndex=function(t){var e=this._chartStore.getDataList();return 0===e.length?0:pe(e,"timestamp",t)},t.prototype.dataIndexToCoordinate=function(t){var e=this._chartStore.getDataList().length,i=e+this._lastBarRightSideDiffBarCount-t;return Math.floor(this._totalBarSpace-(i-.5)*this._barSpace)},t.prototype.coordinateToDataIndex=function(t){return Math.ceil(this.coordinateToFloatIndex(t))-1},t.prototype.zoom=function(t,e){var i,n=this;if(this._zoomEnabled){var a=null!==e&&void 0!==e?e:null;if(!Et(null===a||void 0===a?void 0:a.x)){var r=this._chartStore.getTooltipStore().getCrosshair();a={x:null!==(i=null===r||void 0===r?void 0:r.x)&&void 0!==i?i:this._totalBarSpace/2}}var o=a.x,s=this.coordinateToFloatIndex(o),l=this._barSpace,c=this._barSpace+t*(this._barSpace/ke);this.setBarSpace(c,function(){n._lastBarRightSideDiffBarCount+=s-n.coordinateToFloatIndex(o)});var u=this._barSpace/l;1!==u&&this._chartStore.getActionStore().execute(Tt.OnZoom,{scale:u})}},t.prototype.setZoomEnabled=function(t){return this._zoomEnabled=t,this},t.prototype.getZoomEnabled=function(){return this._zoomEnabled},t.prototype.setScrollEnabled=function(t){return this._scrollEnabled=t,this},t.prototype.getScrollEnabled=function(){return this._scrollEnabled},t.prototype.clear=function(){this._visibleRange=be()},t}(),Ee={name:"AVP",shortName:"AVP",series:Xt.Price,precision:2,figures:[{key:"avp",title:"AVP: ",type:"line"}],calc:function(t){var e=0,i=0;return t.map(function(t){var n,a,r={},o=null!==(n=null===t||void 0===t?void 0:t.turnover)&&void 0!==n?n:0,s=null!==(a=null===t||void 0===t?void 0:t.volume)&&void 0!==a?a:0;return e+=o,i+=s,0!==i&&(r.avp=e/i),r})}},Ae={name:"AO",shortName:"AO",calcParams:[5,34],figures:[{key:"ao",title:"AO: ",type:"bar",baseValue:0,styles:function(t,e,i){var n,a,r,o,s,l=t.prev,c=t.current,u=null!==(a=null===(n=l.indicatorData)||void 0===n?void 0:n.ao)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,d=null!==(o=null===(r=c.indicatorData)||void 0===r?void 0:r.ao)&&void 0!==o?o:Number.MIN_SAFE_INTEGER;s=d>u?Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):Rt(e.styles,"bars[0].downColor",i.bars[0].downColor);var h=d>u?O.Stroke:O.Fill;return{color:s,style:h,borderColor:s}}}],calc:function(t,e){var i=e.calcParams,n=Math.max(i[0],i[1]),a=0,r=0,o=0,s=0;return t.map(function(e,l){var c={},u=(e.low+e.high)/2;if(a+=u,r+=u,l>=i[0]-1){o=a/i[0];var d=t[l-(i[0]-1)];a-=(d.low+d.high)/2}if(l>=i[1]-1){s=r/i[1];d=t[l-(i[1]-1)];r-=(d.low+d.high)/2}return l>=n-1&&(c.ao=o-s),c})}},Pe={name:"BIAS",shortName:"BIAS",calcParams:[6,12,24],figures:[{key:"bias1",title:"BIAS6: ",type:"line"},{key:"bias2",title:"BIAS12: ",type:"line"},{key:"bias3",title:"BIAS24: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"bias".concat(e+1),title:"BIAS".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[];return t.map(function(e,r){var o={},s=e.close;return i.forEach(function(e,l){var c;if(a[l]=(null!==(c=a[l])&&void 0!==c?c:0)+s,r>=e-1){var u=a[l]/i[l];o[n[l].key]=(s-u)/u*100,a[l]-=t[r-(e-1)].close}}),o})}};function Me(t,e){var i=t.length,n=0;return t.forEach(function(t){var i=t.close-e;n+=i*i}),n=Math.abs(n),Math.sqrt(n/i)}var De={name:"BOLL",shortName:"BOLL",series:Xt.Price,calcParams:[20,2],precision:2,shouldOhlc:!0,figures:[{key:"up",title:"UP: ",type:"line"},{key:"mid",title:"MID: ",type:"line"},{key:"dn",title:"DN: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=i[0]-1,a=0;return t.map(function(e,r){var o=e.close,s={};if(a+=o,r>=n){s.mid=a/i[0];var l=Me(t.slice(r-n,r+1),s.mid);s.up=s.mid+i[1]*l,s.dn=s.mid-i[1]*l,a-=t[r-n].close}return s})}},Te={name:"BRAR",shortName:"BRAR",calcParams:[26],figures:[{key:"br",title:"BR: ",type:"line"},{key:"ar",title:"AR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0;return t.map(function(e,s){var l,c,u={},d=e.high,h=e.low,p=e.open,v=(null!==(l=t[s-1])&&void 0!==l?l:e).close;if(r+=d-p,o+=p-h,n+=d-v,a+=v-h,s>=i[0]-1){u.ar=0!==o?r/o*100:0,u.br=0!==a?n/a*100:0;var f=t[s-(i[0]-1)],g=f.high,m=f.low,y=f.open,_=(null!==(c=t[s-i[0]])&&void 0!==c?c:t[s-(i[0]-1)]).close;n-=g-_,a-=_-m,r-=g-y,o-=y-m}return u})}},Be={name:"BBI",shortName:"BBI",series:Xt.Price,precision:2,calcParams:[3,6,12,24],shouldOhlc:!0,figures:[{key:"bbi",title:"BBI: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.max.apply(Math,q([],Z(i),!1)),a=[],r=[];return t.map(function(e,o){var s={},l=e.close;if(i.forEach(function(e,i){var n;a[i]=(null!==(n=a[i])&&void 0!==n?n:0)+l,o>=e-1&&(r[i]=a[i]/e,a[i]-=t[o-(e-1)].close)}),o>=n-1){var c=0;r.forEach(function(t){c+=t}),s.bbi=c/4}return s})}},Fe={name:"CCI",shortName:"CCI",calcParams:[20],figures:[{key:"cci",title:"CCI: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=i[0]-1,a=0,r=[];return t.map(function(e,o){var s={},l=(e.high+e.low+e.close)/3;if(a+=l,r.push(l),o>=n){var c=a/i[0],u=r.slice(o-n,o+1),d=0;u.forEach(function(t){d+=Math.abs(t-c)});var h=d/i[0];s.cci=0!==h?(l-c)/h/.015:0;var p=(t[o-n].high+t[o-n].low+t[o-n].close)/3;a-=p}return s})}},Re={name:"CR",shortName:"CR",calcParams:[26,10,20,40,60],figures:[{key:"cr",title:"CR: ",type:"line"},{key:"ma1",title:"MA1: ",type:"line"},{key:"ma2",title:"MA2: ",type:"line"},{key:"ma3",title:"MA3: ",type:"line"},{key:"ma4",title:"MA4: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.ceil(i[1]/2.5+1),a=Math.ceil(i[2]/2.5+1),r=Math.ceil(i[3]/2.5+1),o=Math.ceil(i[4]/2.5+1),s=0,l=[],c=0,u=[],d=0,h=[],p=0,v=[],f=[];return t.forEach(function(e,g){var m,y,_,b,x,w={},S=null!==(m=t[g-1])&&void 0!==m?m:e,C=(S.high+S.close+S.low+S.open)/4,k=Math.max(0,e.high-C),I=Math.max(0,C-e.low);g>=i[0]-1&&(w.cr=0!==I?k/I*100:0,s+=w.cr,c+=w.cr,d+=w.cr,p+=w.cr,g>=i[0]+i[1]-2&&(l.push(s/i[1]),g>=i[0]+i[1]+n-3&&(w.ma1=l[l.length-1-n]),s-=null!==(y=f[g-(i[1]-1)].cr)&&void 0!==y?y:0),g>=i[0]+i[2]-2&&(u.push(c/i[2]),g>=i[0]+i[2]+a-3&&(w.ma2=u[u.length-1-a]),c-=null!==(_=f[g-(i[2]-1)].cr)&&void 0!==_?_:0),g>=i[0]+i[3]-2&&(h.push(d/i[3]),g>=i[0]+i[3]+r-3&&(w.ma3=h[h.length-1-r]),d-=null!==(b=f[g-(i[3]-1)].cr)&&void 0!==b?b:0),g>=i[0]+i[4]-2&&(v.push(p/i[4]),g>=i[0]+i[4]+o-3&&(w.ma4=v[v.length-1-o]),p-=null!==(x=f[g-(i[4]-1)].cr)&&void 0!==x?x:0)),f.push(w)}),f}},Le={name:"DMA",shortName:"DMA",calcParams:[10,50,10],figures:[{key:"dma",title:"DMA: ",type:"line"},{key:"ama",title:"AMA: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.max(i[0],i[1]),a=0,r=0,o=0,s=[];return t.forEach(function(e,l){var c,u={},d=e.close;a+=d,r+=d;var h=0,p=0;if(l>=i[0]-1&&(h=a/i[0],a-=t[l-(i[0]-1)].close),l>=i[1]-1&&(p=r/i[1],r-=t[l-(i[1]-1)].close),l>=n-1){var v=h-p;u.dma=v,o+=v,l>=n+i[2]-2&&(u.ama=o/i[2],o-=null!==(c=s[l-(i[2]-1)].dma)&&void 0!==c?c:0)}s.push(u)}),s}},Ne={name:"DMI",shortName:"DMI",calcParams:[14,6],figures:[{key:"pdi",title:"PDI: ",type:"line"},{key:"mdi",title:"MDI: ",type:"line"},{key:"adx",title:"ADX: ",type:"line"},{key:"adxr",title:"ADXR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0,s=0,l=0,c=0,u=0,d=[];return t.forEach(function(e,h){var p,v,f={},g=null!==(p=t[h-1])&&void 0!==p?p:e,m=g.close,y=e.high,_=e.low,b=y-_,x=Math.abs(y-m),w=Math.abs(m-_),S=y-g.high,C=g.low-_,k=Math.max(Math.max(b,x),w),I=S>0&&S>C?S:0,E=C>0&&C>S?C:0;if(n+=k,a+=I,r+=E,h>=i[0]-1){h>i[0]-1?(o=o-o/i[0]+k,s=s-s/i[0]+I,l=l-l/i[0]+E):(o=n,s=a,l=r);var A=0,P=0;0!==o&&(A=100*s/o,P=100*l/o),f.pdi=A,f.mdi=P;var M=0;P+A!==0&&(M=Math.abs(P-A)/(P+A)*100),c+=M,h>=2*i[0]-2&&(u=h>2*i[0]-2?(u*(i[0]-1)+M)/i[0]:c/i[0],f.adx=u,h>=2*i[0]+i[1]-3&&(f.adxr=((null!==(v=d[h-(i[1]-1)].adx)&&void 0!==v?v:0)+u)/2))}d.push(f)}),d}},Oe={name:"EMV",shortName:"EMV",calcParams:[14,9],figures:[{key:"emv",title:"EMV: ",type:"line"},{key:"maEmv",title:"MAEMV: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=[];return t.map(function(e,r){var o,s={};if(r>0){var l=t[r-1],c=e.high,u=e.low,d=null!==(o=e.volume)&&void 0!==o?o:0,h=(c+u)/2-(l.high+l.low)/2;if(0===d||c-u===0)s.emv=0;else{var p=d/1e8/(c-u);s.emv=h/p}n+=s.emv,a.push(s.emv),r>=i[0]&&(s.maEmv=n/i[0],n-=a[r-i[0]])}return s})}},ze={name:"EMA",shortName:"EMA",series:Xt.Price,calcParams:[6,12,20],precision:2,shouldOhlc:!0,figures:[{key:"ema1",title:"EMA6: ",type:"line"},{key:"ema2",title:"EMA12: ",type:"line"},{key:"ema3",title:"EMA20: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"ema".concat(e+1),title:"EMA".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=0,r=[];return t.map(function(t,e){var o={},s=t.close;return a+=s,i.forEach(function(t,i){e>=t-1&&(r[i]=e>t-1?(2*s+(t-1)*r[i])/(t+1):a/t,o[n[i].key]=r[i])}),o})}},Ve={name:"MTM",shortName:"MTM",calcParams:[12,6],figures:[{key:"mtm",title:"MTM: ",type:"line"},{key:"maMtm",title:"MAMTM: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=[];return t.forEach(function(e,r){var o,s={};if(r>=i[0]){var l=e.close,c=t[r-i[0]].close;s.mtm=l-c,n+=s.mtm,r>=i[0]+i[1]-1&&(s.maMtm=n/i[1],n-=null!==(o=a[r-(i[1]-1)].mtm)&&void 0!==o?o:0)}a.push(s)}),a}},We={name:"MA",shortName:"MA",series:Xt.Price,calcParams:[5,10,30,60],precision:2,shouldOhlc:!0,figures:[{key:"ma5",title:"MA5: ",type:"line"},{key:"ma10",title:"MA10: ",type:"line"},{key:"ma30",title:"MA30: ",type:"line"},{key:"ma60",title:"MA60: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"ma".concat(e+1),title:"MA".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[];return t.map(function(e,r){var o={},s=e.close;return i.forEach(function(e,i){var l;a[i]=(null!==(l=a[i])&&void 0!==l?l:0)+s,r>=e-1&&(o[n[i].key]=a[i]/e,a[i]-=t[r-(e-1)].close)}),o})}},He={name:"MACD",shortName:"MACD",calcParams:[12,26,9],figures:[{key:"dif",title:"DIF: ",type:"line"},{key:"dea",title:"DEA: ",type:"line"},{key:"macd",title:"MACD: ",type:"bar",baseValue:0,styles:function(t,e,i){var n,a,r,o,s,l=t.prev,c=t.current,u=null!==(a=null===(n=l.indicatorData)||void 0===n?void 0:n.macd)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,d=null!==(o=null===(r=c.indicatorData)||void 0===r?void 0:r.macd)&&void 0!==o?o:Number.MIN_SAFE_INTEGER;s=d>0?Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):d<0?Rt(e.styles,"bars[0].downColor",i.bars[0].downColor):Rt(e.styles,"bars[0].noChangeColor",i.bars[0].noChangeColor);var h=u=a[0]-1&&(i=e>a[0]-1?(2*d+(a[0]-1)*i)/(a[0]+1):r/a[0]),e>=a[1]-1&&(n=e>a[1]-1?(2*d+(a[1]-1)*n)/(a[1]+1):r/a[1]),e>=c-1&&(o=i-n,u.dif=o,s+=o,e>=c+a[2]-2&&(l=e>c+a[2]-2?(2*o+l*(a[2]-1))/(a[2]+1):s/a[2],u.macd=2*(o-l),u.dea=l)),u})}},$e={name:"OBV",shortName:"OBV",calcParams:[30],figures:[{key:"obv",title:"OBV: ",type:"line"},{key:"maObv",title:"MAOBV: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=[];return t.forEach(function(e,o){var s,l,c,u,d=null!==(s=t[o-1])&&void 0!==s?s:e;e.closed.close&&(a+=null!==(c=e.volume)&&void 0!==c?c:0);var h={obv:a};n+=a,o>=i[0]-1&&(h.maObv=n/i[0],n-=null!==(u=r[o-(i[0]-1)].obv)&&void 0!==u?u:0),r.push(h)}),r}},Ye={name:"PVT",shortName:"PVT",figures:[{key:"pvt",title:"PVT: ",type:"line"}],calc:function(t){var e=0;return t.map(function(i,n){var a,r,o={},s=i.close,l=null!==(a=i.volume)&&void 0!==a?a:1,c=(null!==(r=t[n-1])&&void 0!==r?r:i).close,u=0,d=c*l;return 0!==d&&(u=(s-c)/d),e+=u,o.pvt=e,o})}},Xe={name:"PSY",shortName:"PSY",calcParams:[12,6],figures:[{key:"psy",title:"PSY: ",type:"line"},{key:"maPsy",title:"MAPSY: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=[],o=[];return t.forEach(function(e,s){var l,c,u={},d=(null!==(l=t[s-1])&&void 0!==l?l:e).close,h=e.close-d>0?1:0;r.push(h),n+=h,s>=i[0]-1&&(u.psy=n/i[0]*100,a+=u.psy,s>=i[0]+i[1]-2&&(u.maPsy=a/i[1],a-=null!==(c=o[s-(i[1]-1)].psy)&&void 0!==c?c:0),n-=r[s-(i[0]-1)]),o.push(u)}),o}},Ke={name:"ROC",shortName:"ROC",calcParams:[12,6],figures:[{key:"roc",title:"ROC: ",type:"line"},{key:"maRoc",title:"MAROC: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=[],a=0;return t.forEach(function(e,r){var o,s,l={};if(r>=i[0]-1){var c=e.close,u=(null!==(o=t[r-i[0]])&&void 0!==o?o:t[r-(i[0]-1)]).close;l.roc=0!==u?(c-u)/u*100:0,a+=l.roc,r>=i[0]-1+i[1]-1&&(l.maRoc=a/i[1],a-=null!==(s=n[r-(i[1]-1)].roc)&&void 0!==s?s:0)}n.push(l)}),n}},je={name:"RSI",shortName:"RSI",calcParams:[6,12,24],figures:[{key:"rsi1",title:"RSI1: ",type:"line"},{key:"rsi2",title:"RSI2: ",type:"line"},{key:"rsi3",title:"RSI3: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){var i=e+1;return{key:"rsi".concat(i),title:"RSI".concat(i,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[],r=[];return t.map(function(e,o){var s,l={},c=(null!==(s=t[o-1])&&void 0!==s?s:e).close,u=e.close-c;return i.forEach(function(e,i){var s,c,d;if(u>0?a[i]=(null!==(s=a[i])&&void 0!==s?s:0)+u:r[i]=(null!==(c=r[i])&&void 0!==c?c:0)+Math.abs(u),o>=e-1){0!==r[i]?l[n[i].key]=100-100/(1+a[i]/r[i]):l[n[i].key]=0;var h=t[o-(e-1)],p=null!==(d=t[o-e])&&void 0!==d?d:h,v=h.close-p.close;v>0?a[i]-=v:r[i]-=Math.abs(v)}}),l})}},Ue={name:"SMA",shortName:"SMA",series:Xt.Price,calcParams:[12,2],precision:2,figures:[{key:"sma",title:"SMA: ",type:"line"}],shouldOhlc:!0,calc:function(t,e){var i=e.calcParams,n=0,a=0;return t.map(function(t,e){var r={},o=t.close;return n+=o,e>=i[0]-1&&(a=e>i[0]-1?(o*i[1]+a*(i[0]-i[1]+1))/(i[0]+1):n/i[0],r.sma=a),r})}},Ge={name:"KDJ",shortName:"KDJ",calcParams:[9,3,3],figures:[{key:"k",title:"K: ",type:"line"},{key:"d",title:"D: ",type:"line"},{key:"j",title:"J: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=[];return t.forEach(function(e,a){var r,o,s,l,c={},u=e.close;if(a>=i[0]-1){var d=me(t.slice(a-(i[0]-1),a+1),"high","low"),h=d[0],p=d[1],v=h-p,f=(u-p)/(0===v?1:v)*100;c.k=((i[1]-1)*(null!==(o=null===(r=n[a-1])||void 0===r?void 0:r.k)&&void 0!==o?o:50)+f)/i[1],c.d=((i[2]-1)*(null!==(l=null===(s=n[a-1])||void 0===s?void 0:s.d)&&void 0!==l?l:50)+c.k)/i[2],c.j=3*c.k-2*c.d}n.push(c)}),n}},Ze={name:"SAR",shortName:"SAR",series:Xt.Price,calcParams:[2,2,20],precision:2,shouldOhlc:!0,figures:[{key:"sar",title:"SAR: ",type:"circle",styles:function(t,e,i){var n,a,r=t.current,o=null!==(a=null===(n=r.indicatorData)||void 0===n?void 0:n.sar)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,s=r.kLineData,l=((null===s||void 0===s?void 0:s.high)+(null===s||void 0===s?void 0:s.low))/2,c=oe.low?(c=s,o=n,s=-100,l=!l):c>p&&(c=p)}else{(-100===s||s>h)&&(s=h,o=Math.min(o+a,r)),c=u+o*(s-u);var v=Math.max(t[Math.max(1,i)-1].high,d);c=r[0]-1&&(i=e>r[0]-1?(2*p+(r[0]-1)*i)/(r[0]+1):o/r[0],s+=i,e>=2*r[0]-2&&(n=e>2*r[0]-2?(2*i+(r[0]-1)*n)/(r[0]+1):s/r[0],l+=n,e>=3*r[0]-3))){var v=void 0,f=0;e>3*r[0]-3?(v=(2*n+(r[0]-1)*a)/(r[0]+1),f=(v-a)/a*100):v=l/r[0],a=v,h.trix=f,c+=f,e>=3*r[0]+r[1]-4&&(h.maTrix=c/r[1],c-=null!==(d=u[e-(r[1]-1)].trix)&&void 0!==d?d:0)}u.push(h)}),u}};function Je(){return{key:"volume",title:"VOLUME: ",type:"bar",baseValue:0,styles:function(t,e,i){var n=t.current.kLineData,a=Rt(e.styles,"bars[0].noChangeColor",i.bars[0].noChangeColor);return At(n)&&(n.close>n.open?a=Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):n.close=e-1&&(l[n[i].key]=a[i]/e,a[i]-=null!==(c=t[r-(e-1)].volume)&&void 0!==c?c:0)}),l})}},ti={name:"VR",shortName:"VR",calcParams:[26,6],figures:[{key:"vr",title:"VR: ",type:"line"},{key:"maVr",title:"MAVR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0,s=[];return t.forEach(function(e,l){var c,u,d,h,p,v={},f=e.close,g=(null!==(c=t[l-1])&&void 0!==c?c:e).close,m=null!==(u=e.volume)&&void 0!==u?u:0;if(f>g?n+=m:f=i[0]-1){var y=r/2;v.vr=a+y===0?0:(n+y)/(a+y)*100,o+=v.vr,l>=i[0]+i[1]-2&&(v.maVr=o/i[1],o-=null!==(d=s[l-(i[1]-1)].vr)&&void 0!==d?d:0);var _=t[l-(i[0]-1)],b=null!==(h=t[l-i[0]])&&void 0!==h?h:_,x=_.close,w=null!==(p=_.volume)&&void 0!==p?p:0;x>b.close?n-=w:x=s){var l=me(t.slice(a-s,a+1),"high","low"),c=l[0],u=l[1],d=c-u;r[n[i].key]=0===d?0:(o-c)/d*100}}),r})}},ii={},ni=[Ee,Ae,Pe,De,Te,Be,Fe,Re,Le,Ne,Oe,ze,Ve,We,He,$e,Ye,Xe,Ke,je,Ue,Ge,Ze,qe,Qe,ti,ei];function ai(t){ii[t.name]=Gt.extend(t)}function ri(t){var e;return null!==(e=ii[t])&&void 0!==e?e:null}ni.forEach(function(t){ii[t.name]=Gt.extend(t)});var oi=function(){function t(t){this._instances=new Map,this._chartStore=t}return t.prototype._overrideInstance=function(t,e){var i=e.shortName,n=e.series,a=e.calcParams,r=e.precision,o=e.figures,s=e.minValue,l=e.maxValue,c=e.shouldOhlc,u=e.shouldFormatBigNumber,d=e.visible,h=e.zLevel,p=e.styles,v=e.extendData,f=e.regenerateFigures,g=e.createTooltipDataSource,m=e.draw,y=e.calc,_=!1;Mt(i)&&t.setShortName(i)&&(_=!0),At(n)&&t.setSeries(n)&&(_=!0);var b=!1;Ct(a)&&t.setCalcParams(a)&&(_=!0,b=!0),Ct(o)&&t.setFigures(o)&&(_=!0,b=!0),void 0!==s&&t.setMinValue(s)&&(_=!0),void 0!==l&&t.setMinValue(l)&&(_=!0),Et(r)&&t.setPrecision(r)&&(_=!0),Pt(c)&&t.setShouldOhlc(c)&&(_=!0),Pt(u)&&t.setShouldFormatBigNumber(u)&&(_=!0),Pt(d)&&t.setVisible(d)&&(_=!0);var x=!1;return Et(h)&&t.setZLevel(h)&&(_=!0,x=!0),At(p)&&t.setStyles(p)&&(_=!0),void 0!==v&&t.setExtendData(v)&&(_=!0,b=!0),void 0!==f&&t.setRegenerateFigures(f)&&(_=!0),void 0!==g&&t.setCreateTooltipDataSource(g)&&(_=!0),void 0!==m&&t.setDraw(m)&&(_=!0),kt(y)&&(t.calc=y,b=!0),[_,b,x]},t.prototype._sort=function(t){var e;Mt(t)?null===(e=this._instances.get(t))||void 0===e||e.sort(function(t,e){return t.zLevel-e.zLevel}):this._instances.forEach(function(t){t.sort(function(t,e){return t.zLevel-e.zLevel})})},t.prototype.addInstance=function(t,e,i){return j(this,void 0,void 0,function(){var n,a,r,o,s;return U(this,function(l){switch(l.label){case 0:return n=t.name,a=this._instances.get(e),At(a)?(r=a.find(function(t){return t.name===n}),At(r)?[4,Promise.reject(new Error("Duplicate indicators."))]:[3,2]):[3,2];case 1:return[2,l.sent()];case 2:return At(a)||(a=[]),o=ri(n),s=new o,this.synchronizeSeriesPrecision(s),this._overrideInstance(s,t),i||(a=[]),a.push(s),this._instances.set(e,a),this._sort(e),[4,s.calcIndicator(this._chartStore.getDataList())];case 3:return[2,l.sent()]}})})},t.prototype.getInstances=function(t){var e;return null!==(e=this._instances.get(t))&&void 0!==e?e:[]},t.prototype.removeInstance=function(t,e){var i,n=!1,a=this._instances.get(t);if(At(a)){if(Mt(e)){var r=a.findIndex(function(t){return t.name===e});r>-1&&(a.splice(r,1),n=!0)}else this._instances.set(t,[]),n=!0;0===(null===(i=this._instances.get(t))||void 0===i?void 0:i.length)&&this._instances.delete(t)}return n},t.prototype.hasInstances=function(t){return this._instances.has(t)},t.prototype.calcInstance=function(t,e){return j(this,void 0,void 0,function(){var i,n,a,r,o=this;return U(this,function(s){switch(s.label){case 0:return i=[],Mt(t)?Mt(e)?(n=this._instances.get(e),At(n)&&(a=n.find(function(e){return e.name===t}),At(a)&&i.push(a.calcIndicator(this._chartStore.getDataList())))):this._instances.forEach(function(e){var n=e.find(function(e){return e.name===t});At(n)&&i.push(n.calcIndicator(o._chartStore.getDataList()))}):this._instances.forEach(function(t){t.forEach(function(t){i.push(t.calcIndicator(o._chartStore.getDataList()))})}),[4,Promise.all(i)];case 1:return r=s.sent(),[2,r.includes(!0)]}})})},t.prototype.getInstanceByPaneId=function(t,e){var i,n,a=function(t){var e=new Map;return t.forEach(function(t){e.set(t.name,t)}),e};if(Mt(t)){var r=null!==(i=this._instances.get(t))&&void 0!==i?i:[];return Mt(e)?null!==(n=null===r||void 0===r?void 0:r.find(function(t){return t.name===e}))&&void 0!==n?n:null:a(r)}var o=new Map;return this._instances.forEach(function(t,e){o.set(e,a(t))}),o},t.prototype.synchronizeSeriesPrecision=function(t){var e=this._chartStore.getPrecision(),i=e.price,n=e.volume,a=function(t){switch(t.series){case Xt.Price:t.setPrecision(i,!0);break;case Xt.Volume:t.setPrecision(n,!0);break}};At(t)?a(t):this._instances.forEach(function(t){t.forEach(function(t){a(t)})})},t.prototype.override=function(t,e){return j(this,void 0,void 0,function(){var i,n,a,r,o,s,l,c=this;return U(this,function(u){switch(u.label){case 0:return i=t.name,n=new Map,null!==e?(a=this._instances.get(e),At(a)&&n.set(e,a)):n=this._instances,r=!1,o=[],s=!1,n.forEach(function(e){var n=e.find(function(t){return t.name===i});if(At(n)){var a=c._overrideInstance(n,t);a[2]&&(s=!0),a[1]?o.push(n.calcIndicator(c._chartStore.getDataList())):a[0]&&(r=!0)}}),s&&this._sort(),[4,Promise.all(o)];case 1:return l=u.sent(),[2,[r,l.includes(!0)]]}})})},t}(),si=function(){function t(t){this._crosshair={},this._activeIcon=null,this._chartStore=t}return t.prototype.setCrosshair=function(t,e){var i,n,a=null!==e&&void 0!==e?e:{},r=a.notInvalidate,o=a.notExecuteAction,s=this._chartStore.getDataList(),l=null!==t&&void 0!==t?t:{};Et(l.x)?(i=this._chartStore.getTimeScaleStore().coordinateToDataIndex(l.x),n=i<0?0:i>s.length-1?s.length-1:i):(i=s.length-1,n=i);var c=s[n],u=this._chartStore.getTimeScaleStore().dataIndexToCoordinate(i),d={x:this._crosshair.x,y:this._crosshair.y,paneId:this._crosshair.paneId};this._crosshair=K(K({},l),{realX:u,kLineData:c,realDataIndex:i,dataIndex:n}),d.x===l.x&&d.y===l.y&&d.paneId===l.paneId||(null===c||null!==o&&void 0!==o&&o||this._chartStore.getChart().crosshairChange(this._crosshair),null!==r&&void 0!==r&&r||this._chartStore.getChart().updatePane(1))},t.prototype.recalculateCrosshair=function(t){this.setCrosshair(this._crosshair,{notInvalidate:t})},t.prototype.getCrosshair=function(){return this._crosshair},t.prototype.setActiveIcon=function(t){this._activeIcon=null!==t&&void 0!==t?t:null},t.prototype.getActiveIcon=function(){return this._activeIcon},t.prototype.clear=function(){this.setCrosshair({},{notInvalidate:!0}),this.setActiveIcon()},t}(),li={name:"fibonacciLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e,i=t.coordinates,n=t.bounding,a=t.overlay,r=t.precision,o=t.thousandsSeparator,s=t.decimalFoldThreshold,l=t.yAxis,c=a.points;if(i.length>0){var u=null===(e=null===l||void 0===l?void 0:l.isInCandle())||void 0===e||e?r.price:r.excludePriceVolumeMax,d=[],h=[],p=0,v=n.width;if(i.length>1&&Et(c[0].value)&&Et(c[1].value)){var f=[1,.786,.618,.5,.382,.236,0],g=i[0].y-i[1].y,m=c[0].value-c[1].value;f.forEach(function(t){var e,n=i[1].y+g*t,a=Vt(zt(((null!==(e=c[1].value)&&void 0!==e?e:0)+m*t).toFixed(u),o),s);d.push({coordinates:[{x:p,y:n},{x:v,y:n}]}),h.push({x:p,y:n,text:"".concat(a," (").concat((100*t).toFixed(1),"%)"),baseline:"bottom"})})}return[{type:"line",attrs:d},{type:"text",isCheckEvent:!1,attrs:h}]}return[]}},ci={name:"horizontalRayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding,n={x:0,y:e[0].y};return At(e[1])&&e[0].x-1)for(var a=n;a>-1;a--)if(this._children[a].dispatchEvent(t,e,i))return!0;return this.onEvent(t,e,i)},t.prototype.addChild=function(t){return this._children.push(t),this},t.prototype.clear=function(){this._children=[]},t}(),pi=2,vi=function(t){function e(e){var i=t.call(this)||this;return i.attrs=e.attrs,i.styles=e.styles,i}return L(e,t),e.prototype.checkEventOn=function(t){return this.checkEventOnImp(t,this.attrs,this.styles)},e.prototype.setAttrs=function(t){return this.attrs=t,this},e.prototype.setStyles=function(t){return this.styles=t,this},e.prototype.draw=function(t){this.drawImp(t,this.attrs,this.styles)},e.extend=function(t){var i=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return L(i,e),i.prototype.checkEventOnImp=function(e,i,n){return t.checkEventOn(e,i,n)},i.prototype.drawImp=function(e,i,n){t.draw(e,i,n)},i}(e);return i},e}(hi);function fi(t,e){var i=[];i=i.concat(e);for(var n=0;n1)for(var r=1;r0&&i<1?i:0:i?.5:0;if(a>0&&n>2){for(var r=e[0].x,o=e[0].y,s=1;s1&&(2!==i.length||i[0].x!==i[1].x&&i[0].y!==i[1].y?(t.save(),c%2===1&&t.translate(.5,.5),t.beginPath(),t.moveTo(i[0].x,i[0].y),_i(t,i,s),t.stroke(),t.closePath(),t.restore()):(t.beginPath(),i[0].x===i[1].x?(t.moveTo(i[0].x+v,i[0].y),t.lineTo(i[1].x+v,i[1].y)):(t.moveTo(i[0].x,i[0].y+v),t.lineTo(i[1].x,i[1].y+v)),t.stroke(),t.closePath()))})}var xi={name:"line",checkEventOn:fi,draw:function(t,e,i){bi(t,e,i)}};function wi(t,e,i){var n=null!==i&&void 0!==i?i:0,a=[];if(t.length>1)if(t[0].x===t[1].x){var r=0,o=e.height;if(a.push({coordinates:[{x:t[0].x,y:r},{x:t[0].x,y:o}]}),t.length>2){a.push({coordinates:[{x:t[2].x,y:r},{x:t[2].x,y:o}]});for(var s=t[0].x-t[2].x,l=0;l2){var f=t[2].y-p*t[2].x;a.push({coordinates:[{x:u,y:u*p+f},{x:d,y:d*p+f}]});for(s=v-f,l=0;l1){var i=void 0;return i=t[0].x===t[1].x&&t[0].y!==t[1].y?t[0].yt[1].x?{x:0,y:mi(t[0],t[1],{x:0,y:t[0].y})}:{x:e.width,y:mi(t[0],t[1],{x:e.width,y:t[0].y})},{coordinates:[t[0],i]}}return[]}var Ei={name:"rayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;return[{type:"line",attrs:Ii(e,i)}]}},Ai={name:"segment",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates;return 2===e.length?[{type:"line",attrs:{coordinates:e}}]:[]}},Pi={name:"straightLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;return 2===e.length?e[0].x===e[1].x?[{type:"line",attrs:{coordinates:[{x:e[0].x,y:0},{x:e[0].x,y:i.height}]}}]:[{type:"line",attrs:{coordinates:[{x:0,y:mi(e[0],e[1],{x:0,y:e[0].y})},{x:i.width,y:mi(e[0],e[1],{x:i.width,y:e[0].y})}]}}]:[]}},Mi={name:"verticalRayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;if(2===e.length){var n={x:e[0].x,y:0};return e[0].y0&&l.set(e[0],n)};try{for(var u=G(this._instances),d=u.next();!d.done;d=u.next()){var h=d.value;c(h)}}catch(v){e={error:v}}finally{try{d&&!d.done&&(i=u.return)&&i.call(u)}finally{if(e)throw e.error}}this._instances=l}else this._instances.forEach(function(t,e){r.push(e),t.forEach(function(t){var e;null===(e=t.onRemoved)||void 0===e||e.call(t,{overlay:t})})}),this._instances.clear();if(r.length>0){var p=this._chartStore.getChart();r.forEach(function(t){p.updatePane(1,t)}),p.updatePane(1,Wi.X_AXIS)}},t.prototype.setPressedInstanceInfo=function(t){this._pressedInstanceInfo=t},t.prototype.getPressedInstanceInfo=function(){return this._pressedInstanceInfo},t.prototype.updatePointPosition=function(t,e){if(t>0){var i=this._chartStore.getDataList();this._instances.forEach(function(n){n.forEach(function(n){var a=n.points;a.forEach(function(n){if(!At(n.timestamp)&&At(n.dataIndex)){e===Yt.Forward&&(n.dataIndex=n.dataIndex+t);var a=i[n.dataIndex];n.timestamp=null===a||void 0===a?void 0:a.timestamp}})})})}},t.prototype.setHoverInstanceInfo=function(t,e){var i,n,a=this._hoverInstanceInfo,r=a.instance,o=a.figureType,s=a.figureKey,l=a.figureIndex;if(((null===r||void 0===r?void 0:r.id)!==(null===(i=t.instance)||void 0===i?void 0:i.id)||o!==t.figureType||l!==t.figureIndex)&&(this._hoverInstanceInfo=t,(null===r||void 0===r?void 0:r.id)!==(null===(n=t.instance)||void 0===n?void 0:n.id))){var c=!1,u=!1;null!==r&&(u=!0,kt(r.onMouseLeave)&&(r.onMouseLeave(K({overlay:r,figureKey:s,figureIndex:l},e)),c=!0)),null!==t.instance&&(u=!0,kt(t.instance.onMouseEnter)&&(t.instance.onMouseEnter(K({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e)),c=!0)),u&&this._sort(),c||this._chartStore.getChart().updatePane(1)}},t.prototype.getHoverInstanceInfo=function(){return this._hoverInstanceInfo},t.prototype.setClickInstanceInfo=function(t,e){var i,n,a,r,o,s,l,c,u,d=this._clickInstanceInfo,h=d.paneId,p=d.instance,v=d.figureType,f=d.figureKey,g=d.figureIndex;if(null!==(n=null===(i=t.instance)||void 0===i?void 0:i.isDrawing())&&void 0!==n&&n||null===(r=null===(a=t.instance)||void 0===a?void 0:a.onClick)||void 0===r||r.call(a,K({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e)),((null===p||void 0===p?void 0:p.id)!==(null===(o=t.instance)||void 0===o?void 0:o.id)||v!==t.figureType||g!==t.figureIndex)&&(this._clickInstanceInfo=t,(null===p||void 0===p?void 0:p.id)!==(null===(s=t.instance)||void 0===s?void 0:s.id))){null===(l=null===p||void 0===p?void 0:p.onDeselected)||void 0===l||l.call(p,K({overlay:p,figureKey:f,figureIndex:g},e)),null===(u=null===(c=t.instance)||void 0===c?void 0:c.onSelected)||void 0===u||u.call(c,K({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e));var m=this._chartStore.getChart();m.updatePane(1,t.paneId),h!==t.paneId&&m.updatePane(1,h),m.updatePane(1,Wi.X_AXIS)}},t.prototype.getClickInstanceInfo=function(){return this._clickInstanceInfo},t.prototype.isEmpty=function(){return 0===this._instances.size&&null===this._progressInstanceInfo},t.prototype.isDrawing=function(){var t,e;return null!==this._progressInstanceInfo&&null!==(e=null===(t=this._progressInstanceInfo)||void 0===t?void 0:t.instance.isDrawing())&&void 0!==e&&e},t}(),$i=function(){function t(){this._actions=new Map}return t.prototype.execute=function(t,e){var i;null===(i=this._actions.get(t))||void 0===i||i.execute(e)},t.prototype.subscribe=function(t,e){var i;this._actions.has(t)||this._actions.set(t,new Kt),null===(i=this._actions.get(t))||void 0===i||i.subscribe(e)},t.prototype.unsubscribe=function(t,e){var i=this._actions.get(t);At(i)&&(i.unsubscribe(e),i.isEmpty()&&this._actions.delete(t))},t.prototype.has=function(t){var e=this._actions.get(t);return At(e)&&!e.isEmpty()},t}(),Yi={grid:{horizontal:{color:"#EDEDED"},vertical:{color:"#EDEDED"}},candle:{priceMark:{high:{color:"#76808F"},low:{color:"#76808F"}},tooltip:{rect:{color:"#FEFEFE",borderColor:"#F2F3F5"},text:{color:"#76808F"}}},indicator:{tooltip:{text:{color:"#76808F"}}},xAxis:{axisLine:{color:"#DDDDDD"},tickText:{color:"#76808F"},tickLine:{color:"#DDDDDD"}},yAxis:{axisLine:{color:"#DDDDDD"},tickText:{color:"#76808F"},tickLine:{color:"#DDDDDD"}},separator:{color:"#DDDDDD"},crosshair:{horizontal:{line:{color:"#76808F"},text:{borderColor:"#686D76",backgroundColor:"#686D76"}},vertical:{line:{color:"#76808F"},text:{borderColor:"#686D76",backgroundColor:"#686D76"}}}},Xi={grid:{horizontal:{color:"#292929"},vertical:{color:"#292929"}},candle:{priceMark:{high:{color:"#929AA5"},low:{color:"#929AA5"}},tooltip:{rect:{color:"rgba(10, 10, 10, .6)",borderColor:"rgba(10, 10, 10, .6)"},text:{color:"#929AA5"}}},indicator:{tooltip:{text:{color:"#929AA5"}}},xAxis:{axisLine:{color:"#333333"},tickText:{color:"#929AA5"},tickLine:{color:"#333333"}},yAxis:{axisLine:{color:"#333333"},tickText:{color:"#929AA5"},tickLine:{color:"#333333"}},separator:{color:"#333333"},crosshair:{horizontal:{line:{color:"#929AA5"},text:{borderColor:"#373a40",backgroundColor:"#373a40"}},vertical:{line:{color:"#929AA5"},text:{borderColor:"#373a40",backgroundColor:"#373a40"}}}},Ki={light:Yi,dark:Xi};function ji(t){var e;return null!==(e=Ki[t])&&void 0!==e?e:null}var Ui=function(){function t(t,e){this._styles=gt(),this._customApi=ne(),this._locale=ae,this._precision={price:2,volume:0},this._thousandsSeparator=",",this._decimalFoldThreshold=3,this._dataList=[],this._loadMoreCallback=null,this._loadDataCallback=null,this._loading=!0,this._forwardMore=!0,this._backwardMore=!0,this._timeScaleStore=new Ie(this),this._indicatorStore=new oi(this),this._overlayStore=new Hi(this),this._tooltipStore=new si(this),this._actionStore=new $i,this._visibleDataList=[],this._chart=t,this.setOptions(e)}return t.prototype.adjustVisibleDataList=function(){this._visibleDataList=[];for(var t=this._timeScaleStore.getVisibleRange(),e=t.realFrom,i=t.realTo,n=e;n0&&(this._decimalFoldThreshold=u)}return this},t.prototype.getStyles=function(){return this._styles},t.prototype.getLocale=function(){return this._locale},t.prototype.getCustomApi=function(){return this._customApi},t.prototype.getThousandsSeparator=function(){return this._thousandsSeparator},t.prototype.getDecimalFoldThreshold=function(){return this._decimalFoldThreshold},t.prototype.getPrecision=function(){return this._precision},t.prototype.setPrecision=function(t){return this._precision=t,this._indicatorStore.synchronizeSeriesPrecision(),this},t.prototype.getDataList=function(){return this._dataList},t.prototype.getVisibleFirstData=function(){var t,e=this._timeScaleStore.getVisibleRange().from;return null!==(t=this._dataList[e])&&void 0!==t?t:null},t.prototype.getVisibleDataList=function(){return this._visibleDataList},t.prototype.addData=function(t,e,i){return j(this,void 0,void 0,function(){var n,a,r,o,s,l,c;return U(this,function(u){switch(u.label){case 0:if(n=!1,a=!1,r=0,Ct(t)){switch(r=t.length,e){case Yt.Init:this.clear(),this._dataList=t,this._forwardMore=null===i||void 0===i||i,this._timeScaleStore.resetOffsetRightDistance(),a=!0;break;case Yt.Backward:this._dataList=this._dataList.concat(t),this._backwardMore=null!==i&&void 0!==i&&i,a=r>0;break;case Yt.Forward:this._dataList=t.concat(this._dataList),this._forwardMore=null!==i&&void 0!==i&&i,a=r>0}this._loading=!1,n=!0}else o=this._dataList.length,s=t.timestamp,l=Rt(this._dataList[o-1],"timestamp",0),s>l?(this._dataList.push(t),c=this._timeScaleStore.getLastBarRightSideDiffBarCount(),c<0&&this._timeScaleStore.setLastBarRightSideDiffBarCount(--c),r=1,n=!0,a=!0):s===l&&(this._dataList[o-1]=t,n=!0,a=!0);if(!n)return[3,5];u.label=1;case 1:return u.trys.push([1,4,,5]),this._overlayStore.updatePointPosition(r,e),a?(this._timeScaleStore.adjustVisibleRange(),this._tooltipStore.recalculateCrosshair(!0),[4,this._indicatorStore.calcInstance()]):[3,3];case 2:u.sent(),this._chart.adjustPaneViewport(!1,!0,!0,!0),u.label=3;case 3:return this._actionStore.execute(Tt.OnDataReady),[3,5];case 4:return u.sent(),[3,5];case 5:return[2]}})})},t.prototype.setLoadMoreCallback=function(t){this._loadMoreCallback=t},t.prototype.executeLoadMoreCallback=function(t){this._forwardMore&&!this._loading&&At(this._loadMoreCallback)&&(this._loading=!0,this._loadMoreCallback(t))},t.prototype.setLoadDataCallback=function(t){this._loadDataCallback=t},t.prototype.executeLoadDataCallback=function(t){var e=this;if(!this._loading&&At(this._loadDataCallback)&&(this._forwardMore&&t.type===Yt.Forward||this._backwardMore&&t.type===Yt.Backward)){var i=function(i,n){e.addData(i,t.type,n).then(function(){}).catch(function(){})};this._loading=!0,this._loadDataCallback(K(K({},t),{callback:i}))}},t.prototype.clear=function(){this._forwardMore=!0,this._backwardMore=!0,this._loading=!0,this._dataList=[],this._visibleDataList=[],this._timeScaleStore.clear(),this._tooltipStore.clear()},t.prototype.getTimeScaleStore=function(){return this._timeScaleStore},t.prototype.getIndicatorStore=function(){return this._indicatorStore},t.prototype.getOverlayStore=function(){return this._overlayStore},t.prototype.getTooltipStore=function(){return this._tooltipStore},t.prototype.getActionStore=function(){return this._actionStore},t.prototype.getChart=function(){return this._chart},t}(),Gi={MAIN:"main",X_AXIS:"xAxis",Y_AXIS:"yAxis",SEPARATOR:"separator"},Zi=7;function qi(){return j(this,void 0,void 0,function(){return U(this,function(t){switch(t.label){case 0:return[4,new Promise(function(t){var e=new ResizeObserver(function(i){t(i.every(function(t){return"devicePixelContentBoxSize"in t})),e.disconnect()});e.observe(document.body,{box:"device-pixel-content-box"})}).catch(function(){return!1})];case 1:return[2,t.sent()]}})})}var Ji=function(){function t(t,e){var i=this;this._supportedDevicePixelContentBox=!1,this._width=0,this._height=0,this._pixelWidth=0,this._pixelHeight=0,this._nextPixelWidth=0,this._nextPixelHeight=0,this._requestAnimationId=re,this._mediaQueryListener=function(){var t=Wt(i._element);i._nextPixelWidth=Math.round(i._element.clientWidth*t),i._nextPixelHeight=Math.round(i._element.clientHeight*t),i._resetPixelRatio()},this._listener=e,this._element=he("canvas",t),this._ctx=this._element.getContext("2d",{willReadFrequently:!0}),qi().then(function(t){i._supportedDevicePixelContentBox=t,t?(i._resizeObserver=new ResizeObserver(function(t){var e,n=t.find(function(t){return t.target===i._element}),a=null===(e=null===n||void 0===n?void 0:n.devicePixelContentBoxSize)||void 0===e?void 0:e[0];At(a)&&(i._nextPixelWidth=a.inlineSize,i._nextPixelHeight=a.blockSize,i._pixelWidth===i._nextPixelWidth&&i._pixelHeight===i._nextPixelHeight||i._resetPixelRatio())}),i._resizeObserver.observe(i._element,{box:"device-pixel-content-box"})):(i._mediaQueryList=window.matchMedia("(resolution: ".concat(Wt(i._element),"dppx)")),i._mediaQueryList.addListener(i._mediaQueryListener))}).catch(function(t){return!1})}return t.prototype._resetPixelRatio=function(){var t=this;this._executeListener(function(){var e=t._element.clientWidth,i=t._element.clientHeight,n=t._nextPixelWidth/e,a=t._nextPixelHeight/i;t._width=e,t._height=i,t._pixelWidth=t._nextPixelWidth,t._pixelHeight=t._nextPixelHeight,t._element.width=t._nextPixelWidth,t._element.height=t._nextPixelHeight,t._ctx.scale(n,a)})},t.prototype._executeListener=function(t){var e=this;this._requestAnimationId===re&&(this._requestAnimationId=oe(function(){e._ctx.clearRect(0,0,e._width,e._height),null===t||void 0===t||t(),e._listener(),e._requestAnimationId=re}))},t.prototype.update=function(t,e){if(this._width!==t||this._height!==e){if(this._element.style.width="".concat(t,"px"),this._element.style.height="".concat(e,"px"),!this._supportedDevicePixelContentBox){var i=Wt(this._element);this._nextPixelWidth=Math.round(t*i),this._nextPixelHeight=Math.round(e*i),this._resetPixelRatio()}}else this._executeListener()},t.prototype.getElement=function(){return this._element},t.prototype.getContext=function(){return this._ctx},t.prototype.destroy=function(){At(this._resizeObserver)&&this._resizeObserver.unobserve(this._element),At(this._mediaQueryList)&&this._mediaQueryList.removeListener(this._mediaQueryListener)},t}();function Qi(t){var e={width:0,height:0,left:0,right:0,top:0,bottom:0};return At(t)&&wt(e,t),e}var tn=function(t){function e(e,i){var n=t.call(this)||this;return n._bounding=Qi(),n._pane=i,n._rootContainer=e,n._container=n.createContainer(),e.appendChild(n._container),n}return L(e,t),e.prototype.setBounding=function(t){return wt(this._bounding,t),this},e.prototype.getContainer=function(){return this._container},e.prototype.getBounding=function(){return this._bounding},e.prototype.getPane=function(){return this._pane},e.prototype.update=function(t){this.updateImp(this._container,this._bounding,null!==t&&void 0!==t?t:3)},e.prototype.destroy=function(){this._rootContainer.removeChild(this._container)},e}(hi),en=function(t){function e(e,i){var n=t.call(this,e,i)||this;n._mainCanvas=new Ji({position:"absolute",top:"0",left:"0",zIndex:"2",boxSizing:"border-box"},function(){n.updateMain(n._mainCanvas.getContext())}),n._overlayCanvas=new Ji({position:"absolute",top:"0",left:"0",zIndex:"2",boxSizing:"border-box"},function(){n.updateOverlay(n._overlayCanvas.getContext())});var a=n.getContainer();return a.appendChild(n._mainCanvas.getElement()),a.appendChild(n._overlayCanvas.getElement()),n}return L(e,t),e.prototype.createContainer=function(){return he("div",{margin:"0",padding:"0",position:"absolute",top:"0",overflow:"hidden",boxSizing:"border-box",zIndex:"1"})},e.prototype.updateImp=function(t,e,i){var n=e.width,a=e.height,r=e.left;t.style.left="".concat(r,"px");var o=i,s=t.clientWidth,l=t.clientHeight;switch(n===s&&a===l||(t.style.width="".concat(n,"px"),t.style.height="".concat(a,"px"),o=3),o){case 0:this._mainCanvas.update(n,a);break;case 1:this._overlayCanvas.update(n,a);break;case 3:case 4:this._mainCanvas.update(n,a),this._overlayCanvas.update(n,a);break}},e.prototype.destroy=function(){this._mainCanvas.destroy(),this._overlayCanvas.destroy()},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),r=a.getContext("2d"),o=Wt(a);return a.width=i*o,a.height=n*o,r.scale(o,o),r.drawImage(this._mainCanvas.getElement(),0,0,i,n),t&&r.drawImage(this._overlayCanvas.getElement(),0,0,i,n),a},e}(tn);function nn(t){return"transparent"===t||"none"===t||/^[rR][gG][Bb][Aa]\(([\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\s]*,){3}[\s]*0[\s]*\)$/.test(t)||/^[hH][Ss][Ll][Aa]\(([\s]*(360|3[0-5][0-9]|[012]?[0-9][0-9]?)[\s]*,)([\s]*((100|[0-9][0-9]?)%|0)[\s]*,){2}([\s]*0[\s]*)\)$/.test(t)}function an(t,e){var i=[];i=i.concat(e);for(var n=0;ns*s))return!0}return!1}function rn(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?O.Fill:a,o=i.color,s=void 0===o?"currentColor":o,l=i.borderSize,c=void 0===l?1:l,u=i.borderColor,d=void 0===u?"currentColor":u,h=i.borderStyle,p=void 0===h?N.Solid:h,v=i.borderDashedValue,f=void 0===v?[2,2]:v,g=(r===O.Fill||i.style===O.StrokeFill)&&(!Mt(s)||!nn(s));g&&(t.fillStyle=s,n.forEach(function(e){var i=e.x,n=e.y,a=e.r;t.beginPath(),t.arc(i,n,a,0,2*Math.PI),t.closePath(),t.fill()})),(r===O.Stroke||i.style===O.StrokeFill)&&c>0&&!nn(d)&&(t.strokeStyle=d,t.lineWidth=c,p===N.Dashed?t.setLineDash(f):t.setLineDash([]),n.forEach(function(e){var i=e.x,n=e.y,a=e.r;(!g||a>c)&&(t.beginPath(),t.arc(i,n,a,0,2*Math.PI),t.closePath(),t.stroke())}))}var on={name:"circle",checkEventOn:an,draw:function(t,e,i){rn(t,e,i)}};function sn(t,e){var i=[];i=i.concat(e);for(var n=0;nt.y!==r[s].y>t.y&&t.x<(r[s].x-r[o].x)*(t.y-r[o].y)/(r[s].y-r[o].y)+r[o].x&&(a=!a);if(a)return!0}return!1}function ln(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?O.Fill:a,o=i.color,s=void 0===o?"currentColor":o,l=i.borderSize,c=void 0===l?1:l,u=i.borderColor,d=void 0===u?"currentColor":u,h=i.borderStyle,p=void 0===h?N.Solid:h,v=i.borderDashedValue,f=void 0===v?[2,2]:v;r!==O.Fill&&i.style!==O.StrokeFill||Mt(s)&&nn(s)||(t.fillStyle=s,n.forEach(function(e){var i=e.coordinates;t.beginPath(),t.moveTo(i[0].x,i[0].y);for(var n=1;n0&&!nn(d)&&(t.strokeStyle=d,t.lineWidth=c,p===N.Dashed?t.setLineDash(f):t.setLineDash([]),n.forEach(function(e){var i=e.coordinates;t.beginPath(),t.moveTo(i[0].x,i[0].y);for(var n=1;n=r&&t.x<=r+o&&t.y>=s&&t.y<=s+l)return!0}return!1}function dn(t,e,i){var n,a=[];a=a.concat(e);var r=i.style,o=void 0===r?O.Fill:r,s=i.color,l=void 0===s?"transparent":s,c=i.borderSize,u=void 0===c?1:c,d=i.borderColor,h=void 0===d?"transparent":d,p=i.borderStyle,v=void 0===p?N.Solid:p,f=i.borderRadius,g=void 0===f?0:f,m=i.borderDashedValue,y=void 0===m?[2,2]:m,_=null!==(n=t.roundRect)&&void 0!==n?n:t.rect,b=(o===O.Fill||i.style===O.StrokeFill)&&(!Mt(l)||!nn(l));if(b&&(t.fillStyle=l,a.forEach(function(e){var i=e.x,n=e.y,a=e.width,r=e.height;t.beginPath(),_.call(t,i,n,a,r,g),t.closePath(),t.fill()})),(o===O.Stroke||i.style===O.StrokeFill)&&u>0&&!nn(h)){t.strokeStyle=h,t.fillStyle=h,t.lineWidth=u,v===N.Dashed?t.setLineDash(y):t.setLineDash([]);var x=u%2===1?.5:0,w=Math.round(2*x);a.forEach(function(e){var i=e.x,n=e.y,a=e.width,r=e.height;a>2*u&&r>2*u?(t.beginPath(),_.call(t,i+x,n+x,a-w,r-w,g),t.closePath(),t.stroke()):b||t.fillRect(i,n,a,r)})}}var hn={name:"rect",checkEventOn:un,draw:function(t,e,i){dn(t,e,i)}};function pn(t,e){var i,n,a=e.size,r=void 0===a?12:a,o=e.paddingLeft,s=void 0===o?0:o,l=e.paddingTop,c=void 0===l?0:l,u=e.paddingRight,d=void 0===u?0:u,h=e.paddingBottom,p=void 0===h?0:h,v=e.weight,f=void 0===v?"normal":v,g=e.family,m=t.x,y=t.y,_=t.text,b=t.align,x=void 0===b?"left":b,w=t.baseline,S=void 0===w?"top":w,C=t.width,k=t.height,I=null!==C&&void 0!==C?C:s+$t(_,r,f,g)+d,E=null!==k&&void 0!==k?k:c+r+p;switch(x){case"left":case"start":i=m;break;case"right":case"end":i=m-I;break;default:i=m-I/2;break}switch(S){case"top":case"hanging":n=y;break;case"bottom":case"ideographic":case"alphabetic":n=y-E;break;default:n=y-E/2;break}return{x:i,y:n,width:I,height:E}}function vn(t,e,i){var n=[];n=n.concat(e);for(var a=0;a=o&&t.x<=o+l&&t.y>=s&&t.y<=s+c)return!0}return!1}function fn(t,e,i){var n=[];n=n.concat(e);var a=i.color,r=void 0===a?"currentColor":a,o=i.size,s=void 0===o?12:o,l=i.family,c=i.weight,u=i.paddingLeft,d=void 0===u?0:u,h=i.paddingTop,p=void 0===h?0:h,v=i.paddingRight,f=void 0===v?0:v,g=n.map(function(t){return pn(t,i)});dn(t,g,K(K({},i),{color:i.backgroundColor})),t.textAlign="left",t.textBaseline="top",t.font=Ht(s,c,l),t.fillStyle=r,n.forEach(function(e,i){var n=g[i];t.fillText(e.text,n.x+d,n.y+p,n.width-d-f)})}var gn={name:"text",checkEventOn:vn,draw:function(t,e,i){fn(t,e,i)}},mn=gn;function yn(t,e){var i=t.x-e.x,n=t.y-e.y;return Math.sqrt(i*i+n*n)}function _n(t,e){var i=[];i=i.concat(e);for(var n=0;n=Math.min(l,u)-pi&&t.y<=Math.max(c,d)+pi&&t.y>=Math.min(c,d)-pi)return!0}}return!1}function bn(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?N.Solid:a,o=i.size,s=void 0===o?1:o,l=i.color,c=void 0===l?"currentColor":l,u=i.dashedValue,d=void 0===u?[2,2]:u;t.lineWidth=s,t.strokeStyle=c,r===N.Dashed?t.setLineDash(d):t.setLineDash([]),n.forEach(function(e){var i=e.x,n=e.y,a=e.r,r=e.startAngle,o=e.endAngle;t.beginPath(),t.arc(i,n,a,r,o),t.stroke(),t.closePath()})}var xn={name:"arc",checkEventOn:_n,draw:function(t,e,i){bn(t,e,i)}},wn={},Sn=[on,xi,cn,hn,gn,mn,xn];function Cn(t){var e;return null!==(e=wn[t])&&void 0!==e?e:null}Sn.forEach(function(t){wn[t.name]=vi.extend(t)});var kn=function(t){function e(e){var i=t.call(this)||this;return i._widget=e,i}return L(e,t),e.prototype.getWidget=function(){return this._widget},e.prototype.createFigure=function(t,e){var i=Cn(t.name);if(null!==i){var n=new i(t);if(At(e)){for(var a in e)e.hasOwnProperty(a)&&n.registerEvent(a,e[a]);this.addChild(n)}return n}return null},e.prototype.draw=function(t){this.clear(),this.drawImp(t)},e}(hi),In=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i,n=this.getWidget(),a=this.getWidget().getPane(),r=a.getChart(),o=n.getBounding(),s=r.getStyles().grid,l=s.show;if(l){t.save(),t.globalCompositeOperation="destination-over";var c=s.horizontal,u=c.show;if(u){var d=a.getAxisComponent(),h=d.getTicks().map(function(t){return{coordinates:[{x:0,y:t.coord},{x:o.width,y:t.coord}]}});null===(e=this.createFigure({name:"line",attrs:h,styles:c}))||void 0===e||e.draw(t)}var p=s.vertical,v=p.show;if(v){var f=r.getXAxisPane().getAxisComponent();h=f.getTicks().map(function(t){return{coordinates:[{x:t.coord,y:0},{x:t.coord,y:o.height}]}});null===(i=this.createFigure({name:"line",attrs:h,styles:p}))||void 0===i||i.draw(t)}t.restore()}},e}(kn),En=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.eachChildren=function(t){var e=this.getWidget().getPane(),i=e.getChart().getChartStore(),n=i.getVisibleDataList(),a=i.getTimeScaleStore().getBarSpace();n.forEach(function(e,i){t(e,a,i)})},e}(kn),An=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._boundCandleBarClickEvent=function(t){return function(){return e.getWidget().getPane().getChart().getChartStore().getActionStore().execute(Tt.OnCandleBarClick,t),!1}},e}return L(e,t),e.prototype.drawImp=function(t){var e=this,i=this.getWidget().getPane(),n=i.getId()===Wi.CANDLE,a=i.getChart().getChartStore(),r=this.getCandleBarOptions(a);if(null!==r){var o=0,s=0;if(r.type===$.Ohlc){var l=a.getTimeScaleStore().getBarSpace().gapBar;o=Math.min(Math.max(Math.round(.2*l),1),8),o>2&&o%2===1&&o--,s=Math.floor(s/2)}var c=i.getAxisComponent();this.eachChildren(function(i,a){var l=i.data,u=i.x;if(At(l)){var d=l.open,h=l.high,p=l.low,v=l.close,f=r.type,g=r.styles,m=[];v>d?(m[0]=g.upColor,m[1]=g.upBorderColor,m[2]=g.upWickColor):vd?e._createStrokeBar(u,b,a,m):e._createSolidBar(u,b,a,m);break;case $.CandleDownStroke:x=d>v?e._createStrokeBar(u,b,a,m):e._createSolidBar(u,b,a,m);break;case $.Ohlc:x=[{name:"rect",attrs:[{x:u-s,y:b[0],width:o,height:b[3]-b[0]},{x:u-a.halfGapBar,y:y+o>b[3]?b[3]-o:y,width:a.halfGapBar,height:o},{x:u+s,y:_+o>b[3]?b[3]-o:_,width:a.halfGapBar-s,height:o}],styles:{color:m[0]}}];break}x.forEach(function(a){var r,o;n&&(o={mouseClickEvent:e._boundCandleBarClickEvent(i)}),null===(r=e.createFigure(a,o))||void 0===r||r.draw(t)})}})}},e.prototype.getCandleBarOptions=function(t){var e=t.getStyles().candle;return{type:e.type,styles:e.bar}},e.prototype._createSolidBar=function(t,e,i,n){return[{name:"rect",attrs:{x:t,y:e[0],width:1,height:e[3]-e[0]},styles:{color:n[2]}},{name:"rect",attrs:{x:t-i.halfGapBar,y:e[1],width:i.gapBar,height:Math.max(1,e[2]-e[1])},styles:{style:O.StrokeFill,color:n[0],borderColor:n[1]}}]},e.prototype._createStrokeBar=function(t,e,i,n){return[{name:"rect",attrs:[{x:t,y:e[0],width:1,height:e[1]-e[0]},{x:t,y:e[2],width:1,height:e[3]-e[2]}],styles:{color:n[2]}},{name:"rect",attrs:{x:t-i.halfGapBar,y:e[1],width:i.gapBar,height:Math.max(1,e[2]-e[1])},styles:{style:O.Stroke,borderColor:n[1]}}]},e}(En),Pn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getCandleBarOptions=function(t){var e,i,n=this.getWidget().getPane(),a=n.getAxisComponent();if(!a.isInCandle()){var r=t.getIndicatorStore().getInstances(n.getId());try{for(var o=G(r),s=o.next();!s.done;s=o.next()){var l=s.value;if(l.shouldOhlc&&l.visible){var c=l.styles,u=t.getStyles().indicator,d=Rt(c,"ohlc.upColor",u.ohlc.upColor),h=Rt(c,"ohlc.downColor",u.ohlc.downColor),p=Rt(c,"ohlc.noChangeColor",u.ohlc.noChangeColor);return{type:$.Ohlc,styles:{upColor:d,downColor:h,noChangeColor:p,upBorderColor:d,downBorderColor:h,noChangeBorderColor:p,upWickColor:d,downWickColor:h,noChangeWickColor:p}}}}}catch(v){e={error:v}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(e)throw e.error}}}return null},e.prototype.drawImp=function(e){var i=this;t.prototype.drawImp.call(this,e);var n=this.getWidget(),a=n.getPane(),r=a.getChart(),o=n.getBounding(),s=r.getXAxisPane().getAxisComponent(),l=a.getAxisComponent(),c=r.getChartStore(),u=c.getDataList(),d=c.getTimeScaleStore(),h=d.getVisibleRange(),p=c.getIndicatorStore().getInstances(a.getId()),v=c.getStyles().indicator;e.save(),p.forEach(function(t){var n;if(t.visible){t.zLevel<0?e.globalCompositeOperation="destination-over":e.globalCompositeOperation="source-over";var a=!1;if(null!==t.draw&&(e.save(),a=null!==(n=t.draw({ctx:e,kLineDataList:u,indicator:t,visibleRange:h,bounding:o,barSpace:d.getBarSpace(),defaultStyles:v,xAxis:s,yAxis:l}))&&void 0!==n&&n,e.restore()),!a){var r=t.result,c=[];i.eachChildren(function(n,a){var d,h,p,f=a.halfGapBar,g=n.dataIndex,m=n.x,y=s.convertToPixel(g-1),_=s.convertToPixel(g+1),b=null!==(d=r[g-1])&&void 0!==d?d:null,x=null!==(h=r[g])&&void 0!==h?h:null,w=null!==(p=r[g+1])&&void 0!==p?p:null,S={x:y},C={x:m},k={x:_};t.figures.forEach(function(t){var e=t.key,i=null===b||void 0===b?void 0:b[e];Et(i)&&(S[e]=l.convertToPixel(i));var n=null===x||void 0===x?void 0:x[e];Et(n)&&(C[e]=l.convertToPixel(n));var a=null===w||void 0===w?void 0:w[e];Et(a)&&(k[e]=l.convertToPixel(a))}),jt(u,t,g,v,function(t,n,r){var u,d,h;if(At(null===x||void 0===x?void 0:x[t.key])){var p=C[t.key],v=null===(u=t.attrs)||void 0===u?void 0:u.call(t,{data:{prev:b,current:x,next:w},coordinate:{prev:S,current:C,next:k},bounding:o,barSpace:a,xAxis:s,yAxis:l});if(!At(v))switch(t.type){case"circle":v={x:m,y:p,r:Math.max(1,f)};break;case"rect":case"bar":var g=null!==(d=t.baseValue)&&void 0!==d?d:l.getRange().from,y=l.convertToPixel(g),_=Math.abs(y-p);g!==(null===x||void 0===x?void 0:x[t.key])&&(_=Math.max(1,_));var I=void 0;I=p>y?y:p,v={x:m-f,y:I,width:Math.max(1,2*f),height:_};break;case"line":At(c[r])||(c[r]=[]),Et(C[t.key])&&Et(k[t.key])&&c[r].push({coordinates:[{x:C.x,y:C[t.key]},{x:k.x,y:k[t.key]}],styles:n});break}var E=t.type;At(v)&&"line"!==E&&(null===(h=i.createFigure({name:"bar"===E?"rect":E,attrs:v,styles:n}))||void 0===h||h.draw(e))}})}),c.forEach(function(t){if(t.length>1){for(var n=[{coordinates:[t[0].coordinates[0],t[0].coordinates[1]],styles:t[0].styles}],a=1;a0,C=x.length>0;if(S||C){var k=Z(p.classifyTooltipIcons(w),3),I=k[0],E=k[1],A=k[2];if(g=p.drawStandardTooltipIcons(t,a,I,m,e,r.name,c,g,d),S){var P=_;b.length>0&&(P="".concat(P).concat(b)),g=p.drawStandardTooltipLegends(t,[{title:{text:"",color:f.color},value:{text:P,color:f.color}}],m,c,g,d,f)}g=p.drawStandardTooltipIcons(t,a,E,m,e,r.name,c,g,d),C&&(g=p.drawStandardTooltipLegends(t,x,m,c,g,d,v.text)),g=p.drawStandardTooltipIcons(t,a,A,m,e,r.name,c,g,d),u=m.y+g}})}return u},e.prototype.drawStandardTooltipIcons=function(t,e,i,n,a,r,o,s,l){var c=this;if(i.length>0){var u=0,d=0;i.forEach(function(e){var i=e.marginLeft,n=void 0===i?0:i,a=e.marginTop,r=void 0===a?0:a,o=e.marginRight,s=void 0===o?0:o,l=e.marginBottom,c=void 0===l?0:l,h=e.paddingLeft,p=void 0===h?0:h,v=e.paddingTop,f=void 0===v?0:v,g=e.paddingRight,m=void 0===g?0:g,y=e.paddingBottom,_=void 0===y?0:y,b=e.size,x=e.fontFamily,w=e.icon;t.font=Ht(b,"normal",x),u+=n+p+t.measureText(w).width+m+s,d=Math.max(d,r+f+b+_+c)}),n.x+u>l?(n.x=o,n.y+=s,s=d):s=Math.max(s,d),i.forEach(function(i){var o,s=i.marginLeft,l=void 0===s?0:s,u=i.marginTop,d=void 0===u?0:u,h=i.marginRight,p=void 0===h?0:h,v=i.paddingLeft,f=void 0===v?0:v,g=i.paddingTop,m=void 0===g?0:g,y=i.paddingRight,_=void 0===y?0:y,b=i.paddingBottom,x=void 0===b?0:b,w=i.color,S=i.activeColor,C=i.size,k=i.fontFamily,I=i.icon,E=i.backgroundColor,A=i.activeBackgroundColor,P=(null===e||void 0===e?void 0:e.paneId)===a&&(null===e||void 0===e?void 0:e.indicatorName)===r&&(null===e||void 0===e?void 0:e.iconId)===i.id;null===(o=c.createFigure({name:"text",attrs:{text:I,x:n.x+l,y:n.y+d},styles:{paddingLeft:f,paddingTop:m,paddingRight:_,paddingBottom:x,color:P?S:w,size:C,family:k,backgroundColor:P?A:E}},{mouseClickEvent:c._boundIconClickEvent({paneId:a,indicatorName:r,iconId:i.id}),mouseMoveEvent:c._boundIconMouseMoveEvent({paneId:a,indicatorName:r,iconId:i.id})}))||void 0===o||o.draw(t),n.x+=l+f+t.measureText(I).width+_+p})}return s},e.prototype.drawStandardTooltipLegends=function(t,e,i,n,a,r,o){var s=this;if(e.length>0){var l=o.marginLeft,c=o.marginTop,u=o.marginRight,d=o.marginBottom,h=o.size,p=o.family,v=o.weight;t.font=Ht(h,v,p),e.forEach(function(e){var o,f,g=e.title,m=e.value,y=t.measureText(g.text).width,_=t.measureText(m.text).width,b=y+_,x=c+h+d;i.x+l+b+u>r?(i.x=n,i.y+=a,a=x):a=Math.max(a,x),g.text.length>0&&(null===(o=s.createFigure({name:"text",attrs:{x:i.x+l,y:i.y+c,text:g.text},styles:{color:g.color,size:h,family:p,weight:v}}))||void 0===o||o.draw(t)),null===(f=s.createFigure({name:"text",attrs:{x:i.x+l+y,y:i.y+c,text:m.text},styles:{color:m.color,size:h,family:p,weight:v}}))||void 0===f||f.draw(t),i.x+=l+b+u})}return a},e.prototype.isDrawTooltip=function(t,e){var i=e.showRule;return i===z.Always||i===z.FollowCross&&Mt(t.paneId)},e.prototype.getIndicatorTooltipData=function(t,e,i,n,a,r,o){var s,l,c=o.tooltip,u=c.showName?i.shortName:"",d="",h=i.calcParams;h.length>0&&c.showParams&&(d="(".concat(h.join(","),")"));var p={name:u,calcParamsText:d,values:[],icons:c.icons},v=e.dataIndex,f=null!==(s=i.result)&&void 0!==s?s:[],g=[];if(i.visible){var m=null!==(l=f[v])&&void 0!==l?l:{};jt(t,i,v,o,function(t,e){var o;if(Mt(t.title)){var s=e.color,l=null!==(o=m[t.key])&&void 0!==o?o:c.defaultValue;Et(l)&&(l=Nt(l,i.precision),i.shouldFormatBigNumber&&(l=n.formatBigNumber(l)),l=Vt(zt(l,a),r)),g.push({title:{text:t.title,color:s},value:{text:l,color:s}})}}),p.values=g}if(null!==i.createTooltipDataSource){var y=this.getWidget(),_=y.getPane(),b=_.getChart().getChartStore(),x=i.createTooltipDataSource({kLineDataList:t,indicator:i,visibleRange:b.getTimeScaleStore().getVisibleRange(),bounding:y.getBounding(),crosshair:e,defaultStyles:o,xAxis:_.getChart().getXAxisPane().getAxisComponent(),yAxis:_.getAxisComponent()}),w=x.name,S=x.calcParamsText,C=x.values,k=x.icons;if(Mt(w)&&c.showName&&(p.name=w),Mt(S)&&c.showParams&&(p.calcParamsText=S),At(k)&&(p.icons=k),At(C)&&i.visible){var I=[],E=o.tooltip.text.color;C.forEach(function(t){var e,o={text:"",color:E};It(t.title)?o=t.title:o.text=t.title;var s={text:"",color:E};if(It(t.value)?s=t.value:s.text=null!==(e=t.value)&&void 0!==e?e:c.defaultValue,Et(s.text)){var l=Nt(s.text,i.precision);i.shouldFormatBigNumber&&(l=n.formatBigNumber(l)),l=Vt(zt(l,a),r),s.text=l}I.push({title:o,value:s})}),p.values=I}}return p},e.prototype.classifyTooltipIcons=function(t){var e=[],i=[],n=[];return t.forEach(function(t){switch(t.position){case W.Left:e.push(t);break;case W.Middle:i.push(t);break;case W.Right:n.push(t);break}}),[e,i,n]},e}(kn),Tn=function(t){function e(e){var i=t.call(this,e)||this;return i._initEvent(),i}return L(e,t),e.prototype._initEvent=function(){var t=this,e=this.getWidget().getPane(),i=e.getId(),n=e.getChart().getChartStore().getOverlayStore();this.registerEvent("mouseMoveEvent",function(e){var a,r=n.getProgressInstanceInfo();if(null!==r){var o=r.instance,s=r.paneId;o.isStart()&&(n.updateProgressInstanceInfo(i),s=i);var l=o.points.length-1,c="".concat(ee,"point_").concat(l);return o.isDrawing()&&s===i&&(o.eventMoveForDrawing(t._coordinateToPoint(r.instance,e)),null===(a=o.onDrawing)||void 0===a||a.call(o,K({overlay:o,figureKey:c,figureIndex:l},e))),t._figureMouseMoveEvent(o,1,c,l,0)(e)}return n.setHoverInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1},e),!1}).registerEvent("mouseClickEvent",function(e){var a,r,o=n.getProgressInstanceInfo();if(null!==o){var s=o.instance,l=o.paneId;s.isStart()&&(n.updateProgressInstanceInfo(i,!0),l=i);var c=s.points.length-1,u="".concat(ee,"point_").concat(c);return s.isDrawing()&&l===i&&(s.eventMoveForDrawing(t._coordinateToPoint(s,e)),null===(a=s.onDrawing)||void 0===a||a.call(s,K({overlay:s,figureKey:u,figureIndex:c},e)),s.nextStep(),s.isDrawing()||(n.progressInstanceComplete(),null===(r=s.onDrawEnd)||void 0===r||r.call(s,K({overlay:s,figureKey:u,figureIndex:c},e)))),t._figureMouseClickEvent(s,1,u,c,0)(e)}return n.setClickInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1},e),!1}).registerEvent("mouseDoubleClickEvent",function(e){var a,r=n.getProgressInstanceInfo();if(null!==r){var o=r.instance,s=r.paneId;if(o.isDrawing()&&s===i&&(o.forceComplete(),!o.isDrawing())){n.progressInstanceComplete();var l=o.points.length-1,c="".concat(ee,"point_").concat(l);null===(a=o.onDrawEnd)||void 0===a||a.call(o,K({overlay:o,figureKey:c,figureIndex:l},e))}var u=o.points.length-1;return t._figureMouseClickEvent(o,1,"".concat(ee,"point_").concat(u),u,0)(e)}return!1}).registerEvent("mouseRightClickEvent",function(e){var i=n.getProgressInstanceInfo();if(null!==i){var a=i.instance;if(a.isDrawing()){var r=a.points.length-1;return t._figureMouseRightClickEvent(a,1,"".concat(ee,"point_").concat(r),r,0)(e)}}return!1}).registerEvent("mouseUpEvent",function(t){var e,a=n.getPressedInstanceInfo(),r=a.instance,o=a.figureIndex,s=a.figureKey;return null!==r&&(null===(e=r.onPressedMoveEnd)||void 0===e||e.call(r,K({overlay:r,figureKey:s,figureIndex:o},t))),n.setPressedInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1}),!1}).registerEvent("pressedMouseMoveEvent",function(e){var i,a,r=n.getPressedInstanceInfo(),o=r.instance,s=r.figureType,l=r.figureIndex,c=r.figureKey;if(null!==o){if(!o.lock&&(null===(a=null===(i=o.onPressedMoving)||void 0===i?void 0:i.call(o,K({overlay:o,figureIndex:l,figureKey:c},e)))||void 0===a||!a)){var u=t._coordinateToPoint(o,e);1===s?o.eventPressedPointMove(u,l):o.eventPressedOtherMove(u,t.getWidget().getPane().getChart().getChartStore().getTimeScaleStore())}return!0}return!1})},e.prototype._createFigureEvents=function(t,e,i,n,a,r){var o;if(!t.isDrawing()){var s=[];if(At(r)&&(Pt(r)?r&&(s=Zt()):s=r),0===s.length)return{mouseMoveEvent:this._figureMouseMoveEvent(t,e,i,n,a),mouseDownEvent:this._figureMouseDownEvent(t,e,i,n,a),mouseClickEvent:this._figureMouseClickEvent(t,e,i,n,a),mouseRightClickEvent:this._figureMouseRightClickEvent(t,e,i,n,a),mouseDoubleClickEvent:this._figureMouseDoubleClickEvent(t,e,i,n,a)};o={},s.includes("mouseMoveEvent")||s.includes("touchMoveEvent")||(o.mouseMoveEvent=this._figureMouseMoveEvent(t,e,i,n,a)),s.includes("mouseDownEvent")||s.includes("touchStartEvent")||(o.mouseDownEvent=this._figureMouseDownEvent(t,e,i,n,a)),s.includes("mouseClickEvent")||s.includes("tapEvent")||(o.mouseClickEvent=this._figureMouseClickEvent(t,e,i,n,a)),s.includes("mouseDoubleClickEvent")||s.includes("doubleTapEvent")||(o.mouseDoubleClickEvent=this._figureMouseDoubleClickEvent(t,e,i,n,a)),s.includes("mouseRightClickEvent")||(o.mouseRightClickEvent=this._figureMouseRightClickEvent(t,e,i,n,a))}return o},e.prototype._figureMouseMoveEvent=function(t,e,i,n,a){var r=this;return function(o){var s=r.getWidget().getPane(),l=s.getChart().getChartStore().getOverlayStore();return l.setHoverInstanceInfo({paneId:s.getId(),instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a},o),!0}},e.prototype._figureMouseDownEvent=function(t,e,i,n,a){var r=this;return function(o){var s,l=r.getWidget().getPane(),c=l.getId(),u=l.getChart().getChartStore().getOverlayStore();return t.startPressedMove(r._coordinateToPoint(t,o)),null===(s=t.onPressedMoveStart)||void 0===s||s.call(t,K({overlay:t,figureIndex:n,figureKey:i},o)),u.setPressedInstanceInfo({paneId:c,instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a}),!0}},e.prototype._figureMouseClickEvent=function(t,e,i,n,a){var r=this;return function(o){var s=r.getWidget().getPane(),l=s.getId(),c=s.getChart().getChartStore().getOverlayStore();return c.setClickInstanceInfo({paneId:l,instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a},o),!0}},e.prototype._figureMouseDoubleClickEvent=function(t,e,i,n,a){return function(e){var a;return null===(a=t.onDoubleClick)||void 0===a||a.call(t,K(K({},e),{figureIndex:n,figureKey:i,overlay:t})),!0}},e.prototype._figureMouseRightClickEvent=function(t,e,i,n,a){var r=this;return function(e){var a,o;if(null===(o=null===(a=t.onRightClick)||void 0===a?void 0:a.call(t,K({overlay:t,figureIndex:n,figureKey:i},e)))||void 0===o||!o){var s=r.getWidget().getPane(),l=s.getChart().getChartStore().getOverlayStore();l.removeInstance(t)}return!0}},e.prototype._coordinateToPoint=function(t,e){var i,n={},a=this.getWidget().getPane(),r=a.getChart(),o=a.getId(),s=r.getChartStore().getTimeScaleStore();if(this.coordinateToPointTimestampDataIndexFlag()){var l=r.getXAxisPane().getAxisComponent(),c=l.convertFromPixel(e.x),u=null!==(i=s.dataIndexToTimestamp(c))&&void 0!==i?i:void 0;n.dataIndex=c,n.timestamp=u}if(this.coordinateToPointValueFlag()){var d=a.getAxisComponent(),h=d.convertFromPixel(e.y);if(t.mode!==Ut.Normal&&o===Wi.CANDLE&&Et(n.dataIndex)){var p=s.getDataByDataIndex(n.dataIndex);if(null!==p){var v=t.modeSensitivity;if(h>p.high)if(t.mode===Ut.WeakMagnet){var f=d.convertToPixel(p.high),g=d.convertFromPixel(f-v);hg&&(h=p.low)}else h=p.low;else{var y=Math.max(p.open,p.close),_=Math.min(p.open,p.close);h=h>y?h-y0){var m=(new Array).concat(this.getFigures(e,g,i,n,a,s,l,r,c,u,d));this.drawFigures(t,e,m,c)}this.drawDefaultFigures(t,e,g,i,a,r,o,s,l,c,u,d,h,p)},e.prototype.drawFigures=function(t,e,i,n){var a=this;i.forEach(function(i,r){var o=i.type,s=i.styles,l=i.attrs,c=i.ignoreEvent,u=[].concat(l);u.forEach(function(l,u){var d,h,p,v=a._createFigureEvents(e,2,null!==(d=i.key)&&void 0!==d?d:"",r,u,c),f=K(K(K({},n[o]),null===(h=e.styles)||void 0===h?void 0:h[o]),s);null===(p=a.createFigure({name:o,attrs:l,styles:f},v))||void 0===p||p.draw(t)})})},e.prototype.getCompleteOverlays=function(t,e){return t.getInstances(e)},e.prototype.getProgressOverlay=function(t,e){return t.paneId===e?t.instance:null},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createPointFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e.prototype.drawDefaultFigures=function(t,e,i,n,a,r,o,s,l,c,u,d,h,p){var v,f,g=this;if(e.needDefaultPointFigure&&((null===(v=h.instance)||void 0===v?void 0:v.id)===e.id&&0!==h.figureType||(null===(f=p.instance)||void 0===f?void 0:f.id)===e.id&&0!==p.figureType)){var m=e.styles,y=K(K({},c.point),null===m||void 0===m?void 0:m.point);i.forEach(function(i,n){var a,r,o,s=i.x,l=i.y,c=y.radius,u=y.color,d=y.borderColor,p=y.borderSize;(null===(a=h.instance)||void 0===a?void 0:a.id)===e.id&&1===h.figureType&&h.figureIndex===n&&(c=y.activeRadius,u=y.activeColor,d=y.activeBorderColor,p=y.activeBorderSize),null===(r=g.createFigure({name:"circle",attrs:{x:s,y:l,r:c+p},styles:{color:d}},g._createFigureEvents(e,1,"".concat(ee,"point_").concat(n),n,0)))||void 0===r||r.draw(t),null===(o=g.createFigure({name:"circle",attrs:{x:s,y:l,r:c},styles:{color:u}}))||void 0===o||o.draw(t)})}},e}(kn),Bn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._gridView=new In(n),n._indicatorView=new Pn(n),n._crosshairLineView=new Mn(n),n._tooltipView=n.createTooltipView(),n._overlayView=new Tn(n),n.addChild(n._tooltipView),n.addChild(n._overlayView),n.getContainer().style.cursor="crosshair",n.registerEvent("mouseMoveEvent",function(){return i.getChart().getChartStore().getTooltipStore().setActiveIcon(),!1}),n}return L(e,t),e.prototype.getName=function(){return Gi.MAIN},e.prototype.updateMain=function(t){this.updateMainContent(t),this._indicatorView.draw(t),this._gridView.draw(t)},e.prototype.createTooltipView=function(){return new Dn(this)},e.prototype.updateMainContent=function(t){},e.prototype.updateOverlay=function(t){this._overlayView.draw(t),this._crosshairLineView.draw(t),this._tooltipView.draw(t)},e}(en),Fn=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._ripplePoint=e.createFigure({name:"circle",attrs:{x:0,y:0,r:0},styles:{style:"fill"}}),e._animationFrameTime=0,e._animation=new le({iterationCount:1/0}).doFrame(function(t){e._animationFrameTime=t;var i=e.getWidget().getPane();i.getChart().updatePane(0,i.getId())}),e}return L(e,t),e.prototype.drawImp=function(t){var e,i,n,a=this.getWidget(),r=a.getPane(),o=r.getChart(),s=o.getDataList(),l=s.length-1,c=a.getBounding(),u=r.getAxisComponent(),d=o.getStyles().candle.area,h=[],p=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,f=null;if(this.eachChildren(function(t){var e=t.data,i=t.x,n=null===e||void 0===e?void 0:e[d.value];if(Et(n)){var a=u.convertToPixel(n);v===Number.MIN_SAFE_INTEGER&&(v=i),h.push({x:i,y:a}),p=Math.min(p,a),t.dataIndex===l&&(f={x:i,y:a})}}),h.length>0){null===(e=this.createFigure({name:"line",attrs:{coordinates:h},styles:{color:d.lineColor,size:d.lineSize,smooth:d.smooth}}))||void 0===e||e.draw(t);var g=d.backgroundColor,m=void 0;if(Ct(g)){var y=t.createLinearGradient(0,c.height,0,p);try{g.forEach(function(t){var e=t.offset,i=t.color;y.addColorStop(e,i)})}catch(x){}m=y}else m=g;t.fillStyle=m,t.beginPath(),t.moveTo(v,c.height),t.lineTo(h[0].x,h[0].y),_i(t,h,d.smooth),t.lineTo(h[h.length-1].x,c.height),t.closePath(),t.fill()}var _=d.point;if(_.show&&At(f)){null===(i=this.createFigure({name:"circle",attrs:{x:f.x,y:f.y,r:_.radius},styles:{style:"fill",color:_.color}}))||void 0===i||i.draw(t);var b=_.rippleRadius;_.animation&&(b=_.radius+this._animationFrameTime/_.animationDuration*(_.rippleRadius-_.radius),this._animation.setDuration(_.animationDuration).start()),null===(n=this._ripplePoint)||void 0===n||n.setAttrs({x:f.x,y:f.y,r:b}).setStyles({style:"fill",color:_.rippleColor}).draw(t)}else this.stopAnimation()},e.prototype.stopAnimation=function(){this._animation.stop()},e}(En),Rn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e=this.getWidget(),i=e.getPane(),n=i.getChart().getChartStore(),a=n.getStyles().candle.priceMark,r=a.high,o=a.low;if(a.show&&(r.show||o.show)){var s=n.getThousandsSeparator(),l=n.getDecimalFoldThreshold(),c=n.getPrecision(),u=i.getAxisComponent(),d=Number.MIN_SAFE_INTEGER,h=0,p=Number.MAX_SAFE_INTEGER,v=0;this.eachChildren(function(t){var e=t.data,i=t.x;At(e)&&(de.low&&(p=e.low,v=i))});var f=u.convertToPixel(d),g=u.convertToPixel(p);r.show&&d!==Number.MIN_SAFE_INTEGER&&this._drawMark(t,Vt(zt(Nt(d,c.price),s),l),{x:h,y:f},fp/2?(l=d-5,c=l-a.textOffset,u="right"):(l=d+5,u="left",c=l+a.textOffset);var v=h+n[1];null===(o=this.createFigure({name:"line",attrs:{coordinates:[{x:d,y:h},{x:d,y:v},{x:l,y:v}]},styles:{color:a.color}}))||void 0===o||o.draw(t),null===(s=this.createFigure({name:"text",attrs:{x:c,y:v,text:e,align:u,baseline:"middle"},styles:{color:a.color,size:a.textSize,family:a.textFamily,weight:a.textWeight}}))||void 0===s||s.draw(t)},e}(En),Ln=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=n.getChart().getChartStore(),o=r.getStyles().candle.priceMark,s=o.last,l=s.line;if(o.show&&s.show&&l.show){var c=n.getAxisComponent(),u=r.getDataList(),d=u[u.length-1];if(null!=d){var h=d.close,p=d.open,v=c.convertToNicePixel(h),f=void 0;f=h>p?s.upColor:h0&&(b=this.drawStandardTooltipLegends(t,S,x,d,b,p,_)),b=this.drawStandardTooltipIcons(t,a,E,x,i,"",d,b,p)}return x.y+b},e.prototype._drawRectTooltip=function(t,e,i,n,a,r,o,s,l,c,u,d,h,p,v,f){var g,m,y,_,b,x=this,w=f.candle,S=f.indicator,C=w.tooltip,k=S.tooltip;if(h||p){var I=null!==(g=r.dataIndex)&&void 0!==g?g:0,E=this._getCandleTooltipLegends({prev:null!==(m=e[I-1])&&void 0!==m?m:null,current:r.kLineData,next:null!==(y=e[I+1])&&void 0!==y?y:null},o,s,l,c,u,d,w),A=C.offsetLeft,P=C.offsetTop,M=C.offsetRight,D=C.offsetBottom,T=C.text,B=T.marginLeft,F=T.marginRight,R=T.marginTop,L=T.marginBottom,N=T.size,z=T.weight,V=T.family,W=C.rect,$=W.position,X=W.paddingLeft,K=W.paddingRight,j=W.paddingTop,U=W.paddingBottom,G=W.offsetLeft,Z=W.offsetRight,q=W.offsetTop,J=W.offsetBottom,Q=W.borderSize,tt=W.borderRadius,et=W.borderColor,it=W.color,nt=0,at=0,rt=0;h&&(t.font=Ht(N,z,V),E.forEach(function(e){var i=e.title,n=e.value,a="".concat(i.text).concat(n.text),r=t.measureText(a).width+B+F;nt=Math.max(nt,r)}),rt+=(L+R+N)*E.length);var ot=k.text,st=ot.marginLeft,lt=ot.marginRight,ct=ot.marginTop,ut=ot.marginBottom,dt=ot.size,ht=ot.weight,pt=ot.family,vt=[];if(p&&(t.font=Ht(dt,ht,pt),i.forEach(function(i){var n,a=null!==(n=x.getIndicatorTooltipData(e,r,i,c,u,d,S).values)&&void 0!==n?n:[];vt.push(a),a.forEach(function(e){var i=e.title,n=e.value,a="".concat(i.text).concat(n.text),r=t.measureText(a).width+st+lt;nt=Math.max(nt,r),rt+=ct+ut+dt})})),at+=nt,0!==at&&0!==rt){at+=2*Q+X+K,rt+=2*Q+j+U;var ft=n.width/2,gt=$===H.Pointer&&r.paneId===Wi.CANDLE,mt=(null!==(_=r.realX)&&void 0!==_?_:0)>ft,yt=0;if(gt){var _t=r.realX;yt=mt?_t-Z-at:_t+G}else mt?(yt=G+A,f.yAxis.inside&&f.yAxis.position===Y.Left&&(yt+=a.width)):(yt=n.width-Z-at-M,f.yAxis.inside&&f.yAxis.position===Y.Right&&(yt-=a.width));var bt=v+q;if(gt){var xt=r.y;bt=xt-rt/2,bt+rt>n.height-J-D&&(bt=n.height-J-rt-D),bt1){var c="{".concat(l[1],"}");o.text=o.text.replace(c,null!==(e=b[c])&&void 0!==e?e:p.defaultValue),"{change}"===c&&(o.color=0===m?s.priceMark.last.noChangeColor:m>0?s.priceMark.last.upColor:s.priceMark.last.downColor)}return{title:r,value:o}})},e}(Dn),Hn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._candleBarView=new An(n),n._candleAreaView=new Fn(n),n._candleHighLowPriceView=new Rn(n),n._candleLastPriceLineView=new Ln(n),n.addChild(n._candleBarView),n}return L(e,t),e.prototype.updateMainContent=function(t){var e=this.getPane().getChart().getStyles().candle;e.type!==$.Area?(this._candleBarView.draw(t),this._candleHighLowPriceView.draw(t),this._candleAreaView.stopAnimation()):this._candleAreaView.draw(t),this._candleLastPriceLineView.draw(t)},e.prototype.createTooltipView=function(){return new Wn(this)},e}(Bn),$n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i,n=this,a=this.getWidget(),r=a.getPane(),o=a.getBounding(),s=r.getAxisComponent(),l=this.getAxisStyles(r.getChart().getStyles());if(l.show){l.axisLine.show&&(null===(e=this.createFigure({name:"line",attrs:this.createAxisLine(o,l),styles:l.axisLine}))||void 0===e||e.draw(t));var c=s.getTicks();if(l.tickLine.show){var u=this.createTickLines(c,o,l);u.forEach(function(e){var i;null===(i=n.createFigure({name:"line",attrs:e,styles:l.tickLine}))||void 0===i||i.draw(t)})}if(l.tickText.show){var d=this.createTickTexts(c,o,l);null===(i=this.createFigure({name:"text",attrs:d,styles:l.tickText}))||void 0===i||i.draw(t)}}},e}(kn),Yn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getAxisStyles=function(t){return t.yAxis},e.prototype.createAxisLine=function(t,e){var i,n=this.getWidget().getPane().getAxisComponent(),a=e.axisLine.size;return i=n.isFromZero()?0:t.width-a,{coordinates:[{x:i,y:0},{x:i,y:t.height}]}},e.prototype.createTickLines=function(t,e,i){var n=this.getWidget().getPane().getAxisComponent(),a=i.axisLine,r=i.tickLine,o=0,s=0;return n.isFromZero()?(o=0,a.show&&(o+=a.size),s=o+r.length):(o=e.width,a.show&&(o-=a.size),s=o-r.length),t.map(function(t){return{coordinates:[{x:o,y:t.coord},{x:s,y:t.coord}]}})},e.prototype.createTickTexts=function(t,e,i){var n=this.getWidget().getPane().getAxisComponent(),a=i.axisLine,r=i.tickLine,o=i.tickText,s=0;n.isFromZero()?(s=o.marginStart,a.show&&(s+=a.size),r.show&&(s+=r.length)):(s=e.width-o.marginEnd,a.show&&(s-=a.size),r.show&&(s-=r.length));var l=this.getWidget().getPane().getAxisComponent().isFromZero()?"left":"right";return t.map(function(t){return{x:s,y:t.coord,text:t.text,align:l,baseline:"middle"}})},e}($n),Xn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=n.getChart().getChartStore(),o=r.getStyles().candle.priceMark,s=o.last,l=s.text;if(o.show&&s.show&&l.show){var c=r.getPrecision(),u=n.getAxisComponent(),d=r.getDataList(),h=d[d.length-1];if(At(h)){var p=h.close,v=h.open,f=u.convertToNicePixel(p),g=void 0;g=p>v?s.upColor:p1&&p.unshift({type:"rect",attrs:{x:0,y:g,width:i.width,height:m-g},ignoreEvent:!0})}return p},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createYAxisFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e}(Tn),Un=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=i.getPane().getChart().getChartStore(),o=r.getTooltipStore().getCrosshair(),s=r.getStyles().crosshair;if(Mt(o.paneId)&&this.compare(o,n.getId())&&s.show){var l=this.getDirectionStyles(s),c=l.text;if(l.show&&c.show){var u=n.getAxisComponent(),d=this.getText(o,r,u);t.font=Ht(c.size,c.weight,c.family),null===(e=this.createFigure({name:"text",attrs:this.getTextAttrs(d,t.measureText(d).width,o,a,u,c),styles:c}))||void 0===e||e.draw(t)}}},e.prototype.compare=function(t,e){return t.paneId===e},e.prototype.getDirectionStyles=function(t){return t.horizontal},e.prototype.getText=function(t,e,i){var n,a=i,r=i.convertFromPixel(t.y);if(a.getType()===X.Percentage){var o=e.getVisibleFirstData();n="".concat(((r-o.close)/o.close*100).toFixed(2),"%")}else{var s=e.getIndicatorStore().getInstances(t.paneId),l=0,c=!1;a.isInCandle()?l=e.getPrecision().price:s.forEach(function(t){l=Math.max(t.precision,l),c||(c=t.shouldFormatBigNumber)}),n=Nt(r,l),c&&(n=e.getCustomApi().formatBigNumber(n))}return Vt(zt(n,e.getThousandsSeparator()),e.getDecimalFoldThreshold())},e.prototype.getTextAttrs=function(t,e,i,n,a,r){var o,s,l=a;return l.isFromZero()?(o=0,s="left"):(o=n.width,s="right"),{x:o,y:i.y,text:t,align:s,baseline:"middle"}},e}(kn),Gn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._yAxisView=new Yn(n),n._candleLastPriceLabelView=new Xn(n),n._indicatorLastValueView=new Kn(n),n._overlayYAxisView=new jn(n),n._crosshairHorizontalLabelView=new Un(n),n.getContainer().style.cursor="ns-resize",n.addChild(n._overlayYAxisView),n}return L(e,t),e.prototype.getName=function(){return Gi.Y_AXIS},e.prototype.updateMain=function(t){this._yAxisView.draw(t),this.getPane().getAxisComponent().isInCandle()&&this._candleLastPriceLabelView.draw(t),this._indicatorLastValueView.draw(t)},e.prototype.updateOverlay=function(t){this._overlayYAxisView.draw(t),this._crosshairHorizontalLabelView.draw(t)},e}(en),Zn=function(){function t(t){this._range={from:0,to:0,range:0,realFrom:0,realTo:0,realRange:0},this._prevRange={from:0,to:0,range:0,realFrom:0,realTo:0,realRange:0},this._ticks=[],this._autoCalcTickFlag=!0,this._parent=t}return t.prototype.getParent=function(){return this._parent},t.prototype.buildTicks=function(t){if(this._autoCalcTickFlag&&(this._range=this.calcRange()),this._prevRange.from!==this._range.from||this._prevRange.to!==this._range.to||t){this._prevRange=this._range;var e=this.optimalTicks(this._calcTicks());return this._ticks=this.createTicks({range:this._range,bounding:this.getSelfBounding(),defaultTicks:e}),!0}return!1},t.prototype.getTicks=function(){return this._ticks},t.prototype.getScrollZoomEnabled=function(){var t;return null===(t=this.getParent().getOptions().axisOptions.scrollZoomEnabled)||void 0===t||t},t.prototype.setRange=function(t){this._autoCalcTickFlag=!1,this._range=t},t.prototype.getRange=function(){return this._range},t.prototype.setAutoCalcTickFlag=function(t){this._autoCalcTickFlag=t},t.prototype.getAutoCalcTickFlag=function(){return this._autoCalcTickFlag},t.prototype._calcTicks=function(){var t=this._range,e=t.realFrom,i=t.realTo,n=t.realRange,a=[];if(n>=0){var r=Z(this._calcTickInterval(n),2),o=r[0],s=r[1],l=fe(Math.ceil(e/o)*o,s),c=fe(Math.floor(i/o)*o,s),u=0,d=l;if(0!==o)while(d<=c){var h=d.toFixed(s);a[u]={text:h,coord:0,value:h},++u,d+=o}}return a},t.prototype._calcTickInterval=function(t){var e=ve(t/8),i=ge(e);return[e,i]},t}(),qn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.calcRange=function(){var t,e,i,n,a=this.getParent(),r=a.getChart(),o=r.getChartStore(),s=Number.MAX_SAFE_INTEGER,l=Number.MIN_SAFE_INTEGER,c=[],u=!1,d=Number.MAX_SAFE_INTEGER,h=Number.MIN_SAFE_INTEGER,p=Number.MAX_SAFE_INTEGER,v=o.getIndicatorStore().getInstances(a.getId());v.forEach(function(t){var e,i,n;u||(u=null!==(e=t.shouldOhlc)&&void 0!==e&&e),p=Math.min(p,t.precision),Et(t.minValue)&&(d=Math.min(d,t.minValue)),Et(t.maxValue)&&(h=Math.max(h,t.maxValue)),c.push({figures:null!==(i=t.figures)&&void 0!==i?i:[],result:null!==(n=t.result)&&void 0!==n?n:[]})});var f=4,g=this.isInCandle();if(g){var m=o.getPrecision().price;f=p!==Number.MAX_SAFE_INTEGER?Math.min(p,m):m}else p!==Number.MAX_SAFE_INTEGER&&(f=p);var y=o.getVisibleDataList(),_=r.getStyles().candle,b=_.type===$.Area,x=_.area.value,w=g&&!b||!g&&u;y.forEach(function(t){var e=t.dataIndex,i=t.data;if(At(i)&&(w&&(s=Math.min(s,i.low),l=Math.max(l,i.high)),g&&b)){var n=i[x];Et(n)&&(s=Math.min(s,n),l=Math.max(l,n))}c.forEach(function(t){var i,n=t.figures,a=t.result,r=null!==(i=a[e])&&void 0!==i?i:{};n.forEach(function(t){var e=r[t.key];Et(e)&&(s=Math.min(s,e),l=Math.max(l,e))})})}),s!==Number.MAX_SAFE_INTEGER&&l!==Number.MIN_SAFE_INTEGER?(s=Math.min(d,s),l=Math.max(h,l)):(s=0,l=10);var S,C=this.getType();switch(C){case X.Percentage:var k=o.getVisibleFirstData();At(k)&&Et(k.close)&&(s=(s-k.close)/k.close*100,l=(l-k.close)/k.close*100),S=Math.pow(10,-2);break;case X.Log:s=ye(s),l=ye(l),S=.05*_e(-f);break;default:S=_e(-f)}if(s===l||Math.abs(s-l)=1&&(M/=A);var D=null!==(n=null===P||void 0===P?void 0:P.bottom)&&void 0!==n?n:.1;D>=1&&(D/=A);var T,B,F,R=Math.abs(l-s);return s-=R*D,l+=R*M,R=Math.abs(l-s),C===X.Log?(T=_e(s),B=_e(l),F=Math.abs(B-T)):(T=s,B=l,F=R),{from:s,to:l,range:R,realFrom:T,realTo:B,realRange:F}},e.prototype._innerConvertToPixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.getRange(),r=a.from,o=a.range,s=(t-r)/o;return this.isReverse()?Math.round(s*n):Math.round((1-s)*n)},e.prototype.isInCandle=function(){return this.getParent().getId()===Wi.CANDLE},e.prototype.getType=function(){return this.isInCandle()?this.getParent().getChart().getStyles().yAxis.type:X.Normal},e.prototype.getPosition=function(){return this.getParent().getChart().getStyles().yAxis.position},e.prototype.isReverse=function(){return!!this.isInCandle()&&this.getParent().getChart().getStyles().yAxis.reverse},e.prototype.isFromZero=function(){var t=this.getParent().getChart().getStyles().yAxis,e=t.inside;return t.position===Y.Left&&e||t.position===Y.Right&&!e},e.prototype.optimalTicks=function(t){var e,i,n=this,a=this.getParent(),r=null!==(i=null===(e=a.getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,o=a.getChart().getChartStore(),s=o.getCustomApi(),l=[],c=this.getType(),u=o.getIndicatorStore().getInstances(a.getId()),d=o.getThousandsSeparator(),h=o.getDecimalFoldThreshold(),p=0,v=!1;this.isInCandle()?p=o.getPrecision().price:u.forEach(function(t){p=Math.max(p,t.precision),v||(v=t.shouldFormatBigNumber)});var f,g=o.getStyles().xAxis.tickText.size;return t.forEach(function(t){var e,i=t.value,a=n._innerConvertToPixel(+i);switch(c){case X.Percentage:e="".concat(Nt(i,2),"%");break;case X.Log:a=n._innerConvertToPixel(ye(+i)),e=Nt(i,p);break;default:e=Nt(i,p),v&&(e=s.formatBigNumber(i));break}e=Vt(zt(e,d),h);var o=Et(f);a>g&&a2*g||!o)&&(l.push({text:e,coord:a,value:i}),f=a)}),l},e.prototype.getAutoSize=function(){var t=this.getParent(),e=t.getChart(),i=e.getStyles(),n=i.yAxis,a=n.size;if("auto"!==a)return a;var r=e.getChartStore(),o=r.getCustomApi(),s=0;if(n.show&&(n.axisLine.show&&(s+=n.axisLine.size),n.tickLine.show&&(s+=n.tickLine.length),n.tickText.show)){var l=0;this.getTicks().forEach(function(t){l=Math.max(l,$t(t.text,n.tickText.size,n.tickText.weight,n.tickText.family))}),s+=n.tickText.marginStart+n.tickText.marginEnd+l}var c=i.crosshair,u=0;if(c.show&&c.horizontal.show&&c.horizontal.text.show){var d=r.getIndicatorStore().getInstances(t.getId()),h=0,p=!1;d.forEach(function(t){h=Math.max(t.precision,h),p||(p=t.shouldFormatBigNumber)});var v=2;if(this.getType()!==X.Percentage)if(this.isInCandle()){var f=r.getPrecision().price,g=i.indicator.lastValueMark;v=g.show&&g.text.show?Math.max(h,f):f}else v=h;var m=Nt(this.getRange().to,v);p&&(m=o.formatBigNumber(m)),m=Vt(m,r.getDecimalFoldThreshold()),u+=c.horizontal.text.paddingLeft+c.horizontal.text.paddingRight+2*c.horizontal.text.borderSize+$t(m,c.horizontal.text.size,c.horizontal.text.weight,c.horizontal.text.family)}return Math.max(s,u)},e.prototype.getSelfBounding=function(){return this.getParent().getYAxisWidget().getBounding()},e.prototype.convertFromPixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.getRange(),r=a.from,o=a.range,s=this.isReverse()?t/n:1-t/n,l=s*o+r;switch(this.getType()){case X.Percentage:var c=this.getParent().getChart().getChartStore().getVisibleFirstData();return At(c)&&Et(c.close)?c.close*l/100+c.close:0;case X.Log:return _e(l);default:return l}},e.prototype.convertToRealValue=function(t){var e=t;return this.getType()===X.Log&&(e=_e(t)),e},e.prototype.convertToPixel=function(t){var e=t;switch(this.getType()){case X.Percentage:var i=this.getParent().getChart().getChartStore().getVisibleFirstData();At(i)&&Et(i.close)&&(e=(t-i.close)/i.close*100);break;case X.Log:e=ye(t);break;default:e=t}return this._innerConvertToPixel(e)},e.prototype.convertToNicePixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.convertToPixel(t);return Math.round(Math.max(.05*n,Math.min(a,.98*n)))},e.extend=function(t){var i=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return L(i,e),i.prototype.createTicks=function(e){return t.createTicks(e)},i}(e);return i},e}(Zn),Jn={name:"default",createTicks:function(t){var e=t.defaultTicks;return e}},Qn={default:qn.extend(Jn)};function ta(t){var e;return null!==(e=Qn[t])&&void 0!==e?e:Qn.default}var ea=function(){function t(t,e,i,n){this._bounding=Qi(),this._chart=i,this._id=n,this._init(t,e)}return t.prototype._init=function(t,e){this._rootContainer=t,this._container=he("div",{width:"100%",margin:"0",padding:"0",position:"relative",overflow:"hidden",boxSizing:"border-box"}),null!==e?t.insertBefore(this._container,e):t.appendChild(this._container)},t.prototype.getContainer=function(){return this._container},t.prototype.getId=function(){return this._id},t.prototype.getChart=function(){return this._chart},t.prototype.getBounding=function(){return this._bounding},t.prototype.update=function(t){this._bounding.height!==this._container.clientHeight&&(this._container.style.height="".concat(this._bounding.height,"px")),this.updateImp(null!==t&&void 0!==t?t:3,this._container,this._bounding)},t.prototype.destroy=function(){this._rootContainer.removeChild(this._container)},t}(),ia=function(t){function e(e,i,n,a,r){var o=t.call(this,e,i,n,a)||this;o._yAxisWidget=null,o._options={minHeight:zi,dragEnabled:!0,gap:{top:.2,bottom:.1},axisOptions:{name:"default",scrollZoomEnabled:!0}};var s=o.getContainer();return o._mainWidget=o.createMainWidget(s),o._yAxisWidget=o.createYAxisWidget(s),o.setOptions(r),o}return L(e,t),e.prototype.setOptions=function(t){var e,i,n,a,r,o=null===(e=t.axisOptions)||void 0===e?void 0:e.name;return(this._options.axisOptions.name!==o&&Mt(o)||!At(this._axis))&&(this._axis=this.createAxisComponent(null!==o&&void 0!==o?o:"default")),wt(this._options,t),this.getId()===Wi.X_AXIS?(a=this.getMainWidget().getContainer(),r="ew-resize"):(a=this.getYAxisWidget().getContainer(),r="ns-resize"),null===(n=null===(i=t.axisOptions)||void 0===i?void 0:i.scrollZoomEnabled)||void 0===n||n?a.style.cursor=r:a.style.cursor="default",this},e.prototype.getOptions=function(){return this._options},e.prototype.getAxisComponent=function(){return this._axis},e.prototype.setBounding=function(t,e,i){var n,a;wt(this.getBounding(),t);var r={};return At(t.height)&&(r.height=t.height),At(t.top)&&(r.top=t.top),this._mainWidget.setBounding(r),null===(n=this._yAxisWidget)||void 0===n||n.setBounding(r),At(e)&&this._mainWidget.setBounding(e),At(i)&&(null===(a=this._yAxisWidget)||void 0===a||a.setBounding(i)),this},e.prototype.getMainWidget=function(){return this._mainWidget},e.prototype.getYAxisWidget=function(){return this._yAxisWidget},e.prototype.updateImp=function(t){var e;this._mainWidget.update(t),null===(e=this._yAxisWidget)||void 0===e||e.update(t)},e.prototype.destroy=function(){var e;t.prototype.destroy.call(this),this._mainWidget.destroy(),null===(e=this._yAxisWidget)||void 0===e||e.destroy()},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),r=a.getContext("2d"),o=Wt(a);a.width=i*o,a.height=n*o,r.scale(o,o);var s=this._mainWidget.getBounding();if(r.drawImage(this._mainWidget.getImage(t),s.left,0,s.width,s.height),null!==this._yAxisWidget){var l=this._yAxisWidget.getBounding();r.drawImage(this._yAxisWidget.getImage(t),l.left,0,l.width,l.height)}return a},e.prototype.createYAxisWidget=function(t){return null},e}(ea),na=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.createAxisComponent=function(t){var e=ta(null!==t&&void 0!==t?t:"default");return new e(this)},e.prototype.createMainWidget=function(t){return new Bn(t,this)},e.prototype.createYAxisWidget=function(t){return new Gn(t,this)},e}(ia),aa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.createMainWidget=function(t){return new Hn(t,this)},e}(na),ra=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getAxisStyles=function(t){return t.xAxis},e.prototype.createAxisLine=function(t){return{coordinates:[{x:0,y:0},{x:t.width,y:0}]}},e.prototype.createTickLines=function(t,e,i){var n=i.tickLine,a=i.axisLine.size;return t.map(function(t){return{coordinates:[{x:t.coord,y:0},{x:t.coord,y:a+n.length}]}})},e.prototype.createTickTexts=function(t,e,i){var n=i.tickText,a=i.axisLine.size,r=i.tickLine.length;return t.map(function(t){return{x:t.coord,y:a+r+n.marginStart,text:t.text,align:"center",baseline:"top"}})},e}($n),oa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.coordinateToPointTimestampDataIndexFlag=function(){return!0},e.prototype.coordinateToPointValueFlag=function(){return!1},e.prototype.getCompleteOverlays=function(t){return t.getInstances()},e.prototype.getProgressOverlay=function(t){return t.instance},e.prototype.getDefaultFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h=[];if(t.needDefaultXAxisFigure&&t.id===(null===(d=u.instance)||void 0===d?void 0:d.id)){var p=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER;e.forEach(function(e,i){p=Math.min(p,e.x),v=Math.max(v,e.x);var n=t.points[i];if(Et(n.timestamp)){var o=r.formatDate(a,n.timestamp,"YYYY-MM-DD HH:mm",qt.Crosshair);h.push({type:"text",attrs:{x:e.x,y:0,text:o,align:"center"},ignoreEvent:!0})}}),e.length>1&&h.unshift({type:"rect",attrs:{x:p,y:0,width:v-p,height:i.height},ignoreEvent:!0})}return h},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createXAxisFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e}(jn),sa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.compare=function(t){return At(t.kLineData)&&t.dataIndex===t.realDataIndex},e.prototype.getDirectionStyles=function(t){return t.vertical},e.prototype.getText=function(t,e){var i,n=null===(i=t.kLineData)||void 0===i?void 0:i.timestamp;return e.getCustomApi().formatDate(e.getTimeScaleStore().getDateTimeFormat(),n,"YYYY-MM-DD HH:mm",qt.Crosshair)},e.prototype.getTextAttrs=function(t,e,i,n,a,r){var o,s=i.realX,l="center";return s-e/2-r.paddingLeft<0?(o=0,l="left"):s+e/2+r.paddingRight>n.width?(o=n.width,l="right"):o=s,{x:o,y:0,text:t,align:l,baseline:"top"}},e}(Un),la=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._xAxisView=new ra(n),n._overlayXAxisView=new oa(n),n._crosshairVerticalLabelView=new sa(n),n.getContainer().style.cursor="ew-resize",n.addChild(n._overlayXAxisView),n}return L(e,t),e.prototype.getName=function(){return Gi.X_AXIS},e.prototype.updateMain=function(t){this._xAxisView.draw(t)},e.prototype.updateOverlay=function(t){this._overlayXAxisView.draw(t),this._crosshairVerticalLabelView.draw(t)},e}(en),ca=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.calcRange=function(){var t=this.getParent().getChart().getChartStore(),e=t.getTimeScaleStore().getVisibleRange(),i=e.from,n=e.to,a=i,r=n-1,o=n-i;return{from:a,to:r,range:o,realFrom:a,realTo:r,realRange:o}},e.prototype.optimalTicks=function(t){var e,i,n=this.getParent().getChart(),a=n.getChartStore(),r=a.getCustomApi().formatDate,o=[],s=t.length,l=a.getDataList();if(s>0){var c=a.getTimeScaleStore().getDateTimeFormat(),u=n.getStyles().xAxis.tickText,d=$t("00-00 00:00",u.size,u.weight,u.family),h=parseInt(t[0].value,10),p=this.convertToPixel(h),v=1;if(s>1){var f=parseInt(t[1].value,10),g=this.convertToPixel(f),m=Math.abs(g-p);me&&(t.apply(this,arguments),i=n)}}var fa=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._dragFlag=!1,n._dragStartY=0,n._topPaneHeight=0,n._bottomPaneHeight=0,n._pressedMouseMoveEvent=va(n._pressedTouchMouseMoveEvent,20),n.registerEvent("touchStartEvent",n._mouseDownEvent.bind(n)).registerEvent("touchMoveEvent",n._pressedMouseMoveEvent.bind(n)).registerEvent("touchEndEvent",n._mouseUpEvent.bind(n)).registerEvent("mouseDownEvent",n._mouseDownEvent.bind(n)).registerEvent("mouseUpEvent",n._mouseUpEvent.bind(n)).registerEvent("pressedMouseMoveEvent",n._pressedMouseMoveEvent.bind(n)).registerEvent("mouseEnterEvent",n._mouseEnterEvent.bind(n)).registerEvent("mouseLeaveEvent",n._mouseLeaveEvent.bind(n)),n}return L(e,t),e.prototype.getName=function(){return Gi.SEPARATOR},e.prototype.checkEventOn=function(){return!0},e.prototype._mouseDownEvent=function(t){this._dragFlag=!0,this._dragStartY=t.pageY;var e=this.getPane();return this._topPaneHeight=e.getTopPane().getBounding().height,this._bottomPaneHeight=e.getBottomPane().getBounding().height,!0},e.prototype._mouseUpEvent=function(){return this._dragFlag=!1,this._mouseLeaveEvent()},e.prototype._pressedTouchMouseMoveEvent=function(t){var e=t.pageY-this._dragStartY,i=this.getPane(),n=i.getTopPane(),a=i.getBottomPane(),r=e<0;if(null!==n&&(null===a||void 0===a?void 0:a.getOptions().dragEnabled)){var o=void 0,s=void 0,l=void 0,c=void 0;r?(o=n,s=a,l=this._topPaneHeight,c=this._bottomPaneHeight):(o=a,s=n,l=this._bottomPaneHeight,c=this._topPaneHeight);var u=o.getOptions().minHeight;if(l>u){var d=Math.max(l-Math.abs(e),u),h=l-d;o.setBounding({height:d}),s.setBounding({height:c+h});var p=i.getChart();p.getChartStore().getActionStore().execute(Tt.OnPaneDrag,{paneId:i.getId()}),p.adjustPaneViewport(!0,!0,!0,!0,!0)}}return!0},e.prototype._mouseEnterEvent=function(){var t,e=this.getPane(),i=e.getBottomPane();if(null!==(t=null===i||void 0===i?void 0:i.getOptions().dragEnabled)&&void 0!==t&&t){var n=e.getChart(),a=n.getStyles().separator;return this.getContainer().style.background=a.activeBackgroundColor,!0}return!1},e.prototype._mouseLeaveEvent=function(){return!this._dragFlag&&(this.getContainer().style.background="",!0)},e.prototype.createContainer=function(){return he("div",{width:"100%",height:"".concat(Zi,"px"),margin:"0",padding:"0",position:"absolute",top:"-3px",zIndex:"20",boxSizing:"border-box",cursor:"ns-resize"})},e.prototype.updateImp=function(t,e,i){if(4===i||2===i){var n=this.getPane().getChart().getStyles().separator;t.style.top="".concat(-Math.floor((Zi-n.size)/2),"px"),t.style.height="".concat(Zi,"px")}},e}(tn),ga=function(t){function e(e,i,n,a,r,o){var s=t.call(this,e,i,n,a)||this;return s.getContainer().style.overflow="",s._topPane=r,s._bottomPane=o,s._separatorWidget=new fa(s.getContainer(),s),s}return L(e,t),e.prototype.setBounding=function(t){return wt(this.getBounding(),t),this},e.prototype.getTopPane=function(){return this._topPane},e.prototype.setTopPane=function(t){return this._topPane=t,this},e.prototype.getBottomPane=function(){return this._bottomPane},e.prototype.setBottomPane=function(t){return this._bottomPane=t,this},e.prototype.getWidget=function(){return this._separatorWidget},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=this.getChart().getStyles().separator,r=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),o=r.getContext("2d"),s=Wt(r);return r.width=i*s,r.height=n*s,o.scale(s,s),o.fillStyle=a.color,o.fillRect(0,0,i,n),r},e.prototype.updateImp=function(t,e,i){if(4===t||2===t){var n=this.getChart().getStyles().separator;e.style.backgroundColor=n.color,e.style.height="".concat(i.height,"px"),e.style.marginLeft="".concat(i.left,"px"),e.style.width="".concat(i.width,"px"),this._separatorWidget.update(t)}},e}(ea);function ma(){var t;return"undefined"!==typeof window&&(null!==(t=window.navigator.userAgent.toLowerCase().indexOf("firefox"))&&void 0!==t?t:-1)>-1}function ya(){return"undefined"!==typeof window&&/iPhone|iPad|iPod/.test(window.navigator.platform)}var _a,ba=10,xa=function(){function t(t,e,i){var n=this;this._clickCount=0,this._clickTimeoutId=null,this._clickCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY},this._tapCount=0,this._tapTimeoutId=null,this._tapCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY},this._longTapTimeoutId=null,this._longTapActive=!1,this._mouseMoveStartCoordinate=null,this._touchMoveStartCoordinate=null,this._touchMoveExceededManhattanDistance=!1,this._cancelClick=!1,this._cancelTap=!1,this._unsubscribeOutsideMouseEvents=null,this._unsubscribeOutsideTouchEvents=null,this._unsubscribeMobileSafariEvents=null,this._unsubscribeMousemove=null,this._unsubscribeMouseWheel=null,this._unsubscribeContextMenu=null,this._unsubscribeRootMouseEvents=null,this._unsubscribeRootTouchEvents=null,this._startPinchMiddleCoordinate=null,this._startPinchDistance=0,this._pinchPrevented=!1,this._preventTouchDragProcess=!1,this._mousePressed=!1,this._lastTouchEventTimeStamp=0,this._activeTouchId=null,this._acceptMouseLeave=!ya(),this._onFirefoxOutsideMouseUp=function(t){n._mouseUpHandler(t)},this._onMobileSafariDoubleClick=function(t){if(n._firesTouchEvents(t)){if(++n._tapCount,null!==n._tapTimeoutId&&n._tapCount>1){var e=n._mouseTouchMoveWithDownInfo(n._getCoordinate(t),n._tapCoordinate).manhattanDistance;e<30&&!n._cancelTap&&n._processEvent(n._makeCompatEvent(t),n._handler.doubleTapEvent),n._resetTapTimeout()}}else if(++n._clickCount,null!==n._clickTimeoutId&&n._clickCount>1){e=n._mouseTouchMoveWithDownInfo(n._getCoordinate(t),n._clickCoordinate).manhattanDistance;e<5&&!n._cancelClick&&n._processEvent(n._makeCompatEvent(t),n._handler.mouseDoubleClickEvent),n._resetClickTimeout()}},this._target=t,this._handler=e,this._options=i,this._init()}return t.prototype.destroy=function(){null!==this._unsubscribeOutsideMouseEvents&&(this._unsubscribeOutsideMouseEvents(),this._unsubscribeOutsideMouseEvents=null),null!==this._unsubscribeOutsideTouchEvents&&(this._unsubscribeOutsideTouchEvents(),this._unsubscribeOutsideTouchEvents=null),null!==this._unsubscribeMousemove&&(this._unsubscribeMousemove(),this._unsubscribeMousemove=null),null!==this._unsubscribeMouseWheel&&(this._unsubscribeMouseWheel(),this._unsubscribeMouseWheel=null),null!==this._unsubscribeContextMenu&&(this._unsubscribeContextMenu(),this._unsubscribeContextMenu=null),null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null),null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null),null!==this._unsubscribeMobileSafariEvents&&(this._unsubscribeMobileSafariEvents(),this._unsubscribeMobileSafariEvents=null),this._clearLongTapTimeout(),this._resetClickTimeout()},t.prototype._mouseEnterHandler=function(t){var e,i,n,a=this;null===(e=this._unsubscribeMousemove)||void 0===e||e.call(this),null===(i=this._unsubscribeMouseWheel)||void 0===i||i.call(this),null===(n=this._unsubscribeContextMenu)||void 0===n||n.call(this);var r=this._mouseMoveHandler.bind(this);this._unsubscribeMousemove=function(){a._target.removeEventListener("mousemove",r)},this._target.addEventListener("mousemove",r);var o=this._mouseWheelHandler.bind(this);this._unsubscribeMouseWheel=function(){a._target.removeEventListener("wheel",o)},this._target.addEventListener("wheel",o,{passive:!1});var s=this._contextMenuHandler.bind(this);this._unsubscribeContextMenu=function(){a._target.removeEventListener("contextmenu",s)},this._target.addEventListener("contextmenu",s,{passive:!1}),this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseEnterEvent),this._acceptMouseLeave=!0)},t.prototype._resetClickTimeout=function(){null!==this._clickTimeoutId&&clearTimeout(this._clickTimeoutId),this._clickCount=0,this._clickTimeoutId=null,this._clickCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY}},t.prototype._resetTapTimeout=function(){null!==this._tapTimeoutId&&clearTimeout(this._tapTimeoutId),this._tapCount=0,this._tapTimeoutId=null,this._tapCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY}},t.prototype._mouseMoveHandler=function(t){this._mousePressed||null!==this._touchMoveStartCoordinate||this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseMoveEvent),this._acceptMouseLeave=!0)},t.prototype._mouseWheelHandler=function(t){if(Math.abs(t.deltaX)>Math.abs(t.deltaY)){if(!At(this._handler.mouseWheelHortEvent))return;if(this._preventDefault(t),0===Math.abs(t.deltaX))return;this._handler.mouseWheelHortEvent(this._makeCompatEvent(t),-t.deltaX)}else{if(!At(this._handler.mouseWheelVertEvent))return;var e=-t.deltaY/100;if(0===e)return;switch(this._preventDefault(t),t.deltaMode){case t.DOM_DELTA_PAGE:e*=120;break;case t.DOM_DELTA_LINE:e*=32;break}if(0!==e){var i=Math.sign(e)*Math.min(1,Math.abs(e));this._handler.mouseWheelVertEvent(this._makeCompatEvent(t),i)}}},t.prototype._contextMenuHandler=function(t){this._preventDefault(t)},t.prototype._touchMoveHandler=function(t){var e=this._touchWithId(t.changedTouches,this._activeTouchId);if(null!==e&&(this._lastTouchEventTimeStamp=this._eventTimeStamp(t),null===this._startPinchMiddleCoordinate&&!this._preventTouchDragProcess)){this._pinchPrevented=!0;var i=this._mouseTouchMoveWithDownInfo(this._getCoordinate(e),this._touchMoveStartCoordinate),n=i.xOffset,a=i.yOffset,r=i.manhattanDistance;if(this._touchMoveExceededManhattanDistance||!(r<5)){if(!this._touchMoveExceededManhattanDistance){var o=.5*n,s=a>=o&&!this._options.treatVertDragAsPageScroll(),l=o>a&&!this._options.treatHorzDragAsPageScroll();s||l||(this._preventTouchDragProcess=!0),this._touchMoveExceededManhattanDistance=!0,this._cancelTap=!0,this._clearLongTapTimeout(),this._resetTapTimeout()}this._preventTouchDragProcess||this._processEvent(this._makeCompatEvent(t,e),this._handler.touchMoveEvent)}}},t.prototype._mouseMoveWithDownHandler=function(t){if(0===t.button){var e=this._mouseTouchMoveWithDownInfo(this._getCoordinate(t),this._mouseMoveStartCoordinate),i=e.manhattanDistance;i>=5&&(this._cancelClick=!0,this._resetClickTimeout()),this._cancelClick&&this._processEvent(this._makeCompatEvent(t),this._handler.pressedMouseMoveEvent)}},t.prototype._mouseTouchMoveWithDownInfo=function(t,e){var i=Math.abs(e.x-t.x),n=Math.abs(e.y-t.y),a=i+n;return{xOffset:i,yOffset:n,manhattanDistance:a}},t.prototype._touchEndHandler=function(t){var e=this._touchWithId(t.changedTouches,this._activeTouchId);if(null===e&&0===t.touches.length&&(e=t.changedTouches[0]),null!==e){this._activeTouchId=null,this._lastTouchEventTimeStamp=this._eventTimeStamp(t),this._clearLongTapTimeout(),this._touchMoveStartCoordinate=null,null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null);var i=this._makeCompatEvent(t,e);if(this._processEvent(i,this._handler.touchEndEvent),++this._tapCount,null!==this._tapTimeoutId&&this._tapCount>1){var n=this._mouseTouchMoveWithDownInfo(this._getCoordinate(e),this._tapCoordinate).manhattanDistance;n<30&&!this._cancelTap&&this._processEvent(i,this._handler.doubleTapEvent),this._resetTapTimeout()}else this._cancelTap||(this._processEvent(i,this._handler.tapEvent),At(this._handler.tapEvent)&&this._preventDefault(t));0===this._tapCount&&this._preventDefault(t),0===t.touches.length&&this._longTapActive&&(this._longTapActive=!1,this._preventDefault(t))}},t.prototype._mouseUpHandler=function(t){if(0===t.button){var e=this._makeCompatEvent(t);if(this._mouseMoveStartCoordinate=null,this._mousePressed=!1,null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null),ma()){var i=this._target.ownerDocument.documentElement;i.removeEventListener("mouseleave",this._onFirefoxOutsideMouseUp)}if(!this._firesTouchEvents(t))if(this._processEvent(e,this._handler.mouseUpEvent),++this._clickCount,null!==this._clickTimeoutId&&this._clickCount>1){var n=this._mouseTouchMoveWithDownInfo(this._getCoordinate(t),this._clickCoordinate).manhattanDistance;n<5&&!this._cancelClick&&this._processEvent(e,this._handler.mouseDoubleClickEvent),this._resetClickTimeout()}else this._cancelClick||this._processEvent(e,this._handler.mouseClickEvent)}},t.prototype._clearLongTapTimeout=function(){null!==this._longTapTimeoutId&&(clearTimeout(this._longTapTimeoutId),this._longTapTimeoutId=null)},t.prototype._touchStartHandler=function(t){if(null===this._activeTouchId){var e=t.changedTouches[0];this._activeTouchId=e.identifier,this._lastTouchEventTimeStamp=this._eventTimeStamp(t);var i=this._target.ownerDocument.documentElement;this._cancelTap=!1,this._touchMoveExceededManhattanDistance=!1,this._preventTouchDragProcess=!1,this._touchMoveStartCoordinate=this._getCoordinate(e),null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null);var n=this._touchMoveHandler.bind(this),a=this._touchEndHandler.bind(this);this._unsubscribeRootTouchEvents=function(){i.removeEventListener("touchmove",n),i.removeEventListener("touchend",a)},i.addEventListener("touchmove",n,{passive:!1}),i.addEventListener("touchend",a,{passive:!1}),this._clearLongTapTimeout(),this._longTapTimeoutId=setTimeout(this._longTapHandler.bind(this,t),500),this._processEvent(this._makeCompatEvent(t,e),this._handler.touchStartEvent),null===this._tapTimeoutId&&(this._tapCount=0,this._tapTimeoutId=setTimeout(this._resetTapTimeout.bind(this),500),this._tapCoordinate=this._getCoordinate(e))}},t.prototype._mouseDownHandler=function(t){if(2===t.button)return this._preventDefault(t),void this._processEvent(this._makeCompatEvent(t),this._handler.mouseRightClickEvent);if(0===t.button){var e=this._target.ownerDocument.documentElement;ma()&&e.addEventListener("mouseleave",this._onFirefoxOutsideMouseUp),this._cancelClick=!1,this._mouseMoveStartCoordinate=this._getCoordinate(t),null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null);var i=this._mouseMoveWithDownHandler.bind(this),n=this._mouseUpHandler.bind(this);this._unsubscribeRootMouseEvents=function(){e.removeEventListener("mousemove",i),e.removeEventListener("mouseup",n)},e.addEventListener("mousemove",i),e.addEventListener("mouseup",n),this._mousePressed=!0,this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseDownEvent),null===this._clickTimeoutId&&(this._clickCount=0,this._clickTimeoutId=setTimeout(this._resetClickTimeout.bind(this),500),this._clickCoordinate=this._getCoordinate(t)))}},t.prototype._init=function(){var t=this;this._target.addEventListener("mouseenter",this._mouseEnterHandler.bind(this)),this._target.addEventListener("touchcancel",this._clearLongTapTimeout.bind(this));var e=this._target.ownerDocument,i=function(e){null!=t._handler.mouseDownOutsideEvent&&(e.composed&&t._target.contains(e.composedPath()[0])||null!==e.target&&t._target.contains(e.target)||t._handler.mouseDownOutsideEvent({x:0,y:0,pageX:0,pageY:0}))};this._unsubscribeOutsideTouchEvents=function(){e.removeEventListener("touchstart",i)},this._unsubscribeOutsideMouseEvents=function(){e.removeEventListener("mousedown",i)},e.addEventListener("mousedown",i),e.addEventListener("touchstart",i,{passive:!0}),ya()&&(this._unsubscribeMobileSafariEvents=function(){t._target.removeEventListener("dblclick",t._onMobileSafariDoubleClick)},this._target.addEventListener("dblclick",this._onMobileSafariDoubleClick)),this._target.addEventListener("mouseleave",this._mouseLeaveHandler.bind(this)),this._target.addEventListener("touchstart",this._touchStartHandler.bind(this),{passive:!0}),this._target.addEventListener("mousedown",function(t){if(1===t.button)return t.preventDefault(),!1}),this._target.addEventListener("mousedown",this._mouseDownHandler.bind(this)),this._initPinch(),this._target.addEventListener("touchmove",function(){},{passive:!1})},t.prototype._initPinch=function(){var t=this;(At(this._handler.pinchStartEvent)||At(this._handler.pinchEvent)||At(this._handler.pinchEndEvent))&&(this._target.addEventListener("touchstart",function(e){t._checkPinchState(e.touches)},{passive:!0}),this._target.addEventListener("touchmove",function(e){if(2===e.touches.length&&null!==t._startPinchMiddleCoordinate&&At(t._handler.pinchEvent)){var i=t._getTouchDistance(e.touches[0],e.touches[1]),n=i/t._startPinchDistance;t._handler.pinchEvent(K(K({},t._startPinchMiddleCoordinate),{pageX:0,pageY:0}),n),t._preventDefault(e)}},{passive:!1}),this._target.addEventListener("touchend",function(e){t._checkPinchState(e.touches)}))},t.prototype._checkPinchState=function(t){1===t.length&&(this._pinchPrevented=!1),2!==t.length||this._pinchPrevented||this._longTapActive?this._stopPinch():this._startPinch(t)},t.prototype._startPinch=function(t){var e,i=null!==(e=this._target.getBoundingClientRect())&&void 0!==e?e:{left:0,top:0};this._startPinchMiddleCoordinate={x:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,y:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this._startPinchDistance=this._getTouchDistance(t[0],t[1]),At(this._handler.pinchStartEvent)&&this._handler.pinchStartEvent({x:0,y:0,pageX:0,pageY:0}),this._clearLongTapTimeout()},t.prototype._stopPinch=function(){null!==this._startPinchMiddleCoordinate&&(this._startPinchMiddleCoordinate=null,At(this._handler.pinchEndEvent)&&this._handler.pinchEndEvent({x:0,y:0,pageX:0,pageY:0}))},t.prototype._mouseLeaveHandler=function(t){var e,i,n;null===(e=this._unsubscribeMousemove)||void 0===e||e.call(this),null===(i=this._unsubscribeMouseWheel)||void 0===i||i.call(this),null===(n=this._unsubscribeContextMenu)||void 0===n||n.call(this),this._firesTouchEvents(t)||this._acceptMouseLeave&&(this._processEvent(this._makeCompatEvent(t),this._handler.mouseLeaveEvent),this._acceptMouseLeave=!ya())},t.prototype._longTapHandler=function(t){var e=this._touchWithId(t.touches,this._activeTouchId);null!==e&&(this._processEvent(this._makeCompatEvent(t,e),this._handler.longTapEvent),this._cancelTap=!0,this._longTapActive=!0)},t.prototype._firesTouchEvents=function(t){var e;return At(null===(e=t.sourceCapabilities)||void 0===e?void 0:e.firesTouchEvents)?t.sourceCapabilities.firesTouchEvents:this._eventTimeStamp(t)this._startScrollCoordinate.y-s.y){var d=s.x-this._startScrollCoordinate.x;c.getTimeScaleStore().scroll(d)}return!0;case Gi.X_AXIS:case Gi.Y_AXIS:var h=o.dispatchEvent("pressedMouseMoveEvent",s);return h&&(null===(n=s.preventDefault)||void 0===n||n.call(s),this._chart.updatePane(1)),h}}return!1},t.prototype.touchEndEvent=function(t){var e=this,i=this._findWidgetByEvent(t).widget;if(null!==i){var n=this._makeWidgetEvent(t,i),a=i.getName();switch(a){case Gi.MAIN:if(i.dispatchEvent("mouseUpEvent",n),null!==this._startScrollCoordinate){var r=(new Date).getTime()-this._flingStartTime,o=n.x-this._startScrollCoordinate.x,s=o/(r>0?r:1)*20;if(r<200&&Math.abs(s)>0){var l=this._chart.getChartStore().getTimeScaleStore(),c=function(){e._flingScrollRequestId=oe(function(){l.startScroll(),l.scroll(s),s*=.975,Math.abs(s)<1?null!==e._flingScrollRequestId&&(se(e._flingScrollRequestId),e._flingScrollRequestId=null):c()})};c()}}return!0;case Gi.X_AXIS:case Gi.Y_AXIS:var u=i.dispatchEvent("mouseUpEvent",n);u&&this._chart.updatePane(1)}}return!1},t.prototype.tapEvent=function(t){var e=this._findWidgetByEvent(t),i=e.pane,n=e.widget,a=!1;if(null!==n){var r=this._makeWidgetEvent(t,n),o=n.dispatchEvent("mouseClickEvent",r);if(n.getName()===Gi.MAIN){var s=this._makeWidgetEvent(t,n),l=this._chart.getChartStore(),c=l.getTooltipStore();o?(this._touchCancelCrosshair=!0,this._touchCoordinate=null,c.setCrosshair(void 0,{notInvalidate:!0}),a=!0):(this._touchCancelCrosshair||this._touchZoomed||(this._touchCoordinate={x:s.x,y:s.y},c.setCrosshair({x:s.x,y:s.y,paneId:null===i||void 0===i?void 0:i.getId()},{notInvalidate:!0}),a=!0),this._touchCancelCrosshair=!1)}(a||o)&&this._chart.updatePane(1)}return a},t.prototype.doubleTapEvent=function(t){return this.mouseDoubleClickEvent(t)},t.prototype.longTapEvent=function(t){var e=this._findWidgetByEvent(t),i=e.pane,n=e.widget;if(null!==n&&n.getName()===Gi.MAIN){var a=this._makeWidgetEvent(t,n);return this._touchCoordinate={x:a.x,y:a.y},this._chart.getChartStore().getTooltipStore().setCrosshair({x:a.x,y:a.y,paneId:null===i||void 0===i?void 0:i.getId()}),!0}return!1},t.prototype._findWidgetByEvent=function(t){var e,i,n,a,r=t.x,o=t.y,s=this._chart.getAllSeparatorPanes(),l=this._chart.getChartStore().getStyles().separator.size;try{for(var c=G(s),u=c.next();!u.done;u=c.next()){var d=Z(u.value,2),h=d[1],p=h.getBounding(),v=p.top-Math.round((Zi-l)/2);if(r>=p.left&&r<=p.left+p.width&&o>=v&&o<=v+Zi)return{pane:h,widget:h.getWidget()}}}catch(k){e={error:k}}finally{try{u&&!u.done&&(i=c.return)&&i.call(c)}finally{if(e)throw e.error}}var f=this._chart.getAllDrawPanes(),g=null;try{for(var m=G(f),y=m.next();!y.done;y=m.next()){var _=y.value;p=_.getBounding();if(r>=p.left&&r<=p.left+p.width&&o>=p.top&&o<=p.top+p.height){g=_;break}}}catch(I){n={error:I}}finally{try{y&&!y.done&&(a=m.return)&&a.call(m)}finally{if(n)throw n.error}}var b=null;if(null!==g){if(null===b){var x=g.getMainWidget(),w=x.getBounding();r>=w.left&&r<=w.left+w.width&&o>=w.top&&o<=w.top+w.height&&(b=x)}if(null===b){var S=g.getYAxisWidget();if(null!==S){var C=S.getBounding();r>=C.left&&r<=C.left+C.width&&o>=C.top&&o<=C.top+C.height&&(b=S)}}}return{pane:g,widget:b}},t.prototype._makeWidgetEvent=function(t,e){var i,n,a,r=null!==(i=null===e||void 0===e?void 0:e.getBounding())&&void 0!==i?i:null;return K(K({},t),{x:t.x-(null!==(n=null===r||void 0===r?void 0:r.left)&&void 0!==n?n:0),y:t.y-(null!==(a=null===r||void 0===r?void 0:r.top)&&void 0!==a?a:0)})},t.prototype.destroy=function(){this._container.removeEventListener("keydown",this._boundKeyBoardDownEvent),this._event.destroy()},t}();(function(t){t["Root"]="root",t["Main"]="main",t["YAxis"]="yAxis"})(_a||(_a={}));var Sa=function(){function t(t,e){this._drawPanes=[],this._separatorPanes=new Map,this._initContainer(t),this._chartEvent=new wa(this._chartContainer,this),this._chartStore=new Ui(this,e),this._initPanes(e),this.adjustPaneViewport(!0,!0,!0)}return t.prototype._initContainer=function(t){this._container=t,this._chartContainer=he("div",{position:"relative",width:"100%",outline:"none",borderStyle:"none",cursor:"crosshair",boxSizing:"border-box",userSelect:"none",webkitUserSelect:"none",msUserSelect:"none",MozUserSelect:"none",webkitTapHighlightColor:"transparent"}),this._chartContainer.tabIndex=1,t.appendChild(this._chartContainer)},t.prototype._initPanes=function(t){var e,i=this,n=null!==(e=null===t||void 0===t?void 0:t.layout)&&void 0!==e?e:[{type:"candle"}],a=!1,r=!1,o=function(t){if(!r){var e=i._createPane(pa,Wi.X_AXIS,null!==t&&void 0!==t?t:{});i._xAxisPane=e,r=!0}};n.forEach(function(t){var e,n,r;switch(t.type){case"candle":if(!a){var s=null!==(e=t.options)&&void 0!==e?e:{};wt(s,{id:Wi.CANDLE}),i._candlePane=i._createPane(aa,Wi.CANDLE,s);var l=null!==(n=t.content)&&void 0!==n?n:[];l.forEach(function(t){i.createIndicator(t,!0,s)}),a=!0}break;case"indicator":var c;l=null!==(r=t.content)&&void 0!==r?r:[];if(l.length>0)l.forEach(function(e){At(c)?i.createIndicator(e,!0,{id:c}):c=i.createIndicator(e,!0,t.options)});break;case"xAxis":o(t.options);break}}),o({position:"bottom"})},t.prototype._createPane=function(t,e,i){var n,a=null,r=null,o=null===i||void 0===i?void 0:i.position;switch(o){case"top":var s=this._drawPanes[0];At(s)&&(r=new t(this._chartContainer,s.getContainer(),this,e,null!==i&&void 0!==i?i:{}),a=0);break;case"bottom":break;default:for(var l=this._drawPanes.length-1;l>-1;l--){var c=this._drawPanes[l],u=this._drawPanes[l-1];if("bottom"===(null===c||void 0===c?void 0:c.getOptions().position)&&"bottom"!==(null===u||void 0===u?void 0:u.getOptions().position)){r=new t(this._chartContainer,c.getContainer(),this,e,null!==i&&void 0!==i?i:{}),a=l;break}}}if(At(r)||(r=new t(this._chartContainer,null,this,e,null!==i&&void 0!==i?i:{})),Et(a)?(this._drawPanes.splice(a,0,r),n=a):(this._drawPanes.push(r),n=this._drawPanes.length-1),r.getId()!==Wi.X_AXIS){var d=this._drawPanes[n+1];if(At(d)&&d.getId()===Wi.X_AXIS&&(d=this._drawPanes[n+2]),At(d)){var h=this._separatorPanes.get(d);At(h)?h.setTopPane(r):(h=new ga(this._chartContainer,d.getContainer(),this,"",r,d),this._separatorPanes.set(d,h))}var p=this._drawPanes[n-1];if(At(p)&&p.getId()===Wi.X_AXIS&&(p=this._drawPanes[n-2]),At(p)){h=new ga(this._chartContainer,r.getContainer(),this,"",p,r);this._separatorPanes.set(r,h)}}return r},t.prototype._measurePaneHeight=function(){var t,e=this,i=Math.floor(this._container.clientHeight),n=this._chartStore.getStyles().separator.size,a=this._xAxisPane.getAxisComponent().getAutoSize(),r=i-a-this._separatorPanes.size*n;r<0&&(r=0);var o=0;this._drawPanes.forEach(function(t){if(t.getId()!==Wi.CANDLE&&t.getId()!==Wi.X_AXIS){var e=t.getBounding().height,i=t.getOptions().minHeight;er?(o=r,e=Math.max(r-o,0)):o+=e,t.setBounding({height:e})}});var s=r-o;null===(t=this._candlePane)||void 0===t||t.setBounding({height:s}),this._xAxisPane.setBounding({height:a});var l=0;this._drawPanes.forEach(function(t){var i=e._separatorPanes.get(t);At(i)&&(i.setBounding({height:n,top:l}),l+=n),t.setBounding({top:l}),l+=t.getBounding().height})},t.prototype._measurePaneWidth=function(){var t=this,e=Math.floor(this._container.clientWidth),i=this._chartStore.getStyles(),n=i.yAxis,a=n.position===Y.Left,r=!n.inside,o=0,s=0,l=0,c=0;this._drawPanes.forEach(function(t){t.getId()!==Wi.X_AXIS&&(s=Math.max(s,t.getAxisComponent().getAutoSize()))}),s>e&&(s=e),r?(o=e-s,a?(l=0,c=s):(l=e-s,c=0)):(o=e,c=0,l=a?0:e-s),this._chartStore.getTimeScaleStore().setTotalBarSpace(o);var u,d={width:e},h={width:o,left:c},p={width:s,left:l},v=i.separator.fill;u=r&&!v?h:d,this._drawPanes.forEach(function(e){var i;null===(i=t._separatorPanes.get(e))||void 0===i||i.setBounding(u),e.setBounding(d,h,p)})},t.prototype._setPaneOptions=function(t,e){var i,n;if(Mt(t.id)){var a=this.getDrawPaneById(t.id),r=!1;if(null!==a){var o=e;if(t.id!==Wi.CANDLE&&Et(t.height)&&t.height>0){var s=Math.max(null!==(i=t.minHeight)&&void 0!==i?i:a.getOptions().minHeight,0),l=Math.max(s,t.height);a.setBounding({height:l}),o=!0,r=!0}(Mt(null===(n=t.axisOptions)||void 0===n?void 0:n.name)||At(t.gap))&&(o=!0),a.setOptions(t),o&&this.adjustPaneViewport(r,!0,!0,!0,!0)}}},t.prototype.getDrawPaneById=function(t){if(t===Wi.CANDLE)return this._candlePane;if(t===Wi.X_AXIS)return this._xAxisPane;var e=this._drawPanes.find(function(e){return e.getId()===t});return null!==e&&void 0!==e?e:null},t.prototype.getContainer=function(){return this._container},t.prototype.getChartStore=function(){return this._chartStore},t.prototype.getXAxisPane=function(){return this._xAxisPane},t.prototype.getAllDrawPanes=function(){return this._drawPanes},t.prototype.getAllSeparatorPanes=function(){return this._separatorPanes},t.prototype.adjustPaneViewport=function(t,e,i,n,a){t&&this._measurePaneHeight();var r=e,o=null!==n&&void 0!==n&&n,s=null!==a&&void 0!==a&&a;(o||s)&&this._drawPanes.forEach(function(t){var e=t.getAxisComponent().buildTicks(s);r||(r=e)}),r&&this._measurePaneWidth(),null!==i&&void 0!==i&&i&&(this._xAxisPane.getAxisComponent().buildTicks(!0),this.updatePane(4))},t.prototype.updatePane=function(t,e){if(At(e)){var i=this.getDrawPaneById(e);null===i||void 0===i||i.update(t)}else this._separatorPanes.forEach(function(e){e.update(t)}),this._drawPanes.forEach(function(e){e.update(t)})},t.prototype.crosshairChange=function(t){var e=this,i=this._chartStore.getActionStore();if(i.has(Tt.OnCrosshairChange)){var n={};this._drawPanes.forEach(function(i){var a=i.getId(),r={},o=e._chartStore.getIndicatorStore().getInstances(a);o.forEach(function(e){var i,n=e.result;r[e.name]=n[null!==(i=t.dataIndex)&&void 0!==i?i:n.length-1]}),n[a]=r}),Mt(t.paneId)&&i.execute(Tt.OnCrosshairChange,K(K({},t),{indicatorData:n}))}},t.prototype.getDom=function(t,e){var i,n;if(!Mt(t))return this._chartContainer;var a=this.getDrawPaneById(t);if(null!==a){var r=null!==e&&void 0!==e?e:_a.Root;switch(r){case _a.Root:return a.getContainer();case _a.Main:return a.getMainWidget().getContainer();case _a.YAxis:return null!==(n=null===(i=a.getYAxisWidget())||void 0===i?void 0:i.getContainer())&&void 0!==n?n:null}}return null},t.prototype.getSize=function(t,e){var i,n;if(!At(t))return{width:Math.floor(this._chartContainer.clientWidth),height:Math.floor(this._chartContainer.clientHeight),left:0,top:0,right:0,bottom:0};var a=this.getDrawPaneById(t);if(null!==a){var r=null!==e&&void 0!==e?e:_a.Root;switch(r){case _a.Root:return a.getBounding();case _a.Main:return a.getMainWidget().getBounding();case _a.YAxis:return null!==(n=null===(i=a.getYAxisWidget())||void 0===i?void 0:i.getBounding())&&void 0!==n?n:null}}return null},t.prototype.setStyles=function(t){var e,i,n;this._chartStore.setOptions({styles:t}),n=Mt(t)?ji(t):t,At(null===(e=null===n||void 0===n?void 0:n.yAxis)||void 0===e?void 0:e.type)&&(null===(i=this._candlePane)||void 0===i||i.getAxisComponent().setAutoCalcTickFlag(!0)),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.getStyles=function(){return this._chartStore.getStyles()},t.prototype.setLocale=function(t){this._chartStore.setOptions({locale:t}),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.getLocale=function(){return this._chartStore.getLocale()},t.prototype.setCustomApi=function(t){this._chartStore.setOptions({customApi:t}),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.setPriceVolumePrecision=function(t,e){this._chartStore.setPrecision({price:t,volume:e})},t.prototype.getPriceVolumePrecision=function(){return this._chartStore.getPrecision()},t.prototype.setTimezone=function(t){this._chartStore.setOptions({timezone:t}),this._xAxisPane.getAxisComponent().buildTicks(!0),this._xAxisPane.update(3)},t.prototype.getTimezone=function(){return this._chartStore.getTimeScaleStore().getTimezone()},t.prototype.setOffsetRightDistance=function(t){this._chartStore.getTimeScaleStore().setOffsetRightDistance(t,!0)},t.prototype.getOffsetRightDistance=function(){return this._chartStore.getTimeScaleStore().getOffsetRightDistance()},t.prototype.setMaxOffsetLeftDistance=function(t){t<0?_t("setMaxOffsetLeftDistance","distance","distance must greater than zero!!!"):this._chartStore.getTimeScaleStore().setMaxOffsetLeftDistance(t)},t.prototype.setMaxOffsetRightDistance=function(t){t<0?_t("setMaxOffsetRightDistance","distance","distance must greater than zero!!!"):this._chartStore.getTimeScaleStore().setMaxOffsetRightDistance(t)},t.prototype.setLeftMinVisibleBarCount=function(t){t<0?_t("setLeftMinVisibleBarCount","barCount","barCount must greater than zero!!!"):this._chartStore.getTimeScaleStore().setLeftMinVisibleBarCount(Math.ceil(t))},t.prototype.setRightMinVisibleBarCount=function(t){t<0?_t("setRightMinVisibleBarCount","barCount","barCount must greater than zero!!!"):this._chartStore.getTimeScaleStore().setRightMinVisibleBarCount(Math.ceil(t))},t.prototype.setBarSpace=function(t){this._chartStore.getTimeScaleStore().setBarSpace(t)},t.prototype.getBarSpace=function(){return this._chartStore.getTimeScaleStore().getBarSpace().bar},t.prototype.getVisibleRange=function(){return this._chartStore.getTimeScaleStore().getVisibleRange()},t.prototype.clearData=function(){this._chartStore.clear()},t.prototype.getDataList=function(){return this._chartStore.getDataList()},t.prototype.applyNewData=function(t,e,i){At(i)&&_t("applyNewData","","param `callback` has been deprecated since version 9.8.0, use `subscribeAction('onDataReady')` instead."),this._chartStore.addData(t,Yt.Init,e).then(function(){}).catch(function(){}).finally(function(){null===i||void 0===i||i()})},t.prototype.applyMoreData=function(t,e,i){_t("","","Api `applyMoreData` has been deprecated since version 9.8.0."),this._chartStore.addData(t,Yt.Forward,null===e||void 0===e||e).then(function(){}).catch(function(){}).finally(function(){null===i||void 0===i||i()})},t.prototype.updateData=function(t,e){At(e)&&_t("updateData","","param `callback` has been deprecated since version 9.8.0, use `subscribeAction('onDataReady')` instead."),this._chartStore.addData(t).then(function(){}).catch(function(){}).finally(function(){null===e||void 0===e||e()})},t.prototype.loadMore=function(t){_t("","","Api `loadMore` has been deprecated since version 9.8.0, use `setLoadDataCallback` instead."),this._chartStore.setLoadMoreCallback(t)},t.prototype.setLoadDataCallback=function(t){this._chartStore.setLoadDataCallback(t)},t.prototype.createIndicator=function(t,e,i,n){var a,r=this,o=Mt(t)?{name:t}:t;if(null===ri(o.name))return _t("createIndicator","value","indicator not supported, you may need to use registerIndicator to add one!!!"),null;var s=null===i||void 0===i?void 0:i.id,l=this.getDrawPaneById(null!==s&&void 0!==s?s:"");if(null!==l)this._chartStore.getIndicatorStore().addInstance(o,null!==s&&void 0!==s?s:"",null!==e&&void 0!==e&&e).then(function(t){var e;r._setPaneOptions(null!==i&&void 0!==i?i:{},null!==(e=l.getAxisComponent().buildTicks(!0))&&void 0!==e&&e)}).catch(function(t){});else{null!==s&&void 0!==s||(s=de(Wi.INDICATOR));var c=this._createPane(na,s,null!==i&&void 0!==i?i:{}),u=null!==(a=null===i||void 0===i?void 0:i.height)&&void 0!==a?a:Vi;c.setBounding({height:u}),this._chartStore.getIndicatorStore().addInstance(o,s,null!==e&&void 0!==e&&e).finally(function(){r.adjustPaneViewport(!0,!0,!0,!0,!0),null===n||void 0===n||n()})}return null!==s&&void 0!==s?s:null},t.prototype.overrideIndicator=function(t,e,i){var n=this;this._chartStore.getIndicatorStore().override(t,null!==e&&void 0!==e?e:null).then(function(t){var e=Z(t,2),a=e[0],r=e[1];(a||r)&&(n.adjustPaneViewport(!1,r,!0,r),null===i||void 0===i||i())}).catch(function(){})},t.prototype.getIndicatorByPaneId=function(t,e){return this._chartStore.getIndicatorStore().getInstanceByPaneId(t,e)},t.prototype.removeIndicator=function(t,e){var i,n,a,r=this._chartStore.getIndicatorStore(),o=r.removeInstance(t,e);if(o){var s=!1;if(t!==Wi.CANDLE&&!r.hasInstances(t)){var l=this.getDrawPaneById(t),c=this._drawPanes.findIndex(function(e){return e.getId()===t});if(null!==l){s=!0;var u=this._separatorPanes.get(l);if(At(u)){var d=null===u||void 0===u?void 0:u.getTopPane();try{for(var h=G(this._separatorPanes),p=h.next();!p.done;p=h.next()){var v=p.value;if(v[1].getTopPane().getId()===l.getId()){v[1].setTopPane(d);break}}}catch(g){i={error:g}}finally{try{p&&!p.done&&(n=h.return)&&n.call(h)}finally{if(i)throw i.error}}u.destroy(),this._separatorPanes.delete(l)}this._drawPanes.splice(c,1),l.destroy();var f=this._drawPanes[0];At(f)&&f.getId()===Wi.X_AXIS&&(f=this._drawPanes[1]),null===(a=this._separatorPanes.get(f))||void 0===a||a.destroy(),this._separatorPanes.delete(f)}}this.adjustPaneViewport(s,!0,!0,!0,!0)}},t.prototype.createOverlay=function(t,e){var i=[];if(Mt(t))i=[{name:t}];else if(Ct(t))i=t.map(function(t){return Mt(t)?{name:t}:t});else{var n=t;i=[n]}var a=!0;At(e)&&null!==this.getDrawPaneById(e)||(e=Wi.CANDLE,a=!1);var r=this._chartStore.getOverlayStore().addInstances(i,e,a);return Ct(t)?r:r[0]},t.prototype.getOverlayById=function(t){return this._chartStore.getOverlayStore().getInstanceById(t)},t.prototype.overrideOverlay=function(t){this._chartStore.getOverlayStore().override(t)},t.prototype.removeOverlay=function(t){var e;At(t)&&(e=Mt(t)?{id:t}:t),this._chartStore.getOverlayStore().removeInstance(e)},t.prototype.setPaneOptions=function(t){this._setPaneOptions(t,!1)},t.prototype.setZoomEnabled=function(t){this._chartStore.getTimeScaleStore().setZoomEnabled(t)},t.prototype.isZoomEnabled=function(){return this._chartStore.getTimeScaleStore().getZoomEnabled()},t.prototype.setScrollEnabled=function(t){this._chartStore.getTimeScaleStore().setScrollEnabled(t)},t.prototype.isScrollEnabled=function(){return this._chartStore.getTimeScaleStore().getScrollEnabled()},t.prototype.scrollByDistance=function(t,e){var i=Et(e)&&e>0?e:0,n=this._chartStore.getTimeScaleStore();if(n.startScroll(),i>0){var a=new le({duration:i});a.doFrame(function(e){var a=t*(e/i);n.scroll(a)}),a.start()}else n.scroll(t)},t.prototype.scrollToRealTime=function(t){var e=this._chartStore.getTimeScaleStore(),i=e.getBarSpace().bar,n=e.getLastBarRightSideDiffBarCount()-e.getInitialOffsetRightDistance()/i,a=n*i;this.scrollByDistance(a,t)},t.prototype.scrollToDataIndex=function(t,e){var i=this._chartStore.getTimeScaleStore(),n=(i.getLastBarRightSideDiffBarCount()+(this.getDataList().length-1-t))*i.getBarSpace().bar;this.scrollByDistance(n,e)},t.prototype.scrollToTimestamp=function(t,e){var i=pe(this.getDataList(),"timestamp",t);this.scrollToDataIndex(i,e)},t.prototype.zoomAtCoordinate=function(t,e,i){var n=Et(i)&&i>0?i:0,a=this._chartStore.getTimeScaleStore(),r=a.getBarSpace().bar,o=r*t,s=o-r;if(n>0){var l=0,c=new le({duration:n});c.doFrame(function(t){var i=s*(t/n),r=(i-l)/a.getBarSpace().bar*ke;a.zoom(r,e),l=i}),c.start()}else a.zoom(s/r*ke,e)},t.prototype.zoomAtDataIndex=function(t,e,i){var n=this._chartStore.getTimeScaleStore().dataIndexToCoordinate(e);this.zoomAtCoordinate(t,{x:n,y:0},i)},t.prototype.zoomAtTimestamp=function(t,e,i){var n=pe(this.getDataList(),"timestamp",e);this.zoomAtDataIndex(t,n,i)},t.prototype.convertToPixel=function(t,e){var i,n=e.paneId,a=void 0===n?Wi.CANDLE:n,r=e.absolute,o=void 0!==r&&r,s=[];if(a!==Wi.X_AXIS){var l=this.getDrawPaneById(a);if(null!==l){var c=this._chartStore.getTimeScaleStore(),u=l.getBounding(),d=(new Array).concat(t),h=this._xAxisPane.getAxisComponent(),p=l.getAxisComponent();s=d.map(function(t){var e={},i=t.dataIndex;if(Et(t.timestamp)&&(i=c.timestampToDataIndex(t.timestamp)),Et(i)&&(e.x=null===h||void 0===h?void 0:h.convertToPixel(i)),Et(t.value)){var n=null===p||void 0===p?void 0:p.convertToPixel(t.value);e.y=o?u.top+n:n}return e})}}return Ct(t)?s:null!==(i=s[0])&&void 0!==i?i:{}},t.prototype.convertFromPixel=function(t,e){var i,n=e.paneId,a=void 0===n?Wi.CANDLE:n,r=e.absolute,o=void 0!==r&&r,s=[];if(a!==Wi.X_AXIS){var l=this.getDrawPaneById(a);if(null!==l){var c=this._chartStore.getTimeScaleStore(),u=l.getBounding(),d=(new Array).concat(t),h=this._xAxisPane.getAxisComponent(),p=l.getAxisComponent();s=d.map(function(t){var e,i,n={};if(Et(t.x)){var a=null!==(e=null===h||void 0===h?void 0:h.convertFromPixel(t.x))&&void 0!==e?e:-1;n.dataIndex=a,n.timestamp=null!==(i=c.dataIndexToTimestamp(a))&&void 0!==i?i:void 0}if(Et(t.y)){var r=o?t.y-u.top:t.y;n.value=p.convertFromPixel(r)}return n})}}return Ct(t)?s:null!==(i=s[0])&&void 0!==i?i:{}},t.prototype.executeAction=function(t,e){var i;switch(t){case Tt.OnCrosshairChange:var n=K({},e);n.paneId=null!==(i=n.paneId)&&void 0!==i?i:Wi.CANDLE,this._chartStore.getTooltipStore().setCrosshair(n,{notExecuteAction:!0});break}},t.prototype.subscribeAction=function(t,e){this._chartStore.getActionStore().subscribe(t,e)},t.prototype.unsubscribeAction=function(t,e){this._chartStore.getActionStore().unsubscribe(t,e)},t.prototype.getConvertPictureUrl=function(t,e,i){var n=this,a=this._chartContainer.clientWidth,r=this._chartContainer.clientHeight,o=he("canvas",{width:"".concat(a,"px"),height:"".concat(r,"px"),boxSizing:"border-box"}),s=o.getContext("2d"),l=Wt(o);o.width=a*l,o.height=r*l,s.scale(l,l),s.fillStyle=null!==i&&void 0!==i?i:"#FFFFFF",s.fillRect(0,0,a,r);var c=null!==t&&void 0!==t&&t;return this._drawPanes.forEach(function(t){var e=n._separatorPanes.get(t);if(At(e)){var i=e.getBounding();s.drawImage(e.getImage(c),i.left,i.top,i.width,i.height)}var r=t.getBounding();s.drawImage(t.getImage(c),0,r.top,a,r.height)}),o.toDataURL("image/".concat(null!==e&&void 0!==e?e:"jpeg"))},t.prototype.resize=function(){this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.destroy=function(){this._chartEvent.destroy(),this._drawPanes.forEach(function(t){t.destroy()}),this._drawPanes=[],this._separatorPanes.forEach(function(t){t.destroy()}),this._separatorPanes.clear(),this._container.removeChild(this._chartContainer)},t}(),Ca=new Map,ka=1;function Ia(t,e){var i;if(xt(),i=Mt(t)?document.getElementById(t):t,null===i)return bt("","","The chart cannot be initialized correctly. Please check the parameters. The chart container cannot be null and child elements need to be added!!!"),null;var n=Ca.get(i.id);if(At(n))return _t("","","The chart has been initialized on the dom!!!"),n;var a="k_line_chart_".concat(ka++);return n=new Sa(i,e),n.id=a,i.setAttribute("k-line-chart-id",a),Ca.set(a,n),n}var Ea=i(21396),Aa=i.n(Ea);function Pa(t,e,i,n){if(!t||!e||!i||!n)return t;try{var a=Aa().enc.Base64.parse(t),r=Aa().lib.WordArray.create(a.words.slice(0,4)),o=Aa().lib.WordArray.create(a.words.slice(4)),s=Aa().enc.Base64.parse(n),l=Aa().AES.decrypt({ciphertext:o},s,{iv:r,mode:Aa().mode.CBC,padding:Aa().pad.Pkcs7}),c=l.toString(Aa().enc.Utf8);return c||t}catch(u){return t}}function Ma(t,e){return Da.apply(this,arguments)}function Da(){return Da=(0,c.A)((0,l.A)().m(function t(e,i){var n,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e&&i){t.n=1;break}throw new Error("用户ID和指标ID不能为空");case 1:return t.p=1,t.n=2,(0,v.Ay)({url:"/api/indicator/getDecryptKey",method:"post",data:{userid:e,indicatorId:i}});case 2:if(n=t.v,1!==n.code||!n.data||!n.data.key){t.n=3;break}return t.a(2,n.data.key);case 3:throw new Error(n.msg||"获取解密密钥失败");case 4:t.n=6;break;case 5:throw t.p=5,a=t.v,new Error("无法获取解密密钥,请检查网络连接或联系管理员: "+(a.message||"未知错误"));case 6:return t.a(2)}},t,null,[[1,5]])})),Da.apply(this,arguments)}function Ta(t,e,i){return Ba.apply(this,arguments)}function Ba(){return Ba=(0,c.A)((0,l.A)().m(function t(e,i,n){var a;return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,Ma(i,n);case 1:return a=t.v,t.a(2,Pa(e,i,n,a))}},t)})),Ba.apply(this,arguments)}function Fa(t,e){if(1===e||!0===e)return!0;if(t&&t.length>100)try{var i=atob(t);if(i.length>50)return!0}catch(n){}return!1}var Ra={name:"KlineChart",props:{symbol:{type:String,default:""},market:{type:String,default:""},timeframe:{type:String,default:"1H"},theme:{type:String,default:"light"},activeIndicators:{type:Array,default:function(){return[]}},realtimeEnabled:{type:Boolean,default:!1},userId:{type:Number,default:null}},emits:["retry","price-change","load","indicator-toggle"],setup:function(t,e){var i=e.emit,n=(0,h.IJ)([]),a=(0,h.KR)(!1),r=(0,h.KR)(null),s=(0,h.KR)(!1),u=(0,h.KR)(!0),p=null,f=(0,h.KR)(!1),g=(0,h.IJ)(null),m=(0,h.KR)(t.theme||"light"),y=(0,h.KR)(null),b=(0,h.KR)(5e3),x=(0,h.KR)(!1),w=(0,h.KR)(1e4),S=(0,h.KR)(0),C=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(g.value){var e=Date.now(),i=Number(w.value||1e4);(t||!S.value||e-S.value>=i)&&(S.value=e,xt())}},k=(0,h.KR)([]),I=(0,h.KR)([]),E=(0,h.KR)([]),A=(0,h.KR)(null),P=(0,h.nI)(),M=P.proxy,D=(0,h.EW)(function(){return[{name:"line",title:M.$t("dashboard.indicator.drawing.line"),icon:"line"},{name:"horizontalLine",title:M.$t("dashboard.indicator.drawing.horizontalLine"),icon:"minus"},{name:"verticalLine",title:M.$t("dashboard.indicator.drawing.verticalLine"),icon:"column-width"},{name:"ray",title:M.$t("dashboard.indicator.drawing.ray"),icon:"arrow-right"},{name:"straightLine",title:M.$t("dashboard.indicator.drawing.straightLine"),icon:"menu"},{name:"parallelStraightLine",title:M.$t("dashboard.indicator.drawing.parallelLine"),icon:"menu"},{name:"priceLine",title:M.$t("dashboard.indicator.drawing.priceLine"),icon:"dollar"},{name:"priceChannelLine",title:M.$t("dashboard.indicator.drawing.priceChannel"),icon:"border"},{name:"fibonacciLine",title:M.$t("dashboard.indicator.drawing.fibonacciLine"),icon:"rise"},{name:"measure",title:M.$t("dashboard.indicator.drawing.measure"),icon:"drag"}]}),R=(0,h.KR)([{id:"sma",name:"SMA (简单移动平均)",shortName:"SMA",type:"line",defaultParams:{length:20}},{id:"ema",name:"EMA (指数移动平均)",shortName:"EMA",type:"line",defaultParams:{length:20}},{id:"rsi",name:"RSI (相对强弱)",shortName:"RSI",type:"line",defaultParams:{length:14}},{id:"macd",name:"MACD",shortName:"MACD",type:"macd",defaultParams:{fast:12,slow:26,signal:9}},{id:"bb",name:"布林带 (Bollinger Bands)",shortName:"BB",type:"band",defaultParams:{length:20,mult:2}},{id:"atr",name:"ATR (平均真实波幅)",shortName:"ATR",type:"line",defaultParams:{period:14}},{id:"cci",name:"CCI (商品通道指数)",shortName:"CCI",type:"line",defaultParams:{length:20}},{id:"williams",name:"Williams %R (威廉指标)",shortName:"W%R",type:"line",defaultParams:{length:14}},{id:"mfi",name:"MFI (资金流量指标)",shortName:"MFI",type:"line",defaultParams:{length:14}},{id:"adx",name:"ADX (平均趋向指数)",shortName:"ADX",type:"adx",defaultParams:{length:14}},{id:"obv",name:"OBV (能量潮)",shortName:"OBV",type:"line",defaultParams:{}},{id:"adosc",name:"ADOSC (积累/派发振荡器)",shortName:"ADOSC",type:"line",defaultParams:{fast:3,slow:10}},{id:"ad",name:"AD (积累/派发线)",shortName:"AD",type:"line",defaultParams:{}},{id:"kdj",name:"KDJ (随机指标)",shortName:"KDJ",type:"line",defaultParams:{period:9,k:3,d:3}}]),L=function(e){return t.activeIndicators.some(function(t){return t.id===e})},N=function(t){if(g.value){var e={line:"segment",horizontalLine:"horizontalStraightLine",verticalLine:"verticalStraightLine",ray:"rayLine",straightLine:"straightLine",parallelStraightLine:"parallelStraightLine",priceLine:"priceLine",priceChannelLine:"priceChannelLine",fibonacciLine:"fibonacciLine",measure:"priceRangeMeasure"},i=e[t]||t;if(A.value!==t){A.value=t;try{var n=["priceRangeMeasure"];if(n.includes(i)){if("function"!==typeof g.value.overrideOverlay)return void(A.value=null);g.value.overrideOverlay({name:i,lock:!1})}else{var a={name:i,lock:!1,extendData:{isDrawing:!0}},r=g.value.createOverlay(a);r?E.value.push(r):A.value=null}}catch(o){A.value=null}}else{A.value=null;try{"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(s){}}}},O=function(){if(g.value)try{E.value.forEach(function(t){try{"function"===typeof g.value.removeOverlay?g.value.removeOverlay(t):"function"===typeof g.value.removeOverlayById&&g.value.removeOverlayById(t)}catch(e){}}),E.value=[],A.value=null,"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(t){}},z=function(t){var e=L(t.id);if(e)i("indicator-toggle",{action:"remove",indicator:{id:t.id}});else{var n=(0,d.A)((0,d.A)({},t),{},{params:(0,d.A)({},t.defaultParams),calculate:null});i("indicator-toggle",{action:"add",indicator:n})}},V=(0,h.KR)(null),W=(0,h.KR)(!1),H=(0,h.KR)(!1),$=(0,h.KR)(!1),Y=(0,h.EW)(function(){return"dark"===m.value?{backgroundColor:"#141414",textColor:"#d1d4dc",textColorSecondary:"#787b86",borderColor:"#2a2a2a",gridLineColor:"#252525",gridLineColorDashed:"#363c4e",tooltipBg:"rgba(25, 27, 32, 0.95)",tooltipBorder:"#333",tooltipText:"#ccc",tooltipTextSecondary:"#888",axisLabelColor:"#787b86",splitAreaColor:["rgba(250,250,250,0.05)","rgba(200,200,200,0.02)"],dataZoomBorder:"#2a2a2a",dataZoomFiller:"rgba(41, 98, 255, 0.15)",dataZoomHandle:"#13c2c2",dataZoomText:"transparent",dataZoomBg:"#252525"}:{backgroundColor:"#fff",textColor:"#333",textColorSecondary:"#666",borderColor:"#e8e8e8",gridLineColor:"#e8e8e8",gridLineColorDashed:"#e8e8e8",tooltipBg:"rgba(255, 255, 255, 0.95)",tooltipBorder:"#e8e8e8",tooltipText:"#333",tooltipTextSecondary:"#666",axisLabelColor:"#666",splitAreaColor:["rgba(250,250,250,0.05)","rgba(200,200,200,0.02)"],dataZoomBorder:"#e8e8e8",dataZoomFiller:"rgba(24, 144, 255, 0.15)",dataZoomHandle:"#1890ff",dataZoomText:"#999",dataZoomBg:"#f0f2f5"}}),X=function(t){return"dark"===m.value?["#13c2c2","#e040fb","#ffeb3b","#00e676","#ff6d00","#9c27b0"][t%6]:["#13c2c2","#9c27b0","#f57c00","#1976d2","#c2185b","#7b1fa2"][t%6]},K=function(){return new Promise(function(t,e){if(window.pyodide)return V.value=window.pyodide,H.value=!0,void t(window.pyodide);W.value=!0;var i="0.25.0",n=function(t){return t&&t.endsWith("/")?t:t?t+"/":t},a="/assets/pyodide/v".concat(i,"/full/"),r="https://cdn.jsdelivr.net/pyodide/v".concat(i,"/full/"),o=n({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_LOCAL_BASE||a),s=n({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_CDN_BASE||r),u=({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_PREFER_CDN||"").toString().toLowerCase(),d=!u||("true"===u||"1"===u||"yes"===u),h=function(t){return new Promise(function(e,i){var n=document.querySelector('script[data-pyodide-src="'.concat(t,'"]'));if(n)return"function"===typeof window.loadPyodide?e():(n.addEventListener("load",function(){return e()},{once:!0}),void n.addEventListener("error",function(){return i(new Error("Pyodide 脚本加载失败"))},{once:!0}));var a=document.createElement("script");a.dataset.pyodideSrc=t,a.src=t,a.onload=function(){return e()},a.onerror=function(){return i(new Error("Pyodide 脚本加载失败"))},document.head.appendChild(a)})},p=function(){var e=(0,c.A)((0,l.A)().m(function e(i){return(0,l.A)().w(function(e){while(1)switch(e.n){case 0:if("function"===typeof window.loadPyodide){e.n=1;break}throw new Error("loadPyodide 函数未找到");case 1:return e.n=2,window.loadPyodide({indexURL:i});case 2:return window.pyodide=e.v,e.n=3,window.pyodide.loadPackage(["pandas","numpy"]);case 3:V.value=window.pyodide,H.value=!0,W.value=!1,t(window.pyodide);case 4:return e.a(2)}},e)}));return function(t){return e.apply(this,arguments)}}();(0,c.A)((0,l.A)().m(function t(){var e,i,n;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e=function(){var t=(0,c.A)((0,l.A)().m(function t(e){return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,h(e+"pyodide.js");case 1:return t.n=2,p(e);case 2:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}(),t.p=1,!d){t.n=3;break}return t.n=2,e(s);case 2:t.n=4;break;case 3:return t.n=4,e(o);case 4:t.n=9;break;case 5:return t.p=5,i=t.v,t.p=6,t.n=7,e(d?o:s);case 7:t.n=9;break;case 8:throw t.p=8,n=t.v,n||i;case 9:return t.a(2)}},t,null,[[6,8],[1,5]])}))().catch(function(t){W.value=!1,$.value=!0,e(t)})})},j=function(t){if(!t||"string"!==typeof t)return null;try{var e={},i=t.match(/(\w+)\s*=\s*(\d+\.?\d*)/g);return i&&i.forEach(function(t){var i=t.split("=");if(2===i.length){var n=i[0].trim(),a=parseFloat(i[1].trim());isNaN(a)||(e[n]=a)}}),{params:e,plots:[],success:!0}}catch(n){return{params:{},plots:[],success:!1}}},U=function(){var e=(0,c.A)((0,l.A)().m(function e(i,n){var a,r,s,c,u,d,h,p,v,f,g,m,y,_,b,x,w,S,C=arguments;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a=C.length>2&&void 0!==C[2]?C[2]:{},r=C.length>3&&void 0!==C[3]?C[3]:{},H.value&&V.value){e.n=5;break}if(!W.value){e.n=4;break}s=0;case 1:if(!(W.value&&s<30)){e.n=4;break}return e.n=2,new Promise(function(t){return setTimeout(t,500)});case 2:if(s++,!H.value||!V.value){e.n=3;break}return e.a(3,4);case 3:e.n=1;break;case 4:if(H.value&&V.value){e.n=5;break}throw W.value?(W.value=!1,$.value=!0):$.value=!0,new Error("Python 引擎未就绪,请等待加载完成");case 5:if(e.p=5,c=i,u=r.is_encrypted||r.isEncrypted||0,!u&&!Fa(i,u)){e.n=11;break}if(d=r.user_id||r.userId||t.userId||a.userId,h=r.originalId||r.id||a.indicatorId,!d||!h){e.n=10;break}return e.p=6,e.n=7,Ta(c,d,h);case 7:c=e.v,e.n=9;break;case 8:throw e.p=8,x=e.v,new Error("代码解密失败,无法执行指标: "+(x.message||"未知错误"));case 9:e.n=11;break;case 10:throw new Error("缺少必要的解密参数(用户ID或指标ID),无法执行加密指标");case 11:return p=n.map(function(t){var e=t.timestamp||t.time;return e<1e10&&(e*=1e3),{time:Math.floor(e/1e3),open:parseFloat(t.open)||0,high:parseFloat(t.high)||0,low:parseFloat(t.low)||0,close:parseFloat(t.close)||0,volume:parseFloat(t.volume)||0}}),v=JSON.stringify(p),f=JSON.stringify(a||{}),g=v.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),m=f.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),y="\nimport json\nimport pandas as pd\nimport numpy as np\n\n# 递归清理 NaN 值的函数\ndef clean_nan(obj):\n if isinstance(obj, dict):\n return {k: clean_nan(v) for k, v in obj.items()}\n elif isinstance(obj, list):\n return [clean_nan(item) for item in obj]\n elif isinstance(obj, (pd.Series, np.ndarray)):\n return [None if (isinstance(x, float) and (np.isnan(x) or np.isinf(x))) else x for x in obj]\n elif isinstance(obj, (float, np.floating)):\n if np.isnan(obj) or np.isinf(obj):\n return None\n return float(obj)\n elif pd.isna(obj):\n return None\n else:\n return obj\n\n# 接收 JSON 数据\nraw_data = json.loads('".concat(g,"')\nparams = json.loads('").concat(m,"')\n\n# 将前端参数注入为指标代码可直接使用的变量(对齐回测/实盘执行环境)\n# 兼容多种命名(snake_case / camelCase)\ndef _get_param(key, default=None):\n if key in params:\n return params.get(key, default)\n # camelCase fallback\n camel = ''.join([key.split('_')[0]] + [p.capitalize() for p in key.split('_')[1:]])\n return params.get(camel, default)\n\ntry:\n leverage = float(_get_param('leverage', 1) or 1)\nexcept Exception:\n leverage = 1\n\ntrade_direction = _get_param('trade_direction', _get_param('tradeDirection', 'both')) or 'both'\n\ntry:\n initial_position = int(_get_param('initial_position', 0) or 0)\nexcept Exception:\n initial_position = 0\n\ntry:\n initial_avg_entry_price = float(_get_param('initial_avg_entry_price', 0.0) or 0.0)\nexcept Exception:\n initial_avg_entry_price = 0.0\n\ntry:\n initial_position_count = int(_get_param('initial_position_count', 0) or 0)\nexcept Exception:\n initial_position_count = 0\n\ntry:\n initial_last_add_price = float(_get_param('initial_last_add_price', 0.0) or 0.0)\nexcept Exception:\n initial_last_add_price = 0.0\n\ntry:\n initial_highest_price = float(_get_param('initial_highest_price', 0.0) or 0.0)\nexcept Exception:\n initial_highest_price = 0.0\n\n# 转换为 DataFrame\ndf = pd.DataFrame(raw_data)\n\n# 转换数据类型\ndf['open'] = df['open'].astype(float)\ndf['high'] = df['high'].astype(float)\ndf['low'] = df['low'].astype(float)\ndf['close'] = df['close'].astype(float)\ndf['volume'] = df['volume'].astype(float)\n\n# 用户代码(已解密)\n").concat(c,"\n\n# 构造输出(如果用户没有定义 output,则尝试从 result_json 获取)\nif 'output' not in locals():\n if 'result_json' in locals():\n output = json.loads(result_json)\n else:\n output = {\"plots\": []}\nelse:\n # 确保 output 是字典格式\n if isinstance(output, str):\n output = json.loads(output)\n\n# 清理 output 中的所有 NaN 值\noutput = clean_nan(output)\n\n# 返回 JSON 字符串\njson.dumps(output)\n"),e.n=12,V.value.runPythonAsync(y);case 12:if(_=e.v,_&&"string"===typeof _){e.n=13;break}throw new Error("Python 代码执行后未返回有效的 JSON 字符串,返回类型: ".concat((0,o.A)(_)));case 13:e.p=13,b=JSON.parse(_),e.n=15;break;case 14:throw e.p=14,w=e.v,new Error("JSON 解析失败: ".concat(w.message,"。可能是数据中包含 NaN 或其他无效值。"));case 15:if(b){e.n=16;break}return e.a(2,{plots:[],signals:[],calculatedVars:{}});case 16:return b.plots&&Array.isArray(b.plots)||(b.plots=[]),b.plots=b.plots.map(function(t){return t.data&&Array.isArray(t.data)&&(t.data=t.data.map(function(t){return null===t||void 0===t||"number"===typeof t&&isNaN(t)?null:t})),t}),b.signals&&Array.isArray(b.signals)&&(b.signals=b.signals.map(function(t){return t.data&&Array.isArray(t.data)&&(t.data=t.data.map(function(t){return null===t||void 0===t||"number"===typeof t&&isNaN(t)?null:t})),t})),b.calculatedVars||(b.calculatedVars={}),e.a(2,b);case 17:throw e.p=17,S=e.v,new Error("Python 执行失败: ".concat(S.message));case 18:return e.a(2)}},e,null,[[13,14],[6,8],[5,17]])}));return function(t,i){return e.apply(this,arguments)}}();function G(t,e){for(var i=[],n=0;nn-e+1){var c=(t[o-1].high+t[o-1].low+t[o-1].close)/3;s>c?a+=l:sp&&h>0?o.push(h):o.push(0),p>h&&p>0?s.push(p):s.push(0)}for(var v=[],f=[],g=[],m=0;m=e-1){var w=v[m],S=f[m],C=g[m];if(0===w?(i.push(0),n.push(0)):(i.push(S/w*100),n.push(C/w*100)),m>=e-1){var k=i[m]+n[m],I=0===k?0:Math.abs(i[m]-n[m])/k*100;if(m===e-1)a.push(I);else if(m===e){var E=Math.abs(i[m-1]-n[m-1])/(i[m-1]+n[m-1])*100;a.push((E+I)/2)}else a.push((a[m-1]*(e-1)+I)/e)}}}return{adx:a,plusDI:i,minusDI:n}}function nt(t){for(var e=[],i=0,n=0;nt[n-1].close?i+=t[n].volume:t[n].close255?12:7)},0),m=g+2*h,y=v+2*p,_=(null===(i=r.extendData)||void 0===i?void 0:i.side)||(null===(n=r.extendData)||void 0===n?void 0:n.type)||"buy",b="buy"===_,x=b?u:u-y,w=d,S=w,C=b?x:x+y;return[{type:"line",attrs:{coordinates:[{x:c,y:S},{x:c,y:C}]},styles:{style:"stroke",color:l,dashedValue:[2,2]},ignoreEvent:!0},{type:"circle",attrs:{x:c,y:w,r:4},styles:{style:"fill",color:l},ignoreEvent:!0},{type:"rect",attrs:{x:c-m/2,y:x,width:m,height:y,r:4},styles:{style:"fill",color:l,borderSize:0},ignoreEvent:!0},{type:"text",attrs:{x:c,y:x+y/2,text:f,align:"center",baseline:"middle"},styles:{color:"#ffffff",size:v,weight:"bold",backgroundColor:l,borderRadius:5},ignoreEvent:!0}]}}),Ni({name:"priceRangeMeasure",totalStep:2,lock:!1,needDefaultPointFigure:!1,needDefaultXAxisFigure:!1,needDefaultYAxisFigure:!1,createPointFigures:function(t){var e=t.coordinates,i=t.overlay,n=t.ctx;if(!e[0]||!e[1])return[];var a=i.points[0],r=i.points[1];if(!a||!r)return[];var o=a.value,s=r.value,l=s-o,c=l/o*100,u=a.timestamp,d=r.timestamp,h=Math.abs(d-u),p="",v=Math.floor(h/864e5),f=Math.floor(h%864e5/36e5),g=Math.floor(h%36e5/6e4),m=Math.floor(h%6e4/1e3);p=v>0?"".concat(v,"天").concat(f>0?f+"小时":""):f>0?"".concat(f,"小时").concat(g>0?g+"分钟":""):g>0?"".concat(g,"分钟"):"".concat(m,"秒");var y=0;try{if(n&&n.chart){var _=n.chart.getData();if(_&&Array.isArray(_)&&_.length>0){var b=_.findIndex(function(t){return Math.abs(t.timestamp-u)<1e3}),x=_.findIndex(function(t){return Math.abs(t.timestamp-d)<1e3});b>=0&&x>=0&&(y=Math.abs(x-b))}}}catch(z){}var w=c>=0?"+".concat(c.toFixed(2),"%"):"".concat(c.toFixed(2),"%"),S=l>=0?"+".concat(l.toFixed(2)):"".concat(l.toFixed(2)),C="".concat(w," ").concat(S);y>0?(C+=" (".concat(y,"根"),p&&(C+=" / ".concat(p)),C+=")"):p&&(C+=" (".concat(p,")"));var k=l>=0,I=k?"#0ecb81":"#f6465d",E=k?"#0ecb81":"#f6465d",A=k?"rgba(14, 203, 129, 0.1)":"rgba(246, 70, 93, 0.1)",P=e[0].x,M=e[0].y,D=e[1].x,T=e[1].y,B=(P+D)/2,F=(M+T)/2,R=-20,L=12,N=7*C.length+16,O=L+8;return[{type:"line",attrs:{coordinates:[{x:P,y:M},{x:D,y:T}]},styles:{style:"stroke",color:I,size:2,dashedValue:[4,4]},ignoreEvent:!1},{type:"circle",attrs:{x:P,y:M,r:4},styles:{style:"fill",color:I},ignoreEvent:!1},{type:"circle",attrs:{x:D,y:T,r:4},styles:{style:"fill",color:I},ignoreEvent:!1},{type:"rect",attrs:{x:B-N/2,y:F+R-O/2,width:N,height:O,r:4},styles:{style:"fill",color:A,borderSize:1,borderColor:I},ignoreEvent:!1},{type:"text",attrs:{x:B,y:F+R,text:C,align:"center",baseline:"middle"},styles:{color:E,size:L,weight:"bold"},ignoreEvent:!1}]}});var st=function(t){return t.map(function(t){var e=t.time||t.timestamp;return"string"===typeof e&&(e=parseInt(e)),e<1e10&&(e*=1e3),{timestamp:e,open:parseFloat(t.open),high:parseFloat(t.high),low:parseFloat(t.low),close:parseFloat(t.close),volume:parseFloat(t.volume||0)}}).filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)}).sort(function(t,e){return t.timestamp-e.timestamp})},lt=function(t){if(t.length>0){var e=t[t.length-1];if(t.length>1){var n=t[t.length-2],a=e.close.toFixed(2),r=(e.close-n.close)/n.close*100;i("price-change",{price:a,change:r})}else{var o=e.close.toFixed(2);i("price-change",{price:o,change:0})}}},ct=function(t){return t.map(function(t){return{time:Math.floor(t.timestamp/1e3),open:t.open,high:t.high,low:t.low,close:t.close,volume:t.volume}})},ut=function(t,e,i){var n=new Date(1e3*t),a=new Date(1e3*e);switch(i){case"1m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&n.getMinutes()===a.getMinutes();case"5m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/5)===Math.floor(a.getMinutes()/5);case"15m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/15)===Math.floor(a.getMinutes()/15);case"30m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/30)===Math.floor(a.getMinutes()/30);case"1H":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours();case"4H":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&Math.floor(n.getHours()/4)===Math.floor(a.getHours()/4);case"1D":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate();case"1W":var r=Math.floor((n.getTime()-new Date(n.getFullYear(),0,1).getTime())/6048e5),o=Math.floor((a.getTime()-new Date(a.getFullYear(),0,1).getTime())/6048e5);return n.getFullYear()===a.getFullYear()&&r===o;default:return t===e}},dt=function(){var e=(0,c.A)((0,l.A)().m(function e(){var i,o,s,c,d,p,f,m=arguments;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(i=m.length>0&&void 0!==m[0]&&m[0],t.symbol){e.n=1;break}return e.a(2);case 1:if(!a.value||i){e.n=2;break}return e.a(2);case 2:return a.value=!0,r.value=null,e.p=3,o=[],e.p=4,e.n=5,(0,v.Ay)({url:"/api/indicator/kline",method:"get",params:{market:t.market,symbol:t.symbol,timeframe:t.timeframe,limit:500}});case 5:if(s=e.v,1!==s.code||!s.data||!Array.isArray(s.data)){e.n=6;break}o=st(s.data),e.n=7;break;case 6:throw c=s.msg||"获取K线数据失败","tiingo_subscription"===s.hint&&(c=M.$t("dashboard.indicator.error.tiingoSubscription")||"Forex 1-minute data requires Tiingo paid subscription"),new Error(c);case 7:e.n=9;break;case 8:throw e.p=8,p=e.v,p;case 9:if(o&&0!==o.length){e.n=10;break}throw new Error("未获取到K线数据");case 10:n.value=o,u.value=!0,d=ct(o),lt(d),(0,h.dY)(function(){if(g.value){var e=n.value.filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)});if(e.length>0&&g.value){try{g.value.applyNewData(e)}catch(i){g.value.applyNewData(e)}setTimeout(function(){g.value&&xt()},100)}}else mt();t.realtimeEnabled&&(gt(),ft())}),e.n=12;break;case 11:if(e.p=11,f=e.v,r.value=M.$t("dashboard.indicator.error.loadDataFailed")+": "+(f.message||M.$t("dashboard.indicator.error.loadDataFailedDesc")),n.value=[],g.value)try{g.value.applyNewData([])}catch(l){}case 12:return e.p=12,a.value=!1,e.f(12);case 13:return e.a(2)}},e,null,[[4,8],[3,11,12,13]])}));return function(){return e.apply(this,arguments)}}(),ht=function(){var e=(0,c.A)((0,l.A)().m(function e(i){return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.symbol&&n.value&&0!==n.value.length){e.n=1;break}return e.a(2);case 1:if(!s.value&&!p){e.n=6;break}if(!p){e.n=5;break}return e.p=2,e.n=3,p;case 3:e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2);case 6:if(u.value){e.n=7;break}return g.value&&"function"===typeof g.value.noMoreData&&g.value.noMoreData(),e.a(2);case 7:return s.value=!0,p=(0,c.A)((0,l.A)().m(function e(){var a,r,o,c,d,f;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.n=1,(0,h.dY)();case 1:return e.p=1,a=Math.floor(i/1e3),e.n=2,(0,v.Ay)({url:"/api/indicator/kline",method:"get",params:{market:t.market,symbol:t.symbol,timeframe:t.timeframe,limit:500,before_time:a}});case 2:if(r=e.v,1!==r.code||!r.data||!Array.isArray(r.data)){e.n=5;break}if(o=st(r.data),0!==o.length){e.n=3;break}return u.value=!1,g.value&&"function"===typeof g.value.noMoreData&&g.value.noMoreData(),e.a(2);case 3:if(c=o.filter(function(t){return t.timestamp0&&(a=st(i.data),r=(0,F.A)(n.value),a.length>0&&(o=Math.floor(a[a.length-1].timestamp/1e3),s=Math.floor(r[r.length-1].timestamp/1e3),ut(o,s,t.timeframe)?(c=r[r.length-1],u=a[a.length-1],r[r.length-1]={timestamp:c.timestamp,open:c.open,high:Math.max(c.high,u.high),low:Math.min(c.low,u.low),close:u.close,volume:u.volume},n.value=r,d=ct(n.value),lt(d),g.value&&"function"===typeof g.value.updateData?(h=n.value.length-1,g.value.updateData(r[h]),C(!1)):g.value&&(g.value.applyNewData(n.value),C(!1))):o>s&&(p=a.filter(function(e){var i=Math.floor(e.timestamp/1e3);return!r.some(function(e){var n=Math.floor(e.timestamp/1e3);return ut(i,n,t.timeframe)})}),p.length>0&&(n.value=[].concat((0,F.A)(r),(0,F.A)(p)),n.value.length>500&&(n.value=n.value.slice(-500)),f=ct(n.value),lt(f),g.value&&"function"===typeof g.value.applyMoreData?(g.value.applyMoreData(p),C(!0)):g.value&&(g.value.applyNewData(n.value),C(!0)))))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}));return function(){return e.apply(this,arguments)}}(),ft=function(){y.value&&clearInterval(y.value);var e={"1m":5e3,"5m":1e4,"15m":15e3,"30m":3e4,"1H":6e4,"4H":3e5,"1D":6e5,"1W":18e5},i=e[t.timeframe]||1e4;b.value=Math.min(i,1e3),t.realtimeEnabled&&t.symbol&&n.value.length>0&&(y.value=setInterval(function(){!a.value&&t.symbol&&n.value&&n.value.length>0&&vt()},b.value))},gt=function(){y.value&&(clearInterval(y.value),y.value=null)},mt=function(){var t=document.getElementById("kline-chart-container");if(t)if(0!==t.clientWidth&&0!==t.clientHeight){if(g.value){try{g.value.destroy()}catch(y){}g.value=null}try{var e=document.getElementById("kline-chart-container");if(!e)throw new Error("容器元素不存在");try{g.value=Ia(e,{drawingBarVisible:!0,overlay:{visible:!0}})}catch(y){g.value=Ia(e)}if(g.value&&"function"===typeof g.value.setDrawingBarVisible?g.value.setDrawingBarVisible(!0):g.value&&"function"===typeof g.value.setDrawingBar?g.value.setDrawingBar(!0):g.value&&"function"===typeof g.value.enableDrawing&&g.value.enableDrawing(!0),!g.value)throw new Error("图表初始化失败:无法创建图表实例");if(g.value&&("function"===typeof g.value.setDrawingBarVisible&&g.value.setDrawingBarVisible(!0),"function"===typeof g.value.setDrawingBar&&g.value.setDrawingBar(!0),"function"===typeof g.value.enableDrawing&&g.value.enableDrawing(!0)),_t(),g.value&&"function"===typeof g.value.subscribeAction){if(g.value.subscribeAction("onOverlayCreated",function(t){if(A.value&&t&&t.id){var e={line:"segment",horizontalLine:"horizontalStraightLine",verticalLine:"verticalStraightLine",ray:"rayLine",straightLine:"straightLine",parallelStraightLine:"parallelStraightLine",priceLine:"priceLine",priceChannelLine:"priceChannelLine",fibonacciLine:"fibonacciLine",measure:"priceRangeMeasure"},i=e[A.value];if(!t.name||t.name===i||"priceRangeMeasure"===i){E.value.push(t.id),A.value=null;try{"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(y){}}}}),"function"===typeof g.value.subscribeAction)try{g.value.subscribeAction("onOverlayComplete",function(t){A.value&&t&&t.id&&(E.value.push(t.id),A.value=null)})}catch(y){}g.value.subscribeAction("onOverlayRemoved",function(t){var e=E.value.indexOf(t);e>-1&&E.value.splice(e,1)})}if(g.value&&"function"===typeof g.value.subscribeAction){var i=null,a=!1;g.value.subscribeAction("onVisibleRangeChange",function(){var t=(0,c.A)((0,l.A)().m(function t(e){var r,o,c,d,h,v;return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:if(!e||"number"!==typeof e.from){t.n=5;break}if(a){t.n=1;break}return i=e.from,a=!0,setTimeout(function(){f.value=!0},1e3),t.a(2);case 1:if(f.value){t.n=2;break}return i=e.from,t.a(2);case 2:if(!(s.value&&e.from<=0)){t.n=3;break}try{g.value&&"function"===typeof g.value.setVisibleRange&&(r=n.value.length,r>0&&(o=g.value.getVisibleRange(),o&&(c=Math.ceil((o.to-o.from)*r/100),d=.1,h=Math.min(100,d+c/r*100),g.value.setVisibleRange(d,h))))}catch(y){}return t.a(2);case 3:if(!(e.from<=5&&!s.value&&!p&&u.value&&f.value)){t.n=4;break}if(!(null!==i&&i>e.from)){t.n=4;break}if(!(n.value.length>0)){t.n=4;break}return v=n.value[0].timestamp,t.n=4,ht(v);case 4:i=e.from;case 5:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}())}if(n.value&&n.value.length>0){var o=n.value.filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)});if(o.length>0){try{g.value.applyNewData(o)}catch(y){try{g.value.applyNewData(o)}catch(_){}}try{g.value.createIndicator("VOL",!1,{height:100,dragEnabled:!0})}catch(y){}(0,h.dY)(function(){xt()})}}window.addEventListener("resize",yt)}catch(r){r.value=M.$t("dashboard.indicator.error.chartInitFailed")+": "+(r.message||"未知错误")}}else{var d=0,v=10,m=function(){var t=document.getElementById("kline-chart-container");t&&t.clientWidth>0&&t.clientHeight>0?mt():d0&&t.clientHeight>0&&mt()}},_t=function(){if(g.value){var t=Y.value,e="dark"===m.value;g.value.setStyles({grid:{show:!0,horizontal:{show:!0,color:t.gridLineColor,style:"dashed",size:1},vertical:{show:!1}},candle:{priceMark:{show:!0,high:{show:!0,color:t.axisLabelColor},low:{show:!0,color:t.axisLabelColor}},tooltip:{showRule:"always",showType:"standard",labels:[M.$t("dashboard.indicator.tooltip.time"),M.$t("dashboard.indicator.tooltip.open"),M.$t("dashboard.indicator.tooltip.high"),M.$t("dashboard.indicator.tooltip.low"),M.$t("dashboard.indicator.tooltip.close"),M.$t("dashboard.indicator.tooltip.volume")],values:function(t){var e=new Date(t.timestamp);return["".concat(e.getFullYear(),"-").concat(e.getMonth()+1,"-").concat(e.getDate()," ").concat(e.getHours(),":").concat(e.getMinutes()),t.open.toFixed(2),t.high.toFixed(2),t.low.toFixed(2),t.close.toFixed(2),t.volume.toFixed(0)]}},bar:{upColor:e?"#0ecb81":"#13c2c2",downColor:e?"#f6465d":"#fa541c",noChangeColor:t.borderColor}},indicator:{tooltip:{showRule:"always",showType:"standard"}},xAxis:{show:!0,axisLine:{show:!0,color:t.borderColor}},yAxis:{show:!0,axisLine:{show:!1}},crosshair:{show:!0,horizontal:{show:!0,line:{show:!0,style:"dashed",color:t.gridLineColor,size:1}},vertical:{show:!0,line:{show:!0,style:"dashed",color:t.gridLineColor,size:1}}},watermark:{show:!1}})}},bt=function(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,r=arguments.length>5&&void 0!==arguments[5]&&arguments[5];try{var o={name:t,shortName:t,calc:e,figures:i,calcParams:n,precision:a,series:r?"price":"normal"};return ai(o),!0}catch(s){return!(!s.message||!s.message.includes("already registered"))}},xt=function(){var e=(0,c.A)((0,l.A)().m(function e(){var i,a,r,o;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!x.value){e.n=1;break}return e.a(2);case 1:if(g.value&&0!==n.value.length){e.n=2;break}return e.a(2);case 2:x.value=!0,e.p=3;try{I.value.length>0&&g.value&&(I.value.forEach(function(t){try{"function"===typeof g.value.removeOverlay?g.value.removeOverlay(t):"function"===typeof g.value.removeOverlayById&&g.value.removeOverlayById(t)}catch(e){}}),I.value=[])}catch(s){}try{k.value.length>0&&(k.value.forEach(function(t){var e="string"===typeof t?t:t.name,i="string"===typeof t?void 0:t.paneId;i?g.value.removeIndicator(i,e):(g.value.removeIndicator("candle_pane",e),g.value.removeIndicator(e))}),k.value=[])}catch(s){}i=ct(n.value),a=(0,l.A)().m(function e(){var n,a,r,s,c,u,d,h,p,v,f,m,y,b,x,w,S,C,E,A,P,M,D,T,R,L,N,O,z,V,H,Y,K,j,st,lt,ct,ut,dt,ht,pt,vt,ft,gt,mt,yt,_t,xt,wt,St,Ct,kt,It,Et,At,Pt,Mt,Dt,Tt,Bt,Ft,Rt,Lt,Nt,Ot,zt,Vt,Wt,Ht,$t,Yt,Xt,Kt,jt,Ut,Gt,Zt,qt,Jt,Qt,te,ee,ie,ne,ae,re,oe,se,le,ce,ue,de,he,pe,ve,fe,ge,me,ye,_e,be,xe,we,Se,Ce,ke,Ie,Ee,Ae,Pe,Me,De,Te,Be,Fe,Re,Le,Ne,Oe,ze,Ve,We,He,$e,Ye,Xe,Ke,je,Ue,Ge,Ze,qe,Je,Qe,ti,ei,ii,ni,ai,ri,oi,si,li,ci,ui,di,hi,pi,vi,fi,gi,mi,yi,_i;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(n=t.activeIndicators[o],e.p=1,"python"!==n.type){e.n=31;break}if(n.code){e.n=2;break}return e.a(2,0);case 2:if(e.p=2,!n.calculate||"function"!==typeof n.calculate){e.n=15;break}return e.n=3,n.calculate(i,n.params||{});case 3:if(a=e.v,r=[],a&&a.plots&&Array.isArray(a.plots)&&(r=(0,F.A)(a.plots)),!(a&&a.signals&&Array.isArray(a.signals))){e.n=14;break}s=(0,_.A)(a.signals),e.p=4,s.s();case 5:if((c=s.n()).done){e.n=11;break}if(u=c.value,!(u.data&&Array.isArray(u.data)&&u.data.length>0)){e.n=10;break}for(d=[],h=0;h0&&g.value){M=(0,_.A)(v);try{for(M.s();!(D=M.n()).done;){T=D.value;try{R=T.timestamp,R<1e10&&(R*=1e3),L=T.text,"function"===typeof g.value.createOverlay&&(N=g.value.createOverlay({name:"signalTag",points:[{timestamp:R,value:T.price},{timestamp:R,value:T.anchorPrice}],extendData:{text:L,color:T.color,side:T.side,action:T.action,price:T.price},lock:!0},"candle_pane"),N&&I.value.push(N))}catch(l){}}}catch(bi){M.e(bi)}finally{M.f()}}case 10:e.n=5;break;case 11:e.n=13;break;case 12:e.p=12,mi=e.v,s.e(mi);case 13:return e.p=13,s.f(),e.f(13);case 14:if(r.length>0&&(O=r.filter(function(t){return t.data&&Array.isArray(t.data)&&t.data.length>0}),O.length>0)){for(z=[],V={},H=0;H0)){e.n=23;break}for(xt=[],wt=0;wt0&&g.value){Lt=(0,_.A)(Ct);try{for(Lt.s();!(Nt=Lt.n()).done;){Ot=Nt.value;try{zt=Ot.timestamp,zt<1e10&&(zt*=1e3),Vt=Ot.text,"function"===typeof g.value.createOverlay&&(Wt=g.value.createOverlay({name:"signalTag",points:[{timestamp:zt,value:Ot.price},{timestamp:zt,value:Ot.anchorPrice}],extendData:{text:Vt,color:Ot.color,side:Ot.side,action:Ot.action,price:Ot.price},lock:!0},"candle_pane"),Wt&&I.value.push(Wt))}catch(l){}}}catch(bi){Lt.e(bi)}finally{Lt.f()}}case 23:e.n=18;break;case 24:e.n=26;break;case 25:e.p=25,yi=e.v,mt.e(yi);case 26:return e.p=26,mt.f(),e.f(26);case 27:if(gt.length>0&&(Ht=gt.filter(function(t){return t.data&&Array.isArray(t.data)&&t.data.length>0}),Ht.length>0)){for($t=[],Yt={},Xt=0;Xt0&&(0,h.dY)(function(){g.value&&xt()})},{deep:!0}),(0,h.wB)(function(){return t.realtimeEnabled},function(t){t?ft():gt()}),(0,h.sV)((0,c.A)((0,l.A)().m(function e(){return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.n=1,(0,h.dY)();case 1:return!t.theme||"dark"!==t.theme&&"light"!==t.theme||(m.value=t.theme),e.p=2,e.n=3,K();case 3:e.n=5;break;case 4:e.p=4,e.v,$.value=!0;case 5:(0,h.dY)(function(){setTimeout(function(){!g.value&&t.symbol&&mt()},300)});case 6:return e.a(2)}},e,null,[[2,4]])}))),(0,h.xo)(function(){gt(),g.value&&(g.value.destroy(),g.value=null),window.removeEventListener("resize",yt)}),{klineData:n,loading:a,error:r,loadingHistory:s,chartRef:g,chartTheme:m,themeConfig:Y,getIndicatorColor:X,handleRetry:wt,loadingPython:W,pythonReady:H,pyodideLoadFailed:$,formatKlineData:st,updatePricePanel:lt,isSameTimeframe:ut,loadKlineData:dt,loadMoreHistoryData:pt,updateKlineRealtime:vt,startRealtime:ft,stopRealtime:gt,initChart:mt,handleResize:yt,updateChartTheme:_t,updateIndicators:xt,executePythonStrategy:U,parsePythonStrategy:j,indicatorButtons:R,isIndicatorActive:L,toggleIndicator:z,drawingTools:D,activeDrawingTool:A,selectDrawingTool:N,clearAllDrawings:O}}},La=Ra,Na=(0,E.A)(La,M,D,!1,null,"58f93984",null),Oa=Na.exports,za=i(32945),Va={name:"DashboardIndicator",components:{IndicatorEditor:P,KlineChart:Oa,QuickTradePanel:za.A},computed:(0,d.A)((0,d.A)({},(0,p.aH)({navTheme:function(t){return t.app.theme}})),{},{chartTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme?"dark":"light"},isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),setup:function(){var t=(0,h.nI)(),e=t||{},i=e.proxy,n=(0,h.KR)(1),a=(0,h.KR)(!1),p=(0,h.KR)(void 0),m=(0,h.KR)([]),y=(0,h.KR)([]),_=(0,h.KR)(!1),b=(0,h.KR)(""),x=(0,h.KR)(!1),w=(0,h.KR)(!1),S=(0,h.KR)(!1),C=(0,h.KR)(""),k=(0,h.KR)(""),I=(0,h.KR)([]),E=(0,h.KR)(!1),A=(0,h.KR)([]),P=(0,h.KR)(!1),M=(0,h.KR)(null),D=(0,h.KR)(null),T=(0,h.KR)([]),B=(0,h.KR)(!1),F=(0,h.KR)(!1),R=(0,h.KR)(""),L=(0,h.KR)(""),N=(0,h.KR)(0),O=(0,h.EW)(function(){return"crypto"===(Y.value||"").toLowerCase()}),z=function(){O.value?(R.value=$.value||"",N.value=parseFloat(X.value)||0,L.value="",F.value=!0):u.A.warning(i.$t("quickTrade.cryptoOnly"))},V=function(){u.A.success(i.$t("quickTrade.orderSuccess"))},W=function(t){t&&O.value&&(R.value=t)},H=function(){i&&i.$router&&i.$router.push("/indicator-community")},$=(0,h.KR)(""),Y=(0,h.KR)(""),X=(0,h.KR)("--"),K=(0,h.KR)(0),j=(0,h.EW)(function(){return K.value>0?"color-up":K.value<0?"color-down":""}),U=(0,h.KR)("1D"),G=(0,h.KR)([]),Z=(0,h.KR)(!1),q=[{id:"sma5",name:"SMA5 (5日均线)",shortName:"SMA5",type:"line",defaultParams:{length:5}},{id:"sma10",name:"SMA10 (10日均线)",shortName:"SMA10",type:"line",defaultParams:{length:10}},{id:"sma20",name:"SMA20 (20日均线)",shortName:"SMA20",type:"line",defaultParams:{length:20}},{id:"sma30",name:"SMA30 (30日均线)",shortName:"SMA30",type:"line",defaultParams:{length:30}}],J=[{id:"ema5",name:"EMA5 (5日指数均线)",shortName:"EMA5",type:"line",defaultParams:{length:5}},{id:"ema10",name:"EMA10 (10日指数均线)",shortName:"EMA10",type:"line",defaultParams:{length:10}},{id:"ema20",name:"EMA20 (20日指数均线)",shortName:"EMA20",type:"line",defaultParams:{length:20}},{id:"ema30",name:"EMA30 (30日指数均线)",shortName:"EMA30",type:"line",defaultParams:{length:30}}],Q=(0,h.KR)([]),tt=(0,h.KR)([]),et=(0,h.KR)(!1),it=(0,h.KR)(!1),nt=(0,h.KR)(null),at=(0,h.KR)(""),rt=(0,h.KR)([]),ot=(0,h.KR)({}),st=(0,h.KR)(!1),lt=(0,h.KR)({}),ct=(0,h.KR)(!1),ut=(0,h.KR)(!1),dt=(0,h.KR)(!1),ht=(0,h.KR)(null),pt=(0,h.KR)(!1),vt=(0,h.KR)(null),ft=(0,h.KR)(!1),gt=(0,h.KR)(null),mt=(0,h.KR)(!1),yt=(0,h.KR)(null),_t=(0,h.KR)(!1),bt=(0,h.KR)(null),xt=(0,h.KR)(!1),wt=(0,h.KR)(!1),St=(0,h.KR)("free"),Ct=(0,h.KR)(10),kt=(0,h.KR)(""),It=(0,h.KR)(!1),Et={price:[{required:!0,message:"请输入价格",trigger:"blur",type:"number"}]},At=(0,h.KR)(!1),Pt=function(t){var e=t.price,i=t.change;X.value=e,K.value=i},Mt=function(){},Dt=(0,h.KR)([]),Tt=(0,h.KR)([]),Bt=function(t){U.value=t},Ft=function(t){return t?Object.values(t).join(", "):""},Rt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,i,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a.value=!0,t.p=1,r=(0,h.nI)(),o=null===r||void 0===r||null===(e=r.proxy)||void 0===e?void 0:e.$store,s=(null===o||void 0===o||null===(i=o.getters)||void 0===i?void 0:i.userInfo)||{},!s||!s.email){t.n=2;break}return n.value=s.id,a.value=!1,Lt(),ae(),t.a(2);case 2:return t.n=3,(0,g.ug)();case 3:c=t.v,c&&1===c.code&&c.data&&(n.value=c.data.id,o&&o.commit("SET_INFO",c.data),Lt(),ae()),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.p=5,a.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[1,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),Lt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return t.a(2);case 1:return _.value=!0,t.p=2,t.n=3,(0,f.Qo)({userid:n.value});case 3:e=t.v,e&&1===e.code&&e.data&&(y.value=e.data.map(function(t){return(0,d.A)((0,d.A)({},t),{},{label:t.symbol+(t.name?" (".concat(t.name,")"):""),value:"".concat(t.market,":").concat(t.symbol)})}),Nt(),y.value.length>0&&!$.value&&(a=y.value[0],Y.value=a.market,$.value=a.symbol,p.value=a.value)),t.n=5;break;case 4:t.p=4,t.v,u.A.error(i.$t("dashboard.indicator.error.loadWatchlistFailed"));case 5:return t.p=5,_.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),Nt=function(){b.value?m.value=y.value.filter(function(t){return t.symbol.toLowerCase().includes(b.value.toLowerCase())||t.name&&t.name.toLowerCase().includes(b.value.toLowerCase())}):m.value=y.value},Ot=function(t){b.value=t,0===y.value.length&&t&&(x.value=!0),Nt()},zt=function(t){x.value=t,t||(b.value="")},Vt=function(t){if("__empty_watchlist_hint__"!==t){if("__add_stock_option__"===t)return w.value=!0,void setTimeout(function(){p.value=void 0},0);var e=y.value.find(function(e){return e.value===t});if(e||(e=m.value.find(function(e){return e.value===t})),!e&&t.includes(":")){var i=t.split(":"),n=(0,s.A)(i,2),a=n[0],r=n[1];e={market:a,symbol:r,value:t}}e&&(Y.value=e.market,$.value=e.symbol,p.value=e.value)}},Wt=function(t,e){var i,n=(null===(i=e.componentOptions)||void 0===i||null===(i=i.propsData)||void 0===i?void 0:i.value)||"";return"__empty_watchlist_hint__"===n||"__add_stock_option__"===n||n.toLowerCase().includes(t.toLowerCase())},Ht=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,(0,f.iO)();case 1:e=t.v,e&&1===e.code&&e.data&&Array.isArray(e.data)?T.value=e.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):e&&1===e.code&&e.data&&"object"===(0,o.A)(e.data)?T.value=Object.keys(e.data).map(function(t){return{value:t,i18nKey:"dashboard.analysis.market.".concat(t)}}):T.value=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],T.value.length>0&&!C.value&&(C.value=T.value[0].value),t.n=3;break;case 2:t.p=2,t.v,T.value=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:return t.a(2)}},t,null,[[0,2]])}));return function(){return t.apply(this,arguments)}}(),$t=function(){w.value=!1,M.value=null,k.value="",I.value=[],B.value=!1,C.value=T.value.length>0?T.value[0].value:""},Yt=function(t){C.value=t,k.value="",I.value=[],M.value=null,B.value=!1,Zt(t)},Xt=function(t){var e=t.target.value;if(k.value=e,D.value&&clearTimeout(D.value),!e||""===e.trim())return I.value=[],B.value=!1,void(M.value=null);D.value=setTimeout(function(){jt(e)},500)},Kt=function(t){t&&t.trim()&&(C.value?I.value.length>0||(B.value&&0===I.value.length?Ut():jt(t)):u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},jt=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var n;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e&&""!==e.trim()){t.n=1;break}return I.value=[],B.value=!1,t.a(2);case 1:if(C.value){t.n=2;break}return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),t.a(2);case 2:return E.value=!0,B.value=!0,t.p=3,t.n=4,(0,f._3)({market:C.value,keyword:e.trim(),limit:20});case 4:n=t.v,n&&1===n.code&&n.data&&n.data.length>0?I.value=n.data:(I.value=[],M.value={market:C.value,symbol:e.trim().toUpperCase(),name:""}),t.n=6;break;case 5:t.p=5,t.v,I.value=[],M.value={market:C.value,symbol:e.trim().toUpperCase(),name:""};case 6:return t.p=6,E.value=!1,t.f(6);case 7:return t.a(2)}},t,null,[[3,5,6,7]])}));return function(e){return t.apply(this,arguments)}}(),Ut=function(){k.value&&k.value.trim()?C.value?M.value={market:C.value,symbol:k.value.trim().toUpperCase(),name:""}:u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},Gt=function(t){M.value={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},Zt=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var i;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e||(e=C.value||(T.value.length>0?T.value[0].value:"")),e){t.n=1;break}return t.a(2);case 1:return P.value=!0,t.p=2,t.n=3,(0,f.z6)({market:e,limit:10});case 3:i=t.v,i&&1===i.code&&i.data?A.value=i.data:A.value=[],t.n=5;break;case 4:t.p=4,t.v,A.value=[];case 5:return t.p=5,P.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e){return t.apply(this,arguments)}}(),qt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e="",a="",!M.value){t.n=1;break}e=M.value.market,a=M.value.symbol.toUpperCase(),t.n=4;break;case 1:if(!k.value||!k.value.trim()){t.n=3;break}if(C.value){t.n=2;break}return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),t.a(2);case 2:e=C.value,a=k.value.trim().toUpperCase(),t.n=4;break;case 3:return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),t.a(2);case 4:return S.value=!0,t.p=5,t.n=6,(0,f.dp)({userid:n.value,market:e,symbol:a});case 6:if(r=t.v,!r||1!==r.code){t.n=8;break}return u.A.success(i.$t("dashboard.analysis.message.addStockSuccess")),$t(),t.n=7,Lt();case 7:t.n=9;break;case 8:u.A.error((null===r||void 0===r?void 0:r.msg)||i.$t("dashboard.analysis.message.addStockFailed"));case 9:t.n=11;break;case 10:t.p=10,c=t.v,s=(null===c||void 0===c||null===(o=c.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===c||void 0===c?void 0:c.message)||i.$t("dashboard.analysis.message.addStockFailed"),u.A.error(s);case 11:return t.p=11,S.value=!1,t.f(11);case 12:return t.a(2)}},t,null,[[5,10,11,12]])}));return function(){return t.apply(this,arguments)}}(),Jt=function(t){if(!ie(t.id)){var e=t.params||t.defaultParams||{};G.value.push((0,d.A)((0,d.A)({},t),{},{id:t.id,params:(0,d.A)({},e)}))}},Qt=function(t){G.value=G.value.filter(function(e){return e.id!==t})},te=function(t){var e=t.action,i=t.indicator;if("add"===e){var n=(0,d.A)((0,d.A)({},i),{},{calculate:ee(i.id)});Jt(n)}else"remove"===e&&Qt(i.id)},ee=function(t){return null},ie=function(t){return"sma"===t?q.some(function(t){return G.value.some(function(e){return e.id===t.id})}):"ema"===t?J.some(function(t){return G.value.some(function(e){return e.id===t.id})}):G.value.some(function(e){return e.id===t})},ne=function(){var t=new Set;return q.forEach(function(e){return t.add(e.id)}),J.forEach(function(e){return t.add(e.id)}),G.value.filter(function(e){return!t.has(e.id)})},ae=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,i,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return t.a(2);case 1:return et.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:n.value}});case 3:e=t.v,1===e.code&&e.data&&(i=e.data.filter(function(t){return!t.is_buy||0===t.is_buy||"0"===t.is_buy}),a=e.data.filter(function(t){return 1===t.is_buy||"1"===t.is_buy}),Q.value=i.map(function(t){return(0,d.A)((0,d.A)({},t),{},{type:"python",source:"custom"})}),tt.value=a.map(function(t){return(0,d.A)((0,d.A)({},t),{},{type:"python",source:"purchased"})})),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.p=5,et.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),re=(0,h.KR)(null),oe=function(){var t=(0,c.A)((0,l.A)().m(function t(e,n){var a,r,o,s,c,h,p,v,f;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a="".concat(n,"-").concat(e.id),!ie(a)){t.n=1;break}return Qt(a),t.a(2);case 1:if(t.p=1,r=e.code||"",re.value){t.n=2;break}return u.A.error(i.$t("dashboard.indicator.error.chartNotReady")),t.a(2);case 2:if("function"===typeof re.value.parsePythonStrategy){t.n=3;break}return u.A.error(i.$t("dashboard.indicator.error.chartMethodNotReady")),t.a(2);case 3:if("function"===typeof re.value.executePythonStrategy){t.n=4;break}return u.A.error(i.$t("dashboard.indicator.error.chartExecuteNotReady")),t.a(2);case 4:if(o=re.value.parsePythonStrategy(r),o){t.n=5;break}return u.A.error(i.$t("dashboard.indicator.error.parseFailed")),t.a(2);case 5:s=e.userParams||{},c=r,h=(0,d.A)({},s),p={id:a,name:e.name,type:"python",code:c,description:e.description,parsed:o,userParams:h,originalId:e.id,user_id:e.user_id||e.userId,is_encrypted:e.is_encrypted||e.isEncrypted||0,calculate:function(t,i){return re.value.executePythonStrategy(c,t,(0,d.A)((0,d.A)({},i),h),{id:e.id,user_id:e.user_id||e.userId,is_encrypted:e.is_encrypted||e.isEncrypted||0})}},v=(0,d.A)((0,d.A)({},o.params),s),G.value.push((0,d.A)((0,d.A)({},p),{},{params:v})),t.n=7;break;case 6:t.p=6,f=t.v,u.A.error(i.$t("dashboard.indicator.error.addIndicatorFailed")+": "+(f.message||"未知错误"));case 7:return t.a(2)}},t,null,[[1,6]])}));return function(e,i){return t.apply(this,arguments)}}(),se=function(){var t=(0,c.A)((0,l.A)().m(function t(e,n){var a,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a="".concat(n,"-").concat(e.id),!ie(a)){t.n=1;break}Qt(a),t.n=5;break;case 1:return t.p=1,st.value=!0,t.n=2,i.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:e.id}});case 2:r=t.v,r&&1===r.code&&Array.isArray(r.data)&&r.data.length>0?(rt.value=r.data,o="".concat(n,"-").concat(e.id),s=lt.value[o],c={},r.data.forEach(function(t){var e=s&&void 0!==s[t.name]?s[t.name]:t.default;e="int"===t.type?parseInt(e)||0:"float"===t.type?parseFloat(e)||0:"bool"===t.type?!0===e||"true"===e||1===e||"1"===e:e||"",c[t.name]=e}),ot.value=c,nt.value=e,at.value=n,it.value=!0):oe(e,n),t.n=4;break;case 3:t.p=3,t.v,oe(e,n);case 4:return t.p=4,st.value=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}));return function(e,i){return t.apply(this,arguments)}}(),le=function(){if(nt.value){var t="".concat(at.value,"-").concat(nt.value.id);lt.value[t]=(0,d.A)({},ot.value);var e=(0,d.A)((0,d.A)({},nt.value),{},{userParams:(0,d.A)({},ot.value)});oe(e,at.value)}it.value=!1,nt.value=null,at.value=""},ce=function(){ue(),it.value=!1,setTimeout(function(){nt.value=null,at.value=""},100)},ue=function(){if(nt.value&&at.value){var t="".concat(at.value,"-").concat(nt.value.id);lt.value[t]=JSON.parse(JSON.stringify(ot.value))}},de=function(){ue()},he=function(t){var e=t.code,n=t.name;if(e&&e.trim())try{if(!re.value)return void u.A.error(i.$t("dashboard.indicator.error.chartNotReady"));if("function"!==typeof re.value.parsePythonStrategy)return void u.A.error(i.$t("dashboard.indicator.error.chartMethodNotReady"));if("function"!==typeof re.value.executePythonStrategy)return void u.A.error(i.$t("dashboard.indicator.error.chartExecuteNotReady"));var a=re.value.parsePythonStrategy(e);if(!a)return void u.A.error(i.$t("dashboard.indicator.error.parseFailedCheck"));var r={id:"temp-editor-indicator",name:n||"临时指标",type:"python",code:e,description:"",parsed:a,calculate:function(t,i){var n=e;return re.value.executePythonStrategy(n,t,i)}},o=G.value.findIndex(function(t){return"temp-editor-indicator"===t.id});o>=0&&G.value.splice(o,1),G.value.push((0,d.A)((0,d.A)({},r),{},{params:(0,d.A)({},a.params)})),u.A.success(i.$t("dashboard.indicator.success.runIndicator"))}catch(s){u.A.error(i.$t("dashboard.indicator.error.runIndicatorFailed")+": "+(s.message||"未知错误"))}else u.A.warning(i.$t("dashboard.indicator.warning.enterCode"))},pe=function(){ht.value=null,dt.value=!0},ve=function(t){ht.value=t,dt.value=!0},fe=function(){ct.value=!ct.value},ge=function(t){r.A.confirm({title:i.$t("dashboard.indicator.delete.confirmTitle"),content:i.$t("dashboard.indicator.delete.confirmContent",{name:t.name}),okText:i.$t("dashboard.indicator.delete.confirmOk"),okType:"danger",cancelText:i.$t("dashboard.indicator.delete.confirmCancel"),onOk:function(){var e=(0,c.A)((0,l.A)().m(function e(){var a,r,o;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,v.Ay)({url:"/api/indicator/deleteIndicator",method:"post",data:{id:t.id,userid:n.value}});case 1:if(a=e.v,1!==a.code){e.n=3;break}return u.A.success(i.$t("dashboard.indicator.delete.success")),r="custom-"+t.id,ie(r)&&Qt(r),e.n=2,ae();case 2:e.n=4;break;case 3:u.A.error(a.msg||i.$t("dashboard.indicator.delete.failed"));case 4:e.n=6;break;case 5:e.p=5,o=e.v,u.A.error(i.$t("dashboard.indicator.delete.failed")+": "+(o.message||"未知错误"));case 6:return e.a(2)}},e,null,[[0,5]])}));function a(){return e.apply(this,arguments)}return a}()})},me=function(t){i.$router.push({path:"/backtest-center",query:{tab:"indicator",indicator_id:String(t.id)}})},ye=function(t){i.$router.push({path:"/backtest-center",query:{tab:"indicator",indicator_id:String(t.id),view:"history"}})},_e=function(t){},be=function(t){bt.value=(0,d.A)({},t),St.value=t.pricing_type||"free",Ct.value=t.price||10,kt.value=t.description||"",It.value=!!t.vip_free,_t.value=!0},xe=function(t){i.$router.push({path:"/trading-assistant",query:{mode:"create",indicator_id:String(t.id),indicator_name:t.name||"",indicator_desc:t.description||""}})},we=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return u.A.error(i.$t("dashboard.indicator.error.pleaseLogin")),t.a(2);case 1:return xt.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:bt.value.id,code:bt.value.code,name:bt.value.name,description:kt.value,publishToCommunity:!0,pricingType:St.value,price:"paid"===St.value?Ct.value:0,vipFree:"paid"===St.value&&It.value}});case 3:if(e=t.v,1!==e.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.publish.success")),_t.value=!1,bt.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(e.msg||i.$t("dashboard.indicator.publish.failed"));case 6:t.n=8;break;case 7:t.p=7,a=t.v,u.A.error(i.$t("dashboard.indicator.publish.failed")+": "+(a.message||""));case 8:return t.p=8,xt.value=!1,t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(){return t.apply(this,arguments)}}(),Se=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value&&bt.value){t.n=1;break}return t.a(2);case 1:return wt.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:bt.value.id,code:bt.value.code,name:bt.value.name,description:bt.value.description,publishToCommunity:!1,pricingType:"free",price:0,vipFree:!1}});case 3:if(e=t.v,1!==e.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.publish.unpublishSuccess")),_t.value=!1,bt.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(e.msg||i.$t("dashboard.indicator.publish.unpublishFailed"));case 6:t.n=8;break;case 7:t.p=7,t.v,u.A.error(i.$t("dashboard.indicator.publish.unpublishFailed"));case 8:return t.p=8,wt.value=!1,t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(){return t.apply(this,arguments)}}(),Ce=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var a,r,o;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return u.A.error(i.$t("dashboard.indicator.error.pleaseLogin")),t.a(2);case 1:return a=i.$refs.indicatorEditor,a&&(a.saving=!0),t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:e.id||0,code:e.code}});case 3:if(r=t.v,1!==r.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.save.success")),dt.value=!1,ht.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(r.msg||i.$t("dashboard.indicator.save.failed"));case 6:t.n=8;break;case 7:t.p=7,o=t.v,u.A.error(i.$t("dashboard.indicator.save.failed")+": "+(o.message||"未知错误"));case 8:return t.p=8,a&&(a.saving=!1),t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(e){return t.apply(this,arguments)}}(),ke=function(t){var e=t.end_time;if(1===e||"1"===e)return i.$t("dashboard.indicator.status.normalPermanent");if(!e||0===e)return i.$t("dashboard.indicator.status.normal");var n=Math.floor(Date.now()/1e3);return e0&&!C.value&&(C.value=T.value[0].value),C.value&&Zt(C.value)):(M.value=null,k.value="",I.value=[],B.value=!1,D.value&&(clearTimeout(D.value),D.value=null))}),(0,h.wB)(function(){return ot.value},function(t){if(it.value&&nt.value&&at.value){var e="".concat(at.value,"-").concat(nt.value.id);lt.value[e]=JSON.parse(JSON.stringify(t))}},{deep:!0,immediate:!1}),(0,h.wB)(it,function(t){t||ue()}),{userId:n,klineChart:re,searchSymbol:p,symbolSuggestions:m,watchlist:y,symbolSearchValue:b,symbolSearchOpen:x,currentSymbol:$,currentMarket:Y,currentPrice:X,priceChange:K,priceChangeClass:j,timeframe:U,loadingWatchlist:_,activeIndicators:G,trendIndicators:Dt,oscillatorIndicators:Tt,customIndicators:Q,purchasedIndicators:tt,loadingIndicators:et,realtimeEnabled:At,toggleRealtime:De,handleSymbolSearch:Ot,handleSymbolSelect:Vt,handleDropdownVisibleChange:zt,filterSymbolOption:Wt,getMarketName:Pe,getMarketColor:Me,setTimeframe:Bt,addIndicator:Jt,removeIndicator:Qt,isIndicatorActive:ie,loadIndicators:ae,addPythonIndicator:oe,toggleIndicator:se,getIndicatorStatus:ke,getIndicatorStatusIcon:Ie,getIndicatorStatusClass:Ee,getExpiryTimeText:Ae,formatParams:Ft,loadWatchlist:Lt,getCustomActiveIndicators:ne,showIndicatorEditor:dt,editingIndicator:ht,handleCreateIndicator:pe,handleRunIndicator:he,handleSaveIndicator:Ce,handleEditIndicator:ve,handleDeleteIndicator:ge,toggleCustomSection:fe,customSectionCollapsed:ct,purchasedSectionCollapsed:ut,handlePriceChange:Pt,handleChartRetry:Mt,handleIndicatorToggle:te,showParamsModal:it,pendingIndicator:nt,indicatorParams:rt,indicatorParamValues:ot,loadingParams:st,confirmIndicatorParams:le,cancelIndicatorParams:ce,handleParamsModalAfterClose:de,showBacktestModal:pt,backtestIndicator:vt,handleOpenBacktest:me,showBacktestHistoryDrawer:ft,backtestHistoryIndicator:gt,handleOpenBacktestHistory:ye,showBacktestRunViewer:mt,selectedBacktestRun:yt,handleViewBacktestRun:_e,showPublishModal:_t,publishIndicator:bt,publishing:xt,unpublishing:wt,publishPricingType:St,publishPrice:Ct,publishDescription:kt,publishVipFree:It,publishRules:Et,handlePublishIndicator:be,handleCreateStrategyFromIndicator:xe,handleConfirmPublish:we,handleUnpublish:Se,selectedSymbol:$,selectedMarket:Y,selectedTimeframe:U,isMobile:Z,showAddStockModal:w,addingStock:S,selectedMarketTab:C,symbolSearchKeyword:k,symbolSearchResults:I,searchingSymbols:E,hotSymbols:A,loadingHotSymbols:P,selectedSymbolForAdd:M,marketTypes:T,hasSearched:B,handleCloseAddStockModal:$t,handleMarketTabChange:Yt,handleSymbolSearchInput:Xt,handleSearchOrInput:Kt,searchSymbolsInModal:jt,selectSymbol:Gt,loadHotSymbols:Zt,handleAddStock:qt,handleDirectAdd:Ut,loadMarketTypes:Ht,showQuickTrade:F,qtSymbol:R,qtSide:L,qtPrice:N,isCryptoMarket:O,openQuickTrade:z,onQuickTradeSuccess:V,handleQuickTradeSymbolChange:W,goToIndicatorMarket:H}}},Wa=Va,Ha=(0,E.A)(Wa,n,a,!1,null,"6bd239a6",null),$a=Ha.exports},40955:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.BlockCipher,a=e.algo,r=[],o=[],s=[],l=[],c=[],u=[],d=[],h=[],p=[],v=[];(function(){for(var t=[],e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;var i=0,n=0;for(e=0;e<256;e++){var a=n^n<<1^n<<2^n<<3^n<<4;a=a>>>8^255&a^99,r[i]=a,o[a]=i;var f=t[i],g=t[f],m=t[g],y=257*t[a]^16843008*a;s[i]=y<<24|y>>>8,l[i]=y<<16|y>>>16,c[i]=y<<8|y>>>24,u[i]=y;y=16843009*m^65537*g^257*f^16843008*i;d[a]=y<<24|y>>>8,h[a]=y<<16|y>>>16,p[a]=y<<8|y>>>24,v[a]=y,i?(i=f^t[t[t[m^f]]],n^=t[t[n]]):i=n=1}})();var f=[0,1,2,4,8,16,32,64,128,27,54],g=a.AES=n.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,i=t.sigBytes/4,n=this._nRounds=i+6,a=4*(n+1),o=this._keySchedule=[],s=0;s6&&s%i==4&&(u=r[u>>>24]<<24|r[u>>>16&255]<<16|r[u>>>8&255]<<8|r[255&u]):(u=u<<8|u>>>24,u=r[u>>>24]<<24|r[u>>>16&255]<<16|r[u>>>8&255]<<8|r[255&u],u^=f[s/i|0]<<24),o[s]=o[s-i]^u);for(var l=this._invKeySchedule=[],c=0;c>>24]]^h[r[u>>>16&255]]^p[r[u>>>8&255]]^v[r[255&u]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,s,l,c,u,r)},decryptBlock:function(t,e){var i=t[e+1];t[e+1]=t[e+3],t[e+3]=i,this._doCryptBlock(t,e,this._invKeySchedule,d,h,p,v,o);i=t[e+1];t[e+1]=t[e+3],t[e+3]=i},_doCryptBlock:function(t,e,i,n,a,r,o,s){for(var l=this._nRounds,c=t[e]^i[0],u=t[e+1]^i[1],d=t[e+2]^i[2],h=t[e+3]^i[3],p=4,v=1;v>>24]^a[u>>>16&255]^r[d>>>8&255]^o[255&h]^i[p++],g=n[u>>>24]^a[d>>>16&255]^r[h>>>8&255]^o[255&c]^i[p++],m=n[d>>>24]^a[h>>>16&255]^r[c>>>8&255]^o[255&u]^i[p++],y=n[h>>>24]^a[c>>>16&255]^r[u>>>8&255]^o[255&d]^i[p++];c=f,u=g,d=m,h=y}f=(s[c>>>24]<<24|s[u>>>16&255]<<16|s[d>>>8&255]<<8|s[255&h])^i[p++],g=(s[u>>>24]<<24|s[d>>>16&255]<<16|s[h>>>8&255]<<8|s[255&c])^i[p++],m=(s[d>>>24]<<24|s[h>>>16&255]<<16|s[c>>>8&255]<<8|s[255&u])^i[p++],y=(s[h>>>24]<<24|s[c>>>16&255]<<16|s[u>>>8&255]<<8|s[255&d])^i[p++];t[e]=f,t[e+1]=g,t[e+2]=m,t[e+3]=y},keySize:8});e.AES=n._createHelper(g)}(),t.AES})},43128:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.BlockCipher,a=e.algo;const r=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],s=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var l={pbox:[],sbox:[]};function c(t,e){let i=e>>24&255,n=e>>16&255,a=e>>8&255,r=255&e,o=t.sbox[0][i]+t.sbox[1][n];return o^=t.sbox[2][a],o+=t.sbox[3][r],o}function u(t,e,i){let n,a=e,o=i;for(let s=0;s1;--s)a^=t.pbox[s],o=c(t,a)^o,n=a,a=o,o=n;return n=a,a=o,o=n,o^=t.pbox[1],a^=t.pbox[0],{left:a,right:o}}function h(t,e,i){for(let r=0;r<4;r++){t.sbox[r]=[];for(let e=0;e<256;e++)t.sbox[r][e]=s[r][e]}let n=0;for(let s=0;s=i&&(n=0);let a=0,l=0,c=0;for(let o=0;o>>2];t.sigBytes-=e}},m=(n.BlockCipher=d.extend({cfg:d.cfg.extend({mode:v,padding:g}),reset:function(){var t;d.reset.call(this);var e=this.cfg,i=e.iv,n=e.mode;this._xformMode==this._ENC_XFORM_MODE?t=n.createEncryptor:(t=n.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==t?this._mode.init(this,i&&i.words):(this._mode=t.call(n,this,i&&i.words),this._mode.__creator=t)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t,e=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(e.pad(this._data,this.blockSize),t=this._process(!0)):(t=this._process(!0),e.unpad(t)),t},blockSize:4}),n.CipherParams=a.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),y=i.format={},_=y.OpenSSL={stringify:function(t){var e,i=t.ciphertext,n=t.salt;return e=n?r.create([1398893684,1701076831]).concat(n).concat(i):i,e.toString(l)},parse:function(t){var e,i=l.parse(t),n=i.words;return 1398893684==n[0]&&1701076831==n[1]&&(e=r.create(n.slice(2,4)),n.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:e})}},b=n.SerializableCipher=a.extend({cfg:a.extend({format:_}),encrypt:function(t,e,i,n){n=this.cfg.extend(n);var a=t.createEncryptor(i,n),r=a.finalize(e),o=a.cfg;return m.create({ciphertext:r,key:i,iv:o.iv,algorithm:t,mode:o.mode,padding:o.padding,blockSize:t.blockSize,formatter:n.format})},decrypt:function(t,e,i,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var a=t.createDecryptor(i,n).finalize(e.ciphertext);return a},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),x=i.kdf={},w=x.OpenSSL={execute:function(t,e,i,n,a){if(n||(n=r.random(8)),a)o=u.create({keySize:e+i,hasher:a}).compute(t,n);else var o=u.create({keySize:e+i}).compute(t,n);var s=r.create(o.words.slice(e),4*i);return o.sigBytes=4*e,m.create({key:o,iv:s,salt:n})}},S=n.PasswordBasedCipher=b.extend({cfg:b.cfg.extend({kdf:w}),encrypt:function(t,e,i,n){n=this.cfg.extend(n);var a=n.kdf.execute(i,t.keySize,t.ivSize,n.salt,n.hasher);n.iv=a.iv;var r=b.encrypt.call(this,t,e,a.key,n);return r.mixIn(a),r},decrypt:function(t,e,i,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var a=n.kdf.execute(i,t.keySize,t.ivSize,e.salt,n.hasher);n.iv=a.iv;var r=b.decrypt.call(this,t,e,a.key,n);return r}})}()})},19021:function(t,e,i){(function(e,i){t.exports=i()})(0,function(){var t=t||function(t,e){var n;if("undefined"!==typeof window&&window.crypto&&(n=window.crypto),"undefined"!==typeof self&&self.crypto&&(n=self.crypto),"undefined"!==typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!==typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&"undefined"!==typeof i.g&&i.g.crypto&&(n=i.g.crypto),!n)try{n=i(50477)}catch(g){}var a=function(){if(n){if("function"===typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(g){}if("function"===typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(g){}}throw new Error("Native crypto module could not be used to get secure random number.")},r=Object.create||function(){function t(){}return function(e){var i;return t.prototype=e,i=new t,t.prototype=null,i}}(),o={},s=o.lib={},l=s.Base=function(){return{extend:function(t){var e=r(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),c=s.WordArray=l.extend({init:function(t,i){t=this.words=t||[],this.sigBytes=i!=e?i:4*t.length},toString:function(t){return(t||d).stringify(this)},concat:function(t){var e=this.words,i=t.words,n=this.sigBytes,a=t.sigBytes;if(this.clamp(),n%4)for(var r=0;r>>2]>>>24-r%4*8&255;e[n+r>>>2]|=o<<24-(n+r)%4*8}else for(var s=0;s>>2]=i[s>>>2];return this.sigBytes+=a,this},clamp:function(){var e=this.words,i=this.sigBytes;e[i>>>2]&=4294967295<<32-i%4*8,e.length=t.ceil(i/4)},clone:function(){var t=l.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],i=0;i>>2]>>>24-a%4*8&255;n.push((r>>>4).toString(16)),n.push((15&r).toString(16))}return n.join("")},parse:function(t){for(var e=t.length,i=[],n=0;n>>3]|=parseInt(t.substr(n,2),16)<<24-n%8*4;return new c.init(i,e/2)}},h=u.Latin1={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>24-a%4*8&255;n.push(String.fromCharCode(r))}return n.join("")},parse:function(t){for(var e=t.length,i=[],n=0;n>>2]|=(255&t.charCodeAt(n))<<24-n%4*8;return new c.init(i,e)}},p=u.Utf8={stringify:function(t){try{return decodeURIComponent(escape(h.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return h.parse(unescape(encodeURIComponent(t)))}},v=s.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=p.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var i,n=this._data,a=n.words,r=n.sigBytes,o=this.blockSize,s=4*o,l=r/s;l=e?t.ceil(l):t.max((0|l)-this._minBufferSize,0);var u=l*o,d=t.min(4*u,r);if(u){for(var h=0;h>>2]>>>24-r%4*8&255,s=e[r+1>>>2]>>>24-(r+1)%4*8&255,l=e[r+2>>>2]>>>24-(r+2)%4*8&255,c=o<<16|s<<8|l,u=0;u<4&&r+.75*u>>6*(3-u)&63));var d=n.charAt(64);if(d)while(a.length%4)a.push(d);return a.join("")},parse:function(t){var e=t.length,i=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var a=0;a>>6-o%4*2,c=s|l;a[r>>>2]|=c<<24-r%4*8,r++}return n.create(a,r)}}(),t.enc.Base64})},64725:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.enc;a.Base64url={stringify:function(t,e){void 0===e&&(e=!0);var i=t.words,n=t.sigBytes,a=e?this._safe_map:this._map;t.clamp();for(var r=[],o=0;o>>2]>>>24-o%4*8&255,l=i[o+1>>>2]>>>24-(o+1)%4*8&255,c=i[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|l<<8|c,d=0;d<4&&o+.75*d>>6*(3-d)&63));var h=a.charAt(64);if(h)while(r.length%4)r.push(h);return r.join("")},parse:function(t,e){void 0===e&&(e=!0);var i=t.length,n=e?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var o=0;o>>6-o%4*2,c=s|l;a[r>>>2]|=c<<24-r%4*8,r++}return n.create(a,r)}}(),t.enc.Base64url})},45503:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.enc;a.Utf16=a.Utf16BE={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>16-a%4*8&65535;n.push(String.fromCharCode(r))}return n.join("")},parse:function(t){for(var e=t.length,i=[],a=0;a>>1]|=t.charCodeAt(a)<<16-a%2*16;return n.create(i,2*e)}};function r(t){return t<<8&4278255360|t>>>8&16711935}a.Utf16LE={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>16-a%4*8&65535);n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,i=[],a=0;a>>1]|=r(t.charCodeAt(a)<<16-a%2*16);return n.create(i,2*e)}}}(),t.enc.Utf16})},39506:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(45471),i(51025))})(0,function(t){return function(){var e=t,i=e.lib,n=i.Base,a=i.WordArray,r=e.algo,o=r.MD5,s=r.EvpKDF=n.extend({cfg:n.extend({keySize:4,hasher:o,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){var i,n=this.cfg,r=n.hasher.create(),o=a.create(),s=o.words,l=n.keySize,c=n.iterations;while(s.lengthn&&(e=t.finalize(e)),e.clamp();for(var a=this._oKey=e.clone(),o=this._iKey=e.clone(),s=a.words,l=o.words,c=0;c>>2]|=t[n]<<24-n%4*8;a.call(this,i,e)}else a.apply(this,arguments)};r.prototype=n}}(),t.lib.WordArray})},84636:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.algo,s=[];(function(){for(var t=0;t<64;t++)s[t]=4294967296*e.abs(e.sin(t+1))|0})();var l=o.MD5=r.extend({_doReset:function(){this._hash=new a.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var i=0;i<16;i++){var n=e+i,a=t[n];t[n]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}var r=this._hash.words,o=t[e+0],l=t[e+1],p=t[e+2],v=t[e+3],f=t[e+4],g=t[e+5],m=t[e+6],y=t[e+7],_=t[e+8],b=t[e+9],x=t[e+10],w=t[e+11],S=t[e+12],C=t[e+13],k=t[e+14],I=t[e+15],E=r[0],A=r[1],P=r[2],M=r[3];E=c(E,A,P,M,o,7,s[0]),M=c(M,E,A,P,l,12,s[1]),P=c(P,M,E,A,p,17,s[2]),A=c(A,P,M,E,v,22,s[3]),E=c(E,A,P,M,f,7,s[4]),M=c(M,E,A,P,g,12,s[5]),P=c(P,M,E,A,m,17,s[6]),A=c(A,P,M,E,y,22,s[7]),E=c(E,A,P,M,_,7,s[8]),M=c(M,E,A,P,b,12,s[9]),P=c(P,M,E,A,x,17,s[10]),A=c(A,P,M,E,w,22,s[11]),E=c(E,A,P,M,S,7,s[12]),M=c(M,E,A,P,C,12,s[13]),P=c(P,M,E,A,k,17,s[14]),A=c(A,P,M,E,I,22,s[15]),E=u(E,A,P,M,l,5,s[16]),M=u(M,E,A,P,m,9,s[17]),P=u(P,M,E,A,w,14,s[18]),A=u(A,P,M,E,o,20,s[19]),E=u(E,A,P,M,g,5,s[20]),M=u(M,E,A,P,x,9,s[21]),P=u(P,M,E,A,I,14,s[22]),A=u(A,P,M,E,f,20,s[23]),E=u(E,A,P,M,b,5,s[24]),M=u(M,E,A,P,k,9,s[25]),P=u(P,M,E,A,v,14,s[26]),A=u(A,P,M,E,_,20,s[27]),E=u(E,A,P,M,C,5,s[28]),M=u(M,E,A,P,p,9,s[29]),P=u(P,M,E,A,y,14,s[30]),A=u(A,P,M,E,S,20,s[31]),E=d(E,A,P,M,g,4,s[32]),M=d(M,E,A,P,_,11,s[33]),P=d(P,M,E,A,w,16,s[34]),A=d(A,P,M,E,k,23,s[35]),E=d(E,A,P,M,l,4,s[36]),M=d(M,E,A,P,f,11,s[37]),P=d(P,M,E,A,y,16,s[38]),A=d(A,P,M,E,x,23,s[39]),E=d(E,A,P,M,C,4,s[40]),M=d(M,E,A,P,o,11,s[41]),P=d(P,M,E,A,v,16,s[42]),A=d(A,P,M,E,m,23,s[43]),E=d(E,A,P,M,b,4,s[44]),M=d(M,E,A,P,S,11,s[45]),P=d(P,M,E,A,I,16,s[46]),A=d(A,P,M,E,p,23,s[47]),E=h(E,A,P,M,o,6,s[48]),M=h(M,E,A,P,y,10,s[49]),P=h(P,M,E,A,k,15,s[50]),A=h(A,P,M,E,g,21,s[51]),E=h(E,A,P,M,S,6,s[52]),M=h(M,E,A,P,v,10,s[53]),P=h(P,M,E,A,x,15,s[54]),A=h(A,P,M,E,l,21,s[55]),E=h(E,A,P,M,_,6,s[56]),M=h(M,E,A,P,I,10,s[57]),P=h(P,M,E,A,m,15,s[58]),A=h(A,P,M,E,C,21,s[59]),E=h(E,A,P,M,f,6,s[60]),M=h(M,E,A,P,w,10,s[61]),P=h(P,M,E,A,p,15,s[62]),A=h(A,P,M,E,b,21,s[63]),r[0]=r[0]+E|0,r[1]=r[1]+A|0,r[2]=r[2]+P|0,r[3]=r[3]+M|0},_doFinalize:function(){var t=this._data,i=t.words,n=8*this._nDataBytes,a=8*t.sigBytes;i[a>>>5]|=128<<24-a%32;var r=e.floor(n/4294967296),o=n;i[15+(a+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),i[14+(a+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(i.length+1),this._process();for(var s=this._hash,l=s.words,c=0;c<4;c++){var u=l[c];l[c]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}return s},clone:function(){var t=r.clone.call(this);return t._hash=this._hash.clone(),t}});function c(t,e,i,n,a,r,o){var s=t+(e&i|~e&n)+a+o;return(s<>>32-r)+e}function u(t,e,i,n,a,r,o){var s=t+(e&n|i&~n)+a+o;return(s<>>32-r)+e}function d(t,e,i,n,a,r,o){var s=t+(e^i^n)+a+o;return(s<>>32-r)+e}function h(t,e,i,n,a,r,o){var s=t+(i^(e|~n))+a+o;return(s<>>32-r)+e}i.MD5=r._createHelper(l),i.HmacMD5=r._createHmacHelper(l)}(Math),t.MD5})},82169:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.mode.CFB=function(){var e=t.lib.BlockCipherMode.extend();function i(t,e,i,n){var a,r=this._iv;r?(a=r.slice(0),this._iv=void 0):a=this._prevBlock,n.encryptBlock(a,0);for(var o=0;o0?"+":"")+t._s(t.priceChange.toFixed(2))+"% ")])]),t.isCryptoMarket?e("a-button",{staticClass:"qt-header-btn",attrs:{size:"small"},on:{click:t.openQuickTrade}},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}}),t._v(" "+t._s(t.$t("quickTrade.openPanel"))+" ")],1):t._e()],1):t._e()])]),e("div",{staticClass:"chart-content"},[e("div",{staticClass:"chart-main-row"},[t.currentSymbol?e("div",{staticClass:"mobile-symbol-price"},[e("div",{staticClass:"mobile-symbol-info"},[e("span",{staticClass:"mobile-market-tag"},[t._v(t._s(t.currentMarket))]),e("span",[t._v("-")]),e("span",{staticClass:"mobile-symbol-label"},[t._v(t._s(t.currentSymbol))])]),e("div",{staticClass:"mobile-price-info",class:t.priceChangeClass},[e("span",{staticClass:"mobile-symbol-price"},[t._v(t._s(t.currentPrice))]),e("span",{staticClass:"mobile-symbol-change"},[t._v(" "+t._s(t.priceChange>0?"+":"")+t._s(t.priceChange.toFixed(2))+"% ")])])]):t._e(),e("kline-chart",{ref:"klineChart",attrs:{symbol:t.currentSymbol,market:t.currentMarket,timeframe:t.timeframe,theme:t.chartTheme,activeIndicators:t.activeIndicators,realtimeEnabled:t.realtimeEnabled},on:{"price-change":t.handlePriceChange,retry:t.handleChartRetry,"indicator-toggle":t.handleIndicatorToggle}}),e("div",{staticClass:"chart-right"},[e("div",{staticClass:"indicators-panel"},[e("div",{staticClass:"panel-header"},[e("span",[t._v(t._s(t.$t("dashboard.indicator.panel.title")))]),e("div",{staticStyle:{display:"flex","align-items":"center","margin-left":"auto",gap:"8px"}},[t.isMobile?e("a-button",{staticClass:"mobile-header-create-btn",attrs:{type:"primary",size:"small",icon:"plus"},on:{click:t.handleCreateIndicator}},[t._v(" "+t._s(t.$t("dashboard.indicator.create"))+" ")]):t._e(),e("a-tooltip",{attrs:{title:t.realtimeEnabled?t.$t("dashboard.indicator.panel.realtimeOn"):t.$t("dashboard.indicator.panel.realtimeOff")}},[e("a-button",{staticClass:"realtime-toggle-btn",class:{active:t.realtimeEnabled},attrs:{type:"text"},on:{click:t.toggleRealtime}},[e("a-icon",{attrs:{type:t.realtimeEnabled?"sync":"pause-circle",spin:t.realtimeEnabled}})],1)],1)],1)]),e("div",{staticClass:"panel-body"},[t.isMobile?[e("div",{staticClass:"mobile-tab-content"},[e("div",{staticClass:"section-content custom-scrollbar"},[t._l(t.customIndicators,function(i){return e("div",{key:"custom-"+i.id,class:["indicator-card",{"indicator-active":t.isIndicatorActive("custom-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"custom")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[t._v(t._s(i.name))]),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.edit")}},[e("a-icon",{staticClass:"action-icon edit-icon",attrs:{type:"edit"},on:{click:function(e){return e.stopPropagation(),t.handleEditIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.delete")}},[e("a-icon",{staticClass:"action-icon delete-icon",attrs:{type:"delete"},on:{click:function(e){return e.stopPropagation(),t.handleDeleteIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.isIndicatorActive("custom-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("custom-"+i.id)}],attrs:{type:t.isIndicatorActive("custom-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"custom")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1),e("a-tooltip",{attrs:{title:i.publish_to_community?t.$t("dashboard.indicator.action.unpublish"):t.$t("dashboard.indicator.action.publish")}},[e("a-icon",{class:["action-icon","publish-icon",{published:i.publish_to_community}],attrs:{type:i.publish_to_community?"cloud":"cloud-upload"},on:{click:function(e){return e.stopPropagation(),t.handlePublishIndicator(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.customIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"info-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.empty")))])],1):t._e()],2)])]:[e("div",{staticClass:"indicator-section",class:{"section-empty":0===t.customIndicators.length}},[e("div",{staticClass:"section-label"},[e("div",{staticClass:"section-label-left",on:{click:t.toggleCustomSection}},[e("a-icon",{staticClass:"collapse-icon",attrs:{type:t.customSectionCollapsed?"right":"down"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.section.myCreated"))+" ("+t._s(t.customIndicators.length)+")")])],1),e("a-button",{staticClass:"create-indicator-btn",attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(e){return e.stopPropagation(),t.handleCreateIndicator.apply(null,arguments)}}},[t._v(" "+t._s(t.$t("dashboard.indicator.create"))+" ")])],1),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.customSectionCollapsed,expression:"!customSectionCollapsed"}],staticClass:"section-content custom-scrollbar"},[t._l(t.customIndicators,function(i){return e("div",{key:"custom-"+i.id,class:["indicator-card",{"indicator-active":t.isIndicatorActive("custom-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"custom")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[t._v(t._s(i.name))]),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.edit")}},[e("a-icon",{staticClass:"action-icon edit-icon",attrs:{type:"edit"},on:{click:function(e){return e.stopPropagation(),t.handleEditIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.delete")}},[e("a-icon",{staticClass:"action-icon delete-icon",attrs:{type:"delete"},on:{click:function(e){return e.stopPropagation(),t.handleDeleteIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.isIndicatorActive("custom-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("custom-"+i.id)}],attrs:{type:t.isIndicatorActive("custom-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"custom")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1),e("a-tooltip",{attrs:{title:i.publish_to_community?t.$t("dashboard.indicator.action.unpublish"):t.$t("dashboard.indicator.action.publish")}},[e("a-icon",{class:["action-icon","publish-icon",{published:i.publish_to_community}],attrs:{type:i.publish_to_community?"cloud":"cloud-upload"},on:{click:function(e){return e.stopPropagation(),t.handlePublishIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.createStrategy")}},[e("a-icon",{staticClass:"action-icon create-strategy-icon",attrs:{type:"rocket"},on:{click:function(e){return e.stopPropagation(),t.handleCreateStrategyFromIndicator(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.customIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"info-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.empty")))])],1):t._e()],2)]),e("div",{staticClass:"indicator-section",class:{"section-empty":0===t.purchasedIndicators.length}},[e("div",{staticClass:"section-label"},[e("div",{staticClass:"section-label-left",on:{click:function(e){t.purchasedSectionCollapsed=!t.purchasedSectionCollapsed}}},[e("a-icon",{staticClass:"collapse-icon",attrs:{type:t.purchasedSectionCollapsed?"right":"down"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.section.purchased"))+" ("+t._s(t.purchasedIndicators.length)+")")])],1),e("a-button",{staticClass:"buy-indicator-btn",attrs:{type:"link",size:"small",icon:"shop"},on:{click:function(e){return e.stopPropagation(),t.goToIndicatorMarket.apply(null,arguments)}}},[t._v(" "+t._s(t.$t("menu.dashboard.community"))+" ")])],1),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.purchasedSectionCollapsed,expression:"!purchasedSectionCollapsed"}],staticClass:"section-content custom-scrollbar"},[t._l(t.purchasedIndicators,function(i){return e("div",{key:"purchased-"+i.id,class:["indicator-card","purchased-indicator",{"indicator-active":t.isIndicatorActive("purchased-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"purchased")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[e("a-icon",{staticClass:"purchased-icon",attrs:{type:"shopping"}}),t._v(" "+t._s(i.name)+" ")],1),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.isIndicatorActive("purchased-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("purchased-"+i.id)}],attrs:{type:t.isIndicatorActive("purchased-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"purchased")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.purchasedIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"shopping"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.emptyPurchased")))])],1):t._e()],2)])]],2)])])],1),e("indicator-editor",{ref:"indicatorEditor",attrs:{visible:t.showIndicatorEditor,indicator:t.editingIndicator,userId:t.userId},on:{run:t.handleRunIndicator,save:t.handleSaveIndicator,cancel:function(e){t.showIndicatorEditor=!1,t.editingIndicator=null}}}),e("a-modal",{attrs:{visible:t.showParamsModal,title:t.$t("dashboard.indicator.paramsConfig.title"),confirmLoading:t.loadingParams,width:500,maskClosable:!1,keyboard:!1},on:{ok:t.confirmIndicatorParams,cancel:t.cancelIndicatorParams,afterClose:t.handleParamsModalAfterClose}},[t.pendingIndicator?e("div",{staticClass:"params-config-modal"},[e("div",{staticClass:"indicator-info"},[e("span",{staticClass:"indicator-name"},[t._v(t._s(t.pendingIndicator.name))])]),e("a-divider"),t.indicatorParams.length>0?e("div",{staticClass:"params-form"},t._l(t.indicatorParams,function(i){return e("div",{key:i.name,staticClass:"param-item"},[e("div",{staticClass:"param-header"},[e("label",{staticClass:"param-label"},[t._v(t._s(i.name))]),i.description?e("a-tooltip",{attrs:{title:i.description}},[e("a-icon",{staticStyle:{color:"#999","margin-left":"4px"},attrs:{type:"question-circle"}})],1):t._e()],1),"int"===i.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0},model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):"float"===i.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4},model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):"bool"===i.type?e("a-switch",{model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):e("a-input",{model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}})],1)}),0):e("a-empty",{attrs:{description:t.$t("dashboard.indicator.paramsConfig.noParams")}})],1):t._e()]),e("a-modal",{attrs:{title:t.publishIndicator&&t.publishIndicator.publish_to_community?t.$t("dashboard.indicator.publish.editTitle"):t.$t("dashboard.indicator.publish.title"),visible:t.showPublishModal,confirmLoading:t.publishing,width:"500px",okText:t.publishIndicator&&t.publishIndicator.publish_to_community?t.$t("dashboard.indicator.publish.update"):t.$t("dashboard.indicator.publish.confirm"),cancelText:t.$t("common.cancel")},on:{ok:t.handleConfirmPublish,cancel:function(e){t.showPublishModal=!1,t.publishIndicator=null}}},[e("a-form-model",{ref:"publishForm",attrs:{model:t.publishForm,rules:t.publishRules,layout:"vertical"}},[e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info","show-icon":"",message:t.$t("dashboard.indicator.publish.hint")}}),e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.pricingType"),prop:"pricingType"}},[e("a-radio-group",{model:{value:t.publishPricingType,callback:function(e){t.publishPricingType=e},expression:"publishPricingType"}},[e("a-radio",{attrs:{value:"free"}},[t._v(t._s(t.$t("dashboard.indicator.publish.free")))]),e("a-radio",{attrs:{value:"paid"}},[t._v(t._s(t.$t("dashboard.indicator.publish.paid")))])],1)],1),"paid"===t.publishPricingType?e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.price"),prop:"price"}},[e("a-input-number",{staticStyle:{width:"200px"},attrs:{min:1,max:1e4,precision:0},model:{value:t.publishPrice,callback:function(e){t.publishPrice=e},expression:"publishPrice"}}),e("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(t.$t("community.credits")))])],1):t._e(),"paid"===t.publishPricingType?e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.vipFree")}},[e("a-switch",{model:{value:t.publishVipFree,callback:function(e){t.publishVipFree=e},expression:"publishVipFree"}}),e("div",{staticStyle:{"margin-top":"6px",color:"rgba(0,0,0,0.45)","font-size":"12px"}},[t._v(" "+t._s(t.$t("dashboard.indicator.publish.vipFreeHint"))+" ")])],1):t._e(),e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.description"),prop:"description"}},[e("a-textarea",{attrs:{placeholder:t.$t("dashboard.indicator.publish.descriptionPlaceholder"),rows:4,maxLength:500},model:{value:t.publishDescription,callback:function(e){t.publishDescription=e},expression:"publishDescription"}})],1),t.publishIndicator&&t.publishIndicator.publish_to_community?e("div",{staticStyle:{"margin-top":"16px"}},[e("a-button",{attrs:{type:"danger",ghost:"",loading:t.unpublishing},on:{click:t.handleUnpublish}},[e("a-icon",{attrs:{type:"close-circle"}}),t._v(" "+t._s(t.$t("dashboard.indicator.publish.unpublish"))+" ")],1)],1):t._e()],1)],1),e("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[e("div",{staticClass:"add-stock-modal-content"},[e("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(e){t.selectedMarketTab=e},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(i){return e("a-tab-pane",{key:i.value,attrs:{tab:t.$t(i.i18nKey||"dashboard.analysis.market.".concat(i.value))}})}),1),e("div",{staticClass:"symbol-search-section"},[e("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(e){t.symbolSearchKeyword=e},expression:"symbolSearchKeyword"}},[e("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?e("div",{staticClass:"search-results-section"},[e("div",{staticClass:"section-title"},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),e("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(i){return e("a-list-item",{staticClass:"symbol-list-item",on:{click:function(e){return t.selectSymbol(i)}}},[e("a-list-item-meta",[e("template",{slot:"title"},[e("div",{staticClass:"symbol-item-content"},[e("span",{staticClass:"symbol-code"},[t._v(t._s(i.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.name))]),i.exchange?e("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(i.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),e("div",{staticClass:"hot-symbols-section"},[e("div",{staticClass:"section-title"},[e("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),e("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?e("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(i){return e("a-list-item",{staticClass:"symbol-list-item",on:{click:function(e){return t.selectSymbol(i)}}},[e("a-list-item-meta",[e("template",{slot:"title"},[e("div",{staticClass:"symbol-item-content"},[e("span",{staticClass:"symbol-code"},[t._v(t._s(i.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.name))]),i.exchange?e("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(i.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):e("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?e("div",{staticClass:"selected-symbol-section"},[e("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(e){t.selectedSymbolForAdd=null}}},[e("template",{slot:"description"},[e("div",{staticClass:"selected-symbol-info"},[e("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),e("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?e("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):e("span",{staticStyle:{color:"#999","margin-left":"8px","font-style":"italic"}},[t._v(t._s(t.$t("dashboard.analysis.modal.addStock.nameWillBeFetched")))])],1)])],2)],1):t._e()],1)])],1),e("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentSymbol&&t.isCryptoMarket?e("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTrade}},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),e("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:"indicator","market-type":"swap"},on:{close:function(e){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}})],1)},a=[],r=(i(62621),i(43898)),o=i(44735),s=i(15863),l=i(81127),c=i(56252),u=(i(6011),i(18787)),d=i(76338),h=(i(28706),i(2008),i(50113),i(48980),i(74423),i(48598),i(62062),i(54554),i(79432),i(26099),i(16034),i(38781),i(31415),i(21699),i(47764),i(42762),i(23500),i(62953),i(85471)),p=i(95353),v=i(75769),f=i(35038),g=i(505),m=function(){var t=this,e=t._self._c;return e("div",[e("a-modal",{staticClass:"indicator-editor-modal",style:t.isMobile?{top:0,paddingBottom:0}:{top:"2%"},attrs:{title:t.$t("dashboard.indicator.editor.title"),visible:t.visible,width:t.isMobile?"100%":"95vw",confirmLoading:t.saving,okText:t.$t("dashboard.indicator.editor.save"),cancelText:t.$t("dashboard.indicator.editor.cancel"),maskClosable:!1,centered:!1},on:{ok:t.handleSave,cancel:t.handleCancel,afterClose:t.handleAfterClose}},[e("div",{staticClass:"editor-content"},[e("a-row",{staticClass:"editor-layout",class:{"mobile-layout":t.isMobile},attrs:{gutter:16}},[e("a-col",{staticClass:"code-editor-column",attrs:{span:24,xs:24,sm:24,md:24}},[e("div",{staticClass:"code-section"},[e("div",{staticClass:"section-header"},[e("div",{staticClass:"header-left"},[e("span",{staticClass:"section-title"},[t._v(t._s(t.$t("dashboard.indicator.editor.code")))])]),e("div",{staticClass:"section-actions"},[e("a-button",{staticStyle:{padding:"0 8px",color:"#52c41a","font-weight":"bold"},attrs:{type:"link",size:"small",loading:t.verifying},on:{click:t.handleVerifyCode}},[e("a-icon",{attrs:{type:"check-circle"}}),t._v(" "+t._s(t.$t("dashboard.indicator.editor.verifyCode"))+" ")],1),e("a-button",{staticStyle:{padding:"0"},attrs:{type:"link",size:"small"},on:{click:t.goToDocs}},[e("a-icon",{attrs:{type:"book"}}),t._v(" "+t._s(t.$t("dashboard.indicator.editor.guide"))+" ")],1)],1)]),e("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":"",message:t.$t("dashboard.indicator.boundary.message"),description:t.$t("dashboard.indicator.boundary.indicatorRule")}}),e("div",{staticClass:"code-mode-split"},[e("a-row",{staticClass:"code-mode-row",attrs:{gutter:16}},[e("a-col",{staticClass:"code-pane",attrs:{xs:24,sm:24,md:18}},[e("div",{ref:"codeEditorContainer",staticClass:"code-editor-container"})]),e("a-col",{staticClass:"ai-pane",attrs:{xs:24,sm:24,md:6}},[e("div",{staticClass:"ai-panel"},[e("div",{staticClass:"ai-panel-title"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.editor.aiGenerate")))])],1),e("a-textarea",{attrs:{placeholder:t.$t("dashboard.indicator.editor.aiPromptPlaceholder"),rows:12,"auto-size":{minRows:12,maxRows:20}},model:{value:t.aiPrompt,callback:function(e){t.aiPrompt=e},expression:"aiPrompt"}}),e("a-button",{staticStyle:{"margin-top":"10px"},attrs:{type:"primary",block:"",loading:t.aiGenerating,size:"large"},on:{click:t.handleAIGenerate}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.aiGenerateBtn"))+" ")])],1)])],1)],1)],1)])],1)],1),e("div",{staticClass:"editor-footer",attrs:{slot:"footer"},slot:"footer"},[e("a-button",{on:{click:t.handleCancel}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.cancel"))+" ")]),e("a-button",{attrs:{type:"primary",loading:t.saving},on:{click:t.handleSave}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.save"))+" ")])],1)])],1)},y=[],_=i(57532),b=(i(2892),i(27495),i(99449),i(25440),i(11392),i(15237)),x=i.n(b),w=(i(74806),i(55218),i(97923),i(50436),i(74053)),S=i.n(w),C=i(75314),k={name:"IndicatorEditor",props:{visible:{type:Boolean,default:!1},indicator:{type:Object,default:null},userId:{type:Number,default:null}},data:function(){return{saving:!1,codeEditor:null,aiPrompt:"",aiGenerating:!1,verifying:!1,isMobile:!1}},computed:{},watch:{visible:function(t){var e=this;t?this.$nextTick(function(){setTimeout(function(){!e.codeEditor&&e.$refs.codeEditorContainer&&e.initCodeEditor(),e.initFormData()},200)}):this.codeEditor&&this.codeEditor.refresh()},indicator:{handler:function(t){var e=this;t&&this.visible&&this.$nextTick(function(){setTimeout(function(){e.initFormData()},100)})},deep:!0}},mounted:function(){var t=this;this.checkMobile(),window.addEventListener("resize",this.checkMobile),this.visible&&this.$nextTick(function(){setTimeout(function(){t.initCodeEditor()},100)})},beforeDestroy:function(){if(window.removeEventListener("resize",this.checkMobile),this.codeEditor)try{if("function"===typeof this.codeEditor.toTextArea)this.codeEditor.toTextArea();else if("function"===typeof this.codeEditor.getWrapperElement){var t=this.codeEditor.getWrapperElement();t&&t.parentNode&&t.parentNode.removeChild(t)}}catch(e){}finally{this.codeEditor=null}},methods:{getDefaultIndicatorCode:function(){return'#Demo Code:\n#my_indicator_name = "My Buy/Sell Indicator"\n#my_indicator_description = "Buy/Sell only; execution is normalized in backend."\n\n#df = df.copy()\n#sma = df["close"].rolling(14).mean()\n#buy = (df["close"] > sma) & (df["close"].shift(1) <= sma.shift(1))\n#sell = (df["close"] < sma) & (df["close"].shift(1) >= sma.shift(1))\n#df["buy"] = buy.fillna(False).astype(bool)\n#df["sell"] = sell.fillna(False).astype(bool)\n\n#buy_marks = [df["low"].iloc[i] * 0.995 if df["buy"].iloc[i] else None for i in range(len(df))]\n#sell_marks = [df["high"].iloc[i] * 1.005 if df["sell"].iloc[i] else None for i in range(len(df))]\n\n#output = {\n# "name": my_indicator_name,\n# "plots": [],\n# "signals": [\n# {"type": "buy", "text": "B", "data": buy_marks, "color": "#00E676"},\n# {"type": "sell", "text": "S", "data": sell_marks, "color": "#FF5252"}\n# ]\n#}\n'},checkMobile:function(){this.isMobile=window.innerWidth<=768},goToDocs:function(){window.open("https://github.com/brokermr810/QuantDinger/blob/main/docs/STRATEGY_DEV_GUIDE.md","_blank")},handleVerifyCode:function(){var t=this,e=this.codeEditor?this.codeEditor.getValue():"";e&&e.trim()?(this.verifying=!0,(0,v.Ay)({url:"/api/indicator/verifyCode",method:"post",data:{code:e}}).then(function(e){if(1===e.code){var i=e.data||{};t.$message.success("".concat(t.$t("dashboard.indicator.editor.verifyCodeSuccess")," (").concat(i.plots_count||0," plots, ").concat(i.signals_count||0," signals)"))}else{var n=e.data||{};t.$error({title:t.$t("dashboard.indicator.editor.verifyCodeFailed"),width:600,content:function(t){return t("div",[t("p",{style:{fontWeight:"bold",color:"#ff4d4f"}},e.msg),n.details?t("pre",{style:{background:"#f5f5f5",padding:"8px",overflow:"auto",maxHeight:"300px",marginTop:"8px",fontSize:"12px",fontFamily:"monospace"}},n.details):null])}})}}).catch(function(e){t.$message.error("Request Failed: "+(e.message||"Unknown Error"))}).finally(function(){t.verifying=!1})):this.$message.warning(this.$t("dashboard.indicator.editor.verifyCodeEmpty"))},cleanMarkdownCodeBlocks:function(t){if(!t||"string"!==typeof t)return t;var e=t.trim(),i=/```/.test(e);return i?(e=e.replace(/^```[\w]*\s*\n?/i,""),e.startsWith("```")&&(e=e.replace(/^```\s*\n?/g,"")),e.endsWith("```")&&(e=e.replace(/\n?```\s*$/g,"")),e=e.replace(/^\s*```[\w]*\s*$/gm,""),e=e.replace(/^\s*```\s*$/gm,""),e=e.replace(/\n{3,}/g,"\n\n"),e=e.trim(),e):e},initFormData:function(){var t=this;if(this.visible){var e=this.indicator&&this.indicator.code||"";e&&String(e).trim()||(e=this.getDefaultIndicatorCode()),this.$nextTick(function(){setTimeout(function(){t.aiPrompt="",t.codeEditor&&(t.codeEditor.setValue(e),t.codeEditor.refresh())},50)})}},initCodeEditor:function(){var t=this;if(this.$refs.codeEditorContainer){if(this.codeEditor){try{if("function"===typeof this.codeEditor.toTextArea)this.codeEditor.toTextArea();else if("function"===typeof this.codeEditor.getWrapperElement){var e=this.codeEditor.getWrapperElement();e&&e.parentNode&&e.parentNode.removeChild(e)}}catch(i){}this.codeEditor=null}try{this.$refs.codeEditorContainer.innerHTML="",this.codeEditor=x()(this.$refs.codeEditorContainer,{value:function(){var e=t.indicator&&t.indicator.code||"";return e&&String(e).trim()?e:t.getDefaultIndicatorCode()}(),mode:"python",theme:"eclipse",lineNumbers:!0,lineWrapping:!0,indentUnit:4,indentWithTabs:!1,smartIndent:!0,matchBrackets:!0,autoCloseBrackets:!0,styleActiveLine:!0,foldGutter:!1,gutters:["CodeMirror-linenumbers"],tabSize:4,viewportMargin:1/0}),this.codeEditor.on("change",function(t){t.getValue()}),this.$nextTick(function(){t.codeEditor&&t.codeEditor.refresh()})}catch(n){}}},handleSave:function(){var t=this.codeEditor?this.codeEditor.getValue():"",e=t||"";e.trim()?(this.saving=!0,this.$emit("save",{id:this.indicator?this.indicator.id:0,code:e,userid:this.userId})):this.$message.warning(this.$t("dashboard.indicator.editor.codeRequired"))},handleCancel:function(){this.codeEditor&&this.codeEditor.setValue(""),this.$emit("cancel")},handleAfterClose:function(){var t=this;this.codeEditor&&this.$nextTick(function(){t.codeEditor&&t.codeEditor.refresh()}),this.aiPrompt=""},handleAIGenerate:function(){var t=this;return(0,c.A)((0,l.A)().m(function e(){var i,n,a,r,o,s,c,u,d,h,p,v,f,g,m,y,b,x,w,k,I,E,A,P,M;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt&&t.aiPrompt.trim()){e.n=1;break}return t.$message.warning(t.$t("dashboard.indicator.editor.aiPromptRequired")),e.a(2);case 1:return t.aiGenerating=!0,i="",t.codeEditor&&(i=t.codeEditor.getValue()||""),t.codeEditor&&(t.codeEditor.setValue("# AI generating...\n"),t.codeEditor.refresh()),n="",e.p=2,a="/api/indicator/aiGenerate",r=S().get(C.Xh),o={prompt:t.aiPrompt.trim()},i.trim()&&(o.existingCode=i.trim()),e.n=3,fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:r?"Bearer ".concat(r):"","Access-Token":r||"",Token:r||""},body:JSON.stringify(o),credentials:"include"});case 3:if(s=e.v,s.ok){e.n=5;break}return e.n=4,s.text().catch(function(){return""});case 4:throw c=e.v,new Error(c||"HTTP error! status: ".concat(s.status));case 5:if(s.body&&"function"===typeof s.body.getReader){e.n=6;break}throw new Error("AI 服务未返回可读取的流(response.body 不存在)");case 6:u=s.body.getReader(),d=new TextDecoder,h="";case 7:return e.n=8,u.read();case 8:if(p=e.v,v=p.done,f=p.value,!v){e.n=9;break}return e.a(3,21);case 9:h+=d.decode(f,{stream:!0}),g=h.split("\n\n"),h=g.pop()||"",m=(0,_.A)(g),e.p=10,m.s();case 11:if((y=m.n()).done){e.n=17;break}if(b=y.value,b.trim()&&b.startsWith("data: ")){e.n=12;break}return e.a(3,16);case 12:if(x=b.substring(6),"[DONE]"!==x){e.n=13;break}return e.a(3,17);case 13:if(e.p=13,w=JSON.parse(x),!w.error){e.n=14;break}throw new Error(w.error);case 14:w.content&&(n+=w.content,k=t.cleanMarkdownCodeBlocks(n),t.codeEditor&&(t.codeEditor.setValue(k),I=t.codeEditor.lineCount(),t.codeEditor.setCursor({line:I-1,ch:0}),t.codeEditor.refresh())),e.n=16;break;case 15:e.p=15,e.v;case 16:e.n=11;break;case 17:e.n=19;break;case 18:e.p=18,P=e.v,m.e(P);case 19:return e.p=19,m.f(),e.f(19);case 20:e.n=7;break;case 21:t.codeEditor&&n?(E=t.cleanMarkdownCodeBlocks(n),t.codeEditor.setValue(E),t.codeEditor.refresh(),t.$message.success(t.$t("dashboard.indicator.editor.aiGenerateSuccess"))):n||t.$message.warning("未生成任何代码,请尝试更详细的提示词"),e.n=23;break;case 22:e.p=22,M=e.v,t.$message.error(M.message||t.$t("dashboard.indicator.editor.aiGenerateError")),n&&t.codeEditor&&(A=t.cleanMarkdownCodeBlocks(n),t.codeEditor.setValue(A));case 23:return e.p=23,t.aiGenerating=!1,e.f(23);case 24:return e.a(2)}},e,null,[[13,15],[10,18,19,20],[2,22,23,24]])}))()}}},I=k,E=i(845),A=(0,E.A)(I,m,y,!1,null,"4fea1865",null),P=A.exports,M=function(){var t=this,e=t._self._c;return e("div",{staticClass:"chart-left",class:{"theme-dark":"dark"===t.chartTheme}},[e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"drawing-toolbar"},[t._l(t.drawingTools,function(i){return e("a-tooltip",{key:i.name,attrs:{title:i.title,placement:"right"}},[e("div",{staticClass:"drawing-tool-btn",class:{active:t.activeDrawingTool===i.name},on:{click:function(e){return t.selectDrawingTool(i.name)}}},[e("a-icon",{attrs:{type:i.icon}})],1)])}),e("a-divider",{attrs:{type:"vertical"}}),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.drawing.clearAll"),placement:"right"}},[e("div",{staticClass:"drawing-tool-btn",on:{click:t.clearAllDrawings}},[e("a-icon",{attrs:{type:"delete"}})],1)])],2),e("div",{staticClass:"chart-content-area"},[e("div",{staticClass:"indicator-toolbar"},t._l(t.indicatorButtons,function(i){return e("div",{key:i.id,staticClass:"indicator-btn",class:{active:t.isIndicatorActive(i.id)},attrs:{title:i.name},on:{click:function(e){return t.toggleIndicator(i)}}},[t._v(" "+t._s(i.shortName)+" ")])}),0),e("div",{staticClass:"kline-chart-container",attrs:{id:"kline-chart-container"}})]),t.loading?e("div",{staticClass:"chart-overlay"},[e("a-spin",{attrs:{size:"large"}},[e("a-icon",{staticStyle:{"font-size":"24px",color:"#13c2c2"},attrs:{slot:"indicator",type:"loading",spin:""},slot:"indicator"})],1)],1):t._e(),t.error?e("div",{staticClass:"chart-overlay"},[e("div",{staticClass:"error-box"},[e("a-icon",{staticStyle:{"font-size":"24px",color:"#ef5350","margin-bottom":"10px"},attrs:{type:"warning"}}),e("span",[t._v(t._s(t.error))]),e("a-button",{staticStyle:{"margin-top":"12px"},attrs:{type:"primary",size:"small",ghost:""},on:{click:t.handleRetry}},[t._v(" "+t._s(t.$t("dashboard.indicator.retry"))+" ")])],1)]):t._e(),t.pyodideLoadFailed?e("div",{staticClass:"chart-overlay pyodide-warning"},[e("div",{staticClass:"warning-box"},[e("a-icon",{staticStyle:{"font-size":"32px",color:"#faad14","margin-bottom":"12px"},attrs:{type:"warning"}}),e("div",{staticClass:"warning-title"},[t._v(t._s(t.$t("dashboard.indicator.warning.pyodideLoadFailed")))]),e("div",{staticClass:"warning-desc"},[t._v(t._s(t.$t("dashboard.indicator.warning.pyodideLoadFailedDesc")))])],1)]):t._e(),t.symbol||t.loading||t.error||t.pyodideLoadFailed?t._e():e("div",{staticClass:"chart-overlay initial-hint"},[e("div",{staticClass:"hint-box"},[e("a-icon",{staticStyle:{"font-size":"48px",color:"#1890ff","margin-bottom":"16px"},attrs:{type:"line-chart"}}),e("div",{staticClass:"hint-title"},[t._v(t._s(t.$t("dashboard.indicator.hint.selectSymbol")))]),e("div",{staticClass:"hint-desc"},[t._v(t._s(t.$t("dashboard.indicator.hint.selectSymbolDesc")))])],1)])])])},D=[],T=i(21560),B=i(26297),F=i(2403),R=(i(34782),i(26910),i(71761),function(t,e){return R=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},R(t,e)});function L(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function i(){this.constructor=t}R(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}var N,O,z,V,W,H,$,K,Y,X=function(){return X=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0&&a[a.length-1])&&(6===s[0]||2===s[0])){r=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Z(t,e){var i="function"===typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,a,r=i.call(t),o=[];try{while((void 0===e||e-- >0)&&!(n=r.next()).done)o.push(n.value)}catch(s){a={error:s}}finally{try{n&&!n.done&&(i=r["return"])&&i.call(r)}finally{if(a)throw a.error}}return o}function q(t,e,i){if(i||2===arguments.length)for(var n,a=0,r=e.length;a1e9)return"".concat(+(e/1e9).toFixed(3),"B");if(e>1e6)return"".concat(+(e/1e6).toFixed(3),"M");if(e>1e3)return"".concat(+(e/1e3).toFixed(3),"K")}return"".concat(t)}function zt(t,e){var i="".concat(t);if(0===e.length)return i;if(i.includes(".")){var n=i.split(".");return"".concat(n[0].replace(/(\d)(?=(\d{3})+$)/g,function(t){return"".concat(t).concat(e)}),".").concat(n[1])}return i.replace(/(\d)(?=(\d{3})+$)/g,function(t){return"".concat(t).concat(e)})}function Vt(t,e){var i="".concat(t),n=new RegExp("\\.0{"+e+",}[1-9][0-9]*$");if(n.test(i)){var a=i.split("."),r=a[a.length-1],o=r.match(/0*/);if(At(o)){var s=o[0].length;return a[a.length-1]=r.replace(/0*/,"0{".concat(s,"}")),a.join(".")}}return i}function Wt(t){var e,i,n;return null!==(n=null===(i=null===(e=t.ownerDocument)||void 0===e?void 0:e.defaultView)||void 0===i?void 0:i.devicePixelRatio)&&void 0!==n?n:1}function Ht(t,e,i){return"".concat(null!==e&&void 0!==e?e:"normal"," ").concat(null!==t&&void 0!==t?t:12,"px ").concat(null!==i&&void 0!==i?i:"Helvetica Neue")}function $t(t,e,i,n){if(!At(Dt)){var a=document.createElement("canvas"),r=Wt(a);Dt=a.getContext("2d"),Dt.scale(r,r)}return Dt.font=Ht(e,i,n),Math.round(Dt.measureText(t).width)}(function(t){t["OnDataReady"]="onDataReady",t["OnZoom"]="onZoom",t["OnScroll"]="onScroll",t["OnVisibleRangeChange"]="onVisibleRangeChange",t["OnTooltipIconClick"]="onTooltipIconClick",t["OnCrosshairChange"]="onCrosshairChange",t["OnCandleBarClick"]="onCandleBarClick",t["OnPaneDrag"]="onPaneDrag"})(Tt||(Tt={}));var Kt,Yt,Xt=function(){function t(){this._callbacks=[]}return t.prototype.subscribe=function(t){var e,i=null!==(e=this._callbacks.indexOf(t))&&void 0!==e?e:-1;i<0&&this._callbacks.push(t)},t.prototype.unsubscribe=function(t){var e;if(kt(t)){var i=null!==(e=this._callbacks.indexOf(t))&&void 0!==e?e:-1;i>-1&&this._callbacks.splice(i,1)}else this._callbacks=[]},t.prototype.execute=function(t){this._callbacks.forEach(function(e){e(t)})},t.prototype.isEmpty=function(){return 0===this._callbacks.length},t}();function jt(t,e,i,n,a){var r,o=e.result,s=e.figures,l=e.styles,c=Rt(l,"circles",n.circles),u=c.length,d=Rt(l,"bars",n.bars),h=d.length,p=Rt(l,"lines",n.lines),v=p.length,f=0,g=0,m=0,y=0;s.forEach(function(s){var l;switch(s.type){case"circle":y=f;var _=c[f%u];r=X(X({},_),{color:_.noChangeColor}),f++;break;case"bar":y=g;var b=d[g%h];r=X(X({},b),{color:b.noChangeColor}),g++;break;case"line":y=m,r=p[m%v],m++;break}if(At(r)){var x={prev:{kLineData:t[i-1],indicatorData:o[i-1]},current:{kLineData:t[i],indicatorData:o[i]},next:{kLineData:t[i+1],indicatorData:o[i+1]}},w=null===(l=s.styles)||void 0===l?void 0:l.call(s,x,e,n);a(s,X(X({},r),w),y)}})}(function(t){t["Init"]="init",t["Forward"]="forward",t["Backward"]="backward"})(Kt||(Kt={})),function(t){t["Normal"]="normal",t["Price"]="price",t["Volume"]="volume"}(Yt||(Yt={}));var Ut,Gt=function(){function t(t){this.result=[],this._precisionFlag=!1;var e=t.name,i=t.shortName,n=t.series,a=t.calcParams,r=t.figures,o=t.precision,s=t.shouldOhlc,l=t.shouldFormatBigNumber,c=t.visible,u=t.zLevel,d=t.minValue,h=t.maxValue,p=t.styles,v=t.extendData,f=t.regenerateFigures,g=t.createTooltipDataSource,m=t.draw;this.name=e,this.shortName=null!==i&&void 0!==i?i:e,this.series=null!==n&&void 0!==n?n:Yt.Normal,this.precision=null!==o&&void 0!==o?o:4,this.calcParams=null!==a&&void 0!==a?a:[],this.figures=null!==r&&void 0!==r?r:[],this.shouldOhlc=null!==s&&void 0!==s&&s,this.shouldFormatBigNumber=null!==l&&void 0!==l&&l,this.visible=null===c||void 0===c||c,this.zLevel=null!==u&&void 0!==u?u:0,this.minValue=null!==d&&void 0!==d?d:null,this.maxValue=null!==h&&void 0!==h?h:null,this.styles=St(null!==p&&void 0!==p?p:{}),this.extendData=v,this.regenerateFigures=null!==f&&void 0!==f?f:null,this.createTooltipDataSource=null!==g&&void 0!==g?g:null,this.draw=null!==m&&void 0!==m?m:null}return t.prototype.setShortName=function(t){return this.shortName!==t&&(this.shortName=t,!0)},t.prototype.setSeries=function(t){return this.series!==t&&(this.series=t,!0)},t.prototype.setPrecision=function(t,e){var i=null!==e&&void 0!==e&&e,n=Math.floor(t);return!(!(n!==this.precision&&t>=0)||i&&(!i||this._precisionFlag))&&(this.precision=n,i||(this._precisionFlag=!0),!0)},t.prototype.setCalcParams=function(t){var e,i;return this.calcParams=t,this.figures=null!==(i=null===(e=this.regenerateFigures)||void 0===e?void 0:e.call(this,t))&&void 0!==i?i:this.figures,!0},t.prototype.setShouldOhlc=function(t){return this.shouldOhlc!==t&&(this.shouldOhlc=t,!0)},t.prototype.setShouldFormatBigNumber=function(t){return this.shouldFormatBigNumber!==t&&(this.shouldFormatBigNumber=t,!0)},t.prototype.setVisible=function(t){return this.visible!==t&&(this.visible=t,!0)},t.prototype.setZLevel=function(t){return this.zLevel!==t&&(this.zLevel=t,!0)},t.prototype.setStyles=function(t){return wt(this.styles,t),!0},t.prototype.setExtendData=function(t){return this.extendData!==t&&(this.extendData=t,!0)},t.prototype.setFigures=function(t){return this.figures!==t&&(this.figures=t,!0)},t.prototype.setMinValue=function(t){return this.minValue!==t&&(this.minValue=t,!0)},t.prototype.setMaxValue=function(t){return this.maxValue!==t&&(this.maxValue=t,!0)},t.prototype.setRegenerateFigures=function(t){return this.regenerateFigures!==t&&(this.regenerateFigures=t,!0)},t.prototype.setCreateTooltipDataSource=function(t){return this.createTooltipDataSource!==t&&(this.createTooltipDataSource=t,!0)},t.prototype.setDraw=function(t){return this.draw!==t&&(this.draw=t,!0)},t.prototype.calcIndicator=function(t){return j(this,void 0,void 0,function(){var e;return U(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this.calc(t,this)];case 1:return e=i.sent(),this.result=e,[2,!0];case 2:return i.sent(),[2,!1];case 3:return[2]}})})},t.extend=function(e){var i=function(t){function i(){return t.call(this,e)||this}return L(i,t),i.prototype.calc=function(t,i){return e.calc(t,i)},i}(t);return i},t}();function Zt(){return["mouseClickEvent","mouseDoubleClickEvent","mouseRightClickEvent","tapEvent","doubleTapEvent","mouseDownEvent","touchStartEvent","mouseMoveEvent","touchMoveEvent"]}(function(t){t["Normal"]="normal",t["WeakMagnet"]="weak_magnet",t["StrongMagnet"]="strong_magnet"})(Ut||(Ut={}));var qt,Jt=1,Qt=-1,te="overlay_",ee="overlay_figure_",ie=function(){function t(t){this.currentStep=Jt,this.points=[],this._prevPressedPoint=null,this._prevPressedPoints=[];var e=t.mode,i=t.modeSensitivity,n=t.extendData,a=t.styles,r=t.name,o=t.totalStep,s=t.lock,l=t.visible,c=t.zLevel,u=t.needDefaultPointFigure,d=t.needDefaultXAxisFigure,h=t.needDefaultYAxisFigure,p=t.createPointFigures,v=t.createXAxisFigures,f=t.createYAxisFigures,g=t.performEventPressedMove,m=t.performEventMoveForDrawing,y=t.onDrawStart,_=t.onDrawing,b=t.onDrawEnd,x=t.onClick,w=t.onDoubleClick,S=t.onRightClick,C=t.onPressedMoveStart,k=t.onPressedMoving,I=t.onPressedMoveEnd,E=t.onMouseEnter,A=t.onMouseLeave,P=t.onRemoved,M=t.onSelected,D=t.onDeselected;this.name=r,this.totalStep=!Et(o)||o<2?1:o,this.lock=null!==s&&void 0!==s&&s,this.visible=null===l||void 0===l||l,this.zLevel=null!==c&&void 0!==c?c:0,this.needDefaultPointFigure=null!==u&&void 0!==u&&u,this.needDefaultXAxisFigure=null!==d&&void 0!==d&&d,this.needDefaultYAxisFigure=null!==h&&void 0!==h&&h,this.mode=null!==e&&void 0!==e?e:Ut.Normal,this.modeSensitivity=null!==i&&void 0!==i?i:8,this.extendData=n,this.styles=St(null!==a&&void 0!==a?a:{}),this.createPointFigures=null!==p&&void 0!==p?p:null,this.createXAxisFigures=null!==v&&void 0!==v?v:null,this.createYAxisFigures=null!==f&&void 0!==f?f:null,this.performEventPressedMove=null!==g&&void 0!==g?g:null,this.performEventMoveForDrawing=null!==m&&void 0!==m?m:null,this.onDrawStart=null!==y&&void 0!==y?y:null,this.onDrawing=null!==_&&void 0!==_?_:null,this.onDrawEnd=null!==b&&void 0!==b?b:null,this.onClick=null!==x&&void 0!==x?x:null,this.onDoubleClick=null!==w&&void 0!==w?w:null,this.onRightClick=null!==S&&void 0!==S?S:null,this.onPressedMoveStart=null!==C&&void 0!==C?C:null,this.onPressedMoving=null!==k&&void 0!==k?k:null,this.onPressedMoveEnd=null!==I&&void 0!==I?I:null,this.onMouseEnter=null!==E&&void 0!==E?E:null,this.onMouseLeave=null!==A&&void 0!==A?A:null,this.onRemoved=null!==P&&void 0!==P?P:null,this.onSelected=null!==M&&void 0!==M?M:null,this.onDeselected=null!==D&&void 0!==D?D:null}return t.prototype.setId=function(t){return!Mt(this.id)&&(this.id=t,!0)},t.prototype.setGroupId=function(t){return!Mt(this.groupId)&&(this.groupId=t,!0)},t.prototype.setPaneId=function(t){this.paneId=t},t.prototype.setExtendData=function(t){return t!==this.extendData&&(this.extendData=t,!0)},t.prototype.setStyles=function(t){return wt(this.styles,t),!0},t.prototype.setPoints=function(t){if(t.length>0){var e=void 0;if(this.points=q([],Z(t),!1),t.length>=this.totalStep-1?(this.currentStep=Qt,e=this.totalStep-1):(this.currentStep=t.length+1,e=t.length),null!==this.performEventMoveForDrawing)for(var i=0;is?n=r:a=r,o<=2)break}return n}function ve(t){var e=Math.floor(ye(t)),i=_e(e),n=t/i,a=0;return a=n<1.5?1:n<2.5?2:n<3.5?3:n<4.5?4:n<5.5?5:n<6.5?6:8,t=a*i,e>=-20?+t.toFixed(e<0?-e:0):t}function fe(t,e){null==e&&(e=10),e=Math.min(Math.max(0,e),20);var i=(+t).toFixed(e);return+i}function ge(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var a=e.indexOf(".");return a<0?0:e.length-1-a}function me(t,e,i){var n=[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER];return t.forEach(function(t){var a,r;n[0]=Math.max(null!==(a=t[e])&&void 0!==a?a:t,n[0]),n[1]=Math.min(null!==(r=t[i])&&void 0!==r?r:t,n[1])}),n}function ye(t){return Math.log(t)/Math.log(10)}function _e(t){return Math.pow(10,t)}function be(){return{from:0,to:0,realFrom:0,realTo:0}}var xe={MIN:1,MAX:50},we=8,Se=80,Ce=.88,ke=10,Ie=function(){function t(t){this._dateTimeFormat=this._buildDateTimeFormat(),this._zoomEnabled=!0,this._scrollEnabled=!0,this._totalBarSpace=0,this._barSpace=we,this._offsetRightDistance=Se,this._startLastBarRightSideDiffBarCount=0,this._scrollLimitRole=0,this._minVisibleBarCount={left:2,right:2},this._maxOffsetDistance={left:50,right:50},this._visibleRange=be(),this._chartStore=t,this._gapBarSpace=this._calcGapBarSpace(),this._lastBarRightSideDiffBarCount=this._offsetRightDistance/this._barSpace}return t.prototype._calcGapBarSpace=function(){var t;return this._barSpace>3?t=Math.floor(this._barSpace*Ce):(t=Math.floor(this._barSpace),t===this._barSpace&&t--),t%2===0&&t--,t=Math.max(1,t),t},t.prototype.adjustVisibleRange=function(){var t,e,i,n,a=this._chartStore.getDataList(),r=a.length,o=this._totalBarSpace/this._barSpace;1===this._scrollLimitRole?(i=(this._totalBarSpace-this._maxOffsetDistance.right)/this._barSpace,n=(this._totalBarSpace-this._maxOffsetDistance.left)/this._barSpace):(i=this._minVisibleBarCount.left,n=this._minVisibleBarCount.right),i=Math.max(0,i),n=Math.max(0,n);var s=o-Math.min(i,r);this._lastBarRightSideDiffBarCount>s&&(this._lastBarRightSideDiffBarCount=s);var l=-r+Math.min(n,r);this._lastBarRightSideDiffBarCountr&&(c=r);var d=Math.round(c-o)-1;d<0&&(d=0);var h=this._lastBarRightSideDiffBarCount>0?Math.round(r+this._lastBarRightSideDiffBarCount-o)-1:d;if(this._visibleRange={from:d,to:c,realFrom:h,realTo:u},this._chartStore.getActionStore().execute(Tt.OnVisibleRangeChange,this._visibleRange),this._chartStore.adjustVisibleDataList(),0===d){var p=a[0];this._chartStore.executeLoadMoreCallback(null!==(t=null===p||void 0===p?void 0:p.timestamp)&&void 0!==t?t:null),this._chartStore.executeLoadDataCallback({type:Kt.Forward,data:null!==p&&void 0!==p?p:null})}c===r&&this._chartStore.executeLoadDataCallback({type:Kt.Backward,data:null!==(e=a[r-1])&&void 0!==e?e:null})},t.prototype.getDateTimeFormat=function(){return this._dateTimeFormat},t.prototype._buildDateTimeFormat=function(t){var e={hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"};Mt(t)&&(e.timeZone=t);var i=null;try{i=new Intl.DateTimeFormat("en",e)}catch(n){_t("","","Timezone is error!!!")}return i},t.prototype.setTimezone=function(t){var e=this._buildDateTimeFormat(t);null!==e&&(this._dateTimeFormat=e)},t.prototype.getTimezone=function(){return this._dateTimeFormat.resolvedOptions().timeZone},t.prototype.getBarSpace=function(){return{bar:this._barSpace,halfBar:this._barSpace/2,gapBar:this._gapBarSpace,halfGapBar:Math.floor(this._gapBarSpace/2)}},t.prototype.setBarSpace=function(t,e){txe.MAX||this._barSpace===t||(this._barSpace=t,this._gapBarSpace=this._calcGapBarSpace(),null===e||void 0===e||e(),this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0))},t.prototype.setTotalBarSpace=function(t){return this._totalBarSpace!==t&&(this._totalBarSpace=t,this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0)),this},t.prototype.setOffsetRightDistance=function(t,e){return this._offsetRightDistance=1===this._scrollLimitRole?Math.min(this._maxOffsetDistance.right,t):t,this._lastBarRightSideDiffBarCount=this._offsetRightDistance/this._barSpace,null!==e&&void 0!==e&&e&&(this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0)),this},t.prototype.resetOffsetRightDistance=function(){this.setOffsetRightDistance(this._offsetRightDistance)},t.prototype.getInitialOffsetRightDistance=function(){return this._offsetRightDistance},t.prototype.getOffsetRightDistance=function(){return Math.max(0,this._lastBarRightSideDiffBarCount*this._barSpace)},t.prototype.getLastBarRightSideDiffBarCount=function(){return this._lastBarRightSideDiffBarCount},t.prototype.setLastBarRightSideDiffBarCount=function(t){return this._lastBarRightSideDiffBarCount=t,this},t.prototype.setMaxOffsetLeftDistance=function(t){return this._scrollLimitRole=1,this._maxOffsetDistance.left=t,this},t.prototype.setMaxOffsetRightDistance=function(t){return this._scrollLimitRole=1,this._maxOffsetDistance.right=t,this},t.prototype.setLeftMinVisibleBarCount=function(t){return this._scrollLimitRole=0,this._minVisibleBarCount.left=t,this},t.prototype.setRightMinVisibleBarCount=function(t){return this._scrollLimitRole=0,this._minVisibleBarCount.right=t,this},t.prototype.getVisibleRange=function(){return this._visibleRange},t.prototype.startScroll=function(){this._startLastBarRightSideDiffBarCount=this._lastBarRightSideDiffBarCount},t.prototype.scroll=function(t){if(this._scrollEnabled){var e=t/this._barSpace,i=this._lastBarRightSideDiffBarCount*this._barSpace;this._lastBarRightSideDiffBarCount=this._startLastBarRightSideDiffBarCount-e,this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0);var n=Math.round(i-this._lastBarRightSideDiffBarCount*this._barSpace);0!==n&&this._chartStore.getActionStore().execute(Tt.OnScroll,{distance:n})}},t.prototype.getDataByDataIndex=function(t){var e;return null!==(e=this._chartStore.getDataList()[t])&&void 0!==e?e:null},t.prototype.coordinateToFloatIndex=function(t){var e=this._chartStore.getDataList().length,i=(this._totalBarSpace-t)/this._barSpace,n=e+this._lastBarRightSideDiffBarCount-i;return Math.round(1e6*n)/1e6},t.prototype.dataIndexToTimestamp=function(t){var e,i=this.getDataByDataIndex(t);return null!==(e=null===i||void 0===i?void 0:i.timestamp)&&void 0!==e?e:null},t.prototype.timestampToDataIndex=function(t){var e=this._chartStore.getDataList();return 0===e.length?0:pe(e,"timestamp",t)},t.prototype.dataIndexToCoordinate=function(t){var e=this._chartStore.getDataList().length,i=e+this._lastBarRightSideDiffBarCount-t;return Math.floor(this._totalBarSpace-(i-.5)*this._barSpace)},t.prototype.coordinateToDataIndex=function(t){return Math.ceil(this.coordinateToFloatIndex(t))-1},t.prototype.zoom=function(t,e){var i,n=this;if(this._zoomEnabled){var a=null!==e&&void 0!==e?e:null;if(!Et(null===a||void 0===a?void 0:a.x)){var r=this._chartStore.getTooltipStore().getCrosshair();a={x:null!==(i=null===r||void 0===r?void 0:r.x)&&void 0!==i?i:this._totalBarSpace/2}}var o=a.x,s=this.coordinateToFloatIndex(o),l=this._barSpace,c=this._barSpace+t*(this._barSpace/ke);this.setBarSpace(c,function(){n._lastBarRightSideDiffBarCount+=s-n.coordinateToFloatIndex(o)});var u=this._barSpace/l;1!==u&&this._chartStore.getActionStore().execute(Tt.OnZoom,{scale:u})}},t.prototype.setZoomEnabled=function(t){return this._zoomEnabled=t,this},t.prototype.getZoomEnabled=function(){return this._zoomEnabled},t.prototype.setScrollEnabled=function(t){return this._scrollEnabled=t,this},t.prototype.getScrollEnabled=function(){return this._scrollEnabled},t.prototype.clear=function(){this._visibleRange=be()},t}(),Ee={name:"AVP",shortName:"AVP",series:Yt.Price,precision:2,figures:[{key:"avp",title:"AVP: ",type:"line"}],calc:function(t){var e=0,i=0;return t.map(function(t){var n,a,r={},o=null!==(n=null===t||void 0===t?void 0:t.turnover)&&void 0!==n?n:0,s=null!==(a=null===t||void 0===t?void 0:t.volume)&&void 0!==a?a:0;return e+=o,i+=s,0!==i&&(r.avp=e/i),r})}},Ae={name:"AO",shortName:"AO",calcParams:[5,34],figures:[{key:"ao",title:"AO: ",type:"bar",baseValue:0,styles:function(t,e,i){var n,a,r,o,s,l=t.prev,c=t.current,u=null!==(a=null===(n=l.indicatorData)||void 0===n?void 0:n.ao)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,d=null!==(o=null===(r=c.indicatorData)||void 0===r?void 0:r.ao)&&void 0!==o?o:Number.MIN_SAFE_INTEGER;s=d>u?Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):Rt(e.styles,"bars[0].downColor",i.bars[0].downColor);var h=d>u?O.Stroke:O.Fill;return{color:s,style:h,borderColor:s}}}],calc:function(t,e){var i=e.calcParams,n=Math.max(i[0],i[1]),a=0,r=0,o=0,s=0;return t.map(function(e,l){var c={},u=(e.low+e.high)/2;if(a+=u,r+=u,l>=i[0]-1){o=a/i[0];var d=t[l-(i[0]-1)];a-=(d.low+d.high)/2}if(l>=i[1]-1){s=r/i[1];d=t[l-(i[1]-1)];r-=(d.low+d.high)/2}return l>=n-1&&(c.ao=o-s),c})}},Pe={name:"BIAS",shortName:"BIAS",calcParams:[6,12,24],figures:[{key:"bias1",title:"BIAS6: ",type:"line"},{key:"bias2",title:"BIAS12: ",type:"line"},{key:"bias3",title:"BIAS24: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"bias".concat(e+1),title:"BIAS".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[];return t.map(function(e,r){var o={},s=e.close;return i.forEach(function(e,l){var c;if(a[l]=(null!==(c=a[l])&&void 0!==c?c:0)+s,r>=e-1){var u=a[l]/i[l];o[n[l].key]=(s-u)/u*100,a[l]-=t[r-(e-1)].close}}),o})}};function Me(t,e){var i=t.length,n=0;return t.forEach(function(t){var i=t.close-e;n+=i*i}),n=Math.abs(n),Math.sqrt(n/i)}var De={name:"BOLL",shortName:"BOLL",series:Yt.Price,calcParams:[20,2],precision:2,shouldOhlc:!0,figures:[{key:"up",title:"UP: ",type:"line"},{key:"mid",title:"MID: ",type:"line"},{key:"dn",title:"DN: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=i[0]-1,a=0;return t.map(function(e,r){var o=e.close,s={};if(a+=o,r>=n){s.mid=a/i[0];var l=Me(t.slice(r-n,r+1),s.mid);s.up=s.mid+i[1]*l,s.dn=s.mid-i[1]*l,a-=t[r-n].close}return s})}},Te={name:"BRAR",shortName:"BRAR",calcParams:[26],figures:[{key:"br",title:"BR: ",type:"line"},{key:"ar",title:"AR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0;return t.map(function(e,s){var l,c,u={},d=e.high,h=e.low,p=e.open,v=(null!==(l=t[s-1])&&void 0!==l?l:e).close;if(r+=d-p,o+=p-h,n+=d-v,a+=v-h,s>=i[0]-1){u.ar=0!==o?r/o*100:0,u.br=0!==a?n/a*100:0;var f=t[s-(i[0]-1)],g=f.high,m=f.low,y=f.open,_=(null!==(c=t[s-i[0]])&&void 0!==c?c:t[s-(i[0]-1)]).close;n-=g-_,a-=_-m,r-=g-y,o-=y-m}return u})}},Be={name:"BBI",shortName:"BBI",series:Yt.Price,precision:2,calcParams:[3,6,12,24],shouldOhlc:!0,figures:[{key:"bbi",title:"BBI: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.max.apply(Math,q([],Z(i),!1)),a=[],r=[];return t.map(function(e,o){var s={},l=e.close;if(i.forEach(function(e,i){var n;a[i]=(null!==(n=a[i])&&void 0!==n?n:0)+l,o>=e-1&&(r[i]=a[i]/e,a[i]-=t[o-(e-1)].close)}),o>=n-1){var c=0;r.forEach(function(t){c+=t}),s.bbi=c/4}return s})}},Fe={name:"CCI",shortName:"CCI",calcParams:[20],figures:[{key:"cci",title:"CCI: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=i[0]-1,a=0,r=[];return t.map(function(e,o){var s={},l=(e.high+e.low+e.close)/3;if(a+=l,r.push(l),o>=n){var c=a/i[0],u=r.slice(o-n,o+1),d=0;u.forEach(function(t){d+=Math.abs(t-c)});var h=d/i[0];s.cci=0!==h?(l-c)/h/.015:0;var p=(t[o-n].high+t[o-n].low+t[o-n].close)/3;a-=p}return s})}},Re={name:"CR",shortName:"CR",calcParams:[26,10,20,40,60],figures:[{key:"cr",title:"CR: ",type:"line"},{key:"ma1",title:"MA1: ",type:"line"},{key:"ma2",title:"MA2: ",type:"line"},{key:"ma3",title:"MA3: ",type:"line"},{key:"ma4",title:"MA4: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.ceil(i[1]/2.5+1),a=Math.ceil(i[2]/2.5+1),r=Math.ceil(i[3]/2.5+1),o=Math.ceil(i[4]/2.5+1),s=0,l=[],c=0,u=[],d=0,h=[],p=0,v=[],f=[];return t.forEach(function(e,g){var m,y,_,b,x,w={},S=null!==(m=t[g-1])&&void 0!==m?m:e,C=(S.high+S.close+S.low+S.open)/4,k=Math.max(0,e.high-C),I=Math.max(0,C-e.low);g>=i[0]-1&&(w.cr=0!==I?k/I*100:0,s+=w.cr,c+=w.cr,d+=w.cr,p+=w.cr,g>=i[0]+i[1]-2&&(l.push(s/i[1]),g>=i[0]+i[1]+n-3&&(w.ma1=l[l.length-1-n]),s-=null!==(y=f[g-(i[1]-1)].cr)&&void 0!==y?y:0),g>=i[0]+i[2]-2&&(u.push(c/i[2]),g>=i[0]+i[2]+a-3&&(w.ma2=u[u.length-1-a]),c-=null!==(_=f[g-(i[2]-1)].cr)&&void 0!==_?_:0),g>=i[0]+i[3]-2&&(h.push(d/i[3]),g>=i[0]+i[3]+r-3&&(w.ma3=h[h.length-1-r]),d-=null!==(b=f[g-(i[3]-1)].cr)&&void 0!==b?b:0),g>=i[0]+i[4]-2&&(v.push(p/i[4]),g>=i[0]+i[4]+o-3&&(w.ma4=v[v.length-1-o]),p-=null!==(x=f[g-(i[4]-1)].cr)&&void 0!==x?x:0)),f.push(w)}),f}},Le={name:"DMA",shortName:"DMA",calcParams:[10,50,10],figures:[{key:"dma",title:"DMA: ",type:"line"},{key:"ama",title:"AMA: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.max(i[0],i[1]),a=0,r=0,o=0,s=[];return t.forEach(function(e,l){var c,u={},d=e.close;a+=d,r+=d;var h=0,p=0;if(l>=i[0]-1&&(h=a/i[0],a-=t[l-(i[0]-1)].close),l>=i[1]-1&&(p=r/i[1],r-=t[l-(i[1]-1)].close),l>=n-1){var v=h-p;u.dma=v,o+=v,l>=n+i[2]-2&&(u.ama=o/i[2],o-=null!==(c=s[l-(i[2]-1)].dma)&&void 0!==c?c:0)}s.push(u)}),s}},Ne={name:"DMI",shortName:"DMI",calcParams:[14,6],figures:[{key:"pdi",title:"PDI: ",type:"line"},{key:"mdi",title:"MDI: ",type:"line"},{key:"adx",title:"ADX: ",type:"line"},{key:"adxr",title:"ADXR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0,s=0,l=0,c=0,u=0,d=[];return t.forEach(function(e,h){var p,v,f={},g=null!==(p=t[h-1])&&void 0!==p?p:e,m=g.close,y=e.high,_=e.low,b=y-_,x=Math.abs(y-m),w=Math.abs(m-_),S=y-g.high,C=g.low-_,k=Math.max(Math.max(b,x),w),I=S>0&&S>C?S:0,E=C>0&&C>S?C:0;if(n+=k,a+=I,r+=E,h>=i[0]-1){h>i[0]-1?(o=o-o/i[0]+k,s=s-s/i[0]+I,l=l-l/i[0]+E):(o=n,s=a,l=r);var A=0,P=0;0!==o&&(A=100*s/o,P=100*l/o),f.pdi=A,f.mdi=P;var M=0;P+A!==0&&(M=Math.abs(P-A)/(P+A)*100),c+=M,h>=2*i[0]-2&&(u=h>2*i[0]-2?(u*(i[0]-1)+M)/i[0]:c/i[0],f.adx=u,h>=2*i[0]+i[1]-3&&(f.adxr=((null!==(v=d[h-(i[1]-1)].adx)&&void 0!==v?v:0)+u)/2))}d.push(f)}),d}},Oe={name:"EMV",shortName:"EMV",calcParams:[14,9],figures:[{key:"emv",title:"EMV: ",type:"line"},{key:"maEmv",title:"MAEMV: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=[];return t.map(function(e,r){var o,s={};if(r>0){var l=t[r-1],c=e.high,u=e.low,d=null!==(o=e.volume)&&void 0!==o?o:0,h=(c+u)/2-(l.high+l.low)/2;if(0===d||c-u===0)s.emv=0;else{var p=d/1e8/(c-u);s.emv=h/p}n+=s.emv,a.push(s.emv),r>=i[0]&&(s.maEmv=n/i[0],n-=a[r-i[0]])}return s})}},ze={name:"EMA",shortName:"EMA",series:Yt.Price,calcParams:[6,12,20],precision:2,shouldOhlc:!0,figures:[{key:"ema1",title:"EMA6: ",type:"line"},{key:"ema2",title:"EMA12: ",type:"line"},{key:"ema3",title:"EMA20: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"ema".concat(e+1),title:"EMA".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=0,r=[];return t.map(function(t,e){var o={},s=t.close;return a+=s,i.forEach(function(t,i){e>=t-1&&(r[i]=e>t-1?(2*s+(t-1)*r[i])/(t+1):a/t,o[n[i].key]=r[i])}),o})}},Ve={name:"MTM",shortName:"MTM",calcParams:[12,6],figures:[{key:"mtm",title:"MTM: ",type:"line"},{key:"maMtm",title:"MAMTM: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=[];return t.forEach(function(e,r){var o,s={};if(r>=i[0]){var l=e.close,c=t[r-i[0]].close;s.mtm=l-c,n+=s.mtm,r>=i[0]+i[1]-1&&(s.maMtm=n/i[1],n-=null!==(o=a[r-(i[1]-1)].mtm)&&void 0!==o?o:0)}a.push(s)}),a}},We={name:"MA",shortName:"MA",series:Yt.Price,calcParams:[5,10,30,60],precision:2,shouldOhlc:!0,figures:[{key:"ma5",title:"MA5: ",type:"line"},{key:"ma10",title:"MA10: ",type:"line"},{key:"ma30",title:"MA30: ",type:"line"},{key:"ma60",title:"MA60: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"ma".concat(e+1),title:"MA".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[];return t.map(function(e,r){var o={},s=e.close;return i.forEach(function(e,i){var l;a[i]=(null!==(l=a[i])&&void 0!==l?l:0)+s,r>=e-1&&(o[n[i].key]=a[i]/e,a[i]-=t[r-(e-1)].close)}),o})}},He={name:"MACD",shortName:"MACD",calcParams:[12,26,9],figures:[{key:"dif",title:"DIF: ",type:"line"},{key:"dea",title:"DEA: ",type:"line"},{key:"macd",title:"MACD: ",type:"bar",baseValue:0,styles:function(t,e,i){var n,a,r,o,s,l=t.prev,c=t.current,u=null!==(a=null===(n=l.indicatorData)||void 0===n?void 0:n.macd)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,d=null!==(o=null===(r=c.indicatorData)||void 0===r?void 0:r.macd)&&void 0!==o?o:Number.MIN_SAFE_INTEGER;s=d>0?Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):d<0?Rt(e.styles,"bars[0].downColor",i.bars[0].downColor):Rt(e.styles,"bars[0].noChangeColor",i.bars[0].noChangeColor);var h=u=a[0]-1&&(i=e>a[0]-1?(2*d+(a[0]-1)*i)/(a[0]+1):r/a[0]),e>=a[1]-1&&(n=e>a[1]-1?(2*d+(a[1]-1)*n)/(a[1]+1):r/a[1]),e>=c-1&&(o=i-n,u.dif=o,s+=o,e>=c+a[2]-2&&(l=e>c+a[2]-2?(2*o+l*(a[2]-1))/(a[2]+1):s/a[2],u.macd=2*(o-l),u.dea=l)),u})}},$e={name:"OBV",shortName:"OBV",calcParams:[30],figures:[{key:"obv",title:"OBV: ",type:"line"},{key:"maObv",title:"MAOBV: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=[];return t.forEach(function(e,o){var s,l,c,u,d=null!==(s=t[o-1])&&void 0!==s?s:e;e.closed.close&&(a+=null!==(c=e.volume)&&void 0!==c?c:0);var h={obv:a};n+=a,o>=i[0]-1&&(h.maObv=n/i[0],n-=null!==(u=r[o-(i[0]-1)].obv)&&void 0!==u?u:0),r.push(h)}),r}},Ke={name:"PVT",shortName:"PVT",figures:[{key:"pvt",title:"PVT: ",type:"line"}],calc:function(t){var e=0;return t.map(function(i,n){var a,r,o={},s=i.close,l=null!==(a=i.volume)&&void 0!==a?a:1,c=(null!==(r=t[n-1])&&void 0!==r?r:i).close,u=0,d=c*l;return 0!==d&&(u=(s-c)/d),e+=u,o.pvt=e,o})}},Ye={name:"PSY",shortName:"PSY",calcParams:[12,6],figures:[{key:"psy",title:"PSY: ",type:"line"},{key:"maPsy",title:"MAPSY: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=[],o=[];return t.forEach(function(e,s){var l,c,u={},d=(null!==(l=t[s-1])&&void 0!==l?l:e).close,h=e.close-d>0?1:0;r.push(h),n+=h,s>=i[0]-1&&(u.psy=n/i[0]*100,a+=u.psy,s>=i[0]+i[1]-2&&(u.maPsy=a/i[1],a-=null!==(c=o[s-(i[1]-1)].psy)&&void 0!==c?c:0),n-=r[s-(i[0]-1)]),o.push(u)}),o}},Xe={name:"ROC",shortName:"ROC",calcParams:[12,6],figures:[{key:"roc",title:"ROC: ",type:"line"},{key:"maRoc",title:"MAROC: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=[],a=0;return t.forEach(function(e,r){var o,s,l={};if(r>=i[0]-1){var c=e.close,u=(null!==(o=t[r-i[0]])&&void 0!==o?o:t[r-(i[0]-1)]).close;l.roc=0!==u?(c-u)/u*100:0,a+=l.roc,r>=i[0]-1+i[1]-1&&(l.maRoc=a/i[1],a-=null!==(s=n[r-(i[1]-1)].roc)&&void 0!==s?s:0)}n.push(l)}),n}},je={name:"RSI",shortName:"RSI",calcParams:[6,12,24],figures:[{key:"rsi1",title:"RSI1: ",type:"line"},{key:"rsi2",title:"RSI2: ",type:"line"},{key:"rsi3",title:"RSI3: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){var i=e+1;return{key:"rsi".concat(i),title:"RSI".concat(i,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[],r=[];return t.map(function(e,o){var s,l={},c=(null!==(s=t[o-1])&&void 0!==s?s:e).close,u=e.close-c;return i.forEach(function(e,i){var s,c,d;if(u>0?a[i]=(null!==(s=a[i])&&void 0!==s?s:0)+u:r[i]=(null!==(c=r[i])&&void 0!==c?c:0)+Math.abs(u),o>=e-1){0!==r[i]?l[n[i].key]=100-100/(1+a[i]/r[i]):l[n[i].key]=0;var h=t[o-(e-1)],p=null!==(d=t[o-e])&&void 0!==d?d:h,v=h.close-p.close;v>0?a[i]-=v:r[i]-=Math.abs(v)}}),l})}},Ue={name:"SMA",shortName:"SMA",series:Yt.Price,calcParams:[12,2],precision:2,figures:[{key:"sma",title:"SMA: ",type:"line"}],shouldOhlc:!0,calc:function(t,e){var i=e.calcParams,n=0,a=0;return t.map(function(t,e){var r={},o=t.close;return n+=o,e>=i[0]-1&&(a=e>i[0]-1?(o*i[1]+a*(i[0]-i[1]+1))/(i[0]+1):n/i[0],r.sma=a),r})}},Ge={name:"KDJ",shortName:"KDJ",calcParams:[9,3,3],figures:[{key:"k",title:"K: ",type:"line"},{key:"d",title:"D: ",type:"line"},{key:"j",title:"J: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=[];return t.forEach(function(e,a){var r,o,s,l,c={},u=e.close;if(a>=i[0]-1){var d=me(t.slice(a-(i[0]-1),a+1),"high","low"),h=d[0],p=d[1],v=h-p,f=(u-p)/(0===v?1:v)*100;c.k=((i[1]-1)*(null!==(o=null===(r=n[a-1])||void 0===r?void 0:r.k)&&void 0!==o?o:50)+f)/i[1],c.d=((i[2]-1)*(null!==(l=null===(s=n[a-1])||void 0===s?void 0:s.d)&&void 0!==l?l:50)+c.k)/i[2],c.j=3*c.k-2*c.d}n.push(c)}),n}},Ze={name:"SAR",shortName:"SAR",series:Yt.Price,calcParams:[2,2,20],precision:2,shouldOhlc:!0,figures:[{key:"sar",title:"SAR: ",type:"circle",styles:function(t,e,i){var n,a,r=t.current,o=null!==(a=null===(n=r.indicatorData)||void 0===n?void 0:n.sar)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,s=r.kLineData,l=((null===s||void 0===s?void 0:s.high)+(null===s||void 0===s?void 0:s.low))/2,c=oe.low?(c=s,o=n,s=-100,l=!l):c>p&&(c=p)}else{(-100===s||s>h)&&(s=h,o=Math.min(o+a,r)),c=u+o*(s-u);var v=Math.max(t[Math.max(1,i)-1].high,d);c=r[0]-1&&(i=e>r[0]-1?(2*p+(r[0]-1)*i)/(r[0]+1):o/r[0],s+=i,e>=2*r[0]-2&&(n=e>2*r[0]-2?(2*i+(r[0]-1)*n)/(r[0]+1):s/r[0],l+=n,e>=3*r[0]-3))){var v=void 0,f=0;e>3*r[0]-3?(v=(2*n+(r[0]-1)*a)/(r[0]+1),f=(v-a)/a*100):v=l/r[0],a=v,h.trix=f,c+=f,e>=3*r[0]+r[1]-4&&(h.maTrix=c/r[1],c-=null!==(d=u[e-(r[1]-1)].trix)&&void 0!==d?d:0)}u.push(h)}),u}};function Je(){return{key:"volume",title:"VOLUME: ",type:"bar",baseValue:0,styles:function(t,e,i){var n=t.current.kLineData,a=Rt(e.styles,"bars[0].noChangeColor",i.bars[0].noChangeColor);return At(n)&&(n.close>n.open?a=Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):n.close=e-1&&(l[n[i].key]=a[i]/e,a[i]-=null!==(c=t[r-(e-1)].volume)&&void 0!==c?c:0)}),l})}},ti={name:"VR",shortName:"VR",calcParams:[26,6],figures:[{key:"vr",title:"VR: ",type:"line"},{key:"maVr",title:"MAVR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0,s=[];return t.forEach(function(e,l){var c,u,d,h,p,v={},f=e.close,g=(null!==(c=t[l-1])&&void 0!==c?c:e).close,m=null!==(u=e.volume)&&void 0!==u?u:0;if(f>g?n+=m:f=i[0]-1){var y=r/2;v.vr=a+y===0?0:(n+y)/(a+y)*100,o+=v.vr,l>=i[0]+i[1]-2&&(v.maVr=o/i[1],o-=null!==(d=s[l-(i[1]-1)].vr)&&void 0!==d?d:0);var _=t[l-(i[0]-1)],b=null!==(h=t[l-i[0]])&&void 0!==h?h:_,x=_.close,w=null!==(p=_.volume)&&void 0!==p?p:0;x>b.close?n-=w:x=s){var l=me(t.slice(a-s,a+1),"high","low"),c=l[0],u=l[1],d=c-u;r[n[i].key]=0===d?0:(o-c)/d*100}}),r})}},ii={},ni=[Ee,Ae,Pe,De,Te,Be,Fe,Re,Le,Ne,Oe,ze,Ve,We,He,$e,Ke,Ye,Xe,je,Ue,Ge,Ze,qe,Qe,ti,ei];function ai(t){ii[t.name]=Gt.extend(t)}function ri(t){var e;return null!==(e=ii[t])&&void 0!==e?e:null}ni.forEach(function(t){ii[t.name]=Gt.extend(t)});var oi=function(){function t(t){this._instances=new Map,this._chartStore=t}return t.prototype._overrideInstance=function(t,e){var i=e.shortName,n=e.series,a=e.calcParams,r=e.precision,o=e.figures,s=e.minValue,l=e.maxValue,c=e.shouldOhlc,u=e.shouldFormatBigNumber,d=e.visible,h=e.zLevel,p=e.styles,v=e.extendData,f=e.regenerateFigures,g=e.createTooltipDataSource,m=e.draw,y=e.calc,_=!1;Mt(i)&&t.setShortName(i)&&(_=!0),At(n)&&t.setSeries(n)&&(_=!0);var b=!1;Ct(a)&&t.setCalcParams(a)&&(_=!0,b=!0),Ct(o)&&t.setFigures(o)&&(_=!0,b=!0),void 0!==s&&t.setMinValue(s)&&(_=!0),void 0!==l&&t.setMinValue(l)&&(_=!0),Et(r)&&t.setPrecision(r)&&(_=!0),Pt(c)&&t.setShouldOhlc(c)&&(_=!0),Pt(u)&&t.setShouldFormatBigNumber(u)&&(_=!0),Pt(d)&&t.setVisible(d)&&(_=!0);var x=!1;return Et(h)&&t.setZLevel(h)&&(_=!0,x=!0),At(p)&&t.setStyles(p)&&(_=!0),void 0!==v&&t.setExtendData(v)&&(_=!0,b=!0),void 0!==f&&t.setRegenerateFigures(f)&&(_=!0),void 0!==g&&t.setCreateTooltipDataSource(g)&&(_=!0),void 0!==m&&t.setDraw(m)&&(_=!0),kt(y)&&(t.calc=y,b=!0),[_,b,x]},t.prototype._sort=function(t){var e;Mt(t)?null===(e=this._instances.get(t))||void 0===e||e.sort(function(t,e){return t.zLevel-e.zLevel}):this._instances.forEach(function(t){t.sort(function(t,e){return t.zLevel-e.zLevel})})},t.prototype.addInstance=function(t,e,i){return j(this,void 0,void 0,function(){var n,a,r,o,s;return U(this,function(l){switch(l.label){case 0:return n=t.name,a=this._instances.get(e),At(a)?(r=a.find(function(t){return t.name===n}),At(r)?[4,Promise.reject(new Error("Duplicate indicators."))]:[3,2]):[3,2];case 1:return[2,l.sent()];case 2:return At(a)||(a=[]),o=ri(n),s=new o,this.synchronizeSeriesPrecision(s),this._overrideInstance(s,t),i||(a=[]),a.push(s),this._instances.set(e,a),this._sort(e),[4,s.calcIndicator(this._chartStore.getDataList())];case 3:return[2,l.sent()]}})})},t.prototype.getInstances=function(t){var e;return null!==(e=this._instances.get(t))&&void 0!==e?e:[]},t.prototype.removeInstance=function(t,e){var i,n=!1,a=this._instances.get(t);if(At(a)){if(Mt(e)){var r=a.findIndex(function(t){return t.name===e});r>-1&&(a.splice(r,1),n=!0)}else this._instances.set(t,[]),n=!0;0===(null===(i=this._instances.get(t))||void 0===i?void 0:i.length)&&this._instances.delete(t)}return n},t.prototype.hasInstances=function(t){return this._instances.has(t)},t.prototype.calcInstance=function(t,e){return j(this,void 0,void 0,function(){var i,n,a,r,o=this;return U(this,function(s){switch(s.label){case 0:return i=[],Mt(t)?Mt(e)?(n=this._instances.get(e),At(n)&&(a=n.find(function(e){return e.name===t}),At(a)&&i.push(a.calcIndicator(this._chartStore.getDataList())))):this._instances.forEach(function(e){var n=e.find(function(e){return e.name===t});At(n)&&i.push(n.calcIndicator(o._chartStore.getDataList()))}):this._instances.forEach(function(t){t.forEach(function(t){i.push(t.calcIndicator(o._chartStore.getDataList()))})}),[4,Promise.all(i)];case 1:return r=s.sent(),[2,r.includes(!0)]}})})},t.prototype.getInstanceByPaneId=function(t,e){var i,n,a=function(t){var e=new Map;return t.forEach(function(t){e.set(t.name,t)}),e};if(Mt(t)){var r=null!==(i=this._instances.get(t))&&void 0!==i?i:[];return Mt(e)?null!==(n=null===r||void 0===r?void 0:r.find(function(t){return t.name===e}))&&void 0!==n?n:null:a(r)}var o=new Map;return this._instances.forEach(function(t,e){o.set(e,a(t))}),o},t.prototype.synchronizeSeriesPrecision=function(t){var e=this._chartStore.getPrecision(),i=e.price,n=e.volume,a=function(t){switch(t.series){case Yt.Price:t.setPrecision(i,!0);break;case Yt.Volume:t.setPrecision(n,!0);break}};At(t)?a(t):this._instances.forEach(function(t){t.forEach(function(t){a(t)})})},t.prototype.override=function(t,e){return j(this,void 0,void 0,function(){var i,n,a,r,o,s,l,c=this;return U(this,function(u){switch(u.label){case 0:return i=t.name,n=new Map,null!==e?(a=this._instances.get(e),At(a)&&n.set(e,a)):n=this._instances,r=!1,o=[],s=!1,n.forEach(function(e){var n=e.find(function(t){return t.name===i});if(At(n)){var a=c._overrideInstance(n,t);a[2]&&(s=!0),a[1]?o.push(n.calcIndicator(c._chartStore.getDataList())):a[0]&&(r=!0)}}),s&&this._sort(),[4,Promise.all(o)];case 1:return l=u.sent(),[2,[r,l.includes(!0)]]}})})},t}(),si=function(){function t(t){this._crosshair={},this._activeIcon=null,this._chartStore=t}return t.prototype.setCrosshair=function(t,e){var i,n,a=null!==e&&void 0!==e?e:{},r=a.notInvalidate,o=a.notExecuteAction,s=this._chartStore.getDataList(),l=null!==t&&void 0!==t?t:{};Et(l.x)?(i=this._chartStore.getTimeScaleStore().coordinateToDataIndex(l.x),n=i<0?0:i>s.length-1?s.length-1:i):(i=s.length-1,n=i);var c=s[n],u=this._chartStore.getTimeScaleStore().dataIndexToCoordinate(i),d={x:this._crosshair.x,y:this._crosshair.y,paneId:this._crosshair.paneId};this._crosshair=X(X({},l),{realX:u,kLineData:c,realDataIndex:i,dataIndex:n}),d.x===l.x&&d.y===l.y&&d.paneId===l.paneId||(null===c||null!==o&&void 0!==o&&o||this._chartStore.getChart().crosshairChange(this._crosshair),null!==r&&void 0!==r&&r||this._chartStore.getChart().updatePane(1))},t.prototype.recalculateCrosshair=function(t){this.setCrosshair(this._crosshair,{notInvalidate:t})},t.prototype.getCrosshair=function(){return this._crosshair},t.prototype.setActiveIcon=function(t){this._activeIcon=null!==t&&void 0!==t?t:null},t.prototype.getActiveIcon=function(){return this._activeIcon},t.prototype.clear=function(){this.setCrosshair({},{notInvalidate:!0}),this.setActiveIcon()},t}(),li={name:"fibonacciLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e,i=t.coordinates,n=t.bounding,a=t.overlay,r=t.precision,o=t.thousandsSeparator,s=t.decimalFoldThreshold,l=t.yAxis,c=a.points;if(i.length>0){var u=null===(e=null===l||void 0===l?void 0:l.isInCandle())||void 0===e||e?r.price:r.excludePriceVolumeMax,d=[],h=[],p=0,v=n.width;if(i.length>1&&Et(c[0].value)&&Et(c[1].value)){var f=[1,.786,.618,.5,.382,.236,0],g=i[0].y-i[1].y,m=c[0].value-c[1].value;f.forEach(function(t){var e,n=i[1].y+g*t,a=Vt(zt(((null!==(e=c[1].value)&&void 0!==e?e:0)+m*t).toFixed(u),o),s);d.push({coordinates:[{x:p,y:n},{x:v,y:n}]}),h.push({x:p,y:n,text:"".concat(a," (").concat((100*t).toFixed(1),"%)"),baseline:"bottom"})})}return[{type:"line",attrs:d},{type:"text",isCheckEvent:!1,attrs:h}]}return[]}},ci={name:"horizontalRayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding,n={x:0,y:e[0].y};return At(e[1])&&e[0].x-1)for(var a=n;a>-1;a--)if(this._children[a].dispatchEvent(t,e,i))return!0;return this.onEvent(t,e,i)},t.prototype.addChild=function(t){return this._children.push(t),this},t.prototype.clear=function(){this._children=[]},t}(),pi=2,vi=function(t){function e(e){var i=t.call(this)||this;return i.attrs=e.attrs,i.styles=e.styles,i}return L(e,t),e.prototype.checkEventOn=function(t){return this.checkEventOnImp(t,this.attrs,this.styles)},e.prototype.setAttrs=function(t){return this.attrs=t,this},e.prototype.setStyles=function(t){return this.styles=t,this},e.prototype.draw=function(t){this.drawImp(t,this.attrs,this.styles)},e.extend=function(t){var i=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return L(i,e),i.prototype.checkEventOnImp=function(e,i,n){return t.checkEventOn(e,i,n)},i.prototype.drawImp=function(e,i,n){t.draw(e,i,n)},i}(e);return i},e}(hi);function fi(t,e){var i=[];i=i.concat(e);for(var n=0;n1)for(var r=1;r0&&i<1?i:0:i?.5:0;if(a>0&&n>2){for(var r=e[0].x,o=e[0].y,s=1;s1&&(2!==i.length||i[0].x!==i[1].x&&i[0].y!==i[1].y?(t.save(),c%2===1&&t.translate(.5,.5),t.beginPath(),t.moveTo(i[0].x,i[0].y),_i(t,i,s),t.stroke(),t.closePath(),t.restore()):(t.beginPath(),i[0].x===i[1].x?(t.moveTo(i[0].x+v,i[0].y),t.lineTo(i[1].x+v,i[1].y)):(t.moveTo(i[0].x,i[0].y+v),t.lineTo(i[1].x,i[1].y+v)),t.stroke(),t.closePath()))})}var xi={name:"line",checkEventOn:fi,draw:function(t,e,i){bi(t,e,i)}};function wi(t,e,i){var n=null!==i&&void 0!==i?i:0,a=[];if(t.length>1)if(t[0].x===t[1].x){var r=0,o=e.height;if(a.push({coordinates:[{x:t[0].x,y:r},{x:t[0].x,y:o}]}),t.length>2){a.push({coordinates:[{x:t[2].x,y:r},{x:t[2].x,y:o}]});for(var s=t[0].x-t[2].x,l=0;l2){var f=t[2].y-p*t[2].x;a.push({coordinates:[{x:u,y:u*p+f},{x:d,y:d*p+f}]});for(s=v-f,l=0;l1){var i=void 0;return i=t[0].x===t[1].x&&t[0].y!==t[1].y?t[0].yt[1].x?{x:0,y:mi(t[0],t[1],{x:0,y:t[0].y})}:{x:e.width,y:mi(t[0],t[1],{x:e.width,y:t[0].y})},{coordinates:[t[0],i]}}return[]}var Ei={name:"rayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;return[{type:"line",attrs:Ii(e,i)}]}},Ai={name:"segment",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates;return 2===e.length?[{type:"line",attrs:{coordinates:e}}]:[]}},Pi={name:"straightLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;return 2===e.length?e[0].x===e[1].x?[{type:"line",attrs:{coordinates:[{x:e[0].x,y:0},{x:e[0].x,y:i.height}]}}]:[{type:"line",attrs:{coordinates:[{x:0,y:mi(e[0],e[1],{x:0,y:e[0].y})},{x:i.width,y:mi(e[0],e[1],{x:i.width,y:e[0].y})}]}}]:[]}},Mi={name:"verticalRayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;if(2===e.length){var n={x:e[0].x,y:0};return e[0].y0&&l.set(e[0],n)};try{for(var u=G(this._instances),d=u.next();!d.done;d=u.next()){var h=d.value;c(h)}}catch(v){e={error:v}}finally{try{d&&!d.done&&(i=u.return)&&i.call(u)}finally{if(e)throw e.error}}this._instances=l}else this._instances.forEach(function(t,e){r.push(e),t.forEach(function(t){var e;null===(e=t.onRemoved)||void 0===e||e.call(t,{overlay:t})})}),this._instances.clear();if(r.length>0){var p=this._chartStore.getChart();r.forEach(function(t){p.updatePane(1,t)}),p.updatePane(1,Wi.X_AXIS)}},t.prototype.setPressedInstanceInfo=function(t){this._pressedInstanceInfo=t},t.prototype.getPressedInstanceInfo=function(){return this._pressedInstanceInfo},t.prototype.updatePointPosition=function(t,e){if(t>0){var i=this._chartStore.getDataList();this._instances.forEach(function(n){n.forEach(function(n){var a=n.points;a.forEach(function(n){if(!At(n.timestamp)&&At(n.dataIndex)){e===Kt.Forward&&(n.dataIndex=n.dataIndex+t);var a=i[n.dataIndex];n.timestamp=null===a||void 0===a?void 0:a.timestamp}})})})}},t.prototype.setHoverInstanceInfo=function(t,e){var i,n,a=this._hoverInstanceInfo,r=a.instance,o=a.figureType,s=a.figureKey,l=a.figureIndex;if(((null===r||void 0===r?void 0:r.id)!==(null===(i=t.instance)||void 0===i?void 0:i.id)||o!==t.figureType||l!==t.figureIndex)&&(this._hoverInstanceInfo=t,(null===r||void 0===r?void 0:r.id)!==(null===(n=t.instance)||void 0===n?void 0:n.id))){var c=!1,u=!1;null!==r&&(u=!0,kt(r.onMouseLeave)&&(r.onMouseLeave(X({overlay:r,figureKey:s,figureIndex:l},e)),c=!0)),null!==t.instance&&(u=!0,kt(t.instance.onMouseEnter)&&(t.instance.onMouseEnter(X({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e)),c=!0)),u&&this._sort(),c||this._chartStore.getChart().updatePane(1)}},t.prototype.getHoverInstanceInfo=function(){return this._hoverInstanceInfo},t.prototype.setClickInstanceInfo=function(t,e){var i,n,a,r,o,s,l,c,u,d=this._clickInstanceInfo,h=d.paneId,p=d.instance,v=d.figureType,f=d.figureKey,g=d.figureIndex;if(null!==(n=null===(i=t.instance)||void 0===i?void 0:i.isDrawing())&&void 0!==n&&n||null===(r=null===(a=t.instance)||void 0===a?void 0:a.onClick)||void 0===r||r.call(a,X({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e)),((null===p||void 0===p?void 0:p.id)!==(null===(o=t.instance)||void 0===o?void 0:o.id)||v!==t.figureType||g!==t.figureIndex)&&(this._clickInstanceInfo=t,(null===p||void 0===p?void 0:p.id)!==(null===(s=t.instance)||void 0===s?void 0:s.id))){null===(l=null===p||void 0===p?void 0:p.onDeselected)||void 0===l||l.call(p,X({overlay:p,figureKey:f,figureIndex:g},e)),null===(u=null===(c=t.instance)||void 0===c?void 0:c.onSelected)||void 0===u||u.call(c,X({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e));var m=this._chartStore.getChart();m.updatePane(1,t.paneId),h!==t.paneId&&m.updatePane(1,h),m.updatePane(1,Wi.X_AXIS)}},t.prototype.getClickInstanceInfo=function(){return this._clickInstanceInfo},t.prototype.isEmpty=function(){return 0===this._instances.size&&null===this._progressInstanceInfo},t.prototype.isDrawing=function(){var t,e;return null!==this._progressInstanceInfo&&null!==(e=null===(t=this._progressInstanceInfo)||void 0===t?void 0:t.instance.isDrawing())&&void 0!==e&&e},t}(),$i=function(){function t(){this._actions=new Map}return t.prototype.execute=function(t,e){var i;null===(i=this._actions.get(t))||void 0===i||i.execute(e)},t.prototype.subscribe=function(t,e){var i;this._actions.has(t)||this._actions.set(t,new Xt),null===(i=this._actions.get(t))||void 0===i||i.subscribe(e)},t.prototype.unsubscribe=function(t,e){var i=this._actions.get(t);At(i)&&(i.unsubscribe(e),i.isEmpty()&&this._actions.delete(t))},t.prototype.has=function(t){var e=this._actions.get(t);return At(e)&&!e.isEmpty()},t}(),Ki={grid:{horizontal:{color:"#EDEDED"},vertical:{color:"#EDEDED"}},candle:{priceMark:{high:{color:"#76808F"},low:{color:"#76808F"}},tooltip:{rect:{color:"#FEFEFE",borderColor:"#F2F3F5"},text:{color:"#76808F"}}},indicator:{tooltip:{text:{color:"#76808F"}}},xAxis:{axisLine:{color:"#DDDDDD"},tickText:{color:"#76808F"},tickLine:{color:"#DDDDDD"}},yAxis:{axisLine:{color:"#DDDDDD"},tickText:{color:"#76808F"},tickLine:{color:"#DDDDDD"}},separator:{color:"#DDDDDD"},crosshair:{horizontal:{line:{color:"#76808F"},text:{borderColor:"#686D76",backgroundColor:"#686D76"}},vertical:{line:{color:"#76808F"},text:{borderColor:"#686D76",backgroundColor:"#686D76"}}}},Yi={grid:{horizontal:{color:"#292929"},vertical:{color:"#292929"}},candle:{priceMark:{high:{color:"#929AA5"},low:{color:"#929AA5"}},tooltip:{rect:{color:"rgba(10, 10, 10, .6)",borderColor:"rgba(10, 10, 10, .6)"},text:{color:"#929AA5"}}},indicator:{tooltip:{text:{color:"#929AA5"}}},xAxis:{axisLine:{color:"#333333"},tickText:{color:"#929AA5"},tickLine:{color:"#333333"}},yAxis:{axisLine:{color:"#333333"},tickText:{color:"#929AA5"},tickLine:{color:"#333333"}},separator:{color:"#333333"},crosshair:{horizontal:{line:{color:"#929AA5"},text:{borderColor:"#373a40",backgroundColor:"#373a40"}},vertical:{line:{color:"#929AA5"},text:{borderColor:"#373a40",backgroundColor:"#373a40"}}}},Xi={light:Ki,dark:Yi};function ji(t){var e;return null!==(e=Xi[t])&&void 0!==e?e:null}var Ui=function(){function t(t,e){this._styles=gt(),this._customApi=ne(),this._locale=ae,this._precision={price:2,volume:0},this._thousandsSeparator=",",this._decimalFoldThreshold=3,this._dataList=[],this._loadMoreCallback=null,this._loadDataCallback=null,this._loading=!0,this._forwardMore=!0,this._backwardMore=!0,this._timeScaleStore=new Ie(this),this._indicatorStore=new oi(this),this._overlayStore=new Hi(this),this._tooltipStore=new si(this),this._actionStore=new $i,this._visibleDataList=[],this._chart=t,this.setOptions(e)}return t.prototype.adjustVisibleDataList=function(){this._visibleDataList=[];for(var t=this._timeScaleStore.getVisibleRange(),e=t.realFrom,i=t.realTo,n=e;n0&&(this._decimalFoldThreshold=u)}return this},t.prototype.getStyles=function(){return this._styles},t.prototype.getLocale=function(){return this._locale},t.prototype.getCustomApi=function(){return this._customApi},t.prototype.getThousandsSeparator=function(){return this._thousandsSeparator},t.prototype.getDecimalFoldThreshold=function(){return this._decimalFoldThreshold},t.prototype.getPrecision=function(){return this._precision},t.prototype.setPrecision=function(t){return this._precision=t,this._indicatorStore.synchronizeSeriesPrecision(),this},t.prototype.getDataList=function(){return this._dataList},t.prototype.getVisibleFirstData=function(){var t,e=this._timeScaleStore.getVisibleRange().from;return null!==(t=this._dataList[e])&&void 0!==t?t:null},t.prototype.getVisibleDataList=function(){return this._visibleDataList},t.prototype.addData=function(t,e,i){return j(this,void 0,void 0,function(){var n,a,r,o,s,l,c;return U(this,function(u){switch(u.label){case 0:if(n=!1,a=!1,r=0,Ct(t)){switch(r=t.length,e){case Kt.Init:this.clear(),this._dataList=t,this._forwardMore=null===i||void 0===i||i,this._timeScaleStore.resetOffsetRightDistance(),a=!0;break;case Kt.Backward:this._dataList=this._dataList.concat(t),this._backwardMore=null!==i&&void 0!==i&&i,a=r>0;break;case Kt.Forward:this._dataList=t.concat(this._dataList),this._forwardMore=null!==i&&void 0!==i&&i,a=r>0}this._loading=!1,n=!0}else o=this._dataList.length,s=t.timestamp,l=Rt(this._dataList[o-1],"timestamp",0),s>l?(this._dataList.push(t),c=this._timeScaleStore.getLastBarRightSideDiffBarCount(),c<0&&this._timeScaleStore.setLastBarRightSideDiffBarCount(--c),r=1,n=!0,a=!0):s===l&&(this._dataList[o-1]=t,n=!0,a=!0);if(!n)return[3,5];u.label=1;case 1:return u.trys.push([1,4,,5]),this._overlayStore.updatePointPosition(r,e),a?(this._timeScaleStore.adjustVisibleRange(),this._tooltipStore.recalculateCrosshair(!0),[4,this._indicatorStore.calcInstance()]):[3,3];case 2:u.sent(),this._chart.adjustPaneViewport(!1,!0,!0,!0),u.label=3;case 3:return this._actionStore.execute(Tt.OnDataReady),[3,5];case 4:return u.sent(),[3,5];case 5:return[2]}})})},t.prototype.setLoadMoreCallback=function(t){this._loadMoreCallback=t},t.prototype.executeLoadMoreCallback=function(t){this._forwardMore&&!this._loading&&At(this._loadMoreCallback)&&(this._loading=!0,this._loadMoreCallback(t))},t.prototype.setLoadDataCallback=function(t){this._loadDataCallback=t},t.prototype.executeLoadDataCallback=function(t){var e=this;if(!this._loading&&At(this._loadDataCallback)&&(this._forwardMore&&t.type===Kt.Forward||this._backwardMore&&t.type===Kt.Backward)){var i=function(i,n){e.addData(i,t.type,n).then(function(){}).catch(function(){})};this._loading=!0,this._loadDataCallback(X(X({},t),{callback:i}))}},t.prototype.clear=function(){this._forwardMore=!0,this._backwardMore=!0,this._loading=!0,this._dataList=[],this._visibleDataList=[],this._timeScaleStore.clear(),this._tooltipStore.clear()},t.prototype.getTimeScaleStore=function(){return this._timeScaleStore},t.prototype.getIndicatorStore=function(){return this._indicatorStore},t.prototype.getOverlayStore=function(){return this._overlayStore},t.prototype.getTooltipStore=function(){return this._tooltipStore},t.prototype.getActionStore=function(){return this._actionStore},t.prototype.getChart=function(){return this._chart},t}(),Gi={MAIN:"main",X_AXIS:"xAxis",Y_AXIS:"yAxis",SEPARATOR:"separator"},Zi=7;function qi(){return j(this,void 0,void 0,function(){return U(this,function(t){switch(t.label){case 0:return[4,new Promise(function(t){var e=new ResizeObserver(function(i){t(i.every(function(t){return"devicePixelContentBoxSize"in t})),e.disconnect()});e.observe(document.body,{box:"device-pixel-content-box"})}).catch(function(){return!1})];case 1:return[2,t.sent()]}})})}var Ji=function(){function t(t,e){var i=this;this._supportedDevicePixelContentBox=!1,this._width=0,this._height=0,this._pixelWidth=0,this._pixelHeight=0,this._nextPixelWidth=0,this._nextPixelHeight=0,this._requestAnimationId=re,this._mediaQueryListener=function(){var t=Wt(i._element);i._nextPixelWidth=Math.round(i._element.clientWidth*t),i._nextPixelHeight=Math.round(i._element.clientHeight*t),i._resetPixelRatio()},this._listener=e,this._element=he("canvas",t),this._ctx=this._element.getContext("2d",{willReadFrequently:!0}),qi().then(function(t){i._supportedDevicePixelContentBox=t,t?(i._resizeObserver=new ResizeObserver(function(t){var e,n=t.find(function(t){return t.target===i._element}),a=null===(e=null===n||void 0===n?void 0:n.devicePixelContentBoxSize)||void 0===e?void 0:e[0];At(a)&&(i._nextPixelWidth=a.inlineSize,i._nextPixelHeight=a.blockSize,i._pixelWidth===i._nextPixelWidth&&i._pixelHeight===i._nextPixelHeight||i._resetPixelRatio())}),i._resizeObserver.observe(i._element,{box:"device-pixel-content-box"})):(i._mediaQueryList=window.matchMedia("(resolution: ".concat(Wt(i._element),"dppx)")),i._mediaQueryList.addListener(i._mediaQueryListener))}).catch(function(t){return!1})}return t.prototype._resetPixelRatio=function(){var t=this;this._executeListener(function(){var e=t._element.clientWidth,i=t._element.clientHeight,n=t._nextPixelWidth/e,a=t._nextPixelHeight/i;t._width=e,t._height=i,t._pixelWidth=t._nextPixelWidth,t._pixelHeight=t._nextPixelHeight,t._element.width=t._nextPixelWidth,t._element.height=t._nextPixelHeight,t._ctx.scale(n,a)})},t.prototype._executeListener=function(t){var e=this;this._requestAnimationId===re&&(this._requestAnimationId=oe(function(){e._ctx.clearRect(0,0,e._width,e._height),null===t||void 0===t||t(),e._listener(),e._requestAnimationId=re}))},t.prototype.update=function(t,e){if(this._width!==t||this._height!==e){if(this._element.style.width="".concat(t,"px"),this._element.style.height="".concat(e,"px"),!this._supportedDevicePixelContentBox){var i=Wt(this._element);this._nextPixelWidth=Math.round(t*i),this._nextPixelHeight=Math.round(e*i),this._resetPixelRatio()}}else this._executeListener()},t.prototype.getElement=function(){return this._element},t.prototype.getContext=function(){return this._ctx},t.prototype.destroy=function(){At(this._resizeObserver)&&this._resizeObserver.unobserve(this._element),At(this._mediaQueryList)&&this._mediaQueryList.removeListener(this._mediaQueryListener)},t}();function Qi(t){var e={width:0,height:0,left:0,right:0,top:0,bottom:0};return At(t)&&wt(e,t),e}var tn=function(t){function e(e,i){var n=t.call(this)||this;return n._bounding=Qi(),n._pane=i,n._rootContainer=e,n._container=n.createContainer(),e.appendChild(n._container),n}return L(e,t),e.prototype.setBounding=function(t){return wt(this._bounding,t),this},e.prototype.getContainer=function(){return this._container},e.prototype.getBounding=function(){return this._bounding},e.prototype.getPane=function(){return this._pane},e.prototype.update=function(t){this.updateImp(this._container,this._bounding,null!==t&&void 0!==t?t:3)},e.prototype.destroy=function(){this._rootContainer.removeChild(this._container)},e}(hi),en=function(t){function e(e,i){var n=t.call(this,e,i)||this;n._mainCanvas=new Ji({position:"absolute",top:"0",left:"0",zIndex:"2",boxSizing:"border-box"},function(){n.updateMain(n._mainCanvas.getContext())}),n._overlayCanvas=new Ji({position:"absolute",top:"0",left:"0",zIndex:"2",boxSizing:"border-box"},function(){n.updateOverlay(n._overlayCanvas.getContext())});var a=n.getContainer();return a.appendChild(n._mainCanvas.getElement()),a.appendChild(n._overlayCanvas.getElement()),n}return L(e,t),e.prototype.createContainer=function(){return he("div",{margin:"0",padding:"0",position:"absolute",top:"0",overflow:"hidden",boxSizing:"border-box",zIndex:"1"})},e.prototype.updateImp=function(t,e,i){var n=e.width,a=e.height,r=e.left;t.style.left="".concat(r,"px");var o=i,s=t.clientWidth,l=t.clientHeight;switch(n===s&&a===l||(t.style.width="".concat(n,"px"),t.style.height="".concat(a,"px"),o=3),o){case 0:this._mainCanvas.update(n,a);break;case 1:this._overlayCanvas.update(n,a);break;case 3:case 4:this._mainCanvas.update(n,a),this._overlayCanvas.update(n,a);break}},e.prototype.destroy=function(){this._mainCanvas.destroy(),this._overlayCanvas.destroy()},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),r=a.getContext("2d"),o=Wt(a);return a.width=i*o,a.height=n*o,r.scale(o,o),r.drawImage(this._mainCanvas.getElement(),0,0,i,n),t&&r.drawImage(this._overlayCanvas.getElement(),0,0,i,n),a},e}(tn);function nn(t){return"transparent"===t||"none"===t||/^[rR][gG][Bb][Aa]\(([\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\s]*,){3}[\s]*0[\s]*\)$/.test(t)||/^[hH][Ss][Ll][Aa]\(([\s]*(360|3[0-5][0-9]|[012]?[0-9][0-9]?)[\s]*,)([\s]*((100|[0-9][0-9]?)%|0)[\s]*,){2}([\s]*0[\s]*)\)$/.test(t)}function an(t,e){var i=[];i=i.concat(e);for(var n=0;ns*s))return!0}return!1}function rn(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?O.Fill:a,o=i.color,s=void 0===o?"currentColor":o,l=i.borderSize,c=void 0===l?1:l,u=i.borderColor,d=void 0===u?"currentColor":u,h=i.borderStyle,p=void 0===h?N.Solid:h,v=i.borderDashedValue,f=void 0===v?[2,2]:v,g=(r===O.Fill||i.style===O.StrokeFill)&&(!Mt(s)||!nn(s));g&&(t.fillStyle=s,n.forEach(function(e){var i=e.x,n=e.y,a=e.r;t.beginPath(),t.arc(i,n,a,0,2*Math.PI),t.closePath(),t.fill()})),(r===O.Stroke||i.style===O.StrokeFill)&&c>0&&!nn(d)&&(t.strokeStyle=d,t.lineWidth=c,p===N.Dashed?t.setLineDash(f):t.setLineDash([]),n.forEach(function(e){var i=e.x,n=e.y,a=e.r;(!g||a>c)&&(t.beginPath(),t.arc(i,n,a,0,2*Math.PI),t.closePath(),t.stroke())}))}var on={name:"circle",checkEventOn:an,draw:function(t,e,i){rn(t,e,i)}};function sn(t,e){var i=[];i=i.concat(e);for(var n=0;nt.y!==r[s].y>t.y&&t.x<(r[s].x-r[o].x)*(t.y-r[o].y)/(r[s].y-r[o].y)+r[o].x&&(a=!a);if(a)return!0}return!1}function ln(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?O.Fill:a,o=i.color,s=void 0===o?"currentColor":o,l=i.borderSize,c=void 0===l?1:l,u=i.borderColor,d=void 0===u?"currentColor":u,h=i.borderStyle,p=void 0===h?N.Solid:h,v=i.borderDashedValue,f=void 0===v?[2,2]:v;r!==O.Fill&&i.style!==O.StrokeFill||Mt(s)&&nn(s)||(t.fillStyle=s,n.forEach(function(e){var i=e.coordinates;t.beginPath(),t.moveTo(i[0].x,i[0].y);for(var n=1;n0&&!nn(d)&&(t.strokeStyle=d,t.lineWidth=c,p===N.Dashed?t.setLineDash(f):t.setLineDash([]),n.forEach(function(e){var i=e.coordinates;t.beginPath(),t.moveTo(i[0].x,i[0].y);for(var n=1;n=r&&t.x<=r+o&&t.y>=s&&t.y<=s+l)return!0}return!1}function dn(t,e,i){var n,a=[];a=a.concat(e);var r=i.style,o=void 0===r?O.Fill:r,s=i.color,l=void 0===s?"transparent":s,c=i.borderSize,u=void 0===c?1:c,d=i.borderColor,h=void 0===d?"transparent":d,p=i.borderStyle,v=void 0===p?N.Solid:p,f=i.borderRadius,g=void 0===f?0:f,m=i.borderDashedValue,y=void 0===m?[2,2]:m,_=null!==(n=t.roundRect)&&void 0!==n?n:t.rect,b=(o===O.Fill||i.style===O.StrokeFill)&&(!Mt(l)||!nn(l));if(b&&(t.fillStyle=l,a.forEach(function(e){var i=e.x,n=e.y,a=e.width,r=e.height;t.beginPath(),_.call(t,i,n,a,r,g),t.closePath(),t.fill()})),(o===O.Stroke||i.style===O.StrokeFill)&&u>0&&!nn(h)){t.strokeStyle=h,t.fillStyle=h,t.lineWidth=u,v===N.Dashed?t.setLineDash(y):t.setLineDash([]);var x=u%2===1?.5:0,w=Math.round(2*x);a.forEach(function(e){var i=e.x,n=e.y,a=e.width,r=e.height;a>2*u&&r>2*u?(t.beginPath(),_.call(t,i+x,n+x,a-w,r-w,g),t.closePath(),t.stroke()):b||t.fillRect(i,n,a,r)})}}var hn={name:"rect",checkEventOn:un,draw:function(t,e,i){dn(t,e,i)}};function pn(t,e){var i,n,a=e.size,r=void 0===a?12:a,o=e.paddingLeft,s=void 0===o?0:o,l=e.paddingTop,c=void 0===l?0:l,u=e.paddingRight,d=void 0===u?0:u,h=e.paddingBottom,p=void 0===h?0:h,v=e.weight,f=void 0===v?"normal":v,g=e.family,m=t.x,y=t.y,_=t.text,b=t.align,x=void 0===b?"left":b,w=t.baseline,S=void 0===w?"top":w,C=t.width,k=t.height,I=null!==C&&void 0!==C?C:s+$t(_,r,f,g)+d,E=null!==k&&void 0!==k?k:c+r+p;switch(x){case"left":case"start":i=m;break;case"right":case"end":i=m-I;break;default:i=m-I/2;break}switch(S){case"top":case"hanging":n=y;break;case"bottom":case"ideographic":case"alphabetic":n=y-E;break;default:n=y-E/2;break}return{x:i,y:n,width:I,height:E}}function vn(t,e,i){var n=[];n=n.concat(e);for(var a=0;a=o&&t.x<=o+l&&t.y>=s&&t.y<=s+c)return!0}return!1}function fn(t,e,i){var n=[];n=n.concat(e);var a=i.color,r=void 0===a?"currentColor":a,o=i.size,s=void 0===o?12:o,l=i.family,c=i.weight,u=i.paddingLeft,d=void 0===u?0:u,h=i.paddingTop,p=void 0===h?0:h,v=i.paddingRight,f=void 0===v?0:v,g=n.map(function(t){return pn(t,i)});dn(t,g,X(X({},i),{color:i.backgroundColor})),t.textAlign="left",t.textBaseline="top",t.font=Ht(s,c,l),t.fillStyle=r,n.forEach(function(e,i){var n=g[i];t.fillText(e.text,n.x+d,n.y+p,n.width-d-f)})}var gn={name:"text",checkEventOn:vn,draw:function(t,e,i){fn(t,e,i)}},mn=gn;function yn(t,e){var i=t.x-e.x,n=t.y-e.y;return Math.sqrt(i*i+n*n)}function _n(t,e){var i=[];i=i.concat(e);for(var n=0;n=Math.min(l,u)-pi&&t.y<=Math.max(c,d)+pi&&t.y>=Math.min(c,d)-pi)return!0}}return!1}function bn(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?N.Solid:a,o=i.size,s=void 0===o?1:o,l=i.color,c=void 0===l?"currentColor":l,u=i.dashedValue,d=void 0===u?[2,2]:u;t.lineWidth=s,t.strokeStyle=c,r===N.Dashed?t.setLineDash(d):t.setLineDash([]),n.forEach(function(e){var i=e.x,n=e.y,a=e.r,r=e.startAngle,o=e.endAngle;t.beginPath(),t.arc(i,n,a,r,o),t.stroke(),t.closePath()})}var xn={name:"arc",checkEventOn:_n,draw:function(t,e,i){bn(t,e,i)}},wn={},Sn=[on,xi,cn,hn,gn,mn,xn];function Cn(t){var e;return null!==(e=wn[t])&&void 0!==e?e:null}Sn.forEach(function(t){wn[t.name]=vi.extend(t)});var kn=function(t){function e(e){var i=t.call(this)||this;return i._widget=e,i}return L(e,t),e.prototype.getWidget=function(){return this._widget},e.prototype.createFigure=function(t,e){var i=Cn(t.name);if(null!==i){var n=new i(t);if(At(e)){for(var a in e)e.hasOwnProperty(a)&&n.registerEvent(a,e[a]);this.addChild(n)}return n}return null},e.prototype.draw=function(t){this.clear(),this.drawImp(t)},e}(hi),In=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i,n=this.getWidget(),a=this.getWidget().getPane(),r=a.getChart(),o=n.getBounding(),s=r.getStyles().grid,l=s.show;if(l){t.save(),t.globalCompositeOperation="destination-over";var c=s.horizontal,u=c.show;if(u){var d=a.getAxisComponent(),h=d.getTicks().map(function(t){return{coordinates:[{x:0,y:t.coord},{x:o.width,y:t.coord}]}});null===(e=this.createFigure({name:"line",attrs:h,styles:c}))||void 0===e||e.draw(t)}var p=s.vertical,v=p.show;if(v){var f=r.getXAxisPane().getAxisComponent();h=f.getTicks().map(function(t){return{coordinates:[{x:t.coord,y:0},{x:t.coord,y:o.height}]}});null===(i=this.createFigure({name:"line",attrs:h,styles:p}))||void 0===i||i.draw(t)}t.restore()}},e}(kn),En=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.eachChildren=function(t){var e=this.getWidget().getPane(),i=e.getChart().getChartStore(),n=i.getVisibleDataList(),a=i.getTimeScaleStore().getBarSpace();n.forEach(function(e,i){t(e,a,i)})},e}(kn),An=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._boundCandleBarClickEvent=function(t){return function(){return e.getWidget().getPane().getChart().getChartStore().getActionStore().execute(Tt.OnCandleBarClick,t),!1}},e}return L(e,t),e.prototype.drawImp=function(t){var e=this,i=this.getWidget().getPane(),n=i.getId()===Wi.CANDLE,a=i.getChart().getChartStore(),r=this.getCandleBarOptions(a);if(null!==r){var o=0,s=0;if(r.type===$.Ohlc){var l=a.getTimeScaleStore().getBarSpace().gapBar;o=Math.min(Math.max(Math.round(.2*l),1),8),o>2&&o%2===1&&o--,s=Math.floor(s/2)}var c=i.getAxisComponent();this.eachChildren(function(i,a){var l=i.data,u=i.x;if(At(l)){var d=l.open,h=l.high,p=l.low,v=l.close,f=r.type,g=r.styles,m=[];v>d?(m[0]=g.upColor,m[1]=g.upBorderColor,m[2]=g.upWickColor):vd?e._createStrokeBar(u,b,a,m):e._createSolidBar(u,b,a,m);break;case $.CandleDownStroke:x=d>v?e._createStrokeBar(u,b,a,m):e._createSolidBar(u,b,a,m);break;case $.Ohlc:x=[{name:"rect",attrs:[{x:u-s,y:b[0],width:o,height:b[3]-b[0]},{x:u-a.halfGapBar,y:y+o>b[3]?b[3]-o:y,width:a.halfGapBar,height:o},{x:u+s,y:_+o>b[3]?b[3]-o:_,width:a.halfGapBar-s,height:o}],styles:{color:m[0]}}];break}x.forEach(function(a){var r,o;n&&(o={mouseClickEvent:e._boundCandleBarClickEvent(i)}),null===(r=e.createFigure(a,o))||void 0===r||r.draw(t)})}})}},e.prototype.getCandleBarOptions=function(t){var e=t.getStyles().candle;return{type:e.type,styles:e.bar}},e.prototype._createSolidBar=function(t,e,i,n){return[{name:"rect",attrs:{x:t,y:e[0],width:1,height:e[3]-e[0]},styles:{color:n[2]}},{name:"rect",attrs:{x:t-i.halfGapBar,y:e[1],width:i.gapBar,height:Math.max(1,e[2]-e[1])},styles:{style:O.StrokeFill,color:n[0],borderColor:n[1]}}]},e.prototype._createStrokeBar=function(t,e,i,n){return[{name:"rect",attrs:[{x:t,y:e[0],width:1,height:e[1]-e[0]},{x:t,y:e[2],width:1,height:e[3]-e[2]}],styles:{color:n[2]}},{name:"rect",attrs:{x:t-i.halfGapBar,y:e[1],width:i.gapBar,height:Math.max(1,e[2]-e[1])},styles:{style:O.Stroke,borderColor:n[1]}}]},e}(En),Pn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getCandleBarOptions=function(t){var e,i,n=this.getWidget().getPane(),a=n.getAxisComponent();if(!a.isInCandle()){var r=t.getIndicatorStore().getInstances(n.getId());try{for(var o=G(r),s=o.next();!s.done;s=o.next()){var l=s.value;if(l.shouldOhlc&&l.visible){var c=l.styles,u=t.getStyles().indicator,d=Rt(c,"ohlc.upColor",u.ohlc.upColor),h=Rt(c,"ohlc.downColor",u.ohlc.downColor),p=Rt(c,"ohlc.noChangeColor",u.ohlc.noChangeColor);return{type:$.Ohlc,styles:{upColor:d,downColor:h,noChangeColor:p,upBorderColor:d,downBorderColor:h,noChangeBorderColor:p,upWickColor:d,downWickColor:h,noChangeWickColor:p}}}}}catch(v){e={error:v}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(e)throw e.error}}}return null},e.prototype.drawImp=function(e){var i=this;t.prototype.drawImp.call(this,e);var n=this.getWidget(),a=n.getPane(),r=a.getChart(),o=n.getBounding(),s=r.getXAxisPane().getAxisComponent(),l=a.getAxisComponent(),c=r.getChartStore(),u=c.getDataList(),d=c.getTimeScaleStore(),h=d.getVisibleRange(),p=c.getIndicatorStore().getInstances(a.getId()),v=c.getStyles().indicator;e.save(),p.forEach(function(t){var n;if(t.visible){t.zLevel<0?e.globalCompositeOperation="destination-over":e.globalCompositeOperation="source-over";var a=!1;if(null!==t.draw&&(e.save(),a=null!==(n=t.draw({ctx:e,kLineDataList:u,indicator:t,visibleRange:h,bounding:o,barSpace:d.getBarSpace(),defaultStyles:v,xAxis:s,yAxis:l}))&&void 0!==n&&n,e.restore()),!a){var r=t.result,c=[];i.eachChildren(function(n,a){var d,h,p,f=a.halfGapBar,g=n.dataIndex,m=n.x,y=s.convertToPixel(g-1),_=s.convertToPixel(g+1),b=null!==(d=r[g-1])&&void 0!==d?d:null,x=null!==(h=r[g])&&void 0!==h?h:null,w=null!==(p=r[g+1])&&void 0!==p?p:null,S={x:y},C={x:m},k={x:_};t.figures.forEach(function(t){var e=t.key,i=null===b||void 0===b?void 0:b[e];Et(i)&&(S[e]=l.convertToPixel(i));var n=null===x||void 0===x?void 0:x[e];Et(n)&&(C[e]=l.convertToPixel(n));var a=null===w||void 0===w?void 0:w[e];Et(a)&&(k[e]=l.convertToPixel(a))}),jt(u,t,g,v,function(t,n,r){var u,d,h;if(At(null===x||void 0===x?void 0:x[t.key])){var p=C[t.key],v=null===(u=t.attrs)||void 0===u?void 0:u.call(t,{data:{prev:b,current:x,next:w},coordinate:{prev:S,current:C,next:k},bounding:o,barSpace:a,xAxis:s,yAxis:l});if(!At(v))switch(t.type){case"circle":v={x:m,y:p,r:Math.max(1,f)};break;case"rect":case"bar":var g=null!==(d=t.baseValue)&&void 0!==d?d:l.getRange().from,y=l.convertToPixel(g),_=Math.abs(y-p);g!==(null===x||void 0===x?void 0:x[t.key])&&(_=Math.max(1,_));var I=void 0;I=p>y?y:p,v={x:m-f,y:I,width:Math.max(1,2*f),height:_};break;case"line":At(c[r])||(c[r]=[]),Et(C[t.key])&&Et(k[t.key])&&c[r].push({coordinates:[{x:C.x,y:C[t.key]},{x:k.x,y:k[t.key]}],styles:n});break}var E=t.type;At(v)&&"line"!==E&&(null===(h=i.createFigure({name:"bar"===E?"rect":E,attrs:v,styles:n}))||void 0===h||h.draw(e))}})}),c.forEach(function(t){if(t.length>1){for(var n=[{coordinates:[t[0].coordinates[0],t[0].coordinates[1]],styles:t[0].styles}],a=1;a0,C=x.length>0;if(S||C){var k=Z(p.classifyTooltipIcons(w),3),I=k[0],E=k[1],A=k[2];if(g=p.drawStandardTooltipIcons(t,a,I,m,e,r.name,c,g,d),S){var P=_;b.length>0&&(P="".concat(P).concat(b)),g=p.drawStandardTooltipLegends(t,[{title:{text:"",color:f.color},value:{text:P,color:f.color}}],m,c,g,d,f)}g=p.drawStandardTooltipIcons(t,a,E,m,e,r.name,c,g,d),C&&(g=p.drawStandardTooltipLegends(t,x,m,c,g,d,v.text)),g=p.drawStandardTooltipIcons(t,a,A,m,e,r.name,c,g,d),u=m.y+g}})}return u},e.prototype.drawStandardTooltipIcons=function(t,e,i,n,a,r,o,s,l){var c=this;if(i.length>0){var u=0,d=0;i.forEach(function(e){var i=e.marginLeft,n=void 0===i?0:i,a=e.marginTop,r=void 0===a?0:a,o=e.marginRight,s=void 0===o?0:o,l=e.marginBottom,c=void 0===l?0:l,h=e.paddingLeft,p=void 0===h?0:h,v=e.paddingTop,f=void 0===v?0:v,g=e.paddingRight,m=void 0===g?0:g,y=e.paddingBottom,_=void 0===y?0:y,b=e.size,x=e.fontFamily,w=e.icon;t.font=Ht(b,"normal",x),u+=n+p+t.measureText(w).width+m+s,d=Math.max(d,r+f+b+_+c)}),n.x+u>l?(n.x=o,n.y+=s,s=d):s=Math.max(s,d),i.forEach(function(i){var o,s=i.marginLeft,l=void 0===s?0:s,u=i.marginTop,d=void 0===u?0:u,h=i.marginRight,p=void 0===h?0:h,v=i.paddingLeft,f=void 0===v?0:v,g=i.paddingTop,m=void 0===g?0:g,y=i.paddingRight,_=void 0===y?0:y,b=i.paddingBottom,x=void 0===b?0:b,w=i.color,S=i.activeColor,C=i.size,k=i.fontFamily,I=i.icon,E=i.backgroundColor,A=i.activeBackgroundColor,P=(null===e||void 0===e?void 0:e.paneId)===a&&(null===e||void 0===e?void 0:e.indicatorName)===r&&(null===e||void 0===e?void 0:e.iconId)===i.id;null===(o=c.createFigure({name:"text",attrs:{text:I,x:n.x+l,y:n.y+d},styles:{paddingLeft:f,paddingTop:m,paddingRight:_,paddingBottom:x,color:P?S:w,size:C,family:k,backgroundColor:P?A:E}},{mouseClickEvent:c._boundIconClickEvent({paneId:a,indicatorName:r,iconId:i.id}),mouseMoveEvent:c._boundIconMouseMoveEvent({paneId:a,indicatorName:r,iconId:i.id})}))||void 0===o||o.draw(t),n.x+=l+f+t.measureText(I).width+_+p})}return s},e.prototype.drawStandardTooltipLegends=function(t,e,i,n,a,r,o){var s=this;if(e.length>0){var l=o.marginLeft,c=o.marginTop,u=o.marginRight,d=o.marginBottom,h=o.size,p=o.family,v=o.weight;t.font=Ht(h,v,p),e.forEach(function(e){var o,f,g=e.title,m=e.value,y=t.measureText(g.text).width,_=t.measureText(m.text).width,b=y+_,x=c+h+d;i.x+l+b+u>r?(i.x=n,i.y+=a,a=x):a=Math.max(a,x),g.text.length>0&&(null===(o=s.createFigure({name:"text",attrs:{x:i.x+l,y:i.y+c,text:g.text},styles:{color:g.color,size:h,family:p,weight:v}}))||void 0===o||o.draw(t)),null===(f=s.createFigure({name:"text",attrs:{x:i.x+l+y,y:i.y+c,text:m.text},styles:{color:m.color,size:h,family:p,weight:v}}))||void 0===f||f.draw(t),i.x+=l+b+u})}return a},e.prototype.isDrawTooltip=function(t,e){var i=e.showRule;return i===z.Always||i===z.FollowCross&&Mt(t.paneId)},e.prototype.getIndicatorTooltipData=function(t,e,i,n,a,r,o){var s,l,c=o.tooltip,u=c.showName?i.shortName:"",d="",h=i.calcParams;h.length>0&&c.showParams&&(d="(".concat(h.join(","),")"));var p={name:u,calcParamsText:d,values:[],icons:c.icons},v=e.dataIndex,f=null!==(s=i.result)&&void 0!==s?s:[],g=[];if(i.visible){var m=null!==(l=f[v])&&void 0!==l?l:{};jt(t,i,v,o,function(t,e){var o;if(Mt(t.title)){var s=e.color,l=null!==(o=m[t.key])&&void 0!==o?o:c.defaultValue;Et(l)&&(l=Nt(l,i.precision),i.shouldFormatBigNumber&&(l=n.formatBigNumber(l)),l=Vt(zt(l,a),r)),g.push({title:{text:t.title,color:s},value:{text:l,color:s}})}}),p.values=g}if(null!==i.createTooltipDataSource){var y=this.getWidget(),_=y.getPane(),b=_.getChart().getChartStore(),x=i.createTooltipDataSource({kLineDataList:t,indicator:i,visibleRange:b.getTimeScaleStore().getVisibleRange(),bounding:y.getBounding(),crosshair:e,defaultStyles:o,xAxis:_.getChart().getXAxisPane().getAxisComponent(),yAxis:_.getAxisComponent()}),w=x.name,S=x.calcParamsText,C=x.values,k=x.icons;if(Mt(w)&&c.showName&&(p.name=w),Mt(S)&&c.showParams&&(p.calcParamsText=S),At(k)&&(p.icons=k),At(C)&&i.visible){var I=[],E=o.tooltip.text.color;C.forEach(function(t){var e,o={text:"",color:E};It(t.title)?o=t.title:o.text=t.title;var s={text:"",color:E};if(It(t.value)?s=t.value:s.text=null!==(e=t.value)&&void 0!==e?e:c.defaultValue,Et(s.text)){var l=Nt(s.text,i.precision);i.shouldFormatBigNumber&&(l=n.formatBigNumber(l)),l=Vt(zt(l,a),r),s.text=l}I.push({title:o,value:s})}),p.values=I}}return p},e.prototype.classifyTooltipIcons=function(t){var e=[],i=[],n=[];return t.forEach(function(t){switch(t.position){case W.Left:e.push(t);break;case W.Middle:i.push(t);break;case W.Right:n.push(t);break}}),[e,i,n]},e}(kn),Tn=function(t){function e(e){var i=t.call(this,e)||this;return i._initEvent(),i}return L(e,t),e.prototype._initEvent=function(){var t=this,e=this.getWidget().getPane(),i=e.getId(),n=e.getChart().getChartStore().getOverlayStore();this.registerEvent("mouseMoveEvent",function(e){var a,r=n.getProgressInstanceInfo();if(null!==r){var o=r.instance,s=r.paneId;o.isStart()&&(n.updateProgressInstanceInfo(i),s=i);var l=o.points.length-1,c="".concat(ee,"point_").concat(l);return o.isDrawing()&&s===i&&(o.eventMoveForDrawing(t._coordinateToPoint(r.instance,e)),null===(a=o.onDrawing)||void 0===a||a.call(o,X({overlay:o,figureKey:c,figureIndex:l},e))),t._figureMouseMoveEvent(o,1,c,l,0)(e)}return n.setHoverInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1},e),!1}).registerEvent("mouseClickEvent",function(e){var a,r,o=n.getProgressInstanceInfo();if(null!==o){var s=o.instance,l=o.paneId;s.isStart()&&(n.updateProgressInstanceInfo(i,!0),l=i);var c=s.points.length-1,u="".concat(ee,"point_").concat(c);return s.isDrawing()&&l===i&&(s.eventMoveForDrawing(t._coordinateToPoint(s,e)),null===(a=s.onDrawing)||void 0===a||a.call(s,X({overlay:s,figureKey:u,figureIndex:c},e)),s.nextStep(),s.isDrawing()||(n.progressInstanceComplete(),null===(r=s.onDrawEnd)||void 0===r||r.call(s,X({overlay:s,figureKey:u,figureIndex:c},e)))),t._figureMouseClickEvent(s,1,u,c,0)(e)}return n.setClickInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1},e),!1}).registerEvent("mouseDoubleClickEvent",function(e){var a,r=n.getProgressInstanceInfo();if(null!==r){var o=r.instance,s=r.paneId;if(o.isDrawing()&&s===i&&(o.forceComplete(),!o.isDrawing())){n.progressInstanceComplete();var l=o.points.length-1,c="".concat(ee,"point_").concat(l);null===(a=o.onDrawEnd)||void 0===a||a.call(o,X({overlay:o,figureKey:c,figureIndex:l},e))}var u=o.points.length-1;return t._figureMouseClickEvent(o,1,"".concat(ee,"point_").concat(u),u,0)(e)}return!1}).registerEvent("mouseRightClickEvent",function(e){var i=n.getProgressInstanceInfo();if(null!==i){var a=i.instance;if(a.isDrawing()){var r=a.points.length-1;return t._figureMouseRightClickEvent(a,1,"".concat(ee,"point_").concat(r),r,0)(e)}}return!1}).registerEvent("mouseUpEvent",function(t){var e,a=n.getPressedInstanceInfo(),r=a.instance,o=a.figureIndex,s=a.figureKey;return null!==r&&(null===(e=r.onPressedMoveEnd)||void 0===e||e.call(r,X({overlay:r,figureKey:s,figureIndex:o},t))),n.setPressedInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1}),!1}).registerEvent("pressedMouseMoveEvent",function(e){var i,a,r=n.getPressedInstanceInfo(),o=r.instance,s=r.figureType,l=r.figureIndex,c=r.figureKey;if(null!==o){if(!o.lock&&(null===(a=null===(i=o.onPressedMoving)||void 0===i?void 0:i.call(o,X({overlay:o,figureIndex:l,figureKey:c},e)))||void 0===a||!a)){var u=t._coordinateToPoint(o,e);1===s?o.eventPressedPointMove(u,l):o.eventPressedOtherMove(u,t.getWidget().getPane().getChart().getChartStore().getTimeScaleStore())}return!0}return!1})},e.prototype._createFigureEvents=function(t,e,i,n,a,r){var o;if(!t.isDrawing()){var s=[];if(At(r)&&(Pt(r)?r&&(s=Zt()):s=r),0===s.length)return{mouseMoveEvent:this._figureMouseMoveEvent(t,e,i,n,a),mouseDownEvent:this._figureMouseDownEvent(t,e,i,n,a),mouseClickEvent:this._figureMouseClickEvent(t,e,i,n,a),mouseRightClickEvent:this._figureMouseRightClickEvent(t,e,i,n,a),mouseDoubleClickEvent:this._figureMouseDoubleClickEvent(t,e,i,n,a)};o={},s.includes("mouseMoveEvent")||s.includes("touchMoveEvent")||(o.mouseMoveEvent=this._figureMouseMoveEvent(t,e,i,n,a)),s.includes("mouseDownEvent")||s.includes("touchStartEvent")||(o.mouseDownEvent=this._figureMouseDownEvent(t,e,i,n,a)),s.includes("mouseClickEvent")||s.includes("tapEvent")||(o.mouseClickEvent=this._figureMouseClickEvent(t,e,i,n,a)),s.includes("mouseDoubleClickEvent")||s.includes("doubleTapEvent")||(o.mouseDoubleClickEvent=this._figureMouseDoubleClickEvent(t,e,i,n,a)),s.includes("mouseRightClickEvent")||(o.mouseRightClickEvent=this._figureMouseRightClickEvent(t,e,i,n,a))}return o},e.prototype._figureMouseMoveEvent=function(t,e,i,n,a){var r=this;return function(o){var s=r.getWidget().getPane(),l=s.getChart().getChartStore().getOverlayStore();return l.setHoverInstanceInfo({paneId:s.getId(),instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a},o),!0}},e.prototype._figureMouseDownEvent=function(t,e,i,n,a){var r=this;return function(o){var s,l=r.getWidget().getPane(),c=l.getId(),u=l.getChart().getChartStore().getOverlayStore();return t.startPressedMove(r._coordinateToPoint(t,o)),null===(s=t.onPressedMoveStart)||void 0===s||s.call(t,X({overlay:t,figureIndex:n,figureKey:i},o)),u.setPressedInstanceInfo({paneId:c,instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a}),!0}},e.prototype._figureMouseClickEvent=function(t,e,i,n,a){var r=this;return function(o){var s=r.getWidget().getPane(),l=s.getId(),c=s.getChart().getChartStore().getOverlayStore();return c.setClickInstanceInfo({paneId:l,instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a},o),!0}},e.prototype._figureMouseDoubleClickEvent=function(t,e,i,n,a){return function(e){var a;return null===(a=t.onDoubleClick)||void 0===a||a.call(t,X(X({},e),{figureIndex:n,figureKey:i,overlay:t})),!0}},e.prototype._figureMouseRightClickEvent=function(t,e,i,n,a){var r=this;return function(e){var a,o;if(null===(o=null===(a=t.onRightClick)||void 0===a?void 0:a.call(t,X({overlay:t,figureIndex:n,figureKey:i},e)))||void 0===o||!o){var s=r.getWidget().getPane(),l=s.getChart().getChartStore().getOverlayStore();l.removeInstance(t)}return!0}},e.prototype._coordinateToPoint=function(t,e){var i,n={},a=this.getWidget().getPane(),r=a.getChart(),o=a.getId(),s=r.getChartStore().getTimeScaleStore();if(this.coordinateToPointTimestampDataIndexFlag()){var l=r.getXAxisPane().getAxisComponent(),c=l.convertFromPixel(e.x),u=null!==(i=s.dataIndexToTimestamp(c))&&void 0!==i?i:void 0;n.dataIndex=c,n.timestamp=u}if(this.coordinateToPointValueFlag()){var d=a.getAxisComponent(),h=d.convertFromPixel(e.y);if(t.mode!==Ut.Normal&&o===Wi.CANDLE&&Et(n.dataIndex)){var p=s.getDataByDataIndex(n.dataIndex);if(null!==p){var v=t.modeSensitivity;if(h>p.high)if(t.mode===Ut.WeakMagnet){var f=d.convertToPixel(p.high),g=d.convertFromPixel(f-v);hg&&(h=p.low)}else h=p.low;else{var y=Math.max(p.open,p.close),_=Math.min(p.open,p.close);h=h>y?h-y0){var m=(new Array).concat(this.getFigures(e,g,i,n,a,s,l,r,c,u,d));this.drawFigures(t,e,m,c)}this.drawDefaultFigures(t,e,g,i,a,r,o,s,l,c,u,d,h,p)},e.prototype.drawFigures=function(t,e,i,n){var a=this;i.forEach(function(i,r){var o=i.type,s=i.styles,l=i.attrs,c=i.ignoreEvent,u=[].concat(l);u.forEach(function(l,u){var d,h,p,v=a._createFigureEvents(e,2,null!==(d=i.key)&&void 0!==d?d:"",r,u,c),f=X(X(X({},n[o]),null===(h=e.styles)||void 0===h?void 0:h[o]),s);null===(p=a.createFigure({name:o,attrs:l,styles:f},v))||void 0===p||p.draw(t)})})},e.prototype.getCompleteOverlays=function(t,e){return t.getInstances(e)},e.prototype.getProgressOverlay=function(t,e){return t.paneId===e?t.instance:null},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createPointFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e.prototype.drawDefaultFigures=function(t,e,i,n,a,r,o,s,l,c,u,d,h,p){var v,f,g=this;if(e.needDefaultPointFigure&&((null===(v=h.instance)||void 0===v?void 0:v.id)===e.id&&0!==h.figureType||(null===(f=p.instance)||void 0===f?void 0:f.id)===e.id&&0!==p.figureType)){var m=e.styles,y=X(X({},c.point),null===m||void 0===m?void 0:m.point);i.forEach(function(i,n){var a,r,o,s=i.x,l=i.y,c=y.radius,u=y.color,d=y.borderColor,p=y.borderSize;(null===(a=h.instance)||void 0===a?void 0:a.id)===e.id&&1===h.figureType&&h.figureIndex===n&&(c=y.activeRadius,u=y.activeColor,d=y.activeBorderColor,p=y.activeBorderSize),null===(r=g.createFigure({name:"circle",attrs:{x:s,y:l,r:c+p},styles:{color:d}},g._createFigureEvents(e,1,"".concat(ee,"point_").concat(n),n,0)))||void 0===r||r.draw(t),null===(o=g.createFigure({name:"circle",attrs:{x:s,y:l,r:c},styles:{color:u}}))||void 0===o||o.draw(t)})}},e}(kn),Bn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._gridView=new In(n),n._indicatorView=new Pn(n),n._crosshairLineView=new Mn(n),n._tooltipView=n.createTooltipView(),n._overlayView=new Tn(n),n.addChild(n._tooltipView),n.addChild(n._overlayView),n.getContainer().style.cursor="crosshair",n.registerEvent("mouseMoveEvent",function(){return i.getChart().getChartStore().getTooltipStore().setActiveIcon(),!1}),n}return L(e,t),e.prototype.getName=function(){return Gi.MAIN},e.prototype.updateMain=function(t){this.updateMainContent(t),this._indicatorView.draw(t),this._gridView.draw(t)},e.prototype.createTooltipView=function(){return new Dn(this)},e.prototype.updateMainContent=function(t){},e.prototype.updateOverlay=function(t){this._overlayView.draw(t),this._crosshairLineView.draw(t),this._tooltipView.draw(t)},e}(en),Fn=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._ripplePoint=e.createFigure({name:"circle",attrs:{x:0,y:0,r:0},styles:{style:"fill"}}),e._animationFrameTime=0,e._animation=new le({iterationCount:1/0}).doFrame(function(t){e._animationFrameTime=t;var i=e.getWidget().getPane();i.getChart().updatePane(0,i.getId())}),e}return L(e,t),e.prototype.drawImp=function(t){var e,i,n,a=this.getWidget(),r=a.getPane(),o=r.getChart(),s=o.getDataList(),l=s.length-1,c=a.getBounding(),u=r.getAxisComponent(),d=o.getStyles().candle.area,h=[],p=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,f=null;if(this.eachChildren(function(t){var e=t.data,i=t.x,n=null===e||void 0===e?void 0:e[d.value];if(Et(n)){var a=u.convertToPixel(n);v===Number.MIN_SAFE_INTEGER&&(v=i),h.push({x:i,y:a}),p=Math.min(p,a),t.dataIndex===l&&(f={x:i,y:a})}}),h.length>0){null===(e=this.createFigure({name:"line",attrs:{coordinates:h},styles:{color:d.lineColor,size:d.lineSize,smooth:d.smooth}}))||void 0===e||e.draw(t);var g=d.backgroundColor,m=void 0;if(Ct(g)){var y=t.createLinearGradient(0,c.height,0,p);try{g.forEach(function(t){var e=t.offset,i=t.color;y.addColorStop(e,i)})}catch(x){}m=y}else m=g;t.fillStyle=m,t.beginPath(),t.moveTo(v,c.height),t.lineTo(h[0].x,h[0].y),_i(t,h,d.smooth),t.lineTo(h[h.length-1].x,c.height),t.closePath(),t.fill()}var _=d.point;if(_.show&&At(f)){null===(i=this.createFigure({name:"circle",attrs:{x:f.x,y:f.y,r:_.radius},styles:{style:"fill",color:_.color}}))||void 0===i||i.draw(t);var b=_.rippleRadius;_.animation&&(b=_.radius+this._animationFrameTime/_.animationDuration*(_.rippleRadius-_.radius),this._animation.setDuration(_.animationDuration).start()),null===(n=this._ripplePoint)||void 0===n||n.setAttrs({x:f.x,y:f.y,r:b}).setStyles({style:"fill",color:_.rippleColor}).draw(t)}else this.stopAnimation()},e.prototype.stopAnimation=function(){this._animation.stop()},e}(En),Rn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e=this.getWidget(),i=e.getPane(),n=i.getChart().getChartStore(),a=n.getStyles().candle.priceMark,r=a.high,o=a.low;if(a.show&&(r.show||o.show)){var s=n.getThousandsSeparator(),l=n.getDecimalFoldThreshold(),c=n.getPrecision(),u=i.getAxisComponent(),d=Number.MIN_SAFE_INTEGER,h=0,p=Number.MAX_SAFE_INTEGER,v=0;this.eachChildren(function(t){var e=t.data,i=t.x;At(e)&&(de.low&&(p=e.low,v=i))});var f=u.convertToPixel(d),g=u.convertToPixel(p);r.show&&d!==Number.MIN_SAFE_INTEGER&&this._drawMark(t,Vt(zt(Nt(d,c.price),s),l),{x:h,y:f},fp/2?(l=d-5,c=l-a.textOffset,u="right"):(l=d+5,u="left",c=l+a.textOffset);var v=h+n[1];null===(o=this.createFigure({name:"line",attrs:{coordinates:[{x:d,y:h},{x:d,y:v},{x:l,y:v}]},styles:{color:a.color}}))||void 0===o||o.draw(t),null===(s=this.createFigure({name:"text",attrs:{x:c,y:v,text:e,align:u,baseline:"middle"},styles:{color:a.color,size:a.textSize,family:a.textFamily,weight:a.textWeight}}))||void 0===s||s.draw(t)},e}(En),Ln=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=n.getChart().getChartStore(),o=r.getStyles().candle.priceMark,s=o.last,l=s.line;if(o.show&&s.show&&l.show){var c=n.getAxisComponent(),u=r.getDataList(),d=u[u.length-1];if(null!=d){var h=d.close,p=d.open,v=c.convertToNicePixel(h),f=void 0;f=h>p?s.upColor:h0&&(b=this.drawStandardTooltipLegends(t,S,x,d,b,p,_)),b=this.drawStandardTooltipIcons(t,a,E,x,i,"",d,b,p)}return x.y+b},e.prototype._drawRectTooltip=function(t,e,i,n,a,r,o,s,l,c,u,d,h,p,v,f){var g,m,y,_,b,x=this,w=f.candle,S=f.indicator,C=w.tooltip,k=S.tooltip;if(h||p){var I=null!==(g=r.dataIndex)&&void 0!==g?g:0,E=this._getCandleTooltipLegends({prev:null!==(m=e[I-1])&&void 0!==m?m:null,current:r.kLineData,next:null!==(y=e[I+1])&&void 0!==y?y:null},o,s,l,c,u,d,w),A=C.offsetLeft,P=C.offsetTop,M=C.offsetRight,D=C.offsetBottom,T=C.text,B=T.marginLeft,F=T.marginRight,R=T.marginTop,L=T.marginBottom,N=T.size,z=T.weight,V=T.family,W=C.rect,$=W.position,Y=W.paddingLeft,X=W.paddingRight,j=W.paddingTop,U=W.paddingBottom,G=W.offsetLeft,Z=W.offsetRight,q=W.offsetTop,J=W.offsetBottom,Q=W.borderSize,tt=W.borderRadius,et=W.borderColor,it=W.color,nt=0,at=0,rt=0;h&&(t.font=Ht(N,z,V),E.forEach(function(e){var i=e.title,n=e.value,a="".concat(i.text).concat(n.text),r=t.measureText(a).width+B+F;nt=Math.max(nt,r)}),rt+=(L+R+N)*E.length);var ot=k.text,st=ot.marginLeft,lt=ot.marginRight,ct=ot.marginTop,ut=ot.marginBottom,dt=ot.size,ht=ot.weight,pt=ot.family,vt=[];if(p&&(t.font=Ht(dt,ht,pt),i.forEach(function(i){var n,a=null!==(n=x.getIndicatorTooltipData(e,r,i,c,u,d,S).values)&&void 0!==n?n:[];vt.push(a),a.forEach(function(e){var i=e.title,n=e.value,a="".concat(i.text).concat(n.text),r=t.measureText(a).width+st+lt;nt=Math.max(nt,r),rt+=ct+ut+dt})})),at+=nt,0!==at&&0!==rt){at+=2*Q+Y+X,rt+=2*Q+j+U;var ft=n.width/2,gt=$===H.Pointer&&r.paneId===Wi.CANDLE,mt=(null!==(_=r.realX)&&void 0!==_?_:0)>ft,yt=0;if(gt){var _t=r.realX;yt=mt?_t-Z-at:_t+G}else mt?(yt=G+A,f.yAxis.inside&&f.yAxis.position===K.Left&&(yt+=a.width)):(yt=n.width-Z-at-M,f.yAxis.inside&&f.yAxis.position===K.Right&&(yt-=a.width));var bt=v+q;if(gt){var xt=r.y;bt=xt-rt/2,bt+rt>n.height-J-D&&(bt=n.height-J-rt-D),bt1){var c="{".concat(l[1],"}");o.text=o.text.replace(c,null!==(e=b[c])&&void 0!==e?e:p.defaultValue),"{change}"===c&&(o.color=0===m?s.priceMark.last.noChangeColor:m>0?s.priceMark.last.upColor:s.priceMark.last.downColor)}return{title:r,value:o}})},e}(Dn),Hn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._candleBarView=new An(n),n._candleAreaView=new Fn(n),n._candleHighLowPriceView=new Rn(n),n._candleLastPriceLineView=new Ln(n),n.addChild(n._candleBarView),n}return L(e,t),e.prototype.updateMainContent=function(t){var e=this.getPane().getChart().getStyles().candle;e.type!==$.Area?(this._candleBarView.draw(t),this._candleHighLowPriceView.draw(t),this._candleAreaView.stopAnimation()):this._candleAreaView.draw(t),this._candleLastPriceLineView.draw(t)},e.prototype.createTooltipView=function(){return new Wn(this)},e}(Bn),$n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i,n=this,a=this.getWidget(),r=a.getPane(),o=a.getBounding(),s=r.getAxisComponent(),l=this.getAxisStyles(r.getChart().getStyles());if(l.show){l.axisLine.show&&(null===(e=this.createFigure({name:"line",attrs:this.createAxisLine(o,l),styles:l.axisLine}))||void 0===e||e.draw(t));var c=s.getTicks();if(l.tickLine.show){var u=this.createTickLines(c,o,l);u.forEach(function(e){var i;null===(i=n.createFigure({name:"line",attrs:e,styles:l.tickLine}))||void 0===i||i.draw(t)})}if(l.tickText.show){var d=this.createTickTexts(c,o,l);null===(i=this.createFigure({name:"text",attrs:d,styles:l.tickText}))||void 0===i||i.draw(t)}}},e}(kn),Kn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getAxisStyles=function(t){return t.yAxis},e.prototype.createAxisLine=function(t,e){var i,n=this.getWidget().getPane().getAxisComponent(),a=e.axisLine.size;return i=n.isFromZero()?0:t.width-a,{coordinates:[{x:i,y:0},{x:i,y:t.height}]}},e.prototype.createTickLines=function(t,e,i){var n=this.getWidget().getPane().getAxisComponent(),a=i.axisLine,r=i.tickLine,o=0,s=0;return n.isFromZero()?(o=0,a.show&&(o+=a.size),s=o+r.length):(o=e.width,a.show&&(o-=a.size),s=o-r.length),t.map(function(t){return{coordinates:[{x:o,y:t.coord},{x:s,y:t.coord}]}})},e.prototype.createTickTexts=function(t,e,i){var n=this.getWidget().getPane().getAxisComponent(),a=i.axisLine,r=i.tickLine,o=i.tickText,s=0;n.isFromZero()?(s=o.marginStart,a.show&&(s+=a.size),r.show&&(s+=r.length)):(s=e.width-o.marginEnd,a.show&&(s-=a.size),r.show&&(s-=r.length));var l=this.getWidget().getPane().getAxisComponent().isFromZero()?"left":"right";return t.map(function(t){return{x:s,y:t.coord,text:t.text,align:l,baseline:"middle"}})},e}($n),Yn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=n.getChart().getChartStore(),o=r.getStyles().candle.priceMark,s=o.last,l=s.text;if(o.show&&s.show&&l.show){var c=r.getPrecision(),u=n.getAxisComponent(),d=r.getDataList(),h=d[d.length-1];if(At(h)){var p=h.close,v=h.open,f=u.convertToNicePixel(p),g=void 0;g=p>v?s.upColor:p1&&p.unshift({type:"rect",attrs:{x:0,y:g,width:i.width,height:m-g},ignoreEvent:!0})}return p},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createYAxisFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e}(Tn),Un=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=i.getPane().getChart().getChartStore(),o=r.getTooltipStore().getCrosshair(),s=r.getStyles().crosshair;if(Mt(o.paneId)&&this.compare(o,n.getId())&&s.show){var l=this.getDirectionStyles(s),c=l.text;if(l.show&&c.show){var u=n.getAxisComponent(),d=this.getText(o,r,u);t.font=Ht(c.size,c.weight,c.family),null===(e=this.createFigure({name:"text",attrs:this.getTextAttrs(d,t.measureText(d).width,o,a,u,c),styles:c}))||void 0===e||e.draw(t)}}},e.prototype.compare=function(t,e){return t.paneId===e},e.prototype.getDirectionStyles=function(t){return t.horizontal},e.prototype.getText=function(t,e,i){var n,a=i,r=i.convertFromPixel(t.y);if(a.getType()===Y.Percentage){var o=e.getVisibleFirstData();n="".concat(((r-o.close)/o.close*100).toFixed(2),"%")}else{var s=e.getIndicatorStore().getInstances(t.paneId),l=0,c=!1;a.isInCandle()?l=e.getPrecision().price:s.forEach(function(t){l=Math.max(t.precision,l),c||(c=t.shouldFormatBigNumber)}),n=Nt(r,l),c&&(n=e.getCustomApi().formatBigNumber(n))}return Vt(zt(n,e.getThousandsSeparator()),e.getDecimalFoldThreshold())},e.prototype.getTextAttrs=function(t,e,i,n,a,r){var o,s,l=a;return l.isFromZero()?(o=0,s="left"):(o=n.width,s="right"),{x:o,y:i.y,text:t,align:s,baseline:"middle"}},e}(kn),Gn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._yAxisView=new Kn(n),n._candleLastPriceLabelView=new Yn(n),n._indicatorLastValueView=new Xn(n),n._overlayYAxisView=new jn(n),n._crosshairHorizontalLabelView=new Un(n),n.getContainer().style.cursor="ns-resize",n.addChild(n._overlayYAxisView),n}return L(e,t),e.prototype.getName=function(){return Gi.Y_AXIS},e.prototype.updateMain=function(t){this._yAxisView.draw(t),this.getPane().getAxisComponent().isInCandle()&&this._candleLastPriceLabelView.draw(t),this._indicatorLastValueView.draw(t)},e.prototype.updateOverlay=function(t){this._overlayYAxisView.draw(t),this._crosshairHorizontalLabelView.draw(t)},e}(en),Zn=function(){function t(t){this._range={from:0,to:0,range:0,realFrom:0,realTo:0,realRange:0},this._prevRange={from:0,to:0,range:0,realFrom:0,realTo:0,realRange:0},this._ticks=[],this._autoCalcTickFlag=!0,this._parent=t}return t.prototype.getParent=function(){return this._parent},t.prototype.buildTicks=function(t){if(this._autoCalcTickFlag&&(this._range=this.calcRange()),this._prevRange.from!==this._range.from||this._prevRange.to!==this._range.to||t){this._prevRange=this._range;var e=this.optimalTicks(this._calcTicks());return this._ticks=this.createTicks({range:this._range,bounding:this.getSelfBounding(),defaultTicks:e}),!0}return!1},t.prototype.getTicks=function(){return this._ticks},t.prototype.getScrollZoomEnabled=function(){var t;return null===(t=this.getParent().getOptions().axisOptions.scrollZoomEnabled)||void 0===t||t},t.prototype.setRange=function(t){this._autoCalcTickFlag=!1,this._range=t},t.prototype.getRange=function(){return this._range},t.prototype.setAutoCalcTickFlag=function(t){this._autoCalcTickFlag=t},t.prototype.getAutoCalcTickFlag=function(){return this._autoCalcTickFlag},t.prototype._calcTicks=function(){var t=this._range,e=t.realFrom,i=t.realTo,n=t.realRange,a=[];if(n>=0){var r=Z(this._calcTickInterval(n),2),o=r[0],s=r[1],l=fe(Math.ceil(e/o)*o,s),c=fe(Math.floor(i/o)*o,s),u=0,d=l;if(0!==o)while(d<=c){var h=d.toFixed(s);a[u]={text:h,coord:0,value:h},++u,d+=o}}return a},t.prototype._calcTickInterval=function(t){var e=ve(t/8),i=ge(e);return[e,i]},t}(),qn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.calcRange=function(){var t,e,i,n,a=this.getParent(),r=a.getChart(),o=r.getChartStore(),s=Number.MAX_SAFE_INTEGER,l=Number.MIN_SAFE_INTEGER,c=[],u=!1,d=Number.MAX_SAFE_INTEGER,h=Number.MIN_SAFE_INTEGER,p=Number.MAX_SAFE_INTEGER,v=o.getIndicatorStore().getInstances(a.getId());v.forEach(function(t){var e,i,n;u||(u=null!==(e=t.shouldOhlc)&&void 0!==e&&e),p=Math.min(p,t.precision),Et(t.minValue)&&(d=Math.min(d,t.minValue)),Et(t.maxValue)&&(h=Math.max(h,t.maxValue)),c.push({figures:null!==(i=t.figures)&&void 0!==i?i:[],result:null!==(n=t.result)&&void 0!==n?n:[]})});var f=4,g=this.isInCandle();if(g){var m=o.getPrecision().price;f=p!==Number.MAX_SAFE_INTEGER?Math.min(p,m):m}else p!==Number.MAX_SAFE_INTEGER&&(f=p);var y=o.getVisibleDataList(),_=r.getStyles().candle,b=_.type===$.Area,x=_.area.value,w=g&&!b||!g&&u;y.forEach(function(t){var e=t.dataIndex,i=t.data;if(At(i)&&(w&&(s=Math.min(s,i.low),l=Math.max(l,i.high)),g&&b)){var n=i[x];Et(n)&&(s=Math.min(s,n),l=Math.max(l,n))}c.forEach(function(t){var i,n=t.figures,a=t.result,r=null!==(i=a[e])&&void 0!==i?i:{};n.forEach(function(t){var e=r[t.key];Et(e)&&(s=Math.min(s,e),l=Math.max(l,e))})})}),s!==Number.MAX_SAFE_INTEGER&&l!==Number.MIN_SAFE_INTEGER?(s=Math.min(d,s),l=Math.max(h,l)):(s=0,l=10);var S,C=this.getType();switch(C){case Y.Percentage:var k=o.getVisibleFirstData();At(k)&&Et(k.close)&&(s=(s-k.close)/k.close*100,l=(l-k.close)/k.close*100),S=Math.pow(10,-2);break;case Y.Log:s=ye(s),l=ye(l),S=.05*_e(-f);break;default:S=_e(-f)}if(s===l||Math.abs(s-l)=1&&(M/=A);var D=null!==(n=null===P||void 0===P?void 0:P.bottom)&&void 0!==n?n:.1;D>=1&&(D/=A);var T,B,F,R=Math.abs(l-s);return s-=R*D,l+=R*M,R=Math.abs(l-s),C===Y.Log?(T=_e(s),B=_e(l),F=Math.abs(B-T)):(T=s,B=l,F=R),{from:s,to:l,range:R,realFrom:T,realTo:B,realRange:F}},e.prototype._innerConvertToPixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.getRange(),r=a.from,o=a.range,s=(t-r)/o;return this.isReverse()?Math.round(s*n):Math.round((1-s)*n)},e.prototype.isInCandle=function(){return this.getParent().getId()===Wi.CANDLE},e.prototype.getType=function(){return this.isInCandle()?this.getParent().getChart().getStyles().yAxis.type:Y.Normal},e.prototype.getPosition=function(){return this.getParent().getChart().getStyles().yAxis.position},e.prototype.isReverse=function(){return!!this.isInCandle()&&this.getParent().getChart().getStyles().yAxis.reverse},e.prototype.isFromZero=function(){var t=this.getParent().getChart().getStyles().yAxis,e=t.inside;return t.position===K.Left&&e||t.position===K.Right&&!e},e.prototype.optimalTicks=function(t){var e,i,n=this,a=this.getParent(),r=null!==(i=null===(e=a.getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,o=a.getChart().getChartStore(),s=o.getCustomApi(),l=[],c=this.getType(),u=o.getIndicatorStore().getInstances(a.getId()),d=o.getThousandsSeparator(),h=o.getDecimalFoldThreshold(),p=0,v=!1;this.isInCandle()?p=o.getPrecision().price:u.forEach(function(t){p=Math.max(p,t.precision),v||(v=t.shouldFormatBigNumber)});var f,g=o.getStyles().xAxis.tickText.size;return t.forEach(function(t){var e,i=t.value,a=n._innerConvertToPixel(+i);switch(c){case Y.Percentage:e="".concat(Nt(i,2),"%");break;case Y.Log:a=n._innerConvertToPixel(ye(+i)),e=Nt(i,p);break;default:e=Nt(i,p),v&&(e=s.formatBigNumber(i));break}e=Vt(zt(e,d),h);var o=Et(f);a>g&&a2*g||!o)&&(l.push({text:e,coord:a,value:i}),f=a)}),l},e.prototype.getAutoSize=function(){var t=this.getParent(),e=t.getChart(),i=e.getStyles(),n=i.yAxis,a=n.size;if("auto"!==a)return a;var r=e.getChartStore(),o=r.getCustomApi(),s=0;if(n.show&&(n.axisLine.show&&(s+=n.axisLine.size),n.tickLine.show&&(s+=n.tickLine.length),n.tickText.show)){var l=0;this.getTicks().forEach(function(t){l=Math.max(l,$t(t.text,n.tickText.size,n.tickText.weight,n.tickText.family))}),s+=n.tickText.marginStart+n.tickText.marginEnd+l}var c=i.crosshair,u=0;if(c.show&&c.horizontal.show&&c.horizontal.text.show){var d=r.getIndicatorStore().getInstances(t.getId()),h=0,p=!1;d.forEach(function(t){h=Math.max(t.precision,h),p||(p=t.shouldFormatBigNumber)});var v=2;if(this.getType()!==Y.Percentage)if(this.isInCandle()){var f=r.getPrecision().price,g=i.indicator.lastValueMark;v=g.show&&g.text.show?Math.max(h,f):f}else v=h;var m=Nt(this.getRange().to,v);p&&(m=o.formatBigNumber(m)),m=Vt(m,r.getDecimalFoldThreshold()),u+=c.horizontal.text.paddingLeft+c.horizontal.text.paddingRight+2*c.horizontal.text.borderSize+$t(m,c.horizontal.text.size,c.horizontal.text.weight,c.horizontal.text.family)}return Math.max(s,u)},e.prototype.getSelfBounding=function(){return this.getParent().getYAxisWidget().getBounding()},e.prototype.convertFromPixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.getRange(),r=a.from,o=a.range,s=this.isReverse()?t/n:1-t/n,l=s*o+r;switch(this.getType()){case Y.Percentage:var c=this.getParent().getChart().getChartStore().getVisibleFirstData();return At(c)&&Et(c.close)?c.close*l/100+c.close:0;case Y.Log:return _e(l);default:return l}},e.prototype.convertToRealValue=function(t){var e=t;return this.getType()===Y.Log&&(e=_e(t)),e},e.prototype.convertToPixel=function(t){var e=t;switch(this.getType()){case Y.Percentage:var i=this.getParent().getChart().getChartStore().getVisibleFirstData();At(i)&&Et(i.close)&&(e=(t-i.close)/i.close*100);break;case Y.Log:e=ye(t);break;default:e=t}return this._innerConvertToPixel(e)},e.prototype.convertToNicePixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.convertToPixel(t);return Math.round(Math.max(.05*n,Math.min(a,.98*n)))},e.extend=function(t){var i=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return L(i,e),i.prototype.createTicks=function(e){return t.createTicks(e)},i}(e);return i},e}(Zn),Jn={name:"default",createTicks:function(t){var e=t.defaultTicks;return e}},Qn={default:qn.extend(Jn)};function ta(t){var e;return null!==(e=Qn[t])&&void 0!==e?e:Qn.default}var ea=function(){function t(t,e,i,n){this._bounding=Qi(),this._chart=i,this._id=n,this._init(t,e)}return t.prototype._init=function(t,e){this._rootContainer=t,this._container=he("div",{width:"100%",margin:"0",padding:"0",position:"relative",overflow:"hidden",boxSizing:"border-box"}),null!==e?t.insertBefore(this._container,e):t.appendChild(this._container)},t.prototype.getContainer=function(){return this._container},t.prototype.getId=function(){return this._id},t.prototype.getChart=function(){return this._chart},t.prototype.getBounding=function(){return this._bounding},t.prototype.update=function(t){this._bounding.height!==this._container.clientHeight&&(this._container.style.height="".concat(this._bounding.height,"px")),this.updateImp(null!==t&&void 0!==t?t:3,this._container,this._bounding)},t.prototype.destroy=function(){this._rootContainer.removeChild(this._container)},t}(),ia=function(t){function e(e,i,n,a,r){var o=t.call(this,e,i,n,a)||this;o._yAxisWidget=null,o._options={minHeight:zi,dragEnabled:!0,gap:{top:.2,bottom:.1},axisOptions:{name:"default",scrollZoomEnabled:!0}};var s=o.getContainer();return o._mainWidget=o.createMainWidget(s),o._yAxisWidget=o.createYAxisWidget(s),o.setOptions(r),o}return L(e,t),e.prototype.setOptions=function(t){var e,i,n,a,r,o=null===(e=t.axisOptions)||void 0===e?void 0:e.name;return(this._options.axisOptions.name!==o&&Mt(o)||!At(this._axis))&&(this._axis=this.createAxisComponent(null!==o&&void 0!==o?o:"default")),wt(this._options,t),this.getId()===Wi.X_AXIS?(a=this.getMainWidget().getContainer(),r="ew-resize"):(a=this.getYAxisWidget().getContainer(),r="ns-resize"),null===(n=null===(i=t.axisOptions)||void 0===i?void 0:i.scrollZoomEnabled)||void 0===n||n?a.style.cursor=r:a.style.cursor="default",this},e.prototype.getOptions=function(){return this._options},e.prototype.getAxisComponent=function(){return this._axis},e.prototype.setBounding=function(t,e,i){var n,a;wt(this.getBounding(),t);var r={};return At(t.height)&&(r.height=t.height),At(t.top)&&(r.top=t.top),this._mainWidget.setBounding(r),null===(n=this._yAxisWidget)||void 0===n||n.setBounding(r),At(e)&&this._mainWidget.setBounding(e),At(i)&&(null===(a=this._yAxisWidget)||void 0===a||a.setBounding(i)),this},e.prototype.getMainWidget=function(){return this._mainWidget},e.prototype.getYAxisWidget=function(){return this._yAxisWidget},e.prototype.updateImp=function(t){var e;this._mainWidget.update(t),null===(e=this._yAxisWidget)||void 0===e||e.update(t)},e.prototype.destroy=function(){var e;t.prototype.destroy.call(this),this._mainWidget.destroy(),null===(e=this._yAxisWidget)||void 0===e||e.destroy()},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),r=a.getContext("2d"),o=Wt(a);a.width=i*o,a.height=n*o,r.scale(o,o);var s=this._mainWidget.getBounding();if(r.drawImage(this._mainWidget.getImage(t),s.left,0,s.width,s.height),null!==this._yAxisWidget){var l=this._yAxisWidget.getBounding();r.drawImage(this._yAxisWidget.getImage(t),l.left,0,l.width,l.height)}return a},e.prototype.createYAxisWidget=function(t){return null},e}(ea),na=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.createAxisComponent=function(t){var e=ta(null!==t&&void 0!==t?t:"default");return new e(this)},e.prototype.createMainWidget=function(t){return new Bn(t,this)},e.prototype.createYAxisWidget=function(t){return new Gn(t,this)},e}(ia),aa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.createMainWidget=function(t){return new Hn(t,this)},e}(na),ra=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getAxisStyles=function(t){return t.xAxis},e.prototype.createAxisLine=function(t){return{coordinates:[{x:0,y:0},{x:t.width,y:0}]}},e.prototype.createTickLines=function(t,e,i){var n=i.tickLine,a=i.axisLine.size;return t.map(function(t){return{coordinates:[{x:t.coord,y:0},{x:t.coord,y:a+n.length}]}})},e.prototype.createTickTexts=function(t,e,i){var n=i.tickText,a=i.axisLine.size,r=i.tickLine.length;return t.map(function(t){return{x:t.coord,y:a+r+n.marginStart,text:t.text,align:"center",baseline:"top"}})},e}($n),oa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.coordinateToPointTimestampDataIndexFlag=function(){return!0},e.prototype.coordinateToPointValueFlag=function(){return!1},e.prototype.getCompleteOverlays=function(t){return t.getInstances()},e.prototype.getProgressOverlay=function(t){return t.instance},e.prototype.getDefaultFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h=[];if(t.needDefaultXAxisFigure&&t.id===(null===(d=u.instance)||void 0===d?void 0:d.id)){var p=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER;e.forEach(function(e,i){p=Math.min(p,e.x),v=Math.max(v,e.x);var n=t.points[i];if(Et(n.timestamp)){var o=r.formatDate(a,n.timestamp,"YYYY-MM-DD HH:mm",qt.Crosshair);h.push({type:"text",attrs:{x:e.x,y:0,text:o,align:"center"},ignoreEvent:!0})}}),e.length>1&&h.unshift({type:"rect",attrs:{x:p,y:0,width:v-p,height:i.height},ignoreEvent:!0})}return h},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createXAxisFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e}(jn),sa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.compare=function(t){return At(t.kLineData)&&t.dataIndex===t.realDataIndex},e.prototype.getDirectionStyles=function(t){return t.vertical},e.prototype.getText=function(t,e){var i,n=null===(i=t.kLineData)||void 0===i?void 0:i.timestamp;return e.getCustomApi().formatDate(e.getTimeScaleStore().getDateTimeFormat(),n,"YYYY-MM-DD HH:mm",qt.Crosshair)},e.prototype.getTextAttrs=function(t,e,i,n,a,r){var o,s=i.realX,l="center";return s-e/2-r.paddingLeft<0?(o=0,l="left"):s+e/2+r.paddingRight>n.width?(o=n.width,l="right"):o=s,{x:o,y:0,text:t,align:l,baseline:"top"}},e}(Un),la=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._xAxisView=new ra(n),n._overlayXAxisView=new oa(n),n._crosshairVerticalLabelView=new sa(n),n.getContainer().style.cursor="ew-resize",n.addChild(n._overlayXAxisView),n}return L(e,t),e.prototype.getName=function(){return Gi.X_AXIS},e.prototype.updateMain=function(t){this._xAxisView.draw(t)},e.prototype.updateOverlay=function(t){this._overlayXAxisView.draw(t),this._crosshairVerticalLabelView.draw(t)},e}(en),ca=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.calcRange=function(){var t=this.getParent().getChart().getChartStore(),e=t.getTimeScaleStore().getVisibleRange(),i=e.from,n=e.to,a=i,r=n-1,o=n-i;return{from:a,to:r,range:o,realFrom:a,realTo:r,realRange:o}},e.prototype.optimalTicks=function(t){var e,i,n=this.getParent().getChart(),a=n.getChartStore(),r=a.getCustomApi().formatDate,o=[],s=t.length,l=a.getDataList();if(s>0){var c=a.getTimeScaleStore().getDateTimeFormat(),u=n.getStyles().xAxis.tickText,d=$t("00-00 00:00",u.size,u.weight,u.family),h=parseInt(t[0].value,10),p=this.convertToPixel(h),v=1;if(s>1){var f=parseInt(t[1].value,10),g=this.convertToPixel(f),m=Math.abs(g-p);me&&(t.apply(this,arguments),i=n)}}var fa=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._dragFlag=!1,n._dragStartY=0,n._topPaneHeight=0,n._bottomPaneHeight=0,n._pressedMouseMoveEvent=va(n._pressedTouchMouseMoveEvent,20),n.registerEvent("touchStartEvent",n._mouseDownEvent.bind(n)).registerEvent("touchMoveEvent",n._pressedMouseMoveEvent.bind(n)).registerEvent("touchEndEvent",n._mouseUpEvent.bind(n)).registerEvent("mouseDownEvent",n._mouseDownEvent.bind(n)).registerEvent("mouseUpEvent",n._mouseUpEvent.bind(n)).registerEvent("pressedMouseMoveEvent",n._pressedMouseMoveEvent.bind(n)).registerEvent("mouseEnterEvent",n._mouseEnterEvent.bind(n)).registerEvent("mouseLeaveEvent",n._mouseLeaveEvent.bind(n)),n}return L(e,t),e.prototype.getName=function(){return Gi.SEPARATOR},e.prototype.checkEventOn=function(){return!0},e.prototype._mouseDownEvent=function(t){this._dragFlag=!0,this._dragStartY=t.pageY;var e=this.getPane();return this._topPaneHeight=e.getTopPane().getBounding().height,this._bottomPaneHeight=e.getBottomPane().getBounding().height,!0},e.prototype._mouseUpEvent=function(){return this._dragFlag=!1,this._mouseLeaveEvent()},e.prototype._pressedTouchMouseMoveEvent=function(t){var e=t.pageY-this._dragStartY,i=this.getPane(),n=i.getTopPane(),a=i.getBottomPane(),r=e<0;if(null!==n&&(null===a||void 0===a?void 0:a.getOptions().dragEnabled)){var o=void 0,s=void 0,l=void 0,c=void 0;r?(o=n,s=a,l=this._topPaneHeight,c=this._bottomPaneHeight):(o=a,s=n,l=this._bottomPaneHeight,c=this._topPaneHeight);var u=o.getOptions().minHeight;if(l>u){var d=Math.max(l-Math.abs(e),u),h=l-d;o.setBounding({height:d}),s.setBounding({height:c+h});var p=i.getChart();p.getChartStore().getActionStore().execute(Tt.OnPaneDrag,{paneId:i.getId()}),p.adjustPaneViewport(!0,!0,!0,!0,!0)}}return!0},e.prototype._mouseEnterEvent=function(){var t,e=this.getPane(),i=e.getBottomPane();if(null!==(t=null===i||void 0===i?void 0:i.getOptions().dragEnabled)&&void 0!==t&&t){var n=e.getChart(),a=n.getStyles().separator;return this.getContainer().style.background=a.activeBackgroundColor,!0}return!1},e.prototype._mouseLeaveEvent=function(){return!this._dragFlag&&(this.getContainer().style.background="",!0)},e.prototype.createContainer=function(){return he("div",{width:"100%",height:"".concat(Zi,"px"),margin:"0",padding:"0",position:"absolute",top:"-3px",zIndex:"20",boxSizing:"border-box",cursor:"ns-resize"})},e.prototype.updateImp=function(t,e,i){if(4===i||2===i){var n=this.getPane().getChart().getStyles().separator;t.style.top="".concat(-Math.floor((Zi-n.size)/2),"px"),t.style.height="".concat(Zi,"px")}},e}(tn),ga=function(t){function e(e,i,n,a,r,o){var s=t.call(this,e,i,n,a)||this;return s.getContainer().style.overflow="",s._topPane=r,s._bottomPane=o,s._separatorWidget=new fa(s.getContainer(),s),s}return L(e,t),e.prototype.setBounding=function(t){return wt(this.getBounding(),t),this},e.prototype.getTopPane=function(){return this._topPane},e.prototype.setTopPane=function(t){return this._topPane=t,this},e.prototype.getBottomPane=function(){return this._bottomPane},e.prototype.setBottomPane=function(t){return this._bottomPane=t,this},e.prototype.getWidget=function(){return this._separatorWidget},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=this.getChart().getStyles().separator,r=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),o=r.getContext("2d"),s=Wt(r);return r.width=i*s,r.height=n*s,o.scale(s,s),o.fillStyle=a.color,o.fillRect(0,0,i,n),r},e.prototype.updateImp=function(t,e,i){if(4===t||2===t){var n=this.getChart().getStyles().separator;e.style.backgroundColor=n.color,e.style.height="".concat(i.height,"px"),e.style.marginLeft="".concat(i.left,"px"),e.style.width="".concat(i.width,"px"),this._separatorWidget.update(t)}},e}(ea);function ma(){var t;return"undefined"!==typeof window&&(null!==(t=window.navigator.userAgent.toLowerCase().indexOf("firefox"))&&void 0!==t?t:-1)>-1}function ya(){return"undefined"!==typeof window&&/iPhone|iPad|iPod/.test(window.navigator.platform)}var _a,ba=10,xa=function(){function t(t,e,i){var n=this;this._clickCount=0,this._clickTimeoutId=null,this._clickCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY},this._tapCount=0,this._tapTimeoutId=null,this._tapCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY},this._longTapTimeoutId=null,this._longTapActive=!1,this._mouseMoveStartCoordinate=null,this._touchMoveStartCoordinate=null,this._touchMoveExceededManhattanDistance=!1,this._cancelClick=!1,this._cancelTap=!1,this._unsubscribeOutsideMouseEvents=null,this._unsubscribeOutsideTouchEvents=null,this._unsubscribeMobileSafariEvents=null,this._unsubscribeMousemove=null,this._unsubscribeMouseWheel=null,this._unsubscribeContextMenu=null,this._unsubscribeRootMouseEvents=null,this._unsubscribeRootTouchEvents=null,this._startPinchMiddleCoordinate=null,this._startPinchDistance=0,this._pinchPrevented=!1,this._preventTouchDragProcess=!1,this._mousePressed=!1,this._lastTouchEventTimeStamp=0,this._activeTouchId=null,this._acceptMouseLeave=!ya(),this._onFirefoxOutsideMouseUp=function(t){n._mouseUpHandler(t)},this._onMobileSafariDoubleClick=function(t){if(n._firesTouchEvents(t)){if(++n._tapCount,null!==n._tapTimeoutId&&n._tapCount>1){var e=n._mouseTouchMoveWithDownInfo(n._getCoordinate(t),n._tapCoordinate).manhattanDistance;e<30&&!n._cancelTap&&n._processEvent(n._makeCompatEvent(t),n._handler.doubleTapEvent),n._resetTapTimeout()}}else if(++n._clickCount,null!==n._clickTimeoutId&&n._clickCount>1){e=n._mouseTouchMoveWithDownInfo(n._getCoordinate(t),n._clickCoordinate).manhattanDistance;e<5&&!n._cancelClick&&n._processEvent(n._makeCompatEvent(t),n._handler.mouseDoubleClickEvent),n._resetClickTimeout()}},this._target=t,this._handler=e,this._options=i,this._init()}return t.prototype.destroy=function(){null!==this._unsubscribeOutsideMouseEvents&&(this._unsubscribeOutsideMouseEvents(),this._unsubscribeOutsideMouseEvents=null),null!==this._unsubscribeOutsideTouchEvents&&(this._unsubscribeOutsideTouchEvents(),this._unsubscribeOutsideTouchEvents=null),null!==this._unsubscribeMousemove&&(this._unsubscribeMousemove(),this._unsubscribeMousemove=null),null!==this._unsubscribeMouseWheel&&(this._unsubscribeMouseWheel(),this._unsubscribeMouseWheel=null),null!==this._unsubscribeContextMenu&&(this._unsubscribeContextMenu(),this._unsubscribeContextMenu=null),null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null),null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null),null!==this._unsubscribeMobileSafariEvents&&(this._unsubscribeMobileSafariEvents(),this._unsubscribeMobileSafariEvents=null),this._clearLongTapTimeout(),this._resetClickTimeout()},t.prototype._mouseEnterHandler=function(t){var e,i,n,a=this;null===(e=this._unsubscribeMousemove)||void 0===e||e.call(this),null===(i=this._unsubscribeMouseWheel)||void 0===i||i.call(this),null===(n=this._unsubscribeContextMenu)||void 0===n||n.call(this);var r=this._mouseMoveHandler.bind(this);this._unsubscribeMousemove=function(){a._target.removeEventListener("mousemove",r)},this._target.addEventListener("mousemove",r);var o=this._mouseWheelHandler.bind(this);this._unsubscribeMouseWheel=function(){a._target.removeEventListener("wheel",o)},this._target.addEventListener("wheel",o,{passive:!1});var s=this._contextMenuHandler.bind(this);this._unsubscribeContextMenu=function(){a._target.removeEventListener("contextmenu",s)},this._target.addEventListener("contextmenu",s,{passive:!1}),this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseEnterEvent),this._acceptMouseLeave=!0)},t.prototype._resetClickTimeout=function(){null!==this._clickTimeoutId&&clearTimeout(this._clickTimeoutId),this._clickCount=0,this._clickTimeoutId=null,this._clickCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY}},t.prototype._resetTapTimeout=function(){null!==this._tapTimeoutId&&clearTimeout(this._tapTimeoutId),this._tapCount=0,this._tapTimeoutId=null,this._tapCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY}},t.prototype._mouseMoveHandler=function(t){this._mousePressed||null!==this._touchMoveStartCoordinate||this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseMoveEvent),this._acceptMouseLeave=!0)},t.prototype._mouseWheelHandler=function(t){if(Math.abs(t.deltaX)>Math.abs(t.deltaY)){if(!At(this._handler.mouseWheelHortEvent))return;if(this._preventDefault(t),0===Math.abs(t.deltaX))return;this._handler.mouseWheelHortEvent(this._makeCompatEvent(t),-t.deltaX)}else{if(!At(this._handler.mouseWheelVertEvent))return;var e=-t.deltaY/100;if(0===e)return;switch(this._preventDefault(t),t.deltaMode){case t.DOM_DELTA_PAGE:e*=120;break;case t.DOM_DELTA_LINE:e*=32;break}if(0!==e){var i=Math.sign(e)*Math.min(1,Math.abs(e));this._handler.mouseWheelVertEvent(this._makeCompatEvent(t),i)}}},t.prototype._contextMenuHandler=function(t){this._preventDefault(t)},t.prototype._touchMoveHandler=function(t){var e=this._touchWithId(t.changedTouches,this._activeTouchId);if(null!==e&&(this._lastTouchEventTimeStamp=this._eventTimeStamp(t),null===this._startPinchMiddleCoordinate&&!this._preventTouchDragProcess)){this._pinchPrevented=!0;var i=this._mouseTouchMoveWithDownInfo(this._getCoordinate(e),this._touchMoveStartCoordinate),n=i.xOffset,a=i.yOffset,r=i.manhattanDistance;if(this._touchMoveExceededManhattanDistance||!(r<5)){if(!this._touchMoveExceededManhattanDistance){var o=.5*n,s=a>=o&&!this._options.treatVertDragAsPageScroll(),l=o>a&&!this._options.treatHorzDragAsPageScroll();s||l||(this._preventTouchDragProcess=!0),this._touchMoveExceededManhattanDistance=!0,this._cancelTap=!0,this._clearLongTapTimeout(),this._resetTapTimeout()}this._preventTouchDragProcess||this._processEvent(this._makeCompatEvent(t,e),this._handler.touchMoveEvent)}}},t.prototype._mouseMoveWithDownHandler=function(t){if(0===t.button){var e=this._mouseTouchMoveWithDownInfo(this._getCoordinate(t),this._mouseMoveStartCoordinate),i=e.manhattanDistance;i>=5&&(this._cancelClick=!0,this._resetClickTimeout()),this._cancelClick&&this._processEvent(this._makeCompatEvent(t),this._handler.pressedMouseMoveEvent)}},t.prototype._mouseTouchMoveWithDownInfo=function(t,e){var i=Math.abs(e.x-t.x),n=Math.abs(e.y-t.y),a=i+n;return{xOffset:i,yOffset:n,manhattanDistance:a}},t.prototype._touchEndHandler=function(t){var e=this._touchWithId(t.changedTouches,this._activeTouchId);if(null===e&&0===t.touches.length&&(e=t.changedTouches[0]),null!==e){this._activeTouchId=null,this._lastTouchEventTimeStamp=this._eventTimeStamp(t),this._clearLongTapTimeout(),this._touchMoveStartCoordinate=null,null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null);var i=this._makeCompatEvent(t,e);if(this._processEvent(i,this._handler.touchEndEvent),++this._tapCount,null!==this._tapTimeoutId&&this._tapCount>1){var n=this._mouseTouchMoveWithDownInfo(this._getCoordinate(e),this._tapCoordinate).manhattanDistance;n<30&&!this._cancelTap&&this._processEvent(i,this._handler.doubleTapEvent),this._resetTapTimeout()}else this._cancelTap||(this._processEvent(i,this._handler.tapEvent),At(this._handler.tapEvent)&&this._preventDefault(t));0===this._tapCount&&this._preventDefault(t),0===t.touches.length&&this._longTapActive&&(this._longTapActive=!1,this._preventDefault(t))}},t.prototype._mouseUpHandler=function(t){if(0===t.button){var e=this._makeCompatEvent(t);if(this._mouseMoveStartCoordinate=null,this._mousePressed=!1,null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null),ma()){var i=this._target.ownerDocument.documentElement;i.removeEventListener("mouseleave",this._onFirefoxOutsideMouseUp)}if(!this._firesTouchEvents(t))if(this._processEvent(e,this._handler.mouseUpEvent),++this._clickCount,null!==this._clickTimeoutId&&this._clickCount>1){var n=this._mouseTouchMoveWithDownInfo(this._getCoordinate(t),this._clickCoordinate).manhattanDistance;n<5&&!this._cancelClick&&this._processEvent(e,this._handler.mouseDoubleClickEvent),this._resetClickTimeout()}else this._cancelClick||this._processEvent(e,this._handler.mouseClickEvent)}},t.prototype._clearLongTapTimeout=function(){null!==this._longTapTimeoutId&&(clearTimeout(this._longTapTimeoutId),this._longTapTimeoutId=null)},t.prototype._touchStartHandler=function(t){if(null===this._activeTouchId){var e=t.changedTouches[0];this._activeTouchId=e.identifier,this._lastTouchEventTimeStamp=this._eventTimeStamp(t);var i=this._target.ownerDocument.documentElement;this._cancelTap=!1,this._touchMoveExceededManhattanDistance=!1,this._preventTouchDragProcess=!1,this._touchMoveStartCoordinate=this._getCoordinate(e),null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null);var n=this._touchMoveHandler.bind(this),a=this._touchEndHandler.bind(this);this._unsubscribeRootTouchEvents=function(){i.removeEventListener("touchmove",n),i.removeEventListener("touchend",a)},i.addEventListener("touchmove",n,{passive:!1}),i.addEventListener("touchend",a,{passive:!1}),this._clearLongTapTimeout(),this._longTapTimeoutId=setTimeout(this._longTapHandler.bind(this,t),500),this._processEvent(this._makeCompatEvent(t,e),this._handler.touchStartEvent),null===this._tapTimeoutId&&(this._tapCount=0,this._tapTimeoutId=setTimeout(this._resetTapTimeout.bind(this),500),this._tapCoordinate=this._getCoordinate(e))}},t.prototype._mouseDownHandler=function(t){if(2===t.button)return this._preventDefault(t),void this._processEvent(this._makeCompatEvent(t),this._handler.mouseRightClickEvent);if(0===t.button){var e=this._target.ownerDocument.documentElement;ma()&&e.addEventListener("mouseleave",this._onFirefoxOutsideMouseUp),this._cancelClick=!1,this._mouseMoveStartCoordinate=this._getCoordinate(t),null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null);var i=this._mouseMoveWithDownHandler.bind(this),n=this._mouseUpHandler.bind(this);this._unsubscribeRootMouseEvents=function(){e.removeEventListener("mousemove",i),e.removeEventListener("mouseup",n)},e.addEventListener("mousemove",i),e.addEventListener("mouseup",n),this._mousePressed=!0,this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseDownEvent),null===this._clickTimeoutId&&(this._clickCount=0,this._clickTimeoutId=setTimeout(this._resetClickTimeout.bind(this),500),this._clickCoordinate=this._getCoordinate(t)))}},t.prototype._init=function(){var t=this;this._target.addEventListener("mouseenter",this._mouseEnterHandler.bind(this)),this._target.addEventListener("touchcancel",this._clearLongTapTimeout.bind(this));var e=this._target.ownerDocument,i=function(e){null!=t._handler.mouseDownOutsideEvent&&(e.composed&&t._target.contains(e.composedPath()[0])||null!==e.target&&t._target.contains(e.target)||t._handler.mouseDownOutsideEvent({x:0,y:0,pageX:0,pageY:0}))};this._unsubscribeOutsideTouchEvents=function(){e.removeEventListener("touchstart",i)},this._unsubscribeOutsideMouseEvents=function(){e.removeEventListener("mousedown",i)},e.addEventListener("mousedown",i),e.addEventListener("touchstart",i,{passive:!0}),ya()&&(this._unsubscribeMobileSafariEvents=function(){t._target.removeEventListener("dblclick",t._onMobileSafariDoubleClick)},this._target.addEventListener("dblclick",this._onMobileSafariDoubleClick)),this._target.addEventListener("mouseleave",this._mouseLeaveHandler.bind(this)),this._target.addEventListener("touchstart",this._touchStartHandler.bind(this),{passive:!0}),this._target.addEventListener("mousedown",function(t){if(1===t.button)return t.preventDefault(),!1}),this._target.addEventListener("mousedown",this._mouseDownHandler.bind(this)),this._initPinch(),this._target.addEventListener("touchmove",function(){},{passive:!1})},t.prototype._initPinch=function(){var t=this;(At(this._handler.pinchStartEvent)||At(this._handler.pinchEvent)||At(this._handler.pinchEndEvent))&&(this._target.addEventListener("touchstart",function(e){t._checkPinchState(e.touches)},{passive:!0}),this._target.addEventListener("touchmove",function(e){if(2===e.touches.length&&null!==t._startPinchMiddleCoordinate&&At(t._handler.pinchEvent)){var i=t._getTouchDistance(e.touches[0],e.touches[1]),n=i/t._startPinchDistance;t._handler.pinchEvent(X(X({},t._startPinchMiddleCoordinate),{pageX:0,pageY:0}),n),t._preventDefault(e)}},{passive:!1}),this._target.addEventListener("touchend",function(e){t._checkPinchState(e.touches)}))},t.prototype._checkPinchState=function(t){1===t.length&&(this._pinchPrevented=!1),2!==t.length||this._pinchPrevented||this._longTapActive?this._stopPinch():this._startPinch(t)},t.prototype._startPinch=function(t){var e,i=null!==(e=this._target.getBoundingClientRect())&&void 0!==e?e:{left:0,top:0};this._startPinchMiddleCoordinate={x:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,y:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this._startPinchDistance=this._getTouchDistance(t[0],t[1]),At(this._handler.pinchStartEvent)&&this._handler.pinchStartEvent({x:0,y:0,pageX:0,pageY:0}),this._clearLongTapTimeout()},t.prototype._stopPinch=function(){null!==this._startPinchMiddleCoordinate&&(this._startPinchMiddleCoordinate=null,At(this._handler.pinchEndEvent)&&this._handler.pinchEndEvent({x:0,y:0,pageX:0,pageY:0}))},t.prototype._mouseLeaveHandler=function(t){var e,i,n;null===(e=this._unsubscribeMousemove)||void 0===e||e.call(this),null===(i=this._unsubscribeMouseWheel)||void 0===i||i.call(this),null===(n=this._unsubscribeContextMenu)||void 0===n||n.call(this),this._firesTouchEvents(t)||this._acceptMouseLeave&&(this._processEvent(this._makeCompatEvent(t),this._handler.mouseLeaveEvent),this._acceptMouseLeave=!ya())},t.prototype._longTapHandler=function(t){var e=this._touchWithId(t.touches,this._activeTouchId);null!==e&&(this._processEvent(this._makeCompatEvent(t,e),this._handler.longTapEvent),this._cancelTap=!0,this._longTapActive=!0)},t.prototype._firesTouchEvents=function(t){var e;return At(null===(e=t.sourceCapabilities)||void 0===e?void 0:e.firesTouchEvents)?t.sourceCapabilities.firesTouchEvents:this._eventTimeStamp(t)this._startScrollCoordinate.y-s.y){var d=s.x-this._startScrollCoordinate.x;c.getTimeScaleStore().scroll(d)}return!0;case Gi.X_AXIS:case Gi.Y_AXIS:var h=o.dispatchEvent("pressedMouseMoveEvent",s);return h&&(null===(n=s.preventDefault)||void 0===n||n.call(s),this._chart.updatePane(1)),h}}return!1},t.prototype.touchEndEvent=function(t){var e=this,i=this._findWidgetByEvent(t).widget;if(null!==i){var n=this._makeWidgetEvent(t,i),a=i.getName();switch(a){case Gi.MAIN:if(i.dispatchEvent("mouseUpEvent",n),null!==this._startScrollCoordinate){var r=(new Date).getTime()-this._flingStartTime,o=n.x-this._startScrollCoordinate.x,s=o/(r>0?r:1)*20;if(r<200&&Math.abs(s)>0){var l=this._chart.getChartStore().getTimeScaleStore(),c=function(){e._flingScrollRequestId=oe(function(){l.startScroll(),l.scroll(s),s*=.975,Math.abs(s)<1?null!==e._flingScrollRequestId&&(se(e._flingScrollRequestId),e._flingScrollRequestId=null):c()})};c()}}return!0;case Gi.X_AXIS:case Gi.Y_AXIS:var u=i.dispatchEvent("mouseUpEvent",n);u&&this._chart.updatePane(1)}}return!1},t.prototype.tapEvent=function(t){var e=this._findWidgetByEvent(t),i=e.pane,n=e.widget,a=!1;if(null!==n){var r=this._makeWidgetEvent(t,n),o=n.dispatchEvent("mouseClickEvent",r);if(n.getName()===Gi.MAIN){var s=this._makeWidgetEvent(t,n),l=this._chart.getChartStore(),c=l.getTooltipStore();o?(this._touchCancelCrosshair=!0,this._touchCoordinate=null,c.setCrosshair(void 0,{notInvalidate:!0}),a=!0):(this._touchCancelCrosshair||this._touchZoomed||(this._touchCoordinate={x:s.x,y:s.y},c.setCrosshair({x:s.x,y:s.y,paneId:null===i||void 0===i?void 0:i.getId()},{notInvalidate:!0}),a=!0),this._touchCancelCrosshair=!1)}(a||o)&&this._chart.updatePane(1)}return a},t.prototype.doubleTapEvent=function(t){return this.mouseDoubleClickEvent(t)},t.prototype.longTapEvent=function(t){var e=this._findWidgetByEvent(t),i=e.pane,n=e.widget;if(null!==n&&n.getName()===Gi.MAIN){var a=this._makeWidgetEvent(t,n);return this._touchCoordinate={x:a.x,y:a.y},this._chart.getChartStore().getTooltipStore().setCrosshair({x:a.x,y:a.y,paneId:null===i||void 0===i?void 0:i.getId()}),!0}return!1},t.prototype._findWidgetByEvent=function(t){var e,i,n,a,r=t.x,o=t.y,s=this._chart.getAllSeparatorPanes(),l=this._chart.getChartStore().getStyles().separator.size;try{for(var c=G(s),u=c.next();!u.done;u=c.next()){var d=Z(u.value,2),h=d[1],p=h.getBounding(),v=p.top-Math.round((Zi-l)/2);if(r>=p.left&&r<=p.left+p.width&&o>=v&&o<=v+Zi)return{pane:h,widget:h.getWidget()}}}catch(k){e={error:k}}finally{try{u&&!u.done&&(i=c.return)&&i.call(c)}finally{if(e)throw e.error}}var f=this._chart.getAllDrawPanes(),g=null;try{for(var m=G(f),y=m.next();!y.done;y=m.next()){var _=y.value;p=_.getBounding();if(r>=p.left&&r<=p.left+p.width&&o>=p.top&&o<=p.top+p.height){g=_;break}}}catch(I){n={error:I}}finally{try{y&&!y.done&&(a=m.return)&&a.call(m)}finally{if(n)throw n.error}}var b=null;if(null!==g){if(null===b){var x=g.getMainWidget(),w=x.getBounding();r>=w.left&&r<=w.left+w.width&&o>=w.top&&o<=w.top+w.height&&(b=x)}if(null===b){var S=g.getYAxisWidget();if(null!==S){var C=S.getBounding();r>=C.left&&r<=C.left+C.width&&o>=C.top&&o<=C.top+C.height&&(b=S)}}}return{pane:g,widget:b}},t.prototype._makeWidgetEvent=function(t,e){var i,n,a,r=null!==(i=null===e||void 0===e?void 0:e.getBounding())&&void 0!==i?i:null;return X(X({},t),{x:t.x-(null!==(n=null===r||void 0===r?void 0:r.left)&&void 0!==n?n:0),y:t.y-(null!==(a=null===r||void 0===r?void 0:r.top)&&void 0!==a?a:0)})},t.prototype.destroy=function(){this._container.removeEventListener("keydown",this._boundKeyBoardDownEvent),this._event.destroy()},t}();(function(t){t["Root"]="root",t["Main"]="main",t["YAxis"]="yAxis"})(_a||(_a={}));var Sa=function(){function t(t,e){this._drawPanes=[],this._separatorPanes=new Map,this._initContainer(t),this._chartEvent=new wa(this._chartContainer,this),this._chartStore=new Ui(this,e),this._initPanes(e),this.adjustPaneViewport(!0,!0,!0)}return t.prototype._initContainer=function(t){this._container=t,this._chartContainer=he("div",{position:"relative",width:"100%",outline:"none",borderStyle:"none",cursor:"crosshair",boxSizing:"border-box",userSelect:"none",webkitUserSelect:"none",msUserSelect:"none",MozUserSelect:"none",webkitTapHighlightColor:"transparent"}),this._chartContainer.tabIndex=1,t.appendChild(this._chartContainer)},t.prototype._initPanes=function(t){var e,i=this,n=null!==(e=null===t||void 0===t?void 0:t.layout)&&void 0!==e?e:[{type:"candle"}],a=!1,r=!1,o=function(t){if(!r){var e=i._createPane(pa,Wi.X_AXIS,null!==t&&void 0!==t?t:{});i._xAxisPane=e,r=!0}};n.forEach(function(t){var e,n,r;switch(t.type){case"candle":if(!a){var s=null!==(e=t.options)&&void 0!==e?e:{};wt(s,{id:Wi.CANDLE}),i._candlePane=i._createPane(aa,Wi.CANDLE,s);var l=null!==(n=t.content)&&void 0!==n?n:[];l.forEach(function(t){i.createIndicator(t,!0,s)}),a=!0}break;case"indicator":var c;l=null!==(r=t.content)&&void 0!==r?r:[];if(l.length>0)l.forEach(function(e){At(c)?i.createIndicator(e,!0,{id:c}):c=i.createIndicator(e,!0,t.options)});break;case"xAxis":o(t.options);break}}),o({position:"bottom"})},t.prototype._createPane=function(t,e,i){var n,a=null,r=null,o=null===i||void 0===i?void 0:i.position;switch(o){case"top":var s=this._drawPanes[0];At(s)&&(r=new t(this._chartContainer,s.getContainer(),this,e,null!==i&&void 0!==i?i:{}),a=0);break;case"bottom":break;default:for(var l=this._drawPanes.length-1;l>-1;l--){var c=this._drawPanes[l],u=this._drawPanes[l-1];if("bottom"===(null===c||void 0===c?void 0:c.getOptions().position)&&"bottom"!==(null===u||void 0===u?void 0:u.getOptions().position)){r=new t(this._chartContainer,c.getContainer(),this,e,null!==i&&void 0!==i?i:{}),a=l;break}}}if(At(r)||(r=new t(this._chartContainer,null,this,e,null!==i&&void 0!==i?i:{})),Et(a)?(this._drawPanes.splice(a,0,r),n=a):(this._drawPanes.push(r),n=this._drawPanes.length-1),r.getId()!==Wi.X_AXIS){var d=this._drawPanes[n+1];if(At(d)&&d.getId()===Wi.X_AXIS&&(d=this._drawPanes[n+2]),At(d)){var h=this._separatorPanes.get(d);At(h)?h.setTopPane(r):(h=new ga(this._chartContainer,d.getContainer(),this,"",r,d),this._separatorPanes.set(d,h))}var p=this._drawPanes[n-1];if(At(p)&&p.getId()===Wi.X_AXIS&&(p=this._drawPanes[n-2]),At(p)){h=new ga(this._chartContainer,r.getContainer(),this,"",p,r);this._separatorPanes.set(r,h)}}return r},t.prototype._measurePaneHeight=function(){var t,e=this,i=Math.floor(this._container.clientHeight),n=this._chartStore.getStyles().separator.size,a=this._xAxisPane.getAxisComponent().getAutoSize(),r=i-a-this._separatorPanes.size*n;r<0&&(r=0);var o=0;this._drawPanes.forEach(function(t){if(t.getId()!==Wi.CANDLE&&t.getId()!==Wi.X_AXIS){var e=t.getBounding().height,i=t.getOptions().minHeight;er?(o=r,e=Math.max(r-o,0)):o+=e,t.setBounding({height:e})}});var s=r-o;null===(t=this._candlePane)||void 0===t||t.setBounding({height:s}),this._xAxisPane.setBounding({height:a});var l=0;this._drawPanes.forEach(function(t){var i=e._separatorPanes.get(t);At(i)&&(i.setBounding({height:n,top:l}),l+=n),t.setBounding({top:l}),l+=t.getBounding().height})},t.prototype._measurePaneWidth=function(){var t=this,e=Math.floor(this._container.clientWidth),i=this._chartStore.getStyles(),n=i.yAxis,a=n.position===K.Left,r=!n.inside,o=0,s=0,l=0,c=0;this._drawPanes.forEach(function(t){t.getId()!==Wi.X_AXIS&&(s=Math.max(s,t.getAxisComponent().getAutoSize()))}),s>e&&(s=e),r?(o=e-s,a?(l=0,c=s):(l=e-s,c=0)):(o=e,c=0,l=a?0:e-s),this._chartStore.getTimeScaleStore().setTotalBarSpace(o);var u,d={width:e},h={width:o,left:c},p={width:s,left:l},v=i.separator.fill;u=r&&!v?h:d,this._drawPanes.forEach(function(e){var i;null===(i=t._separatorPanes.get(e))||void 0===i||i.setBounding(u),e.setBounding(d,h,p)})},t.prototype._setPaneOptions=function(t,e){var i,n;if(Mt(t.id)){var a=this.getDrawPaneById(t.id),r=!1;if(null!==a){var o=e;if(t.id!==Wi.CANDLE&&Et(t.height)&&t.height>0){var s=Math.max(null!==(i=t.minHeight)&&void 0!==i?i:a.getOptions().minHeight,0),l=Math.max(s,t.height);a.setBounding({height:l}),o=!0,r=!0}(Mt(null===(n=t.axisOptions)||void 0===n?void 0:n.name)||At(t.gap))&&(o=!0),a.setOptions(t),o&&this.adjustPaneViewport(r,!0,!0,!0,!0)}}},t.prototype.getDrawPaneById=function(t){if(t===Wi.CANDLE)return this._candlePane;if(t===Wi.X_AXIS)return this._xAxisPane;var e=this._drawPanes.find(function(e){return e.getId()===t});return null!==e&&void 0!==e?e:null},t.prototype.getContainer=function(){return this._container},t.prototype.getChartStore=function(){return this._chartStore},t.prototype.getXAxisPane=function(){return this._xAxisPane},t.prototype.getAllDrawPanes=function(){return this._drawPanes},t.prototype.getAllSeparatorPanes=function(){return this._separatorPanes},t.prototype.adjustPaneViewport=function(t,e,i,n,a){t&&this._measurePaneHeight();var r=e,o=null!==n&&void 0!==n&&n,s=null!==a&&void 0!==a&&a;(o||s)&&this._drawPanes.forEach(function(t){var e=t.getAxisComponent().buildTicks(s);r||(r=e)}),r&&this._measurePaneWidth(),null!==i&&void 0!==i&&i&&(this._xAxisPane.getAxisComponent().buildTicks(!0),this.updatePane(4))},t.prototype.updatePane=function(t,e){if(At(e)){var i=this.getDrawPaneById(e);null===i||void 0===i||i.update(t)}else this._separatorPanes.forEach(function(e){e.update(t)}),this._drawPanes.forEach(function(e){e.update(t)})},t.prototype.crosshairChange=function(t){var e=this,i=this._chartStore.getActionStore();if(i.has(Tt.OnCrosshairChange)){var n={};this._drawPanes.forEach(function(i){var a=i.getId(),r={},o=e._chartStore.getIndicatorStore().getInstances(a);o.forEach(function(e){var i,n=e.result;r[e.name]=n[null!==(i=t.dataIndex)&&void 0!==i?i:n.length-1]}),n[a]=r}),Mt(t.paneId)&&i.execute(Tt.OnCrosshairChange,X(X({},t),{indicatorData:n}))}},t.prototype.getDom=function(t,e){var i,n;if(!Mt(t))return this._chartContainer;var a=this.getDrawPaneById(t);if(null!==a){var r=null!==e&&void 0!==e?e:_a.Root;switch(r){case _a.Root:return a.getContainer();case _a.Main:return a.getMainWidget().getContainer();case _a.YAxis:return null!==(n=null===(i=a.getYAxisWidget())||void 0===i?void 0:i.getContainer())&&void 0!==n?n:null}}return null},t.prototype.getSize=function(t,e){var i,n;if(!At(t))return{width:Math.floor(this._chartContainer.clientWidth),height:Math.floor(this._chartContainer.clientHeight),left:0,top:0,right:0,bottom:0};var a=this.getDrawPaneById(t);if(null!==a){var r=null!==e&&void 0!==e?e:_a.Root;switch(r){case _a.Root:return a.getBounding();case _a.Main:return a.getMainWidget().getBounding();case _a.YAxis:return null!==(n=null===(i=a.getYAxisWidget())||void 0===i?void 0:i.getBounding())&&void 0!==n?n:null}}return null},t.prototype.setStyles=function(t){var e,i,n;this._chartStore.setOptions({styles:t}),n=Mt(t)?ji(t):t,At(null===(e=null===n||void 0===n?void 0:n.yAxis)||void 0===e?void 0:e.type)&&(null===(i=this._candlePane)||void 0===i||i.getAxisComponent().setAutoCalcTickFlag(!0)),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.getStyles=function(){return this._chartStore.getStyles()},t.prototype.setLocale=function(t){this._chartStore.setOptions({locale:t}),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.getLocale=function(){return this._chartStore.getLocale()},t.prototype.setCustomApi=function(t){this._chartStore.setOptions({customApi:t}),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.setPriceVolumePrecision=function(t,e){this._chartStore.setPrecision({price:t,volume:e})},t.prototype.getPriceVolumePrecision=function(){return this._chartStore.getPrecision()},t.prototype.setTimezone=function(t){this._chartStore.setOptions({timezone:t}),this._xAxisPane.getAxisComponent().buildTicks(!0),this._xAxisPane.update(3)},t.prototype.getTimezone=function(){return this._chartStore.getTimeScaleStore().getTimezone()},t.prototype.setOffsetRightDistance=function(t){this._chartStore.getTimeScaleStore().setOffsetRightDistance(t,!0)},t.prototype.getOffsetRightDistance=function(){return this._chartStore.getTimeScaleStore().getOffsetRightDistance()},t.prototype.setMaxOffsetLeftDistance=function(t){t<0?_t("setMaxOffsetLeftDistance","distance","distance must greater than zero!!!"):this._chartStore.getTimeScaleStore().setMaxOffsetLeftDistance(t)},t.prototype.setMaxOffsetRightDistance=function(t){t<0?_t("setMaxOffsetRightDistance","distance","distance must greater than zero!!!"):this._chartStore.getTimeScaleStore().setMaxOffsetRightDistance(t)},t.prototype.setLeftMinVisibleBarCount=function(t){t<0?_t("setLeftMinVisibleBarCount","barCount","barCount must greater than zero!!!"):this._chartStore.getTimeScaleStore().setLeftMinVisibleBarCount(Math.ceil(t))},t.prototype.setRightMinVisibleBarCount=function(t){t<0?_t("setRightMinVisibleBarCount","barCount","barCount must greater than zero!!!"):this._chartStore.getTimeScaleStore().setRightMinVisibleBarCount(Math.ceil(t))},t.prototype.setBarSpace=function(t){this._chartStore.getTimeScaleStore().setBarSpace(t)},t.prototype.getBarSpace=function(){return this._chartStore.getTimeScaleStore().getBarSpace().bar},t.prototype.getVisibleRange=function(){return this._chartStore.getTimeScaleStore().getVisibleRange()},t.prototype.clearData=function(){this._chartStore.clear()},t.prototype.getDataList=function(){return this._chartStore.getDataList()},t.prototype.applyNewData=function(t,e,i){At(i)&&_t("applyNewData","","param `callback` has been deprecated since version 9.8.0, use `subscribeAction('onDataReady')` instead."),this._chartStore.addData(t,Kt.Init,e).then(function(){}).catch(function(){}).finally(function(){null===i||void 0===i||i()})},t.prototype.applyMoreData=function(t,e,i){_t("","","Api `applyMoreData` has been deprecated since version 9.8.0."),this._chartStore.addData(t,Kt.Forward,null===e||void 0===e||e).then(function(){}).catch(function(){}).finally(function(){null===i||void 0===i||i()})},t.prototype.updateData=function(t,e){At(e)&&_t("updateData","","param `callback` has been deprecated since version 9.8.0, use `subscribeAction('onDataReady')` instead."),this._chartStore.addData(t).then(function(){}).catch(function(){}).finally(function(){null===e||void 0===e||e()})},t.prototype.loadMore=function(t){_t("","","Api `loadMore` has been deprecated since version 9.8.0, use `setLoadDataCallback` instead."),this._chartStore.setLoadMoreCallback(t)},t.prototype.setLoadDataCallback=function(t){this._chartStore.setLoadDataCallback(t)},t.prototype.createIndicator=function(t,e,i,n){var a,r=this,o=Mt(t)?{name:t}:t;if(null===ri(o.name))return _t("createIndicator","value","indicator not supported, you may need to use registerIndicator to add one!!!"),null;var s=null===i||void 0===i?void 0:i.id,l=this.getDrawPaneById(null!==s&&void 0!==s?s:"");if(null!==l)this._chartStore.getIndicatorStore().addInstance(o,null!==s&&void 0!==s?s:"",null!==e&&void 0!==e&&e).then(function(t){var e;r._setPaneOptions(null!==i&&void 0!==i?i:{},null!==(e=l.getAxisComponent().buildTicks(!0))&&void 0!==e&&e)}).catch(function(t){});else{null!==s&&void 0!==s||(s=de(Wi.INDICATOR));var c=this._createPane(na,s,null!==i&&void 0!==i?i:{}),u=null!==(a=null===i||void 0===i?void 0:i.height)&&void 0!==a?a:Vi;c.setBounding({height:u}),this._chartStore.getIndicatorStore().addInstance(o,s,null!==e&&void 0!==e&&e).finally(function(){r.adjustPaneViewport(!0,!0,!0,!0,!0),null===n||void 0===n||n()})}return null!==s&&void 0!==s?s:null},t.prototype.overrideIndicator=function(t,e,i){var n=this;this._chartStore.getIndicatorStore().override(t,null!==e&&void 0!==e?e:null).then(function(t){var e=Z(t,2),a=e[0],r=e[1];(a||r)&&(n.adjustPaneViewport(!1,r,!0,r),null===i||void 0===i||i())}).catch(function(){})},t.prototype.getIndicatorByPaneId=function(t,e){return this._chartStore.getIndicatorStore().getInstanceByPaneId(t,e)},t.prototype.removeIndicator=function(t,e){var i,n,a,r=this._chartStore.getIndicatorStore(),o=r.removeInstance(t,e);if(o){var s=!1;if(t!==Wi.CANDLE&&!r.hasInstances(t)){var l=this.getDrawPaneById(t),c=this._drawPanes.findIndex(function(e){return e.getId()===t});if(null!==l){s=!0;var u=this._separatorPanes.get(l);if(At(u)){var d=null===u||void 0===u?void 0:u.getTopPane();try{for(var h=G(this._separatorPanes),p=h.next();!p.done;p=h.next()){var v=p.value;if(v[1].getTopPane().getId()===l.getId()){v[1].setTopPane(d);break}}}catch(g){i={error:g}}finally{try{p&&!p.done&&(n=h.return)&&n.call(h)}finally{if(i)throw i.error}}u.destroy(),this._separatorPanes.delete(l)}this._drawPanes.splice(c,1),l.destroy();var f=this._drawPanes[0];At(f)&&f.getId()===Wi.X_AXIS&&(f=this._drawPanes[1]),null===(a=this._separatorPanes.get(f))||void 0===a||a.destroy(),this._separatorPanes.delete(f)}}this.adjustPaneViewport(s,!0,!0,!0,!0)}},t.prototype.createOverlay=function(t,e){var i=[];if(Mt(t))i=[{name:t}];else if(Ct(t))i=t.map(function(t){return Mt(t)?{name:t}:t});else{var n=t;i=[n]}var a=!0;At(e)&&null!==this.getDrawPaneById(e)||(e=Wi.CANDLE,a=!1);var r=this._chartStore.getOverlayStore().addInstances(i,e,a);return Ct(t)?r:r[0]},t.prototype.getOverlayById=function(t){return this._chartStore.getOverlayStore().getInstanceById(t)},t.prototype.overrideOverlay=function(t){this._chartStore.getOverlayStore().override(t)},t.prototype.removeOverlay=function(t){var e;At(t)&&(e=Mt(t)?{id:t}:t),this._chartStore.getOverlayStore().removeInstance(e)},t.prototype.setPaneOptions=function(t){this._setPaneOptions(t,!1)},t.prototype.setZoomEnabled=function(t){this._chartStore.getTimeScaleStore().setZoomEnabled(t)},t.prototype.isZoomEnabled=function(){return this._chartStore.getTimeScaleStore().getZoomEnabled()},t.prototype.setScrollEnabled=function(t){this._chartStore.getTimeScaleStore().setScrollEnabled(t)},t.prototype.isScrollEnabled=function(){return this._chartStore.getTimeScaleStore().getScrollEnabled()},t.prototype.scrollByDistance=function(t,e){var i=Et(e)&&e>0?e:0,n=this._chartStore.getTimeScaleStore();if(n.startScroll(),i>0){var a=new le({duration:i});a.doFrame(function(e){var a=t*(e/i);n.scroll(a)}),a.start()}else n.scroll(t)},t.prototype.scrollToRealTime=function(t){var e=this._chartStore.getTimeScaleStore(),i=e.getBarSpace().bar,n=e.getLastBarRightSideDiffBarCount()-e.getInitialOffsetRightDistance()/i,a=n*i;this.scrollByDistance(a,t)},t.prototype.scrollToDataIndex=function(t,e){var i=this._chartStore.getTimeScaleStore(),n=(i.getLastBarRightSideDiffBarCount()+(this.getDataList().length-1-t))*i.getBarSpace().bar;this.scrollByDistance(n,e)},t.prototype.scrollToTimestamp=function(t,e){var i=pe(this.getDataList(),"timestamp",t);this.scrollToDataIndex(i,e)},t.prototype.zoomAtCoordinate=function(t,e,i){var n=Et(i)&&i>0?i:0,a=this._chartStore.getTimeScaleStore(),r=a.getBarSpace().bar,o=r*t,s=o-r;if(n>0){var l=0,c=new le({duration:n});c.doFrame(function(t){var i=s*(t/n),r=(i-l)/a.getBarSpace().bar*ke;a.zoom(r,e),l=i}),c.start()}else a.zoom(s/r*ke,e)},t.prototype.zoomAtDataIndex=function(t,e,i){var n=this._chartStore.getTimeScaleStore().dataIndexToCoordinate(e);this.zoomAtCoordinate(t,{x:n,y:0},i)},t.prototype.zoomAtTimestamp=function(t,e,i){var n=pe(this.getDataList(),"timestamp",e);this.zoomAtDataIndex(t,n,i)},t.prototype.convertToPixel=function(t,e){var i,n=e.paneId,a=void 0===n?Wi.CANDLE:n,r=e.absolute,o=void 0!==r&&r,s=[];if(a!==Wi.X_AXIS){var l=this.getDrawPaneById(a);if(null!==l){var c=this._chartStore.getTimeScaleStore(),u=l.getBounding(),d=(new Array).concat(t),h=this._xAxisPane.getAxisComponent(),p=l.getAxisComponent();s=d.map(function(t){var e={},i=t.dataIndex;if(Et(t.timestamp)&&(i=c.timestampToDataIndex(t.timestamp)),Et(i)&&(e.x=null===h||void 0===h?void 0:h.convertToPixel(i)),Et(t.value)){var n=null===p||void 0===p?void 0:p.convertToPixel(t.value);e.y=o?u.top+n:n}return e})}}return Ct(t)?s:null!==(i=s[0])&&void 0!==i?i:{}},t.prototype.convertFromPixel=function(t,e){var i,n=e.paneId,a=void 0===n?Wi.CANDLE:n,r=e.absolute,o=void 0!==r&&r,s=[];if(a!==Wi.X_AXIS){var l=this.getDrawPaneById(a);if(null!==l){var c=this._chartStore.getTimeScaleStore(),u=l.getBounding(),d=(new Array).concat(t),h=this._xAxisPane.getAxisComponent(),p=l.getAxisComponent();s=d.map(function(t){var e,i,n={};if(Et(t.x)){var a=null!==(e=null===h||void 0===h?void 0:h.convertFromPixel(t.x))&&void 0!==e?e:-1;n.dataIndex=a,n.timestamp=null!==(i=c.dataIndexToTimestamp(a))&&void 0!==i?i:void 0}if(Et(t.y)){var r=o?t.y-u.top:t.y;n.value=p.convertFromPixel(r)}return n})}}return Ct(t)?s:null!==(i=s[0])&&void 0!==i?i:{}},t.prototype.executeAction=function(t,e){var i;switch(t){case Tt.OnCrosshairChange:var n=X({},e);n.paneId=null!==(i=n.paneId)&&void 0!==i?i:Wi.CANDLE,this._chartStore.getTooltipStore().setCrosshair(n,{notExecuteAction:!0});break}},t.prototype.subscribeAction=function(t,e){this._chartStore.getActionStore().subscribe(t,e)},t.prototype.unsubscribeAction=function(t,e){this._chartStore.getActionStore().unsubscribe(t,e)},t.prototype.getConvertPictureUrl=function(t,e,i){var n=this,a=this._chartContainer.clientWidth,r=this._chartContainer.clientHeight,o=he("canvas",{width:"".concat(a,"px"),height:"".concat(r,"px"),boxSizing:"border-box"}),s=o.getContext("2d"),l=Wt(o);o.width=a*l,o.height=r*l,s.scale(l,l),s.fillStyle=null!==i&&void 0!==i?i:"#FFFFFF",s.fillRect(0,0,a,r);var c=null!==t&&void 0!==t&&t;return this._drawPanes.forEach(function(t){var e=n._separatorPanes.get(t);if(At(e)){var i=e.getBounding();s.drawImage(e.getImage(c),i.left,i.top,i.width,i.height)}var r=t.getBounding();s.drawImage(t.getImage(c),0,r.top,a,r.height)}),o.toDataURL("image/".concat(null!==e&&void 0!==e?e:"jpeg"))},t.prototype.resize=function(){this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.destroy=function(){this._chartEvent.destroy(),this._drawPanes.forEach(function(t){t.destroy()}),this._drawPanes=[],this._separatorPanes.forEach(function(t){t.destroy()}),this._separatorPanes.clear(),this._container.removeChild(this._chartContainer)},t}(),Ca=new Map,ka=1;function Ia(t,e){var i;if(xt(),i=Mt(t)?document.getElementById(t):t,null===i)return bt("","","The chart cannot be initialized correctly. Please check the parameters. The chart container cannot be null and child elements need to be added!!!"),null;var n=Ca.get(i.id);if(At(n))return _t("","","The chart has been initialized on the dom!!!"),n;var a="k_line_chart_".concat(ka++);return n=new Sa(i,e),n.id=a,i.setAttribute("k-line-chart-id",a),Ca.set(a,n),n}var Ea=i(21396),Aa=i.n(Ea);function Pa(t,e,i,n){if(!t||!e||!i||!n)return t;try{var a=Aa().enc.Base64.parse(t),r=Aa().lib.WordArray.create(a.words.slice(0,4)),o=Aa().lib.WordArray.create(a.words.slice(4)),s=Aa().enc.Base64.parse(n),l=Aa().AES.decrypt({ciphertext:o},s,{iv:r,mode:Aa().mode.CBC,padding:Aa().pad.Pkcs7}),c=l.toString(Aa().enc.Utf8);return c||t}catch(u){return t}}function Ma(t,e){return Da.apply(this,arguments)}function Da(){return Da=(0,c.A)((0,l.A)().m(function t(e,i){var n,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e&&i){t.n=1;break}throw new Error("用户ID和指标ID不能为空");case 1:return t.p=1,t.n=2,(0,v.Ay)({url:"/api/indicator/getDecryptKey",method:"post",data:{userid:e,indicatorId:i}});case 2:if(n=t.v,1!==n.code||!n.data||!n.data.key){t.n=3;break}return t.a(2,n.data.key);case 3:throw new Error(n.msg||"获取解密密钥失败");case 4:t.n=6;break;case 5:throw t.p=5,a=t.v,new Error("无法获取解密密钥,请检查网络连接或联系管理员: "+(a.message||"未知错误"));case 6:return t.a(2)}},t,null,[[1,5]])})),Da.apply(this,arguments)}function Ta(t,e,i){return Ba.apply(this,arguments)}function Ba(){return Ba=(0,c.A)((0,l.A)().m(function t(e,i,n){var a;return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,Ma(i,n);case 1:return a=t.v,t.a(2,Pa(e,i,n,a))}},t)})),Ba.apply(this,arguments)}function Fa(t,e){if(1===e||!0===e)return!0;if(t&&t.length>100)try{var i=atob(t);if(i.length>50)return!0}catch(n){}return!1}var Ra={name:"KlineChart",props:{symbol:{type:String,default:""},market:{type:String,default:""},timeframe:{type:String,default:"1H"},theme:{type:String,default:"light"},activeIndicators:{type:Array,default:function(){return[]}},realtimeEnabled:{type:Boolean,default:!1},userId:{type:Number,default:null}},emits:["retry","price-change","load","indicator-toggle"],setup:function(t,e){var i=e.emit,n=(0,h.IJ)([]),a=(0,h.KR)(!1),r=(0,h.KR)(null),s=(0,h.KR)(!1),u=(0,h.KR)(!0),p=null,f=(0,h.KR)(!1),g=(0,h.IJ)(null),m=(0,h.KR)(t.theme||"light"),y=(0,h.KR)(null),b=(0,h.KR)(5e3),x=(0,h.KR)(!1),w=(0,h.KR)(1e4),S=(0,h.KR)(0),C=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(g.value){var e=Date.now(),i=Number(w.value||1e4);(t||!S.value||e-S.value>=i)&&(S.value=e,xt())}},k=(0,h.KR)([]),I=(0,h.KR)([]),E=(0,h.KR)([]),A=(0,h.KR)(null),P=(0,h.nI)(),M=P.proxy,D=(0,h.EW)(function(){return[{name:"line",title:M.$t("dashboard.indicator.drawing.line"),icon:"line"},{name:"horizontalLine",title:M.$t("dashboard.indicator.drawing.horizontalLine"),icon:"minus"},{name:"verticalLine",title:M.$t("dashboard.indicator.drawing.verticalLine"),icon:"column-width"},{name:"ray",title:M.$t("dashboard.indicator.drawing.ray"),icon:"arrow-right"},{name:"straightLine",title:M.$t("dashboard.indicator.drawing.straightLine"),icon:"menu"},{name:"parallelStraightLine",title:M.$t("dashboard.indicator.drawing.parallelLine"),icon:"menu"},{name:"priceLine",title:M.$t("dashboard.indicator.drawing.priceLine"),icon:"dollar"},{name:"priceChannelLine",title:M.$t("dashboard.indicator.drawing.priceChannel"),icon:"border"},{name:"fibonacciLine",title:M.$t("dashboard.indicator.drawing.fibonacciLine"),icon:"rise"},{name:"measure",title:M.$t("dashboard.indicator.drawing.measure"),icon:"drag"}]}),R=(0,h.KR)([{id:"sma",name:"SMA (简单移动平均)",shortName:"SMA",type:"line",defaultParams:{length:20}},{id:"ema",name:"EMA (指数移动平均)",shortName:"EMA",type:"line",defaultParams:{length:20}},{id:"rsi",name:"RSI (相对强弱)",shortName:"RSI",type:"line",defaultParams:{length:14}},{id:"macd",name:"MACD",shortName:"MACD",type:"macd",defaultParams:{fast:12,slow:26,signal:9}},{id:"bb",name:"布林带 (Bollinger Bands)",shortName:"BB",type:"band",defaultParams:{length:20,mult:2}},{id:"atr",name:"ATR (平均真实波幅)",shortName:"ATR",type:"line",defaultParams:{period:14}},{id:"cci",name:"CCI (商品通道指数)",shortName:"CCI",type:"line",defaultParams:{length:20}},{id:"williams",name:"Williams %R (威廉指标)",shortName:"W%R",type:"line",defaultParams:{length:14}},{id:"mfi",name:"MFI (资金流量指标)",shortName:"MFI",type:"line",defaultParams:{length:14}},{id:"adx",name:"ADX (平均趋向指数)",shortName:"ADX",type:"adx",defaultParams:{length:14}},{id:"obv",name:"OBV (能量潮)",shortName:"OBV",type:"line",defaultParams:{}},{id:"adosc",name:"ADOSC (积累/派发振荡器)",shortName:"ADOSC",type:"line",defaultParams:{fast:3,slow:10}},{id:"ad",name:"AD (积累/派发线)",shortName:"AD",type:"line",defaultParams:{}},{id:"kdj",name:"KDJ (随机指标)",shortName:"KDJ",type:"line",defaultParams:{period:9,k:3,d:3}}]),L=function(e){return t.activeIndicators.some(function(t){return t.id===e})},N=function(t){if(g.value){var e={line:"segment",horizontalLine:"horizontalStraightLine",verticalLine:"verticalStraightLine",ray:"rayLine",straightLine:"straightLine",parallelStraightLine:"parallelStraightLine",priceLine:"priceLine",priceChannelLine:"priceChannelLine",fibonacciLine:"fibonacciLine",measure:"priceRangeMeasure"},i=e[t]||t;if(A.value!==t){A.value=t;try{var n={name:i,lock:!1,extendData:{isDrawing:!0}},a=g.value.createOverlay(n);a?E.value.push(a):A.value=null}catch(r){A.value=null}}else{A.value=null;try{"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(o){}}}},O=function(){if(g.value)try{E.value.forEach(function(t){try{"function"===typeof g.value.removeOverlay?g.value.removeOverlay(t):"function"===typeof g.value.removeOverlayById&&g.value.removeOverlayById(t)}catch(e){}}),E.value=[],A.value=null,"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(t){}},z=function(t){var e=L(t.id);if(e)i("indicator-toggle",{action:"remove",indicator:{id:t.id}});else{var n=(0,d.A)((0,d.A)({},t),{},{params:(0,d.A)({},t.defaultParams),calculate:null});i("indicator-toggle",{action:"add",indicator:n})}},V=(0,h.KR)(null),W=(0,h.KR)(!1),H=(0,h.KR)(!1),$=(0,h.KR)(!1),K=(0,h.EW)(function(){return"dark"===m.value?{backgroundColor:"#141414",textColor:"#d1d4dc",textColorSecondary:"#787b86",borderColor:"#2a2a2a",gridLineColor:"#252525",gridLineColorDashed:"#363c4e",tooltipBg:"rgba(25, 27, 32, 0.95)",tooltipBorder:"#333",tooltipText:"#ccc",tooltipTextSecondary:"#888",axisLabelColor:"#787b86",splitAreaColor:["rgba(250,250,250,0.05)","rgba(200,200,200,0.02)"],dataZoomBorder:"#2a2a2a",dataZoomFiller:"rgba(41, 98, 255, 0.15)",dataZoomHandle:"#13c2c2",dataZoomText:"transparent",dataZoomBg:"#252525"}:{backgroundColor:"#fff",textColor:"#333",textColorSecondary:"#666",borderColor:"#e8e8e8",gridLineColor:"#e8e8e8",gridLineColorDashed:"#e8e8e8",tooltipBg:"rgba(255, 255, 255, 0.95)",tooltipBorder:"#e8e8e8",tooltipText:"#333",tooltipTextSecondary:"#666",axisLabelColor:"#666",splitAreaColor:["rgba(250,250,250,0.05)","rgba(200,200,200,0.02)"],dataZoomBorder:"#e8e8e8",dataZoomFiller:"rgba(24, 144, 255, 0.15)",dataZoomHandle:"#1890ff",dataZoomText:"#999",dataZoomBg:"#f0f2f5"}}),Y=function(t){return"dark"===m.value?["#13c2c2","#e040fb","#ffeb3b","#00e676","#ff6d00","#9c27b0"][t%6]:["#13c2c2","#9c27b0","#f57c00","#1976d2","#c2185b","#7b1fa2"][t%6]},X=function(){return new Promise(function(t,e){if(window.pyodide)return V.value=window.pyodide,H.value=!0,void t(window.pyodide);W.value=!0;var i="0.25.0",n=function(t){return t&&t.endsWith("/")?t:t?t+"/":t},a="/assets/pyodide/v".concat(i,"/full/"),r="https://cdn.jsdelivr.net/pyodide/v".concat(i,"/full/"),o=n({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_LOCAL_BASE||a),s=n({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_CDN_BASE||r),u=({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_PREFER_CDN||"").toString().toLowerCase(),d=!u||("true"===u||"1"===u||"yes"===u),h=function(t){return new Promise(function(e,i){var n=document.querySelector('script[data-pyodide-src="'.concat(t,'"]'));if(n)return"function"===typeof window.loadPyodide?e():(n.addEventListener("load",function(){return e()},{once:!0}),void n.addEventListener("error",function(){return i(new Error("Pyodide 脚本加载失败"))},{once:!0}));var a=document.createElement("script");a.dataset.pyodideSrc=t,a.src=t,a.onload=function(){return e()},a.onerror=function(){return i(new Error("Pyodide 脚本加载失败"))},document.head.appendChild(a)})},p=function(){var e=(0,c.A)((0,l.A)().m(function e(i){return(0,l.A)().w(function(e){while(1)switch(e.n){case 0:if("function"===typeof window.loadPyodide){e.n=1;break}throw new Error("loadPyodide 函数未找到");case 1:return e.n=2,window.loadPyodide({indexURL:i});case 2:return window.pyodide=e.v,e.n=3,window.pyodide.loadPackage(["pandas","numpy"]);case 3:V.value=window.pyodide,H.value=!0,W.value=!1,t(window.pyodide);case 4:return e.a(2)}},e)}));return function(t){return e.apply(this,arguments)}}();(0,c.A)((0,l.A)().m(function t(){var e,i,n;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e=function(){var t=(0,c.A)((0,l.A)().m(function t(e){return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,h(e+"pyodide.js");case 1:return t.n=2,p(e);case 2:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}(),t.p=1,!d){t.n=3;break}return t.n=2,e(s);case 2:t.n=4;break;case 3:return t.n=4,e(o);case 4:t.n=9;break;case 5:return t.p=5,i=t.v,t.p=6,t.n=7,e(d?o:s);case 7:t.n=9;break;case 8:throw t.p=8,n=t.v,n||i;case 9:return t.a(2)}},t,null,[[6,8],[1,5]])}))().catch(function(t){W.value=!1,$.value=!0,e(t)})})},j=function(t){if(!t||"string"!==typeof t)return null;try{var e={},i=t.match(/(\w+)\s*=\s*(\d+\.?\d*)/g);return i&&i.forEach(function(t){var i=t.split("=");if(2===i.length){var n=i[0].trim(),a=parseFloat(i[1].trim());isNaN(a)||(e[n]=a)}}),{params:e,plots:[],success:!0}}catch(n){return{params:{},plots:[],success:!1}}},U=function(){var e=(0,c.A)((0,l.A)().m(function e(i,n){var a,r,s,c,u,d,h,p,v,f,g,m,y,_,b,x,w,S,C=arguments;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a=C.length>2&&void 0!==C[2]?C[2]:{},r=C.length>3&&void 0!==C[3]?C[3]:{},H.value&&V.value){e.n=5;break}if(!W.value){e.n=4;break}s=0;case 1:if(!(W.value&&s<30)){e.n=4;break}return e.n=2,new Promise(function(t){return setTimeout(t,500)});case 2:if(s++,!H.value||!V.value){e.n=3;break}return e.a(3,4);case 3:e.n=1;break;case 4:if(H.value&&V.value){e.n=5;break}throw W.value?(W.value=!1,$.value=!0):$.value=!0,new Error("Python 引擎未就绪,请等待加载完成");case 5:if(e.p=5,c=i,u=r.is_encrypted||r.isEncrypted||0,!u&&!Fa(i,u)){e.n=11;break}if(d=r.user_id||r.userId||t.userId||a.userId,h=r.originalId||r.id||a.indicatorId,!d||!h){e.n=10;break}return e.p=6,e.n=7,Ta(c,d,h);case 7:c=e.v,e.n=9;break;case 8:throw e.p=8,x=e.v,new Error("代码解密失败,无法执行指标: "+(x.message||"未知错误"));case 9:e.n=11;break;case 10:throw new Error("缺少必要的解密参数(用户ID或指标ID),无法执行加密指标");case 11:return p=n.map(function(t){var e=t.timestamp||t.time;return e<1e10&&(e*=1e3),{time:Math.floor(e/1e3),open:parseFloat(t.open)||0,high:parseFloat(t.high)||0,low:parseFloat(t.low)||0,close:parseFloat(t.close)||0,volume:parseFloat(t.volume)||0}}),v=JSON.stringify(p),f=JSON.stringify(a||{}),g=v.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),m=f.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),y="\nimport json\nimport pandas as pd\nimport numpy as np\n\n# 递归清理 NaN 值的函数\ndef clean_nan(obj):\n if isinstance(obj, dict):\n return {k: clean_nan(v) for k, v in obj.items()}\n elif isinstance(obj, list):\n return [clean_nan(item) for item in obj]\n elif isinstance(obj, (pd.Series, np.ndarray)):\n return [None if (isinstance(x, float) and (np.isnan(x) or np.isinf(x))) else x for x in obj]\n elif isinstance(obj, (float, np.floating)):\n if np.isnan(obj) or np.isinf(obj):\n return None\n return float(obj)\n elif pd.isna(obj):\n return None\n else:\n return obj\n\n# 接收 JSON 数据\nraw_data = json.loads('".concat(g,"')\nparams = json.loads('").concat(m,"')\n\n# 将前端参数注入为指标代码可直接使用的变量(对齐回测/实盘执行环境)\n# 兼容多种命名(snake_case / camelCase)\ndef _get_param(key, default=None):\n if key in params:\n return params.get(key, default)\n # camelCase fallback\n camel = ''.join([key.split('_')[0]] + [p.capitalize() for p in key.split('_')[1:]])\n return params.get(camel, default)\n\ntry:\n leverage = float(_get_param('leverage', 1) or 1)\nexcept Exception:\n leverage = 1\n\ntrade_direction = _get_param('trade_direction', _get_param('tradeDirection', 'both')) or 'both'\n\ntry:\n initial_position = int(_get_param('initial_position', 0) or 0)\nexcept Exception:\n initial_position = 0\n\ntry:\n initial_avg_entry_price = float(_get_param('initial_avg_entry_price', 0.0) or 0.0)\nexcept Exception:\n initial_avg_entry_price = 0.0\n\ntry:\n initial_position_count = int(_get_param('initial_position_count', 0) or 0)\nexcept Exception:\n initial_position_count = 0\n\ntry:\n initial_last_add_price = float(_get_param('initial_last_add_price', 0.0) or 0.0)\nexcept Exception:\n initial_last_add_price = 0.0\n\ntry:\n initial_highest_price = float(_get_param('initial_highest_price', 0.0) or 0.0)\nexcept Exception:\n initial_highest_price = 0.0\n\n# 转换为 DataFrame\ndf = pd.DataFrame(raw_data)\n\n# 转换数据类型\ndf['open'] = df['open'].astype(float)\ndf['high'] = df['high'].astype(float)\ndf['low'] = df['low'].astype(float)\ndf['close'] = df['close'].astype(float)\ndf['volume'] = df['volume'].astype(float)\n\n# 用户代码(已解密)\n").concat(c,"\n\n# 构造输出(如果用户没有定义 output,则尝试从 result_json 获取)\nif 'output' not in locals():\n if 'result_json' in locals():\n output = json.loads(result_json)\n else:\n output = {\"plots\": []}\nelse:\n # 确保 output 是字典格式\n if isinstance(output, str):\n output = json.loads(output)\n\n# 清理 output 中的所有 NaN 值\noutput = clean_nan(output)\n\n# 返回 JSON 字符串\njson.dumps(output)\n"),e.n=12,V.value.runPythonAsync(y);case 12:if(_=e.v,_&&"string"===typeof _){e.n=13;break}throw new Error("Python 代码执行后未返回有效的 JSON 字符串,返回类型: ".concat((0,o.A)(_)));case 13:e.p=13,b=JSON.parse(_),e.n=15;break;case 14:throw e.p=14,w=e.v,new Error("JSON 解析失败: ".concat(w.message,"。可能是数据中包含 NaN 或其他无效值。"));case 15:if(b){e.n=16;break}return e.a(2,{plots:[],signals:[],calculatedVars:{}});case 16:return b.plots&&Array.isArray(b.plots)||(b.plots=[]),b.plots=b.plots.map(function(t){return t.data&&Array.isArray(t.data)&&(t.data=t.data.map(function(t){return null===t||void 0===t||"number"===typeof t&&isNaN(t)?null:t})),t}),b.signals&&Array.isArray(b.signals)&&(b.signals=b.signals.map(function(t){return t.data&&Array.isArray(t.data)&&(t.data=t.data.map(function(t){return null===t||void 0===t||"number"===typeof t&&isNaN(t)?null:t})),t})),b.calculatedVars||(b.calculatedVars={}),e.a(2,b);case 17:throw e.p=17,S=e.v,new Error("Python 执行失败: ".concat(S.message));case 18:return e.a(2)}},e,null,[[13,14],[6,8],[5,17]])}));return function(t,i){return e.apply(this,arguments)}}();function G(t,e){for(var i=[],n=0;nn-e+1){var c=(t[o-1].high+t[o-1].low+t[o-1].close)/3;s>c?a+=l:sp&&h>0?o.push(h):o.push(0),p>h&&p>0?s.push(p):s.push(0)}for(var v=[],f=[],g=[],m=0;m=e-1){var w=v[m],S=f[m],C=g[m];if(0===w?(i.push(0),n.push(0)):(i.push(S/w*100),n.push(C/w*100)),m>=e-1){var k=i[m]+n[m],I=0===k?0:Math.abs(i[m]-n[m])/k*100;if(m===e-1)a.push(I);else if(m===e){var E=Math.abs(i[m-1]-n[m-1])/(i[m-1]+n[m-1])*100;a.push((E+I)/2)}else a.push((a[m-1]*(e-1)+I)/e)}}}return{adx:a,plusDI:i,minusDI:n}}function nt(t){for(var e=[],i=0,n=0;nt[n-1].close?i+=t[n].volume:t[n].close255?12:7)},0),m=g+2*h,y=v+2*p,_=(null===(i=r.extendData)||void 0===i?void 0:i.side)||(null===(n=r.extendData)||void 0===n?void 0:n.type)||"buy",b="buy"===_,x=b?u:u-y,w=d,S=w,C=b?x:x+y;return[{type:"line",attrs:{coordinates:[{x:c,y:S},{x:c,y:C}]},styles:{style:"stroke",color:l,dashedValue:[2,2]},ignoreEvent:!0},{type:"circle",attrs:{x:c,y:w,r:4},styles:{style:"fill",color:l},ignoreEvent:!0},{type:"rect",attrs:{x:c-m/2,y:x,width:m,height:y,r:4},styles:{style:"fill",color:l,borderSize:0},ignoreEvent:!0},{type:"text",attrs:{x:c,y:x+y/2,text:f,align:"center",baseline:"middle"},styles:{color:"#ffffff",size:v,weight:"bold",backgroundColor:l,borderRadius:5},ignoreEvent:!0}]}}),Ni({name:"priceRangeMeasure",totalStep:2,lock:!1,needDefaultPointFigure:!1,needDefaultXAxisFigure:!1,needDefaultYAxisFigure:!1,createPointFigures:function(t){var e=t.coordinates,i=t.overlay,n=t.ctx;if(!e[0]||!e[1])return[];var a=i.points[0],r=i.points[1];if(!a||!r)return[];var o=a.value,s=r.value,l=s-o,c=l/o*100,u=a.timestamp,d=r.timestamp,h=Math.abs(d-u),p="",v=Math.floor(h/864e5),f=Math.floor(h%864e5/36e5),g=Math.floor(h%36e5/6e4),m=Math.floor(h%6e4/1e3);p=v>0?"".concat(v,"天").concat(f>0?f+"小时":""):f>0?"".concat(f,"小时").concat(g>0?g+"分钟":""):g>0?"".concat(g,"分钟"):"".concat(m,"秒");var y=0;try{if(n&&n.chart){var _=n.chart.getData();if(_&&Array.isArray(_)&&_.length>0){var b=_.findIndex(function(t){return Math.abs(t.timestamp-u)<1e3}),x=_.findIndex(function(t){return Math.abs(t.timestamp-d)<1e3});b>=0&&x>=0&&(y=Math.abs(x-b))}}}catch(z){}var w=c>=0?"+".concat(c.toFixed(2),"%"):"".concat(c.toFixed(2),"%"),S=l>=0?"+".concat(l.toFixed(2)):"".concat(l.toFixed(2)),C="".concat(w," ").concat(S);y>0?(C+=" (".concat(y,"根"),p&&(C+=" / ".concat(p)),C+=")"):p&&(C+=" (".concat(p,")"));var k=l>=0,I=k?"#0ecb81":"#f6465d",E=k?"#0ecb81":"#f6465d",A=k?"rgba(14, 203, 129, 0.1)":"rgba(246, 70, 93, 0.1)",P=e[0].x,M=e[0].y,D=e[1].x,T=e[1].y,B=(P+D)/2,F=(M+T)/2,R=-20,L=12,N=7*C.length+16,O=L+8;return[{type:"line",attrs:{coordinates:[{x:P,y:M},{x:D,y:T}]},styles:{style:"stroke",color:I,size:2,dashedValue:[4,4]},ignoreEvent:!1},{type:"circle",attrs:{x:P,y:M,r:4},styles:{style:"fill",color:I},ignoreEvent:!1},{type:"circle",attrs:{x:D,y:T,r:4},styles:{style:"fill",color:I},ignoreEvent:!1},{type:"rect",attrs:{x:B-N/2,y:F+R-O/2,width:N,height:O,r:4},styles:{style:"fill",color:A,borderSize:1,borderColor:I},ignoreEvent:!1},{type:"text",attrs:{x:B,y:F+R,text:C,align:"center",baseline:"middle"},styles:{color:E,size:L,weight:"bold"},ignoreEvent:!1}]}});var st=function(t){return t.map(function(t){var e=t.time||t.timestamp;return"string"===typeof e&&(e=parseInt(e)),e<1e10&&(e*=1e3),{timestamp:e,open:parseFloat(t.open),high:parseFloat(t.high),low:parseFloat(t.low),close:parseFloat(t.close),volume:parseFloat(t.volume||0)}}).filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)}).sort(function(t,e){return t.timestamp-e.timestamp})},lt=function(t){if(t.length>0){var e=t[t.length-1];if(t.length>1){var n=t[t.length-2],a=e.close.toFixed(2),r=(e.close-n.close)/n.close*100;i("price-change",{price:a,change:r})}else{var o=e.close.toFixed(2);i("price-change",{price:o,change:0})}}},ct=function(t){return t.map(function(t){return{time:Math.floor(t.timestamp/1e3),open:t.open,high:t.high,low:t.low,close:t.close,volume:t.volume}})},ut=function(t,e,i){var n=new Date(1e3*t),a=new Date(1e3*e);switch(i){case"1m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&n.getMinutes()===a.getMinutes();case"5m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/5)===Math.floor(a.getMinutes()/5);case"15m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/15)===Math.floor(a.getMinutes()/15);case"30m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/30)===Math.floor(a.getMinutes()/30);case"1H":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours();case"4H":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&Math.floor(n.getHours()/4)===Math.floor(a.getHours()/4);case"1D":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate();case"1W":var r=Math.floor((n.getTime()-new Date(n.getFullYear(),0,1).getTime())/6048e5),o=Math.floor((a.getTime()-new Date(a.getFullYear(),0,1).getTime())/6048e5);return n.getFullYear()===a.getFullYear()&&r===o;default:return t===e}},dt=function(){var e=(0,c.A)((0,l.A)().m(function e(){var i,o,s,c,d,p,f,m=arguments;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(i=m.length>0&&void 0!==m[0]&&m[0],t.symbol){e.n=1;break}return e.a(2);case 1:if(!a.value||i){e.n=2;break}return e.a(2);case 2:return a.value=!0,r.value=null,e.p=3,o=[],e.p=4,e.n=5,(0,v.Ay)({url:"/api/indicator/kline",method:"get",params:{market:t.market,symbol:t.symbol,timeframe:t.timeframe,limit:500}});case 5:if(s=e.v,1!==s.code||!s.data||!Array.isArray(s.data)){e.n=6;break}o=st(s.data),e.n=7;break;case 6:throw c=s.msg||"获取K线数据失败","tiingo_subscription"===s.hint&&(c=M.$t("dashboard.indicator.error.tiingoSubscription")||"Forex 1-minute data requires Tiingo paid subscription"),new Error(c);case 7:e.n=9;break;case 8:throw e.p=8,p=e.v,p;case 9:if(o&&0!==o.length){e.n=10;break}throw new Error("未获取到K线数据");case 10:n.value=o,u.value=!0,d=ct(o),lt(d),(0,h.dY)(function(){if(g.value){var e=n.value.filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)});if(e.length>0&&g.value){try{g.value.applyNewData(e)}catch(i){g.value.applyNewData(e)}setTimeout(function(){g.value&&xt()},100)}}else mt();t.realtimeEnabled&&(gt(),ft())}),e.n=12;break;case 11:if(e.p=11,f=e.v,r.value=M.$t("dashboard.indicator.error.loadDataFailed")+": "+(f.message||M.$t("dashboard.indicator.error.loadDataFailedDesc")),n.value=[],g.value)try{g.value.applyNewData([])}catch(l){}case 12:return e.p=12,a.value=!1,e.f(12);case 13:return e.a(2)}},e,null,[[4,8],[3,11,12,13]])}));return function(){return e.apply(this,arguments)}}(),ht=function(){var e=(0,c.A)((0,l.A)().m(function e(i){return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.symbol&&n.value&&0!==n.value.length){e.n=1;break}return e.a(2);case 1:if(!s.value&&!p){e.n=6;break}if(!p){e.n=5;break}return e.p=2,e.n=3,p;case 3:e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2);case 6:if(u.value){e.n=7;break}return g.value&&"function"===typeof g.value.noMoreData&&g.value.noMoreData(),e.a(2);case 7:return s.value=!0,p=(0,c.A)((0,l.A)().m(function e(){var a,r,o,c,d,f;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.n=1,(0,h.dY)();case 1:return e.p=1,a=Math.floor(i/1e3),e.n=2,(0,v.Ay)({url:"/api/indicator/kline",method:"get",params:{market:t.market,symbol:t.symbol,timeframe:t.timeframe,limit:500,before_time:a}});case 2:if(r=e.v,1!==r.code||!r.data||!Array.isArray(r.data)){e.n=5;break}if(o=st(r.data),0!==o.length){e.n=3;break}return u.value=!1,g.value&&"function"===typeof g.value.noMoreData&&g.value.noMoreData(),e.a(2);case 3:if(c=o.filter(function(t){return t.timestamp0&&(a=st(i.data),r=(0,F.A)(n.value),a.length>0&&(o=Math.floor(a[a.length-1].timestamp/1e3),s=Math.floor(r[r.length-1].timestamp/1e3),ut(o,s,t.timeframe)?(c=r[r.length-1],u=a[a.length-1],r[r.length-1]={timestamp:c.timestamp,open:c.open,high:Math.max(c.high,u.high),low:Math.min(c.low,u.low),close:u.close,volume:u.volume},n.value=r,d=ct(n.value),lt(d),g.value&&"function"===typeof g.value.updateData?(h=n.value.length-1,g.value.updateData(r[h]),C(!1)):g.value&&(g.value.applyNewData(n.value),C(!1))):o>s&&(p=a.filter(function(e){var i=Math.floor(e.timestamp/1e3);return!r.some(function(e){var n=Math.floor(e.timestamp/1e3);return ut(i,n,t.timeframe)})}),p.length>0&&(n.value=[].concat((0,F.A)(r),(0,F.A)(p)),n.value.length>500&&(n.value=n.value.slice(-500)),f=ct(n.value),lt(f),g.value&&"function"===typeof g.value.applyMoreData?(g.value.applyMoreData(p),C(!0)):g.value&&(g.value.applyNewData(n.value),C(!0)))))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}));return function(){return e.apply(this,arguments)}}(),ft=function(){y.value&&clearInterval(y.value);var e={"1m":5e3,"5m":1e4,"15m":15e3,"30m":3e4,"1H":6e4,"4H":3e5,"1D":6e5,"1W":18e5},i=e[t.timeframe]||1e4;b.value=Math.min(i,1e3),t.realtimeEnabled&&t.symbol&&n.value.length>0&&(y.value=setInterval(function(){!a.value&&t.symbol&&n.value&&n.value.length>0&&vt()},b.value))},gt=function(){y.value&&(clearInterval(y.value),y.value=null)},mt=function(){var t=document.getElementById("kline-chart-container");if(t)if(0!==t.clientWidth&&0!==t.clientHeight){if(g.value){try{g.value.destroy()}catch(y){}g.value=null}try{var e=document.getElementById("kline-chart-container");if(!e)throw new Error("容器元素不存在");try{g.value=Ia(e,{drawingBarVisible:!0,overlay:{visible:!0}})}catch(y){g.value=Ia(e)}if(g.value&&"function"===typeof g.value.setDrawingBarVisible?g.value.setDrawingBarVisible(!0):g.value&&"function"===typeof g.value.setDrawingBar?g.value.setDrawingBar(!0):g.value&&"function"===typeof g.value.enableDrawing&&g.value.enableDrawing(!0),!g.value)throw new Error("图表初始化失败:无法创建图表实例");if(g.value&&("function"===typeof g.value.setDrawingBarVisible&&g.value.setDrawingBarVisible(!0),"function"===typeof g.value.setDrawingBar&&g.value.setDrawingBar(!0),"function"===typeof g.value.enableDrawing&&g.value.enableDrawing(!0)),_t(),g.value&&"function"===typeof g.value.subscribeAction){if(g.value.subscribeAction("onOverlayCreated",function(t){if(A.value&&t&&t.id){var e={line:"segment",horizontalLine:"horizontalStraightLine",verticalLine:"verticalStraightLine",ray:"rayLine",straightLine:"straightLine",parallelStraightLine:"parallelStraightLine",priceLine:"priceLine",priceChannelLine:"priceChannelLine",fibonacciLine:"fibonacciLine",measure:"priceRangeMeasure"},i=e[A.value];if(!t.name||t.name===i||"priceRangeMeasure"===i){E.value.push(t.id),A.value=null;try{"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(y){}}}}),"function"===typeof g.value.subscribeAction)try{g.value.subscribeAction("onOverlayComplete",function(t){A.value&&t&&t.id&&(E.value.push(t.id),A.value=null)})}catch(y){}g.value.subscribeAction("onOverlayRemoved",function(t){var e=E.value.indexOf(t);e>-1&&E.value.splice(e,1)})}if(g.value&&"function"===typeof g.value.subscribeAction){var i=null,a=!1;g.value.subscribeAction("onVisibleRangeChange",function(){var t=(0,c.A)((0,l.A)().m(function t(e){var r,o,c,d,h,v;return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:if(!e||"number"!==typeof e.from){t.n=5;break}if(a){t.n=1;break}return i=e.from,a=!0,setTimeout(function(){f.value=!0},1e3),t.a(2);case 1:if(f.value){t.n=2;break}return i=e.from,t.a(2);case 2:if(!(s.value&&e.from<=0)){t.n=3;break}try{g.value&&"function"===typeof g.value.setVisibleRange&&(r=n.value.length,r>0&&(o=g.value.getVisibleRange(),o&&(c=Math.ceil((o.to-o.from)*r/100),d=.1,h=Math.min(100,d+c/r*100),g.value.setVisibleRange(d,h))))}catch(y){}return t.a(2);case 3:if(!(e.from<=5&&!s.value&&!p&&u.value&&f.value)){t.n=4;break}if(!(null!==i&&i>e.from)){t.n=4;break}if(!(n.value.length>0)){t.n=4;break}return v=n.value[0].timestamp,t.n=4,ht(v);case 4:i=e.from;case 5:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}())}if(n.value&&n.value.length>0){var o=n.value.filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)});if(o.length>0){try{g.value.applyNewData(o)}catch(y){try{g.value.applyNewData(o)}catch(_){}}try{g.value.createIndicator("VOL",!1,{height:100,dragEnabled:!0})}catch(y){}(0,h.dY)(function(){xt()})}}window.addEventListener("resize",yt)}catch(r){r.value=M.$t("dashboard.indicator.error.chartInitFailed")+": "+(r.message||"未知错误")}}else{var d=0,v=10,m=function(){var t=document.getElementById("kline-chart-container");t&&t.clientWidth>0&&t.clientHeight>0?mt():d0&&t.clientHeight>0&&mt()}},_t=function(){if(g.value){var t=K.value,e="dark"===m.value;g.value.setStyles({grid:{show:!0,horizontal:{show:!0,color:t.gridLineColor,style:"dashed",size:1},vertical:{show:!1}},candle:{priceMark:{show:!0,high:{show:!0,color:t.axisLabelColor},low:{show:!0,color:t.axisLabelColor}},tooltip:{showRule:"always",showType:"standard",labels:[M.$t("dashboard.indicator.tooltip.time"),M.$t("dashboard.indicator.tooltip.open"),M.$t("dashboard.indicator.tooltip.high"),M.$t("dashboard.indicator.tooltip.low"),M.$t("dashboard.indicator.tooltip.close"),M.$t("dashboard.indicator.tooltip.volume")],values:function(t){var e=new Date(t.timestamp);return["".concat(e.getFullYear(),"-").concat(e.getMonth()+1,"-").concat(e.getDate()," ").concat(e.getHours(),":").concat(e.getMinutes()),t.open.toFixed(2),t.high.toFixed(2),t.low.toFixed(2),t.close.toFixed(2),t.volume.toFixed(0)]}},bar:{upColor:e?"#0ecb81":"#13c2c2",downColor:e?"#f6465d":"#fa541c",noChangeColor:t.borderColor}},indicator:{tooltip:{showRule:"always",showType:"standard"}},xAxis:{show:!0,axisLine:{show:!0,color:t.borderColor}},yAxis:{show:!0,axisLine:{show:!1}},crosshair:{show:!0,horizontal:{show:!0,line:{show:!0,style:"dashed",color:t.gridLineColor,size:1}},vertical:{show:!0,line:{show:!0,style:"dashed",color:t.gridLineColor,size:1}}},watermark:{show:!1}})}},bt=function(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,r=arguments.length>5&&void 0!==arguments[5]&&arguments[5];try{var o={name:t,shortName:t,calc:e,figures:i,calcParams:n,precision:a,series:r?"price":"normal"};return ai(o),!0}catch(s){return!(!s.message||!s.message.includes("already registered"))}},xt=function(){var e=(0,c.A)((0,l.A)().m(function e(){var i,a,r,o;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!x.value){e.n=1;break}return e.a(2);case 1:if(g.value&&0!==n.value.length){e.n=2;break}return e.a(2);case 2:x.value=!0,e.p=3;try{I.value.length>0&&g.value&&(I.value.forEach(function(t){try{"function"===typeof g.value.removeOverlay?g.value.removeOverlay(t):"function"===typeof g.value.removeOverlayById&&g.value.removeOverlayById(t)}catch(e){}}),I.value=[])}catch(s){}try{k.value.length>0&&(k.value.forEach(function(t){var e="string"===typeof t?t:t.name,i="string"===typeof t?void 0:t.paneId;i?g.value.removeIndicator(i,e):(g.value.removeIndicator("candle_pane",e),g.value.removeIndicator(e))}),k.value=[])}catch(s){}i=ct(n.value),a=(0,l.A)().m(function e(){var n,a,r,s,c,u,d,h,p,v,f,m,y,b,x,w,S,C,E,A,P,M,D,T,R,L,N,O,z,V,H,K,X,j,st,lt,ct,ut,dt,ht,pt,vt,ft,gt,mt,yt,_t,xt,wt,St,Ct,kt,It,Et,At,Pt,Mt,Dt,Tt,Bt,Ft,Rt,Lt,Nt,Ot,zt,Vt,Wt,Ht,$t,Kt,Yt,Xt,jt,Ut,Gt,Zt,qt,Jt,Qt,te,ee,ie,ne,ae,re,oe,se,le,ce,ue,de,he,pe,ve,fe,ge,me,ye,_e,be,xe,we,Se,Ce,ke,Ie,Ee,Ae,Pe,Me,De,Te,Be,Fe,Re,Le,Ne,Oe,ze,Ve,We,He,$e,Ke,Ye,Xe,je,Ue,Ge,Ze,qe,Je,Qe,ti,ei,ii,ni,ai,ri,oi,si,li,ci,ui,di,hi,pi,vi,fi,gi,mi,yi,_i;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(n=t.activeIndicators[o],e.p=1,"python"!==n.type){e.n=31;break}if(n.code){e.n=2;break}return e.a(2,0);case 2:if(e.p=2,!n.calculate||"function"!==typeof n.calculate){e.n=15;break}return e.n=3,n.calculate(i,n.params||{});case 3:if(a=e.v,r=[],a&&a.plots&&Array.isArray(a.plots)&&(r=(0,F.A)(a.plots)),!(a&&a.signals&&Array.isArray(a.signals))){e.n=14;break}s=(0,_.A)(a.signals),e.p=4,s.s();case 5:if((c=s.n()).done){e.n=11;break}if(u=c.value,!(u.data&&Array.isArray(u.data)&&u.data.length>0)){e.n=10;break}for(d=[],h=0;h0&&g.value){M=(0,_.A)(v);try{for(M.s();!(D=M.n()).done;){T=D.value;try{R=T.timestamp,R<1e10&&(R*=1e3),L=T.text,"function"===typeof g.value.createOverlay&&(N=g.value.createOverlay({name:"signalTag",points:[{timestamp:R,value:T.price},{timestamp:R,value:T.anchorPrice}],extendData:{text:L,color:T.color,side:T.side,action:T.action,price:T.price},lock:!0},"candle_pane"),N&&I.value.push(N))}catch(l){}}}catch(bi){M.e(bi)}finally{M.f()}}case 10:e.n=5;break;case 11:e.n=13;break;case 12:e.p=12,mi=e.v,s.e(mi);case 13:return e.p=13,s.f(),e.f(13);case 14:if(r.length>0&&(O=r.filter(function(t){return t.data&&Array.isArray(t.data)&&t.data.length>0}),O.length>0)){for(z=[],V={},H=0;H0)){e.n=23;break}for(xt=[],wt=0;wt0&&g.value){Lt=(0,_.A)(Ct);try{for(Lt.s();!(Nt=Lt.n()).done;){Ot=Nt.value;try{zt=Ot.timestamp,zt<1e10&&(zt*=1e3),Vt=Ot.text,"function"===typeof g.value.createOverlay&&(Wt=g.value.createOverlay({name:"signalTag",points:[{timestamp:zt,value:Ot.price},{timestamp:zt,value:Ot.anchorPrice}],extendData:{text:Vt,color:Ot.color,side:Ot.side,action:Ot.action,price:Ot.price},lock:!0},"candle_pane"),Wt&&I.value.push(Wt))}catch(l){}}}catch(bi){Lt.e(bi)}finally{Lt.f()}}case 23:e.n=18;break;case 24:e.n=26;break;case 25:e.p=25,yi=e.v,mt.e(yi);case 26:return e.p=26,mt.f(),e.f(26);case 27:if(gt.length>0&&(Ht=gt.filter(function(t){return t.data&&Array.isArray(t.data)&&t.data.length>0}),Ht.length>0)){for($t=[],Kt={},Yt=0;Yt0&&(0,h.dY)(function(){g.value&&xt()})},{deep:!0}),(0,h.wB)(function(){return t.realtimeEnabled},function(t){t?ft():gt()}),(0,h.sV)((0,c.A)((0,l.A)().m(function e(){return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.n=1,(0,h.dY)();case 1:return!t.theme||"dark"!==t.theme&&"light"!==t.theme||(m.value=t.theme),e.p=2,e.n=3,X();case 3:e.n=5;break;case 4:e.p=4,e.v,$.value=!0;case 5:(0,h.dY)(function(){setTimeout(function(){!g.value&&t.symbol&&mt()},300)});case 6:return e.a(2)}},e,null,[[2,4]])}))),(0,h.xo)(function(){gt(),g.value&&(g.value.destroy(),g.value=null),window.removeEventListener("resize",yt)}),{klineData:n,loading:a,error:r,loadingHistory:s,chartRef:g,chartTheme:m,themeConfig:K,getIndicatorColor:Y,handleRetry:wt,loadingPython:W,pythonReady:H,pyodideLoadFailed:$,formatKlineData:st,updatePricePanel:lt,isSameTimeframe:ut,loadKlineData:dt,loadMoreHistoryData:pt,updateKlineRealtime:vt,startRealtime:ft,stopRealtime:gt,initChart:mt,handleResize:yt,updateChartTheme:_t,updateIndicators:xt,executePythonStrategy:U,parsePythonStrategy:j,indicatorButtons:R,isIndicatorActive:L,toggleIndicator:z,drawingTools:D,activeDrawingTool:A,selectDrawingTool:N,clearAllDrawings:O}}},La=Ra,Na=(0,E.A)(La,M,D,!1,null,"076675b8",null),Oa=Na.exports,za=i(59286),Va={name:"DashboardIndicator",components:{IndicatorEditor:P,KlineChart:Oa,QuickTradePanel:za.A},computed:(0,d.A)((0,d.A)({},(0,p.aH)({navTheme:function(t){return t.app.theme}})),{},{chartTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme?"dark":"light"},isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),setup:function(){var t=(0,h.nI)(),e=t||{},i=e.proxy,n=(0,h.KR)(1),a=(0,h.KR)(!1),p=(0,h.KR)(void 0),m=(0,h.KR)([]),y=(0,h.KR)([]),_=(0,h.KR)(!1),b=(0,h.KR)(""),x=(0,h.KR)(!1),w=(0,h.KR)(!1),S=(0,h.KR)(!1),C=(0,h.KR)(""),k=(0,h.KR)(""),I=(0,h.KR)([]),E=(0,h.KR)(!1),A=(0,h.KR)([]),P=(0,h.KR)(!1),M=(0,h.KR)(null),D=(0,h.KR)(null),T=(0,h.KR)([]),B=(0,h.KR)(!1),F=(0,h.KR)(!1),R=(0,h.KR)(""),L=(0,h.KR)(""),N=(0,h.KR)(0),O=(0,h.EW)(function(){return"crypto"===(K.value||"").toLowerCase()}),z=function(){O.value?(R.value=$.value||"",N.value=parseFloat(Y.value)||0,L.value="",F.value=!0):u.A.warning(i.$t("quickTrade.cryptoOnly"))},V=function(){u.A.success(i.$t("quickTrade.orderSuccess"))},W=function(t){t&&O.value&&(R.value=t)},H=function(){i&&i.$router&&i.$router.push("/indicator-community")},$=(0,h.KR)(""),K=(0,h.KR)(""),Y=(0,h.KR)("--"),X=(0,h.KR)(0),j=(0,h.EW)(function(){return X.value>0?"color-up":X.value<0?"color-down":""}),U=(0,h.KR)("1D"),G=(0,h.KR)([]),Z=(0,h.KR)(!1),q=[{id:"sma5",name:"SMA5 (5日均线)",shortName:"SMA5",type:"line",defaultParams:{length:5}},{id:"sma10",name:"SMA10 (10日均线)",shortName:"SMA10",type:"line",defaultParams:{length:10}},{id:"sma20",name:"SMA20 (20日均线)",shortName:"SMA20",type:"line",defaultParams:{length:20}},{id:"sma30",name:"SMA30 (30日均线)",shortName:"SMA30",type:"line",defaultParams:{length:30}}],J=[{id:"ema5",name:"EMA5 (5日指数均线)",shortName:"EMA5",type:"line",defaultParams:{length:5}},{id:"ema10",name:"EMA10 (10日指数均线)",shortName:"EMA10",type:"line",defaultParams:{length:10}},{id:"ema20",name:"EMA20 (20日指数均线)",shortName:"EMA20",type:"line",defaultParams:{length:20}},{id:"ema30",name:"EMA30 (30日指数均线)",shortName:"EMA30",type:"line",defaultParams:{length:30}}],Q=(0,h.KR)([]),tt=(0,h.KR)([]),et=(0,h.KR)(!1),it=(0,h.KR)(!1),nt=(0,h.KR)(null),at=(0,h.KR)(""),rt=(0,h.KR)([]),ot=(0,h.KR)({}),st=(0,h.KR)(!1),lt=(0,h.KR)({}),ct=(0,h.KR)(!1),ut=(0,h.KR)(!1),dt=(0,h.KR)(!1),ht=(0,h.KR)(null),pt=(0,h.KR)(!1),vt=(0,h.KR)(null),ft=(0,h.KR)(!1),gt=(0,h.KR)(null),mt=(0,h.KR)(!1),yt=(0,h.KR)(null),_t=(0,h.KR)(!1),bt=(0,h.KR)(null),xt=(0,h.KR)(!1),wt=(0,h.KR)(!1),St=(0,h.KR)("free"),Ct=(0,h.KR)(10),kt=(0,h.KR)(""),It=(0,h.KR)(!1),Et={price:[{required:!0,message:"请输入价格",trigger:"blur",type:"number"}]},At=(0,h.KR)(!1),Pt=function(t){var e=t.price,i=t.change;Y.value=e,X.value=i},Mt=function(){},Dt=(0,h.KR)([]),Tt=(0,h.KR)([]),Bt=function(t){U.value=t},Ft=function(t){return t?Object.values(t).join(", "):""},Rt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,i,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a.value=!0,t.p=1,r=(0,h.nI)(),o=null===r||void 0===r||null===(e=r.proxy)||void 0===e?void 0:e.$store,s=(null===o||void 0===o||null===(i=o.getters)||void 0===i?void 0:i.userInfo)||{},!s||!s.email){t.n=2;break}return n.value=s.id,a.value=!1,Lt(),ae(),t.a(2);case 2:return t.n=3,(0,g.ug)();case 3:c=t.v,c&&1===c.code&&c.data&&(n.value=c.data.id,o&&o.commit("SET_INFO",c.data),Lt(),ae()),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.p=5,a.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[1,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),Lt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return t.a(2);case 1:return _.value=!0,t.p=2,t.n=3,(0,f.Qo)({userid:n.value});case 3:e=t.v,e&&1===e.code&&e.data&&(y.value=e.data.map(function(t){return(0,d.A)((0,d.A)({},t),{},{label:t.symbol+(t.name?" (".concat(t.name,")"):""),value:"".concat(t.market,":").concat(t.symbol)})}),Nt(),y.value.length>0&&!$.value&&(a=y.value[0],K.value=a.market,$.value=a.symbol,p.value=a.value)),t.n=5;break;case 4:t.p=4,t.v,u.A.error(i.$t("dashboard.indicator.error.loadWatchlistFailed"));case 5:return t.p=5,_.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),Nt=function(){b.value?m.value=y.value.filter(function(t){return t.symbol.toLowerCase().includes(b.value.toLowerCase())||t.name&&t.name.toLowerCase().includes(b.value.toLowerCase())}):m.value=y.value},Ot=function(t){b.value=t,0===y.value.length&&t&&(x.value=!0),Nt()},zt=function(t){x.value=t,t||(b.value="")},Vt=function(t){if("__empty_watchlist_hint__"!==t){if("__add_stock_option__"===t)return w.value=!0,void setTimeout(function(){p.value=void 0},0);var e=y.value.find(function(e){return e.value===t});if(e||(e=m.value.find(function(e){return e.value===t})),!e&&t.includes(":")){var i=t.split(":"),n=(0,s.A)(i,2),a=n[0],r=n[1];e={market:a,symbol:r,value:t}}e&&(K.value=e.market,$.value=e.symbol,p.value=e.value)}},Wt=function(t,e){var i,n=(null===(i=e.componentOptions)||void 0===i||null===(i=i.propsData)||void 0===i?void 0:i.value)||"";return"__empty_watchlist_hint__"===n||"__add_stock_option__"===n||n.toLowerCase().includes(t.toLowerCase())},Ht=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,(0,f.iO)();case 1:e=t.v,e&&1===e.code&&e.data&&Array.isArray(e.data)?T.value=e.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):e&&1===e.code&&e.data&&"object"===(0,o.A)(e.data)?T.value=Object.keys(e.data).map(function(t){return{value:t,i18nKey:"dashboard.analysis.market.".concat(t)}}):T.value=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"CNStock",i18nKey:"dashboard.analysis.market.CNStock"},{value:"HKStock",i18nKey:"dashboard.analysis.market.HKStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],T.value.length>0&&!C.value&&(C.value=T.value[0].value),t.n=3;break;case 2:t.p=2,t.v,T.value=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"CNStock",i18nKey:"dashboard.analysis.market.CNStock"},{value:"HKStock",i18nKey:"dashboard.analysis.market.HKStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:return t.a(2)}},t,null,[[0,2]])}));return function(){return t.apply(this,arguments)}}(),$t=function(){w.value=!1,M.value=null,k.value="",I.value=[],B.value=!1,C.value=T.value.length>0?T.value[0].value:""},Kt=function(t){C.value=t,k.value="",I.value=[],M.value=null,B.value=!1,Zt(t)},Yt=function(t){var e=t.target.value;if(k.value=e,D.value&&clearTimeout(D.value),!e||""===e.trim())return I.value=[],B.value=!1,void(M.value=null);D.value=setTimeout(function(){jt(e)},500)},Xt=function(t){t&&t.trim()&&(C.value?I.value.length>0||(B.value&&0===I.value.length?Ut():jt(t)):u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},jt=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var n;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e&&""!==e.trim()){t.n=1;break}return I.value=[],B.value=!1,t.a(2);case 1:if(C.value){t.n=2;break}return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),t.a(2);case 2:return E.value=!0,B.value=!0,t.p=3,t.n=4,(0,f._3)({market:C.value,keyword:e.trim(),limit:20});case 4:n=t.v,n&&1===n.code&&n.data&&n.data.length>0?I.value=n.data:(I.value=[],M.value={market:C.value,symbol:e.trim().toUpperCase(),name:""}),t.n=6;break;case 5:t.p=5,t.v,I.value=[],M.value={market:C.value,symbol:e.trim().toUpperCase(),name:""};case 6:return t.p=6,E.value=!1,t.f(6);case 7:return t.a(2)}},t,null,[[3,5,6,7]])}));return function(e){return t.apply(this,arguments)}}(),Ut=function(){k.value&&k.value.trim()?C.value?M.value={market:C.value,symbol:k.value.trim().toUpperCase(),name:""}:u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},Gt=function(t){M.value={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},Zt=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var i;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e||(e=C.value||(T.value.length>0?T.value[0].value:"")),e){t.n=1;break}return t.a(2);case 1:return P.value=!0,t.p=2,t.n=3,(0,f.z6)({market:e,limit:10});case 3:i=t.v,i&&1===i.code&&i.data?A.value=i.data:A.value=[],t.n=5;break;case 4:t.p=4,t.v,A.value=[];case 5:return t.p=5,P.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e){return t.apply(this,arguments)}}(),qt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e="",a="",!M.value){t.n=1;break}e=M.value.market,a=M.value.symbol.toUpperCase(),t.n=4;break;case 1:if(!k.value||!k.value.trim()){t.n=3;break}if(C.value){t.n=2;break}return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),t.a(2);case 2:e=C.value,a=k.value.trim().toUpperCase(),t.n=4;break;case 3:return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),t.a(2);case 4:return S.value=!0,t.p=5,t.n=6,(0,f.dp)({userid:n.value,market:e,symbol:a});case 6:if(r=t.v,!r||1!==r.code){t.n=8;break}return u.A.success(i.$t("dashboard.analysis.message.addStockSuccess")),$t(),t.n=7,Lt();case 7:t.n=9;break;case 8:u.A.error((null===r||void 0===r?void 0:r.msg)||i.$t("dashboard.analysis.message.addStockFailed"));case 9:t.n=11;break;case 10:t.p=10,c=t.v,s=(null===c||void 0===c||null===(o=c.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===c||void 0===c?void 0:c.message)||i.$t("dashboard.analysis.message.addStockFailed"),u.A.error(s);case 11:return t.p=11,S.value=!1,t.f(11);case 12:return t.a(2)}},t,null,[[5,10,11,12]])}));return function(){return t.apply(this,arguments)}}(),Jt=function(t){if(!ie(t.id)){var e=t.params||t.defaultParams||{};G.value.push((0,d.A)((0,d.A)({},t),{},{id:t.id,params:(0,d.A)({},e)}))}},Qt=function(t){G.value=G.value.filter(function(e){return e.id!==t})},te=function(t){var e=t.action,i=t.indicator;if("add"===e){var n=(0,d.A)((0,d.A)({},i),{},{calculate:ee(i.id)});Jt(n)}else"remove"===e&&Qt(i.id)},ee=function(t){return null},ie=function(t){return"sma"===t?q.some(function(t){return G.value.some(function(e){return e.id===t.id})}):"ema"===t?J.some(function(t){return G.value.some(function(e){return e.id===t.id})}):G.value.some(function(e){return e.id===t})},ne=function(){var t=new Set;return q.forEach(function(e){return t.add(e.id)}),J.forEach(function(e){return t.add(e.id)}),G.value.filter(function(e){return!t.has(e.id)})},ae=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,i,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return t.a(2);case 1:return et.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:n.value}});case 3:e=t.v,1===e.code&&e.data&&(i=e.data.filter(function(t){return!t.is_buy||0===t.is_buy||"0"===t.is_buy}),a=e.data.filter(function(t){return 1===t.is_buy||"1"===t.is_buy}),Q.value=i.map(function(t){return(0,d.A)((0,d.A)({},t),{},{type:"python",source:"custom"})}),tt.value=a.map(function(t){return(0,d.A)((0,d.A)({},t),{},{type:"python",source:"purchased"})})),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.p=5,et.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),re=(0,h.KR)(null),oe=function(){var t=(0,c.A)((0,l.A)().m(function t(e,n){var a,r,o,s,c,h,p,v,f;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a="".concat(n,"-").concat(e.id),!ie(a)){t.n=1;break}return Qt(a),t.a(2);case 1:if(t.p=1,r=e.code||"",re.value){t.n=2;break}return u.A.error(i.$t("dashboard.indicator.error.chartNotReady")),t.a(2);case 2:if("function"===typeof re.value.parsePythonStrategy){t.n=3;break}return u.A.error(i.$t("dashboard.indicator.error.chartMethodNotReady")),t.a(2);case 3:if("function"===typeof re.value.executePythonStrategy){t.n=4;break}return u.A.error(i.$t("dashboard.indicator.error.chartExecuteNotReady")),t.a(2);case 4:if(o=re.value.parsePythonStrategy(r),o){t.n=5;break}return u.A.error(i.$t("dashboard.indicator.error.parseFailed")),t.a(2);case 5:s=e.userParams||{},c=r,h=(0,d.A)({},s),p={id:a,name:e.name,type:"python",code:c,description:e.description,parsed:o,userParams:h,originalId:e.id,user_id:e.user_id||e.userId,is_encrypted:e.is_encrypted||e.isEncrypted||0,calculate:function(t,i){return re.value.executePythonStrategy(c,t,(0,d.A)((0,d.A)({},i),h),{id:e.id,user_id:e.user_id||e.userId,is_encrypted:e.is_encrypted||e.isEncrypted||0})}},v=(0,d.A)((0,d.A)({},o.params),s),G.value.push((0,d.A)((0,d.A)({},p),{},{params:v})),t.n=7;break;case 6:t.p=6,f=t.v,u.A.error(i.$t("dashboard.indicator.error.addIndicatorFailed")+": "+(f.message||"未知错误"));case 7:return t.a(2)}},t,null,[[1,6]])}));return function(e,i){return t.apply(this,arguments)}}(),se=function(){var t=(0,c.A)((0,l.A)().m(function t(e,n){var a,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a="".concat(n,"-").concat(e.id),!ie(a)){t.n=1;break}Qt(a),t.n=5;break;case 1:return t.p=1,st.value=!0,t.n=2,i.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:e.id}});case 2:r=t.v,r&&1===r.code&&Array.isArray(r.data)&&r.data.length>0?(rt.value=r.data,o="".concat(n,"-").concat(e.id),s=lt.value[o],c={},r.data.forEach(function(t){var e=s&&void 0!==s[t.name]?s[t.name]:t.default;e="int"===t.type?parseInt(e)||0:"float"===t.type?parseFloat(e)||0:"bool"===t.type?!0===e||"true"===e||1===e||"1"===e:e||"",c[t.name]=e}),ot.value=c,nt.value=e,at.value=n,it.value=!0):oe(e,n),t.n=4;break;case 3:t.p=3,t.v,oe(e,n);case 4:return t.p=4,st.value=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}));return function(e,i){return t.apply(this,arguments)}}(),le=function(){if(nt.value){var t="".concat(at.value,"-").concat(nt.value.id);lt.value[t]=(0,d.A)({},ot.value);var e=(0,d.A)((0,d.A)({},nt.value),{},{userParams:(0,d.A)({},ot.value)});oe(e,at.value)}it.value=!1,nt.value=null,at.value=""},ce=function(){ue(),it.value=!1,setTimeout(function(){nt.value=null,at.value=""},100)},ue=function(){if(nt.value&&at.value){var t="".concat(at.value,"-").concat(nt.value.id);lt.value[t]=JSON.parse(JSON.stringify(ot.value))}},de=function(){ue()},he=function(t){var e=t.code,n=t.name;if(e&&e.trim())try{if(!re.value)return void u.A.error(i.$t("dashboard.indicator.error.chartNotReady"));if("function"!==typeof re.value.parsePythonStrategy)return void u.A.error(i.$t("dashboard.indicator.error.chartMethodNotReady"));if("function"!==typeof re.value.executePythonStrategy)return void u.A.error(i.$t("dashboard.indicator.error.chartExecuteNotReady"));var a=re.value.parsePythonStrategy(e);if(!a)return void u.A.error(i.$t("dashboard.indicator.error.parseFailedCheck"));var r={id:"temp-editor-indicator",name:n||"临时指标",type:"python",code:e,description:"",parsed:a,calculate:function(t,i){var n=e;return re.value.executePythonStrategy(n,t,i)}},o=G.value.findIndex(function(t){return"temp-editor-indicator"===t.id});o>=0&&G.value.splice(o,1),G.value.push((0,d.A)((0,d.A)({},r),{},{params:(0,d.A)({},a.params)})),u.A.success(i.$t("dashboard.indicator.success.runIndicator"))}catch(s){u.A.error(i.$t("dashboard.indicator.error.runIndicatorFailed")+": "+(s.message||"未知错误"))}else u.A.warning(i.$t("dashboard.indicator.warning.enterCode"))},pe=function(){ht.value=null,dt.value=!0},ve=function(t){ht.value=t,dt.value=!0},fe=function(){ct.value=!ct.value},ge=function(t){r.A.confirm({title:i.$t("dashboard.indicator.delete.confirmTitle"),content:i.$t("dashboard.indicator.delete.confirmContent",{name:t.name}),okText:i.$t("dashboard.indicator.delete.confirmOk"),okType:"danger",cancelText:i.$t("dashboard.indicator.delete.confirmCancel"),onOk:function(){var e=(0,c.A)((0,l.A)().m(function e(){var a,r,o;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,v.Ay)({url:"/api/indicator/deleteIndicator",method:"post",data:{id:t.id,userid:n.value}});case 1:if(a=e.v,1!==a.code){e.n=3;break}return u.A.success(i.$t("dashboard.indicator.delete.success")),r="custom-"+t.id,ie(r)&&Qt(r),e.n=2,ae();case 2:e.n=4;break;case 3:u.A.error(a.msg||i.$t("dashboard.indicator.delete.failed"));case 4:e.n=6;break;case 5:e.p=5,o=e.v,u.A.error(i.$t("dashboard.indicator.delete.failed")+": "+(o.message||"未知错误"));case 6:return e.a(2)}},e,null,[[0,5]])}));function a(){return e.apply(this,arguments)}return a}()})},me=function(t){i.$router.push({path:"/backtest-center",query:{tab:"indicator",indicator_id:String(t.id)}})},ye=function(t){i.$router.push({path:"/backtest-center",query:{tab:"indicator",indicator_id:String(t.id),view:"history"}})},_e=function(t){},be=function(t){bt.value=(0,d.A)({},t),St.value=t.pricing_type||"free",Ct.value=t.price||10,kt.value=t.description||"",It.value=!!t.vip_free,_t.value=!0},xe=function(t){i.$router.push({path:"/trading-assistant",query:{mode:"create",indicator_id:String(t.id),indicator_name:t.name||"",indicator_desc:t.description||""}})},we=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return u.A.error(i.$t("dashboard.indicator.error.pleaseLogin")),t.a(2);case 1:return xt.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:bt.value.id,code:bt.value.code,name:bt.value.name,description:kt.value,publishToCommunity:!0,pricingType:St.value,price:"paid"===St.value?Ct.value:0,vipFree:"paid"===St.value&&It.value}});case 3:if(e=t.v,1!==e.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.publish.success")),_t.value=!1,bt.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(e.msg||i.$t("dashboard.indicator.publish.failed"));case 6:t.n=8;break;case 7:t.p=7,a=t.v,u.A.error(i.$t("dashboard.indicator.publish.failed")+": "+(a.message||""));case 8:return t.p=8,xt.value=!1,t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(){return t.apply(this,arguments)}}(),Se=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value&&bt.value){t.n=1;break}return t.a(2);case 1:return wt.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:bt.value.id,code:bt.value.code,name:bt.value.name,description:bt.value.description,publishToCommunity:!1,pricingType:"free",price:0,vipFree:!1}});case 3:if(e=t.v,1!==e.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.publish.unpublishSuccess")),_t.value=!1,bt.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(e.msg||i.$t("dashboard.indicator.publish.unpublishFailed"));case 6:t.n=8;break;case 7:t.p=7,t.v,u.A.error(i.$t("dashboard.indicator.publish.unpublishFailed"));case 8:return t.p=8,wt.value=!1,t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(){return t.apply(this,arguments)}}(),Ce=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var a,r,o;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return u.A.error(i.$t("dashboard.indicator.error.pleaseLogin")),t.a(2);case 1:return a=i.$refs.indicatorEditor,a&&(a.saving=!0),t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:e.id||0,code:e.code}});case 3:if(r=t.v,1!==r.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.save.success")),dt.value=!1,ht.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(r.msg||i.$t("dashboard.indicator.save.failed"));case 6:t.n=8;break;case 7:t.p=7,o=t.v,u.A.error(i.$t("dashboard.indicator.save.failed")+": "+(o.message||"未知错误"));case 8:return t.p=8,a&&(a.saving=!1),t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(e){return t.apply(this,arguments)}}(),ke=function(t){var e=t.end_time;if(1===e||"1"===e)return i.$t("dashboard.indicator.status.normalPermanent");if(!e||0===e)return i.$t("dashboard.indicator.status.normal");var n=Math.floor(Date.now()/1e3);return e0&&!C.value&&(C.value=T.value[0].value),C.value&&Zt(C.value)):(M.value=null,k.value="",I.value=[],B.value=!1,D.value&&(clearTimeout(D.value),D.value=null))}),(0,h.wB)(function(){return ot.value},function(t){if(it.value&&nt.value&&at.value){var e="".concat(at.value,"-").concat(nt.value.id);lt.value[e]=JSON.parse(JSON.stringify(t))}},{deep:!0,immediate:!1}),(0,h.wB)(it,function(t){t||ue()}),{userId:n,klineChart:re,searchSymbol:p,symbolSuggestions:m,watchlist:y,symbolSearchValue:b,symbolSearchOpen:x,currentSymbol:$,currentMarket:K,currentPrice:Y,priceChange:X,priceChangeClass:j,timeframe:U,loadingWatchlist:_,activeIndicators:G,trendIndicators:Dt,oscillatorIndicators:Tt,customIndicators:Q,purchasedIndicators:tt,loadingIndicators:et,realtimeEnabled:At,toggleRealtime:De,handleSymbolSearch:Ot,handleSymbolSelect:Vt,handleDropdownVisibleChange:zt,filterSymbolOption:Wt,getMarketName:Pe,getMarketColor:Me,setTimeframe:Bt,addIndicator:Jt,removeIndicator:Qt,isIndicatorActive:ie,loadIndicators:ae,addPythonIndicator:oe,toggleIndicator:se,getIndicatorStatus:ke,getIndicatorStatusIcon:Ie,getIndicatorStatusClass:Ee,getExpiryTimeText:Ae,formatParams:Ft,loadWatchlist:Lt,getCustomActiveIndicators:ne,showIndicatorEditor:dt,editingIndicator:ht,handleCreateIndicator:pe,handleRunIndicator:he,handleSaveIndicator:Ce,handleEditIndicator:ve,handleDeleteIndicator:ge,toggleCustomSection:fe,customSectionCollapsed:ct,purchasedSectionCollapsed:ut,handlePriceChange:Pt,handleChartRetry:Mt,handleIndicatorToggle:te,showParamsModal:it,pendingIndicator:nt,indicatorParams:rt,indicatorParamValues:ot,loadingParams:st,confirmIndicatorParams:le,cancelIndicatorParams:ce,handleParamsModalAfterClose:de,showBacktestModal:pt,backtestIndicator:vt,handleOpenBacktest:me,showBacktestHistoryDrawer:ft,backtestHistoryIndicator:gt,handleOpenBacktestHistory:ye,showBacktestRunViewer:mt,selectedBacktestRun:yt,handleViewBacktestRun:_e,showPublishModal:_t,publishIndicator:bt,publishing:xt,unpublishing:wt,publishPricingType:St,publishPrice:Ct,publishDescription:kt,publishVipFree:It,publishRules:Et,handlePublishIndicator:be,handleCreateStrategyFromIndicator:xe,handleConfirmPublish:we,handleUnpublish:Se,selectedSymbol:$,selectedMarket:K,selectedTimeframe:U,isMobile:Z,showAddStockModal:w,addingStock:S,selectedMarketTab:C,symbolSearchKeyword:k,symbolSearchResults:I,searchingSymbols:E,hotSymbols:A,loadingHotSymbols:P,selectedSymbolForAdd:M,marketTypes:T,hasSearched:B,handleCloseAddStockModal:$t,handleMarketTabChange:Kt,handleSymbolSearchInput:Yt,handleSearchOrInput:Xt,searchSymbolsInModal:jt,selectSymbol:Gt,loadHotSymbols:Zt,handleAddStock:qt,handleDirectAdd:Ut,loadMarketTypes:Ht,showQuickTrade:F,qtSymbol:R,qtSide:L,qtPrice:N,isCryptoMarket:O,openQuickTrade:z,onQuickTradeSuccess:V,handleQuickTradeSymbolChange:W,goToIndicatorMarket:H}}},Wa=Va,Ha=(0,E.A)(Wa,n,a,!1,null,"11d8a5e2",null),$a=Ha.exports},40955:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.BlockCipher,a=e.algo,r=[],o=[],s=[],l=[],c=[],u=[],d=[],h=[],p=[],v=[];(function(){for(var t=[],e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;var i=0,n=0;for(e=0;e<256;e++){var a=n^n<<1^n<<2^n<<3^n<<4;a=a>>>8^255&a^99,r[i]=a,o[a]=i;var f=t[i],g=t[f],m=t[g],y=257*t[a]^16843008*a;s[i]=y<<24|y>>>8,l[i]=y<<16|y>>>16,c[i]=y<<8|y>>>24,u[i]=y;y=16843009*m^65537*g^257*f^16843008*i;d[a]=y<<24|y>>>8,h[a]=y<<16|y>>>16,p[a]=y<<8|y>>>24,v[a]=y,i?(i=f^t[t[t[m^f]]],n^=t[t[n]]):i=n=1}})();var f=[0,1,2,4,8,16,32,64,128,27,54],g=a.AES=n.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,i=t.sigBytes/4,n=this._nRounds=i+6,a=4*(n+1),o=this._keySchedule=[],s=0;s6&&s%i==4&&(u=r[u>>>24]<<24|r[u>>>16&255]<<16|r[u>>>8&255]<<8|r[255&u]):(u=u<<8|u>>>24,u=r[u>>>24]<<24|r[u>>>16&255]<<16|r[u>>>8&255]<<8|r[255&u],u^=f[s/i|0]<<24),o[s]=o[s-i]^u);for(var l=this._invKeySchedule=[],c=0;c>>24]]^h[r[u>>>16&255]]^p[r[u>>>8&255]]^v[r[255&u]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,s,l,c,u,r)},decryptBlock:function(t,e){var i=t[e+1];t[e+1]=t[e+3],t[e+3]=i,this._doCryptBlock(t,e,this._invKeySchedule,d,h,p,v,o);i=t[e+1];t[e+1]=t[e+3],t[e+3]=i},_doCryptBlock:function(t,e,i,n,a,r,o,s){for(var l=this._nRounds,c=t[e]^i[0],u=t[e+1]^i[1],d=t[e+2]^i[2],h=t[e+3]^i[3],p=4,v=1;v>>24]^a[u>>>16&255]^r[d>>>8&255]^o[255&h]^i[p++],g=n[u>>>24]^a[d>>>16&255]^r[h>>>8&255]^o[255&c]^i[p++],m=n[d>>>24]^a[h>>>16&255]^r[c>>>8&255]^o[255&u]^i[p++],y=n[h>>>24]^a[c>>>16&255]^r[u>>>8&255]^o[255&d]^i[p++];c=f,u=g,d=m,h=y}f=(s[c>>>24]<<24|s[u>>>16&255]<<16|s[d>>>8&255]<<8|s[255&h])^i[p++],g=(s[u>>>24]<<24|s[d>>>16&255]<<16|s[h>>>8&255]<<8|s[255&c])^i[p++],m=(s[d>>>24]<<24|s[h>>>16&255]<<16|s[c>>>8&255]<<8|s[255&u])^i[p++],y=(s[h>>>24]<<24|s[c>>>16&255]<<16|s[u>>>8&255]<<8|s[255&d])^i[p++];t[e]=f,t[e+1]=g,t[e+2]=m,t[e+3]=y},keySize:8});e.AES=n._createHelper(g)}(),t.AES})},43128:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.BlockCipher,a=e.algo;const r=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],s=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var l={pbox:[],sbox:[]};function c(t,e){let i=e>>24&255,n=e>>16&255,a=e>>8&255,r=255&e,o=t.sbox[0][i]+t.sbox[1][n];return o^=t.sbox[2][a],o+=t.sbox[3][r],o}function u(t,e,i){let n,a=e,o=i;for(let s=0;s1;--s)a^=t.pbox[s],o=c(t,a)^o,n=a,a=o,o=n;return n=a,a=o,o=n,o^=t.pbox[1],a^=t.pbox[0],{left:a,right:o}}function h(t,e,i){for(let r=0;r<4;r++){t.sbox[r]=[];for(let e=0;e<256;e++)t.sbox[r][e]=s[r][e]}let n=0;for(let s=0;s=i&&(n=0);let a=0,l=0,c=0;for(let o=0;o>>2];t.sigBytes-=e}},m=(n.BlockCipher=d.extend({cfg:d.cfg.extend({mode:v,padding:g}),reset:function(){var t;d.reset.call(this);var e=this.cfg,i=e.iv,n=e.mode;this._xformMode==this._ENC_XFORM_MODE?t=n.createEncryptor:(t=n.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==t?this._mode.init(this,i&&i.words):(this._mode=t.call(n,this,i&&i.words),this._mode.__creator=t)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t,e=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(e.pad(this._data,this.blockSize),t=this._process(!0)):(t=this._process(!0),e.unpad(t)),t},blockSize:4}),n.CipherParams=a.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),y=i.format={},_=y.OpenSSL={stringify:function(t){var e,i=t.ciphertext,n=t.salt;return e=n?r.create([1398893684,1701076831]).concat(n).concat(i):i,e.toString(l)},parse:function(t){var e,i=l.parse(t),n=i.words;return 1398893684==n[0]&&1701076831==n[1]&&(e=r.create(n.slice(2,4)),n.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:e})}},b=n.SerializableCipher=a.extend({cfg:a.extend({format:_}),encrypt:function(t,e,i,n){n=this.cfg.extend(n);var a=t.createEncryptor(i,n),r=a.finalize(e),o=a.cfg;return m.create({ciphertext:r,key:i,iv:o.iv,algorithm:t,mode:o.mode,padding:o.padding,blockSize:t.blockSize,formatter:n.format})},decrypt:function(t,e,i,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var a=t.createDecryptor(i,n).finalize(e.ciphertext);return a},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),x=i.kdf={},w=x.OpenSSL={execute:function(t,e,i,n,a){if(n||(n=r.random(8)),a)o=u.create({keySize:e+i,hasher:a}).compute(t,n);else var o=u.create({keySize:e+i}).compute(t,n);var s=r.create(o.words.slice(e),4*i);return o.sigBytes=4*e,m.create({key:o,iv:s,salt:n})}},S=n.PasswordBasedCipher=b.extend({cfg:b.cfg.extend({kdf:w}),encrypt:function(t,e,i,n){n=this.cfg.extend(n);var a=n.kdf.execute(i,t.keySize,t.ivSize,n.salt,n.hasher);n.iv=a.iv;var r=b.encrypt.call(this,t,e,a.key,n);return r.mixIn(a),r},decrypt:function(t,e,i,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var a=n.kdf.execute(i,t.keySize,t.ivSize,e.salt,n.hasher);n.iv=a.iv;var r=b.decrypt.call(this,t,e,a.key,n);return r}})}()})},19021:function(t,e,i){(function(e,i){t.exports=i()})(0,function(){var t=t||function(t,e){var n;if("undefined"!==typeof window&&window.crypto&&(n=window.crypto),"undefined"!==typeof self&&self.crypto&&(n=self.crypto),"undefined"!==typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!==typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&"undefined"!==typeof i.g&&i.g.crypto&&(n=i.g.crypto),!n)try{n=i(50477)}catch(g){}var a=function(){if(n){if("function"===typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(g){}if("function"===typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(g){}}throw new Error("Native crypto module could not be used to get secure random number.")},r=Object.create||function(){function t(){}return function(e){var i;return t.prototype=e,i=new t,t.prototype=null,i}}(),o={},s=o.lib={},l=s.Base=function(){return{extend:function(t){var e=r(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),c=s.WordArray=l.extend({init:function(t,i){t=this.words=t||[],this.sigBytes=i!=e?i:4*t.length},toString:function(t){return(t||d).stringify(this)},concat:function(t){var e=this.words,i=t.words,n=this.sigBytes,a=t.sigBytes;if(this.clamp(),n%4)for(var r=0;r>>2]>>>24-r%4*8&255;e[n+r>>>2]|=o<<24-(n+r)%4*8}else for(var s=0;s>>2]=i[s>>>2];return this.sigBytes+=a,this},clamp:function(){var e=this.words,i=this.sigBytes;e[i>>>2]&=4294967295<<32-i%4*8,e.length=t.ceil(i/4)},clone:function(){var t=l.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],i=0;i>>2]>>>24-a%4*8&255;n.push((r>>>4).toString(16)),n.push((15&r).toString(16))}return n.join("")},parse:function(t){for(var e=t.length,i=[],n=0;n>>3]|=parseInt(t.substr(n,2),16)<<24-n%8*4;return new c.init(i,e/2)}},h=u.Latin1={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>24-a%4*8&255;n.push(String.fromCharCode(r))}return n.join("")},parse:function(t){for(var e=t.length,i=[],n=0;n>>2]|=(255&t.charCodeAt(n))<<24-n%4*8;return new c.init(i,e)}},p=u.Utf8={stringify:function(t){try{return decodeURIComponent(escape(h.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return h.parse(unescape(encodeURIComponent(t)))}},v=s.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=p.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var i,n=this._data,a=n.words,r=n.sigBytes,o=this.blockSize,s=4*o,l=r/s;l=e?t.ceil(l):t.max((0|l)-this._minBufferSize,0);var u=l*o,d=t.min(4*u,r);if(u){for(var h=0;h>>2]>>>24-r%4*8&255,s=e[r+1>>>2]>>>24-(r+1)%4*8&255,l=e[r+2>>>2]>>>24-(r+2)%4*8&255,c=o<<16|s<<8|l,u=0;u<4&&r+.75*u>>6*(3-u)&63));var d=n.charAt(64);if(d)while(a.length%4)a.push(d);return a.join("")},parse:function(t){var e=t.length,i=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var a=0;a>>6-o%4*2,c=s|l;a[r>>>2]|=c<<24-r%4*8,r++}return n.create(a,r)}}(),t.enc.Base64})},64725:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.enc;a.Base64url={stringify:function(t,e){void 0===e&&(e=!0);var i=t.words,n=t.sigBytes,a=e?this._safe_map:this._map;t.clamp();for(var r=[],o=0;o>>2]>>>24-o%4*8&255,l=i[o+1>>>2]>>>24-(o+1)%4*8&255,c=i[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|l<<8|c,d=0;d<4&&o+.75*d>>6*(3-d)&63));var h=a.charAt(64);if(h)while(r.length%4)r.push(h);return r.join("")},parse:function(t,e){void 0===e&&(e=!0);var i=t.length,n=e?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var o=0;o>>6-o%4*2,c=s|l;a[r>>>2]|=c<<24-r%4*8,r++}return n.create(a,r)}}(),t.enc.Base64url})},45503:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.enc;a.Utf16=a.Utf16BE={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>16-a%4*8&65535;n.push(String.fromCharCode(r))}return n.join("")},parse:function(t){for(var e=t.length,i=[],a=0;a>>1]|=t.charCodeAt(a)<<16-a%2*16;return n.create(i,2*e)}};function r(t){return t<<8&4278255360|t>>>8&16711935}a.Utf16LE={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>16-a%4*8&65535);n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,i=[],a=0;a>>1]|=r(t.charCodeAt(a)<<16-a%2*16);return n.create(i,2*e)}}}(),t.enc.Utf16})},39506:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(45471),i(51025))})(0,function(t){return function(){var e=t,i=e.lib,n=i.Base,a=i.WordArray,r=e.algo,o=r.MD5,s=r.EvpKDF=n.extend({cfg:n.extend({keySize:4,hasher:o,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){var i,n=this.cfg,r=n.hasher.create(),o=a.create(),s=o.words,l=n.keySize,c=n.iterations;while(s.lengthn&&(e=t.finalize(e)),e.clamp();for(var a=this._oKey=e.clone(),o=this._iKey=e.clone(),s=a.words,l=o.words,c=0;c>>2]|=t[n]<<24-n%4*8;a.call(this,i,e)}else a.apply(this,arguments)};r.prototype=n}}(),t.lib.WordArray})},84636:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.algo,s=[];(function(){for(var t=0;t<64;t++)s[t]=4294967296*e.abs(e.sin(t+1))|0})();var l=o.MD5=r.extend({_doReset:function(){this._hash=new a.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var i=0;i<16;i++){var n=e+i,a=t[n];t[n]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}var r=this._hash.words,o=t[e+0],l=t[e+1],p=t[e+2],v=t[e+3],f=t[e+4],g=t[e+5],m=t[e+6],y=t[e+7],_=t[e+8],b=t[e+9],x=t[e+10],w=t[e+11],S=t[e+12],C=t[e+13],k=t[e+14],I=t[e+15],E=r[0],A=r[1],P=r[2],M=r[3];E=c(E,A,P,M,o,7,s[0]),M=c(M,E,A,P,l,12,s[1]),P=c(P,M,E,A,p,17,s[2]),A=c(A,P,M,E,v,22,s[3]),E=c(E,A,P,M,f,7,s[4]),M=c(M,E,A,P,g,12,s[5]),P=c(P,M,E,A,m,17,s[6]),A=c(A,P,M,E,y,22,s[7]),E=c(E,A,P,M,_,7,s[8]),M=c(M,E,A,P,b,12,s[9]),P=c(P,M,E,A,x,17,s[10]),A=c(A,P,M,E,w,22,s[11]),E=c(E,A,P,M,S,7,s[12]),M=c(M,E,A,P,C,12,s[13]),P=c(P,M,E,A,k,17,s[14]),A=c(A,P,M,E,I,22,s[15]),E=u(E,A,P,M,l,5,s[16]),M=u(M,E,A,P,m,9,s[17]),P=u(P,M,E,A,w,14,s[18]),A=u(A,P,M,E,o,20,s[19]),E=u(E,A,P,M,g,5,s[20]),M=u(M,E,A,P,x,9,s[21]),P=u(P,M,E,A,I,14,s[22]),A=u(A,P,M,E,f,20,s[23]),E=u(E,A,P,M,b,5,s[24]),M=u(M,E,A,P,k,9,s[25]),P=u(P,M,E,A,v,14,s[26]),A=u(A,P,M,E,_,20,s[27]),E=u(E,A,P,M,C,5,s[28]),M=u(M,E,A,P,p,9,s[29]),P=u(P,M,E,A,y,14,s[30]),A=u(A,P,M,E,S,20,s[31]),E=d(E,A,P,M,g,4,s[32]),M=d(M,E,A,P,_,11,s[33]),P=d(P,M,E,A,w,16,s[34]),A=d(A,P,M,E,k,23,s[35]),E=d(E,A,P,M,l,4,s[36]),M=d(M,E,A,P,f,11,s[37]),P=d(P,M,E,A,y,16,s[38]),A=d(A,P,M,E,x,23,s[39]),E=d(E,A,P,M,C,4,s[40]),M=d(M,E,A,P,o,11,s[41]),P=d(P,M,E,A,v,16,s[42]),A=d(A,P,M,E,m,23,s[43]),E=d(E,A,P,M,b,4,s[44]),M=d(M,E,A,P,S,11,s[45]),P=d(P,M,E,A,I,16,s[46]),A=d(A,P,M,E,p,23,s[47]),E=h(E,A,P,M,o,6,s[48]),M=h(M,E,A,P,y,10,s[49]),P=h(P,M,E,A,k,15,s[50]),A=h(A,P,M,E,g,21,s[51]),E=h(E,A,P,M,S,6,s[52]),M=h(M,E,A,P,v,10,s[53]),P=h(P,M,E,A,x,15,s[54]),A=h(A,P,M,E,l,21,s[55]),E=h(E,A,P,M,_,6,s[56]),M=h(M,E,A,P,I,10,s[57]),P=h(P,M,E,A,m,15,s[58]),A=h(A,P,M,E,C,21,s[59]),E=h(E,A,P,M,f,6,s[60]),M=h(M,E,A,P,w,10,s[61]),P=h(P,M,E,A,p,15,s[62]),A=h(A,P,M,E,b,21,s[63]),r[0]=r[0]+E|0,r[1]=r[1]+A|0,r[2]=r[2]+P|0,r[3]=r[3]+M|0},_doFinalize:function(){var t=this._data,i=t.words,n=8*this._nDataBytes,a=8*t.sigBytes;i[a>>>5]|=128<<24-a%32;var r=e.floor(n/4294967296),o=n;i[15+(a+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),i[14+(a+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(i.length+1),this._process();for(var s=this._hash,l=s.words,c=0;c<4;c++){var u=l[c];l[c]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}return s},clone:function(){var t=r.clone.call(this);return t._hash=this._hash.clone(),t}});function c(t,e,i,n,a,r,o){var s=t+(e&i|~e&n)+a+o;return(s<>>32-r)+e}function u(t,e,i,n,a,r,o){var s=t+(e&n|i&~n)+a+o;return(s<>>32-r)+e}function d(t,e,i,n,a,r,o){var s=t+(e^i^n)+a+o;return(s<>>32-r)+e}function h(t,e,i,n,a,r,o){var s=t+(i^(e|~n))+a+o;return(s<>>32-r)+e}i.MD5=r._createHelper(l),i.HmacMD5=r._createHmacHelper(l)}(Math),t.MD5})},82169:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.mode.CFB=function(){var e=t.lib.BlockCipherMode.extend();function i(t,e,i,n){var a,r=this._iv;r?(a=r.slice(0),this._iv=void 0):a=this._prevBlock,n.encryptBlock(a,0);for(var o=0;o>>24)|4278255360&(a<<24|a>>>8)}var r,h,_,b,x,w,S,C,k,I,E,A=this._hash.words,P=u.words,M=d.words,D=o.words,T=s.words,B=l.words,F=c.words;w=r=A[0],S=h=A[1],C=_=A[2],k=b=A[3],I=x=A[4];for(i=0;i<80;i+=1)E=r+t[e+D[i]]|0,E+=i<16?p(h,_,b)+P[0]:i<32?v(h,_,b)+P[1]:i<48?f(h,_,b)+P[2]:i<64?g(h,_,b)+P[3]:m(h,_,b)+P[4],E|=0,E=y(E,B[i]),E=E+x|0,r=x,x=b,b=y(_,10),_=h,h=E,E=w+t[e+T[i]]|0,E+=i<16?m(S,C,k)+M[0]:i<32?g(S,C,k)+M[1]:i<48?f(S,C,k)+M[2]:i<64?v(S,C,k)+M[3]:p(S,C,k)+M[4],E|=0,E=y(E,F[i]),E=E+I|0,w=I,I=k,k=y(C,10),C=S,S=E;E=A[1]+_+k|0,A[1]=A[2]+b+I|0,A[2]=A[3]+x+w|0,A[3]=A[4]+r+S|0,A[4]=A[0]+h+C|0,A[0]=E},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t.sigBytes=4*(e.length+1),this._process();for(var a=this._hash,r=a.words,o=0;o<5;o++){var s=r[o];r[o]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return a},clone:function(){var t=a.clone.call(this);return t._hash=this._hash.clone(),t}});function p(t,e,i){return t^e^i}function v(t,e,i){return t&e|~t&i}function f(t,e,i){return(t|~e)^i}function g(t,e,i){return t&i|e&~i}function m(t,e,i){return t^(e|~i)}function y(t,e){return t<>>32-e}e.RIPEMD160=a._createHelper(h),e.HmacRIPEMD160=a._createHmacHelper(h)}(Math),t.RIPEMD160})},45471:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=i.Hasher,r=e.algo,o=[],s=r.SHA1=a.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],s=i[3],l=i[4],c=0;c<80;c++){if(c<16)o[c]=0|t[e+c];else{var u=o[c-3]^o[c-8]^o[c-14]^o[c-16];o[c]=u<<1|u>>>31}var d=(n<<5|n>>>27)+l+o[c];d+=c<20?1518500249+(a&r|~a&s):c<40?1859775393+(a^r^s):c<60?(a&r|a&s|r&s)-1894007588:(a^r^s)-899497514,l=s,s=r,r=a<<30|a>>>2,a=n,n=d}i[0]=i[0]+n|0,i[1]=i[1]+a|0,i[2]=i[2]+r|0,i[3]=i[3]+s|0,i[4]=i[4]+l|0},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=Math.floor(i/4294967296),e[15+(n+64>>>9<<4)]=i,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=a.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA1=a._createHelper(s),e.HmacSHA1=a._createHmacHelper(s)}(),t.SHA1})},36308:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(63009))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.algo,r=a.SHA256,o=a.SHA224=r.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var t=r._doFinalize.call(this);return t.sigBytes-=4,t}});e.SHA224=r._createHelper(o),e.HmacSHA224=r._createHmacHelper(o)}(),t.SHA224})},63009:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.algo,s=[],l=[];(function(){function t(t){for(var i=e.sqrt(t),n=2;n<=i;n++)if(!(t%n))return!1;return!0}function i(t){return 4294967296*(t-(0|t))|0}var n=2,a=0;while(a<64)t(n)&&(a<8&&(s[a]=i(e.pow(n,.5))),l[a]=i(e.pow(n,1/3)),a++),n++})();var c=[],u=o.SHA256=r.extend({_doReset:function(){this._hash=new a.init(s.slice(0))},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],o=i[3],s=i[4],u=i[5],d=i[6],h=i[7],p=0;p<64;p++){if(p<16)c[p]=0|t[e+p];else{var v=c[p-15],f=(v<<25|v>>>7)^(v<<14|v>>>18)^v>>>3,g=c[p-2],m=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;c[p]=f+c[p-7]+m+c[p-16]}var y=s&u^~s&d,_=n&a^n&r^a&r,b=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),x=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),w=h+x+y+l[p]+c[p],S=b+_;h=d,d=u,u=s,s=o+w|0,o=r,r=a,a=n,n=w+S|0}i[0]=i[0]+n|0,i[1]=i[1]+a|0,i[2]=i[2]+r|0,i[3]=i[3]+o|0,i[4]=i[4]+s|0,i[5]=i[5]+u|0,i[6]=i[6]+d|0,i[7]=i[7]+h|0},_doFinalize:function(){var t=this._data,i=t.words,n=8*this._nDataBytes,a=8*t.sigBytes;return i[a>>>5]|=128<<24-a%32,i[14+(a+64>>>9<<4)]=e.floor(n/4294967296),i[15+(a+64>>>9<<4)]=n,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var t=r.clone.call(this);return t._hash=this._hash.clone(),t}});i.SHA256=r._createHelper(u),i.HmacSHA256=r._createHmacHelper(u)}(Math),t.SHA256})},45953:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.x64,s=o.Word,l=i.algo,c=[],u=[],d=[];(function(){for(var t=1,e=0,i=0;i<24;i++){c[t+5*e]=(i+1)*(i+2)/2%64;var n=e%5,a=(2*t+3*e)%5;t=n,e=a}for(t=0;t<5;t++)for(e=0;e<5;e++)u[t+5*e]=e+(2*t+3*e)%5*5;for(var r=1,o=0;o<24;o++){for(var l=0,h=0,p=0;p<7;p++){if(1&r){var v=(1<>>24)|4278255360&(r<<24|r>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8);var s=i[a];s.high^=o,s.low^=r}for(var l=0;l<24;l++){for(var p=0;p<5;p++){for(var v=0,f=0,g=0;g<5;g++){s=i[p+5*g];v^=s.high,f^=s.low}var m=h[p];m.high=v,m.low=f}for(p=0;p<5;p++){var y=h[(p+4)%5],_=h[(p+1)%5],b=_.high,x=_.low;for(v=y.high^(b<<1|x>>>31),f=y.low^(x<<1|b>>>31),g=0;g<5;g++){s=i[p+5*g];s.high^=v,s.low^=f}}for(var w=1;w<25;w++){s=i[w];var S=s.high,C=s.low,k=c[w];k<32?(v=S<>>32-k,f=C<>>32-k):(v=C<>>64-k,f=S<>>64-k);var I=h[u[w]];I.high=v,I.low=f}var E=h[0],A=i[0];E.high=A.high,E.low=A.low;for(p=0;p<5;p++)for(g=0;g<5;g++){w=p+5*g,s=i[w];var P=h[w],M=h[(p+1)%5+5*g],D=h[(p+2)%5+5*g];s.high=P.high^~M.high&D.high,s.low=P.low^~M.low&D.low}s=i[0];var T=d[l];s.high^=T.high,s.low^=T.low}},_doFinalize:function(){var t=this._data,i=t.words,n=(this._nDataBytes,8*t.sigBytes),r=32*this.blockSize;i[n>>>5]|=1<<24-n%32,i[(e.ceil((n+1)/r)*r>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var o=this._state,s=this.cfg.outputLength/8,l=s/8,c=[],u=0;u>>24)|4278255360&(h<<24|h>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),c.push(p),c.push(h)}return new a.init(c,s)},clone:function(){for(var t=r.clone.call(this),e=t._state=this._state.slice(0),i=0;i<25;i++)e[i]=e[i].clone();return t}});i.SHA3=r._createHelper(p),i.HmacSHA3=r._createHmacHelper(p)}(Math),t.SHA3})},89557:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240),i(81380))})(0,function(t){return function(){var e=t,i=e.x64,n=i.Word,a=i.WordArray,r=e.algo,o=r.SHA512,s=r.SHA384=o.extend({_doReset:function(){this._hash=new a.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var t=o._doFinalize.call(this);return t.sigBytes-=16,t}});e.SHA384=o._createHelper(s),e.HmacSHA384=o._createHmacHelper(s)}(),t.SHA384})},81380:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240))})(0,function(t){return function(){var e=t,i=e.lib,n=i.Hasher,a=e.x64,r=a.Word,o=a.WordArray,s=e.algo;function l(){return r.create.apply(r,arguments)}var c=[l(1116352408,3609767458),l(1899447441,602891725),l(3049323471,3964484399),l(3921009573,2173295548),l(961987163,4081628472),l(1508970993,3053834265),l(2453635748,2937671579),l(2870763221,3664609560),l(3624381080,2734883394),l(310598401,1164996542),l(607225278,1323610764),l(1426881987,3590304994),l(1925078388,4068182383),l(2162078206,991336113),l(2614888103,633803317),l(3248222580,3479774868),l(3835390401,2666613458),l(4022224774,944711139),l(264347078,2341262773),l(604807628,2007800933),l(770255983,1495990901),l(1249150122,1856431235),l(1555081692,3175218132),l(1996064986,2198950837),l(2554220882,3999719339),l(2821834349,766784016),l(2952996808,2566594879),l(3210313671,3203337956),l(3336571891,1034457026),l(3584528711,2466948901),l(113926993,3758326383),l(338241895,168717936),l(666307205,1188179964),l(773529912,1546045734),l(1294757372,1522805485),l(1396182291,2643833823),l(1695183700,2343527390),l(1986661051,1014477480),l(2177026350,1206759142),l(2456956037,344077627),l(2730485921,1290863460),l(2820302411,3158454273),l(3259730800,3505952657),l(3345764771,106217008),l(3516065817,3606008344),l(3600352804,1432725776),l(4094571909,1467031594),l(275423344,851169720),l(430227734,3100823752),l(506948616,1363258195),l(659060556,3750685593),l(883997877,3785050280),l(958139571,3318307427),l(1322822218,3812723403),l(1537002063,2003034995),l(1747873779,3602036899),l(1955562222,1575990012),l(2024104815,1125592928),l(2227730452,2716904306),l(2361852424,442776044),l(2428436474,593698344),l(2756734187,3733110249),l(3204031479,2999351573),l(3329325298,3815920427),l(3391569614,3928383900),l(3515267271,566280711),l(3940187606,3454069534),l(4118630271,4000239992),l(116418474,1914138554),l(174292421,2731055270),l(289380356,3203993006),l(460393269,320620315),l(685471733,587496836),l(852142971,1086792851),l(1017036298,365543100),l(1126000580,2618297676),l(1288033470,3409855158),l(1501505948,4234509866),l(1607167915,987167468),l(1816402316,1246189591)],u=[];(function(){for(var t=0;t<80;t++)u[t]=l()})();var d=s.SHA512=n.extend({_doReset:function(){this._hash=new o.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],o=i[3],s=i[4],l=i[5],d=i[6],h=i[7],p=n.high,v=n.low,f=a.high,g=a.low,m=r.high,y=r.low,_=o.high,b=o.low,x=s.high,w=s.low,S=l.high,C=l.low,k=d.high,I=d.low,E=h.high,A=h.low,P=p,M=v,D=f,T=g,B=m,F=y,R=_,L=b,N=x,O=w,z=S,V=C,W=k,H=I,$=E,Y=A,X=0;X<80;X++){var K,j,U=u[X];if(X<16)j=U.high=0|t[e+2*X],K=U.low=0|t[e+2*X+1];else{var G=u[X-15],Z=G.high,q=G.low,J=(Z>>>1|q<<31)^(Z>>>8|q<<24)^Z>>>7,Q=(q>>>1|Z<<31)^(q>>>8|Z<<24)^(q>>>7|Z<<25),tt=u[X-2],et=tt.high,it=tt.low,nt=(et>>>19|it<<13)^(et<<3|it>>>29)^et>>>6,at=(it>>>19|et<<13)^(it<<3|et>>>29)^(it>>>6|et<<26),rt=u[X-7],ot=rt.high,st=rt.low,lt=u[X-16],ct=lt.high,ut=lt.low;K=Q+st,j=J+ot+(K>>>0>>0?1:0),K+=at,j=j+nt+(K>>>0>>0?1:0),K+=ut,j=j+ct+(K>>>0>>0?1:0),U.high=j,U.low=K}var dt=N&z^~N&W,ht=O&V^~O&H,pt=P&D^P&B^D&B,vt=M&T^M&F^T&F,ft=(P>>>28|M<<4)^(P<<30|M>>>2)^(P<<25|M>>>7),gt=(M>>>28|P<<4)^(M<<30|P>>>2)^(M<<25|P>>>7),mt=(N>>>14|O<<18)^(N>>>18|O<<14)^(N<<23|O>>>9),yt=(O>>>14|N<<18)^(O>>>18|N<<14)^(O<<23|N>>>9),_t=c[X],bt=_t.high,xt=_t.low,wt=Y+yt,St=$+mt+(wt>>>0>>0?1:0),Ct=(wt=wt+ht,St=St+dt+(wt>>>0>>0?1:0),wt=wt+xt,St=St+bt+(wt>>>0>>0?1:0),wt=wt+K,St=St+j+(wt>>>0>>0?1:0),gt+vt),kt=ft+pt+(Ct>>>0>>0?1:0);$=W,Y=H,W=z,H=V,z=N,V=O,O=L+wt|0,N=R+St+(O>>>0>>0?1:0)|0,R=B,L=F,B=D,F=T,D=P,T=M,M=wt+Ct|0,P=St+kt+(M>>>0>>0?1:0)|0}v=n.low=v+M,n.high=p+P+(v>>>0>>0?1:0),g=a.low=g+T,a.high=f+D+(g>>>0>>0?1:0),y=r.low=y+F,r.high=m+B+(y>>>0>>0?1:0),b=o.low=b+L,o.high=_+R+(b>>>0>>0?1:0),w=s.low=w+O,s.high=x+N+(w>>>0>>0?1:0),C=l.low=C+V,l.high=S+z+(C>>>0>>0?1:0),I=d.low=I+H,d.high=k+W+(I>>>0>>0?1:0),A=h.low=A+Y,h.high=E+$+(A>>>0>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[30+(n+128>>>10<<5)]=Math.floor(i/4294967296),e[31+(n+128>>>10<<5)]=i,t.sigBytes=4*e.length,this._process();var a=this._hash.toX32();return a},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});e.SHA512=n._createHelper(d),e.HmacSHA512=n._createHmacHelper(d)}(),t.SHA512})},7628:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=i.BlockCipher,r=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],c=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],d=r.DES=a.extend({_doReset:function(){for(var t=this._key,e=t.words,i=[],n=0;n<56;n++){var a=o[n]-1;i[n]=e[a>>>5]>>>31-a%32&1}for(var r=this._subKeys=[],c=0;c<16;c++){var u=r[c]=[],d=l[c];for(n=0;n<24;n++)u[n/6|0]|=i[(s[n]-1+d)%28]<<31-n%6,u[4+(n/6|0)]|=i[28+(s[n+24]-1+d)%28]<<31-n%6;u[0]=u[0]<<1|u[0]>>>31;for(n=1;n<7;n++)u[n]=u[n]>>>4*(n-1)+3;u[7]=u[7]<<5|u[7]>>>27}var h=this._invSubKeys=[];for(n=0;n<16;n++)h[n]=r[15-n]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,i){this._lBlock=t[e],this._rBlock=t[e+1],h.call(this,4,252645135),h.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),h.call(this,1,1431655765);for(var n=0;n<16;n++){for(var a=i[n],r=this._lBlock,o=this._rBlock,s=0,l=0;l<8;l++)s|=c[l][((o^a[l])&u[l])>>>0];this._lBlock=o,this._rBlock=r^s}var d=this._lBlock;this._lBlock=this._rBlock,this._rBlock=d,h.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(t,e){var i=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=i,this._lBlock^=i<>>t^this._lBlock)&e;this._lBlock^=i,this._rBlock^=i<192.");var i=e.slice(0,2),a=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=d.createEncryptor(n.create(i)),this._des2=d.createEncryptor(n.create(a)),this._des3=d.createEncryptor(n.create(r))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=a._createHelper(v)}(),t.TripleDES})},43240:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.Base,r=n.WordArray,o=i.x64={};o.Word=a.extend({init:function(t,e){this.high=t,this.low=e}}),o.WordArray=a.extend({init:function(t,i){t=this.words=t||[],this.sigBytes=i!=e?i:8*t.length},toX32:function(){for(var t=this.words,e=t.length,i=[],n=0;n=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}}throw new TypeError((0,n.A)(t)+" is not iterable")}}}]); \ No newline at end of file +return function(){var e=t,i=e.lib,n=i.WordArray,a=i.Hasher,r=e.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),s=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),d=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=r.RIPEMD160=a.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var i=0;i<16;i++){var n=e+i,a=t[n];t[n]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}var r,h,_,b,x,w,S,C,k,I,E,A=this._hash.words,P=u.words,M=d.words,D=o.words,T=s.words,B=l.words,F=c.words;w=r=A[0],S=h=A[1],C=_=A[2],k=b=A[3],I=x=A[4];for(i=0;i<80;i+=1)E=r+t[e+D[i]]|0,E+=i<16?p(h,_,b)+P[0]:i<32?v(h,_,b)+P[1]:i<48?f(h,_,b)+P[2]:i<64?g(h,_,b)+P[3]:m(h,_,b)+P[4],E|=0,E=y(E,B[i]),E=E+x|0,r=x,x=b,b=y(_,10),_=h,h=E,E=w+t[e+T[i]]|0,E+=i<16?m(S,C,k)+M[0]:i<32?g(S,C,k)+M[1]:i<48?f(S,C,k)+M[2]:i<64?v(S,C,k)+M[3]:p(S,C,k)+M[4],E|=0,E=y(E,F[i]),E=E+I|0,w=I,I=k,k=y(C,10),C=S,S=E;E=A[1]+_+k|0,A[1]=A[2]+b+I|0,A[2]=A[3]+x+w|0,A[3]=A[4]+r+S|0,A[4]=A[0]+h+C|0,A[0]=E},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t.sigBytes=4*(e.length+1),this._process();for(var a=this._hash,r=a.words,o=0;o<5;o++){var s=r[o];r[o]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return a},clone:function(){var t=a.clone.call(this);return t._hash=this._hash.clone(),t}});function p(t,e,i){return t^e^i}function v(t,e,i){return t&e|~t&i}function f(t,e,i){return(t|~e)^i}function g(t,e,i){return t&i|e&~i}function m(t,e,i){return t^(e|~i)}function y(t,e){return t<>>32-e}e.RIPEMD160=a._createHelper(h),e.HmacRIPEMD160=a._createHmacHelper(h)}(Math),t.RIPEMD160})},45471:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=i.Hasher,r=e.algo,o=[],s=r.SHA1=a.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],s=i[3],l=i[4],c=0;c<80;c++){if(c<16)o[c]=0|t[e+c];else{var u=o[c-3]^o[c-8]^o[c-14]^o[c-16];o[c]=u<<1|u>>>31}var d=(n<<5|n>>>27)+l+o[c];d+=c<20?1518500249+(a&r|~a&s):c<40?1859775393+(a^r^s):c<60?(a&r|a&s|r&s)-1894007588:(a^r^s)-899497514,l=s,s=r,r=a<<30|a>>>2,a=n,n=d}i[0]=i[0]+n|0,i[1]=i[1]+a|0,i[2]=i[2]+r|0,i[3]=i[3]+s|0,i[4]=i[4]+l|0},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=Math.floor(i/4294967296),e[15+(n+64>>>9<<4)]=i,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=a.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA1=a._createHelper(s),e.HmacSHA1=a._createHmacHelper(s)}(),t.SHA1})},36308:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(63009))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.algo,r=a.SHA256,o=a.SHA224=r.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var t=r._doFinalize.call(this);return t.sigBytes-=4,t}});e.SHA224=r._createHelper(o),e.HmacSHA224=r._createHmacHelper(o)}(),t.SHA224})},63009:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.algo,s=[],l=[];(function(){function t(t){for(var i=e.sqrt(t),n=2;n<=i;n++)if(!(t%n))return!1;return!0}function i(t){return 4294967296*(t-(0|t))|0}var n=2,a=0;while(a<64)t(n)&&(a<8&&(s[a]=i(e.pow(n,.5))),l[a]=i(e.pow(n,1/3)),a++),n++})();var c=[],u=o.SHA256=r.extend({_doReset:function(){this._hash=new a.init(s.slice(0))},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],o=i[3],s=i[4],u=i[5],d=i[6],h=i[7],p=0;p<64;p++){if(p<16)c[p]=0|t[e+p];else{var v=c[p-15],f=(v<<25|v>>>7)^(v<<14|v>>>18)^v>>>3,g=c[p-2],m=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;c[p]=f+c[p-7]+m+c[p-16]}var y=s&u^~s&d,_=n&a^n&r^a&r,b=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),x=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),w=h+x+y+l[p]+c[p],S=b+_;h=d,d=u,u=s,s=o+w|0,o=r,r=a,a=n,n=w+S|0}i[0]=i[0]+n|0,i[1]=i[1]+a|0,i[2]=i[2]+r|0,i[3]=i[3]+o|0,i[4]=i[4]+s|0,i[5]=i[5]+u|0,i[6]=i[6]+d|0,i[7]=i[7]+h|0},_doFinalize:function(){var t=this._data,i=t.words,n=8*this._nDataBytes,a=8*t.sigBytes;return i[a>>>5]|=128<<24-a%32,i[14+(a+64>>>9<<4)]=e.floor(n/4294967296),i[15+(a+64>>>9<<4)]=n,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var t=r.clone.call(this);return t._hash=this._hash.clone(),t}});i.SHA256=r._createHelper(u),i.HmacSHA256=r._createHmacHelper(u)}(Math),t.SHA256})},45953:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.x64,s=o.Word,l=i.algo,c=[],u=[],d=[];(function(){for(var t=1,e=0,i=0;i<24;i++){c[t+5*e]=(i+1)*(i+2)/2%64;var n=e%5,a=(2*t+3*e)%5;t=n,e=a}for(t=0;t<5;t++)for(e=0;e<5;e++)u[t+5*e]=e+(2*t+3*e)%5*5;for(var r=1,o=0;o<24;o++){for(var l=0,h=0,p=0;p<7;p++){if(1&r){var v=(1<>>24)|4278255360&(r<<24|r>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8);var s=i[a];s.high^=o,s.low^=r}for(var l=0;l<24;l++){for(var p=0;p<5;p++){for(var v=0,f=0,g=0;g<5;g++){s=i[p+5*g];v^=s.high,f^=s.low}var m=h[p];m.high=v,m.low=f}for(p=0;p<5;p++){var y=h[(p+4)%5],_=h[(p+1)%5],b=_.high,x=_.low;for(v=y.high^(b<<1|x>>>31),f=y.low^(x<<1|b>>>31),g=0;g<5;g++){s=i[p+5*g];s.high^=v,s.low^=f}}for(var w=1;w<25;w++){s=i[w];var S=s.high,C=s.low,k=c[w];k<32?(v=S<>>32-k,f=C<>>32-k):(v=C<>>64-k,f=S<>>64-k);var I=h[u[w]];I.high=v,I.low=f}var E=h[0],A=i[0];E.high=A.high,E.low=A.low;for(p=0;p<5;p++)for(g=0;g<5;g++){w=p+5*g,s=i[w];var P=h[w],M=h[(p+1)%5+5*g],D=h[(p+2)%5+5*g];s.high=P.high^~M.high&D.high,s.low=P.low^~M.low&D.low}s=i[0];var T=d[l];s.high^=T.high,s.low^=T.low}},_doFinalize:function(){var t=this._data,i=t.words,n=(this._nDataBytes,8*t.sigBytes),r=32*this.blockSize;i[n>>>5]|=1<<24-n%32,i[(e.ceil((n+1)/r)*r>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var o=this._state,s=this.cfg.outputLength/8,l=s/8,c=[],u=0;u>>24)|4278255360&(h<<24|h>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),c.push(p),c.push(h)}return new a.init(c,s)},clone:function(){for(var t=r.clone.call(this),e=t._state=this._state.slice(0),i=0;i<25;i++)e[i]=e[i].clone();return t}});i.SHA3=r._createHelper(p),i.HmacSHA3=r._createHmacHelper(p)}(Math),t.SHA3})},89557:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240),i(81380))})(0,function(t){return function(){var e=t,i=e.x64,n=i.Word,a=i.WordArray,r=e.algo,o=r.SHA512,s=r.SHA384=o.extend({_doReset:function(){this._hash=new a.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var t=o._doFinalize.call(this);return t.sigBytes-=16,t}});e.SHA384=o._createHelper(s),e.HmacSHA384=o._createHmacHelper(s)}(),t.SHA384})},81380:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240))})(0,function(t){return function(){var e=t,i=e.lib,n=i.Hasher,a=e.x64,r=a.Word,o=a.WordArray,s=e.algo;function l(){return r.create.apply(r,arguments)}var c=[l(1116352408,3609767458),l(1899447441,602891725),l(3049323471,3964484399),l(3921009573,2173295548),l(961987163,4081628472),l(1508970993,3053834265),l(2453635748,2937671579),l(2870763221,3664609560),l(3624381080,2734883394),l(310598401,1164996542),l(607225278,1323610764),l(1426881987,3590304994),l(1925078388,4068182383),l(2162078206,991336113),l(2614888103,633803317),l(3248222580,3479774868),l(3835390401,2666613458),l(4022224774,944711139),l(264347078,2341262773),l(604807628,2007800933),l(770255983,1495990901),l(1249150122,1856431235),l(1555081692,3175218132),l(1996064986,2198950837),l(2554220882,3999719339),l(2821834349,766784016),l(2952996808,2566594879),l(3210313671,3203337956),l(3336571891,1034457026),l(3584528711,2466948901),l(113926993,3758326383),l(338241895,168717936),l(666307205,1188179964),l(773529912,1546045734),l(1294757372,1522805485),l(1396182291,2643833823),l(1695183700,2343527390),l(1986661051,1014477480),l(2177026350,1206759142),l(2456956037,344077627),l(2730485921,1290863460),l(2820302411,3158454273),l(3259730800,3505952657),l(3345764771,106217008),l(3516065817,3606008344),l(3600352804,1432725776),l(4094571909,1467031594),l(275423344,851169720),l(430227734,3100823752),l(506948616,1363258195),l(659060556,3750685593),l(883997877,3785050280),l(958139571,3318307427),l(1322822218,3812723403),l(1537002063,2003034995),l(1747873779,3602036899),l(1955562222,1575990012),l(2024104815,1125592928),l(2227730452,2716904306),l(2361852424,442776044),l(2428436474,593698344),l(2756734187,3733110249),l(3204031479,2999351573),l(3329325298,3815920427),l(3391569614,3928383900),l(3515267271,566280711),l(3940187606,3454069534),l(4118630271,4000239992),l(116418474,1914138554),l(174292421,2731055270),l(289380356,3203993006),l(460393269,320620315),l(685471733,587496836),l(852142971,1086792851),l(1017036298,365543100),l(1126000580,2618297676),l(1288033470,3409855158),l(1501505948,4234509866),l(1607167915,987167468),l(1816402316,1246189591)],u=[];(function(){for(var t=0;t<80;t++)u[t]=l()})();var d=s.SHA512=n.extend({_doReset:function(){this._hash=new o.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],o=i[3],s=i[4],l=i[5],d=i[6],h=i[7],p=n.high,v=n.low,f=a.high,g=a.low,m=r.high,y=r.low,_=o.high,b=o.low,x=s.high,w=s.low,S=l.high,C=l.low,k=d.high,I=d.low,E=h.high,A=h.low,P=p,M=v,D=f,T=g,B=m,F=y,R=_,L=b,N=x,O=w,z=S,V=C,W=k,H=I,$=E,K=A,Y=0;Y<80;Y++){var X,j,U=u[Y];if(Y<16)j=U.high=0|t[e+2*Y],X=U.low=0|t[e+2*Y+1];else{var G=u[Y-15],Z=G.high,q=G.low,J=(Z>>>1|q<<31)^(Z>>>8|q<<24)^Z>>>7,Q=(q>>>1|Z<<31)^(q>>>8|Z<<24)^(q>>>7|Z<<25),tt=u[Y-2],et=tt.high,it=tt.low,nt=(et>>>19|it<<13)^(et<<3|it>>>29)^et>>>6,at=(it>>>19|et<<13)^(it<<3|et>>>29)^(it>>>6|et<<26),rt=u[Y-7],ot=rt.high,st=rt.low,lt=u[Y-16],ct=lt.high,ut=lt.low;X=Q+st,j=J+ot+(X>>>0>>0?1:0),X+=at,j=j+nt+(X>>>0>>0?1:0),X+=ut,j=j+ct+(X>>>0>>0?1:0),U.high=j,U.low=X}var dt=N&z^~N&W,ht=O&V^~O&H,pt=P&D^P&B^D&B,vt=M&T^M&F^T&F,ft=(P>>>28|M<<4)^(P<<30|M>>>2)^(P<<25|M>>>7),gt=(M>>>28|P<<4)^(M<<30|P>>>2)^(M<<25|P>>>7),mt=(N>>>14|O<<18)^(N>>>18|O<<14)^(N<<23|O>>>9),yt=(O>>>14|N<<18)^(O>>>18|N<<14)^(O<<23|N>>>9),_t=c[Y],bt=_t.high,xt=_t.low,wt=K+yt,St=$+mt+(wt>>>0>>0?1:0),Ct=(wt=wt+ht,St=St+dt+(wt>>>0>>0?1:0),wt=wt+xt,St=St+bt+(wt>>>0>>0?1:0),wt=wt+X,St=St+j+(wt>>>0>>0?1:0),gt+vt),kt=ft+pt+(Ct>>>0>>0?1:0);$=W,K=H,W=z,H=V,z=N,V=O,O=L+wt|0,N=R+St+(O>>>0>>0?1:0)|0,R=B,L=F,B=D,F=T,D=P,T=M,M=wt+Ct|0,P=St+kt+(M>>>0>>0?1:0)|0}v=n.low=v+M,n.high=p+P+(v>>>0>>0?1:0),g=a.low=g+T,a.high=f+D+(g>>>0>>0?1:0),y=r.low=y+F,r.high=m+B+(y>>>0>>0?1:0),b=o.low=b+L,o.high=_+R+(b>>>0>>0?1:0),w=s.low=w+O,s.high=x+N+(w>>>0>>0?1:0),C=l.low=C+V,l.high=S+z+(C>>>0>>0?1:0),I=d.low=I+H,d.high=k+W+(I>>>0>>0?1:0),A=h.low=A+K,h.high=E+$+(A>>>0>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[30+(n+128>>>10<<5)]=Math.floor(i/4294967296),e[31+(n+128>>>10<<5)]=i,t.sigBytes=4*e.length,this._process();var a=this._hash.toX32();return a},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});e.SHA512=n._createHelper(d),e.HmacSHA512=n._createHmacHelper(d)}(),t.SHA512})},7628:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=i.BlockCipher,r=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],c=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],d=r.DES=a.extend({_doReset:function(){for(var t=this._key,e=t.words,i=[],n=0;n<56;n++){var a=o[n]-1;i[n]=e[a>>>5]>>>31-a%32&1}for(var r=this._subKeys=[],c=0;c<16;c++){var u=r[c]=[],d=l[c];for(n=0;n<24;n++)u[n/6|0]|=i[(s[n]-1+d)%28]<<31-n%6,u[4+(n/6|0)]|=i[28+(s[n+24]-1+d)%28]<<31-n%6;u[0]=u[0]<<1|u[0]>>>31;for(n=1;n<7;n++)u[n]=u[n]>>>4*(n-1)+3;u[7]=u[7]<<5|u[7]>>>27}var h=this._invSubKeys=[];for(n=0;n<16;n++)h[n]=r[15-n]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,i){this._lBlock=t[e],this._rBlock=t[e+1],h.call(this,4,252645135),h.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),h.call(this,1,1431655765);for(var n=0;n<16;n++){for(var a=i[n],r=this._lBlock,o=this._rBlock,s=0,l=0;l<8;l++)s|=c[l][((o^a[l])&u[l])>>>0];this._lBlock=o,this._rBlock=r^s}var d=this._lBlock;this._lBlock=this._rBlock,this._rBlock=d,h.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(t,e){var i=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=i,this._lBlock^=i<>>t^this._lBlock)&e;this._lBlock^=i,this._rBlock^=i<192.");var i=e.slice(0,2),a=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=d.createEncryptor(n.create(i)),this._des2=d.createEncryptor(n.create(a)),this._des3=d.createEncryptor(n.create(r))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=a._createHelper(v)}(),t.TripleDES})},43240:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.Base,r=n.WordArray,o=i.x64={};o.Word=a.extend({init:function(t,e){this.high=t,this.low=e}}),o.WordArray=a.extend({init:function(t,i){t=this.words=t||[],this.sigBytes=i!=e?i:8*t.length},toX32:function(){for(var t=this.words,e=t.length,i=[],n=0;n=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}}throw new TypeError((0,n.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/417.6b658f3e.js b/frontend/dist/js/417.6b658f3e.js new file mode 100644 index 0000000..6d2163d --- /dev/null +++ b/frontend/dist/js/417.6b658f3e.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[417],{58772:function(t,a,e){e.r(a),e.d(a,{default:function(){return R}});var s=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-asset-analysis-page",class:{"theme-dark":t.isDarkTheme}},[t.opportunities.length>0?a("div",{staticClass:"radar-section"},[a("div",{staticClass:"radar-header"},[a("div",{staticClass:"radar-header-left"},[a("h2",{staticClass:"radar-title"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.title")))]),a("p",{staticClass:"radar-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.updateHint")))])]),a("a-button",{staticClass:"radar-refresh-btn",attrs:{size:"small",loading:t.oppLoading},on:{click:function(a){return t.loadOpportunities(!0)}}},[a("a-icon",{attrs:{type:"sync"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),a("div",{staticClass:"radar-carousel",on:{mouseenter:function(a){t.oppHover=!0},mouseleave:function(a){t.oppHover=!1}}},[a("div",{staticClass:"radar-track",class:{paused:t.oppHover},style:t.oppTrackStyle},t._l(t.carouselItems,function(e,s){return a("div",{key:"opp-"+s,staticClass:"radar-card",class:[e.impact,{"is-prediction":"PredictionMarket"===e.market}],on:{click:function(a){return t.analyzeOpportunity(e)}}},[a("div",{staticClass:"rc-head"},[a("span",{staticClass:"rc-symbol",class:{"rc-prediction-title":"PredictionMarket"===e.market}},[t._v(" "+t._s("PredictionMarket"===e.market&&e.name||e.symbol)+" ")]),a("span",{staticClass:"rc-market",class:"rc-market-"+(e.market||"").toLowerCase()},[t._v(" "+t._s(t.getMarketLabel(e.market))+" ")])]),"PredictionMarket"!==e.market?a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"当前价格":"Price"))]),a("span",{staticClass:"rc-metric-value"},[t._v("$"+t._s(t.formatOppPrice(e.price)))])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"24h涨跌":"24h Change"))]),a("span",{staticClass:"rc-metric-value",class:e.change_24h>=0?"rc-up":"rc-down"},[t._v(" "+t._s(e.change_24h>=0?"+":"")+t._s((e.change_24h||0).toFixed(2))+"% ")])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"信号":"Signal"))]),a("span",{staticClass:"rc-metric-value rc-signal-val",class:"rc-signal-"+(e.signal||"")},[t._v(" "+t._s(t.getSignalLabel(e.signal))+" ")])])]):a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"市场概率":"Probability"))]),a("span",{staticClass:"rc-metric-value"},[t._v(t._s((e.price||0).toFixed(1))+"%")])]),e.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"机会评分":"Score"))]),a("span",{staticClass:"rc-metric-value rc-up"},[t._v(t._s(e.ai_analysis.opportunity_score.toFixed(0)))])]):t._e(),e.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"建议":"Rec."))]),a("span",{staticClass:"rc-metric-value",class:"YES"===e.ai_analysis.recommendation?"rc-up":"NO"===e.ai_analysis.recommendation?"rc-down":""},[t._v(" "+t._s(t.getRecommendationLabel(e.ai_analysis.recommendation))+" ")])]):t._e()]),a("div",{staticClass:"rc-footer"},[a("span",{staticClass:"rc-reason"},[t._v(t._s(t.getReasonText(e)))]),"Crypto"===e.market?a("span",{staticClass:"rc-cta",on:{click:function(a){return a.stopPropagation(),t.openQuickTradeFromOpp(e)}}},[a("a-icon",{attrs:{type:"transaction"}}),t._v(" "+t._s(t.$t("quickTrade.tradeNow"))+" ")],1):t._e()])])}),0)])]):t._e(),a("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentAnalysisSymbol?a("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTradeFromCurrent}},[a("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),a("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:t.qtSource,"market-type":"swap"},on:{close:function(a){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}}),a("a-card",{staticClass:"workspace-card",attrs:{bordered:!1}},[a("a-tabs",{staticClass:"workspace-tabs",attrs:{size:"large"},model:{value:t.activeTab,callback:function(a){t.activeTab=a},expression:"activeTab"}},[a("a-tab-pane",{key:"quick"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.quick"))+" ")],1),a("div",{staticClass:"tab-body"},["quick"===t.activeTab?a("AnalysisView",{attrs:{embedded:!0,"preset-symbol":t.presetSymbol,"auto-analyze-signal":t.autoAnalyzeSignal},on:{"symbol-change":t.onAnalysisSymbolChange}}):t._e()],1)]),a("a-tab-pane",{key:"polymarket"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"radar-chart"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.polymarket"))+" ")],1),a("div",{staticClass:"tab-body"},[a("div",{staticClass:"polymarket-tab-content"},[a("div",{staticClass:"polymarket-placeholder"},[a("div",{staticClass:"placeholder-icon"},[a("a-icon",{attrs:{type:"radar-chart"}})],1),a("h3",[t._v(t._s(t.$t("polymarket.analysis.title")))]),a("p",[t._v(t._s(t.$t("polymarket.analysis.description")))]),a("a-button",{staticStyle:{"margin-top":"16px"},attrs:{type:"primary",size:"large",icon:"thunderbolt"},on:{click:function(a){t.showPolymarketModal=!0}}},[t._v(" "+t._s(t.$t("polymarket.analysis.startAnalysis"))+" ")])],1)])])])],1)],1),a("PolymarketAnalysisModal",{attrs:{visible:t.showPolymarketModal},on:{close:function(a){t.showPolymarketModal=!1}}})],1)},i=[],n=e(81127),r=e(56252),o=e(2403),l=e(76338),c=(e(74423),e(95353)),u=e(61313),d=e(44146),y=e(18947),p=function(){var t=this,a=t._self._c;return a("a-modal",{attrs:{visible:t.visible,title:t.$t("polymarket.analysis.title"),width:900,footer:null,wrapClassName:t.isDarkTheme?"qd-dark-modal":"",maskClosable:!1},on:{cancel:t.handleClose}},[a("div",{staticClass:"polymarket-analysis-modal",class:{"theme-dark":t.isDarkTheme}},[a("a-tabs",{attrs:{"default-active-key":"analyze"},on:{change:t.handleTabChange}},[a("a-tab-pane",{key:"analyze",attrs:{tab:t.$t("polymarket.analysis.tabAnalyze")}},[t.analysisResult?t._e():a("div",{staticClass:"input-section"},[a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("polymarket.analysis.inputHint"),type:"info","show-icon":""}}),a("a-textarea",{attrs:{placeholder:t.$t("polymarket.analysis.inputPlaceholder"),rows:3,disabled:t.analyzing},on:{pressEnter:t.handleAnalyze},model:{value:t.inputText,callback:function(a){t.inputText=a},expression:"inputText"}}),a("div",{staticClass:"input-actions"},[a("a-button",{staticStyle:{width:"100%","margin-top":"12px"},attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.inputText.trim()},on:{click:t.handleAnalyze}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzeButton"))+" ")])],1)],1),t.analysisResult?a("div",{staticClass:"result-section"},[a("div",{staticClass:"market-info"},[a("h3",[t._v(t._s(t.analysisResult.market.question))]),a("div",{staticClass:"market-meta"},[a("a-tag",{attrs:{color:t.getStatusColor(t.analysisResult.market.status)}},[t._v(" "+t._s(t.analysisResult.market.status)+" ")]),a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"percentage"}}),t._v(" "+t._s(t.analysisResult.market.current_probability)+"% ")],1),t.analysisResult.market.volume_24h?a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"dollar"}}),t._v(" "+t._s(t.formatVolume(t.analysisResult.market.volume_24h))+" ")],1):t._e(),t.analysisResult.market.polymarket_url?a("a-button",{attrs:{type:"link",size:"small",icon:"link",href:t.analysisResult.market.polymarket_url,target:"_blank"}},[t._v(" "+t._s(t.$t("polymarket.analysis.viewOnPolymarket"))+" ")]):t._e()],1)]),a("div",{staticClass:"analysis-result"},[a("a-divider",[t._v(t._s(t.$t("polymarket.analysis.aiAnalysis")))]),a("div",{staticClass:"probability-comparison"},[a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.marketProbability")))]),a("div",{staticClass:"prob-value"},[t._v(t._s(t.analysisResult.analysis.market_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.aiPredictedProbability")))]),a("div",{staticClass:"prob-value ai-prob"},[t._v(t._s(t.analysisResult.analysis.ai_predicted_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.divergence")))]),a("div",{staticClass:"prob-value",class:t.getDivergenceClass(t.analysisResult.analysis.divergence)},[t._v(" "+t._s(t.analysisResult.analysis.divergence>=0?"+":"")+t._s(t.analysisResult.analysis.divergence.toFixed(2))+"% ")])])]),a("div",{staticClass:"recommendation-section"},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.recommendation")))]),a("a-tag",{staticStyle:{"font-size":"16px",padding:"4px 12px"},attrs:{color:t.getRecommendationColor(t.analysisResult.analysis.recommendation)}},[t._v(" "+t._s(t.getRecommendationLabel(t.analysisResult.analysis.recommendation))+" ")])],1)]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.confidenceScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.confidence_score.toFixed(0)))])])]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.opportunityScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.opportunity_score.toFixed(0)))])])])],1)],1),t.analysisResult.analysis.reasoning?a("div",{staticClass:"reasoning-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.reasoning")))]),a("p",{staticClass:"reasoning-text"},[t._v(t._s(t.analysisResult.analysis.reasoning))])]):t._e(),t.analysisResult.analysis.key_factors&&t.analysisResult.analysis.key_factors.length>0?a("div",{staticClass:"key-factors-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.keyFactors")))]),t._l(t.analysisResult.analysis.key_factors,function(e,s){return a("a-tag",{key:s,staticStyle:{margin:"4px"},attrs:{color:"blue"}},[t._v(" "+t._s(e)+" ")])})],2):t._e(),t.analysisResult.credits_charged>0?a("div",{staticClass:"billing-info"},[a("a-alert",{staticStyle:{"margin-top":"16px"},attrs:{message:t.$t("polymarket.analysis.creditsCharged",{credits:t.analysisResult.credits_charged}),type:"success","show-icon":""}}),void 0!==t.analysisResult.remaining_credits?a("div",{staticStyle:{"margin-top":"8px","text-align":"right"},style:{color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.remainingCredits",{credits:t.analysisResult.remaining_credits.toFixed(0)}))+" ")]):t._e()],1):t._e()],1),a("div",{staticClass:"result-actions"},[a("a-button",{staticStyle:{"margin-right":"8px"},on:{click:t.handleNewAnalysis}},[t._v(" "+t._s(t.$t("polymarket.analysis.newAnalysis"))+" ")]),a("a-button",{attrs:{type:"primary"},on:{click:t.handleClose}},[t._v(" "+t._s(t.$t("common.close"))+" ")])],1)]):t._e(),t.analyzing?a("div",{staticClass:"loading-section"},[a("a-spin",{attrs:{size:"large"}}),a("p",{style:{marginTop:"16px",color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzing"))+" ")])],1):t._e()]),a("a-tab-pane",{key:"history",attrs:{tab:t.$t("polymarket.analysis.tabHistory")}},[a("div",{staticClass:"history-section"},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-table",{attrs:{columns:t.historyColumns,"data-source":t.historyList,pagination:t.historyPagination,"row-key":function(t){return t.id},size:"small"},on:{change:t.handleHistoryTableChange},scopedSlots:t._u([{key:"market_title",fn:function(e,s){return[a("a-button",{staticStyle:{padding:"0"},attrs:{type:"link"},on:{click:function(a){return t.viewHistoryItem(s)}}},[t._v(" "+t._s(e)+" ")])]}},{key:"recommendation",fn:function(e){return[a("a-tag",{attrs:{color:t.getRecommendationColor(e)}},[t._v(" "+t._s(t.getRecommendationLabel(e))+" ")])]}},{key:"created_at",fn:function(a){return[t._v(" "+t._s(t.formatDateTime(a))+" ")]}}])})],1)],1)])],1)],1)])},m=[],h=e(75769),v="/api/polymarket";function k(t){return(0,h.Ay)({url:"".concat(v,"/analyze"),method:"post",data:t,timeout:12e4})}function _(t){return(0,h.Ay)({url:"".concat(v,"/history"),method:"get",params:t})}var g={name:"PolymarketAnalysisModal",props:{visible:{type:Boolean,default:!1}},data:function(){var t=this;return{inputText:"",analyzing:!1,analysisResult:null,activeTab:"analyze",historyLoading:!1,historyList:[],historyPagination:{current:1,pageSize:20,total:0,showSizeChanger:!0,showTotal:function(a){return t.$t("polymarket.analysis.historyTotal",{total:a})}},historyColumns:[]}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),methods:{handleAnalyze:function(){var t=this;this.inputText.trim()?(this.analyzing=!0,this.analysisResult=null,k({input:this.inputText.trim(),language:this.$i18n.locale||"zh-CN"}).then(function(a){1===a.code?(t.analysisResult=a.data,t.$message.success(t.$t("polymarket.analysis.success"))):"Insufficient credits"===a.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(a.msg||t.$t("polymarket.analysis.failed"))}).catch(function(a){a.response&&a.response.data&&"Insufficient credits"===a.response.data.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(t.$t("polymarket.analysis.failed"))}).finally(function(){t.analyzing=!1})):this.$message.warning(this.$t("polymarket.analysis.inputRequired"))},handleNewAnalysis:function(){this.inputText="",this.analysisResult=null},handleClose:function(){var t=this;this.$emit("close"),setTimeout(function(){t.inputText="",t.analysisResult=null,t.analyzing=!1},300)},getStatusColor:function(t){var a={active:"green",closed:"default",resolved:"blue"};return a[t]||"default"},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"orange"};return a[t]||"default"},getRecommendationLabel:function(t){var a={YES:this.$t("polymarket.analysis.recommendationYes"),NO:this.$t("polymarket.analysis.recommendationNo"),HOLD:this.$t("polymarket.analysis.recommendationHold")};return a[t]||t},getDivergenceClass:function(t){return t>5?"divergence-positive":t<-5?"divergence-negative":"divergence-neutral"},formatVolume:function(t){return t>=1e6?"$".concat((t/1e6).toFixed(2),"M"):t>=1e3?"$".concat((t/1e3).toFixed(2),"K"):"$".concat(t.toFixed(2))},handleTabChange:function(t){this.activeTab=t,"history"===t&&0===this.historyList.length&&this.loadHistory()},loadHistory:function(){var t=this;return(0,r.A)((0,n.A)().m(function a(){var e;return(0,n.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,_({page:t.historyPagination.current,page_size:t.historyPagination.pageSize});case 2:e=a.v,1===e.code&&e.data&&(t.historyList=e.data.items||[],t.historyPagination.total=e.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("polymarket.analysis.loadHistoryFailed"));case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},handleHistoryTableChange:function(t){this.historyPagination.current=t.current,this.historyPagination.pageSize=t.pageSize,this.loadHistory()},viewHistoryItem:function(t){this.activeTab="analyze",this.analysisResult={market:{question:t.market_title,market_id:t.market_id,polymarket_url:t.market_url,current_probability:t.market_probability,status:"active"},analysis:{ai_predicted_probability:t.ai_predicted_probability,market_probability:t.market_probability,recommendation:t.recommendation,opportunity_score:t.opportunity_score,confidence_score:t.confidence_score}}},formatDateTime:function(t){if(!t)return"";var a=new Date(t);return a.toLocaleString("zh-CN"===this.$i18n.locale?"zh-CN":"en-US")}},mounted:function(){this.historyColumns=[{title:this.$t("polymarket.analysis.historyMarket"),dataIndex:"market_title",key:"market_title",scopedSlots:{customRender:"market_title"}},{title:this.$t("polymarket.analysis.historyRecommendation"),dataIndex:"recommendation",key:"recommendation",width:120,scopedSlots:{customRender:"recommendation"}},{title:this.$t("polymarket.analysis.historyOpportunityScore"),dataIndex:"opportunity_score",key:"opportunity_score",width:120,align:"right"},{title:this.$t("polymarket.analysis.historyCreatedAt"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]}},b=g,f=e(845),C=(0,f.A)(b,p,m,!1,null,"67e891d2",null),$=C.exports,S={name:"AIAssetAnalysis",components:{AnalysisView:u["default"],QuickTradePanel:y.A,PolymarketAnalysisModal:$},data:function(){return{activeTab:"quick",opportunities:[],oppLoading:!1,oppHover:!1,presetSymbol:"",autoAnalyzeSignal:0,showQuickTrade:!1,qtSymbol:"",qtSide:"",qtPrice:0,qtSource:"ai_radar",currentAnalysisSymbol:"",currentAnalysisMarket:"",showPolymarketModal:!1}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},carouselItems:function(){return 0===this.opportunities.length?[]:[].concat((0,o.A)(this.opportunities),(0,o.A)(this.opportunities))},oppTrackStyle:function(){var t=3*this.opportunities.length;return{animationDuration:t+"s"}}}),created:function(){this.loadOpportunities()},methods:{loadOpportunities:function(){var t=arguments,a=this;return(0,r.A)((0,n.A)().m(function e(){var s,i,r;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],a.oppLoading=!0,e.p=1,i=s?{force:!0}:{},e.n=2,(0,d.r9)(i);case 2:r=e.v,r&&1===r.code&&Array.isArray(r.data)&&(a.opportunities=r.data.slice(0,20)),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,a.oppLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},getSignalColor:function(t){var a={overbought:"volcano",oversold:"green",bullish_momentum:"cyan",bearish_momentum:"red"};return a[t]||"default"},getSignalLabel:function(t){var a="aiAssetAnalysis.opportunities.signal.".concat(t),e=this.$t(a);return e!==a?e:t},getMarketTagColor:function(t){var a={Crypto:"purple",USStock:"green",CNStock:"blue",HKStock:"geekblue",Forex:"gold",PredictionMarket:"cyan"};return a[t]||"default"},getMarketLabel:function(t){var a="aiAssetAnalysis.opportunities.market.".concat(t),e=this.$t(a);return e!==a?e:t},getReasonText:function(t){var a=(t.market||"Crypto").toLowerCase(),e=t.signal||"",s="aiAssetAnalysis.opportunities.reason.".concat(a,".").concat(e),i=this.$t(s);if(i===s)return t.reason||"";var n=Math.abs(t.change_24h||0).toFixed(1),r=Math.abs(t.change_7d||0).toFixed(1);return i.replace("{change}",n).replace("{change7d}",r)},formatOppPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1?t.toFixed(2):t.toFixed(4):"--"},analyzeOpportunity:function(t){var a=this;if("PredictionMarket"===t.market)return this.activeTab="polymarket",void(this.showPolymarketModal=!0);this.activeTab="quick";var e=t.market||"Crypto";this.presetSymbol="".concat(e,":").concat(t.symbol),this.$nextTick(function(){a.autoAnalyzeSignal++})},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"default"};return a[t]||"default"},getRecommendationLabel:function(t){return this.$t("polymarket.recommendation.".concat(t))||t},onAnalysisSymbolChange:function(t){if(!t)return this.currentAnalysisSymbol="",void(this.currentAnalysisMarket="");var a=t.split(":"),e=a.length>1?a[0]:"Crypto",s=a.length>1?a[1]:a[0];this.currentAnalysisMarket=e,this.currentAnalysisSymbol="Crypto"===e?s:""},openQuickTradeFromCurrent:function(){this.currentAnalysisSymbol&&(this.qtSymbol=this.currentAnalysisSymbol,this.qtSide="",this.qtPrice=0,this.qtSource="ai_analysis",this.showQuickTrade=!0)},openQuickTradeFromOpp:function(t){if("Crypto"===t.market){this.qtSymbol=t.symbol||"";var a=(t.signal||"").toLowerCase();a.includes("oversold")||a.includes("bullish")?this.qtSide="buy":a.includes("overbought")||a.includes("bearish")?this.qtSide="sell":this.qtSide="",this.qtPrice=t.price||0,this.qtSource="ai_radar",this.showQuickTrade=!0}},onQuickTradeSuccess:function(){this.$message.success(this.$t("quickTrade.orderSuccess"))},handleQuickTradeSymbolChange:function(t){t&&(this.qtSymbol=t)}}},T=S,A=(0,f.A)(T,s,i,!1,null,"4f6cc952",null),R=A.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/500.2f2276c5.js b/frontend/dist/js/500.2f2276c5.js deleted file mode 100644 index 82c8953..0000000 --- a/frontend/dist/js/500.2f2276c5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[500],{46500:function(t,e,a){a.d(e,{A:function(){return C}});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"quick-trade-panel-root"},[e("a-drawer",{staticClass:"quick-trade-drawer",class:{"theme-dark":t.isDark},attrs:{title:null,width:400,visible:t.visible,closable:!1,bodyStyle:{padding:0},maskStyle:{background:"rgba(0,0,0,0.45)"}},on:{close:t.handleClose}},[e("div",{staticClass:"qt-header"},[e("div",{staticClass:"qt-header-left"},[e("a-icon",{staticClass:"qt-icon",attrs:{type:"thunderbolt",theme:"filled"}}),e("span",{staticClass:"qt-header-title"},[t._v(t._s(t.$t("quickTrade.title")))])],1),e("a-icon",{staticClass:"qt-close",attrs:{type:"close"},on:{click:t.handleClose}})],1),e("div",{staticClass:"qt-symbol-bar"},[e("div",{staticClass:"qt-symbol-selector"},[e("a-select",{staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:t.$t("quickTrade.selectSymbol"),"filter-option":!1,"not-found-content":t.symbolSearching?null:void 0,loading:t.symbolSearching},on:{search:t.handleSymbolSearch,change:t.handleSymbolChange,focus:t.handleSymbolFocus},model:{value:t.currentSymbol,callback:function(e){t.currentSymbol=e},expression:"currentSymbol"}},[e("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),t._l(t.symbolSuggestions,function(a){return e("a-select-option",{key:a.value,attrs:{value:a.value}},[e("div",{staticClass:"qt-symbol-option"},[e("span",{staticClass:"qt-symbol-option-name"},[t._v(t._s(a.symbol))]),a.name?e("span",{staticClass:"qt-symbol-option-desc"},[t._v(t._s(a.name))]):t._e()])])})],2)],1),e("div",{staticClass:"qt-price-display",class:t.priceChangeClass},[e("span",{staticClass:"qt-current-price"},[t._v("$"+t._s(t.formatPrice(t.currentPrice)))])])]),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.exchange"))+" "),e("span",{staticClass:"qt-crypto-hint"},[t._v(t._s(t.$t("quickTrade.cryptoOnly")))])]),e("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:t.$t("quickTrade.selectExchange"),loading:t.credLoading,notFoundContent:t.$t("quickTrade.noExchange")},on:{change:t.onCredentialChange},model:{value:t.selectedCredentialId,callback:function(e){t.selectedCredentialId=e},expression:"selectedCredentialId"}},t._l(t.credentials,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[e("span",{staticStyle:{"text-transform":"capitalize"}},[t._v(t._s(a.exchange_id||a.name))]),a.enable_demo_trading?e("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{color:"orange",size:"small"}},[t._v(t._s(t.$t("quickTrade.testnetTag")))]):t._e(),a.market_type?e("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{size:"small"}},[t._v(t._s(a.market_type))]):t._e()],1)}),1),t.credLoading||0!==t.credentials.length?t._e():e("div",{staticClass:"qt-no-cred-actions"},[e("a-button",{attrs:{type:"primary",block:"",size:"small"},on:{click:function(e){t.showAddExchangeModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("quickTrade.addAccountInline"))+" ")],1)],1),e("div",{staticClass:"qt-manage-link"},[e("a",{on:{click:function(e){e.preventDefault(),t.showAddExchangeModal=!0}}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus-circle"}}),t._v(t._s(t.$t("quickTrade.addAccountInline"))+" ")],1),e("span",{staticClass:"qt-manage-sep"},[t._v("·")]),e("router-link",{attrs:{to:"/profile?tab=exchange"}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),t._v(t._s(t.$t("profile.exchange.goToManage"))+" ")],1)],1),t.selectedCredentialId?e("div",{staticClass:"qt-balance"},[t.balanceLoading?[e("a-spin",{attrs:{size:"small"}}),e("span",{staticClass:"qt-balance-label qt-balance-loading-text"},[t._v(t._s(t.$t("quickTrade.available"))+"…")])]:t.balance.error?[e("span",{staticClass:"qt-balance-label"},[t._v(t._s(t.$t("quickTrade.available"))+":")]),e("span",{staticClass:"qt-balance-error",attrs:{title:t.balance.error}},[t._v("—")])]:[e("span",{staticClass:"qt-balance-label"},[t._v(t._s(t.$t("quickTrade.available"))+":")]),e("span",{staticClass:"qt-balance-value"},[t._v("$"+t._s(t.formatPrice(t.balance.available)))])]],2):t._e()],1),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-direction-toggle"},[e("div",{staticClass:"qt-dir-btn qt-dir-long",class:{active:"buy"===t.side},on:{click:function(e){return t.setTradeSide("buy")}}},[e("a-icon",{attrs:{type:"arrow-up"}}),t._v(" "+t._s(t.$t("quickTrade.long"))+" ")],1),e("div",{staticClass:"qt-dir-btn qt-dir-short",class:{active:"sell"===t.side,"qt-dir-disabled":!t.isSwapMode},on:{click:function(e){return t.setTradeSide("sell")}}},[e("a-icon",{attrs:{type:"arrow-down"}}),t._v(" "+t._s(t.$t("quickTrade.short"))+" ")],1)]),t.isSwapMode?t._e():e("div",{staticClass:"qt-hint-text qt-hint-inline"},[t._v(t._s(t.$t("quickTrade.shortDisabledSpot")))])]),e("div",{staticClass:"qt-section"},[e("a-radio-group",{staticStyle:{width:"100%"},attrs:{"button-style":"solid",size:"small"},model:{value:t.orderType,callback:function(e){t.orderType=e},expression:"orderType"}},[e("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"market"}},[t._v(" "+t._s(t.$t("quickTrade.market"))+" ")]),e("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"limit"}},[t._v(" "+t._s(t.$t("quickTrade.limit"))+" ")])],1)],1),"limit"===t.orderType?e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.limitPrice")))]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.enterPrice")},model:{value:t.limitPrice,callback:function(e){t.limitPrice=e},expression:"limitPrice"}})],1):t._e(),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.amount"))+" (USDT)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1,step:10,precision:2,placeholder:t.$t("quickTrade.enterAmount")},model:{value:t.amount,callback:function(e){t.amount=e},expression:"amount"}}),e("div",{staticClass:"qt-quick-amounts"},t._l(t.quickAmountPcts,function(a){return e("a-button",{key:a,attrs:{size:"small",disabled:t.balance.available<=0},on:{click:function(e){return t.setAmountByPercent(a)}}},[t._v(" "+t._s(a)+"% ")])}),1)],1),e("div",{staticClass:"qt-section qt-card qt-mode-card"},[t.isSwapMode?[e("div",{staticClass:"qt-section-title-row"},[e("span",{staticClass:"qt-section-title"},[t._v(t._s(t.$t("quickTrade.leverage")))]),e("span",{staticClass:"qt-badge-contract"},[t._v(t._s(t.$t("quickTrade.contractBadge")))])]),e("div",{staticClass:"qt-leverage-row"},[e("a-slider",{staticStyle:{flex:"1","margin-right":"12px"},attrs:{min:1,max:125,marks:t.leverageMarks,tipFormatter:function(t){return t+"x"}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}}),e("a-input-number",{staticClass:"qt-leverage-input",attrs:{min:1,max:125,formatter:function(t){return"".concat(t,"x")},parser:function(t){return String(t).replace("x","")}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}})],1),e("div",{staticClass:"qt-label qt-label-spaced"},[t._v(t._s(t.$t("quickTrade.marginMode")))]),e("a-radio-group",{staticClass:"qt-margin-radio",attrs:{size:"small","button-style":"solid"},model:{value:t.marginMode,callback:function(e){t.marginMode=e},expression:"marginMode"}},[e("a-radio-button",{attrs:{value:"cross"}},[t._v(t._s(t.$t("quickTrade.crossMargin")))]),e("a-radio-button",{attrs:{value:"isolated"}},[t._v(t._s(t.$t("quickTrade.isolatedMargin")))])],1),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.marginModeHint")))])]:e("div",{staticClass:"qt-spot-banner"},[e("a-icon",{staticClass:"qt-spot-banner-icon",attrs:{type:"wallet"}}),e("div",{staticClass:"qt-spot-banner-text"},[e("div",{staticClass:"qt-spot-banner-title"},[t._v(t._s(t.$t("quickTrade.spotModeTitle")))]),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.spotModeHint")))])])],1)],2),e("div",{staticClass:"qt-section qt-card qt-tpsl-card"},[e("div",{staticClass:"qt-section-title-row"},[e("span",{staticClass:"qt-section-title"},[t._v(t._s(t.$t("quickTrade.tpsl")))]),e("span",{staticClass:"qt-optional-tag"},[t._v(t._s(t.$t("quickTrade.optional")))])]),e("div",{staticClass:"qt-tpsl-row"},[e("div",{staticClass:"qt-tpsl-item"},[e("span",{staticClass:"qt-label qt-tp-label"},[t._v(t._s(t.$t("quickTrade.tp")))]),e("a-input-number",{staticClass:"qt-input-full",attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.tpPlaceholder")},model:{value:t.tpPrice,callback:function(e){t.tpPrice=e},expression:"tpPrice"}})],1),e("div",{staticClass:"qt-tpsl-item"},[e("span",{staticClass:"qt-label qt-sl-label"},[t._v(t._s(t.$t("quickTrade.sl")))]),e("a-input-number",{staticClass:"qt-input-full",attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.slPlaceholder")},model:{value:t.slPrice,callback:function(e){t.slPrice=e},expression:"slPrice"}})],1)])]),e("div",{staticClass:"qt-submit-section"},[e("a-button",{staticClass:"qt-submit-btn",class:["buy"===t.side?"qt-btn-long":"qt-btn-short"],attrs:{type:"buy"===t.side?"primary":"danger",size:"large",block:"",loading:t.submitting,disabled:!t.canSubmit},on:{click:t.handleSubmit}},[e("a-icon",{attrs:{type:"buy"===t.side?"arrow-up":"arrow-down"}}),t._v(" "+t._s("buy"===t.side?t.$t("quickTrade.buyLong"):t.$t("quickTrade.sellShort"))+" "+t._s(t.symbol)+" ")],1)],1),e("div",{staticClass:"qt-position-section"},[e("div",{staticClass:"qt-section-header"},[e("a-icon",{attrs:{type:"wallet"}}),t._v(" "+t._s(t.$t("quickTrade.currentPosition"))+" ")],1),t.currentPosition?e("div",{staticClass:"qt-position-card",class:t.currentPosition.side},[e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.side")))]),e("a-tag",{attrs:{color:"long"===t.currentPosition.side?"#52c41a":"#f5222d",size:"small"}},[t._v(" "+t._s("long"===t.currentPosition.side?t.$t("quickTrade.long"):t.$t("quickTrade.short"))+" ")])],1),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.posSize")))]),e("span",[t._v(t._s(t.currentPosition.size))])]),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.entryPrice")))]),e("span",[t._v("$"+t._s(t.formatPrice(t.currentPosition.entry_price)))])]),t.currentPosition.mark_price?e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.markPrice")))]),e("span",[t._v("$"+t._s(t.formatPrice(t.currentPosition.mark_price)))])]):t._e(),t.currentPosition.leverage&&t.currentPosition.leverage>1?e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.leverage")))]),e("span",[t._v(t._s(t.currentPosition.leverage)+"x")])]):t._e(),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.unrealizedPnl")))]),e("span",{class:t.currentPosition.unrealized_pnl>=0?"qt-green":"qt-red"},[t._v(" $"+t._s(t.formatPrice(t.currentPosition.unrealized_pnl))+" ")])]),e("a-button",{staticStyle:{"margin-top":"8px"},attrs:{type:"danger",size:"small",block:"",ghost:"",loading:t.closingPosition},on:{click:t.handleClosePosition}},[t._v(" "+t._s(t.$t("quickTrade.closePosition"))+" ")])],1):e("div",{staticClass:"qt-position-empty"},[e("a-icon",{staticClass:"qt-empty-icon",attrs:{type:"inbox"}}),e("span",{staticClass:"qt-empty-desc"},[t._v(t._s(t.$t("quickTrade.noPositionHint")))])],1)]),t.recentTrades.length>0?e("div",{staticClass:"qt-history-section"},[e("a-collapse",{attrs:{bordered:!1,activeKey:t.historyCollapsed?[]:["history"]},on:{change:t.handleHistoryCollapse}},[e("a-collapse-panel",{key:"history",style:t.collapseStyle,attrs:{showArrow:!1}},[e("template",{slot:"header"},[e("div",{staticClass:"qt-section-header",staticStyle:{margin:"0",padding:"0"}},[e("a-icon",{attrs:{type:"history"}}),t._v(" "+t._s(t.$t("quickTrade.recentTrades"))+" "),e("span",{staticClass:"qt-history-count"},[t._v("("+t._s(t.recentTrades.length)+")")])],1)]),e("div",{staticClass:"qt-trade-list"},t._l(t.recentTrades,function(a){return e("div",{key:a.id,staticClass:"qt-trade-item"},[e("div",{staticClass:"qt-trade-main"},[e("a-tag",{attrs:{color:"buy"===a.side?"#52c41a":"#f5222d",size:"small"}},[t._v(" "+t._s("buy"===a.side?"LONG":"SHORT")+" ")]),e("span",{staticClass:"qt-trade-symbol"},[t._v(t._s(a.symbol))]),e("span",{staticClass:"qt-trade-amount"},[t._v("$"+t._s(t.formatPrice(a.amount)))])],1),e("div",{staticClass:"qt-trade-meta"},[e("a-tag",{attrs:{color:"filled"===a.status?"#52c41a":"failed"===a.status?"#f5222d":"#faad14",size:"small"}},[t._v(" "+t._s(a.status)+" ")]),e("span",{staticClass:"qt-trade-time"},[t._v(t._s(t.formatTime(a.created_at)))])],1)])}),0)],2)],1)],1):t._e()]),e("exchange-account-modal",{attrs:{visible:t.showAddExchangeModal},on:{"update:visible":function(e){t.showAddExchangeModal=e},success:t.onExchangeAccountSaved}})],1)},s=[],r=a(81127),n=a(56252),c=a(76338),l=(a(74423),a(95353)),o=a(42430),d=a(40011),u=a(75769);function p(t){return(0,u.Ay)({url:"/api/quick-trade/place-order",method:"post",data:t})}function m(t){return(0,u.Ay)({url:"/api/quick-trade/balance",method:"get",params:t})}function v(t){return(0,u.Ay)({url:"/api/quick-trade/position",method:"get",params:t})}function h(t){return(0,u.Ay)({url:"/api/quick-trade/history",method:"get",params:t})}function b(t){return(0,u.Ay)({url:"/api/quick-trade/close-position",method:"post",data:t})}var g=a(35038),f=a(505),y={name:"QuickTradePanel",components:{ExchangeAccountModal:d.A},props:{visible:{type:Boolean,default:!1},symbol:{type:String,default:""},presetSide:{type:String,default:""},presetPrice:{type:Number,default:0},source:{type:String,default:"manual"},marketType:{type:String,default:"swap"}},data:function(){return{credentials:[],selectedCredentialId:void 0,credLoading:!1,balanceLoading:!1,balance:{available:0,total:0},side:"buy",orderType:"market",limitPrice:0,amount:100,leverage:5,marginMode:"cross",tpPrice:null,slPrice:null,submitting:!1,closingPosition:!1,currentPrice:0,currentPosition:null,recentTrades:[],historyCollapsed:!1,currentSymbol:"",symbolSuggestions:[],symbolSearching:!1,symbolSearchTimer:null,userId:null,quickAmountPcts:[10,25,50,75,100],leverageMarks:{1:"1x",5:"5x",10:"10x",25:"25x",50:"50x",100:"100x",125:"125x"},pollTimer:null,showAddExchangeModal:!1}},computed:(0,c.A)((0,c.A)({},(0,l.aH)({navTheme:function(t){return t.app.theme}})),{},{isDark:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isSwapMode:function(){return Number(this.leverage)>1},effectiveMarketType:function(){return this.isSwapMode?"swap":"spot"},priceStep:function(){return this.currentPrice>1e4?1:this.currentPrice>100?.1:this.currentPrice>1?.01:1e-4},pricePrecision:function(){return this.currentPrice>1e4?0:this.currentPrice>100?1:this.currentPrice>1?2:4},canSubmit:function(){return this.selectedCredentialId&&this.currentSymbol&&this.amount>0&&!this.submitting},priceChangeClass:function(){return""},collapseStyle:function(){return{background:"transparent",borderRadius:"4px",border:0,overflow:"hidden"}}}),watch:{visible:function(t){t?this.init():this.stopPolling()},symbol:function(t){t&&(this.currentSymbol=t)},currentSymbol:function(t){t&&(this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",t))},selectedCredentialId:function(t){t&&this.currentSymbol&&this.loadPosition()},presetSide:function(t){t&&(this.side=t)},presetPrice:function(t){t>0&&(this.currentPrice=t,this.limitPrice=t)},leverage:function(){var t=this;this.isSwapMode||"sell"!==this.side||(this.side="buy"),this.$nextTick(function(){t.selectedCredentialId&&(t.loadBalance(),t.loadPosition())})}},methods:{setTradeSide:function(t){"sell"!==t||this.isSwapMode?this.side=t:this.$message.warning(this.$t("quickTrade.shortDisabledSpot"))},init:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){return(0,r.A)().w(function(e){while(1)switch(e.n){case 0:return t.currentSymbol=t.symbol||"",t.presetSide&&(t.side=t.presetSide),"spot"===t.marketType&&(t.leverage=1),t.presetPrice>0&&(t.currentPrice=t.presetPrice,t.limitPrice=t.presetPrice),e.n=1,t.loadCredentials();case 1:return e.n=2,t.loadUserInfo();case 2:return e.n=3,t.loadWatchlistSymbols();case 3:if(!t.currentSymbol){e.n=4;break}return e.n=4,t.loadPrice();case 4:if(!t.selectedCredentialId||!t.currentSymbol){e.n=5;break}return e.n=5,t.loadPosition();case 5:t.loadHistory(),t.startPolling();case 6:return e.a(2)}},e)}))()},loadUserInfo:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s,n;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(e.p=0,i=t.$store,s=(null===i||void 0===i||null===(a=i.getters)||void 0===a?void 0:a.userInfo)||{},!s||!s.id){e.n=1;break}return t.userId=s.id,e.a(2);case 1:return e.n=2,(0,f.ug)();case 2:n=e.v,n&&1===n.code&&n.data&&(t.userId=n.data.id,i&&i.commit("SET_INFO",n.data)),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[0,3]])}))()},loadWatchlistSymbols:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.userId){e.n=2;break}return e.n=1,t.loadUserInfo();case 1:if(t.userId){e.n=2;break}return e.a(2);case 2:return e.p=2,e.n=3,(0,g.Qo)({userid:t.userId});case 3:a=e.v,a&&1===a.code&&a.data&&(i=(a.data||[]).filter(function(t){return"crypto"===(t.market||"").toLowerCase()}).map(function(t){return{value:t.symbol||"",symbol:t.symbol||"",name:t.name||""}}).filter(function(t){return t.value}),t.symbolSuggestions=i),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[2,4]])}))()},handleSymbolSearch:function(t){var e=this;this.symbolSearchTimer&&clearTimeout(this.symbolSearchTimer),t&&""!==t.trim()?this.symbolSearchTimer=setTimeout((0,n.A)((0,r.A)().m(function a(){var i;return(0,r.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return e.symbolSearching=!0,a.p=1,a.n=2,(0,g._3)({market:"Crypto",keyword:t.trim(),limit:20});case 2:i=a.v,i&&1===i.code&&i.data?e.symbolSuggestions=(i.data.items||i.data||[]).map(function(t){return{value:t.symbol||"",symbol:t.symbol||"",name:t.name||""}}).filter(function(t){return t.value}):e.symbolSuggestions=[],a.n=4;break;case 3:a.p=3,a.v,e.symbolSuggestions=[];case 4:return a.p=4,e.symbolSearching=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])})),300):this.loadWatchlistSymbols()},handleSymbolChange:function(t){t&&t!==this.currentSymbol&&(this.currentSymbol=t,this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",t))},loadPrice:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.currentSymbol){e.n=1;break}return t.currentPrice=0,e.a(2);case 1:return e.p=1,e.n=2,(0,u.Ay)({url:"/api/market/price",method:"get",params:{market:"Crypto",symbol:t.currentSymbol}});case 2:a=e.v,a&&1===a.code&&a.data&&(i=parseFloat(a.data.price||0),i>0&&(t.currentPrice=i,0!==t.limitPrice&&t.limitPrice!==t.presetPrice||(t.limitPrice=i))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},handleSymbolFocus:function(){0===this.symbolSuggestions.length&&this.loadWatchlistSymbols()},loadCredentials:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.credLoading=!0,e.p=1,e.n=2,(0,o.IA)();case 2:a=e.v,1===a.code&&a.data&&(i=a.data.items||a.data||[],s=["ibkr","mt5"],t.credentials=i.filter(function(t){var e=(t.exchange_id||t.name||"").toLowerCase();return!s.includes(e)}),!t.selectedCredentialId&&t.credentials.length>0&&(t.selectedCredentialId=t.credentials[0].id,t.onCredentialChange(t.selectedCredentialId))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.credLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},onExchangeAccountSaved:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s;return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return i=e.selectedCredentialId,a.n=1,e.loadCredentials();case 1:if(s=t&&(t.id||t.credential_id),!s){a.n=3;break}return e.selectedCredentialId=s,a.n=2,e.onCredentialChange(s);case 2:a.n=4;break;case 3:if(i||1!==e.credentials.length){a.n=4;break}return e.selectedCredentialId=e.credentials[0].id,a.n=4,e.onCredentialChange(e.selectedCredentialId);case 4:return a.a(2)}},a)}))()},onCredentialChange:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return e.selectedCredentialId=t,a.n=1,e.loadBalance();case 1:return a.n=2,e.loadPosition();case 2:return a.a(2)}},a)}))()},loadBalance:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedCredentialId){e.n=1;break}return e.a(2);case 1:return t.balanceLoading=!0,e.p=2,e.n=3,m({credential_id:t.selectedCredentialId,market_type:t.effectiveMarketType});case 3:a=e.v,1===a.code&&a.data?t.balance=(0,c.A)({available:0,total:0},a.data):t.balance={available:0,total:0},e.n=5;break;case 4:e.p=4,i=e.v,t.balance={available:0,total:0,error:String(i.message||i)};case 5:return e.p=5,t.balanceLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},loadPosition:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedCredentialId&&t.currentSymbol){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,v({credential_id:t.selectedCredentialId,symbol:t.currentSymbol,market_type:t.effectiveMarketType});case 2:if(a=e.v,!(1===a.code&&a.data&&a.data.positions&&a.data.positions.length>0)){e.n=3;break}return t.currentPosition=a.data.positions[0],e.a(2,!0);case 3:return t.currentPosition=null,e.a(2,!1);case 4:e.n=6;break;case 5:return e.p=5,e.v,t.currentPosition=null,e.a(2,!1);case 6:return e.a(2)}},e,null,[[1,5]])}))()},loadPositionWithRetry:function(){var t=arguments,e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s,n,c;return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return i=t.length>0&&void 0!==t[0]?t[0]:3,s=t.length>1&&void 0!==t[1]?t[1]:2e3,a.n=1,e.loadPosition();case 1:if(n=a.v,!n){a.n=2;break}return a.a(2);case 2:c=0;case 3:if(!(c0&&(this.amount=Math.floor(this.balance.available*t/100*100)/100)},handleSubmit:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.canSubmit){e.n=1;break}return e.a(2);case 1:return t.submitting=!0,e.p=2,a={credential_id:t.selectedCredentialId,symbol:t.currentSymbol,side:t.side,order_type:t.orderType,amount:t.amount,price:"limit"===t.orderType?t.limitPrice:0,leverage:t.isSwapMode?t.leverage:1,market_type:t.effectiveMarketType,margin_mode:t.isSwapMode?t.marginMode:void 0,tp_price:t.tpPrice||0,sl_price:t.slPrice||0,source:t.source},e.n=3,p(a);case 3:if(i=e.v,1!==i.code){e.n=7;break}return t.$emit("order-success",i.data),e.n=4,t.loadBalance();case 4:return e.n=5,t.loadHistory();case 5:return e.n=6,t.loadPositionWithRetry();case 6:e.n=8;break;case 7:t.$message.error(i.msg||t.$t("quickTrade.orderFailed"));case 8:e.n=10;break;case 9:e.p=9,s=e.v,t.$message.error(s.message||t.$t("quickTrade.orderFailed"));case 10:return e.p=10,t.submitting=!1,e.f(10);case 11:return e.a(2)}},e,null,[[2,9,10,11]])}))()},handleClosePosition:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.currentPosition&&t.selectedCredentialId){e.n=1;break}return e.a(2);case 1:return t.closingPosition=!0,e.p=2,a={credential_id:t.selectedCredentialId,symbol:t.currentSymbol,market_type:t.effectiveMarketType,size:0,source:"manual"},e.n=3,b(a);case 3:if(i=e.v,1!==i.code){e.n=6;break}return t.$message.success(t.$t("quickTrade.positionClosed")),e.n=4,t.loadBalance();case 4:return e.n=5,t.loadHistory();case 5:t.currentPosition=null,setTimeout((0,n.A)((0,r.A)().m(function e(){return(0,r.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.loadPosition();case 1:return e.a(2)}},e)})),2e3),e.n=7;break;case 6:t.$message.error(i.msg||t.$t("quickTrade.orderFailed"));case 7:e.n=9;break;case 8:e.p=8,s=e.v,t.$message.error(s.message||t.$t("quickTrade.orderFailed"));case 9:return e.p=9,t.closingPosition=!1,e.f(9);case 10:return e.a(2)}},e,null,[[2,8,9,10]])}))()},startPolling:function(){var t=this;this.stopPolling(),this.pollTimer=setInterval(function(){t.currentSymbol&&t.loadPrice(),t.selectedCredentialId&&t.currentSymbol&&(t.loadBalance(),t.loadPosition())},1e4)},stopPolling:function(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)},handleClose:function(){this.$emit("close"),this.$emit("update:visible",!1)},handleHistoryCollapse:function(t){this.historyCollapsed=!t.includes("history")},formatPrice:function(t){var e=parseFloat(t||0);return Math.abs(e)>=1e4?e.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0}):Math.abs(e)>=100?e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):Math.abs(e)>=1?e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4}):e.toLocaleString("en-US",{minimumFractionDigits:4,maximumFractionDigits:6})},formatTime:function(t){if(!t)return"";var e=new Date(t),a=function(t){return String(t).padStart(2,"0")};return"".concat(a(e.getMonth()+1),"-").concat(a(e.getDate())," ").concat(a(e.getHours()),":").concat(a(e.getMinutes()))}},beforeDestroy:function(){this.stopPolling()}},_=y,k=a(845),q=(0,k.A)(_,i,s,!1,null,"75b64b85",null),C=q.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/53.feb2b5f5.js b/frontend/dist/js/53.feb2b5f5.js new file mode 100644 index 0000000..005fa59 --- /dev/null +++ b/frontend/dist/js/53.feb2b5f5.js @@ -0,0 +1,18 @@ +(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[53],{66593:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return $a}});var n=function(){var t=this,e=t._self._c;return e("div",{staticClass:"chart-container",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"chart-header"},[e("div",{staticClass:"header-top"},[e("div",{staticClass:"header-left"},[e("div",{staticClass:"search-section"},[e("a-select",{staticClass:"symbol-select",attrs:{"show-search":"",placeholder:t.$t("dashboard.indicator.selectSymbol"),dropdownClassName:"dark-dropdown","filter-option":t.filterSymbolOption,"not-found-content":null,open:t.symbolSearchOpen},on:{search:t.handleSymbolSearch,change:t.handleSymbolSelect,dropdownVisibleChange:t.handleDropdownVisibleChange},model:{value:t.searchSymbol,callback:function(e){t.searchSymbol=e},expression:"searchSymbol"}},[e("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),t._l(t.symbolSuggestions,function(i){return e("a-select-option",{key:i.value,attrs:{value:i.value}},[e("div",{staticClass:"symbol-option"},[e("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:t.getMarketColor(i.market)}},[t._v(" "+t._s(t.getMarketName(i.market))+" ")]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.symbol))]),i.name?e("span",{staticClass:"symbol-name-extra"},[t._v(t._s(i.name))]):t._e()],1)])}),e("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[e("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),e("span",[t._v(t._s(t.$t("dashboard.analysis.watchlist.add")))])],1)])],2)],1),e("div",{staticClass:"timeframe-group"},t._l(["1m","5m","15m","30m","1H","4H","1D","1W"],function(i){return e("div",{key:i,staticClass:"timeframe-item",class:{active:t.timeframe===i},on:{click:function(e){return t.setTimeframe(i)}}},[t._v(" "+t._s(i)+" ")])}),0)]),t.currentSymbol?e("div",{staticClass:"current-symbol"},[e("div",{staticClass:"symbol-info"},[e("span",{staticClass:"symbol-label"},[t._v(t._s(t.currentSymbol))]),e("span",{staticClass:"market-tag"},[t._v(t._s(t.currentMarket))])]),e("div",{staticClass:"price-info",class:t.priceChangeClass},[e("span",{staticClass:"symbol-price"},[t._v(t._s(t.currentPrice))]),e("span",{staticClass:"symbol-change"},[t._v(" "+t._s(t.priceChange>0?"+":"")+t._s(t.priceChange.toFixed(2))+"% ")])]),t.isCryptoMarket?e("a-button",{staticClass:"qt-header-btn",attrs:{size:"small"},on:{click:t.openQuickTrade}},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}}),t._v(" "+t._s(t.$t("quickTrade.openPanel"))+" ")],1):t._e()],1):t._e()])]),e("div",{staticClass:"chart-content"},[e("div",{staticClass:"chart-main-row"},[t.currentSymbol?e("div",{staticClass:"mobile-symbol-price"},[e("div",{staticClass:"mobile-symbol-info"},[e("span",{staticClass:"mobile-market-tag"},[t._v(t._s(t.currentMarket))]),e("span",[t._v("-")]),e("span",{staticClass:"mobile-symbol-label"},[t._v(t._s(t.currentSymbol))])]),e("div",{staticClass:"mobile-price-info",class:t.priceChangeClass},[e("span",{staticClass:"mobile-symbol-price"},[t._v(t._s(t.currentPrice))]),e("span",{staticClass:"mobile-symbol-change"},[t._v(" "+t._s(t.priceChange>0?"+":"")+t._s(t.priceChange.toFixed(2))+"% ")])])]):t._e(),e("kline-chart",{ref:"klineChart",attrs:{symbol:t.currentSymbol,market:t.currentMarket,timeframe:t.timeframe,theme:t.chartTheme,activeIndicators:t.activeIndicators,realtimeEnabled:t.realtimeEnabled},on:{"price-change":t.handlePriceChange,retry:t.handleChartRetry,"indicator-toggle":t.handleIndicatorToggle}}),e("div",{staticClass:"chart-right"},[e("div",{staticClass:"indicators-panel"},[e("div",{staticClass:"panel-header"},[e("span",[t._v(t._s(t.$t("dashboard.indicator.panel.title")))]),e("div",{staticStyle:{display:"flex","align-items":"center","margin-left":"auto",gap:"8px"}},[t.isMobile?e("a-button",{staticClass:"mobile-header-create-btn",attrs:{type:"primary",size:"small",icon:"plus"},on:{click:t.handleCreateIndicator}},[t._v(" "+t._s(t.$t("dashboard.indicator.create"))+" ")]):t._e(),e("a-tooltip",{attrs:{title:t.realtimeEnabled?t.$t("dashboard.indicator.panel.realtimeOn"):t.$t("dashboard.indicator.panel.realtimeOff")}},[e("a-button",{staticClass:"realtime-toggle-btn",class:{active:t.realtimeEnabled},attrs:{type:"text"},on:{click:t.toggleRealtime}},[e("a-icon",{attrs:{type:t.realtimeEnabled?"sync":"pause-circle",spin:t.realtimeEnabled}})],1)],1)],1)]),e("div",{staticClass:"panel-body"},[t.isMobile?[e("div",{staticClass:"mobile-tab-content"},[e("div",{staticClass:"section-content custom-scrollbar"},[t._l(t.customIndicators,function(i){return e("div",{key:"custom-"+i.id,class:["indicator-card",{"indicator-active":t.isIndicatorActive("custom-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"custom")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[t._v(t._s(i.name))]),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.edit")}},[e("a-icon",{staticClass:"action-icon edit-icon",attrs:{type:"edit"},on:{click:function(e){return e.stopPropagation(),t.handleEditIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.delete")}},[e("a-icon",{staticClass:"action-icon delete-icon",attrs:{type:"delete"},on:{click:function(e){return e.stopPropagation(),t.handleDeleteIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.isIndicatorActive("custom-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("custom-"+i.id)}],attrs:{type:t.isIndicatorActive("custom-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"custom")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1),e("a-tooltip",{attrs:{title:i.publish_to_community?t.$t("dashboard.indicator.action.unpublish"):t.$t("dashboard.indicator.action.publish")}},[e("a-icon",{class:["action-icon","publish-icon",{published:i.publish_to_community}],attrs:{type:i.publish_to_community?"cloud":"cloud-upload"},on:{click:function(e){return e.stopPropagation(),t.handlePublishIndicator(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.customIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"info-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.empty")))])],1):t._e()],2)])]:[e("div",{staticClass:"indicator-section",class:{"section-empty":0===t.customIndicators.length}},[e("div",{staticClass:"section-label"},[e("div",{staticClass:"section-label-left",on:{click:t.toggleCustomSection}},[e("a-icon",{staticClass:"collapse-icon",attrs:{type:t.customSectionCollapsed?"right":"down"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.section.myCreated"))+" ("+t._s(t.customIndicators.length)+")")])],1),e("a-button",{staticClass:"create-indicator-btn",attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(e){return e.stopPropagation(),t.handleCreateIndicator.apply(null,arguments)}}},[t._v(" "+t._s(t.$t("dashboard.indicator.create"))+" ")])],1),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.customSectionCollapsed,expression:"!customSectionCollapsed"}],staticClass:"section-content custom-scrollbar"},[t._l(t.customIndicators,function(i){return e("div",{key:"custom-"+i.id,class:["indicator-card",{"indicator-active":t.isIndicatorActive("custom-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"custom")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[t._v(t._s(i.name))]),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.edit")}},[e("a-icon",{staticClass:"action-icon edit-icon",attrs:{type:"edit"},on:{click:function(e){return e.stopPropagation(),t.handleEditIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.delete")}},[e("a-icon",{staticClass:"action-icon delete-icon",attrs:{type:"delete"},on:{click:function(e){return e.stopPropagation(),t.handleDeleteIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.isIndicatorActive("custom-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("custom-"+i.id)}],attrs:{type:t.isIndicatorActive("custom-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"custom")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1),e("a-tooltip",{attrs:{title:i.publish_to_community?t.$t("dashboard.indicator.action.unpublish"):t.$t("dashboard.indicator.action.publish")}},[e("a-icon",{class:["action-icon","publish-icon",{published:i.publish_to_community}],attrs:{type:i.publish_to_community?"cloud":"cloud-upload"},on:{click:function(e){return e.stopPropagation(),t.handlePublishIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.createStrategy")}},[e("a-icon",{staticClass:"action-icon create-strategy-icon",attrs:{type:"rocket"},on:{click:function(e){return e.stopPropagation(),t.handleCreateStrategyFromIndicator(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.customIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"info-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.empty")))])],1):t._e()],2)]),e("div",{staticClass:"indicator-section",class:{"section-empty":0===t.purchasedIndicators.length}},[e("div",{staticClass:"section-label"},[e("div",{staticClass:"section-label-left",on:{click:function(e){t.purchasedSectionCollapsed=!t.purchasedSectionCollapsed}}},[e("a-icon",{staticClass:"collapse-icon",attrs:{type:t.purchasedSectionCollapsed?"right":"down"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.section.purchased"))+" ("+t._s(t.purchasedIndicators.length)+")")])],1),e("a-button",{staticClass:"buy-indicator-btn",attrs:{type:"link",size:"small",icon:"shop"},on:{click:function(e){return e.stopPropagation(),t.goToIndicatorMarket.apply(null,arguments)}}},[t._v(" "+t._s(t.$t("menu.dashboard.community"))+" ")])],1),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.purchasedSectionCollapsed,expression:"!purchasedSectionCollapsed"}],staticClass:"section-content custom-scrollbar"},[t._l(t.purchasedIndicators,function(i){return e("div",{key:"purchased-"+i.id,class:["indicator-card","purchased-indicator",{"indicator-active":t.isIndicatorActive("purchased-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"purchased")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[e("a-icon",{staticClass:"purchased-icon",attrs:{type:"shopping"}}),t._v(" "+t._s(i.name)+" ")],1),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.isIndicatorActive("purchased-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("purchased-"+i.id)}],attrs:{type:t.isIndicatorActive("purchased-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"purchased")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.purchasedIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"shopping"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.emptyPurchased")))])],1):t._e()],2)])]],2)])])],1),e("indicator-editor",{ref:"indicatorEditor",attrs:{visible:t.showIndicatorEditor,indicator:t.editingIndicator,userId:t.userId},on:{run:t.handleRunIndicator,save:t.handleSaveIndicator,cancel:function(e){t.showIndicatorEditor=!1,t.editingIndicator=null}}}),e("a-modal",{attrs:{visible:t.showParamsModal,title:t.$t("dashboard.indicator.paramsConfig.title"),confirmLoading:t.loadingParams,width:500,maskClosable:!1,keyboard:!1},on:{ok:t.confirmIndicatorParams,cancel:t.cancelIndicatorParams,afterClose:t.handleParamsModalAfterClose}},[t.pendingIndicator?e("div",{staticClass:"params-config-modal"},[e("div",{staticClass:"indicator-info"},[e("span",{staticClass:"indicator-name"},[t._v(t._s(t.pendingIndicator.name))])]),e("a-divider"),t.indicatorParams.length>0?e("div",{staticClass:"params-form"},t._l(t.indicatorParams,function(i){return e("div",{key:i.name,staticClass:"param-item"},[e("div",{staticClass:"param-header"},[e("label",{staticClass:"param-label"},[t._v(t._s(i.name))]),i.description?e("a-tooltip",{attrs:{title:i.description}},[e("a-icon",{staticStyle:{color:"#999","margin-left":"4px"},attrs:{type:"question-circle"}})],1):t._e()],1),"int"===i.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0},model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):"float"===i.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4},model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):"bool"===i.type?e("a-switch",{model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):e("a-input",{model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}})],1)}),0):e("a-empty",{attrs:{description:t.$t("dashboard.indicator.paramsConfig.noParams")}})],1):t._e()]),e("a-modal",{attrs:{title:t.publishIndicator&&t.publishIndicator.publish_to_community?t.$t("dashboard.indicator.publish.editTitle"):t.$t("dashboard.indicator.publish.title"),visible:t.showPublishModal,confirmLoading:t.publishing,width:"500px",okText:t.publishIndicator&&t.publishIndicator.publish_to_community?t.$t("dashboard.indicator.publish.update"):t.$t("dashboard.indicator.publish.confirm"),cancelText:t.$t("common.cancel")},on:{ok:t.handleConfirmPublish,cancel:function(e){t.showPublishModal=!1,t.publishIndicator=null}}},[e("a-form-model",{ref:"publishForm",attrs:{model:t.publishForm,rules:t.publishRules,layout:"vertical"}},[e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info","show-icon":"",message:t.$t("dashboard.indicator.publish.hint")}}),e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.pricingType"),prop:"pricingType"}},[e("a-radio-group",{model:{value:t.publishPricingType,callback:function(e){t.publishPricingType=e},expression:"publishPricingType"}},[e("a-radio",{attrs:{value:"free"}},[t._v(t._s(t.$t("dashboard.indicator.publish.free")))]),e("a-radio",{attrs:{value:"paid"}},[t._v(t._s(t.$t("dashboard.indicator.publish.paid")))])],1)],1),"paid"===t.publishPricingType?e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.price"),prop:"price"}},[e("a-input-number",{staticStyle:{width:"200px"},attrs:{min:1,max:1e4,precision:0},model:{value:t.publishPrice,callback:function(e){t.publishPrice=e},expression:"publishPrice"}}),e("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(t.$t("community.credits")))])],1):t._e(),"paid"===t.publishPricingType?e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.vipFree")}},[e("a-switch",{model:{value:t.publishVipFree,callback:function(e){t.publishVipFree=e},expression:"publishVipFree"}}),e("div",{staticStyle:{"margin-top":"6px",color:"rgba(0,0,0,0.45)","font-size":"12px"}},[t._v(" "+t._s(t.$t("dashboard.indicator.publish.vipFreeHint"))+" ")])],1):t._e(),e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.description"),prop:"description"}},[e("a-textarea",{attrs:{placeholder:t.$t("dashboard.indicator.publish.descriptionPlaceholder"),rows:4,maxLength:500},model:{value:t.publishDescription,callback:function(e){t.publishDescription=e},expression:"publishDescription"}})],1),t.publishIndicator&&t.publishIndicator.publish_to_community?e("div",{staticStyle:{"margin-top":"16px"}},[e("a-button",{attrs:{type:"danger",ghost:"",loading:t.unpublishing},on:{click:t.handleUnpublish}},[e("a-icon",{attrs:{type:"close-circle"}}),t._v(" "+t._s(t.$t("dashboard.indicator.publish.unpublish"))+" ")],1)],1):t._e()],1)],1),e("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[e("div",{staticClass:"add-stock-modal-content"},[e("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(e){t.selectedMarketTab=e},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(i){return e("a-tab-pane",{key:i.value,attrs:{tab:t.$t(i.i18nKey||"dashboard.analysis.market.".concat(i.value))}})}),1),e("div",{staticClass:"symbol-search-section"},[e("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(e){t.symbolSearchKeyword=e},expression:"symbolSearchKeyword"}},[e("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?e("div",{staticClass:"search-results-section"},[e("div",{staticClass:"section-title"},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),e("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(i){return e("a-list-item",{staticClass:"symbol-list-item",on:{click:function(e){return t.selectSymbol(i)}}},[e("a-list-item-meta",[e("template",{slot:"title"},[e("div",{staticClass:"symbol-item-content"},[e("span",{staticClass:"symbol-code"},[t._v(t._s(i.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.name))]),i.exchange?e("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(i.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),e("div",{staticClass:"hot-symbols-section"},[e("div",{staticClass:"section-title"},[e("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),e("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?e("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(i){return e("a-list-item",{staticClass:"symbol-list-item",on:{click:function(e){return t.selectSymbol(i)}}},[e("a-list-item-meta",[e("template",{slot:"title"},[e("div",{staticClass:"symbol-item-content"},[e("span",{staticClass:"symbol-code"},[t._v(t._s(i.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.name))]),i.exchange?e("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(i.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):e("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?e("div",{staticClass:"selected-symbol-section"},[e("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(e){t.selectedSymbolForAdd=null}}},[e("template",{slot:"description"},[e("div",{staticClass:"selected-symbol-info"},[e("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),e("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?e("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):e("span",{staticStyle:{color:"#999","margin-left":"8px","font-style":"italic"}},[t._v(t._s(t.$t("dashboard.analysis.modal.addStock.nameWillBeFetched")))])],1)])],2)],1):t._e()],1)])],1),e("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentSymbol&&t.isCryptoMarket?e("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTrade}},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),e("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:"indicator","market-type":"swap"},on:{close:function(e){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}})],1)},a=[],r=(i(62621),i(43898)),o=i(44735),s=i(15863),l=i(81127),c=i(56252),u=(i(6011),i(18787)),d=i(76338),h=(i(74423),i(85471)),p=i(95353),v=i(75769),f=i(35038),g=i(505),m=function(){var t=this,e=t._self._c;return e("div",[e("a-modal",{staticClass:"indicator-editor-modal",style:t.isMobile?{top:0,paddingBottom:0}:{top:"2%"},attrs:{title:t.$t("dashboard.indicator.editor.title"),visible:t.visible,width:t.isMobile?"100%":"95vw",confirmLoading:t.saving,okText:t.$t("dashboard.indicator.editor.save"),cancelText:t.$t("dashboard.indicator.editor.cancel"),maskClosable:!1,centered:!1},on:{ok:t.handleSave,cancel:t.handleCancel,afterClose:t.handleAfterClose}},[e("div",{staticClass:"editor-content"},[e("a-row",{staticClass:"editor-layout",class:{"mobile-layout":t.isMobile},attrs:{gutter:16}},[e("a-col",{staticClass:"code-editor-column",attrs:{span:24,xs:24,sm:24,md:24}},[e("div",{staticClass:"code-section"},[e("div",{staticClass:"section-header"},[e("div",{staticClass:"header-left"},[e("span",{staticClass:"section-title"},[t._v(t._s(t.$t("dashboard.indicator.editor.code")))])]),e("div",{staticClass:"section-actions"},[e("a-button",{staticStyle:{padding:"0 8px",color:"#52c41a","font-weight":"bold"},attrs:{type:"link",size:"small",loading:t.verifying},on:{click:t.handleVerifyCode}},[e("a-icon",{attrs:{type:"check-circle"}}),t._v(" "+t._s(t.$t("dashboard.indicator.editor.verifyCode"))+" ")],1),e("a-button",{staticStyle:{padding:"0"},attrs:{type:"link",size:"small"},on:{click:t.goToDocs}},[e("a-icon",{attrs:{type:"book"}}),t._v(" "+t._s(t.$t("dashboard.indicator.editor.guide"))+" ")],1)],1)]),e("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":"",message:t.$t("dashboard.indicator.boundary.message"),description:t.$t("dashboard.indicator.boundary.indicatorRule")}}),e("div",{staticClass:"code-mode-split"},[e("a-row",{staticClass:"code-mode-row",attrs:{gutter:16}},[e("a-col",{staticClass:"code-pane",attrs:{xs:24,sm:24,md:18}},[e("div",{ref:"codeEditorContainer",staticClass:"code-editor-container"})]),e("a-col",{staticClass:"ai-pane",attrs:{xs:24,sm:24,md:6}},[e("div",{staticClass:"ai-panel"},[e("div",{staticClass:"ai-panel-title"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.editor.aiGenerate")))])],1),e("a-textarea",{attrs:{placeholder:t.$t("dashboard.indicator.editor.aiPromptPlaceholder"),rows:12,"auto-size":{minRows:12,maxRows:20}},model:{value:t.aiPrompt,callback:function(e){t.aiPrompt=e},expression:"aiPrompt"}}),e("a-button",{staticStyle:{"margin-top":"10px"},attrs:{type:"primary",block:"",loading:t.aiGenerating,size:"large"},on:{click:t.handleAIGenerate}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.aiGenerateBtn"))+" ")])],1)])],1)],1)],1)])],1)],1),e("div",{staticClass:"editor-footer",attrs:{slot:"footer"},slot:"footer"},[e("a-button",{on:{click:t.handleCancel}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.cancel"))+" ")]),e("a-button",{attrs:{type:"primary",loading:t.saving},on:{click:t.handleSave}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.save"))+" ")])],1)])],1)},y=[],_=i(57532),b=i(15237),x=i.n(b),w=(i(74806),i(55218),i(97923),i(50436),i(74053)),S=i.n(w),C=i(75314),k={name:"IndicatorEditor",props:{visible:{type:Boolean,default:!1},indicator:{type:Object,default:null},userId:{type:Number,default:null}},data:function(){return{saving:!1,codeEditor:null,aiPrompt:"",aiGenerating:!1,verifying:!1,isMobile:!1}},computed:{},watch:{visible:function(t){var e=this;t?this.$nextTick(function(){setTimeout(function(){!e.codeEditor&&e.$refs.codeEditorContainer&&e.initCodeEditor(),e.initFormData()},200)}):this.codeEditor&&this.codeEditor.refresh()},indicator:{handler:function(t){var e=this;t&&this.visible&&this.$nextTick(function(){setTimeout(function(){e.initFormData()},100)})},deep:!0}},mounted:function(){var t=this;this.checkMobile(),window.addEventListener("resize",this.checkMobile),this.visible&&this.$nextTick(function(){setTimeout(function(){t.initCodeEditor()},100)})},beforeDestroy:function(){if(window.removeEventListener("resize",this.checkMobile),this.codeEditor)try{if("function"===typeof this.codeEditor.toTextArea)this.codeEditor.toTextArea();else if("function"===typeof this.codeEditor.getWrapperElement){var t=this.codeEditor.getWrapperElement();t&&t.parentNode&&t.parentNode.removeChild(t)}}catch(e){}finally{this.codeEditor=null}},methods:{getDefaultIndicatorCode:function(){return'#Demo Code:\n#my_indicator_name = "My Buy/Sell Indicator"\n#my_indicator_description = "Buy/Sell only; execution is normalized in backend."\n\n#df = df.copy()\n#sma = df["close"].rolling(14).mean()\n#buy = (df["close"] > sma) & (df["close"].shift(1) <= sma.shift(1))\n#sell = (df["close"] < sma) & (df["close"].shift(1) >= sma.shift(1))\n#df["buy"] = buy.fillna(False).astype(bool)\n#df["sell"] = sell.fillna(False).astype(bool)\n\n#buy_marks = [df["low"].iloc[i] * 0.995 if df["buy"].iloc[i] else None for i in range(len(df))]\n#sell_marks = [df["high"].iloc[i] * 1.005 if df["sell"].iloc[i] else None for i in range(len(df))]\n\n#output = {\n# "name": my_indicator_name,\n# "plots": [],\n# "signals": [\n# {"type": "buy", "text": "B", "data": buy_marks, "color": "#00E676"},\n# {"type": "sell", "text": "S", "data": sell_marks, "color": "#FF5252"}\n# ]\n#}\n'},checkMobile:function(){this.isMobile=window.innerWidth<=768},goToDocs:function(){window.open("https://github.com/brokermr810/QuantDinger/blob/main/docs/STRATEGY_DEV_GUIDE.md","_blank")},handleVerifyCode:function(){var t=this,e=this.codeEditor?this.codeEditor.getValue():"";e&&e.trim()?(this.verifying=!0,(0,v.Ay)({url:"/api/indicator/verifyCode",method:"post",data:{code:e}}).then(function(e){if(1===e.code){var i=e.data||{};t.$message.success("".concat(t.$t("dashboard.indicator.editor.verifyCodeSuccess")," (").concat(i.plots_count||0," plots, ").concat(i.signals_count||0," signals)"))}else{var n=e.data||{};t.$error({title:t.$t("dashboard.indicator.editor.verifyCodeFailed"),width:600,content:function(t){return t("div",[t("p",{style:{fontWeight:"bold",color:"#ff4d4f"}},e.msg),n.details?t("pre",{style:{background:"#f5f5f5",padding:"8px",overflow:"auto",maxHeight:"300px",marginTop:"8px",fontSize:"12px",fontFamily:"monospace"}},n.details):null])}})}}).catch(function(e){t.$message.error("Request Failed: "+(e.message||"Unknown Error"))}).finally(function(){t.verifying=!1})):this.$message.warning(this.$t("dashboard.indicator.editor.verifyCodeEmpty"))},cleanMarkdownCodeBlocks:function(t){if(!t||"string"!==typeof t)return t;var e=t.trim(),i=/```/.test(e);return i?(e=e.replace(/^```[\w]*\s*\n?/i,""),e.startsWith("```")&&(e=e.replace(/^```\s*\n?/g,"")),e.endsWith("```")&&(e=e.replace(/\n?```\s*$/g,"")),e=e.replace(/^\s*```[\w]*\s*$/gm,""),e=e.replace(/^\s*```\s*$/gm,""),e=e.replace(/\n{3,}/g,"\n\n"),e=e.trim(),e):e},initFormData:function(){var t=this;if(this.visible){var e=this.indicator&&this.indicator.code||"";e&&String(e).trim()||(e=this.getDefaultIndicatorCode()),this.$nextTick(function(){setTimeout(function(){t.aiPrompt="",t.codeEditor&&(t.codeEditor.setValue(e),t.codeEditor.refresh())},50)})}},initCodeEditor:function(){var t=this;if(this.$refs.codeEditorContainer){if(this.codeEditor){try{if("function"===typeof this.codeEditor.toTextArea)this.codeEditor.toTextArea();else if("function"===typeof this.codeEditor.getWrapperElement){var e=this.codeEditor.getWrapperElement();e&&e.parentNode&&e.parentNode.removeChild(e)}}catch(i){}this.codeEditor=null}try{this.$refs.codeEditorContainer.innerHTML="",this.codeEditor=x()(this.$refs.codeEditorContainer,{value:function(){var e=t.indicator&&t.indicator.code||"";return e&&String(e).trim()?e:t.getDefaultIndicatorCode()}(),mode:"python",theme:"eclipse",lineNumbers:!0,lineWrapping:!0,indentUnit:4,indentWithTabs:!1,smartIndent:!0,matchBrackets:!0,autoCloseBrackets:!0,styleActiveLine:!0,foldGutter:!1,gutters:["CodeMirror-linenumbers"],tabSize:4,viewportMargin:1/0}),this.codeEditor.on("change",function(t){t.getValue()}),this.$nextTick(function(){t.codeEditor&&t.codeEditor.refresh()})}catch(n){}}},handleSave:function(){var t=this.codeEditor?this.codeEditor.getValue():"",e=t||"";e.trim()?(this.saving=!0,this.$emit("save",{id:this.indicator?this.indicator.id:0,code:e,userid:this.userId})):this.$message.warning(this.$t("dashboard.indicator.editor.codeRequired"))},handleCancel:function(){this.codeEditor&&this.codeEditor.setValue(""),this.$emit("cancel")},handleAfterClose:function(){var t=this;this.codeEditor&&this.$nextTick(function(){t.codeEditor&&t.codeEditor.refresh()}),this.aiPrompt=""},handleAIGenerate:function(){var t=this;return(0,c.A)((0,l.A)().m(function e(){var i,n,a,r,o,s,c,u,d,h,p,v,f,g,m,y,b,x,w,k,I,E,A,P,M;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt&&t.aiPrompt.trim()){e.n=1;break}return t.$message.warning(t.$t("dashboard.indicator.editor.aiPromptRequired")),e.a(2);case 1:return t.aiGenerating=!0,i="",t.codeEditor&&(i=t.codeEditor.getValue()||""),t.codeEditor&&(t.codeEditor.setValue("# AI generating...\n"),t.codeEditor.refresh()),n="",e.p=2,a="/api/indicator/aiGenerate",r=S().get(C.Xh),o={prompt:t.aiPrompt.trim()},i.trim()&&(o.existingCode=i.trim()),e.n=3,fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:r?"Bearer ".concat(r):"","Access-Token":r||"",Token:r||""},body:JSON.stringify(o),credentials:"include"});case 3:if(s=e.v,s.ok){e.n=5;break}return e.n=4,s.text().catch(function(){return""});case 4:throw c=e.v,new Error(c||"HTTP error! status: ".concat(s.status));case 5:if(s.body&&"function"===typeof s.body.getReader){e.n=6;break}throw new Error("AI 服务未返回可读取的流(response.body 不存在)");case 6:u=s.body.getReader(),d=new TextDecoder,h="";case 7:return e.n=8,u.read();case 8:if(p=e.v,v=p.done,f=p.value,!v){e.n=9;break}return e.a(3,21);case 9:h+=d.decode(f,{stream:!0}),g=h.split("\n\n"),h=g.pop()||"",m=(0,_.A)(g),e.p=10,m.s();case 11:if((y=m.n()).done){e.n=17;break}if(b=y.value,b.trim()&&b.startsWith("data: ")){e.n=12;break}return e.a(3,16);case 12:if(x=b.substring(6),"[DONE]"!==x){e.n=13;break}return e.a(3,17);case 13:if(e.p=13,w=JSON.parse(x),!w.error){e.n=14;break}throw new Error(w.error);case 14:w.content&&(n+=w.content,k=t.cleanMarkdownCodeBlocks(n),t.codeEditor&&(t.codeEditor.setValue(k),I=t.codeEditor.lineCount(),t.codeEditor.setCursor({line:I-1,ch:0}),t.codeEditor.refresh())),e.n=16;break;case 15:e.p=15,e.v;case 16:e.n=11;break;case 17:e.n=19;break;case 18:e.p=18,P=e.v,m.e(P);case 19:return e.p=19,m.f(),e.f(19);case 20:e.n=7;break;case 21:t.codeEditor&&n?(E=t.cleanMarkdownCodeBlocks(n),t.codeEditor.setValue(E),t.codeEditor.refresh(),t.$message.success(t.$t("dashboard.indicator.editor.aiGenerateSuccess"))):n||t.$message.warning("未生成任何代码,请尝试更详细的提示词"),e.n=23;break;case 22:e.p=22,M=e.v,t.$message.error(M.message||t.$t("dashboard.indicator.editor.aiGenerateError")),n&&t.codeEditor&&(A=t.cleanMarkdownCodeBlocks(n),t.codeEditor.setValue(A));case 23:return e.p=23,t.aiGenerating=!1,e.f(23);case 24:return e.a(2)}},e,null,[[13,15],[10,18,19,20],[2,22,23,24]])}))()}}},I=k,E=i(845),A=(0,E.A)(I,m,y,!1,null,"4fea1865",null),P=A.exports,M=function(){var t=this,e=t._self._c;return e("div",{staticClass:"chart-left",class:{"theme-dark":"dark"===t.chartTheme}},[e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"drawing-toolbar"},[t._l(t.drawingTools,function(i){return e("a-tooltip",{key:i.name,attrs:{title:i.title,placement:"right"}},[e("div",{staticClass:"drawing-tool-btn",class:{active:t.activeDrawingTool===i.name},on:{click:function(e){return t.selectDrawingTool(i.name)}}},[e("a-icon",{attrs:{type:i.icon}})],1)])}),e("a-divider",{attrs:{type:"vertical"}}),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.drawing.clearAll"),placement:"right"}},[e("div",{staticClass:"drawing-tool-btn",on:{click:t.clearAllDrawings}},[e("a-icon",{attrs:{type:"delete"}})],1)])],2),e("div",{staticClass:"chart-content-area"},[e("div",{staticClass:"indicator-toolbar"},t._l(t.indicatorButtons,function(i){return e("div",{key:i.id,staticClass:"indicator-btn",class:{active:t.isIndicatorActive(i.id)},attrs:{title:i.name},on:{click:function(e){return t.toggleIndicator(i)}}},[t._v(" "+t._s(i.shortName)+" ")])}),0),e("div",{staticClass:"kline-chart-container",attrs:{id:"kline-chart-container"}})]),t.loading?e("div",{staticClass:"chart-overlay"},[e("a-spin",{attrs:{size:"large"}},[e("a-icon",{staticStyle:{"font-size":"24px",color:"#13c2c2"},attrs:{slot:"indicator",type:"loading",spin:""},slot:"indicator"})],1)],1):t._e(),t.error?e("div",{staticClass:"chart-overlay"},[e("div",{staticClass:"error-box"},[e("a-icon",{staticStyle:{"font-size":"24px",color:"#ef5350","margin-bottom":"10px"},attrs:{type:"warning"}}),e("span",[t._v(t._s(t.error))]),e("a-button",{staticStyle:{"margin-top":"12px"},attrs:{type:"primary",size:"small",ghost:""},on:{click:t.handleRetry}},[t._v(" "+t._s(t.$t("dashboard.indicator.retry"))+" ")])],1)]):t._e(),t.pyodideLoadFailed?e("div",{staticClass:"chart-overlay pyodide-warning"},[e("div",{staticClass:"warning-box"},[e("a-icon",{staticStyle:{"font-size":"32px",color:"#faad14","margin-bottom":"12px"},attrs:{type:"warning"}}),e("div",{staticClass:"warning-title"},[t._v(t._s(t.$t("dashboard.indicator.warning.pyodideLoadFailed")))]),e("div",{staticClass:"warning-desc"},[t._v(t._s(t.$t("dashboard.indicator.warning.pyodideLoadFailedDesc")))])],1)]):t._e(),t.symbol||t.loading||t.error||t.pyodideLoadFailed?t._e():e("div",{staticClass:"chart-overlay initial-hint"},[e("div",{staticClass:"hint-box"},[e("a-icon",{staticStyle:{"font-size":"48px",color:"#1890ff","margin-bottom":"16px"},attrs:{type:"line-chart"}}),e("div",{staticClass:"hint-title"},[t._v(t._s(t.$t("dashboard.indicator.hint.selectSymbol")))]),e("div",{staticClass:"hint-desc"},[t._v(t._s(t.$t("dashboard.indicator.hint.selectSymbolDesc")))])],1)])])])},D=[],T=i(21560),B=i(26297),F=i(2403),R=function(t,e){return R=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},R(t,e)};function L(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function i(){this.constructor=t}R(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}var N,O,z,V,W,H,$,K,Y,X=function(){return X=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0&&a[a.length-1])&&(6===s[0]||2===s[0])){r=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Z(t,e){var i="function"===typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,a,r=i.call(t),o=[];try{while((void 0===e||e-- >0)&&!(n=r.next()).done)o.push(n.value)}catch(s){a={error:s}}finally{try{n&&!n.done&&(i=r["return"])&&i.call(r)}finally{if(a)throw a.error}}return o}function q(t,e,i){if(i||2===arguments.length)for(var n,a=0,r=e.length;a1e9)return"".concat(+(e/1e9).toFixed(3),"B");if(e>1e6)return"".concat(+(e/1e6).toFixed(3),"M");if(e>1e3)return"".concat(+(e/1e3).toFixed(3),"K")}return"".concat(t)}function zt(t,e){var i="".concat(t);if(0===e.length)return i;if(i.includes(".")){var n=i.split(".");return"".concat(n[0].replace(/(\d)(?=(\d{3})+$)/g,function(t){return"".concat(t).concat(e)}),".").concat(n[1])}return i.replace(/(\d)(?=(\d{3})+$)/g,function(t){return"".concat(t).concat(e)})}function Vt(t,e){var i="".concat(t),n=new RegExp("\\.0{"+e+",}[1-9][0-9]*$");if(n.test(i)){var a=i.split("."),r=a[a.length-1],o=r.match(/0*/);if(At(o)){var s=o[0].length;return a[a.length-1]=r.replace(/0*/,"0{".concat(s,"}")),a.join(".")}}return i}function Wt(t){var e,i,n;return null!==(n=null===(i=null===(e=t.ownerDocument)||void 0===e?void 0:e.defaultView)||void 0===i?void 0:i.devicePixelRatio)&&void 0!==n?n:1}function Ht(t,e,i){return"".concat(null!==e&&void 0!==e?e:"normal"," ").concat(null!==t&&void 0!==t?t:12,"px ").concat(null!==i&&void 0!==i?i:"Helvetica Neue")}function $t(t,e,i,n){if(!At(Dt)){var a=document.createElement("canvas"),r=Wt(a);Dt=a.getContext("2d"),Dt.scale(r,r)}return Dt.font=Ht(e,i,n),Math.round(Dt.measureText(t).width)}(function(t){t["OnDataReady"]="onDataReady",t["OnZoom"]="onZoom",t["OnScroll"]="onScroll",t["OnVisibleRangeChange"]="onVisibleRangeChange",t["OnTooltipIconClick"]="onTooltipIconClick",t["OnCrosshairChange"]="onCrosshairChange",t["OnCandleBarClick"]="onCandleBarClick",t["OnPaneDrag"]="onPaneDrag"})(Tt||(Tt={}));var Kt,Yt,Xt=function(){function t(){this._callbacks=[]}return t.prototype.subscribe=function(t){var e,i=null!==(e=this._callbacks.indexOf(t))&&void 0!==e?e:-1;i<0&&this._callbacks.push(t)},t.prototype.unsubscribe=function(t){var e;if(kt(t)){var i=null!==(e=this._callbacks.indexOf(t))&&void 0!==e?e:-1;i>-1&&this._callbacks.splice(i,1)}else this._callbacks=[]},t.prototype.execute=function(t){this._callbacks.forEach(function(e){e(t)})},t.prototype.isEmpty=function(){return 0===this._callbacks.length},t}();function jt(t,e,i,n,a){var r,o=e.result,s=e.figures,l=e.styles,c=Rt(l,"circles",n.circles),u=c.length,d=Rt(l,"bars",n.bars),h=d.length,p=Rt(l,"lines",n.lines),v=p.length,f=0,g=0,m=0,y=0;s.forEach(function(s){var l;switch(s.type){case"circle":y=f;var _=c[f%u];r=X(X({},_),{color:_.noChangeColor}),f++;break;case"bar":y=g;var b=d[g%h];r=X(X({},b),{color:b.noChangeColor}),g++;break;case"line":y=m,r=p[m%v],m++;break}if(At(r)){var x={prev:{kLineData:t[i-1],indicatorData:o[i-1]},current:{kLineData:t[i],indicatorData:o[i]},next:{kLineData:t[i+1],indicatorData:o[i+1]}},w=null===(l=s.styles)||void 0===l?void 0:l.call(s,x,e,n);a(s,X(X({},r),w),y)}})}(function(t){t["Init"]="init",t["Forward"]="forward",t["Backward"]="backward"})(Kt||(Kt={})),function(t){t["Normal"]="normal",t["Price"]="price",t["Volume"]="volume"}(Yt||(Yt={}));var Ut,Gt=function(){function t(t){this.result=[],this._precisionFlag=!1;var e=t.name,i=t.shortName,n=t.series,a=t.calcParams,r=t.figures,o=t.precision,s=t.shouldOhlc,l=t.shouldFormatBigNumber,c=t.visible,u=t.zLevel,d=t.minValue,h=t.maxValue,p=t.styles,v=t.extendData,f=t.regenerateFigures,g=t.createTooltipDataSource,m=t.draw;this.name=e,this.shortName=null!==i&&void 0!==i?i:e,this.series=null!==n&&void 0!==n?n:Yt.Normal,this.precision=null!==o&&void 0!==o?o:4,this.calcParams=null!==a&&void 0!==a?a:[],this.figures=null!==r&&void 0!==r?r:[],this.shouldOhlc=null!==s&&void 0!==s&&s,this.shouldFormatBigNumber=null!==l&&void 0!==l&&l,this.visible=null===c||void 0===c||c,this.zLevel=null!==u&&void 0!==u?u:0,this.minValue=null!==d&&void 0!==d?d:null,this.maxValue=null!==h&&void 0!==h?h:null,this.styles=St(null!==p&&void 0!==p?p:{}),this.extendData=v,this.regenerateFigures=null!==f&&void 0!==f?f:null,this.createTooltipDataSource=null!==g&&void 0!==g?g:null,this.draw=null!==m&&void 0!==m?m:null}return t.prototype.setShortName=function(t){return this.shortName!==t&&(this.shortName=t,!0)},t.prototype.setSeries=function(t){return this.series!==t&&(this.series=t,!0)},t.prototype.setPrecision=function(t,e){var i=null!==e&&void 0!==e&&e,n=Math.floor(t);return!(!(n!==this.precision&&t>=0)||i&&(!i||this._precisionFlag))&&(this.precision=n,i||(this._precisionFlag=!0),!0)},t.prototype.setCalcParams=function(t){var e,i;return this.calcParams=t,this.figures=null!==(i=null===(e=this.regenerateFigures)||void 0===e?void 0:e.call(this,t))&&void 0!==i?i:this.figures,!0},t.prototype.setShouldOhlc=function(t){return this.shouldOhlc!==t&&(this.shouldOhlc=t,!0)},t.prototype.setShouldFormatBigNumber=function(t){return this.shouldFormatBigNumber!==t&&(this.shouldFormatBigNumber=t,!0)},t.prototype.setVisible=function(t){return this.visible!==t&&(this.visible=t,!0)},t.prototype.setZLevel=function(t){return this.zLevel!==t&&(this.zLevel=t,!0)},t.prototype.setStyles=function(t){return wt(this.styles,t),!0},t.prototype.setExtendData=function(t){return this.extendData!==t&&(this.extendData=t,!0)},t.prototype.setFigures=function(t){return this.figures!==t&&(this.figures=t,!0)},t.prototype.setMinValue=function(t){return this.minValue!==t&&(this.minValue=t,!0)},t.prototype.setMaxValue=function(t){return this.maxValue!==t&&(this.maxValue=t,!0)},t.prototype.setRegenerateFigures=function(t){return this.regenerateFigures!==t&&(this.regenerateFigures=t,!0)},t.prototype.setCreateTooltipDataSource=function(t){return this.createTooltipDataSource!==t&&(this.createTooltipDataSource=t,!0)},t.prototype.setDraw=function(t){return this.draw!==t&&(this.draw=t,!0)},t.prototype.calcIndicator=function(t){return j(this,void 0,void 0,function(){var e;return U(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this.calc(t,this)];case 1:return e=i.sent(),this.result=e,[2,!0];case 2:return i.sent(),[2,!1];case 3:return[2]}})})},t.extend=function(e){var i=function(t){function i(){return t.call(this,e)||this}return L(i,t),i.prototype.calc=function(t,i){return e.calc(t,i)},i}(t);return i},t}();function Zt(){return["mouseClickEvent","mouseDoubleClickEvent","mouseRightClickEvent","tapEvent","doubleTapEvent","mouseDownEvent","touchStartEvent","mouseMoveEvent","touchMoveEvent"]}(function(t){t["Normal"]="normal",t["WeakMagnet"]="weak_magnet",t["StrongMagnet"]="strong_magnet"})(Ut||(Ut={}));var qt,Jt=1,Qt=-1,te="overlay_",ee="overlay_figure_",ie=function(){function t(t){this.currentStep=Jt,this.points=[],this._prevPressedPoint=null,this._prevPressedPoints=[];var e=t.mode,i=t.modeSensitivity,n=t.extendData,a=t.styles,r=t.name,o=t.totalStep,s=t.lock,l=t.visible,c=t.zLevel,u=t.needDefaultPointFigure,d=t.needDefaultXAxisFigure,h=t.needDefaultYAxisFigure,p=t.createPointFigures,v=t.createXAxisFigures,f=t.createYAxisFigures,g=t.performEventPressedMove,m=t.performEventMoveForDrawing,y=t.onDrawStart,_=t.onDrawing,b=t.onDrawEnd,x=t.onClick,w=t.onDoubleClick,S=t.onRightClick,C=t.onPressedMoveStart,k=t.onPressedMoving,I=t.onPressedMoveEnd,E=t.onMouseEnter,A=t.onMouseLeave,P=t.onRemoved,M=t.onSelected,D=t.onDeselected;this.name=r,this.totalStep=!Et(o)||o<2?1:o,this.lock=null!==s&&void 0!==s&&s,this.visible=null===l||void 0===l||l,this.zLevel=null!==c&&void 0!==c?c:0,this.needDefaultPointFigure=null!==u&&void 0!==u&&u,this.needDefaultXAxisFigure=null!==d&&void 0!==d&&d,this.needDefaultYAxisFigure=null!==h&&void 0!==h&&h,this.mode=null!==e&&void 0!==e?e:Ut.Normal,this.modeSensitivity=null!==i&&void 0!==i?i:8,this.extendData=n,this.styles=St(null!==a&&void 0!==a?a:{}),this.createPointFigures=null!==p&&void 0!==p?p:null,this.createXAxisFigures=null!==v&&void 0!==v?v:null,this.createYAxisFigures=null!==f&&void 0!==f?f:null,this.performEventPressedMove=null!==g&&void 0!==g?g:null,this.performEventMoveForDrawing=null!==m&&void 0!==m?m:null,this.onDrawStart=null!==y&&void 0!==y?y:null,this.onDrawing=null!==_&&void 0!==_?_:null,this.onDrawEnd=null!==b&&void 0!==b?b:null,this.onClick=null!==x&&void 0!==x?x:null,this.onDoubleClick=null!==w&&void 0!==w?w:null,this.onRightClick=null!==S&&void 0!==S?S:null,this.onPressedMoveStart=null!==C&&void 0!==C?C:null,this.onPressedMoving=null!==k&&void 0!==k?k:null,this.onPressedMoveEnd=null!==I&&void 0!==I?I:null,this.onMouseEnter=null!==E&&void 0!==E?E:null,this.onMouseLeave=null!==A&&void 0!==A?A:null,this.onRemoved=null!==P&&void 0!==P?P:null,this.onSelected=null!==M&&void 0!==M?M:null,this.onDeselected=null!==D&&void 0!==D?D:null}return t.prototype.setId=function(t){return!Mt(this.id)&&(this.id=t,!0)},t.prototype.setGroupId=function(t){return!Mt(this.groupId)&&(this.groupId=t,!0)},t.prototype.setPaneId=function(t){this.paneId=t},t.prototype.setExtendData=function(t){return t!==this.extendData&&(this.extendData=t,!0)},t.prototype.setStyles=function(t){return wt(this.styles,t),!0},t.prototype.setPoints=function(t){if(t.length>0){var e=void 0;if(this.points=q([],Z(t),!1),t.length>=this.totalStep-1?(this.currentStep=Qt,e=this.totalStep-1):(this.currentStep=t.length+1,e=t.length),null!==this.performEventMoveForDrawing)for(var i=0;is?n=r:a=r,o<=2)break}return n}function ve(t){var e=Math.floor(ye(t)),i=_e(e),n=t/i,a=0;return a=n<1.5?1:n<2.5?2:n<3.5?3:n<4.5?4:n<5.5?5:n<6.5?6:8,t=a*i,e>=-20?+t.toFixed(e<0?-e:0):t}function fe(t,e){null==e&&(e=10),e=Math.min(Math.max(0,e),20);var i=(+t).toFixed(e);return+i}function ge(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var a=e.indexOf(".");return a<0?0:e.length-1-a}function me(t,e,i){var n=[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER];return t.forEach(function(t){var a,r;n[0]=Math.max(null!==(a=t[e])&&void 0!==a?a:t,n[0]),n[1]=Math.min(null!==(r=t[i])&&void 0!==r?r:t,n[1])}),n}function ye(t){return Math.log(t)/Math.log(10)}function _e(t){return Math.pow(10,t)}function be(){return{from:0,to:0,realFrom:0,realTo:0}}var xe={MIN:1,MAX:50},we=8,Se=80,Ce=.88,ke=10,Ie=function(){function t(t){this._dateTimeFormat=this._buildDateTimeFormat(),this._zoomEnabled=!0,this._scrollEnabled=!0,this._totalBarSpace=0,this._barSpace=we,this._offsetRightDistance=Se,this._startLastBarRightSideDiffBarCount=0,this._scrollLimitRole=0,this._minVisibleBarCount={left:2,right:2},this._maxOffsetDistance={left:50,right:50},this._visibleRange=be(),this._chartStore=t,this._gapBarSpace=this._calcGapBarSpace(),this._lastBarRightSideDiffBarCount=this._offsetRightDistance/this._barSpace}return t.prototype._calcGapBarSpace=function(){var t;return this._barSpace>3?t=Math.floor(this._barSpace*Ce):(t=Math.floor(this._barSpace),t===this._barSpace&&t--),t%2===0&&t--,t=Math.max(1,t),t},t.prototype.adjustVisibleRange=function(){var t,e,i,n,a=this._chartStore.getDataList(),r=a.length,o=this._totalBarSpace/this._barSpace;1===this._scrollLimitRole?(i=(this._totalBarSpace-this._maxOffsetDistance.right)/this._barSpace,n=(this._totalBarSpace-this._maxOffsetDistance.left)/this._barSpace):(i=this._minVisibleBarCount.left,n=this._minVisibleBarCount.right),i=Math.max(0,i),n=Math.max(0,n);var s=o-Math.min(i,r);this._lastBarRightSideDiffBarCount>s&&(this._lastBarRightSideDiffBarCount=s);var l=-r+Math.min(n,r);this._lastBarRightSideDiffBarCountr&&(c=r);var d=Math.round(c-o)-1;d<0&&(d=0);var h=this._lastBarRightSideDiffBarCount>0?Math.round(r+this._lastBarRightSideDiffBarCount-o)-1:d;if(this._visibleRange={from:d,to:c,realFrom:h,realTo:u},this._chartStore.getActionStore().execute(Tt.OnVisibleRangeChange,this._visibleRange),this._chartStore.adjustVisibleDataList(),0===d){var p=a[0];this._chartStore.executeLoadMoreCallback(null!==(t=null===p||void 0===p?void 0:p.timestamp)&&void 0!==t?t:null),this._chartStore.executeLoadDataCallback({type:Kt.Forward,data:null!==p&&void 0!==p?p:null})}c===r&&this._chartStore.executeLoadDataCallback({type:Kt.Backward,data:null!==(e=a[r-1])&&void 0!==e?e:null})},t.prototype.getDateTimeFormat=function(){return this._dateTimeFormat},t.prototype._buildDateTimeFormat=function(t){var e={hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"};Mt(t)&&(e.timeZone=t);var i=null;try{i=new Intl.DateTimeFormat("en",e)}catch(n){_t("","","Timezone is error!!!")}return i},t.prototype.setTimezone=function(t){var e=this._buildDateTimeFormat(t);null!==e&&(this._dateTimeFormat=e)},t.prototype.getTimezone=function(){return this._dateTimeFormat.resolvedOptions().timeZone},t.prototype.getBarSpace=function(){return{bar:this._barSpace,halfBar:this._barSpace/2,gapBar:this._gapBarSpace,halfGapBar:Math.floor(this._gapBarSpace/2)}},t.prototype.setBarSpace=function(t,e){txe.MAX||this._barSpace===t||(this._barSpace=t,this._gapBarSpace=this._calcGapBarSpace(),null===e||void 0===e||e(),this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0))},t.prototype.setTotalBarSpace=function(t){return this._totalBarSpace!==t&&(this._totalBarSpace=t,this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0)),this},t.prototype.setOffsetRightDistance=function(t,e){return this._offsetRightDistance=1===this._scrollLimitRole?Math.min(this._maxOffsetDistance.right,t):t,this._lastBarRightSideDiffBarCount=this._offsetRightDistance/this._barSpace,null!==e&&void 0!==e&&e&&(this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0)),this},t.prototype.resetOffsetRightDistance=function(){this.setOffsetRightDistance(this._offsetRightDistance)},t.prototype.getInitialOffsetRightDistance=function(){return this._offsetRightDistance},t.prototype.getOffsetRightDistance=function(){return Math.max(0,this._lastBarRightSideDiffBarCount*this._barSpace)},t.prototype.getLastBarRightSideDiffBarCount=function(){return this._lastBarRightSideDiffBarCount},t.prototype.setLastBarRightSideDiffBarCount=function(t){return this._lastBarRightSideDiffBarCount=t,this},t.prototype.setMaxOffsetLeftDistance=function(t){return this._scrollLimitRole=1,this._maxOffsetDistance.left=t,this},t.prototype.setMaxOffsetRightDistance=function(t){return this._scrollLimitRole=1,this._maxOffsetDistance.right=t,this},t.prototype.setLeftMinVisibleBarCount=function(t){return this._scrollLimitRole=0,this._minVisibleBarCount.left=t,this},t.prototype.setRightMinVisibleBarCount=function(t){return this._scrollLimitRole=0,this._minVisibleBarCount.right=t,this},t.prototype.getVisibleRange=function(){return this._visibleRange},t.prototype.startScroll=function(){this._startLastBarRightSideDiffBarCount=this._lastBarRightSideDiffBarCount},t.prototype.scroll=function(t){if(this._scrollEnabled){var e=t/this._barSpace,i=this._lastBarRightSideDiffBarCount*this._barSpace;this._lastBarRightSideDiffBarCount=this._startLastBarRightSideDiffBarCount-e,this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0);var n=Math.round(i-this._lastBarRightSideDiffBarCount*this._barSpace);0!==n&&this._chartStore.getActionStore().execute(Tt.OnScroll,{distance:n})}},t.prototype.getDataByDataIndex=function(t){var e;return null!==(e=this._chartStore.getDataList()[t])&&void 0!==e?e:null},t.prototype.coordinateToFloatIndex=function(t){var e=this._chartStore.getDataList().length,i=(this._totalBarSpace-t)/this._barSpace,n=e+this._lastBarRightSideDiffBarCount-i;return Math.round(1e6*n)/1e6},t.prototype.dataIndexToTimestamp=function(t){var e,i=this.getDataByDataIndex(t);return null!==(e=null===i||void 0===i?void 0:i.timestamp)&&void 0!==e?e:null},t.prototype.timestampToDataIndex=function(t){var e=this._chartStore.getDataList();return 0===e.length?0:pe(e,"timestamp",t)},t.prototype.dataIndexToCoordinate=function(t){var e=this._chartStore.getDataList().length,i=e+this._lastBarRightSideDiffBarCount-t;return Math.floor(this._totalBarSpace-(i-.5)*this._barSpace)},t.prototype.coordinateToDataIndex=function(t){return Math.ceil(this.coordinateToFloatIndex(t))-1},t.prototype.zoom=function(t,e){var i,n=this;if(this._zoomEnabled){var a=null!==e&&void 0!==e?e:null;if(!Et(null===a||void 0===a?void 0:a.x)){var r=this._chartStore.getTooltipStore().getCrosshair();a={x:null!==(i=null===r||void 0===r?void 0:r.x)&&void 0!==i?i:this._totalBarSpace/2}}var o=a.x,s=this.coordinateToFloatIndex(o),l=this._barSpace,c=this._barSpace+t*(this._barSpace/ke);this.setBarSpace(c,function(){n._lastBarRightSideDiffBarCount+=s-n.coordinateToFloatIndex(o)});var u=this._barSpace/l;1!==u&&this._chartStore.getActionStore().execute(Tt.OnZoom,{scale:u})}},t.prototype.setZoomEnabled=function(t){return this._zoomEnabled=t,this},t.prototype.getZoomEnabled=function(){return this._zoomEnabled},t.prototype.setScrollEnabled=function(t){return this._scrollEnabled=t,this},t.prototype.getScrollEnabled=function(){return this._scrollEnabled},t.prototype.clear=function(){this._visibleRange=be()},t}(),Ee={name:"AVP",shortName:"AVP",series:Yt.Price,precision:2,figures:[{key:"avp",title:"AVP: ",type:"line"}],calc:function(t){var e=0,i=0;return t.map(function(t){var n,a,r={},o=null!==(n=null===t||void 0===t?void 0:t.turnover)&&void 0!==n?n:0,s=null!==(a=null===t||void 0===t?void 0:t.volume)&&void 0!==a?a:0;return e+=o,i+=s,0!==i&&(r.avp=e/i),r})}},Ae={name:"AO",shortName:"AO",calcParams:[5,34],figures:[{key:"ao",title:"AO: ",type:"bar",baseValue:0,styles:function(t,e,i){var n,a,r,o,s,l=t.prev,c=t.current,u=null!==(a=null===(n=l.indicatorData)||void 0===n?void 0:n.ao)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,d=null!==(o=null===(r=c.indicatorData)||void 0===r?void 0:r.ao)&&void 0!==o?o:Number.MIN_SAFE_INTEGER;s=d>u?Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):Rt(e.styles,"bars[0].downColor",i.bars[0].downColor);var h=d>u?O.Stroke:O.Fill;return{color:s,style:h,borderColor:s}}}],calc:function(t,e){var i=e.calcParams,n=Math.max(i[0],i[1]),a=0,r=0,o=0,s=0;return t.map(function(e,l){var c={},u=(e.low+e.high)/2;if(a+=u,r+=u,l>=i[0]-1){o=a/i[0];var d=t[l-(i[0]-1)];a-=(d.low+d.high)/2}if(l>=i[1]-1){s=r/i[1];d=t[l-(i[1]-1)];r-=(d.low+d.high)/2}return l>=n-1&&(c.ao=o-s),c})}},Pe={name:"BIAS",shortName:"BIAS",calcParams:[6,12,24],figures:[{key:"bias1",title:"BIAS6: ",type:"line"},{key:"bias2",title:"BIAS12: ",type:"line"},{key:"bias3",title:"BIAS24: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"bias".concat(e+1),title:"BIAS".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[];return t.map(function(e,r){var o={},s=e.close;return i.forEach(function(e,l){var c;if(a[l]=(null!==(c=a[l])&&void 0!==c?c:0)+s,r>=e-1){var u=a[l]/i[l];o[n[l].key]=(s-u)/u*100,a[l]-=t[r-(e-1)].close}}),o})}};function Me(t,e){var i=t.length,n=0;return t.forEach(function(t){var i=t.close-e;n+=i*i}),n=Math.abs(n),Math.sqrt(n/i)}var De={name:"BOLL",shortName:"BOLL",series:Yt.Price,calcParams:[20,2],precision:2,shouldOhlc:!0,figures:[{key:"up",title:"UP: ",type:"line"},{key:"mid",title:"MID: ",type:"line"},{key:"dn",title:"DN: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=i[0]-1,a=0;return t.map(function(e,r){var o=e.close,s={};if(a+=o,r>=n){s.mid=a/i[0];var l=Me(t.slice(r-n,r+1),s.mid);s.up=s.mid+i[1]*l,s.dn=s.mid-i[1]*l,a-=t[r-n].close}return s})}},Te={name:"BRAR",shortName:"BRAR",calcParams:[26],figures:[{key:"br",title:"BR: ",type:"line"},{key:"ar",title:"AR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0;return t.map(function(e,s){var l,c,u={},d=e.high,h=e.low,p=e.open,v=(null!==(l=t[s-1])&&void 0!==l?l:e).close;if(r+=d-p,o+=p-h,n+=d-v,a+=v-h,s>=i[0]-1){u.ar=0!==o?r/o*100:0,u.br=0!==a?n/a*100:0;var f=t[s-(i[0]-1)],g=f.high,m=f.low,y=f.open,_=(null!==(c=t[s-i[0]])&&void 0!==c?c:t[s-(i[0]-1)]).close;n-=g-_,a-=_-m,r-=g-y,o-=y-m}return u})}},Be={name:"BBI",shortName:"BBI",series:Yt.Price,precision:2,calcParams:[3,6,12,24],shouldOhlc:!0,figures:[{key:"bbi",title:"BBI: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.max.apply(Math,q([],Z(i),!1)),a=[],r=[];return t.map(function(e,o){var s={},l=e.close;if(i.forEach(function(e,i){var n;a[i]=(null!==(n=a[i])&&void 0!==n?n:0)+l,o>=e-1&&(r[i]=a[i]/e,a[i]-=t[o-(e-1)].close)}),o>=n-1){var c=0;r.forEach(function(t){c+=t}),s.bbi=c/4}return s})}},Fe={name:"CCI",shortName:"CCI",calcParams:[20],figures:[{key:"cci",title:"CCI: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=i[0]-1,a=0,r=[];return t.map(function(e,o){var s={},l=(e.high+e.low+e.close)/3;if(a+=l,r.push(l),o>=n){var c=a/i[0],u=r.slice(o-n,o+1),d=0;u.forEach(function(t){d+=Math.abs(t-c)});var h=d/i[0];s.cci=0!==h?(l-c)/h/.015:0;var p=(t[o-n].high+t[o-n].low+t[o-n].close)/3;a-=p}return s})}},Re={name:"CR",shortName:"CR",calcParams:[26,10,20,40,60],figures:[{key:"cr",title:"CR: ",type:"line"},{key:"ma1",title:"MA1: ",type:"line"},{key:"ma2",title:"MA2: ",type:"line"},{key:"ma3",title:"MA3: ",type:"line"},{key:"ma4",title:"MA4: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.ceil(i[1]/2.5+1),a=Math.ceil(i[2]/2.5+1),r=Math.ceil(i[3]/2.5+1),o=Math.ceil(i[4]/2.5+1),s=0,l=[],c=0,u=[],d=0,h=[],p=0,v=[],f=[];return t.forEach(function(e,g){var m,y,_,b,x,w={},S=null!==(m=t[g-1])&&void 0!==m?m:e,C=(S.high+S.close+S.low+S.open)/4,k=Math.max(0,e.high-C),I=Math.max(0,C-e.low);g>=i[0]-1&&(w.cr=0!==I?k/I*100:0,s+=w.cr,c+=w.cr,d+=w.cr,p+=w.cr,g>=i[0]+i[1]-2&&(l.push(s/i[1]),g>=i[0]+i[1]+n-3&&(w.ma1=l[l.length-1-n]),s-=null!==(y=f[g-(i[1]-1)].cr)&&void 0!==y?y:0),g>=i[0]+i[2]-2&&(u.push(c/i[2]),g>=i[0]+i[2]+a-3&&(w.ma2=u[u.length-1-a]),c-=null!==(_=f[g-(i[2]-1)].cr)&&void 0!==_?_:0),g>=i[0]+i[3]-2&&(h.push(d/i[3]),g>=i[0]+i[3]+r-3&&(w.ma3=h[h.length-1-r]),d-=null!==(b=f[g-(i[3]-1)].cr)&&void 0!==b?b:0),g>=i[0]+i[4]-2&&(v.push(p/i[4]),g>=i[0]+i[4]+o-3&&(w.ma4=v[v.length-1-o]),p-=null!==(x=f[g-(i[4]-1)].cr)&&void 0!==x?x:0)),f.push(w)}),f}},Le={name:"DMA",shortName:"DMA",calcParams:[10,50,10],figures:[{key:"dma",title:"DMA: ",type:"line"},{key:"ama",title:"AMA: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.max(i[0],i[1]),a=0,r=0,o=0,s=[];return t.forEach(function(e,l){var c,u={},d=e.close;a+=d,r+=d;var h=0,p=0;if(l>=i[0]-1&&(h=a/i[0],a-=t[l-(i[0]-1)].close),l>=i[1]-1&&(p=r/i[1],r-=t[l-(i[1]-1)].close),l>=n-1){var v=h-p;u.dma=v,o+=v,l>=n+i[2]-2&&(u.ama=o/i[2],o-=null!==(c=s[l-(i[2]-1)].dma)&&void 0!==c?c:0)}s.push(u)}),s}},Ne={name:"DMI",shortName:"DMI",calcParams:[14,6],figures:[{key:"pdi",title:"PDI: ",type:"line"},{key:"mdi",title:"MDI: ",type:"line"},{key:"adx",title:"ADX: ",type:"line"},{key:"adxr",title:"ADXR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0,s=0,l=0,c=0,u=0,d=[];return t.forEach(function(e,h){var p,v,f={},g=null!==(p=t[h-1])&&void 0!==p?p:e,m=g.close,y=e.high,_=e.low,b=y-_,x=Math.abs(y-m),w=Math.abs(m-_),S=y-g.high,C=g.low-_,k=Math.max(Math.max(b,x),w),I=S>0&&S>C?S:0,E=C>0&&C>S?C:0;if(n+=k,a+=I,r+=E,h>=i[0]-1){h>i[0]-1?(o=o-o/i[0]+k,s=s-s/i[0]+I,l=l-l/i[0]+E):(o=n,s=a,l=r);var A=0,P=0;0!==o&&(A=100*s/o,P=100*l/o),f.pdi=A,f.mdi=P;var M=0;P+A!==0&&(M=Math.abs(P-A)/(P+A)*100),c+=M,h>=2*i[0]-2&&(u=h>2*i[0]-2?(u*(i[0]-1)+M)/i[0]:c/i[0],f.adx=u,h>=2*i[0]+i[1]-3&&(f.adxr=((null!==(v=d[h-(i[1]-1)].adx)&&void 0!==v?v:0)+u)/2))}d.push(f)}),d}},Oe={name:"EMV",shortName:"EMV",calcParams:[14,9],figures:[{key:"emv",title:"EMV: ",type:"line"},{key:"maEmv",title:"MAEMV: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=[];return t.map(function(e,r){var o,s={};if(r>0){var l=t[r-1],c=e.high,u=e.low,d=null!==(o=e.volume)&&void 0!==o?o:0,h=(c+u)/2-(l.high+l.low)/2;if(0===d||c-u===0)s.emv=0;else{var p=d/1e8/(c-u);s.emv=h/p}n+=s.emv,a.push(s.emv),r>=i[0]&&(s.maEmv=n/i[0],n-=a[r-i[0]])}return s})}},ze={name:"EMA",shortName:"EMA",series:Yt.Price,calcParams:[6,12,20],precision:2,shouldOhlc:!0,figures:[{key:"ema1",title:"EMA6: ",type:"line"},{key:"ema2",title:"EMA12: ",type:"line"},{key:"ema3",title:"EMA20: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"ema".concat(e+1),title:"EMA".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=0,r=[];return t.map(function(t,e){var o={},s=t.close;return a+=s,i.forEach(function(t,i){e>=t-1&&(r[i]=e>t-1?(2*s+(t-1)*r[i])/(t+1):a/t,o[n[i].key]=r[i])}),o})}},Ve={name:"MTM",shortName:"MTM",calcParams:[12,6],figures:[{key:"mtm",title:"MTM: ",type:"line"},{key:"maMtm",title:"MAMTM: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=[];return t.forEach(function(e,r){var o,s={};if(r>=i[0]){var l=e.close,c=t[r-i[0]].close;s.mtm=l-c,n+=s.mtm,r>=i[0]+i[1]-1&&(s.maMtm=n/i[1],n-=null!==(o=a[r-(i[1]-1)].mtm)&&void 0!==o?o:0)}a.push(s)}),a}},We={name:"MA",shortName:"MA",series:Yt.Price,calcParams:[5,10,30,60],precision:2,shouldOhlc:!0,figures:[{key:"ma5",title:"MA5: ",type:"line"},{key:"ma10",title:"MA10: ",type:"line"},{key:"ma30",title:"MA30: ",type:"line"},{key:"ma60",title:"MA60: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"ma".concat(e+1),title:"MA".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[];return t.map(function(e,r){var o={},s=e.close;return i.forEach(function(e,i){var l;a[i]=(null!==(l=a[i])&&void 0!==l?l:0)+s,r>=e-1&&(o[n[i].key]=a[i]/e,a[i]-=t[r-(e-1)].close)}),o})}},He={name:"MACD",shortName:"MACD",calcParams:[12,26,9],figures:[{key:"dif",title:"DIF: ",type:"line"},{key:"dea",title:"DEA: ",type:"line"},{key:"macd",title:"MACD: ",type:"bar",baseValue:0,styles:function(t,e,i){var n,a,r,o,s,l=t.prev,c=t.current,u=null!==(a=null===(n=l.indicatorData)||void 0===n?void 0:n.macd)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,d=null!==(o=null===(r=c.indicatorData)||void 0===r?void 0:r.macd)&&void 0!==o?o:Number.MIN_SAFE_INTEGER;s=d>0?Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):d<0?Rt(e.styles,"bars[0].downColor",i.bars[0].downColor):Rt(e.styles,"bars[0].noChangeColor",i.bars[0].noChangeColor);var h=u=a[0]-1&&(i=e>a[0]-1?(2*d+(a[0]-1)*i)/(a[0]+1):r/a[0]),e>=a[1]-1&&(n=e>a[1]-1?(2*d+(a[1]-1)*n)/(a[1]+1):r/a[1]),e>=c-1&&(o=i-n,u.dif=o,s+=o,e>=c+a[2]-2&&(l=e>c+a[2]-2?(2*o+l*(a[2]-1))/(a[2]+1):s/a[2],u.macd=2*(o-l),u.dea=l)),u})}},$e={name:"OBV",shortName:"OBV",calcParams:[30],figures:[{key:"obv",title:"OBV: ",type:"line"},{key:"maObv",title:"MAOBV: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=[];return t.forEach(function(e,o){var s,l,c,u,d=null!==(s=t[o-1])&&void 0!==s?s:e;e.closed.close&&(a+=null!==(c=e.volume)&&void 0!==c?c:0);var h={obv:a};n+=a,o>=i[0]-1&&(h.maObv=n/i[0],n-=null!==(u=r[o-(i[0]-1)].obv)&&void 0!==u?u:0),r.push(h)}),r}},Ke={name:"PVT",shortName:"PVT",figures:[{key:"pvt",title:"PVT: ",type:"line"}],calc:function(t){var e=0;return t.map(function(i,n){var a,r,o={},s=i.close,l=null!==(a=i.volume)&&void 0!==a?a:1,c=(null!==(r=t[n-1])&&void 0!==r?r:i).close,u=0,d=c*l;return 0!==d&&(u=(s-c)/d),e+=u,o.pvt=e,o})}},Ye={name:"PSY",shortName:"PSY",calcParams:[12,6],figures:[{key:"psy",title:"PSY: ",type:"line"},{key:"maPsy",title:"MAPSY: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=[],o=[];return t.forEach(function(e,s){var l,c,u={},d=(null!==(l=t[s-1])&&void 0!==l?l:e).close,h=e.close-d>0?1:0;r.push(h),n+=h,s>=i[0]-1&&(u.psy=n/i[0]*100,a+=u.psy,s>=i[0]+i[1]-2&&(u.maPsy=a/i[1],a-=null!==(c=o[s-(i[1]-1)].psy)&&void 0!==c?c:0),n-=r[s-(i[0]-1)]),o.push(u)}),o}},Xe={name:"ROC",shortName:"ROC",calcParams:[12,6],figures:[{key:"roc",title:"ROC: ",type:"line"},{key:"maRoc",title:"MAROC: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=[],a=0;return t.forEach(function(e,r){var o,s,l={};if(r>=i[0]-1){var c=e.close,u=(null!==(o=t[r-i[0]])&&void 0!==o?o:t[r-(i[0]-1)]).close;l.roc=0!==u?(c-u)/u*100:0,a+=l.roc,r>=i[0]-1+i[1]-1&&(l.maRoc=a/i[1],a-=null!==(s=n[r-(i[1]-1)].roc)&&void 0!==s?s:0)}n.push(l)}),n}},je={name:"RSI",shortName:"RSI",calcParams:[6,12,24],figures:[{key:"rsi1",title:"RSI1: ",type:"line"},{key:"rsi2",title:"RSI2: ",type:"line"},{key:"rsi3",title:"RSI3: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){var i=e+1;return{key:"rsi".concat(i),title:"RSI".concat(i,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[],r=[];return t.map(function(e,o){var s,l={},c=(null!==(s=t[o-1])&&void 0!==s?s:e).close,u=e.close-c;return i.forEach(function(e,i){var s,c,d;if(u>0?a[i]=(null!==(s=a[i])&&void 0!==s?s:0)+u:r[i]=(null!==(c=r[i])&&void 0!==c?c:0)+Math.abs(u),o>=e-1){0!==r[i]?l[n[i].key]=100-100/(1+a[i]/r[i]):l[n[i].key]=0;var h=t[o-(e-1)],p=null!==(d=t[o-e])&&void 0!==d?d:h,v=h.close-p.close;v>0?a[i]-=v:r[i]-=Math.abs(v)}}),l})}},Ue={name:"SMA",shortName:"SMA",series:Yt.Price,calcParams:[12,2],precision:2,figures:[{key:"sma",title:"SMA: ",type:"line"}],shouldOhlc:!0,calc:function(t,e){var i=e.calcParams,n=0,a=0;return t.map(function(t,e){var r={},o=t.close;return n+=o,e>=i[0]-1&&(a=e>i[0]-1?(o*i[1]+a*(i[0]-i[1]+1))/(i[0]+1):n/i[0],r.sma=a),r})}},Ge={name:"KDJ",shortName:"KDJ",calcParams:[9,3,3],figures:[{key:"k",title:"K: ",type:"line"},{key:"d",title:"D: ",type:"line"},{key:"j",title:"J: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=[];return t.forEach(function(e,a){var r,o,s,l,c={},u=e.close;if(a>=i[0]-1){var d=me(t.slice(a-(i[0]-1),a+1),"high","low"),h=d[0],p=d[1],v=h-p,f=(u-p)/(0===v?1:v)*100;c.k=((i[1]-1)*(null!==(o=null===(r=n[a-1])||void 0===r?void 0:r.k)&&void 0!==o?o:50)+f)/i[1],c.d=((i[2]-1)*(null!==(l=null===(s=n[a-1])||void 0===s?void 0:s.d)&&void 0!==l?l:50)+c.k)/i[2],c.j=3*c.k-2*c.d}n.push(c)}),n}},Ze={name:"SAR",shortName:"SAR",series:Yt.Price,calcParams:[2,2,20],precision:2,shouldOhlc:!0,figures:[{key:"sar",title:"SAR: ",type:"circle",styles:function(t,e,i){var n,a,r=t.current,o=null!==(a=null===(n=r.indicatorData)||void 0===n?void 0:n.sar)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,s=r.kLineData,l=((null===s||void 0===s?void 0:s.high)+(null===s||void 0===s?void 0:s.low))/2,c=oe.low?(c=s,o=n,s=-100,l=!l):c>p&&(c=p)}else{(-100===s||s>h)&&(s=h,o=Math.min(o+a,r)),c=u+o*(s-u);var v=Math.max(t[Math.max(1,i)-1].high,d);c=r[0]-1&&(i=e>r[0]-1?(2*p+(r[0]-1)*i)/(r[0]+1):o/r[0],s+=i,e>=2*r[0]-2&&(n=e>2*r[0]-2?(2*i+(r[0]-1)*n)/(r[0]+1):s/r[0],l+=n,e>=3*r[0]-3))){var v=void 0,f=0;e>3*r[0]-3?(v=(2*n+(r[0]-1)*a)/(r[0]+1),f=(v-a)/a*100):v=l/r[0],a=v,h.trix=f,c+=f,e>=3*r[0]+r[1]-4&&(h.maTrix=c/r[1],c-=null!==(d=u[e-(r[1]-1)].trix)&&void 0!==d?d:0)}u.push(h)}),u}};function Je(){return{key:"volume",title:"VOLUME: ",type:"bar",baseValue:0,styles:function(t,e,i){var n=t.current.kLineData,a=Rt(e.styles,"bars[0].noChangeColor",i.bars[0].noChangeColor);return At(n)&&(n.close>n.open?a=Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):n.close=e-1&&(l[n[i].key]=a[i]/e,a[i]-=null!==(c=t[r-(e-1)].volume)&&void 0!==c?c:0)}),l})}},ti={name:"VR",shortName:"VR",calcParams:[26,6],figures:[{key:"vr",title:"VR: ",type:"line"},{key:"maVr",title:"MAVR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0,s=[];return t.forEach(function(e,l){var c,u,d,h,p,v={},f=e.close,g=(null!==(c=t[l-1])&&void 0!==c?c:e).close,m=null!==(u=e.volume)&&void 0!==u?u:0;if(f>g?n+=m:f=i[0]-1){var y=r/2;v.vr=a+y===0?0:(n+y)/(a+y)*100,o+=v.vr,l>=i[0]+i[1]-2&&(v.maVr=o/i[1],o-=null!==(d=s[l-(i[1]-1)].vr)&&void 0!==d?d:0);var _=t[l-(i[0]-1)],b=null!==(h=t[l-i[0]])&&void 0!==h?h:_,x=_.close,w=null!==(p=_.volume)&&void 0!==p?p:0;x>b.close?n-=w:x=s){var l=me(t.slice(a-s,a+1),"high","low"),c=l[0],u=l[1],d=c-u;r[n[i].key]=0===d?0:(o-c)/d*100}}),r})}},ii={},ni=[Ee,Ae,Pe,De,Te,Be,Fe,Re,Le,Ne,Oe,ze,Ve,We,He,$e,Ke,Ye,Xe,je,Ue,Ge,Ze,qe,Qe,ti,ei];function ai(t){ii[t.name]=Gt.extend(t)}function ri(t){var e;return null!==(e=ii[t])&&void 0!==e?e:null}ni.forEach(function(t){ii[t.name]=Gt.extend(t)});var oi=function(){function t(t){this._instances=new Map,this._chartStore=t}return t.prototype._overrideInstance=function(t,e){var i=e.shortName,n=e.series,a=e.calcParams,r=e.precision,o=e.figures,s=e.minValue,l=e.maxValue,c=e.shouldOhlc,u=e.shouldFormatBigNumber,d=e.visible,h=e.zLevel,p=e.styles,v=e.extendData,f=e.regenerateFigures,g=e.createTooltipDataSource,m=e.draw,y=e.calc,_=!1;Mt(i)&&t.setShortName(i)&&(_=!0),At(n)&&t.setSeries(n)&&(_=!0);var b=!1;Ct(a)&&t.setCalcParams(a)&&(_=!0,b=!0),Ct(o)&&t.setFigures(o)&&(_=!0,b=!0),void 0!==s&&t.setMinValue(s)&&(_=!0),void 0!==l&&t.setMinValue(l)&&(_=!0),Et(r)&&t.setPrecision(r)&&(_=!0),Pt(c)&&t.setShouldOhlc(c)&&(_=!0),Pt(u)&&t.setShouldFormatBigNumber(u)&&(_=!0),Pt(d)&&t.setVisible(d)&&(_=!0);var x=!1;return Et(h)&&t.setZLevel(h)&&(_=!0,x=!0),At(p)&&t.setStyles(p)&&(_=!0),void 0!==v&&t.setExtendData(v)&&(_=!0,b=!0),void 0!==f&&t.setRegenerateFigures(f)&&(_=!0),void 0!==g&&t.setCreateTooltipDataSource(g)&&(_=!0),void 0!==m&&t.setDraw(m)&&(_=!0),kt(y)&&(t.calc=y,b=!0),[_,b,x]},t.prototype._sort=function(t){var e;Mt(t)?null===(e=this._instances.get(t))||void 0===e||e.sort(function(t,e){return t.zLevel-e.zLevel}):this._instances.forEach(function(t){t.sort(function(t,e){return t.zLevel-e.zLevel})})},t.prototype.addInstance=function(t,e,i){return j(this,void 0,void 0,function(){var n,a,r,o,s;return U(this,function(l){switch(l.label){case 0:return n=t.name,a=this._instances.get(e),At(a)?(r=a.find(function(t){return t.name===n}),At(r)?[4,Promise.reject(new Error("Duplicate indicators."))]:[3,2]):[3,2];case 1:return[2,l.sent()];case 2:return At(a)||(a=[]),o=ri(n),s=new o,this.synchronizeSeriesPrecision(s),this._overrideInstance(s,t),i||(a=[]),a.push(s),this._instances.set(e,a),this._sort(e),[4,s.calcIndicator(this._chartStore.getDataList())];case 3:return[2,l.sent()]}})})},t.prototype.getInstances=function(t){var e;return null!==(e=this._instances.get(t))&&void 0!==e?e:[]},t.prototype.removeInstance=function(t,e){var i,n=!1,a=this._instances.get(t);if(At(a)){if(Mt(e)){var r=a.findIndex(function(t){return t.name===e});r>-1&&(a.splice(r,1),n=!0)}else this._instances.set(t,[]),n=!0;0===(null===(i=this._instances.get(t))||void 0===i?void 0:i.length)&&this._instances.delete(t)}return n},t.prototype.hasInstances=function(t){return this._instances.has(t)},t.prototype.calcInstance=function(t,e){return j(this,void 0,void 0,function(){var i,n,a,r,o=this;return U(this,function(s){switch(s.label){case 0:return i=[],Mt(t)?Mt(e)?(n=this._instances.get(e),At(n)&&(a=n.find(function(e){return e.name===t}),At(a)&&i.push(a.calcIndicator(this._chartStore.getDataList())))):this._instances.forEach(function(e){var n=e.find(function(e){return e.name===t});At(n)&&i.push(n.calcIndicator(o._chartStore.getDataList()))}):this._instances.forEach(function(t){t.forEach(function(t){i.push(t.calcIndicator(o._chartStore.getDataList()))})}),[4,Promise.all(i)];case 1:return r=s.sent(),[2,r.includes(!0)]}})})},t.prototype.getInstanceByPaneId=function(t,e){var i,n,a=function(t){var e=new Map;return t.forEach(function(t){e.set(t.name,t)}),e};if(Mt(t)){var r=null!==(i=this._instances.get(t))&&void 0!==i?i:[];return Mt(e)?null!==(n=null===r||void 0===r?void 0:r.find(function(t){return t.name===e}))&&void 0!==n?n:null:a(r)}var o=new Map;return this._instances.forEach(function(t,e){o.set(e,a(t))}),o},t.prototype.synchronizeSeriesPrecision=function(t){var e=this._chartStore.getPrecision(),i=e.price,n=e.volume,a=function(t){switch(t.series){case Yt.Price:t.setPrecision(i,!0);break;case Yt.Volume:t.setPrecision(n,!0);break}};At(t)?a(t):this._instances.forEach(function(t){t.forEach(function(t){a(t)})})},t.prototype.override=function(t,e){return j(this,void 0,void 0,function(){var i,n,a,r,o,s,l,c=this;return U(this,function(u){switch(u.label){case 0:return i=t.name,n=new Map,null!==e?(a=this._instances.get(e),At(a)&&n.set(e,a)):n=this._instances,r=!1,o=[],s=!1,n.forEach(function(e){var n=e.find(function(t){return t.name===i});if(At(n)){var a=c._overrideInstance(n,t);a[2]&&(s=!0),a[1]?o.push(n.calcIndicator(c._chartStore.getDataList())):a[0]&&(r=!0)}}),s&&this._sort(),[4,Promise.all(o)];case 1:return l=u.sent(),[2,[r,l.includes(!0)]]}})})},t}(),si=function(){function t(t){this._crosshair={},this._activeIcon=null,this._chartStore=t}return t.prototype.setCrosshair=function(t,e){var i,n,a=null!==e&&void 0!==e?e:{},r=a.notInvalidate,o=a.notExecuteAction,s=this._chartStore.getDataList(),l=null!==t&&void 0!==t?t:{};Et(l.x)?(i=this._chartStore.getTimeScaleStore().coordinateToDataIndex(l.x),n=i<0?0:i>s.length-1?s.length-1:i):(i=s.length-1,n=i);var c=s[n],u=this._chartStore.getTimeScaleStore().dataIndexToCoordinate(i),d={x:this._crosshair.x,y:this._crosshair.y,paneId:this._crosshair.paneId};this._crosshair=X(X({},l),{realX:u,kLineData:c,realDataIndex:i,dataIndex:n}),d.x===l.x&&d.y===l.y&&d.paneId===l.paneId||(null===c||null!==o&&void 0!==o&&o||this._chartStore.getChart().crosshairChange(this._crosshair),null!==r&&void 0!==r&&r||this._chartStore.getChart().updatePane(1))},t.prototype.recalculateCrosshair=function(t){this.setCrosshair(this._crosshair,{notInvalidate:t})},t.prototype.getCrosshair=function(){return this._crosshair},t.prototype.setActiveIcon=function(t){this._activeIcon=null!==t&&void 0!==t?t:null},t.prototype.getActiveIcon=function(){return this._activeIcon},t.prototype.clear=function(){this.setCrosshair({},{notInvalidate:!0}),this.setActiveIcon()},t}(),li={name:"fibonacciLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e,i=t.coordinates,n=t.bounding,a=t.overlay,r=t.precision,o=t.thousandsSeparator,s=t.decimalFoldThreshold,l=t.yAxis,c=a.points;if(i.length>0){var u=null===(e=null===l||void 0===l?void 0:l.isInCandle())||void 0===e||e?r.price:r.excludePriceVolumeMax,d=[],h=[],p=0,v=n.width;if(i.length>1&&Et(c[0].value)&&Et(c[1].value)){var f=[1,.786,.618,.5,.382,.236,0],g=i[0].y-i[1].y,m=c[0].value-c[1].value;f.forEach(function(t){var e,n=i[1].y+g*t,a=Vt(zt(((null!==(e=c[1].value)&&void 0!==e?e:0)+m*t).toFixed(u),o),s);d.push({coordinates:[{x:p,y:n},{x:v,y:n}]}),h.push({x:p,y:n,text:"".concat(a," (").concat((100*t).toFixed(1),"%)"),baseline:"bottom"})})}return[{type:"line",attrs:d},{type:"text",isCheckEvent:!1,attrs:h}]}return[]}},ci={name:"horizontalRayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding,n={x:0,y:e[0].y};return At(e[1])&&e[0].x-1)for(var a=n;a>-1;a--)if(this._children[a].dispatchEvent(t,e,i))return!0;return this.onEvent(t,e,i)},t.prototype.addChild=function(t){return this._children.push(t),this},t.prototype.clear=function(){this._children=[]},t}(),pi=2,vi=function(t){function e(e){var i=t.call(this)||this;return i.attrs=e.attrs,i.styles=e.styles,i}return L(e,t),e.prototype.checkEventOn=function(t){return this.checkEventOnImp(t,this.attrs,this.styles)},e.prototype.setAttrs=function(t){return this.attrs=t,this},e.prototype.setStyles=function(t){return this.styles=t,this},e.prototype.draw=function(t){this.drawImp(t,this.attrs,this.styles)},e.extend=function(t){var i=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return L(i,e),i.prototype.checkEventOnImp=function(e,i,n){return t.checkEventOn(e,i,n)},i.prototype.drawImp=function(e,i,n){t.draw(e,i,n)},i}(e);return i},e}(hi);function fi(t,e){var i=[];i=i.concat(e);for(var n=0;n1)for(var r=1;r0&&i<1?i:0:i?.5:0;if(a>0&&n>2){for(var r=e[0].x,o=e[0].y,s=1;s1&&(2!==i.length||i[0].x!==i[1].x&&i[0].y!==i[1].y?(t.save(),c%2===1&&t.translate(.5,.5),t.beginPath(),t.moveTo(i[0].x,i[0].y),_i(t,i,s),t.stroke(),t.closePath(),t.restore()):(t.beginPath(),i[0].x===i[1].x?(t.moveTo(i[0].x+v,i[0].y),t.lineTo(i[1].x+v,i[1].y)):(t.moveTo(i[0].x,i[0].y+v),t.lineTo(i[1].x,i[1].y+v)),t.stroke(),t.closePath()))})}var xi={name:"line",checkEventOn:fi,draw:function(t,e,i){bi(t,e,i)}};function wi(t,e,i){var n=null!==i&&void 0!==i?i:0,a=[];if(t.length>1)if(t[0].x===t[1].x){var r=0,o=e.height;if(a.push({coordinates:[{x:t[0].x,y:r},{x:t[0].x,y:o}]}),t.length>2){a.push({coordinates:[{x:t[2].x,y:r},{x:t[2].x,y:o}]});for(var s=t[0].x-t[2].x,l=0;l2){var f=t[2].y-p*t[2].x;a.push({coordinates:[{x:u,y:u*p+f},{x:d,y:d*p+f}]});for(s=v-f,l=0;l1){var i=void 0;return i=t[0].x===t[1].x&&t[0].y!==t[1].y?t[0].yt[1].x?{x:0,y:mi(t[0],t[1],{x:0,y:t[0].y})}:{x:e.width,y:mi(t[0],t[1],{x:e.width,y:t[0].y})},{coordinates:[t[0],i]}}return[]}var Ei={name:"rayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;return[{type:"line",attrs:Ii(e,i)}]}},Ai={name:"segment",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates;return 2===e.length?[{type:"line",attrs:{coordinates:e}}]:[]}},Pi={name:"straightLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;return 2===e.length?e[0].x===e[1].x?[{type:"line",attrs:{coordinates:[{x:e[0].x,y:0},{x:e[0].x,y:i.height}]}}]:[{type:"line",attrs:{coordinates:[{x:0,y:mi(e[0],e[1],{x:0,y:e[0].y})},{x:i.width,y:mi(e[0],e[1],{x:i.width,y:e[0].y})}]}}]:[]}},Mi={name:"verticalRayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;if(2===e.length){var n={x:e[0].x,y:0};return e[0].y0&&l.set(e[0],n)};try{for(var u=G(this._instances),d=u.next();!d.done;d=u.next()){var h=d.value;c(h)}}catch(v){e={error:v}}finally{try{d&&!d.done&&(i=u.return)&&i.call(u)}finally{if(e)throw e.error}}this._instances=l}else this._instances.forEach(function(t,e){r.push(e),t.forEach(function(t){var e;null===(e=t.onRemoved)||void 0===e||e.call(t,{overlay:t})})}),this._instances.clear();if(r.length>0){var p=this._chartStore.getChart();r.forEach(function(t){p.updatePane(1,t)}),p.updatePane(1,Wi.X_AXIS)}},t.prototype.setPressedInstanceInfo=function(t){this._pressedInstanceInfo=t},t.prototype.getPressedInstanceInfo=function(){return this._pressedInstanceInfo},t.prototype.updatePointPosition=function(t,e){if(t>0){var i=this._chartStore.getDataList();this._instances.forEach(function(n){n.forEach(function(n){var a=n.points;a.forEach(function(n){if(!At(n.timestamp)&&At(n.dataIndex)){e===Kt.Forward&&(n.dataIndex=n.dataIndex+t);var a=i[n.dataIndex];n.timestamp=null===a||void 0===a?void 0:a.timestamp}})})})}},t.prototype.setHoverInstanceInfo=function(t,e){var i,n,a=this._hoverInstanceInfo,r=a.instance,o=a.figureType,s=a.figureKey,l=a.figureIndex;if(((null===r||void 0===r?void 0:r.id)!==(null===(i=t.instance)||void 0===i?void 0:i.id)||o!==t.figureType||l!==t.figureIndex)&&(this._hoverInstanceInfo=t,(null===r||void 0===r?void 0:r.id)!==(null===(n=t.instance)||void 0===n?void 0:n.id))){var c=!1,u=!1;null!==r&&(u=!0,kt(r.onMouseLeave)&&(r.onMouseLeave(X({overlay:r,figureKey:s,figureIndex:l},e)),c=!0)),null!==t.instance&&(u=!0,kt(t.instance.onMouseEnter)&&(t.instance.onMouseEnter(X({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e)),c=!0)),u&&this._sort(),c||this._chartStore.getChart().updatePane(1)}},t.prototype.getHoverInstanceInfo=function(){return this._hoverInstanceInfo},t.prototype.setClickInstanceInfo=function(t,e){var i,n,a,r,o,s,l,c,u,d=this._clickInstanceInfo,h=d.paneId,p=d.instance,v=d.figureType,f=d.figureKey,g=d.figureIndex;if(null!==(n=null===(i=t.instance)||void 0===i?void 0:i.isDrawing())&&void 0!==n&&n||null===(r=null===(a=t.instance)||void 0===a?void 0:a.onClick)||void 0===r||r.call(a,X({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e)),((null===p||void 0===p?void 0:p.id)!==(null===(o=t.instance)||void 0===o?void 0:o.id)||v!==t.figureType||g!==t.figureIndex)&&(this._clickInstanceInfo=t,(null===p||void 0===p?void 0:p.id)!==(null===(s=t.instance)||void 0===s?void 0:s.id))){null===(l=null===p||void 0===p?void 0:p.onDeselected)||void 0===l||l.call(p,X({overlay:p,figureKey:f,figureIndex:g},e)),null===(u=null===(c=t.instance)||void 0===c?void 0:c.onSelected)||void 0===u||u.call(c,X({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e));var m=this._chartStore.getChart();m.updatePane(1,t.paneId),h!==t.paneId&&m.updatePane(1,h),m.updatePane(1,Wi.X_AXIS)}},t.prototype.getClickInstanceInfo=function(){return this._clickInstanceInfo},t.prototype.isEmpty=function(){return 0===this._instances.size&&null===this._progressInstanceInfo},t.prototype.isDrawing=function(){var t,e;return null!==this._progressInstanceInfo&&null!==(e=null===(t=this._progressInstanceInfo)||void 0===t?void 0:t.instance.isDrawing())&&void 0!==e&&e},t}(),$i=function(){function t(){this._actions=new Map}return t.prototype.execute=function(t,e){var i;null===(i=this._actions.get(t))||void 0===i||i.execute(e)},t.prototype.subscribe=function(t,e){var i;this._actions.has(t)||this._actions.set(t,new Xt),null===(i=this._actions.get(t))||void 0===i||i.subscribe(e)},t.prototype.unsubscribe=function(t,e){var i=this._actions.get(t);At(i)&&(i.unsubscribe(e),i.isEmpty()&&this._actions.delete(t))},t.prototype.has=function(t){var e=this._actions.get(t);return At(e)&&!e.isEmpty()},t}(),Ki={grid:{horizontal:{color:"#EDEDED"},vertical:{color:"#EDEDED"}},candle:{priceMark:{high:{color:"#76808F"},low:{color:"#76808F"}},tooltip:{rect:{color:"#FEFEFE",borderColor:"#F2F3F5"},text:{color:"#76808F"}}},indicator:{tooltip:{text:{color:"#76808F"}}},xAxis:{axisLine:{color:"#DDDDDD"},tickText:{color:"#76808F"},tickLine:{color:"#DDDDDD"}},yAxis:{axisLine:{color:"#DDDDDD"},tickText:{color:"#76808F"},tickLine:{color:"#DDDDDD"}},separator:{color:"#DDDDDD"},crosshair:{horizontal:{line:{color:"#76808F"},text:{borderColor:"#686D76",backgroundColor:"#686D76"}},vertical:{line:{color:"#76808F"},text:{borderColor:"#686D76",backgroundColor:"#686D76"}}}},Yi={grid:{horizontal:{color:"#292929"},vertical:{color:"#292929"}},candle:{priceMark:{high:{color:"#929AA5"},low:{color:"#929AA5"}},tooltip:{rect:{color:"rgba(10, 10, 10, .6)",borderColor:"rgba(10, 10, 10, .6)"},text:{color:"#929AA5"}}},indicator:{tooltip:{text:{color:"#929AA5"}}},xAxis:{axisLine:{color:"#333333"},tickText:{color:"#929AA5"},tickLine:{color:"#333333"}},yAxis:{axisLine:{color:"#333333"},tickText:{color:"#929AA5"},tickLine:{color:"#333333"}},separator:{color:"#333333"},crosshair:{horizontal:{line:{color:"#929AA5"},text:{borderColor:"#373a40",backgroundColor:"#373a40"}},vertical:{line:{color:"#929AA5"},text:{borderColor:"#373a40",backgroundColor:"#373a40"}}}},Xi={light:Ki,dark:Yi};function ji(t){var e;return null!==(e=Xi[t])&&void 0!==e?e:null}var Ui=function(){function t(t,e){this._styles=gt(),this._customApi=ne(),this._locale=ae,this._precision={price:2,volume:0},this._thousandsSeparator=",",this._decimalFoldThreshold=3,this._dataList=[],this._loadMoreCallback=null,this._loadDataCallback=null,this._loading=!0,this._forwardMore=!0,this._backwardMore=!0,this._timeScaleStore=new Ie(this),this._indicatorStore=new oi(this),this._overlayStore=new Hi(this),this._tooltipStore=new si(this),this._actionStore=new $i,this._visibleDataList=[],this._chart=t,this.setOptions(e)}return t.prototype.adjustVisibleDataList=function(){this._visibleDataList=[];for(var t=this._timeScaleStore.getVisibleRange(),e=t.realFrom,i=t.realTo,n=e;n0&&(this._decimalFoldThreshold=u)}return this},t.prototype.getStyles=function(){return this._styles},t.prototype.getLocale=function(){return this._locale},t.prototype.getCustomApi=function(){return this._customApi},t.prototype.getThousandsSeparator=function(){return this._thousandsSeparator},t.prototype.getDecimalFoldThreshold=function(){return this._decimalFoldThreshold},t.prototype.getPrecision=function(){return this._precision},t.prototype.setPrecision=function(t){return this._precision=t,this._indicatorStore.synchronizeSeriesPrecision(),this},t.prototype.getDataList=function(){return this._dataList},t.prototype.getVisibleFirstData=function(){var t,e=this._timeScaleStore.getVisibleRange().from;return null!==(t=this._dataList[e])&&void 0!==t?t:null},t.prototype.getVisibleDataList=function(){return this._visibleDataList},t.prototype.addData=function(t,e,i){return j(this,void 0,void 0,function(){var n,a,r,o,s,l,c;return U(this,function(u){switch(u.label){case 0:if(n=!1,a=!1,r=0,Ct(t)){switch(r=t.length,e){case Kt.Init:this.clear(),this._dataList=t,this._forwardMore=null===i||void 0===i||i,this._timeScaleStore.resetOffsetRightDistance(),a=!0;break;case Kt.Backward:this._dataList=this._dataList.concat(t),this._backwardMore=null!==i&&void 0!==i&&i,a=r>0;break;case Kt.Forward:this._dataList=t.concat(this._dataList),this._forwardMore=null!==i&&void 0!==i&&i,a=r>0}this._loading=!1,n=!0}else o=this._dataList.length,s=t.timestamp,l=Rt(this._dataList[o-1],"timestamp",0),s>l?(this._dataList.push(t),c=this._timeScaleStore.getLastBarRightSideDiffBarCount(),c<0&&this._timeScaleStore.setLastBarRightSideDiffBarCount(--c),r=1,n=!0,a=!0):s===l&&(this._dataList[o-1]=t,n=!0,a=!0);if(!n)return[3,5];u.label=1;case 1:return u.trys.push([1,4,,5]),this._overlayStore.updatePointPosition(r,e),a?(this._timeScaleStore.adjustVisibleRange(),this._tooltipStore.recalculateCrosshair(!0),[4,this._indicatorStore.calcInstance()]):[3,3];case 2:u.sent(),this._chart.adjustPaneViewport(!1,!0,!0,!0),u.label=3;case 3:return this._actionStore.execute(Tt.OnDataReady),[3,5];case 4:return u.sent(),[3,5];case 5:return[2]}})})},t.prototype.setLoadMoreCallback=function(t){this._loadMoreCallback=t},t.prototype.executeLoadMoreCallback=function(t){this._forwardMore&&!this._loading&&At(this._loadMoreCallback)&&(this._loading=!0,this._loadMoreCallback(t))},t.prototype.setLoadDataCallback=function(t){this._loadDataCallback=t},t.prototype.executeLoadDataCallback=function(t){var e=this;if(!this._loading&&At(this._loadDataCallback)&&(this._forwardMore&&t.type===Kt.Forward||this._backwardMore&&t.type===Kt.Backward)){var i=function(i,n){e.addData(i,t.type,n).then(function(){}).catch(function(){})};this._loading=!0,this._loadDataCallback(X(X({},t),{callback:i}))}},t.prototype.clear=function(){this._forwardMore=!0,this._backwardMore=!0,this._loading=!0,this._dataList=[],this._visibleDataList=[],this._timeScaleStore.clear(),this._tooltipStore.clear()},t.prototype.getTimeScaleStore=function(){return this._timeScaleStore},t.prototype.getIndicatorStore=function(){return this._indicatorStore},t.prototype.getOverlayStore=function(){return this._overlayStore},t.prototype.getTooltipStore=function(){return this._tooltipStore},t.prototype.getActionStore=function(){return this._actionStore},t.prototype.getChart=function(){return this._chart},t}(),Gi={MAIN:"main",X_AXIS:"xAxis",Y_AXIS:"yAxis",SEPARATOR:"separator"},Zi=7;function qi(){return j(this,void 0,void 0,function(){return U(this,function(t){switch(t.label){case 0:return[4,new Promise(function(t){var e=new ResizeObserver(function(i){t(i.every(function(t){return"devicePixelContentBoxSize"in t})),e.disconnect()});e.observe(document.body,{box:"device-pixel-content-box"})}).catch(function(){return!1})];case 1:return[2,t.sent()]}})})}var Ji=function(){function t(t,e){var i=this;this._supportedDevicePixelContentBox=!1,this._width=0,this._height=0,this._pixelWidth=0,this._pixelHeight=0,this._nextPixelWidth=0,this._nextPixelHeight=0,this._requestAnimationId=re,this._mediaQueryListener=function(){var t=Wt(i._element);i._nextPixelWidth=Math.round(i._element.clientWidth*t),i._nextPixelHeight=Math.round(i._element.clientHeight*t),i._resetPixelRatio()},this._listener=e,this._element=he("canvas",t),this._ctx=this._element.getContext("2d",{willReadFrequently:!0}),qi().then(function(t){i._supportedDevicePixelContentBox=t,t?(i._resizeObserver=new ResizeObserver(function(t){var e,n=t.find(function(t){return t.target===i._element}),a=null===(e=null===n||void 0===n?void 0:n.devicePixelContentBoxSize)||void 0===e?void 0:e[0];At(a)&&(i._nextPixelWidth=a.inlineSize,i._nextPixelHeight=a.blockSize,i._pixelWidth===i._nextPixelWidth&&i._pixelHeight===i._nextPixelHeight||i._resetPixelRatio())}),i._resizeObserver.observe(i._element,{box:"device-pixel-content-box"})):(i._mediaQueryList=window.matchMedia("(resolution: ".concat(Wt(i._element),"dppx)")),i._mediaQueryList.addListener(i._mediaQueryListener))}).catch(function(t){return!1})}return t.prototype._resetPixelRatio=function(){var t=this;this._executeListener(function(){var e=t._element.clientWidth,i=t._element.clientHeight,n=t._nextPixelWidth/e,a=t._nextPixelHeight/i;t._width=e,t._height=i,t._pixelWidth=t._nextPixelWidth,t._pixelHeight=t._nextPixelHeight,t._element.width=t._nextPixelWidth,t._element.height=t._nextPixelHeight,t._ctx.scale(n,a)})},t.prototype._executeListener=function(t){var e=this;this._requestAnimationId===re&&(this._requestAnimationId=oe(function(){e._ctx.clearRect(0,0,e._width,e._height),null===t||void 0===t||t(),e._listener(),e._requestAnimationId=re}))},t.prototype.update=function(t,e){if(this._width!==t||this._height!==e){if(this._element.style.width="".concat(t,"px"),this._element.style.height="".concat(e,"px"),!this._supportedDevicePixelContentBox){var i=Wt(this._element);this._nextPixelWidth=Math.round(t*i),this._nextPixelHeight=Math.round(e*i),this._resetPixelRatio()}}else this._executeListener()},t.prototype.getElement=function(){return this._element},t.prototype.getContext=function(){return this._ctx},t.prototype.destroy=function(){At(this._resizeObserver)&&this._resizeObserver.unobserve(this._element),At(this._mediaQueryList)&&this._mediaQueryList.removeListener(this._mediaQueryListener)},t}();function Qi(t){var e={width:0,height:0,left:0,right:0,top:0,bottom:0};return At(t)&&wt(e,t),e}var tn=function(t){function e(e,i){var n=t.call(this)||this;return n._bounding=Qi(),n._pane=i,n._rootContainer=e,n._container=n.createContainer(),e.appendChild(n._container),n}return L(e,t),e.prototype.setBounding=function(t){return wt(this._bounding,t),this},e.prototype.getContainer=function(){return this._container},e.prototype.getBounding=function(){return this._bounding},e.prototype.getPane=function(){return this._pane},e.prototype.update=function(t){this.updateImp(this._container,this._bounding,null!==t&&void 0!==t?t:3)},e.prototype.destroy=function(){this._rootContainer.removeChild(this._container)},e}(hi),en=function(t){function e(e,i){var n=t.call(this,e,i)||this;n._mainCanvas=new Ji({position:"absolute",top:"0",left:"0",zIndex:"2",boxSizing:"border-box"},function(){n.updateMain(n._mainCanvas.getContext())}),n._overlayCanvas=new Ji({position:"absolute",top:"0",left:"0",zIndex:"2",boxSizing:"border-box"},function(){n.updateOverlay(n._overlayCanvas.getContext())});var a=n.getContainer();return a.appendChild(n._mainCanvas.getElement()),a.appendChild(n._overlayCanvas.getElement()),n}return L(e,t),e.prototype.createContainer=function(){return he("div",{margin:"0",padding:"0",position:"absolute",top:"0",overflow:"hidden",boxSizing:"border-box",zIndex:"1"})},e.prototype.updateImp=function(t,e,i){var n=e.width,a=e.height,r=e.left;t.style.left="".concat(r,"px");var o=i,s=t.clientWidth,l=t.clientHeight;switch(n===s&&a===l||(t.style.width="".concat(n,"px"),t.style.height="".concat(a,"px"),o=3),o){case 0:this._mainCanvas.update(n,a);break;case 1:this._overlayCanvas.update(n,a);break;case 3:case 4:this._mainCanvas.update(n,a),this._overlayCanvas.update(n,a);break}},e.prototype.destroy=function(){this._mainCanvas.destroy(),this._overlayCanvas.destroy()},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),r=a.getContext("2d"),o=Wt(a);return a.width=i*o,a.height=n*o,r.scale(o,o),r.drawImage(this._mainCanvas.getElement(),0,0,i,n),t&&r.drawImage(this._overlayCanvas.getElement(),0,0,i,n),a},e}(tn);function nn(t){return"transparent"===t||"none"===t||/^[rR][gG][Bb][Aa]\(([\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\s]*,){3}[\s]*0[\s]*\)$/.test(t)||/^[hH][Ss][Ll][Aa]\(([\s]*(360|3[0-5][0-9]|[012]?[0-9][0-9]?)[\s]*,)([\s]*((100|[0-9][0-9]?)%|0)[\s]*,){2}([\s]*0[\s]*)\)$/.test(t)}function an(t,e){var i=[];i=i.concat(e);for(var n=0;ns*s))return!0}return!1}function rn(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?O.Fill:a,o=i.color,s=void 0===o?"currentColor":o,l=i.borderSize,c=void 0===l?1:l,u=i.borderColor,d=void 0===u?"currentColor":u,h=i.borderStyle,p=void 0===h?N.Solid:h,v=i.borderDashedValue,f=void 0===v?[2,2]:v,g=(r===O.Fill||i.style===O.StrokeFill)&&(!Mt(s)||!nn(s));g&&(t.fillStyle=s,n.forEach(function(e){var i=e.x,n=e.y,a=e.r;t.beginPath(),t.arc(i,n,a,0,2*Math.PI),t.closePath(),t.fill()})),(r===O.Stroke||i.style===O.StrokeFill)&&c>0&&!nn(d)&&(t.strokeStyle=d,t.lineWidth=c,p===N.Dashed?t.setLineDash(f):t.setLineDash([]),n.forEach(function(e){var i=e.x,n=e.y,a=e.r;(!g||a>c)&&(t.beginPath(),t.arc(i,n,a,0,2*Math.PI),t.closePath(),t.stroke())}))}var on={name:"circle",checkEventOn:an,draw:function(t,e,i){rn(t,e,i)}};function sn(t,e){var i=[];i=i.concat(e);for(var n=0;nt.y!==r[s].y>t.y&&t.x<(r[s].x-r[o].x)*(t.y-r[o].y)/(r[s].y-r[o].y)+r[o].x&&(a=!a);if(a)return!0}return!1}function ln(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?O.Fill:a,o=i.color,s=void 0===o?"currentColor":o,l=i.borderSize,c=void 0===l?1:l,u=i.borderColor,d=void 0===u?"currentColor":u,h=i.borderStyle,p=void 0===h?N.Solid:h,v=i.borderDashedValue,f=void 0===v?[2,2]:v;r!==O.Fill&&i.style!==O.StrokeFill||Mt(s)&&nn(s)||(t.fillStyle=s,n.forEach(function(e){var i=e.coordinates;t.beginPath(),t.moveTo(i[0].x,i[0].y);for(var n=1;n0&&!nn(d)&&(t.strokeStyle=d,t.lineWidth=c,p===N.Dashed?t.setLineDash(f):t.setLineDash([]),n.forEach(function(e){var i=e.coordinates;t.beginPath(),t.moveTo(i[0].x,i[0].y);for(var n=1;n=r&&t.x<=r+o&&t.y>=s&&t.y<=s+l)return!0}return!1}function dn(t,e,i){var n,a=[];a=a.concat(e);var r=i.style,o=void 0===r?O.Fill:r,s=i.color,l=void 0===s?"transparent":s,c=i.borderSize,u=void 0===c?1:c,d=i.borderColor,h=void 0===d?"transparent":d,p=i.borderStyle,v=void 0===p?N.Solid:p,f=i.borderRadius,g=void 0===f?0:f,m=i.borderDashedValue,y=void 0===m?[2,2]:m,_=null!==(n=t.roundRect)&&void 0!==n?n:t.rect,b=(o===O.Fill||i.style===O.StrokeFill)&&(!Mt(l)||!nn(l));if(b&&(t.fillStyle=l,a.forEach(function(e){var i=e.x,n=e.y,a=e.width,r=e.height;t.beginPath(),_.call(t,i,n,a,r,g),t.closePath(),t.fill()})),(o===O.Stroke||i.style===O.StrokeFill)&&u>0&&!nn(h)){t.strokeStyle=h,t.fillStyle=h,t.lineWidth=u,v===N.Dashed?t.setLineDash(y):t.setLineDash([]);var x=u%2===1?.5:0,w=Math.round(2*x);a.forEach(function(e){var i=e.x,n=e.y,a=e.width,r=e.height;a>2*u&&r>2*u?(t.beginPath(),_.call(t,i+x,n+x,a-w,r-w,g),t.closePath(),t.stroke()):b||t.fillRect(i,n,a,r)})}}var hn={name:"rect",checkEventOn:un,draw:function(t,e,i){dn(t,e,i)}};function pn(t,e){var i,n,a=e.size,r=void 0===a?12:a,o=e.paddingLeft,s=void 0===o?0:o,l=e.paddingTop,c=void 0===l?0:l,u=e.paddingRight,d=void 0===u?0:u,h=e.paddingBottom,p=void 0===h?0:h,v=e.weight,f=void 0===v?"normal":v,g=e.family,m=t.x,y=t.y,_=t.text,b=t.align,x=void 0===b?"left":b,w=t.baseline,S=void 0===w?"top":w,C=t.width,k=t.height,I=null!==C&&void 0!==C?C:s+$t(_,r,f,g)+d,E=null!==k&&void 0!==k?k:c+r+p;switch(x){case"left":case"start":i=m;break;case"right":case"end":i=m-I;break;default:i=m-I/2;break}switch(S){case"top":case"hanging":n=y;break;case"bottom":case"ideographic":case"alphabetic":n=y-E;break;default:n=y-E/2;break}return{x:i,y:n,width:I,height:E}}function vn(t,e,i){var n=[];n=n.concat(e);for(var a=0;a=o&&t.x<=o+l&&t.y>=s&&t.y<=s+c)return!0}return!1}function fn(t,e,i){var n=[];n=n.concat(e);var a=i.color,r=void 0===a?"currentColor":a,o=i.size,s=void 0===o?12:o,l=i.family,c=i.weight,u=i.paddingLeft,d=void 0===u?0:u,h=i.paddingTop,p=void 0===h?0:h,v=i.paddingRight,f=void 0===v?0:v,g=n.map(function(t){return pn(t,i)});dn(t,g,X(X({},i),{color:i.backgroundColor})),t.textAlign="left",t.textBaseline="top",t.font=Ht(s,c,l),t.fillStyle=r,n.forEach(function(e,i){var n=g[i];t.fillText(e.text,n.x+d,n.y+p,n.width-d-f)})}var gn={name:"text",checkEventOn:vn,draw:function(t,e,i){fn(t,e,i)}},mn=gn;function yn(t,e){var i=t.x-e.x,n=t.y-e.y;return Math.sqrt(i*i+n*n)}function _n(t,e){var i=[];i=i.concat(e);for(var n=0;n=Math.min(l,u)-pi&&t.y<=Math.max(c,d)+pi&&t.y>=Math.min(c,d)-pi)return!0}}return!1}function bn(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?N.Solid:a,o=i.size,s=void 0===o?1:o,l=i.color,c=void 0===l?"currentColor":l,u=i.dashedValue,d=void 0===u?[2,2]:u;t.lineWidth=s,t.strokeStyle=c,r===N.Dashed?t.setLineDash(d):t.setLineDash([]),n.forEach(function(e){var i=e.x,n=e.y,a=e.r,r=e.startAngle,o=e.endAngle;t.beginPath(),t.arc(i,n,a,r,o),t.stroke(),t.closePath()})}var xn={name:"arc",checkEventOn:_n,draw:function(t,e,i){bn(t,e,i)}},wn={},Sn=[on,xi,cn,hn,gn,mn,xn];function Cn(t){var e;return null!==(e=wn[t])&&void 0!==e?e:null}Sn.forEach(function(t){wn[t.name]=vi.extend(t)});var kn=function(t){function e(e){var i=t.call(this)||this;return i._widget=e,i}return L(e,t),e.prototype.getWidget=function(){return this._widget},e.prototype.createFigure=function(t,e){var i=Cn(t.name);if(null!==i){var n=new i(t);if(At(e)){for(var a in e)e.hasOwnProperty(a)&&n.registerEvent(a,e[a]);this.addChild(n)}return n}return null},e.prototype.draw=function(t){this.clear(),this.drawImp(t)},e}(hi),In=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i,n=this.getWidget(),a=this.getWidget().getPane(),r=a.getChart(),o=n.getBounding(),s=r.getStyles().grid,l=s.show;if(l){t.save(),t.globalCompositeOperation="destination-over";var c=s.horizontal,u=c.show;if(u){var d=a.getAxisComponent(),h=d.getTicks().map(function(t){return{coordinates:[{x:0,y:t.coord},{x:o.width,y:t.coord}]}});null===(e=this.createFigure({name:"line",attrs:h,styles:c}))||void 0===e||e.draw(t)}var p=s.vertical,v=p.show;if(v){var f=r.getXAxisPane().getAxisComponent();h=f.getTicks().map(function(t){return{coordinates:[{x:t.coord,y:0},{x:t.coord,y:o.height}]}});null===(i=this.createFigure({name:"line",attrs:h,styles:p}))||void 0===i||i.draw(t)}t.restore()}},e}(kn),En=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.eachChildren=function(t){var e=this.getWidget().getPane(),i=e.getChart().getChartStore(),n=i.getVisibleDataList(),a=i.getTimeScaleStore().getBarSpace();n.forEach(function(e,i){t(e,a,i)})},e}(kn),An=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._boundCandleBarClickEvent=function(t){return function(){return e.getWidget().getPane().getChart().getChartStore().getActionStore().execute(Tt.OnCandleBarClick,t),!1}},e}return L(e,t),e.prototype.drawImp=function(t){var e=this,i=this.getWidget().getPane(),n=i.getId()===Wi.CANDLE,a=i.getChart().getChartStore(),r=this.getCandleBarOptions(a);if(null!==r){var o=0,s=0;if(r.type===$.Ohlc){var l=a.getTimeScaleStore().getBarSpace().gapBar;o=Math.min(Math.max(Math.round(.2*l),1),8),o>2&&o%2===1&&o--,s=Math.floor(s/2)}var c=i.getAxisComponent();this.eachChildren(function(i,a){var l=i.data,u=i.x;if(At(l)){var d=l.open,h=l.high,p=l.low,v=l.close,f=r.type,g=r.styles,m=[];v>d?(m[0]=g.upColor,m[1]=g.upBorderColor,m[2]=g.upWickColor):vd?e._createStrokeBar(u,b,a,m):e._createSolidBar(u,b,a,m);break;case $.CandleDownStroke:x=d>v?e._createStrokeBar(u,b,a,m):e._createSolidBar(u,b,a,m);break;case $.Ohlc:x=[{name:"rect",attrs:[{x:u-s,y:b[0],width:o,height:b[3]-b[0]},{x:u-a.halfGapBar,y:y+o>b[3]?b[3]-o:y,width:a.halfGapBar,height:o},{x:u+s,y:_+o>b[3]?b[3]-o:_,width:a.halfGapBar-s,height:o}],styles:{color:m[0]}}];break}x.forEach(function(a){var r,o;n&&(o={mouseClickEvent:e._boundCandleBarClickEvent(i)}),null===(r=e.createFigure(a,o))||void 0===r||r.draw(t)})}})}},e.prototype.getCandleBarOptions=function(t){var e=t.getStyles().candle;return{type:e.type,styles:e.bar}},e.prototype._createSolidBar=function(t,e,i,n){return[{name:"rect",attrs:{x:t,y:e[0],width:1,height:e[3]-e[0]},styles:{color:n[2]}},{name:"rect",attrs:{x:t-i.halfGapBar,y:e[1],width:i.gapBar,height:Math.max(1,e[2]-e[1])},styles:{style:O.StrokeFill,color:n[0],borderColor:n[1]}}]},e.prototype._createStrokeBar=function(t,e,i,n){return[{name:"rect",attrs:[{x:t,y:e[0],width:1,height:e[1]-e[0]},{x:t,y:e[2],width:1,height:e[3]-e[2]}],styles:{color:n[2]}},{name:"rect",attrs:{x:t-i.halfGapBar,y:e[1],width:i.gapBar,height:Math.max(1,e[2]-e[1])},styles:{style:O.Stroke,borderColor:n[1]}}]},e}(En),Pn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getCandleBarOptions=function(t){var e,i,n=this.getWidget().getPane(),a=n.getAxisComponent();if(!a.isInCandle()){var r=t.getIndicatorStore().getInstances(n.getId());try{for(var o=G(r),s=o.next();!s.done;s=o.next()){var l=s.value;if(l.shouldOhlc&&l.visible){var c=l.styles,u=t.getStyles().indicator,d=Rt(c,"ohlc.upColor",u.ohlc.upColor),h=Rt(c,"ohlc.downColor",u.ohlc.downColor),p=Rt(c,"ohlc.noChangeColor",u.ohlc.noChangeColor);return{type:$.Ohlc,styles:{upColor:d,downColor:h,noChangeColor:p,upBorderColor:d,downBorderColor:h,noChangeBorderColor:p,upWickColor:d,downWickColor:h,noChangeWickColor:p}}}}}catch(v){e={error:v}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(e)throw e.error}}}return null},e.prototype.drawImp=function(e){var i=this;t.prototype.drawImp.call(this,e);var n=this.getWidget(),a=n.getPane(),r=a.getChart(),o=n.getBounding(),s=r.getXAxisPane().getAxisComponent(),l=a.getAxisComponent(),c=r.getChartStore(),u=c.getDataList(),d=c.getTimeScaleStore(),h=d.getVisibleRange(),p=c.getIndicatorStore().getInstances(a.getId()),v=c.getStyles().indicator;e.save(),p.forEach(function(t){var n;if(t.visible){t.zLevel<0?e.globalCompositeOperation="destination-over":e.globalCompositeOperation="source-over";var a=!1;if(null!==t.draw&&(e.save(),a=null!==(n=t.draw({ctx:e,kLineDataList:u,indicator:t,visibleRange:h,bounding:o,barSpace:d.getBarSpace(),defaultStyles:v,xAxis:s,yAxis:l}))&&void 0!==n&&n,e.restore()),!a){var r=t.result,c=[];i.eachChildren(function(n,a){var d,h,p,f=a.halfGapBar,g=n.dataIndex,m=n.x,y=s.convertToPixel(g-1),_=s.convertToPixel(g+1),b=null!==(d=r[g-1])&&void 0!==d?d:null,x=null!==(h=r[g])&&void 0!==h?h:null,w=null!==(p=r[g+1])&&void 0!==p?p:null,S={x:y},C={x:m},k={x:_};t.figures.forEach(function(t){var e=t.key,i=null===b||void 0===b?void 0:b[e];Et(i)&&(S[e]=l.convertToPixel(i));var n=null===x||void 0===x?void 0:x[e];Et(n)&&(C[e]=l.convertToPixel(n));var a=null===w||void 0===w?void 0:w[e];Et(a)&&(k[e]=l.convertToPixel(a))}),jt(u,t,g,v,function(t,n,r){var u,d,h;if(At(null===x||void 0===x?void 0:x[t.key])){var p=C[t.key],v=null===(u=t.attrs)||void 0===u?void 0:u.call(t,{data:{prev:b,current:x,next:w},coordinate:{prev:S,current:C,next:k},bounding:o,barSpace:a,xAxis:s,yAxis:l});if(!At(v))switch(t.type){case"circle":v={x:m,y:p,r:Math.max(1,f)};break;case"rect":case"bar":var g=null!==(d=t.baseValue)&&void 0!==d?d:l.getRange().from,y=l.convertToPixel(g),_=Math.abs(y-p);g!==(null===x||void 0===x?void 0:x[t.key])&&(_=Math.max(1,_));var I=void 0;I=p>y?y:p,v={x:m-f,y:I,width:Math.max(1,2*f),height:_};break;case"line":At(c[r])||(c[r]=[]),Et(C[t.key])&&Et(k[t.key])&&c[r].push({coordinates:[{x:C.x,y:C[t.key]},{x:k.x,y:k[t.key]}],styles:n});break}var E=t.type;At(v)&&"line"!==E&&(null===(h=i.createFigure({name:"bar"===E?"rect":E,attrs:v,styles:n}))||void 0===h||h.draw(e))}})}),c.forEach(function(t){if(t.length>1){for(var n=[{coordinates:[t[0].coordinates[0],t[0].coordinates[1]],styles:t[0].styles}],a=1;a0,C=x.length>0;if(S||C){var k=Z(p.classifyTooltipIcons(w),3),I=k[0],E=k[1],A=k[2];if(g=p.drawStandardTooltipIcons(t,a,I,m,e,r.name,c,g,d),S){var P=_;b.length>0&&(P="".concat(P).concat(b)),g=p.drawStandardTooltipLegends(t,[{title:{text:"",color:f.color},value:{text:P,color:f.color}}],m,c,g,d,f)}g=p.drawStandardTooltipIcons(t,a,E,m,e,r.name,c,g,d),C&&(g=p.drawStandardTooltipLegends(t,x,m,c,g,d,v.text)),g=p.drawStandardTooltipIcons(t,a,A,m,e,r.name,c,g,d),u=m.y+g}})}return u},e.prototype.drawStandardTooltipIcons=function(t,e,i,n,a,r,o,s,l){var c=this;if(i.length>0){var u=0,d=0;i.forEach(function(e){var i=e.marginLeft,n=void 0===i?0:i,a=e.marginTop,r=void 0===a?0:a,o=e.marginRight,s=void 0===o?0:o,l=e.marginBottom,c=void 0===l?0:l,h=e.paddingLeft,p=void 0===h?0:h,v=e.paddingTop,f=void 0===v?0:v,g=e.paddingRight,m=void 0===g?0:g,y=e.paddingBottom,_=void 0===y?0:y,b=e.size,x=e.fontFamily,w=e.icon;t.font=Ht(b,"normal",x),u+=n+p+t.measureText(w).width+m+s,d=Math.max(d,r+f+b+_+c)}),n.x+u>l?(n.x=o,n.y+=s,s=d):s=Math.max(s,d),i.forEach(function(i){var o,s=i.marginLeft,l=void 0===s?0:s,u=i.marginTop,d=void 0===u?0:u,h=i.marginRight,p=void 0===h?0:h,v=i.paddingLeft,f=void 0===v?0:v,g=i.paddingTop,m=void 0===g?0:g,y=i.paddingRight,_=void 0===y?0:y,b=i.paddingBottom,x=void 0===b?0:b,w=i.color,S=i.activeColor,C=i.size,k=i.fontFamily,I=i.icon,E=i.backgroundColor,A=i.activeBackgroundColor,P=(null===e||void 0===e?void 0:e.paneId)===a&&(null===e||void 0===e?void 0:e.indicatorName)===r&&(null===e||void 0===e?void 0:e.iconId)===i.id;null===(o=c.createFigure({name:"text",attrs:{text:I,x:n.x+l,y:n.y+d},styles:{paddingLeft:f,paddingTop:m,paddingRight:_,paddingBottom:x,color:P?S:w,size:C,family:k,backgroundColor:P?A:E}},{mouseClickEvent:c._boundIconClickEvent({paneId:a,indicatorName:r,iconId:i.id}),mouseMoveEvent:c._boundIconMouseMoveEvent({paneId:a,indicatorName:r,iconId:i.id})}))||void 0===o||o.draw(t),n.x+=l+f+t.measureText(I).width+_+p})}return s},e.prototype.drawStandardTooltipLegends=function(t,e,i,n,a,r,o){var s=this;if(e.length>0){var l=o.marginLeft,c=o.marginTop,u=o.marginRight,d=o.marginBottom,h=o.size,p=o.family,v=o.weight;t.font=Ht(h,v,p),e.forEach(function(e){var o,f,g=e.title,m=e.value,y=t.measureText(g.text).width,_=t.measureText(m.text).width,b=y+_,x=c+h+d;i.x+l+b+u>r?(i.x=n,i.y+=a,a=x):a=Math.max(a,x),g.text.length>0&&(null===(o=s.createFigure({name:"text",attrs:{x:i.x+l,y:i.y+c,text:g.text},styles:{color:g.color,size:h,family:p,weight:v}}))||void 0===o||o.draw(t)),null===(f=s.createFigure({name:"text",attrs:{x:i.x+l+y,y:i.y+c,text:m.text},styles:{color:m.color,size:h,family:p,weight:v}}))||void 0===f||f.draw(t),i.x+=l+b+u})}return a},e.prototype.isDrawTooltip=function(t,e){var i=e.showRule;return i===z.Always||i===z.FollowCross&&Mt(t.paneId)},e.prototype.getIndicatorTooltipData=function(t,e,i,n,a,r,o){var s,l,c=o.tooltip,u=c.showName?i.shortName:"",d="",h=i.calcParams;h.length>0&&c.showParams&&(d="(".concat(h.join(","),")"));var p={name:u,calcParamsText:d,values:[],icons:c.icons},v=e.dataIndex,f=null!==(s=i.result)&&void 0!==s?s:[],g=[];if(i.visible){var m=null!==(l=f[v])&&void 0!==l?l:{};jt(t,i,v,o,function(t,e){var o;if(Mt(t.title)){var s=e.color,l=null!==(o=m[t.key])&&void 0!==o?o:c.defaultValue;Et(l)&&(l=Nt(l,i.precision),i.shouldFormatBigNumber&&(l=n.formatBigNumber(l)),l=Vt(zt(l,a),r)),g.push({title:{text:t.title,color:s},value:{text:l,color:s}})}}),p.values=g}if(null!==i.createTooltipDataSource){var y=this.getWidget(),_=y.getPane(),b=_.getChart().getChartStore(),x=i.createTooltipDataSource({kLineDataList:t,indicator:i,visibleRange:b.getTimeScaleStore().getVisibleRange(),bounding:y.getBounding(),crosshair:e,defaultStyles:o,xAxis:_.getChart().getXAxisPane().getAxisComponent(),yAxis:_.getAxisComponent()}),w=x.name,S=x.calcParamsText,C=x.values,k=x.icons;if(Mt(w)&&c.showName&&(p.name=w),Mt(S)&&c.showParams&&(p.calcParamsText=S),At(k)&&(p.icons=k),At(C)&&i.visible){var I=[],E=o.tooltip.text.color;C.forEach(function(t){var e,o={text:"",color:E};It(t.title)?o=t.title:o.text=t.title;var s={text:"",color:E};if(It(t.value)?s=t.value:s.text=null!==(e=t.value)&&void 0!==e?e:c.defaultValue,Et(s.text)){var l=Nt(s.text,i.precision);i.shouldFormatBigNumber&&(l=n.formatBigNumber(l)),l=Vt(zt(l,a),r),s.text=l}I.push({title:o,value:s})}),p.values=I}}return p},e.prototype.classifyTooltipIcons=function(t){var e=[],i=[],n=[];return t.forEach(function(t){switch(t.position){case W.Left:e.push(t);break;case W.Middle:i.push(t);break;case W.Right:n.push(t);break}}),[e,i,n]},e}(kn),Tn=function(t){function e(e){var i=t.call(this,e)||this;return i._initEvent(),i}return L(e,t),e.prototype._initEvent=function(){var t=this,e=this.getWidget().getPane(),i=e.getId(),n=e.getChart().getChartStore().getOverlayStore();this.registerEvent("mouseMoveEvent",function(e){var a,r=n.getProgressInstanceInfo();if(null!==r){var o=r.instance,s=r.paneId;o.isStart()&&(n.updateProgressInstanceInfo(i),s=i);var l=o.points.length-1,c="".concat(ee,"point_").concat(l);return o.isDrawing()&&s===i&&(o.eventMoveForDrawing(t._coordinateToPoint(r.instance,e)),null===(a=o.onDrawing)||void 0===a||a.call(o,X({overlay:o,figureKey:c,figureIndex:l},e))),t._figureMouseMoveEvent(o,1,c,l,0)(e)}return n.setHoverInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1},e),!1}).registerEvent("mouseClickEvent",function(e){var a,r,o=n.getProgressInstanceInfo();if(null!==o){var s=o.instance,l=o.paneId;s.isStart()&&(n.updateProgressInstanceInfo(i,!0),l=i);var c=s.points.length-1,u="".concat(ee,"point_").concat(c);return s.isDrawing()&&l===i&&(s.eventMoveForDrawing(t._coordinateToPoint(s,e)),null===(a=s.onDrawing)||void 0===a||a.call(s,X({overlay:s,figureKey:u,figureIndex:c},e)),s.nextStep(),s.isDrawing()||(n.progressInstanceComplete(),null===(r=s.onDrawEnd)||void 0===r||r.call(s,X({overlay:s,figureKey:u,figureIndex:c},e)))),t._figureMouseClickEvent(s,1,u,c,0)(e)}return n.setClickInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1},e),!1}).registerEvent("mouseDoubleClickEvent",function(e){var a,r=n.getProgressInstanceInfo();if(null!==r){var o=r.instance,s=r.paneId;if(o.isDrawing()&&s===i&&(o.forceComplete(),!o.isDrawing())){n.progressInstanceComplete();var l=o.points.length-1,c="".concat(ee,"point_").concat(l);null===(a=o.onDrawEnd)||void 0===a||a.call(o,X({overlay:o,figureKey:c,figureIndex:l},e))}var u=o.points.length-1;return t._figureMouseClickEvent(o,1,"".concat(ee,"point_").concat(u),u,0)(e)}return!1}).registerEvent("mouseRightClickEvent",function(e){var i=n.getProgressInstanceInfo();if(null!==i){var a=i.instance;if(a.isDrawing()){var r=a.points.length-1;return t._figureMouseRightClickEvent(a,1,"".concat(ee,"point_").concat(r),r,0)(e)}}return!1}).registerEvent("mouseUpEvent",function(t){var e,a=n.getPressedInstanceInfo(),r=a.instance,o=a.figureIndex,s=a.figureKey;return null!==r&&(null===(e=r.onPressedMoveEnd)||void 0===e||e.call(r,X({overlay:r,figureKey:s,figureIndex:o},t))),n.setPressedInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1}),!1}).registerEvent("pressedMouseMoveEvent",function(e){var i,a,r=n.getPressedInstanceInfo(),o=r.instance,s=r.figureType,l=r.figureIndex,c=r.figureKey;if(null!==o){if(!o.lock&&(null===(a=null===(i=o.onPressedMoving)||void 0===i?void 0:i.call(o,X({overlay:o,figureIndex:l,figureKey:c},e)))||void 0===a||!a)){var u=t._coordinateToPoint(o,e);1===s?o.eventPressedPointMove(u,l):o.eventPressedOtherMove(u,t.getWidget().getPane().getChart().getChartStore().getTimeScaleStore())}return!0}return!1})},e.prototype._createFigureEvents=function(t,e,i,n,a,r){var o;if(!t.isDrawing()){var s=[];if(At(r)&&(Pt(r)?r&&(s=Zt()):s=r),0===s.length)return{mouseMoveEvent:this._figureMouseMoveEvent(t,e,i,n,a),mouseDownEvent:this._figureMouseDownEvent(t,e,i,n,a),mouseClickEvent:this._figureMouseClickEvent(t,e,i,n,a),mouseRightClickEvent:this._figureMouseRightClickEvent(t,e,i,n,a),mouseDoubleClickEvent:this._figureMouseDoubleClickEvent(t,e,i,n,a)};o={},s.includes("mouseMoveEvent")||s.includes("touchMoveEvent")||(o.mouseMoveEvent=this._figureMouseMoveEvent(t,e,i,n,a)),s.includes("mouseDownEvent")||s.includes("touchStartEvent")||(o.mouseDownEvent=this._figureMouseDownEvent(t,e,i,n,a)),s.includes("mouseClickEvent")||s.includes("tapEvent")||(o.mouseClickEvent=this._figureMouseClickEvent(t,e,i,n,a)),s.includes("mouseDoubleClickEvent")||s.includes("doubleTapEvent")||(o.mouseDoubleClickEvent=this._figureMouseDoubleClickEvent(t,e,i,n,a)),s.includes("mouseRightClickEvent")||(o.mouseRightClickEvent=this._figureMouseRightClickEvent(t,e,i,n,a))}return o},e.prototype._figureMouseMoveEvent=function(t,e,i,n,a){var r=this;return function(o){var s=r.getWidget().getPane(),l=s.getChart().getChartStore().getOverlayStore();return l.setHoverInstanceInfo({paneId:s.getId(),instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a},o),!0}},e.prototype._figureMouseDownEvent=function(t,e,i,n,a){var r=this;return function(o){var s,l=r.getWidget().getPane(),c=l.getId(),u=l.getChart().getChartStore().getOverlayStore();return t.startPressedMove(r._coordinateToPoint(t,o)),null===(s=t.onPressedMoveStart)||void 0===s||s.call(t,X({overlay:t,figureIndex:n,figureKey:i},o)),u.setPressedInstanceInfo({paneId:c,instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a}),!0}},e.prototype._figureMouseClickEvent=function(t,e,i,n,a){var r=this;return function(o){var s=r.getWidget().getPane(),l=s.getId(),c=s.getChart().getChartStore().getOverlayStore();return c.setClickInstanceInfo({paneId:l,instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a},o),!0}},e.prototype._figureMouseDoubleClickEvent=function(t,e,i,n,a){return function(e){var a;return null===(a=t.onDoubleClick)||void 0===a||a.call(t,X(X({},e),{figureIndex:n,figureKey:i,overlay:t})),!0}},e.prototype._figureMouseRightClickEvent=function(t,e,i,n,a){var r=this;return function(e){var a,o;if(null===(o=null===(a=t.onRightClick)||void 0===a?void 0:a.call(t,X({overlay:t,figureIndex:n,figureKey:i},e)))||void 0===o||!o){var s=r.getWidget().getPane(),l=s.getChart().getChartStore().getOverlayStore();l.removeInstance(t)}return!0}},e.prototype._coordinateToPoint=function(t,e){var i,n={},a=this.getWidget().getPane(),r=a.getChart(),o=a.getId(),s=r.getChartStore().getTimeScaleStore();if(this.coordinateToPointTimestampDataIndexFlag()){var l=r.getXAxisPane().getAxisComponent(),c=l.convertFromPixel(e.x),u=null!==(i=s.dataIndexToTimestamp(c))&&void 0!==i?i:void 0;n.dataIndex=c,n.timestamp=u}if(this.coordinateToPointValueFlag()){var d=a.getAxisComponent(),h=d.convertFromPixel(e.y);if(t.mode!==Ut.Normal&&o===Wi.CANDLE&&Et(n.dataIndex)){var p=s.getDataByDataIndex(n.dataIndex);if(null!==p){var v=t.modeSensitivity;if(h>p.high)if(t.mode===Ut.WeakMagnet){var f=d.convertToPixel(p.high),g=d.convertFromPixel(f-v);hg&&(h=p.low)}else h=p.low;else{var y=Math.max(p.open,p.close),_=Math.min(p.open,p.close);h=h>y?h-y0){var m=(new Array).concat(this.getFigures(e,g,i,n,a,s,l,r,c,u,d));this.drawFigures(t,e,m,c)}this.drawDefaultFigures(t,e,g,i,a,r,o,s,l,c,u,d,h,p)},e.prototype.drawFigures=function(t,e,i,n){var a=this;i.forEach(function(i,r){var o=i.type,s=i.styles,l=i.attrs,c=i.ignoreEvent,u=[].concat(l);u.forEach(function(l,u){var d,h,p,v=a._createFigureEvents(e,2,null!==(d=i.key)&&void 0!==d?d:"",r,u,c),f=X(X(X({},n[o]),null===(h=e.styles)||void 0===h?void 0:h[o]),s);null===(p=a.createFigure({name:o,attrs:l,styles:f},v))||void 0===p||p.draw(t)})})},e.prototype.getCompleteOverlays=function(t,e){return t.getInstances(e)},e.prototype.getProgressOverlay=function(t,e){return t.paneId===e?t.instance:null},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createPointFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e.prototype.drawDefaultFigures=function(t,e,i,n,a,r,o,s,l,c,u,d,h,p){var v,f,g=this;if(e.needDefaultPointFigure&&((null===(v=h.instance)||void 0===v?void 0:v.id)===e.id&&0!==h.figureType||(null===(f=p.instance)||void 0===f?void 0:f.id)===e.id&&0!==p.figureType)){var m=e.styles,y=X(X({},c.point),null===m||void 0===m?void 0:m.point);i.forEach(function(i,n){var a,r,o,s=i.x,l=i.y,c=y.radius,u=y.color,d=y.borderColor,p=y.borderSize;(null===(a=h.instance)||void 0===a?void 0:a.id)===e.id&&1===h.figureType&&h.figureIndex===n&&(c=y.activeRadius,u=y.activeColor,d=y.activeBorderColor,p=y.activeBorderSize),null===(r=g.createFigure({name:"circle",attrs:{x:s,y:l,r:c+p},styles:{color:d}},g._createFigureEvents(e,1,"".concat(ee,"point_").concat(n),n,0)))||void 0===r||r.draw(t),null===(o=g.createFigure({name:"circle",attrs:{x:s,y:l,r:c},styles:{color:u}}))||void 0===o||o.draw(t)})}},e}(kn),Bn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._gridView=new In(n),n._indicatorView=new Pn(n),n._crosshairLineView=new Mn(n),n._tooltipView=n.createTooltipView(),n._overlayView=new Tn(n),n.addChild(n._tooltipView),n.addChild(n._overlayView),n.getContainer().style.cursor="crosshair",n.registerEvent("mouseMoveEvent",function(){return i.getChart().getChartStore().getTooltipStore().setActiveIcon(),!1}),n}return L(e,t),e.prototype.getName=function(){return Gi.MAIN},e.prototype.updateMain=function(t){this.updateMainContent(t),this._indicatorView.draw(t),this._gridView.draw(t)},e.prototype.createTooltipView=function(){return new Dn(this)},e.prototype.updateMainContent=function(t){},e.prototype.updateOverlay=function(t){this._overlayView.draw(t),this._crosshairLineView.draw(t),this._tooltipView.draw(t)},e}(en),Fn=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._ripplePoint=e.createFigure({name:"circle",attrs:{x:0,y:0,r:0},styles:{style:"fill"}}),e._animationFrameTime=0,e._animation=new le({iterationCount:1/0}).doFrame(function(t){e._animationFrameTime=t;var i=e.getWidget().getPane();i.getChart().updatePane(0,i.getId())}),e}return L(e,t),e.prototype.drawImp=function(t){var e,i,n,a=this.getWidget(),r=a.getPane(),o=r.getChart(),s=o.getDataList(),l=s.length-1,c=a.getBounding(),u=r.getAxisComponent(),d=o.getStyles().candle.area,h=[],p=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,f=null;if(this.eachChildren(function(t){var e=t.data,i=t.x,n=null===e||void 0===e?void 0:e[d.value];if(Et(n)){var a=u.convertToPixel(n);v===Number.MIN_SAFE_INTEGER&&(v=i),h.push({x:i,y:a}),p=Math.min(p,a),t.dataIndex===l&&(f={x:i,y:a})}}),h.length>0){null===(e=this.createFigure({name:"line",attrs:{coordinates:h},styles:{color:d.lineColor,size:d.lineSize,smooth:d.smooth}}))||void 0===e||e.draw(t);var g=d.backgroundColor,m=void 0;if(Ct(g)){var y=t.createLinearGradient(0,c.height,0,p);try{g.forEach(function(t){var e=t.offset,i=t.color;y.addColorStop(e,i)})}catch(x){}m=y}else m=g;t.fillStyle=m,t.beginPath(),t.moveTo(v,c.height),t.lineTo(h[0].x,h[0].y),_i(t,h,d.smooth),t.lineTo(h[h.length-1].x,c.height),t.closePath(),t.fill()}var _=d.point;if(_.show&&At(f)){null===(i=this.createFigure({name:"circle",attrs:{x:f.x,y:f.y,r:_.radius},styles:{style:"fill",color:_.color}}))||void 0===i||i.draw(t);var b=_.rippleRadius;_.animation&&(b=_.radius+this._animationFrameTime/_.animationDuration*(_.rippleRadius-_.radius),this._animation.setDuration(_.animationDuration).start()),null===(n=this._ripplePoint)||void 0===n||n.setAttrs({x:f.x,y:f.y,r:b}).setStyles({style:"fill",color:_.rippleColor}).draw(t)}else this.stopAnimation()},e.prototype.stopAnimation=function(){this._animation.stop()},e}(En),Rn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e=this.getWidget(),i=e.getPane(),n=i.getChart().getChartStore(),a=n.getStyles().candle.priceMark,r=a.high,o=a.low;if(a.show&&(r.show||o.show)){var s=n.getThousandsSeparator(),l=n.getDecimalFoldThreshold(),c=n.getPrecision(),u=i.getAxisComponent(),d=Number.MIN_SAFE_INTEGER,h=0,p=Number.MAX_SAFE_INTEGER,v=0;this.eachChildren(function(t){var e=t.data,i=t.x;At(e)&&(de.low&&(p=e.low,v=i))});var f=u.convertToPixel(d),g=u.convertToPixel(p);r.show&&d!==Number.MIN_SAFE_INTEGER&&this._drawMark(t,Vt(zt(Nt(d,c.price),s),l),{x:h,y:f},fp/2?(l=d-5,c=l-a.textOffset,u="right"):(l=d+5,u="left",c=l+a.textOffset);var v=h+n[1];null===(o=this.createFigure({name:"line",attrs:{coordinates:[{x:d,y:h},{x:d,y:v},{x:l,y:v}]},styles:{color:a.color}}))||void 0===o||o.draw(t),null===(s=this.createFigure({name:"text",attrs:{x:c,y:v,text:e,align:u,baseline:"middle"},styles:{color:a.color,size:a.textSize,family:a.textFamily,weight:a.textWeight}}))||void 0===s||s.draw(t)},e}(En),Ln=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=n.getChart().getChartStore(),o=r.getStyles().candle.priceMark,s=o.last,l=s.line;if(o.show&&s.show&&l.show){var c=n.getAxisComponent(),u=r.getDataList(),d=u[u.length-1];if(null!=d){var h=d.close,p=d.open,v=c.convertToNicePixel(h),f=void 0;f=h>p?s.upColor:h0&&(b=this.drawStandardTooltipLegends(t,S,x,d,b,p,_)),b=this.drawStandardTooltipIcons(t,a,E,x,i,"",d,b,p)}return x.y+b},e.prototype._drawRectTooltip=function(t,e,i,n,a,r,o,s,l,c,u,d,h,p,v,f){var g,m,y,_,b,x=this,w=f.candle,S=f.indicator,C=w.tooltip,k=S.tooltip;if(h||p){var I=null!==(g=r.dataIndex)&&void 0!==g?g:0,E=this._getCandleTooltipLegends({prev:null!==(m=e[I-1])&&void 0!==m?m:null,current:r.kLineData,next:null!==(y=e[I+1])&&void 0!==y?y:null},o,s,l,c,u,d,w),A=C.offsetLeft,P=C.offsetTop,M=C.offsetRight,D=C.offsetBottom,T=C.text,B=T.marginLeft,F=T.marginRight,R=T.marginTop,L=T.marginBottom,N=T.size,z=T.weight,V=T.family,W=C.rect,$=W.position,Y=W.paddingLeft,X=W.paddingRight,j=W.paddingTop,U=W.paddingBottom,G=W.offsetLeft,Z=W.offsetRight,q=W.offsetTop,J=W.offsetBottom,Q=W.borderSize,tt=W.borderRadius,et=W.borderColor,it=W.color,nt=0,at=0,rt=0;h&&(t.font=Ht(N,z,V),E.forEach(function(e){var i=e.title,n=e.value,a="".concat(i.text).concat(n.text),r=t.measureText(a).width+B+F;nt=Math.max(nt,r)}),rt+=(L+R+N)*E.length);var ot=k.text,st=ot.marginLeft,lt=ot.marginRight,ct=ot.marginTop,ut=ot.marginBottom,dt=ot.size,ht=ot.weight,pt=ot.family,vt=[];if(p&&(t.font=Ht(dt,ht,pt),i.forEach(function(i){var n,a=null!==(n=x.getIndicatorTooltipData(e,r,i,c,u,d,S).values)&&void 0!==n?n:[];vt.push(a),a.forEach(function(e){var i=e.title,n=e.value,a="".concat(i.text).concat(n.text),r=t.measureText(a).width+st+lt;nt=Math.max(nt,r),rt+=ct+ut+dt})})),at+=nt,0!==at&&0!==rt){at+=2*Q+Y+X,rt+=2*Q+j+U;var ft=n.width/2,gt=$===H.Pointer&&r.paneId===Wi.CANDLE,mt=(null!==(_=r.realX)&&void 0!==_?_:0)>ft,yt=0;if(gt){var _t=r.realX;yt=mt?_t-Z-at:_t+G}else mt?(yt=G+A,f.yAxis.inside&&f.yAxis.position===K.Left&&(yt+=a.width)):(yt=n.width-Z-at-M,f.yAxis.inside&&f.yAxis.position===K.Right&&(yt-=a.width));var bt=v+q;if(gt){var xt=r.y;bt=xt-rt/2,bt+rt>n.height-J-D&&(bt=n.height-J-rt-D),bt1){var c="{".concat(l[1],"}");o.text=o.text.replace(c,null!==(e=b[c])&&void 0!==e?e:p.defaultValue),"{change}"===c&&(o.color=0===m?s.priceMark.last.noChangeColor:m>0?s.priceMark.last.upColor:s.priceMark.last.downColor)}return{title:r,value:o}})},e}(Dn),Hn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._candleBarView=new An(n),n._candleAreaView=new Fn(n),n._candleHighLowPriceView=new Rn(n),n._candleLastPriceLineView=new Ln(n),n.addChild(n._candleBarView),n}return L(e,t),e.prototype.updateMainContent=function(t){var e=this.getPane().getChart().getStyles().candle;e.type!==$.Area?(this._candleBarView.draw(t),this._candleHighLowPriceView.draw(t),this._candleAreaView.stopAnimation()):this._candleAreaView.draw(t),this._candleLastPriceLineView.draw(t)},e.prototype.createTooltipView=function(){return new Wn(this)},e}(Bn),$n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i,n=this,a=this.getWidget(),r=a.getPane(),o=a.getBounding(),s=r.getAxisComponent(),l=this.getAxisStyles(r.getChart().getStyles());if(l.show){l.axisLine.show&&(null===(e=this.createFigure({name:"line",attrs:this.createAxisLine(o,l),styles:l.axisLine}))||void 0===e||e.draw(t));var c=s.getTicks();if(l.tickLine.show){var u=this.createTickLines(c,o,l);u.forEach(function(e){var i;null===(i=n.createFigure({name:"line",attrs:e,styles:l.tickLine}))||void 0===i||i.draw(t)})}if(l.tickText.show){var d=this.createTickTexts(c,o,l);null===(i=this.createFigure({name:"text",attrs:d,styles:l.tickText}))||void 0===i||i.draw(t)}}},e}(kn),Kn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getAxisStyles=function(t){return t.yAxis},e.prototype.createAxisLine=function(t,e){var i,n=this.getWidget().getPane().getAxisComponent(),a=e.axisLine.size;return i=n.isFromZero()?0:t.width-a,{coordinates:[{x:i,y:0},{x:i,y:t.height}]}},e.prototype.createTickLines=function(t,e,i){var n=this.getWidget().getPane().getAxisComponent(),a=i.axisLine,r=i.tickLine,o=0,s=0;return n.isFromZero()?(o=0,a.show&&(o+=a.size),s=o+r.length):(o=e.width,a.show&&(o-=a.size),s=o-r.length),t.map(function(t){return{coordinates:[{x:o,y:t.coord},{x:s,y:t.coord}]}})},e.prototype.createTickTexts=function(t,e,i){var n=this.getWidget().getPane().getAxisComponent(),a=i.axisLine,r=i.tickLine,o=i.tickText,s=0;n.isFromZero()?(s=o.marginStart,a.show&&(s+=a.size),r.show&&(s+=r.length)):(s=e.width-o.marginEnd,a.show&&(s-=a.size),r.show&&(s-=r.length));var l=this.getWidget().getPane().getAxisComponent().isFromZero()?"left":"right";return t.map(function(t){return{x:s,y:t.coord,text:t.text,align:l,baseline:"middle"}})},e}($n),Yn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=n.getChart().getChartStore(),o=r.getStyles().candle.priceMark,s=o.last,l=s.text;if(o.show&&s.show&&l.show){var c=r.getPrecision(),u=n.getAxisComponent(),d=r.getDataList(),h=d[d.length-1];if(At(h)){var p=h.close,v=h.open,f=u.convertToNicePixel(p),g=void 0;g=p>v?s.upColor:p1&&p.unshift({type:"rect",attrs:{x:0,y:g,width:i.width,height:m-g},ignoreEvent:!0})}return p},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createYAxisFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e}(Tn),Un=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=i.getPane().getChart().getChartStore(),o=r.getTooltipStore().getCrosshair(),s=r.getStyles().crosshair;if(Mt(o.paneId)&&this.compare(o,n.getId())&&s.show){var l=this.getDirectionStyles(s),c=l.text;if(l.show&&c.show){var u=n.getAxisComponent(),d=this.getText(o,r,u);t.font=Ht(c.size,c.weight,c.family),null===(e=this.createFigure({name:"text",attrs:this.getTextAttrs(d,t.measureText(d).width,o,a,u,c),styles:c}))||void 0===e||e.draw(t)}}},e.prototype.compare=function(t,e){return t.paneId===e},e.prototype.getDirectionStyles=function(t){return t.horizontal},e.prototype.getText=function(t,e,i){var n,a=i,r=i.convertFromPixel(t.y);if(a.getType()===Y.Percentage){var o=e.getVisibleFirstData();n="".concat(((r-o.close)/o.close*100).toFixed(2),"%")}else{var s=e.getIndicatorStore().getInstances(t.paneId),l=0,c=!1;a.isInCandle()?l=e.getPrecision().price:s.forEach(function(t){l=Math.max(t.precision,l),c||(c=t.shouldFormatBigNumber)}),n=Nt(r,l),c&&(n=e.getCustomApi().formatBigNumber(n))}return Vt(zt(n,e.getThousandsSeparator()),e.getDecimalFoldThreshold())},e.prototype.getTextAttrs=function(t,e,i,n,a,r){var o,s,l=a;return l.isFromZero()?(o=0,s="left"):(o=n.width,s="right"),{x:o,y:i.y,text:t,align:s,baseline:"middle"}},e}(kn),Gn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._yAxisView=new Kn(n),n._candleLastPriceLabelView=new Yn(n),n._indicatorLastValueView=new Xn(n),n._overlayYAxisView=new jn(n),n._crosshairHorizontalLabelView=new Un(n),n.getContainer().style.cursor="ns-resize",n.addChild(n._overlayYAxisView),n}return L(e,t),e.prototype.getName=function(){return Gi.Y_AXIS},e.prototype.updateMain=function(t){this._yAxisView.draw(t),this.getPane().getAxisComponent().isInCandle()&&this._candleLastPriceLabelView.draw(t),this._indicatorLastValueView.draw(t)},e.prototype.updateOverlay=function(t){this._overlayYAxisView.draw(t),this._crosshairHorizontalLabelView.draw(t)},e}(en),Zn=function(){function t(t){this._range={from:0,to:0,range:0,realFrom:0,realTo:0,realRange:0},this._prevRange={from:0,to:0,range:0,realFrom:0,realTo:0,realRange:0},this._ticks=[],this._autoCalcTickFlag=!0,this._parent=t}return t.prototype.getParent=function(){return this._parent},t.prototype.buildTicks=function(t){if(this._autoCalcTickFlag&&(this._range=this.calcRange()),this._prevRange.from!==this._range.from||this._prevRange.to!==this._range.to||t){this._prevRange=this._range;var e=this.optimalTicks(this._calcTicks());return this._ticks=this.createTicks({range:this._range,bounding:this.getSelfBounding(),defaultTicks:e}),!0}return!1},t.prototype.getTicks=function(){return this._ticks},t.prototype.getScrollZoomEnabled=function(){var t;return null===(t=this.getParent().getOptions().axisOptions.scrollZoomEnabled)||void 0===t||t},t.prototype.setRange=function(t){this._autoCalcTickFlag=!1,this._range=t},t.prototype.getRange=function(){return this._range},t.prototype.setAutoCalcTickFlag=function(t){this._autoCalcTickFlag=t},t.prototype.getAutoCalcTickFlag=function(){return this._autoCalcTickFlag},t.prototype._calcTicks=function(){var t=this._range,e=t.realFrom,i=t.realTo,n=t.realRange,a=[];if(n>=0){var r=Z(this._calcTickInterval(n),2),o=r[0],s=r[1],l=fe(Math.ceil(e/o)*o,s),c=fe(Math.floor(i/o)*o,s),u=0,d=l;if(0!==o)while(d<=c){var h=d.toFixed(s);a[u]={text:h,coord:0,value:h},++u,d+=o}}return a},t.prototype._calcTickInterval=function(t){var e=ve(t/8),i=ge(e);return[e,i]},t}(),qn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.calcRange=function(){var t,e,i,n,a=this.getParent(),r=a.getChart(),o=r.getChartStore(),s=Number.MAX_SAFE_INTEGER,l=Number.MIN_SAFE_INTEGER,c=[],u=!1,d=Number.MAX_SAFE_INTEGER,h=Number.MIN_SAFE_INTEGER,p=Number.MAX_SAFE_INTEGER,v=o.getIndicatorStore().getInstances(a.getId());v.forEach(function(t){var e,i,n;u||(u=null!==(e=t.shouldOhlc)&&void 0!==e&&e),p=Math.min(p,t.precision),Et(t.minValue)&&(d=Math.min(d,t.minValue)),Et(t.maxValue)&&(h=Math.max(h,t.maxValue)),c.push({figures:null!==(i=t.figures)&&void 0!==i?i:[],result:null!==(n=t.result)&&void 0!==n?n:[]})});var f=4,g=this.isInCandle();if(g){var m=o.getPrecision().price;f=p!==Number.MAX_SAFE_INTEGER?Math.min(p,m):m}else p!==Number.MAX_SAFE_INTEGER&&(f=p);var y=o.getVisibleDataList(),_=r.getStyles().candle,b=_.type===$.Area,x=_.area.value,w=g&&!b||!g&&u;y.forEach(function(t){var e=t.dataIndex,i=t.data;if(At(i)&&(w&&(s=Math.min(s,i.low),l=Math.max(l,i.high)),g&&b)){var n=i[x];Et(n)&&(s=Math.min(s,n),l=Math.max(l,n))}c.forEach(function(t){var i,n=t.figures,a=t.result,r=null!==(i=a[e])&&void 0!==i?i:{};n.forEach(function(t){var e=r[t.key];Et(e)&&(s=Math.min(s,e),l=Math.max(l,e))})})}),s!==Number.MAX_SAFE_INTEGER&&l!==Number.MIN_SAFE_INTEGER?(s=Math.min(d,s),l=Math.max(h,l)):(s=0,l=10);var S,C=this.getType();switch(C){case Y.Percentage:var k=o.getVisibleFirstData();At(k)&&Et(k.close)&&(s=(s-k.close)/k.close*100,l=(l-k.close)/k.close*100),S=Math.pow(10,-2);break;case Y.Log:s=ye(s),l=ye(l),S=.05*_e(-f);break;default:S=_e(-f)}if(s===l||Math.abs(s-l)=1&&(M/=A);var D=null!==(n=null===P||void 0===P?void 0:P.bottom)&&void 0!==n?n:.1;D>=1&&(D/=A);var T,B,F,R=Math.abs(l-s);return s-=R*D,l+=R*M,R=Math.abs(l-s),C===Y.Log?(T=_e(s),B=_e(l),F=Math.abs(B-T)):(T=s,B=l,F=R),{from:s,to:l,range:R,realFrom:T,realTo:B,realRange:F}},e.prototype._innerConvertToPixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.getRange(),r=a.from,o=a.range,s=(t-r)/o;return this.isReverse()?Math.round(s*n):Math.round((1-s)*n)},e.prototype.isInCandle=function(){return this.getParent().getId()===Wi.CANDLE},e.prototype.getType=function(){return this.isInCandle()?this.getParent().getChart().getStyles().yAxis.type:Y.Normal},e.prototype.getPosition=function(){return this.getParent().getChart().getStyles().yAxis.position},e.prototype.isReverse=function(){return!!this.isInCandle()&&this.getParent().getChart().getStyles().yAxis.reverse},e.prototype.isFromZero=function(){var t=this.getParent().getChart().getStyles().yAxis,e=t.inside;return t.position===K.Left&&e||t.position===K.Right&&!e},e.prototype.optimalTicks=function(t){var e,i,n=this,a=this.getParent(),r=null!==(i=null===(e=a.getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,o=a.getChart().getChartStore(),s=o.getCustomApi(),l=[],c=this.getType(),u=o.getIndicatorStore().getInstances(a.getId()),d=o.getThousandsSeparator(),h=o.getDecimalFoldThreshold(),p=0,v=!1;this.isInCandle()?p=o.getPrecision().price:u.forEach(function(t){p=Math.max(p,t.precision),v||(v=t.shouldFormatBigNumber)});var f,g=o.getStyles().xAxis.tickText.size;return t.forEach(function(t){var e,i=t.value,a=n._innerConvertToPixel(+i);switch(c){case Y.Percentage:e="".concat(Nt(i,2),"%");break;case Y.Log:a=n._innerConvertToPixel(ye(+i)),e=Nt(i,p);break;default:e=Nt(i,p),v&&(e=s.formatBigNumber(i));break}e=Vt(zt(e,d),h);var o=Et(f);a>g&&a2*g||!o)&&(l.push({text:e,coord:a,value:i}),f=a)}),l},e.prototype.getAutoSize=function(){var t=this.getParent(),e=t.getChart(),i=e.getStyles(),n=i.yAxis,a=n.size;if("auto"!==a)return a;var r=e.getChartStore(),o=r.getCustomApi(),s=0;if(n.show&&(n.axisLine.show&&(s+=n.axisLine.size),n.tickLine.show&&(s+=n.tickLine.length),n.tickText.show)){var l=0;this.getTicks().forEach(function(t){l=Math.max(l,$t(t.text,n.tickText.size,n.tickText.weight,n.tickText.family))}),s+=n.tickText.marginStart+n.tickText.marginEnd+l}var c=i.crosshair,u=0;if(c.show&&c.horizontal.show&&c.horizontal.text.show){var d=r.getIndicatorStore().getInstances(t.getId()),h=0,p=!1;d.forEach(function(t){h=Math.max(t.precision,h),p||(p=t.shouldFormatBigNumber)});var v=2;if(this.getType()!==Y.Percentage)if(this.isInCandle()){var f=r.getPrecision().price,g=i.indicator.lastValueMark;v=g.show&&g.text.show?Math.max(h,f):f}else v=h;var m=Nt(this.getRange().to,v);p&&(m=o.formatBigNumber(m)),m=Vt(m,r.getDecimalFoldThreshold()),u+=c.horizontal.text.paddingLeft+c.horizontal.text.paddingRight+2*c.horizontal.text.borderSize+$t(m,c.horizontal.text.size,c.horizontal.text.weight,c.horizontal.text.family)}return Math.max(s,u)},e.prototype.getSelfBounding=function(){return this.getParent().getYAxisWidget().getBounding()},e.prototype.convertFromPixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.getRange(),r=a.from,o=a.range,s=this.isReverse()?t/n:1-t/n,l=s*o+r;switch(this.getType()){case Y.Percentage:var c=this.getParent().getChart().getChartStore().getVisibleFirstData();return At(c)&&Et(c.close)?c.close*l/100+c.close:0;case Y.Log:return _e(l);default:return l}},e.prototype.convertToRealValue=function(t){var e=t;return this.getType()===Y.Log&&(e=_e(t)),e},e.prototype.convertToPixel=function(t){var e=t;switch(this.getType()){case Y.Percentage:var i=this.getParent().getChart().getChartStore().getVisibleFirstData();At(i)&&Et(i.close)&&(e=(t-i.close)/i.close*100);break;case Y.Log:e=ye(t);break;default:e=t}return this._innerConvertToPixel(e)},e.prototype.convertToNicePixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.convertToPixel(t);return Math.round(Math.max(.05*n,Math.min(a,.98*n)))},e.extend=function(t){var i=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return L(i,e),i.prototype.createTicks=function(e){return t.createTicks(e)},i}(e);return i},e}(Zn),Jn={name:"default",createTicks:function(t){var e=t.defaultTicks;return e}},Qn={default:qn.extend(Jn)};function ta(t){var e;return null!==(e=Qn[t])&&void 0!==e?e:Qn.default}var ea=function(){function t(t,e,i,n){this._bounding=Qi(),this._chart=i,this._id=n,this._init(t,e)}return t.prototype._init=function(t,e){this._rootContainer=t,this._container=he("div",{width:"100%",margin:"0",padding:"0",position:"relative",overflow:"hidden",boxSizing:"border-box"}),null!==e?t.insertBefore(this._container,e):t.appendChild(this._container)},t.prototype.getContainer=function(){return this._container},t.prototype.getId=function(){return this._id},t.prototype.getChart=function(){return this._chart},t.prototype.getBounding=function(){return this._bounding},t.prototype.update=function(t){this._bounding.height!==this._container.clientHeight&&(this._container.style.height="".concat(this._bounding.height,"px")),this.updateImp(null!==t&&void 0!==t?t:3,this._container,this._bounding)},t.prototype.destroy=function(){this._rootContainer.removeChild(this._container)},t}(),ia=function(t){function e(e,i,n,a,r){var o=t.call(this,e,i,n,a)||this;o._yAxisWidget=null,o._options={minHeight:zi,dragEnabled:!0,gap:{top:.2,bottom:.1},axisOptions:{name:"default",scrollZoomEnabled:!0}};var s=o.getContainer();return o._mainWidget=o.createMainWidget(s),o._yAxisWidget=o.createYAxisWidget(s),o.setOptions(r),o}return L(e,t),e.prototype.setOptions=function(t){var e,i,n,a,r,o=null===(e=t.axisOptions)||void 0===e?void 0:e.name;return(this._options.axisOptions.name!==o&&Mt(o)||!At(this._axis))&&(this._axis=this.createAxisComponent(null!==o&&void 0!==o?o:"default")),wt(this._options,t),this.getId()===Wi.X_AXIS?(a=this.getMainWidget().getContainer(),r="ew-resize"):(a=this.getYAxisWidget().getContainer(),r="ns-resize"),null===(n=null===(i=t.axisOptions)||void 0===i?void 0:i.scrollZoomEnabled)||void 0===n||n?a.style.cursor=r:a.style.cursor="default",this},e.prototype.getOptions=function(){return this._options},e.prototype.getAxisComponent=function(){return this._axis},e.prototype.setBounding=function(t,e,i){var n,a;wt(this.getBounding(),t);var r={};return At(t.height)&&(r.height=t.height),At(t.top)&&(r.top=t.top),this._mainWidget.setBounding(r),null===(n=this._yAxisWidget)||void 0===n||n.setBounding(r),At(e)&&this._mainWidget.setBounding(e),At(i)&&(null===(a=this._yAxisWidget)||void 0===a||a.setBounding(i)),this},e.prototype.getMainWidget=function(){return this._mainWidget},e.prototype.getYAxisWidget=function(){return this._yAxisWidget},e.prototype.updateImp=function(t){var e;this._mainWidget.update(t),null===(e=this._yAxisWidget)||void 0===e||e.update(t)},e.prototype.destroy=function(){var e;t.prototype.destroy.call(this),this._mainWidget.destroy(),null===(e=this._yAxisWidget)||void 0===e||e.destroy()},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),r=a.getContext("2d"),o=Wt(a);a.width=i*o,a.height=n*o,r.scale(o,o);var s=this._mainWidget.getBounding();if(r.drawImage(this._mainWidget.getImage(t),s.left,0,s.width,s.height),null!==this._yAxisWidget){var l=this._yAxisWidget.getBounding();r.drawImage(this._yAxisWidget.getImage(t),l.left,0,l.width,l.height)}return a},e.prototype.createYAxisWidget=function(t){return null},e}(ea),na=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.createAxisComponent=function(t){var e=ta(null!==t&&void 0!==t?t:"default");return new e(this)},e.prototype.createMainWidget=function(t){return new Bn(t,this)},e.prototype.createYAxisWidget=function(t){return new Gn(t,this)},e}(ia),aa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.createMainWidget=function(t){return new Hn(t,this)},e}(na),ra=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getAxisStyles=function(t){return t.xAxis},e.prototype.createAxisLine=function(t){return{coordinates:[{x:0,y:0},{x:t.width,y:0}]}},e.prototype.createTickLines=function(t,e,i){var n=i.tickLine,a=i.axisLine.size;return t.map(function(t){return{coordinates:[{x:t.coord,y:0},{x:t.coord,y:a+n.length}]}})},e.prototype.createTickTexts=function(t,e,i){var n=i.tickText,a=i.axisLine.size,r=i.tickLine.length;return t.map(function(t){return{x:t.coord,y:a+r+n.marginStart,text:t.text,align:"center",baseline:"top"}})},e}($n),oa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.coordinateToPointTimestampDataIndexFlag=function(){return!0},e.prototype.coordinateToPointValueFlag=function(){return!1},e.prototype.getCompleteOverlays=function(t){return t.getInstances()},e.prototype.getProgressOverlay=function(t){return t.instance},e.prototype.getDefaultFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h=[];if(t.needDefaultXAxisFigure&&t.id===(null===(d=u.instance)||void 0===d?void 0:d.id)){var p=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER;e.forEach(function(e,i){p=Math.min(p,e.x),v=Math.max(v,e.x);var n=t.points[i];if(Et(n.timestamp)){var o=r.formatDate(a,n.timestamp,"YYYY-MM-DD HH:mm",qt.Crosshair);h.push({type:"text",attrs:{x:e.x,y:0,text:o,align:"center"},ignoreEvent:!0})}}),e.length>1&&h.unshift({type:"rect",attrs:{x:p,y:0,width:v-p,height:i.height},ignoreEvent:!0})}return h},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createXAxisFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e}(jn),sa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.compare=function(t){return At(t.kLineData)&&t.dataIndex===t.realDataIndex},e.prototype.getDirectionStyles=function(t){return t.vertical},e.prototype.getText=function(t,e){var i,n=null===(i=t.kLineData)||void 0===i?void 0:i.timestamp;return e.getCustomApi().formatDate(e.getTimeScaleStore().getDateTimeFormat(),n,"YYYY-MM-DD HH:mm",qt.Crosshair)},e.prototype.getTextAttrs=function(t,e,i,n,a,r){var o,s=i.realX,l="center";return s-e/2-r.paddingLeft<0?(o=0,l="left"):s+e/2+r.paddingRight>n.width?(o=n.width,l="right"):o=s,{x:o,y:0,text:t,align:l,baseline:"top"}},e}(Un),la=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._xAxisView=new ra(n),n._overlayXAxisView=new oa(n),n._crosshairVerticalLabelView=new sa(n),n.getContainer().style.cursor="ew-resize",n.addChild(n._overlayXAxisView),n}return L(e,t),e.prototype.getName=function(){return Gi.X_AXIS},e.prototype.updateMain=function(t){this._xAxisView.draw(t)},e.prototype.updateOverlay=function(t){this._overlayXAxisView.draw(t),this._crosshairVerticalLabelView.draw(t)},e}(en),ca=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.calcRange=function(){var t=this.getParent().getChart().getChartStore(),e=t.getTimeScaleStore().getVisibleRange(),i=e.from,n=e.to,a=i,r=n-1,o=n-i;return{from:a,to:r,range:o,realFrom:a,realTo:r,realRange:o}},e.prototype.optimalTicks=function(t){var e,i,n=this.getParent().getChart(),a=n.getChartStore(),r=a.getCustomApi().formatDate,o=[],s=t.length,l=a.getDataList();if(s>0){var c=a.getTimeScaleStore().getDateTimeFormat(),u=n.getStyles().xAxis.tickText,d=$t("00-00 00:00",u.size,u.weight,u.family),h=parseInt(t[0].value,10),p=this.convertToPixel(h),v=1;if(s>1){var f=parseInt(t[1].value,10),g=this.convertToPixel(f),m=Math.abs(g-p);me&&(t.apply(this,arguments),i=n)}}var fa=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._dragFlag=!1,n._dragStartY=0,n._topPaneHeight=0,n._bottomPaneHeight=0,n._pressedMouseMoveEvent=va(n._pressedTouchMouseMoveEvent,20),n.registerEvent("touchStartEvent",n._mouseDownEvent.bind(n)).registerEvent("touchMoveEvent",n._pressedMouseMoveEvent.bind(n)).registerEvent("touchEndEvent",n._mouseUpEvent.bind(n)).registerEvent("mouseDownEvent",n._mouseDownEvent.bind(n)).registerEvent("mouseUpEvent",n._mouseUpEvent.bind(n)).registerEvent("pressedMouseMoveEvent",n._pressedMouseMoveEvent.bind(n)).registerEvent("mouseEnterEvent",n._mouseEnterEvent.bind(n)).registerEvent("mouseLeaveEvent",n._mouseLeaveEvent.bind(n)),n}return L(e,t),e.prototype.getName=function(){return Gi.SEPARATOR},e.prototype.checkEventOn=function(){return!0},e.prototype._mouseDownEvent=function(t){this._dragFlag=!0,this._dragStartY=t.pageY;var e=this.getPane();return this._topPaneHeight=e.getTopPane().getBounding().height,this._bottomPaneHeight=e.getBottomPane().getBounding().height,!0},e.prototype._mouseUpEvent=function(){return this._dragFlag=!1,this._mouseLeaveEvent()},e.prototype._pressedTouchMouseMoveEvent=function(t){var e=t.pageY-this._dragStartY,i=this.getPane(),n=i.getTopPane(),a=i.getBottomPane(),r=e<0;if(null!==n&&(null===a||void 0===a?void 0:a.getOptions().dragEnabled)){var o=void 0,s=void 0,l=void 0,c=void 0;r?(o=n,s=a,l=this._topPaneHeight,c=this._bottomPaneHeight):(o=a,s=n,l=this._bottomPaneHeight,c=this._topPaneHeight);var u=o.getOptions().minHeight;if(l>u){var d=Math.max(l-Math.abs(e),u),h=l-d;o.setBounding({height:d}),s.setBounding({height:c+h});var p=i.getChart();p.getChartStore().getActionStore().execute(Tt.OnPaneDrag,{paneId:i.getId()}),p.adjustPaneViewport(!0,!0,!0,!0,!0)}}return!0},e.prototype._mouseEnterEvent=function(){var t,e=this.getPane(),i=e.getBottomPane();if(null!==(t=null===i||void 0===i?void 0:i.getOptions().dragEnabled)&&void 0!==t&&t){var n=e.getChart(),a=n.getStyles().separator;return this.getContainer().style.background=a.activeBackgroundColor,!0}return!1},e.prototype._mouseLeaveEvent=function(){return!this._dragFlag&&(this.getContainer().style.background="",!0)},e.prototype.createContainer=function(){return he("div",{width:"100%",height:"".concat(Zi,"px"),margin:"0",padding:"0",position:"absolute",top:"-3px",zIndex:"20",boxSizing:"border-box",cursor:"ns-resize"})},e.prototype.updateImp=function(t,e,i){if(4===i||2===i){var n=this.getPane().getChart().getStyles().separator;t.style.top="".concat(-Math.floor((Zi-n.size)/2),"px"),t.style.height="".concat(Zi,"px")}},e}(tn),ga=function(t){function e(e,i,n,a,r,o){var s=t.call(this,e,i,n,a)||this;return s.getContainer().style.overflow="",s._topPane=r,s._bottomPane=o,s._separatorWidget=new fa(s.getContainer(),s),s}return L(e,t),e.prototype.setBounding=function(t){return wt(this.getBounding(),t),this},e.prototype.getTopPane=function(){return this._topPane},e.prototype.setTopPane=function(t){return this._topPane=t,this},e.prototype.getBottomPane=function(){return this._bottomPane},e.prototype.setBottomPane=function(t){return this._bottomPane=t,this},e.prototype.getWidget=function(){return this._separatorWidget},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=this.getChart().getStyles().separator,r=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),o=r.getContext("2d"),s=Wt(r);return r.width=i*s,r.height=n*s,o.scale(s,s),o.fillStyle=a.color,o.fillRect(0,0,i,n),r},e.prototype.updateImp=function(t,e,i){if(4===t||2===t){var n=this.getChart().getStyles().separator;e.style.backgroundColor=n.color,e.style.height="".concat(i.height,"px"),e.style.marginLeft="".concat(i.left,"px"),e.style.width="".concat(i.width,"px"),this._separatorWidget.update(t)}},e}(ea);function ma(){var t;return"undefined"!==typeof window&&(null!==(t=window.navigator.userAgent.toLowerCase().indexOf("firefox"))&&void 0!==t?t:-1)>-1}function ya(){return"undefined"!==typeof window&&/iPhone|iPad|iPod/.test(window.navigator.platform)}var _a,ba=10,xa=function(){function t(t,e,i){var n=this;this._clickCount=0,this._clickTimeoutId=null,this._clickCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY},this._tapCount=0,this._tapTimeoutId=null,this._tapCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY},this._longTapTimeoutId=null,this._longTapActive=!1,this._mouseMoveStartCoordinate=null,this._touchMoveStartCoordinate=null,this._touchMoveExceededManhattanDistance=!1,this._cancelClick=!1,this._cancelTap=!1,this._unsubscribeOutsideMouseEvents=null,this._unsubscribeOutsideTouchEvents=null,this._unsubscribeMobileSafariEvents=null,this._unsubscribeMousemove=null,this._unsubscribeMouseWheel=null,this._unsubscribeContextMenu=null,this._unsubscribeRootMouseEvents=null,this._unsubscribeRootTouchEvents=null,this._startPinchMiddleCoordinate=null,this._startPinchDistance=0,this._pinchPrevented=!1,this._preventTouchDragProcess=!1,this._mousePressed=!1,this._lastTouchEventTimeStamp=0,this._activeTouchId=null,this._acceptMouseLeave=!ya(),this._onFirefoxOutsideMouseUp=function(t){n._mouseUpHandler(t)},this._onMobileSafariDoubleClick=function(t){if(n._firesTouchEvents(t)){if(++n._tapCount,null!==n._tapTimeoutId&&n._tapCount>1){var e=n._mouseTouchMoveWithDownInfo(n._getCoordinate(t),n._tapCoordinate).manhattanDistance;e<30&&!n._cancelTap&&n._processEvent(n._makeCompatEvent(t),n._handler.doubleTapEvent),n._resetTapTimeout()}}else if(++n._clickCount,null!==n._clickTimeoutId&&n._clickCount>1){e=n._mouseTouchMoveWithDownInfo(n._getCoordinate(t),n._clickCoordinate).manhattanDistance;e<5&&!n._cancelClick&&n._processEvent(n._makeCompatEvent(t),n._handler.mouseDoubleClickEvent),n._resetClickTimeout()}},this._target=t,this._handler=e,this._options=i,this._init()}return t.prototype.destroy=function(){null!==this._unsubscribeOutsideMouseEvents&&(this._unsubscribeOutsideMouseEvents(),this._unsubscribeOutsideMouseEvents=null),null!==this._unsubscribeOutsideTouchEvents&&(this._unsubscribeOutsideTouchEvents(),this._unsubscribeOutsideTouchEvents=null),null!==this._unsubscribeMousemove&&(this._unsubscribeMousemove(),this._unsubscribeMousemove=null),null!==this._unsubscribeMouseWheel&&(this._unsubscribeMouseWheel(),this._unsubscribeMouseWheel=null),null!==this._unsubscribeContextMenu&&(this._unsubscribeContextMenu(),this._unsubscribeContextMenu=null),null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null),null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null),null!==this._unsubscribeMobileSafariEvents&&(this._unsubscribeMobileSafariEvents(),this._unsubscribeMobileSafariEvents=null),this._clearLongTapTimeout(),this._resetClickTimeout()},t.prototype._mouseEnterHandler=function(t){var e,i,n,a=this;null===(e=this._unsubscribeMousemove)||void 0===e||e.call(this),null===(i=this._unsubscribeMouseWheel)||void 0===i||i.call(this),null===(n=this._unsubscribeContextMenu)||void 0===n||n.call(this);var r=this._mouseMoveHandler.bind(this);this._unsubscribeMousemove=function(){a._target.removeEventListener("mousemove",r)},this._target.addEventListener("mousemove",r);var o=this._mouseWheelHandler.bind(this);this._unsubscribeMouseWheel=function(){a._target.removeEventListener("wheel",o)},this._target.addEventListener("wheel",o,{passive:!1});var s=this._contextMenuHandler.bind(this);this._unsubscribeContextMenu=function(){a._target.removeEventListener("contextmenu",s)},this._target.addEventListener("contextmenu",s,{passive:!1}),this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseEnterEvent),this._acceptMouseLeave=!0)},t.prototype._resetClickTimeout=function(){null!==this._clickTimeoutId&&clearTimeout(this._clickTimeoutId),this._clickCount=0,this._clickTimeoutId=null,this._clickCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY}},t.prototype._resetTapTimeout=function(){null!==this._tapTimeoutId&&clearTimeout(this._tapTimeoutId),this._tapCount=0,this._tapTimeoutId=null,this._tapCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY}},t.prototype._mouseMoveHandler=function(t){this._mousePressed||null!==this._touchMoveStartCoordinate||this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseMoveEvent),this._acceptMouseLeave=!0)},t.prototype._mouseWheelHandler=function(t){if(Math.abs(t.deltaX)>Math.abs(t.deltaY)){if(!At(this._handler.mouseWheelHortEvent))return;if(this._preventDefault(t),0===Math.abs(t.deltaX))return;this._handler.mouseWheelHortEvent(this._makeCompatEvent(t),-t.deltaX)}else{if(!At(this._handler.mouseWheelVertEvent))return;var e=-t.deltaY/100;if(0===e)return;switch(this._preventDefault(t),t.deltaMode){case t.DOM_DELTA_PAGE:e*=120;break;case t.DOM_DELTA_LINE:e*=32;break}if(0!==e){var i=Math.sign(e)*Math.min(1,Math.abs(e));this._handler.mouseWheelVertEvent(this._makeCompatEvent(t),i)}}},t.prototype._contextMenuHandler=function(t){this._preventDefault(t)},t.prototype._touchMoveHandler=function(t){var e=this._touchWithId(t.changedTouches,this._activeTouchId);if(null!==e&&(this._lastTouchEventTimeStamp=this._eventTimeStamp(t),null===this._startPinchMiddleCoordinate&&!this._preventTouchDragProcess)){this._pinchPrevented=!0;var i=this._mouseTouchMoveWithDownInfo(this._getCoordinate(e),this._touchMoveStartCoordinate),n=i.xOffset,a=i.yOffset,r=i.manhattanDistance;if(this._touchMoveExceededManhattanDistance||!(r<5)){if(!this._touchMoveExceededManhattanDistance){var o=.5*n,s=a>=o&&!this._options.treatVertDragAsPageScroll(),l=o>a&&!this._options.treatHorzDragAsPageScroll();s||l||(this._preventTouchDragProcess=!0),this._touchMoveExceededManhattanDistance=!0,this._cancelTap=!0,this._clearLongTapTimeout(),this._resetTapTimeout()}this._preventTouchDragProcess||this._processEvent(this._makeCompatEvent(t,e),this._handler.touchMoveEvent)}}},t.prototype._mouseMoveWithDownHandler=function(t){if(0===t.button){var e=this._mouseTouchMoveWithDownInfo(this._getCoordinate(t),this._mouseMoveStartCoordinate),i=e.manhattanDistance;i>=5&&(this._cancelClick=!0,this._resetClickTimeout()),this._cancelClick&&this._processEvent(this._makeCompatEvent(t),this._handler.pressedMouseMoveEvent)}},t.prototype._mouseTouchMoveWithDownInfo=function(t,e){var i=Math.abs(e.x-t.x),n=Math.abs(e.y-t.y),a=i+n;return{xOffset:i,yOffset:n,manhattanDistance:a}},t.prototype._touchEndHandler=function(t){var e=this._touchWithId(t.changedTouches,this._activeTouchId);if(null===e&&0===t.touches.length&&(e=t.changedTouches[0]),null!==e){this._activeTouchId=null,this._lastTouchEventTimeStamp=this._eventTimeStamp(t),this._clearLongTapTimeout(),this._touchMoveStartCoordinate=null,null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null);var i=this._makeCompatEvent(t,e);if(this._processEvent(i,this._handler.touchEndEvent),++this._tapCount,null!==this._tapTimeoutId&&this._tapCount>1){var n=this._mouseTouchMoveWithDownInfo(this._getCoordinate(e),this._tapCoordinate).manhattanDistance;n<30&&!this._cancelTap&&this._processEvent(i,this._handler.doubleTapEvent),this._resetTapTimeout()}else this._cancelTap||(this._processEvent(i,this._handler.tapEvent),At(this._handler.tapEvent)&&this._preventDefault(t));0===this._tapCount&&this._preventDefault(t),0===t.touches.length&&this._longTapActive&&(this._longTapActive=!1,this._preventDefault(t))}},t.prototype._mouseUpHandler=function(t){if(0===t.button){var e=this._makeCompatEvent(t);if(this._mouseMoveStartCoordinate=null,this._mousePressed=!1,null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null),ma()){var i=this._target.ownerDocument.documentElement;i.removeEventListener("mouseleave",this._onFirefoxOutsideMouseUp)}if(!this._firesTouchEvents(t))if(this._processEvent(e,this._handler.mouseUpEvent),++this._clickCount,null!==this._clickTimeoutId&&this._clickCount>1){var n=this._mouseTouchMoveWithDownInfo(this._getCoordinate(t),this._clickCoordinate).manhattanDistance;n<5&&!this._cancelClick&&this._processEvent(e,this._handler.mouseDoubleClickEvent),this._resetClickTimeout()}else this._cancelClick||this._processEvent(e,this._handler.mouseClickEvent)}},t.prototype._clearLongTapTimeout=function(){null!==this._longTapTimeoutId&&(clearTimeout(this._longTapTimeoutId),this._longTapTimeoutId=null)},t.prototype._touchStartHandler=function(t){if(null===this._activeTouchId){var e=t.changedTouches[0];this._activeTouchId=e.identifier,this._lastTouchEventTimeStamp=this._eventTimeStamp(t);var i=this._target.ownerDocument.documentElement;this._cancelTap=!1,this._touchMoveExceededManhattanDistance=!1,this._preventTouchDragProcess=!1,this._touchMoveStartCoordinate=this._getCoordinate(e),null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null);var n=this._touchMoveHandler.bind(this),a=this._touchEndHandler.bind(this);this._unsubscribeRootTouchEvents=function(){i.removeEventListener("touchmove",n),i.removeEventListener("touchend",a)},i.addEventListener("touchmove",n,{passive:!1}),i.addEventListener("touchend",a,{passive:!1}),this._clearLongTapTimeout(),this._longTapTimeoutId=setTimeout(this._longTapHandler.bind(this,t),500),this._processEvent(this._makeCompatEvent(t,e),this._handler.touchStartEvent),null===this._tapTimeoutId&&(this._tapCount=0,this._tapTimeoutId=setTimeout(this._resetTapTimeout.bind(this),500),this._tapCoordinate=this._getCoordinate(e))}},t.prototype._mouseDownHandler=function(t){if(2===t.button)return this._preventDefault(t),void this._processEvent(this._makeCompatEvent(t),this._handler.mouseRightClickEvent);if(0===t.button){var e=this._target.ownerDocument.documentElement;ma()&&e.addEventListener("mouseleave",this._onFirefoxOutsideMouseUp),this._cancelClick=!1,this._mouseMoveStartCoordinate=this._getCoordinate(t),null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null);var i=this._mouseMoveWithDownHandler.bind(this),n=this._mouseUpHandler.bind(this);this._unsubscribeRootMouseEvents=function(){e.removeEventListener("mousemove",i),e.removeEventListener("mouseup",n)},e.addEventListener("mousemove",i),e.addEventListener("mouseup",n),this._mousePressed=!0,this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseDownEvent),null===this._clickTimeoutId&&(this._clickCount=0,this._clickTimeoutId=setTimeout(this._resetClickTimeout.bind(this),500),this._clickCoordinate=this._getCoordinate(t)))}},t.prototype._init=function(){var t=this;this._target.addEventListener("mouseenter",this._mouseEnterHandler.bind(this)),this._target.addEventListener("touchcancel",this._clearLongTapTimeout.bind(this));var e=this._target.ownerDocument,i=function(e){null!=t._handler.mouseDownOutsideEvent&&(e.composed&&t._target.contains(e.composedPath()[0])||null!==e.target&&t._target.contains(e.target)||t._handler.mouseDownOutsideEvent({x:0,y:0,pageX:0,pageY:0}))};this._unsubscribeOutsideTouchEvents=function(){e.removeEventListener("touchstart",i)},this._unsubscribeOutsideMouseEvents=function(){e.removeEventListener("mousedown",i)},e.addEventListener("mousedown",i),e.addEventListener("touchstart",i,{passive:!0}),ya()&&(this._unsubscribeMobileSafariEvents=function(){t._target.removeEventListener("dblclick",t._onMobileSafariDoubleClick)},this._target.addEventListener("dblclick",this._onMobileSafariDoubleClick)),this._target.addEventListener("mouseleave",this._mouseLeaveHandler.bind(this)),this._target.addEventListener("touchstart",this._touchStartHandler.bind(this),{passive:!0}),this._target.addEventListener("mousedown",function(t){if(1===t.button)return t.preventDefault(),!1}),this._target.addEventListener("mousedown",this._mouseDownHandler.bind(this)),this._initPinch(),this._target.addEventListener("touchmove",function(){},{passive:!1})},t.prototype._initPinch=function(){var t=this;(At(this._handler.pinchStartEvent)||At(this._handler.pinchEvent)||At(this._handler.pinchEndEvent))&&(this._target.addEventListener("touchstart",function(e){t._checkPinchState(e.touches)},{passive:!0}),this._target.addEventListener("touchmove",function(e){if(2===e.touches.length&&null!==t._startPinchMiddleCoordinate&&At(t._handler.pinchEvent)){var i=t._getTouchDistance(e.touches[0],e.touches[1]),n=i/t._startPinchDistance;t._handler.pinchEvent(X(X({},t._startPinchMiddleCoordinate),{pageX:0,pageY:0}),n),t._preventDefault(e)}},{passive:!1}),this._target.addEventListener("touchend",function(e){t._checkPinchState(e.touches)}))},t.prototype._checkPinchState=function(t){1===t.length&&(this._pinchPrevented=!1),2!==t.length||this._pinchPrevented||this._longTapActive?this._stopPinch():this._startPinch(t)},t.prototype._startPinch=function(t){var e,i=null!==(e=this._target.getBoundingClientRect())&&void 0!==e?e:{left:0,top:0};this._startPinchMiddleCoordinate={x:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,y:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this._startPinchDistance=this._getTouchDistance(t[0],t[1]),At(this._handler.pinchStartEvent)&&this._handler.pinchStartEvent({x:0,y:0,pageX:0,pageY:0}),this._clearLongTapTimeout()},t.prototype._stopPinch=function(){null!==this._startPinchMiddleCoordinate&&(this._startPinchMiddleCoordinate=null,At(this._handler.pinchEndEvent)&&this._handler.pinchEndEvent({x:0,y:0,pageX:0,pageY:0}))},t.prototype._mouseLeaveHandler=function(t){var e,i,n;null===(e=this._unsubscribeMousemove)||void 0===e||e.call(this),null===(i=this._unsubscribeMouseWheel)||void 0===i||i.call(this),null===(n=this._unsubscribeContextMenu)||void 0===n||n.call(this),this._firesTouchEvents(t)||this._acceptMouseLeave&&(this._processEvent(this._makeCompatEvent(t),this._handler.mouseLeaveEvent),this._acceptMouseLeave=!ya())},t.prototype._longTapHandler=function(t){var e=this._touchWithId(t.touches,this._activeTouchId);null!==e&&(this._processEvent(this._makeCompatEvent(t,e),this._handler.longTapEvent),this._cancelTap=!0,this._longTapActive=!0)},t.prototype._firesTouchEvents=function(t){var e;return At(null===(e=t.sourceCapabilities)||void 0===e?void 0:e.firesTouchEvents)?t.sourceCapabilities.firesTouchEvents:this._eventTimeStamp(t)this._startScrollCoordinate.y-s.y){var d=s.x-this._startScrollCoordinate.x;c.getTimeScaleStore().scroll(d)}return!0;case Gi.X_AXIS:case Gi.Y_AXIS:var h=o.dispatchEvent("pressedMouseMoveEvent",s);return h&&(null===(n=s.preventDefault)||void 0===n||n.call(s),this._chart.updatePane(1)),h}}return!1},t.prototype.touchEndEvent=function(t){var e=this,i=this._findWidgetByEvent(t).widget;if(null!==i){var n=this._makeWidgetEvent(t,i),a=i.getName();switch(a){case Gi.MAIN:if(i.dispatchEvent("mouseUpEvent",n),null!==this._startScrollCoordinate){var r=(new Date).getTime()-this._flingStartTime,o=n.x-this._startScrollCoordinate.x,s=o/(r>0?r:1)*20;if(r<200&&Math.abs(s)>0){var l=this._chart.getChartStore().getTimeScaleStore(),c=function(){e._flingScrollRequestId=oe(function(){l.startScroll(),l.scroll(s),s*=.975,Math.abs(s)<1?null!==e._flingScrollRequestId&&(se(e._flingScrollRequestId),e._flingScrollRequestId=null):c()})};c()}}return!0;case Gi.X_AXIS:case Gi.Y_AXIS:var u=i.dispatchEvent("mouseUpEvent",n);u&&this._chart.updatePane(1)}}return!1},t.prototype.tapEvent=function(t){var e=this._findWidgetByEvent(t),i=e.pane,n=e.widget,a=!1;if(null!==n){var r=this._makeWidgetEvent(t,n),o=n.dispatchEvent("mouseClickEvent",r);if(n.getName()===Gi.MAIN){var s=this._makeWidgetEvent(t,n),l=this._chart.getChartStore(),c=l.getTooltipStore();o?(this._touchCancelCrosshair=!0,this._touchCoordinate=null,c.setCrosshair(void 0,{notInvalidate:!0}),a=!0):(this._touchCancelCrosshair||this._touchZoomed||(this._touchCoordinate={x:s.x,y:s.y},c.setCrosshair({x:s.x,y:s.y,paneId:null===i||void 0===i?void 0:i.getId()},{notInvalidate:!0}),a=!0),this._touchCancelCrosshair=!1)}(a||o)&&this._chart.updatePane(1)}return a},t.prototype.doubleTapEvent=function(t){return this.mouseDoubleClickEvent(t)},t.prototype.longTapEvent=function(t){var e=this._findWidgetByEvent(t),i=e.pane,n=e.widget;if(null!==n&&n.getName()===Gi.MAIN){var a=this._makeWidgetEvent(t,n);return this._touchCoordinate={x:a.x,y:a.y},this._chart.getChartStore().getTooltipStore().setCrosshair({x:a.x,y:a.y,paneId:null===i||void 0===i?void 0:i.getId()}),!0}return!1},t.prototype._findWidgetByEvent=function(t){var e,i,n,a,r=t.x,o=t.y,s=this._chart.getAllSeparatorPanes(),l=this._chart.getChartStore().getStyles().separator.size;try{for(var c=G(s),u=c.next();!u.done;u=c.next()){var d=Z(u.value,2),h=d[1],p=h.getBounding(),v=p.top-Math.round((Zi-l)/2);if(r>=p.left&&r<=p.left+p.width&&o>=v&&o<=v+Zi)return{pane:h,widget:h.getWidget()}}}catch(k){e={error:k}}finally{try{u&&!u.done&&(i=c.return)&&i.call(c)}finally{if(e)throw e.error}}var f=this._chart.getAllDrawPanes(),g=null;try{for(var m=G(f),y=m.next();!y.done;y=m.next()){var _=y.value;p=_.getBounding();if(r>=p.left&&r<=p.left+p.width&&o>=p.top&&o<=p.top+p.height){g=_;break}}}catch(I){n={error:I}}finally{try{y&&!y.done&&(a=m.return)&&a.call(m)}finally{if(n)throw n.error}}var b=null;if(null!==g){if(null===b){var x=g.getMainWidget(),w=x.getBounding();r>=w.left&&r<=w.left+w.width&&o>=w.top&&o<=w.top+w.height&&(b=x)}if(null===b){var S=g.getYAxisWidget();if(null!==S){var C=S.getBounding();r>=C.left&&r<=C.left+C.width&&o>=C.top&&o<=C.top+C.height&&(b=S)}}}return{pane:g,widget:b}},t.prototype._makeWidgetEvent=function(t,e){var i,n,a,r=null!==(i=null===e||void 0===e?void 0:e.getBounding())&&void 0!==i?i:null;return X(X({},t),{x:t.x-(null!==(n=null===r||void 0===r?void 0:r.left)&&void 0!==n?n:0),y:t.y-(null!==(a=null===r||void 0===r?void 0:r.top)&&void 0!==a?a:0)})},t.prototype.destroy=function(){this._container.removeEventListener("keydown",this._boundKeyBoardDownEvent),this._event.destroy()},t}();(function(t){t["Root"]="root",t["Main"]="main",t["YAxis"]="yAxis"})(_a||(_a={}));var Sa=function(){function t(t,e){this._drawPanes=[],this._separatorPanes=new Map,this._initContainer(t),this._chartEvent=new wa(this._chartContainer,this),this._chartStore=new Ui(this,e),this._initPanes(e),this.adjustPaneViewport(!0,!0,!0)}return t.prototype._initContainer=function(t){this._container=t,this._chartContainer=he("div",{position:"relative",width:"100%",outline:"none",borderStyle:"none",cursor:"crosshair",boxSizing:"border-box",userSelect:"none",webkitUserSelect:"none",msUserSelect:"none",MozUserSelect:"none",webkitTapHighlightColor:"transparent"}),this._chartContainer.tabIndex=1,t.appendChild(this._chartContainer)},t.prototype._initPanes=function(t){var e,i=this,n=null!==(e=null===t||void 0===t?void 0:t.layout)&&void 0!==e?e:[{type:"candle"}],a=!1,r=!1,o=function(t){if(!r){var e=i._createPane(pa,Wi.X_AXIS,null!==t&&void 0!==t?t:{});i._xAxisPane=e,r=!0}};n.forEach(function(t){var e,n,r;switch(t.type){case"candle":if(!a){var s=null!==(e=t.options)&&void 0!==e?e:{};wt(s,{id:Wi.CANDLE}),i._candlePane=i._createPane(aa,Wi.CANDLE,s);var l=null!==(n=t.content)&&void 0!==n?n:[];l.forEach(function(t){i.createIndicator(t,!0,s)}),a=!0}break;case"indicator":var c;l=null!==(r=t.content)&&void 0!==r?r:[];if(l.length>0)l.forEach(function(e){At(c)?i.createIndicator(e,!0,{id:c}):c=i.createIndicator(e,!0,t.options)});break;case"xAxis":o(t.options);break}}),o({position:"bottom"})},t.prototype._createPane=function(t,e,i){var n,a=null,r=null,o=null===i||void 0===i?void 0:i.position;switch(o){case"top":var s=this._drawPanes[0];At(s)&&(r=new t(this._chartContainer,s.getContainer(),this,e,null!==i&&void 0!==i?i:{}),a=0);break;case"bottom":break;default:for(var l=this._drawPanes.length-1;l>-1;l--){var c=this._drawPanes[l],u=this._drawPanes[l-1];if("bottom"===(null===c||void 0===c?void 0:c.getOptions().position)&&"bottom"!==(null===u||void 0===u?void 0:u.getOptions().position)){r=new t(this._chartContainer,c.getContainer(),this,e,null!==i&&void 0!==i?i:{}),a=l;break}}}if(At(r)||(r=new t(this._chartContainer,null,this,e,null!==i&&void 0!==i?i:{})),Et(a)?(this._drawPanes.splice(a,0,r),n=a):(this._drawPanes.push(r),n=this._drawPanes.length-1),r.getId()!==Wi.X_AXIS){var d=this._drawPanes[n+1];if(At(d)&&d.getId()===Wi.X_AXIS&&(d=this._drawPanes[n+2]),At(d)){var h=this._separatorPanes.get(d);At(h)?h.setTopPane(r):(h=new ga(this._chartContainer,d.getContainer(),this,"",r,d),this._separatorPanes.set(d,h))}var p=this._drawPanes[n-1];if(At(p)&&p.getId()===Wi.X_AXIS&&(p=this._drawPanes[n-2]),At(p)){h=new ga(this._chartContainer,r.getContainer(),this,"",p,r);this._separatorPanes.set(r,h)}}return r},t.prototype._measurePaneHeight=function(){var t,e=this,i=Math.floor(this._container.clientHeight),n=this._chartStore.getStyles().separator.size,a=this._xAxisPane.getAxisComponent().getAutoSize(),r=i-a-this._separatorPanes.size*n;r<0&&(r=0);var o=0;this._drawPanes.forEach(function(t){if(t.getId()!==Wi.CANDLE&&t.getId()!==Wi.X_AXIS){var e=t.getBounding().height,i=t.getOptions().minHeight;er?(o=r,e=Math.max(r-o,0)):o+=e,t.setBounding({height:e})}});var s=r-o;null===(t=this._candlePane)||void 0===t||t.setBounding({height:s}),this._xAxisPane.setBounding({height:a});var l=0;this._drawPanes.forEach(function(t){var i=e._separatorPanes.get(t);At(i)&&(i.setBounding({height:n,top:l}),l+=n),t.setBounding({top:l}),l+=t.getBounding().height})},t.prototype._measurePaneWidth=function(){var t=this,e=Math.floor(this._container.clientWidth),i=this._chartStore.getStyles(),n=i.yAxis,a=n.position===K.Left,r=!n.inside,o=0,s=0,l=0,c=0;this._drawPanes.forEach(function(t){t.getId()!==Wi.X_AXIS&&(s=Math.max(s,t.getAxisComponent().getAutoSize()))}),s>e&&(s=e),r?(o=e-s,a?(l=0,c=s):(l=e-s,c=0)):(o=e,c=0,l=a?0:e-s),this._chartStore.getTimeScaleStore().setTotalBarSpace(o);var u,d={width:e},h={width:o,left:c},p={width:s,left:l},v=i.separator.fill;u=r&&!v?h:d,this._drawPanes.forEach(function(e){var i;null===(i=t._separatorPanes.get(e))||void 0===i||i.setBounding(u),e.setBounding(d,h,p)})},t.prototype._setPaneOptions=function(t,e){var i,n;if(Mt(t.id)){var a=this.getDrawPaneById(t.id),r=!1;if(null!==a){var o=e;if(t.id!==Wi.CANDLE&&Et(t.height)&&t.height>0){var s=Math.max(null!==(i=t.minHeight)&&void 0!==i?i:a.getOptions().minHeight,0),l=Math.max(s,t.height);a.setBounding({height:l}),o=!0,r=!0}(Mt(null===(n=t.axisOptions)||void 0===n?void 0:n.name)||At(t.gap))&&(o=!0),a.setOptions(t),o&&this.adjustPaneViewport(r,!0,!0,!0,!0)}}},t.prototype.getDrawPaneById=function(t){if(t===Wi.CANDLE)return this._candlePane;if(t===Wi.X_AXIS)return this._xAxisPane;var e=this._drawPanes.find(function(e){return e.getId()===t});return null!==e&&void 0!==e?e:null},t.prototype.getContainer=function(){return this._container},t.prototype.getChartStore=function(){return this._chartStore},t.prototype.getXAxisPane=function(){return this._xAxisPane},t.prototype.getAllDrawPanes=function(){return this._drawPanes},t.prototype.getAllSeparatorPanes=function(){return this._separatorPanes},t.prototype.adjustPaneViewport=function(t,e,i,n,a){t&&this._measurePaneHeight();var r=e,o=null!==n&&void 0!==n&&n,s=null!==a&&void 0!==a&&a;(o||s)&&this._drawPanes.forEach(function(t){var e=t.getAxisComponent().buildTicks(s);r||(r=e)}),r&&this._measurePaneWidth(),null!==i&&void 0!==i&&i&&(this._xAxisPane.getAxisComponent().buildTicks(!0),this.updatePane(4))},t.prototype.updatePane=function(t,e){if(At(e)){var i=this.getDrawPaneById(e);null===i||void 0===i||i.update(t)}else this._separatorPanes.forEach(function(e){e.update(t)}),this._drawPanes.forEach(function(e){e.update(t)})},t.prototype.crosshairChange=function(t){var e=this,i=this._chartStore.getActionStore();if(i.has(Tt.OnCrosshairChange)){var n={};this._drawPanes.forEach(function(i){var a=i.getId(),r={},o=e._chartStore.getIndicatorStore().getInstances(a);o.forEach(function(e){var i,n=e.result;r[e.name]=n[null!==(i=t.dataIndex)&&void 0!==i?i:n.length-1]}),n[a]=r}),Mt(t.paneId)&&i.execute(Tt.OnCrosshairChange,X(X({},t),{indicatorData:n}))}},t.prototype.getDom=function(t,e){var i,n;if(!Mt(t))return this._chartContainer;var a=this.getDrawPaneById(t);if(null!==a){var r=null!==e&&void 0!==e?e:_a.Root;switch(r){case _a.Root:return a.getContainer();case _a.Main:return a.getMainWidget().getContainer();case _a.YAxis:return null!==(n=null===(i=a.getYAxisWidget())||void 0===i?void 0:i.getContainer())&&void 0!==n?n:null}}return null},t.prototype.getSize=function(t,e){var i,n;if(!At(t))return{width:Math.floor(this._chartContainer.clientWidth),height:Math.floor(this._chartContainer.clientHeight),left:0,top:0,right:0,bottom:0};var a=this.getDrawPaneById(t);if(null!==a){var r=null!==e&&void 0!==e?e:_a.Root;switch(r){case _a.Root:return a.getBounding();case _a.Main:return a.getMainWidget().getBounding();case _a.YAxis:return null!==(n=null===(i=a.getYAxisWidget())||void 0===i?void 0:i.getBounding())&&void 0!==n?n:null}}return null},t.prototype.setStyles=function(t){var e,i,n;this._chartStore.setOptions({styles:t}),n=Mt(t)?ji(t):t,At(null===(e=null===n||void 0===n?void 0:n.yAxis)||void 0===e?void 0:e.type)&&(null===(i=this._candlePane)||void 0===i||i.getAxisComponent().setAutoCalcTickFlag(!0)),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.getStyles=function(){return this._chartStore.getStyles()},t.prototype.setLocale=function(t){this._chartStore.setOptions({locale:t}),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.getLocale=function(){return this._chartStore.getLocale()},t.prototype.setCustomApi=function(t){this._chartStore.setOptions({customApi:t}),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.setPriceVolumePrecision=function(t,e){this._chartStore.setPrecision({price:t,volume:e})},t.prototype.getPriceVolumePrecision=function(){return this._chartStore.getPrecision()},t.prototype.setTimezone=function(t){this._chartStore.setOptions({timezone:t}),this._xAxisPane.getAxisComponent().buildTicks(!0),this._xAxisPane.update(3)},t.prototype.getTimezone=function(){return this._chartStore.getTimeScaleStore().getTimezone()},t.prototype.setOffsetRightDistance=function(t){this._chartStore.getTimeScaleStore().setOffsetRightDistance(t,!0)},t.prototype.getOffsetRightDistance=function(){return this._chartStore.getTimeScaleStore().getOffsetRightDistance()},t.prototype.setMaxOffsetLeftDistance=function(t){t<0?_t("setMaxOffsetLeftDistance","distance","distance must greater than zero!!!"):this._chartStore.getTimeScaleStore().setMaxOffsetLeftDistance(t)},t.prototype.setMaxOffsetRightDistance=function(t){t<0?_t("setMaxOffsetRightDistance","distance","distance must greater than zero!!!"):this._chartStore.getTimeScaleStore().setMaxOffsetRightDistance(t)},t.prototype.setLeftMinVisibleBarCount=function(t){t<0?_t("setLeftMinVisibleBarCount","barCount","barCount must greater than zero!!!"):this._chartStore.getTimeScaleStore().setLeftMinVisibleBarCount(Math.ceil(t))},t.prototype.setRightMinVisibleBarCount=function(t){t<0?_t("setRightMinVisibleBarCount","barCount","barCount must greater than zero!!!"):this._chartStore.getTimeScaleStore().setRightMinVisibleBarCount(Math.ceil(t))},t.prototype.setBarSpace=function(t){this._chartStore.getTimeScaleStore().setBarSpace(t)},t.prototype.getBarSpace=function(){return this._chartStore.getTimeScaleStore().getBarSpace().bar},t.prototype.getVisibleRange=function(){return this._chartStore.getTimeScaleStore().getVisibleRange()},t.prototype.clearData=function(){this._chartStore.clear()},t.prototype.getDataList=function(){return this._chartStore.getDataList()},t.prototype.applyNewData=function(t,e,i){At(i)&&_t("applyNewData","","param `callback` has been deprecated since version 9.8.0, use `subscribeAction('onDataReady')` instead."),this._chartStore.addData(t,Kt.Init,e).then(function(){}).catch(function(){}).finally(function(){null===i||void 0===i||i()})},t.prototype.applyMoreData=function(t,e,i){_t("","","Api `applyMoreData` has been deprecated since version 9.8.0."),this._chartStore.addData(t,Kt.Forward,null===e||void 0===e||e).then(function(){}).catch(function(){}).finally(function(){null===i||void 0===i||i()})},t.prototype.updateData=function(t,e){At(e)&&_t("updateData","","param `callback` has been deprecated since version 9.8.0, use `subscribeAction('onDataReady')` instead."),this._chartStore.addData(t).then(function(){}).catch(function(){}).finally(function(){null===e||void 0===e||e()})},t.prototype.loadMore=function(t){_t("","","Api `loadMore` has been deprecated since version 9.8.0, use `setLoadDataCallback` instead."),this._chartStore.setLoadMoreCallback(t)},t.prototype.setLoadDataCallback=function(t){this._chartStore.setLoadDataCallback(t)},t.prototype.createIndicator=function(t,e,i,n){var a,r=this,o=Mt(t)?{name:t}:t;if(null===ri(o.name))return _t("createIndicator","value","indicator not supported, you may need to use registerIndicator to add one!!!"),null;var s=null===i||void 0===i?void 0:i.id,l=this.getDrawPaneById(null!==s&&void 0!==s?s:"");if(null!==l)this._chartStore.getIndicatorStore().addInstance(o,null!==s&&void 0!==s?s:"",null!==e&&void 0!==e&&e).then(function(t){var e;r._setPaneOptions(null!==i&&void 0!==i?i:{},null!==(e=l.getAxisComponent().buildTicks(!0))&&void 0!==e&&e)}).catch(function(t){});else{null!==s&&void 0!==s||(s=de(Wi.INDICATOR));var c=this._createPane(na,s,null!==i&&void 0!==i?i:{}),u=null!==(a=null===i||void 0===i?void 0:i.height)&&void 0!==a?a:Vi;c.setBounding({height:u}),this._chartStore.getIndicatorStore().addInstance(o,s,null!==e&&void 0!==e&&e).finally(function(){r.adjustPaneViewport(!0,!0,!0,!0,!0),null===n||void 0===n||n()})}return null!==s&&void 0!==s?s:null},t.prototype.overrideIndicator=function(t,e,i){var n=this;this._chartStore.getIndicatorStore().override(t,null!==e&&void 0!==e?e:null).then(function(t){var e=Z(t,2),a=e[0],r=e[1];(a||r)&&(n.adjustPaneViewport(!1,r,!0,r),null===i||void 0===i||i())}).catch(function(){})},t.prototype.getIndicatorByPaneId=function(t,e){return this._chartStore.getIndicatorStore().getInstanceByPaneId(t,e)},t.prototype.removeIndicator=function(t,e){var i,n,a,r=this._chartStore.getIndicatorStore(),o=r.removeInstance(t,e);if(o){var s=!1;if(t!==Wi.CANDLE&&!r.hasInstances(t)){var l=this.getDrawPaneById(t),c=this._drawPanes.findIndex(function(e){return e.getId()===t});if(null!==l){s=!0;var u=this._separatorPanes.get(l);if(At(u)){var d=null===u||void 0===u?void 0:u.getTopPane();try{for(var h=G(this._separatorPanes),p=h.next();!p.done;p=h.next()){var v=p.value;if(v[1].getTopPane().getId()===l.getId()){v[1].setTopPane(d);break}}}catch(g){i={error:g}}finally{try{p&&!p.done&&(n=h.return)&&n.call(h)}finally{if(i)throw i.error}}u.destroy(),this._separatorPanes.delete(l)}this._drawPanes.splice(c,1),l.destroy();var f=this._drawPanes[0];At(f)&&f.getId()===Wi.X_AXIS&&(f=this._drawPanes[1]),null===(a=this._separatorPanes.get(f))||void 0===a||a.destroy(),this._separatorPanes.delete(f)}}this.adjustPaneViewport(s,!0,!0,!0,!0)}},t.prototype.createOverlay=function(t,e){var i=[];if(Mt(t))i=[{name:t}];else if(Ct(t))i=t.map(function(t){return Mt(t)?{name:t}:t});else{var n=t;i=[n]}var a=!0;At(e)&&null!==this.getDrawPaneById(e)||(e=Wi.CANDLE,a=!1);var r=this._chartStore.getOverlayStore().addInstances(i,e,a);return Ct(t)?r:r[0]},t.prototype.getOverlayById=function(t){return this._chartStore.getOverlayStore().getInstanceById(t)},t.prototype.overrideOverlay=function(t){this._chartStore.getOverlayStore().override(t)},t.prototype.removeOverlay=function(t){var e;At(t)&&(e=Mt(t)?{id:t}:t),this._chartStore.getOverlayStore().removeInstance(e)},t.prototype.setPaneOptions=function(t){this._setPaneOptions(t,!1)},t.prototype.setZoomEnabled=function(t){this._chartStore.getTimeScaleStore().setZoomEnabled(t)},t.prototype.isZoomEnabled=function(){return this._chartStore.getTimeScaleStore().getZoomEnabled()},t.prototype.setScrollEnabled=function(t){this._chartStore.getTimeScaleStore().setScrollEnabled(t)},t.prototype.isScrollEnabled=function(){return this._chartStore.getTimeScaleStore().getScrollEnabled()},t.prototype.scrollByDistance=function(t,e){var i=Et(e)&&e>0?e:0,n=this._chartStore.getTimeScaleStore();if(n.startScroll(),i>0){var a=new le({duration:i});a.doFrame(function(e){var a=t*(e/i);n.scroll(a)}),a.start()}else n.scroll(t)},t.prototype.scrollToRealTime=function(t){var e=this._chartStore.getTimeScaleStore(),i=e.getBarSpace().bar,n=e.getLastBarRightSideDiffBarCount()-e.getInitialOffsetRightDistance()/i,a=n*i;this.scrollByDistance(a,t)},t.prototype.scrollToDataIndex=function(t,e){var i=this._chartStore.getTimeScaleStore(),n=(i.getLastBarRightSideDiffBarCount()+(this.getDataList().length-1-t))*i.getBarSpace().bar;this.scrollByDistance(n,e)},t.prototype.scrollToTimestamp=function(t,e){var i=pe(this.getDataList(),"timestamp",t);this.scrollToDataIndex(i,e)},t.prototype.zoomAtCoordinate=function(t,e,i){var n=Et(i)&&i>0?i:0,a=this._chartStore.getTimeScaleStore(),r=a.getBarSpace().bar,o=r*t,s=o-r;if(n>0){var l=0,c=new le({duration:n});c.doFrame(function(t){var i=s*(t/n),r=(i-l)/a.getBarSpace().bar*ke;a.zoom(r,e),l=i}),c.start()}else a.zoom(s/r*ke,e)},t.prototype.zoomAtDataIndex=function(t,e,i){var n=this._chartStore.getTimeScaleStore().dataIndexToCoordinate(e);this.zoomAtCoordinate(t,{x:n,y:0},i)},t.prototype.zoomAtTimestamp=function(t,e,i){var n=pe(this.getDataList(),"timestamp",e);this.zoomAtDataIndex(t,n,i)},t.prototype.convertToPixel=function(t,e){var i,n=e.paneId,a=void 0===n?Wi.CANDLE:n,r=e.absolute,o=void 0!==r&&r,s=[];if(a!==Wi.X_AXIS){var l=this.getDrawPaneById(a);if(null!==l){var c=this._chartStore.getTimeScaleStore(),u=l.getBounding(),d=(new Array).concat(t),h=this._xAxisPane.getAxisComponent(),p=l.getAxisComponent();s=d.map(function(t){var e={},i=t.dataIndex;if(Et(t.timestamp)&&(i=c.timestampToDataIndex(t.timestamp)),Et(i)&&(e.x=null===h||void 0===h?void 0:h.convertToPixel(i)),Et(t.value)){var n=null===p||void 0===p?void 0:p.convertToPixel(t.value);e.y=o?u.top+n:n}return e})}}return Ct(t)?s:null!==(i=s[0])&&void 0!==i?i:{}},t.prototype.convertFromPixel=function(t,e){var i,n=e.paneId,a=void 0===n?Wi.CANDLE:n,r=e.absolute,o=void 0!==r&&r,s=[];if(a!==Wi.X_AXIS){var l=this.getDrawPaneById(a);if(null!==l){var c=this._chartStore.getTimeScaleStore(),u=l.getBounding(),d=(new Array).concat(t),h=this._xAxisPane.getAxisComponent(),p=l.getAxisComponent();s=d.map(function(t){var e,i,n={};if(Et(t.x)){var a=null!==(e=null===h||void 0===h?void 0:h.convertFromPixel(t.x))&&void 0!==e?e:-1;n.dataIndex=a,n.timestamp=null!==(i=c.dataIndexToTimestamp(a))&&void 0!==i?i:void 0}if(Et(t.y)){var r=o?t.y-u.top:t.y;n.value=p.convertFromPixel(r)}return n})}}return Ct(t)?s:null!==(i=s[0])&&void 0!==i?i:{}},t.prototype.executeAction=function(t,e){var i;switch(t){case Tt.OnCrosshairChange:var n=X({},e);n.paneId=null!==(i=n.paneId)&&void 0!==i?i:Wi.CANDLE,this._chartStore.getTooltipStore().setCrosshair(n,{notExecuteAction:!0});break}},t.prototype.subscribeAction=function(t,e){this._chartStore.getActionStore().subscribe(t,e)},t.prototype.unsubscribeAction=function(t,e){this._chartStore.getActionStore().unsubscribe(t,e)},t.prototype.getConvertPictureUrl=function(t,e,i){var n=this,a=this._chartContainer.clientWidth,r=this._chartContainer.clientHeight,o=he("canvas",{width:"".concat(a,"px"),height:"".concat(r,"px"),boxSizing:"border-box"}),s=o.getContext("2d"),l=Wt(o);o.width=a*l,o.height=r*l,s.scale(l,l),s.fillStyle=null!==i&&void 0!==i?i:"#FFFFFF",s.fillRect(0,0,a,r);var c=null!==t&&void 0!==t&&t;return this._drawPanes.forEach(function(t){var e=n._separatorPanes.get(t);if(At(e)){var i=e.getBounding();s.drawImage(e.getImage(c),i.left,i.top,i.width,i.height)}var r=t.getBounding();s.drawImage(t.getImage(c),0,r.top,a,r.height)}),o.toDataURL("image/".concat(null!==e&&void 0!==e?e:"jpeg"))},t.prototype.resize=function(){this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.destroy=function(){this._chartEvent.destroy(),this._drawPanes.forEach(function(t){t.destroy()}),this._drawPanes=[],this._separatorPanes.forEach(function(t){t.destroy()}),this._separatorPanes.clear(),this._container.removeChild(this._chartContainer)},t}(),Ca=new Map,ka=1;function Ia(t,e){var i;if(xt(),i=Mt(t)?document.getElementById(t):t,null===i)return bt("","","The chart cannot be initialized correctly. Please check the parameters. The chart container cannot be null and child elements need to be added!!!"),null;var n=Ca.get(i.id);if(At(n))return _t("","","The chart has been initialized on the dom!!!"),n;var a="k_line_chart_".concat(ka++);return n=new Sa(i,e),n.id=a,i.setAttribute("k-line-chart-id",a),Ca.set(a,n),n}var Ea=i(21396),Aa=i.n(Ea);function Pa(t,e,i,n){if(!t||!e||!i||!n)return t;try{var a=Aa().enc.Base64.parse(t),r=Aa().lib.WordArray.create(a.words.slice(0,4)),o=Aa().lib.WordArray.create(a.words.slice(4)),s=Aa().enc.Base64.parse(n),l=Aa().AES.decrypt({ciphertext:o},s,{iv:r,mode:Aa().mode.CBC,padding:Aa().pad.Pkcs7}),c=l.toString(Aa().enc.Utf8);return c||t}catch(u){return t}}function Ma(t,e){return Da.apply(this,arguments)}function Da(){return Da=(0,c.A)((0,l.A)().m(function t(e,i){var n,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e&&i){t.n=1;break}throw new Error("用户ID和指标ID不能为空");case 1:return t.p=1,t.n=2,(0,v.Ay)({url:"/api/indicator/getDecryptKey",method:"post",data:{userid:e,indicatorId:i}});case 2:if(n=t.v,1!==n.code||!n.data||!n.data.key){t.n=3;break}return t.a(2,n.data.key);case 3:throw new Error(n.msg||"获取解密密钥失败");case 4:t.n=6;break;case 5:throw t.p=5,a=t.v,new Error("无法获取解密密钥,请检查网络连接或联系管理员: "+(a.message||"未知错误"));case 6:return t.a(2)}},t,null,[[1,5]])})),Da.apply(this,arguments)}function Ta(t,e,i){return Ba.apply(this,arguments)}function Ba(){return Ba=(0,c.A)((0,l.A)().m(function t(e,i,n){var a;return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,Ma(i,n);case 1:return a=t.v,t.a(2,Pa(e,i,n,a))}},t)})),Ba.apply(this,arguments)}function Fa(t,e){if(1===e||!0===e)return!0;if(t&&t.length>100)try{var i=atob(t);if(i.length>50)return!0}catch(n){}return!1}var Ra={name:"KlineChart",props:{symbol:{type:String,default:""},market:{type:String,default:""},timeframe:{type:String,default:"1H"},theme:{type:String,default:"light"},activeIndicators:{type:Array,default:function(){return[]}},realtimeEnabled:{type:Boolean,default:!1},userId:{type:Number,default:null}},emits:["retry","price-change","load","indicator-toggle"],setup:function(t,e){var i=e.emit,n=(0,h.IJ)([]),a=(0,h.KR)(!1),r=(0,h.KR)(null),s=(0,h.KR)(!1),u=(0,h.KR)(!0),p=null,f=(0,h.KR)(!1),g=(0,h.IJ)(null),m=(0,h.KR)(t.theme||"light"),y=(0,h.KR)(null),b=(0,h.KR)(5e3),x=(0,h.KR)(!1),w=(0,h.KR)(1e4),S=(0,h.KR)(0),C=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(g.value){var e=Date.now(),i=Number(w.value||1e4);(t||!S.value||e-S.value>=i)&&(S.value=e,xt())}},k=(0,h.KR)([]),I=(0,h.KR)([]),E=(0,h.KR)([]),A=(0,h.KR)(null),P=(0,h.nI)(),M=P.proxy,D=(0,h.EW)(function(){return[{name:"line",title:M.$t("dashboard.indicator.drawing.line"),icon:"line"},{name:"horizontalLine",title:M.$t("dashboard.indicator.drawing.horizontalLine"),icon:"minus"},{name:"verticalLine",title:M.$t("dashboard.indicator.drawing.verticalLine"),icon:"column-width"},{name:"ray",title:M.$t("dashboard.indicator.drawing.ray"),icon:"arrow-right"},{name:"straightLine",title:M.$t("dashboard.indicator.drawing.straightLine"),icon:"menu"},{name:"parallelStraightLine",title:M.$t("dashboard.indicator.drawing.parallelLine"),icon:"menu"},{name:"priceLine",title:M.$t("dashboard.indicator.drawing.priceLine"),icon:"dollar"},{name:"priceChannelLine",title:M.$t("dashboard.indicator.drawing.priceChannel"),icon:"border"},{name:"fibonacciLine",title:M.$t("dashboard.indicator.drawing.fibonacciLine"),icon:"rise"},{name:"measure",title:M.$t("dashboard.indicator.drawing.measure"),icon:"drag"}]}),R=(0,h.KR)([{id:"sma",name:"SMA (简单移动平均)",shortName:"SMA",type:"line",defaultParams:{length:20}},{id:"ema",name:"EMA (指数移动平均)",shortName:"EMA",type:"line",defaultParams:{length:20}},{id:"rsi",name:"RSI (相对强弱)",shortName:"RSI",type:"line",defaultParams:{length:14}},{id:"macd",name:"MACD",shortName:"MACD",type:"macd",defaultParams:{fast:12,slow:26,signal:9}},{id:"bb",name:"布林带 (Bollinger Bands)",shortName:"BB",type:"band",defaultParams:{length:20,mult:2}},{id:"atr",name:"ATR (平均真实波幅)",shortName:"ATR",type:"line",defaultParams:{period:14}},{id:"cci",name:"CCI (商品通道指数)",shortName:"CCI",type:"line",defaultParams:{length:20}},{id:"williams",name:"Williams %R (威廉指标)",shortName:"W%R",type:"line",defaultParams:{length:14}},{id:"mfi",name:"MFI (资金流量指标)",shortName:"MFI",type:"line",defaultParams:{length:14}},{id:"adx",name:"ADX (平均趋向指数)",shortName:"ADX",type:"adx",defaultParams:{length:14}},{id:"obv",name:"OBV (能量潮)",shortName:"OBV",type:"line",defaultParams:{}},{id:"adosc",name:"ADOSC (积累/派发振荡器)",shortName:"ADOSC",type:"line",defaultParams:{fast:3,slow:10}},{id:"ad",name:"AD (积累/派发线)",shortName:"AD",type:"line",defaultParams:{}},{id:"kdj",name:"KDJ (随机指标)",shortName:"KDJ",type:"line",defaultParams:{period:9,k:3,d:3}}]),L=function(e){return t.activeIndicators.some(function(t){return t.id===e})},N=function(t){if(g.value){var e={line:"segment",horizontalLine:"horizontalStraightLine",verticalLine:"verticalStraightLine",ray:"rayLine",straightLine:"straightLine",parallelStraightLine:"parallelStraightLine",priceLine:"priceLine",priceChannelLine:"priceChannelLine",fibonacciLine:"fibonacciLine",measure:"priceRangeMeasure"},i=e[t]||t;if(A.value!==t){A.value=t;try{var n={name:i,lock:!1,extendData:{isDrawing:!0}},a=g.value.createOverlay(n);a?E.value.push(a):A.value=null}catch(r){A.value=null}}else{A.value=null;try{"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(o){}}}},O=function(){if(g.value)try{E.value.forEach(function(t){try{"function"===typeof g.value.removeOverlay?g.value.removeOverlay(t):"function"===typeof g.value.removeOverlayById&&g.value.removeOverlayById(t)}catch(e){}}),E.value=[],A.value=null,"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(t){}},z=function(t){var e=L(t.id);if(e)i("indicator-toggle",{action:"remove",indicator:{id:t.id}});else{var n=(0,d.A)((0,d.A)({},t),{},{params:(0,d.A)({},t.defaultParams),calculate:null});i("indicator-toggle",{action:"add",indicator:n})}},V=(0,h.KR)(null),W=(0,h.KR)(!1),H=(0,h.KR)(!1),$=(0,h.KR)(!1),K=(0,h.EW)(function(){return"dark"===m.value?{backgroundColor:"#141414",textColor:"#d1d4dc",textColorSecondary:"#787b86",borderColor:"#2a2a2a",gridLineColor:"#252525",gridLineColorDashed:"#363c4e",tooltipBg:"rgba(25, 27, 32, 0.95)",tooltipBorder:"#333",tooltipText:"#ccc",tooltipTextSecondary:"#888",axisLabelColor:"#787b86",splitAreaColor:["rgba(250,250,250,0.05)","rgba(200,200,200,0.02)"],dataZoomBorder:"#2a2a2a",dataZoomFiller:"rgba(41, 98, 255, 0.15)",dataZoomHandle:"#13c2c2",dataZoomText:"transparent",dataZoomBg:"#252525"}:{backgroundColor:"#fff",textColor:"#333",textColorSecondary:"#666",borderColor:"#e8e8e8",gridLineColor:"#e8e8e8",gridLineColorDashed:"#e8e8e8",tooltipBg:"rgba(255, 255, 255, 0.95)",tooltipBorder:"#e8e8e8",tooltipText:"#333",tooltipTextSecondary:"#666",axisLabelColor:"#666",splitAreaColor:["rgba(250,250,250,0.05)","rgba(200,200,200,0.02)"],dataZoomBorder:"#e8e8e8",dataZoomFiller:"rgba(24, 144, 255, 0.15)",dataZoomHandle:"#1890ff",dataZoomText:"#999",dataZoomBg:"#f0f2f5"}}),Y=function(t){return"dark"===m.value?["#13c2c2","#e040fb","#ffeb3b","#00e676","#ff6d00","#9c27b0"][t%6]:["#13c2c2","#9c27b0","#f57c00","#1976d2","#c2185b","#7b1fa2"][t%6]},X=function(){return new Promise(function(t,e){if(window.pyodide)return V.value=window.pyodide,H.value=!0,void t(window.pyodide);W.value=!0;var i="0.25.0",n=function(t){return t&&t.endsWith("/")?t:t?t+"/":t},a="/assets/pyodide/v".concat(i,"/full/"),r="https://cdn.jsdelivr.net/pyodide/v".concat(i,"/full/"),o=n({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_LOCAL_BASE||a),s=n({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_CDN_BASE||r),u=({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_PREFER_CDN||"").toString().toLowerCase(),d=!u||("true"===u||"1"===u||"yes"===u),h=function(t){return new Promise(function(e,i){var n=document.querySelector('script[data-pyodide-src="'.concat(t,'"]'));if(n)return"function"===typeof window.loadPyodide?e():(n.addEventListener("load",function(){return e()},{once:!0}),void n.addEventListener("error",function(){return i(new Error("Pyodide 脚本加载失败"))},{once:!0}));var a=document.createElement("script");a.dataset.pyodideSrc=t,a.src=t,a.onload=function(){return e()},a.onerror=function(){return i(new Error("Pyodide 脚本加载失败"))},document.head.appendChild(a)})},p=function(){var e=(0,c.A)((0,l.A)().m(function e(i){return(0,l.A)().w(function(e){while(1)switch(e.n){case 0:if("function"===typeof window.loadPyodide){e.n=1;break}throw new Error("loadPyodide 函数未找到");case 1:return e.n=2,window.loadPyodide({indexURL:i});case 2:return window.pyodide=e.v,e.n=3,window.pyodide.loadPackage(["pandas","numpy"]);case 3:V.value=window.pyodide,H.value=!0,W.value=!1,t(window.pyodide);case 4:return e.a(2)}},e)}));return function(t){return e.apply(this,arguments)}}();(0,c.A)((0,l.A)().m(function t(){var e,i,n;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e=function(){var t=(0,c.A)((0,l.A)().m(function t(e){return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,h(e+"pyodide.js");case 1:return t.n=2,p(e);case 2:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}(),t.p=1,!d){t.n=3;break}return t.n=2,e(s);case 2:t.n=4;break;case 3:return t.n=4,e(o);case 4:t.n=9;break;case 5:return t.p=5,i=t.v,t.p=6,t.n=7,e(d?o:s);case 7:t.n=9;break;case 8:throw t.p=8,n=t.v,n||i;case 9:return t.a(2)}},t,null,[[6,8],[1,5]])}))().catch(function(t){W.value=!1,$.value=!0,e(t)})})},j=function(t){if(!t||"string"!==typeof t)return null;try{var e={},i=t.match(/(\w+)\s*=\s*(\d+\.?\d*)/g);return i&&i.forEach(function(t){var i=t.split("=");if(2===i.length){var n=i[0].trim(),a=parseFloat(i[1].trim());isNaN(a)||(e[n]=a)}}),{params:e,plots:[],success:!0}}catch(n){return{params:{},plots:[],success:!1}}},U=function(){var e=(0,c.A)((0,l.A)().m(function e(i,n){var a,r,s,c,u,d,h,p,v,f,g,m,y,_,b,x,w,S,C=arguments;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a=C.length>2&&void 0!==C[2]?C[2]:{},r=C.length>3&&void 0!==C[3]?C[3]:{},H.value&&V.value){e.n=5;break}if(!W.value){e.n=4;break}s=0;case 1:if(!(W.value&&s<30)){e.n=4;break}return e.n=2,new Promise(function(t){return setTimeout(t,500)});case 2:if(s++,!H.value||!V.value){e.n=3;break}return e.a(3,4);case 3:e.n=1;break;case 4:if(H.value&&V.value){e.n=5;break}throw W.value?(W.value=!1,$.value=!0):$.value=!0,new Error("Python 引擎未就绪,请等待加载完成");case 5:if(e.p=5,c=i,u=r.is_encrypted||r.isEncrypted||0,!u&&!Fa(i,u)){e.n=11;break}if(d=r.user_id||r.userId||t.userId||a.userId,h=r.originalId||r.id||a.indicatorId,!d||!h){e.n=10;break}return e.p=6,e.n=7,Ta(c,d,h);case 7:c=e.v,e.n=9;break;case 8:throw e.p=8,x=e.v,new Error("代码解密失败,无法执行指标: "+(x.message||"未知错误"));case 9:e.n=11;break;case 10:throw new Error("缺少必要的解密参数(用户ID或指标ID),无法执行加密指标");case 11:return p=n.map(function(t){var e=t.timestamp||t.time;return e<1e10&&(e*=1e3),{time:Math.floor(e/1e3),open:parseFloat(t.open)||0,high:parseFloat(t.high)||0,low:parseFloat(t.low)||0,close:parseFloat(t.close)||0,volume:parseFloat(t.volume)||0}}),v=JSON.stringify(p),f=JSON.stringify(a||{}),g=v.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),m=f.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),y="\nimport json\nimport pandas as pd\nimport numpy as np\n\n# 递归清理 NaN 值的函数\ndef clean_nan(obj):\n if isinstance(obj, dict):\n return {k: clean_nan(v) for k, v in obj.items()}\n elif isinstance(obj, list):\n return [clean_nan(item) for item in obj]\n elif isinstance(obj, (pd.Series, np.ndarray)):\n return [None if (isinstance(x, float) and (np.isnan(x) or np.isinf(x))) else x for x in obj]\n elif isinstance(obj, (float, np.floating)):\n if np.isnan(obj) or np.isinf(obj):\n return None\n return float(obj)\n elif pd.isna(obj):\n return None\n else:\n return obj\n\n# 接收 JSON 数据\nraw_data = json.loads('".concat(g,"')\nparams = json.loads('").concat(m,"')\n\n# 将前端参数注入为指标代码可直接使用的变量(对齐回测/实盘执行环境)\n# 兼容多种命名(snake_case / camelCase)\ndef _get_param(key, default=None):\n if key in params:\n return params.get(key, default)\n # camelCase fallback\n camel = ''.join([key.split('_')[0]] + [p.capitalize() for p in key.split('_')[1:]])\n return params.get(camel, default)\n\ntry:\n leverage = float(_get_param('leverage', 1) or 1)\nexcept Exception:\n leverage = 1\n\ntrade_direction = _get_param('trade_direction', _get_param('tradeDirection', 'both')) or 'both'\n\ntry:\n initial_position = int(_get_param('initial_position', 0) or 0)\nexcept Exception:\n initial_position = 0\n\ntry:\n initial_avg_entry_price = float(_get_param('initial_avg_entry_price', 0.0) or 0.0)\nexcept Exception:\n initial_avg_entry_price = 0.0\n\ntry:\n initial_position_count = int(_get_param('initial_position_count', 0) or 0)\nexcept Exception:\n initial_position_count = 0\n\ntry:\n initial_last_add_price = float(_get_param('initial_last_add_price', 0.0) or 0.0)\nexcept Exception:\n initial_last_add_price = 0.0\n\ntry:\n initial_highest_price = float(_get_param('initial_highest_price', 0.0) or 0.0)\nexcept Exception:\n initial_highest_price = 0.0\n\n# 转换为 DataFrame\ndf = pd.DataFrame(raw_data)\n\n# 转换数据类型\ndf['open'] = df['open'].astype(float)\ndf['high'] = df['high'].astype(float)\ndf['low'] = df['low'].astype(float)\ndf['close'] = df['close'].astype(float)\ndf['volume'] = df['volume'].astype(float)\n\n# 用户代码(已解密)\n").concat(c,"\n\n# 构造输出(如果用户没有定义 output,则尝试从 result_json 获取)\nif 'output' not in locals():\n if 'result_json' in locals():\n output = json.loads(result_json)\n else:\n output = {\"plots\": []}\nelse:\n # 确保 output 是字典格式\n if isinstance(output, str):\n output = json.loads(output)\n\n# 清理 output 中的所有 NaN 值\noutput = clean_nan(output)\n\n# 返回 JSON 字符串\njson.dumps(output)\n"),e.n=12,V.value.runPythonAsync(y);case 12:if(_=e.v,_&&"string"===typeof _){e.n=13;break}throw new Error("Python 代码执行后未返回有效的 JSON 字符串,返回类型: ".concat((0,o.A)(_)));case 13:e.p=13,b=JSON.parse(_),e.n=15;break;case 14:throw e.p=14,w=e.v,new Error("JSON 解析失败: ".concat(w.message,"。可能是数据中包含 NaN 或其他无效值。"));case 15:if(b){e.n=16;break}return e.a(2,{plots:[],signals:[],calculatedVars:{}});case 16:return b.plots&&Array.isArray(b.plots)||(b.plots=[]),b.plots=b.plots.map(function(t){return t.data&&Array.isArray(t.data)&&(t.data=t.data.map(function(t){return null===t||void 0===t||"number"===typeof t&&isNaN(t)?null:t})),t}),b.signals&&Array.isArray(b.signals)&&(b.signals=b.signals.map(function(t){return t.data&&Array.isArray(t.data)&&(t.data=t.data.map(function(t){return null===t||void 0===t||"number"===typeof t&&isNaN(t)?null:t})),t})),b.calculatedVars||(b.calculatedVars={}),e.a(2,b);case 17:throw e.p=17,S=e.v,new Error("Python 执行失败: ".concat(S.message));case 18:return e.a(2)}},e,null,[[13,14],[6,8],[5,17]])}));return function(t,i){return e.apply(this,arguments)}}();function G(t,e){for(var i=[],n=0;nn-e+1){var c=(t[o-1].high+t[o-1].low+t[o-1].close)/3;s>c?a+=l:sp&&h>0?o.push(h):o.push(0),p>h&&p>0?s.push(p):s.push(0)}for(var v=[],f=[],g=[],m=0;m=e-1){var w=v[m],S=f[m],C=g[m];if(0===w?(i.push(0),n.push(0)):(i.push(S/w*100),n.push(C/w*100)),m>=e-1){var k=i[m]+n[m],I=0===k?0:Math.abs(i[m]-n[m])/k*100;if(m===e-1)a.push(I);else if(m===e){var E=Math.abs(i[m-1]-n[m-1])/(i[m-1]+n[m-1])*100;a.push((E+I)/2)}else a.push((a[m-1]*(e-1)+I)/e)}}}return{adx:a,plusDI:i,minusDI:n}}function nt(t){for(var e=[],i=0,n=0;nt[n-1].close?i+=t[n].volume:t[n].close255?12:7)},0),m=g+2*h,y=v+2*p,_=(null===(i=r.extendData)||void 0===i?void 0:i.side)||(null===(n=r.extendData)||void 0===n?void 0:n.type)||"buy",b="buy"===_,x=b?u:u-y,w=d,S=w,C=b?x:x+y;return[{type:"line",attrs:{coordinates:[{x:c,y:S},{x:c,y:C}]},styles:{style:"stroke",color:l,dashedValue:[2,2]},ignoreEvent:!0},{type:"circle",attrs:{x:c,y:w,r:4},styles:{style:"fill",color:l},ignoreEvent:!0},{type:"rect",attrs:{x:c-m/2,y:x,width:m,height:y,r:4},styles:{style:"fill",color:l,borderSize:0},ignoreEvent:!0},{type:"text",attrs:{x:c,y:x+y/2,text:f,align:"center",baseline:"middle"},styles:{color:"#ffffff",size:v,weight:"bold",backgroundColor:l,borderRadius:5},ignoreEvent:!0}]}}),Ni({name:"priceRangeMeasure",totalStep:2,lock:!1,needDefaultPointFigure:!1,needDefaultXAxisFigure:!1,needDefaultYAxisFigure:!1,createPointFigures:function(t){var e=t.coordinates,i=t.overlay,n=t.ctx;if(!e[0]||!e[1])return[];var a=i.points[0],r=i.points[1];if(!a||!r)return[];var o=a.value,s=r.value,l=s-o,c=l/o*100,u=a.timestamp,d=r.timestamp,h=Math.abs(d-u),p="",v=Math.floor(h/864e5),f=Math.floor(h%864e5/36e5),g=Math.floor(h%36e5/6e4),m=Math.floor(h%6e4/1e3);p=v>0?"".concat(v,"天").concat(f>0?f+"小时":""):f>0?"".concat(f,"小时").concat(g>0?g+"分钟":""):g>0?"".concat(g,"分钟"):"".concat(m,"秒");var y=0;try{if(n&&n.chart){var _=n.chart.getData();if(_&&Array.isArray(_)&&_.length>0){var b=_.findIndex(function(t){return Math.abs(t.timestamp-u)<1e3}),x=_.findIndex(function(t){return Math.abs(t.timestamp-d)<1e3});b>=0&&x>=0&&(y=Math.abs(x-b))}}}catch(z){}var w=c>=0?"+".concat(c.toFixed(2),"%"):"".concat(c.toFixed(2),"%"),S=l>=0?"+".concat(l.toFixed(2)):"".concat(l.toFixed(2)),C="".concat(w," ").concat(S);y>0?(C+=" (".concat(y,"根"),p&&(C+=" / ".concat(p)),C+=")"):p&&(C+=" (".concat(p,")"));var k=l>=0,I=k?"#0ecb81":"#f6465d",E=k?"#0ecb81":"#f6465d",A=k?"rgba(14, 203, 129, 0.1)":"rgba(246, 70, 93, 0.1)",P=e[0].x,M=e[0].y,D=e[1].x,T=e[1].y,B=(P+D)/2,F=(M+T)/2,R=-20,L=12,N=7*C.length+16,O=L+8;return[{type:"line",attrs:{coordinates:[{x:P,y:M},{x:D,y:T}]},styles:{style:"stroke",color:I,size:2,dashedValue:[4,4]},ignoreEvent:!1},{type:"circle",attrs:{x:P,y:M,r:4},styles:{style:"fill",color:I},ignoreEvent:!1},{type:"circle",attrs:{x:D,y:T,r:4},styles:{style:"fill",color:I},ignoreEvent:!1},{type:"rect",attrs:{x:B-N/2,y:F+R-O/2,width:N,height:O,r:4},styles:{style:"fill",color:A,borderSize:1,borderColor:I},ignoreEvent:!1},{type:"text",attrs:{x:B,y:F+R,text:C,align:"center",baseline:"middle"},styles:{color:E,size:L,weight:"bold"},ignoreEvent:!1}]}});var st=function(t){return t.map(function(t){var e=t.time||t.timestamp;return"string"===typeof e&&(e=parseInt(e)),e<1e10&&(e*=1e3),{timestamp:e,open:parseFloat(t.open),high:parseFloat(t.high),low:parseFloat(t.low),close:parseFloat(t.close),volume:parseFloat(t.volume||0)}}).filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)}).sort(function(t,e){return t.timestamp-e.timestamp})},lt=function(t){if(t.length>0){var e=t[t.length-1];if(t.length>1){var n=t[t.length-2],a=e.close.toFixed(2),r=(e.close-n.close)/n.close*100;i("price-change",{price:a,change:r})}else{var o=e.close.toFixed(2);i("price-change",{price:o,change:0})}}},ct=function(t){return t.map(function(t){return{time:Math.floor(t.timestamp/1e3),open:t.open,high:t.high,low:t.low,close:t.close,volume:t.volume}})},ut=function(t,e,i){var n=new Date(1e3*t),a=new Date(1e3*e);switch(i){case"1m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&n.getMinutes()===a.getMinutes();case"5m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/5)===Math.floor(a.getMinutes()/5);case"15m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/15)===Math.floor(a.getMinutes()/15);case"30m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/30)===Math.floor(a.getMinutes()/30);case"1H":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours();case"4H":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&Math.floor(n.getHours()/4)===Math.floor(a.getHours()/4);case"1D":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate();case"1W":var r=Math.floor((n.getTime()-new Date(n.getFullYear(),0,1).getTime())/6048e5),o=Math.floor((a.getTime()-new Date(a.getFullYear(),0,1).getTime())/6048e5);return n.getFullYear()===a.getFullYear()&&r===o;default:return t===e}},dt=function(){var e=(0,c.A)((0,l.A)().m(function e(){var i,o,s,c,d,p,f,m=arguments;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(i=m.length>0&&void 0!==m[0]&&m[0],t.symbol){e.n=1;break}return e.a(2);case 1:if(!a.value||i){e.n=2;break}return e.a(2);case 2:return a.value=!0,r.value=null,e.p=3,o=[],e.p=4,e.n=5,(0,v.Ay)({url:"/api/indicator/kline",method:"get",params:{market:t.market,symbol:t.symbol,timeframe:t.timeframe,limit:500}});case 5:if(s=e.v,1!==s.code||!s.data||!Array.isArray(s.data)){e.n=6;break}o=st(s.data),e.n=7;break;case 6:throw c=s.msg||"获取K线数据失败","tiingo_subscription"===s.hint&&(c=M.$t("dashboard.indicator.error.tiingoSubscription")||"Forex 1-minute data requires Tiingo paid subscription"),new Error(c);case 7:e.n=9;break;case 8:throw e.p=8,p=e.v,p;case 9:if(o&&0!==o.length){e.n=10;break}throw new Error("未获取到K线数据");case 10:n.value=o,u.value=!0,d=ct(o),lt(d),(0,h.dY)(function(){if(g.value){var e=n.value.filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)});if(e.length>0&&g.value){try{g.value.applyNewData(e)}catch(i){g.value.applyNewData(e)}setTimeout(function(){g.value&&xt()},100)}}else mt();t.realtimeEnabled&&(gt(),ft())}),e.n=12;break;case 11:if(e.p=11,f=e.v,r.value=M.$t("dashboard.indicator.error.loadDataFailed")+": "+(f.message||M.$t("dashboard.indicator.error.loadDataFailedDesc")),n.value=[],g.value)try{g.value.applyNewData([])}catch(l){}case 12:return e.p=12,a.value=!1,e.f(12);case 13:return e.a(2)}},e,null,[[4,8],[3,11,12,13]])}));return function(){return e.apply(this,arguments)}}(),ht=function(){var e=(0,c.A)((0,l.A)().m(function e(i){return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.symbol&&n.value&&0!==n.value.length){e.n=1;break}return e.a(2);case 1:if(!s.value&&!p){e.n=6;break}if(!p){e.n=5;break}return e.p=2,e.n=3,p;case 3:e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2);case 6:if(u.value){e.n=7;break}return g.value&&"function"===typeof g.value.noMoreData&&g.value.noMoreData(),e.a(2);case 7:return s.value=!0,p=(0,c.A)((0,l.A)().m(function e(){var a,r,o,c,d,f;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.n=1,(0,h.dY)();case 1:return e.p=1,a=Math.floor(i/1e3),e.n=2,(0,v.Ay)({url:"/api/indicator/kline",method:"get",params:{market:t.market,symbol:t.symbol,timeframe:t.timeframe,limit:500,before_time:a}});case 2:if(r=e.v,1!==r.code||!r.data||!Array.isArray(r.data)){e.n=5;break}if(o=st(r.data),0!==o.length){e.n=3;break}return u.value=!1,g.value&&"function"===typeof g.value.noMoreData&&g.value.noMoreData(),e.a(2);case 3:if(c=o.filter(function(t){return t.timestamp0&&(a=st(i.data),r=(0,F.A)(n.value),a.length>0&&(o=Math.floor(a[a.length-1].timestamp/1e3),s=Math.floor(r[r.length-1].timestamp/1e3),ut(o,s,t.timeframe)?(c=r[r.length-1],u=a[a.length-1],r[r.length-1]={timestamp:c.timestamp,open:c.open,high:Math.max(c.high,u.high),low:Math.min(c.low,u.low),close:u.close,volume:u.volume},n.value=r,d=ct(n.value),lt(d),g.value&&"function"===typeof g.value.updateData?(h=n.value.length-1,g.value.updateData(r[h]),C(!1)):g.value&&(g.value.applyNewData(n.value),C(!1))):o>s&&(p=a.filter(function(e){var i=Math.floor(e.timestamp/1e3);return!r.some(function(e){var n=Math.floor(e.timestamp/1e3);return ut(i,n,t.timeframe)})}),p.length>0&&(n.value=[].concat((0,F.A)(r),(0,F.A)(p)),n.value.length>500&&(n.value=n.value.slice(-500)),f=ct(n.value),lt(f),g.value&&"function"===typeof g.value.applyMoreData?(g.value.applyMoreData(p),C(!0)):g.value&&(g.value.applyNewData(n.value),C(!0)))))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}));return function(){return e.apply(this,arguments)}}(),ft=function(){y.value&&clearInterval(y.value);var e={"1m":5e3,"5m":1e4,"15m":15e3,"30m":3e4,"1H":6e4,"4H":3e5,"1D":6e5,"1W":18e5},i=e[t.timeframe]||1e4;b.value=Math.min(i,1e3),t.realtimeEnabled&&t.symbol&&n.value.length>0&&(y.value=setInterval(function(){!a.value&&t.symbol&&n.value&&n.value.length>0&&vt()},b.value))},gt=function(){y.value&&(clearInterval(y.value),y.value=null)},mt=function(){var t=document.getElementById("kline-chart-container");if(t)if(0!==t.clientWidth&&0!==t.clientHeight){if(g.value){try{g.value.destroy()}catch(y){}g.value=null}try{var e=document.getElementById("kline-chart-container");if(!e)throw new Error("容器元素不存在");try{g.value=Ia(e,{drawingBarVisible:!0,overlay:{visible:!0}})}catch(y){g.value=Ia(e)}if(g.value&&"function"===typeof g.value.setDrawingBarVisible?g.value.setDrawingBarVisible(!0):g.value&&"function"===typeof g.value.setDrawingBar?g.value.setDrawingBar(!0):g.value&&"function"===typeof g.value.enableDrawing&&g.value.enableDrawing(!0),!g.value)throw new Error("图表初始化失败:无法创建图表实例");if(g.value&&("function"===typeof g.value.setDrawingBarVisible&&g.value.setDrawingBarVisible(!0),"function"===typeof g.value.setDrawingBar&&g.value.setDrawingBar(!0),"function"===typeof g.value.enableDrawing&&g.value.enableDrawing(!0)),_t(),g.value&&"function"===typeof g.value.subscribeAction){if(g.value.subscribeAction("onOverlayCreated",function(t){if(A.value&&t&&t.id){var e={line:"segment",horizontalLine:"horizontalStraightLine",verticalLine:"verticalStraightLine",ray:"rayLine",straightLine:"straightLine",parallelStraightLine:"parallelStraightLine",priceLine:"priceLine",priceChannelLine:"priceChannelLine",fibonacciLine:"fibonacciLine",measure:"priceRangeMeasure"},i=e[A.value];if(!t.name||t.name===i||"priceRangeMeasure"===i){E.value.push(t.id),A.value=null;try{"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(y){}}}}),"function"===typeof g.value.subscribeAction)try{g.value.subscribeAction("onOverlayComplete",function(t){A.value&&t&&t.id&&(E.value.push(t.id),A.value=null)})}catch(y){}g.value.subscribeAction("onOverlayRemoved",function(t){var e=E.value.indexOf(t);e>-1&&E.value.splice(e,1)})}if(g.value&&"function"===typeof g.value.subscribeAction){var i=null,a=!1;g.value.subscribeAction("onVisibleRangeChange",function(){var t=(0,c.A)((0,l.A)().m(function t(e){var r,o,c,d,h,v;return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:if(!e||"number"!==typeof e.from){t.n=5;break}if(a){t.n=1;break}return i=e.from,a=!0,setTimeout(function(){f.value=!0},1e3),t.a(2);case 1:if(f.value){t.n=2;break}return i=e.from,t.a(2);case 2:if(!(s.value&&e.from<=0)){t.n=3;break}try{g.value&&"function"===typeof g.value.setVisibleRange&&(r=n.value.length,r>0&&(o=g.value.getVisibleRange(),o&&(c=Math.ceil((o.to-o.from)*r/100),d=.1,h=Math.min(100,d+c/r*100),g.value.setVisibleRange(d,h))))}catch(y){}return t.a(2);case 3:if(!(e.from<=5&&!s.value&&!p&&u.value&&f.value)){t.n=4;break}if(!(null!==i&&i>e.from)){t.n=4;break}if(!(n.value.length>0)){t.n=4;break}return v=n.value[0].timestamp,t.n=4,ht(v);case 4:i=e.from;case 5:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}())}if(n.value&&n.value.length>0){var o=n.value.filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)});if(o.length>0){try{g.value.applyNewData(o)}catch(y){try{g.value.applyNewData(o)}catch(_){}}try{g.value.createIndicator("VOL",!1,{height:100,dragEnabled:!0})}catch(y){}(0,h.dY)(function(){xt()})}}window.addEventListener("resize",yt)}catch(r){r.value=M.$t("dashboard.indicator.error.chartInitFailed")+": "+(r.message||"未知错误")}}else{var d=0,v=10,m=function(){var t=document.getElementById("kline-chart-container");t&&t.clientWidth>0&&t.clientHeight>0?mt():d0&&t.clientHeight>0&&mt()}},_t=function(){if(g.value){var t=K.value,e="dark"===m.value;g.value.setStyles({grid:{show:!0,horizontal:{show:!0,color:t.gridLineColor,style:"dashed",size:1},vertical:{show:!1}},candle:{priceMark:{show:!0,high:{show:!0,color:t.axisLabelColor},low:{show:!0,color:t.axisLabelColor}},tooltip:{showRule:"always",showType:"standard",labels:[M.$t("dashboard.indicator.tooltip.time"),M.$t("dashboard.indicator.tooltip.open"),M.$t("dashboard.indicator.tooltip.high"),M.$t("dashboard.indicator.tooltip.low"),M.$t("dashboard.indicator.tooltip.close"),M.$t("dashboard.indicator.tooltip.volume")],values:function(t){var e=new Date(t.timestamp);return["".concat(e.getFullYear(),"-").concat(e.getMonth()+1,"-").concat(e.getDate()," ").concat(e.getHours(),":").concat(e.getMinutes()),t.open.toFixed(2),t.high.toFixed(2),t.low.toFixed(2),t.close.toFixed(2),t.volume.toFixed(0)]}},bar:{upColor:e?"#0ecb81":"#13c2c2",downColor:e?"#f6465d":"#fa541c",noChangeColor:t.borderColor}},indicator:{tooltip:{showRule:"always",showType:"standard"}},xAxis:{show:!0,axisLine:{show:!0,color:t.borderColor}},yAxis:{show:!0,axisLine:{show:!1}},crosshair:{show:!0,horizontal:{show:!0,line:{show:!0,style:"dashed",color:t.gridLineColor,size:1}},vertical:{show:!0,line:{show:!0,style:"dashed",color:t.gridLineColor,size:1}}},watermark:{show:!1}})}},bt=function(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,r=arguments.length>5&&void 0!==arguments[5]&&arguments[5];try{var o={name:t,shortName:t,calc:e,figures:i,calcParams:n,precision:a,series:r?"price":"normal"};return ai(o),!0}catch(s){return!(!s.message||!s.message.includes("already registered"))}},xt=function(){var e=(0,c.A)((0,l.A)().m(function e(){var i,a,r,o;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!x.value){e.n=1;break}return e.a(2);case 1:if(g.value&&0!==n.value.length){e.n=2;break}return e.a(2);case 2:x.value=!0,e.p=3;try{I.value.length>0&&g.value&&(I.value.forEach(function(t){try{"function"===typeof g.value.removeOverlay?g.value.removeOverlay(t):"function"===typeof g.value.removeOverlayById&&g.value.removeOverlayById(t)}catch(e){}}),I.value=[])}catch(s){}try{k.value.length>0&&(k.value.forEach(function(t){var e="string"===typeof t?t:t.name,i="string"===typeof t?void 0:t.paneId;i?g.value.removeIndicator(i,e):(g.value.removeIndicator("candle_pane",e),g.value.removeIndicator(e))}),k.value=[])}catch(s){}i=ct(n.value),a=(0,l.A)().m(function e(){var n,a,r,s,c,u,d,h,p,v,f,m,y,b,x,w,S,C,E,A,P,M,D,T,R,L,N,O,z,V,H,K,X,j,st,lt,ct,ut,dt,ht,pt,vt,ft,gt,mt,yt,_t,xt,wt,St,Ct,kt,It,Et,At,Pt,Mt,Dt,Tt,Bt,Ft,Rt,Lt,Nt,Ot,zt,Vt,Wt,Ht,$t,Kt,Yt,Xt,jt,Ut,Gt,Zt,qt,Jt,Qt,te,ee,ie,ne,ae,re,oe,se,le,ce,ue,de,he,pe,ve,fe,ge,me,ye,_e,be,xe,we,Se,Ce,ke,Ie,Ee,Ae,Pe,Me,De,Te,Be,Fe,Re,Le,Ne,Oe,ze,Ve,We,He,$e,Ke,Ye,Xe,je,Ue,Ge,Ze,qe,Je,Qe,ti,ei,ii,ni,ai,ri,oi,si,li,ci,ui,di,hi,pi,vi,fi,gi,mi,yi,_i;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(n=t.activeIndicators[o],e.p=1,"python"!==n.type){e.n=31;break}if(n.code){e.n=2;break}return e.a(2,0);case 2:if(e.p=2,!n.calculate||"function"!==typeof n.calculate){e.n=15;break}return e.n=3,n.calculate(i,n.params||{});case 3:if(a=e.v,r=[],a&&a.plots&&Array.isArray(a.plots)&&(r=(0,F.A)(a.plots)),!(a&&a.signals&&Array.isArray(a.signals))){e.n=14;break}s=(0,_.A)(a.signals),e.p=4,s.s();case 5:if((c=s.n()).done){e.n=11;break}if(u=c.value,!(u.data&&Array.isArray(u.data)&&u.data.length>0)){e.n=10;break}for(d=[],h=0;h0&&g.value){M=(0,_.A)(v);try{for(M.s();!(D=M.n()).done;){T=D.value;try{R=T.timestamp,R<1e10&&(R*=1e3),L=T.text,"function"===typeof g.value.createOverlay&&(N=g.value.createOverlay({name:"signalTag",points:[{timestamp:R,value:T.price},{timestamp:R,value:T.anchorPrice}],extendData:{text:L,color:T.color,side:T.side,action:T.action,price:T.price},lock:!0},"candle_pane"),N&&I.value.push(N))}catch(l){}}}catch(bi){M.e(bi)}finally{M.f()}}case 10:e.n=5;break;case 11:e.n=13;break;case 12:e.p=12,mi=e.v,s.e(mi);case 13:return e.p=13,s.f(),e.f(13);case 14:if(r.length>0&&(O=r.filter(function(t){return t.data&&Array.isArray(t.data)&&t.data.length>0}),O.length>0)){for(z=[],V={},H=0;H0)){e.n=23;break}for(xt=[],wt=0;wt0&&g.value){Lt=(0,_.A)(Ct);try{for(Lt.s();!(Nt=Lt.n()).done;){Ot=Nt.value;try{zt=Ot.timestamp,zt<1e10&&(zt*=1e3),Vt=Ot.text,"function"===typeof g.value.createOverlay&&(Wt=g.value.createOverlay({name:"signalTag",points:[{timestamp:zt,value:Ot.price},{timestamp:zt,value:Ot.anchorPrice}],extendData:{text:Vt,color:Ot.color,side:Ot.side,action:Ot.action,price:Ot.price},lock:!0},"candle_pane"),Wt&&I.value.push(Wt))}catch(l){}}}catch(bi){Lt.e(bi)}finally{Lt.f()}}case 23:e.n=18;break;case 24:e.n=26;break;case 25:e.p=25,yi=e.v,mt.e(yi);case 26:return e.p=26,mt.f(),e.f(26);case 27:if(gt.length>0&&(Ht=gt.filter(function(t){return t.data&&Array.isArray(t.data)&&t.data.length>0}),Ht.length>0)){for($t=[],Kt={},Yt=0;Yt0&&(0,h.dY)(function(){g.value&&xt()})},{deep:!0}),(0,h.wB)(function(){return t.realtimeEnabled},function(t){t?ft():gt()}),(0,h.sV)((0,c.A)((0,l.A)().m(function e(){return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.n=1,(0,h.dY)();case 1:return!t.theme||"dark"!==t.theme&&"light"!==t.theme||(m.value=t.theme),e.p=2,e.n=3,X();case 3:e.n=5;break;case 4:e.p=4,e.v,$.value=!0;case 5:(0,h.dY)(function(){setTimeout(function(){!g.value&&t.symbol&&mt()},300)});case 6:return e.a(2)}},e,null,[[2,4]])}))),(0,h.xo)(function(){gt(),g.value&&(g.value.destroy(),g.value=null),window.removeEventListener("resize",yt)}),{klineData:n,loading:a,error:r,loadingHistory:s,chartRef:g,chartTheme:m,themeConfig:K,getIndicatorColor:Y,handleRetry:wt,loadingPython:W,pythonReady:H,pyodideLoadFailed:$,formatKlineData:st,updatePricePanel:lt,isSameTimeframe:ut,loadKlineData:dt,loadMoreHistoryData:pt,updateKlineRealtime:vt,startRealtime:ft,stopRealtime:gt,initChart:mt,handleResize:yt,updateChartTheme:_t,updateIndicators:xt,executePythonStrategy:U,parsePythonStrategy:j,indicatorButtons:R,isIndicatorActive:L,toggleIndicator:z,drawingTools:D,activeDrawingTool:A,selectDrawingTool:N,clearAllDrawings:O}}},La=Ra,Na=(0,E.A)(La,M,D,!1,null,"076675b8",null),Oa=Na.exports,za=i(18947),Va={name:"DashboardIndicator",components:{IndicatorEditor:P,KlineChart:Oa,QuickTradePanel:za.A},computed:(0,d.A)((0,d.A)({},(0,p.aH)({navTheme:function(t){return t.app.theme}})),{},{chartTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme?"dark":"light"},isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),setup:function(){var t=(0,h.nI)(),e=t||{},i=e.proxy,n=(0,h.KR)(1),a=(0,h.KR)(!1),p=(0,h.KR)(void 0),m=(0,h.KR)([]),y=(0,h.KR)([]),_=(0,h.KR)(!1),b=(0,h.KR)(""),x=(0,h.KR)(!1),w=(0,h.KR)(!1),S=(0,h.KR)(!1),C=(0,h.KR)(""),k=(0,h.KR)(""),I=(0,h.KR)([]),E=(0,h.KR)(!1),A=(0,h.KR)([]),P=(0,h.KR)(!1),M=(0,h.KR)(null),D=(0,h.KR)(null),T=(0,h.KR)([]),B=(0,h.KR)(!1),F=(0,h.KR)(!1),R=(0,h.KR)(""),L=(0,h.KR)(""),N=(0,h.KR)(0),O=(0,h.EW)(function(){return"crypto"===(K.value||"").toLowerCase()}),z=function(){O.value?(R.value=$.value||"",N.value=parseFloat(Y.value)||0,L.value="",F.value=!0):u.A.warning(i.$t("quickTrade.cryptoOnly"))},V=function(){u.A.success(i.$t("quickTrade.orderSuccess"))},W=function(t){t&&O.value&&(R.value=t)},H=function(){i&&i.$router&&i.$router.push("/indicator-community")},$=(0,h.KR)(""),K=(0,h.KR)(""),Y=(0,h.KR)("--"),X=(0,h.KR)(0),j=(0,h.EW)(function(){return X.value>0?"color-up":X.value<0?"color-down":""}),U=(0,h.KR)("1D"),G=(0,h.KR)([]),Z=(0,h.KR)(!1),q=[{id:"sma5",name:"SMA5 (5日均线)",shortName:"SMA5",type:"line",defaultParams:{length:5}},{id:"sma10",name:"SMA10 (10日均线)",shortName:"SMA10",type:"line",defaultParams:{length:10}},{id:"sma20",name:"SMA20 (20日均线)",shortName:"SMA20",type:"line",defaultParams:{length:20}},{id:"sma30",name:"SMA30 (30日均线)",shortName:"SMA30",type:"line",defaultParams:{length:30}}],J=[{id:"ema5",name:"EMA5 (5日指数均线)",shortName:"EMA5",type:"line",defaultParams:{length:5}},{id:"ema10",name:"EMA10 (10日指数均线)",shortName:"EMA10",type:"line",defaultParams:{length:10}},{id:"ema20",name:"EMA20 (20日指数均线)",shortName:"EMA20",type:"line",defaultParams:{length:20}},{id:"ema30",name:"EMA30 (30日指数均线)",shortName:"EMA30",type:"line",defaultParams:{length:30}}],Q=(0,h.KR)([]),tt=(0,h.KR)([]),et=(0,h.KR)(!1),it=(0,h.KR)(!1),nt=(0,h.KR)(null),at=(0,h.KR)(""),rt=(0,h.KR)([]),ot=(0,h.KR)({}),st=(0,h.KR)(!1),lt=(0,h.KR)({}),ct=(0,h.KR)(!1),ut=(0,h.KR)(!1),dt=(0,h.KR)(!1),ht=(0,h.KR)(null),pt=(0,h.KR)(!1),vt=(0,h.KR)(null),ft=(0,h.KR)(!1),gt=(0,h.KR)(null),mt=(0,h.KR)(!1),yt=(0,h.KR)(null),_t=(0,h.KR)(!1),bt=(0,h.KR)(null),xt=(0,h.KR)(!1),wt=(0,h.KR)(!1),St=(0,h.KR)("free"),Ct=(0,h.KR)(10),kt=(0,h.KR)(""),It=(0,h.KR)(!1),Et={price:[{required:!0,message:"请输入价格",trigger:"blur",type:"number"}]},At=(0,h.KR)(!1),Pt=function(t){var e=t.price,i=t.change;Y.value=e,X.value=i},Mt=function(){},Dt=(0,h.KR)([]),Tt=(0,h.KR)([]),Bt=function(t){U.value=t},Ft=function(t){return t?Object.values(t).join(", "):""},Rt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,i,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a.value=!0,t.p=1,r=(0,h.nI)(),o=null===r||void 0===r||null===(e=r.proxy)||void 0===e?void 0:e.$store,s=(null===o||void 0===o||null===(i=o.getters)||void 0===i?void 0:i.userInfo)||{},!s||!s.email){t.n=2;break}return n.value=s.id,a.value=!1,Lt(),ae(),t.a(2);case 2:return t.n=3,(0,g.ug)();case 3:c=t.v,c&&1===c.code&&c.data&&(n.value=c.data.id,o&&o.commit("SET_INFO",c.data),Lt(),ae()),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.p=5,a.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[1,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),Lt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return t.a(2);case 1:return _.value=!0,t.p=2,t.n=3,(0,f.Qo)({userid:n.value});case 3:e=t.v,e&&1===e.code&&e.data&&(y.value=e.data.map(function(t){return(0,d.A)((0,d.A)({},t),{},{label:t.symbol+(t.name?" (".concat(t.name,")"):""),value:"".concat(t.market,":").concat(t.symbol)})}),Nt(),y.value.length>0&&!$.value&&(a=y.value[0],K.value=a.market,$.value=a.symbol,p.value=a.value)),t.n=5;break;case 4:t.p=4,t.v,u.A.error(i.$t("dashboard.indicator.error.loadWatchlistFailed"));case 5:return t.p=5,_.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),Nt=function(){b.value?m.value=y.value.filter(function(t){return t.symbol.toLowerCase().includes(b.value.toLowerCase())||t.name&&t.name.toLowerCase().includes(b.value.toLowerCase())}):m.value=y.value},Ot=function(t){b.value=t,0===y.value.length&&t&&(x.value=!0),Nt()},zt=function(t){x.value=t,t||(b.value="")},Vt=function(t){if("__empty_watchlist_hint__"!==t){if("__add_stock_option__"===t)return w.value=!0,void setTimeout(function(){p.value=void 0},0);var e=y.value.find(function(e){return e.value===t});if(e||(e=m.value.find(function(e){return e.value===t})),!e&&t.includes(":")){var i=t.split(":"),n=(0,s.A)(i,2),a=n[0],r=n[1];e={market:a,symbol:r,value:t}}e&&(K.value=e.market,$.value=e.symbol,p.value=e.value)}},Wt=function(t,e){var i,n=(null===(i=e.componentOptions)||void 0===i||null===(i=i.propsData)||void 0===i?void 0:i.value)||"";return"__empty_watchlist_hint__"===n||"__add_stock_option__"===n||n.toLowerCase().includes(t.toLowerCase())},Ht=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,(0,f.iO)();case 1:e=t.v,e&&1===e.code&&e.data&&Array.isArray(e.data)?T.value=e.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):e&&1===e.code&&e.data&&"object"===(0,o.A)(e.data)?T.value=Object.keys(e.data).map(function(t){return{value:t,i18nKey:"dashboard.analysis.market.".concat(t)}}):T.value=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"CNStock",i18nKey:"dashboard.analysis.market.CNStock"},{value:"HKStock",i18nKey:"dashboard.analysis.market.HKStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],T.value.length>0&&!C.value&&(C.value=T.value[0].value),t.n=3;break;case 2:t.p=2,t.v,T.value=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"CNStock",i18nKey:"dashboard.analysis.market.CNStock"},{value:"HKStock",i18nKey:"dashboard.analysis.market.HKStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:return t.a(2)}},t,null,[[0,2]])}));return function(){return t.apply(this,arguments)}}(),$t=function(){w.value=!1,M.value=null,k.value="",I.value=[],B.value=!1,C.value=T.value.length>0?T.value[0].value:""},Kt=function(t){C.value=t,k.value="",I.value=[],M.value=null,B.value=!1,Zt(t)},Yt=function(t){var e=t.target.value;if(k.value=e,D.value&&clearTimeout(D.value),!e||""===e.trim())return I.value=[],B.value=!1,void(M.value=null);D.value=setTimeout(function(){jt(e)},500)},Xt=function(t){t&&t.trim()&&(C.value?I.value.length>0||(B.value&&0===I.value.length?Ut():jt(t)):u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},jt=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var n;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e&&""!==e.trim()){t.n=1;break}return I.value=[],B.value=!1,t.a(2);case 1:if(C.value){t.n=2;break}return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),t.a(2);case 2:return E.value=!0,B.value=!0,t.p=3,t.n=4,(0,f._3)({market:C.value,keyword:e.trim(),limit:20});case 4:n=t.v,n&&1===n.code&&n.data&&n.data.length>0?I.value=n.data:(I.value=[],M.value={market:C.value,symbol:e.trim().toUpperCase(),name:""}),t.n=6;break;case 5:t.p=5,t.v,I.value=[],M.value={market:C.value,symbol:e.trim().toUpperCase(),name:""};case 6:return t.p=6,E.value=!1,t.f(6);case 7:return t.a(2)}},t,null,[[3,5,6,7]])}));return function(e){return t.apply(this,arguments)}}(),Ut=function(){k.value&&k.value.trim()?C.value?M.value={market:C.value,symbol:k.value.trim().toUpperCase(),name:""}:u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},Gt=function(t){M.value={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},Zt=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var i;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e||(e=C.value||(T.value.length>0?T.value[0].value:"")),e){t.n=1;break}return t.a(2);case 1:return P.value=!0,t.p=2,t.n=3,(0,f.z6)({market:e,limit:10});case 3:i=t.v,i&&1===i.code&&i.data?A.value=i.data:A.value=[],t.n=5;break;case 4:t.p=4,t.v,A.value=[];case 5:return t.p=5,P.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e){return t.apply(this,arguments)}}(),qt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e="",a="",!M.value){t.n=1;break}e=M.value.market,a=M.value.symbol.toUpperCase(),t.n=4;break;case 1:if(!k.value||!k.value.trim()){t.n=3;break}if(C.value){t.n=2;break}return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),t.a(2);case 2:e=C.value,a=k.value.trim().toUpperCase(),t.n=4;break;case 3:return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),t.a(2);case 4:return S.value=!0,t.p=5,t.n=6,(0,f.dp)({userid:n.value,market:e,symbol:a});case 6:if(r=t.v,!r||1!==r.code){t.n=8;break}return u.A.success(i.$t("dashboard.analysis.message.addStockSuccess")),$t(),t.n=7,Lt();case 7:t.n=9;break;case 8:u.A.error((null===r||void 0===r?void 0:r.msg)||i.$t("dashboard.analysis.message.addStockFailed"));case 9:t.n=11;break;case 10:t.p=10,c=t.v,s=(null===c||void 0===c||null===(o=c.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===c||void 0===c?void 0:c.message)||i.$t("dashboard.analysis.message.addStockFailed"),u.A.error(s);case 11:return t.p=11,S.value=!1,t.f(11);case 12:return t.a(2)}},t,null,[[5,10,11,12]])}));return function(){return t.apply(this,arguments)}}(),Jt=function(t){if(!ie(t.id)){var e=t.params||t.defaultParams||{};G.value.push((0,d.A)((0,d.A)({},t),{},{id:t.id,params:(0,d.A)({},e)}))}},Qt=function(t){G.value=G.value.filter(function(e){return e.id!==t})},te=function(t){var e=t.action,i=t.indicator;if("add"===e){var n=(0,d.A)((0,d.A)({},i),{},{calculate:ee(i.id)});Jt(n)}else"remove"===e&&Qt(i.id)},ee=function(t){return null},ie=function(t){return"sma"===t?q.some(function(t){return G.value.some(function(e){return e.id===t.id})}):"ema"===t?J.some(function(t){return G.value.some(function(e){return e.id===t.id})}):G.value.some(function(e){return e.id===t})},ne=function(){var t=new Set;return q.forEach(function(e){return t.add(e.id)}),J.forEach(function(e){return t.add(e.id)}),G.value.filter(function(e){return!t.has(e.id)})},ae=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,i,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return t.a(2);case 1:return et.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:n.value}});case 3:e=t.v,1===e.code&&e.data&&(i=e.data.filter(function(t){return!t.is_buy||0===t.is_buy||"0"===t.is_buy}),a=e.data.filter(function(t){return 1===t.is_buy||"1"===t.is_buy}),Q.value=i.map(function(t){return(0,d.A)((0,d.A)({},t),{},{type:"python",source:"custom"})}),tt.value=a.map(function(t){return(0,d.A)((0,d.A)({},t),{},{type:"python",source:"purchased"})})),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.p=5,et.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),re=(0,h.KR)(null),oe=function(){var t=(0,c.A)((0,l.A)().m(function t(e,n){var a,r,o,s,c,h,p,v,f;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a="".concat(n,"-").concat(e.id),!ie(a)){t.n=1;break}return Qt(a),t.a(2);case 1:if(t.p=1,r=e.code||"",re.value){t.n=2;break}return u.A.error(i.$t("dashboard.indicator.error.chartNotReady")),t.a(2);case 2:if("function"===typeof re.value.parsePythonStrategy){t.n=3;break}return u.A.error(i.$t("dashboard.indicator.error.chartMethodNotReady")),t.a(2);case 3:if("function"===typeof re.value.executePythonStrategy){t.n=4;break}return u.A.error(i.$t("dashboard.indicator.error.chartExecuteNotReady")),t.a(2);case 4:if(o=re.value.parsePythonStrategy(r),o){t.n=5;break}return u.A.error(i.$t("dashboard.indicator.error.parseFailed")),t.a(2);case 5:s=e.userParams||{},c=r,h=(0,d.A)({},s),p={id:a,name:e.name,type:"python",code:c,description:e.description,parsed:o,userParams:h,originalId:e.id,user_id:e.user_id||e.userId,is_encrypted:e.is_encrypted||e.isEncrypted||0,calculate:function(t,i){return re.value.executePythonStrategy(c,t,(0,d.A)((0,d.A)({},i),h),{id:e.id,user_id:e.user_id||e.userId,is_encrypted:e.is_encrypted||e.isEncrypted||0})}},v=(0,d.A)((0,d.A)({},o.params),s),G.value.push((0,d.A)((0,d.A)({},p),{},{params:v})),t.n=7;break;case 6:t.p=6,f=t.v,u.A.error(i.$t("dashboard.indicator.error.addIndicatorFailed")+": "+(f.message||"未知错误"));case 7:return t.a(2)}},t,null,[[1,6]])}));return function(e,i){return t.apply(this,arguments)}}(),se=function(){var t=(0,c.A)((0,l.A)().m(function t(e,n){var a,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a="".concat(n,"-").concat(e.id),!ie(a)){t.n=1;break}Qt(a),t.n=5;break;case 1:return t.p=1,st.value=!0,t.n=2,i.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:e.id}});case 2:r=t.v,r&&1===r.code&&Array.isArray(r.data)&&r.data.length>0?(rt.value=r.data,o="".concat(n,"-").concat(e.id),s=lt.value[o],c={},r.data.forEach(function(t){var e=s&&void 0!==s[t.name]?s[t.name]:t.default;e="int"===t.type?parseInt(e)||0:"float"===t.type?parseFloat(e)||0:"bool"===t.type?!0===e||"true"===e||1===e||"1"===e:e||"",c[t.name]=e}),ot.value=c,nt.value=e,at.value=n,it.value=!0):oe(e,n),t.n=4;break;case 3:t.p=3,t.v,oe(e,n);case 4:return t.p=4,st.value=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}));return function(e,i){return t.apply(this,arguments)}}(),le=function(){if(nt.value){var t="".concat(at.value,"-").concat(nt.value.id);lt.value[t]=(0,d.A)({},ot.value);var e=(0,d.A)((0,d.A)({},nt.value),{},{userParams:(0,d.A)({},ot.value)});oe(e,at.value)}it.value=!1,nt.value=null,at.value=""},ce=function(){ue(),it.value=!1,setTimeout(function(){nt.value=null,at.value=""},100)},ue=function(){if(nt.value&&at.value){var t="".concat(at.value,"-").concat(nt.value.id);lt.value[t]=JSON.parse(JSON.stringify(ot.value))}},de=function(){ue()},he=function(t){var e=t.code,n=t.name;if(e&&e.trim())try{if(!re.value)return void u.A.error(i.$t("dashboard.indicator.error.chartNotReady"));if("function"!==typeof re.value.parsePythonStrategy)return void u.A.error(i.$t("dashboard.indicator.error.chartMethodNotReady"));if("function"!==typeof re.value.executePythonStrategy)return void u.A.error(i.$t("dashboard.indicator.error.chartExecuteNotReady"));var a=re.value.parsePythonStrategy(e);if(!a)return void u.A.error(i.$t("dashboard.indicator.error.parseFailedCheck"));var r={id:"temp-editor-indicator",name:n||"临时指标",type:"python",code:e,description:"",parsed:a,calculate:function(t,i){var n=e;return re.value.executePythonStrategy(n,t,i)}},o=G.value.findIndex(function(t){return"temp-editor-indicator"===t.id});o>=0&&G.value.splice(o,1),G.value.push((0,d.A)((0,d.A)({},r),{},{params:(0,d.A)({},a.params)})),u.A.success(i.$t("dashboard.indicator.success.runIndicator"))}catch(s){u.A.error(i.$t("dashboard.indicator.error.runIndicatorFailed")+": "+(s.message||"未知错误"))}else u.A.warning(i.$t("dashboard.indicator.warning.enterCode"))},pe=function(){ht.value=null,dt.value=!0},ve=function(t){ht.value=t,dt.value=!0},fe=function(){ct.value=!ct.value},ge=function(t){r.A.confirm({title:i.$t("dashboard.indicator.delete.confirmTitle"),content:i.$t("dashboard.indicator.delete.confirmContent",{name:t.name}),okText:i.$t("dashboard.indicator.delete.confirmOk"),okType:"danger",cancelText:i.$t("dashboard.indicator.delete.confirmCancel"),onOk:function(){var e=(0,c.A)((0,l.A)().m(function e(){var a,r,o;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,v.Ay)({url:"/api/indicator/deleteIndicator",method:"post",data:{id:t.id,userid:n.value}});case 1:if(a=e.v,1!==a.code){e.n=3;break}return u.A.success(i.$t("dashboard.indicator.delete.success")),r="custom-"+t.id,ie(r)&&Qt(r),e.n=2,ae();case 2:e.n=4;break;case 3:u.A.error(a.msg||i.$t("dashboard.indicator.delete.failed"));case 4:e.n=6;break;case 5:e.p=5,o=e.v,u.A.error(i.$t("dashboard.indicator.delete.failed")+": "+(o.message||"未知错误"));case 6:return e.a(2)}},e,null,[[0,5]])}));function a(){return e.apply(this,arguments)}return a}()})},me=function(t){i.$router.push({path:"/backtest-center",query:{tab:"indicator",indicator_id:String(t.id)}})},ye=function(t){i.$router.push({path:"/backtest-center",query:{tab:"indicator",indicator_id:String(t.id),view:"history"}})},_e=function(t){},be=function(t){bt.value=(0,d.A)({},t),St.value=t.pricing_type||"free",Ct.value=t.price||10,kt.value=t.description||"",It.value=!!t.vip_free,_t.value=!0},xe=function(t){i.$router.push({path:"/trading-assistant",query:{mode:"create",indicator_id:String(t.id),indicator_name:t.name||"",indicator_desc:t.description||""}})},we=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return u.A.error(i.$t("dashboard.indicator.error.pleaseLogin")),t.a(2);case 1:return xt.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:bt.value.id,code:bt.value.code,name:bt.value.name,description:kt.value,publishToCommunity:!0,pricingType:St.value,price:"paid"===St.value?Ct.value:0,vipFree:"paid"===St.value&&It.value}});case 3:if(e=t.v,1!==e.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.publish.success")),_t.value=!1,bt.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(e.msg||i.$t("dashboard.indicator.publish.failed"));case 6:t.n=8;break;case 7:t.p=7,a=t.v,u.A.error(i.$t("dashboard.indicator.publish.failed")+": "+(a.message||""));case 8:return t.p=8,xt.value=!1,t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(){return t.apply(this,arguments)}}(),Se=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value&&bt.value){t.n=1;break}return t.a(2);case 1:return wt.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:bt.value.id,code:bt.value.code,name:bt.value.name,description:bt.value.description,publishToCommunity:!1,pricingType:"free",price:0,vipFree:!1}});case 3:if(e=t.v,1!==e.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.publish.unpublishSuccess")),_t.value=!1,bt.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(e.msg||i.$t("dashboard.indicator.publish.unpublishFailed"));case 6:t.n=8;break;case 7:t.p=7,t.v,u.A.error(i.$t("dashboard.indicator.publish.unpublishFailed"));case 8:return t.p=8,wt.value=!1,t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(){return t.apply(this,arguments)}}(),Ce=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var a,r,o;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return u.A.error(i.$t("dashboard.indicator.error.pleaseLogin")),t.a(2);case 1:return a=i.$refs.indicatorEditor,a&&(a.saving=!0),t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:e.id||0,code:e.code}});case 3:if(r=t.v,1!==r.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.save.success")),dt.value=!1,ht.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(r.msg||i.$t("dashboard.indicator.save.failed"));case 6:t.n=8;break;case 7:t.p=7,o=t.v,u.A.error(i.$t("dashboard.indicator.save.failed")+": "+(o.message||"未知错误"));case 8:return t.p=8,a&&(a.saving=!1),t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(e){return t.apply(this,arguments)}}(),ke=function(t){var e=t.end_time;if(1===e||"1"===e)return i.$t("dashboard.indicator.status.normalPermanent");if(!e||0===e)return i.$t("dashboard.indicator.status.normal");var n=Math.floor(Date.now()/1e3);return e0&&!C.value&&(C.value=T.value[0].value),C.value&&Zt(C.value)):(M.value=null,k.value="",I.value=[],B.value=!1,D.value&&(clearTimeout(D.value),D.value=null))}),(0,h.wB)(function(){return ot.value},function(t){if(it.value&&nt.value&&at.value){var e="".concat(at.value,"-").concat(nt.value.id);lt.value[e]=JSON.parse(JSON.stringify(t))}},{deep:!0,immediate:!1}),(0,h.wB)(it,function(t){t||ue()}),{userId:n,klineChart:re,searchSymbol:p,symbolSuggestions:m,watchlist:y,symbolSearchValue:b,symbolSearchOpen:x,currentSymbol:$,currentMarket:K,currentPrice:Y,priceChange:X,priceChangeClass:j,timeframe:U,loadingWatchlist:_,activeIndicators:G,trendIndicators:Dt,oscillatorIndicators:Tt,customIndicators:Q,purchasedIndicators:tt,loadingIndicators:et,realtimeEnabled:At,toggleRealtime:De,handleSymbolSearch:Ot,handleSymbolSelect:Vt,handleDropdownVisibleChange:zt,filterSymbolOption:Wt,getMarketName:Pe,getMarketColor:Me,setTimeframe:Bt,addIndicator:Jt,removeIndicator:Qt,isIndicatorActive:ie,loadIndicators:ae,addPythonIndicator:oe,toggleIndicator:se,getIndicatorStatus:ke,getIndicatorStatusIcon:Ie,getIndicatorStatusClass:Ee,getExpiryTimeText:Ae,formatParams:Ft,loadWatchlist:Lt,getCustomActiveIndicators:ne,showIndicatorEditor:dt,editingIndicator:ht,handleCreateIndicator:pe,handleRunIndicator:he,handleSaveIndicator:Ce,handleEditIndicator:ve,handleDeleteIndicator:ge,toggleCustomSection:fe,customSectionCollapsed:ct,purchasedSectionCollapsed:ut,handlePriceChange:Pt,handleChartRetry:Mt,handleIndicatorToggle:te,showParamsModal:it,pendingIndicator:nt,indicatorParams:rt,indicatorParamValues:ot,loadingParams:st,confirmIndicatorParams:le,cancelIndicatorParams:ce,handleParamsModalAfterClose:de,showBacktestModal:pt,backtestIndicator:vt,handleOpenBacktest:me,showBacktestHistoryDrawer:ft,backtestHistoryIndicator:gt,handleOpenBacktestHistory:ye,showBacktestRunViewer:mt,selectedBacktestRun:yt,handleViewBacktestRun:_e,showPublishModal:_t,publishIndicator:bt,publishing:xt,unpublishing:wt,publishPricingType:St,publishPrice:Ct,publishDescription:kt,publishVipFree:It,publishRules:Et,handlePublishIndicator:be,handleCreateStrategyFromIndicator:xe,handleConfirmPublish:we,handleUnpublish:Se,selectedSymbol:$,selectedMarket:K,selectedTimeframe:U,isMobile:Z,showAddStockModal:w,addingStock:S,selectedMarketTab:C,symbolSearchKeyword:k,symbolSearchResults:I,searchingSymbols:E,hotSymbols:A,loadingHotSymbols:P,selectedSymbolForAdd:M,marketTypes:T,hasSearched:B,handleCloseAddStockModal:$t,handleMarketTabChange:Kt,handleSymbolSearchInput:Yt,handleSearchOrInput:Xt,searchSymbolsInModal:jt,selectSymbol:Gt,loadHotSymbols:Zt,handleAddStock:qt,handleDirectAdd:Ut,loadMarketTypes:Ht,showQuickTrade:F,qtSymbol:R,qtSide:L,qtPrice:N,isCryptoMarket:O,openQuickTrade:z,onQuickTradeSuccess:V,handleQuickTradeSymbolChange:W,goToIndicatorMarket:H}}},Wa=Va,Ha=(0,E.A)(Wa,n,a,!1,null,"11d8a5e2",null),$a=Ha.exports},40955:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.BlockCipher,a=e.algo,r=[],o=[],s=[],l=[],c=[],u=[],d=[],h=[],p=[],v=[];(function(){for(var t=[],e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;var i=0,n=0;for(e=0;e<256;e++){var a=n^n<<1^n<<2^n<<3^n<<4;a=a>>>8^255&a^99,r[i]=a,o[a]=i;var f=t[i],g=t[f],m=t[g],y=257*t[a]^16843008*a;s[i]=y<<24|y>>>8,l[i]=y<<16|y>>>16,c[i]=y<<8|y>>>24,u[i]=y;y=16843009*m^65537*g^257*f^16843008*i;d[a]=y<<24|y>>>8,h[a]=y<<16|y>>>16,p[a]=y<<8|y>>>24,v[a]=y,i?(i=f^t[t[t[m^f]]],n^=t[t[n]]):i=n=1}})();var f=[0,1,2,4,8,16,32,64,128,27,54],g=a.AES=n.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,i=t.sigBytes/4,n=this._nRounds=i+6,a=4*(n+1),o=this._keySchedule=[],s=0;s6&&s%i==4&&(u=r[u>>>24]<<24|r[u>>>16&255]<<16|r[u>>>8&255]<<8|r[255&u]):(u=u<<8|u>>>24,u=r[u>>>24]<<24|r[u>>>16&255]<<16|r[u>>>8&255]<<8|r[255&u],u^=f[s/i|0]<<24),o[s]=o[s-i]^u);for(var l=this._invKeySchedule=[],c=0;c>>24]]^h[r[u>>>16&255]]^p[r[u>>>8&255]]^v[r[255&u]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,s,l,c,u,r)},decryptBlock:function(t,e){var i=t[e+1];t[e+1]=t[e+3],t[e+3]=i,this._doCryptBlock(t,e,this._invKeySchedule,d,h,p,v,o);i=t[e+1];t[e+1]=t[e+3],t[e+3]=i},_doCryptBlock:function(t,e,i,n,a,r,o,s){for(var l=this._nRounds,c=t[e]^i[0],u=t[e+1]^i[1],d=t[e+2]^i[2],h=t[e+3]^i[3],p=4,v=1;v>>24]^a[u>>>16&255]^r[d>>>8&255]^o[255&h]^i[p++],g=n[u>>>24]^a[d>>>16&255]^r[h>>>8&255]^o[255&c]^i[p++],m=n[d>>>24]^a[h>>>16&255]^r[c>>>8&255]^o[255&u]^i[p++],y=n[h>>>24]^a[c>>>16&255]^r[u>>>8&255]^o[255&d]^i[p++];c=f,u=g,d=m,h=y}f=(s[c>>>24]<<24|s[u>>>16&255]<<16|s[d>>>8&255]<<8|s[255&h])^i[p++],g=(s[u>>>24]<<24|s[d>>>16&255]<<16|s[h>>>8&255]<<8|s[255&c])^i[p++],m=(s[d>>>24]<<24|s[h>>>16&255]<<16|s[c>>>8&255]<<8|s[255&u])^i[p++],y=(s[h>>>24]<<24|s[c>>>16&255]<<16|s[u>>>8&255]<<8|s[255&d])^i[p++];t[e]=f,t[e+1]=g,t[e+2]=m,t[e+3]=y},keySize:8});e.AES=n._createHelper(g)}(),t.AES})},43128:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.BlockCipher,a=e.algo;const r=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],s=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var l={pbox:[],sbox:[]};function c(t,e){let i=e>>24&255,n=e>>16&255,a=e>>8&255,r=255&e,o=t.sbox[0][i]+t.sbox[1][n];return o^=t.sbox[2][a],o+=t.sbox[3][r],o}function u(t,e,i){let n,a=e,o=i;for(let s=0;s1;--s)a^=t.pbox[s],o=c(t,a)^o,n=a,a=o,o=n;return n=a,a=o,o=n,o^=t.pbox[1],a^=t.pbox[0],{left:a,right:o}}function h(t,e,i){for(let r=0;r<4;r++){t.sbox[r]=[];for(let e=0;e<256;e++)t.sbox[r][e]=s[r][e]}let n=0;for(let s=0;s=i&&(n=0);let a=0,l=0,c=0;for(let o=0;o>>2];t.sigBytes-=e}},m=(n.BlockCipher=d.extend({cfg:d.cfg.extend({mode:v,padding:g}),reset:function(){var t;d.reset.call(this);var e=this.cfg,i=e.iv,n=e.mode;this._xformMode==this._ENC_XFORM_MODE?t=n.createEncryptor:(t=n.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==t?this._mode.init(this,i&&i.words):(this._mode=t.call(n,this,i&&i.words),this._mode.__creator=t)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t,e=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(e.pad(this._data,this.blockSize),t=this._process(!0)):(t=this._process(!0),e.unpad(t)),t},blockSize:4}),n.CipherParams=a.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),y=i.format={},_=y.OpenSSL={stringify:function(t){var e,i=t.ciphertext,n=t.salt;return e=n?r.create([1398893684,1701076831]).concat(n).concat(i):i,e.toString(l)},parse:function(t){var e,i=l.parse(t),n=i.words;return 1398893684==n[0]&&1701076831==n[1]&&(e=r.create(n.slice(2,4)),n.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:e})}},b=n.SerializableCipher=a.extend({cfg:a.extend({format:_}),encrypt:function(t,e,i,n){n=this.cfg.extend(n);var a=t.createEncryptor(i,n),r=a.finalize(e),o=a.cfg;return m.create({ciphertext:r,key:i,iv:o.iv,algorithm:t,mode:o.mode,padding:o.padding,blockSize:t.blockSize,formatter:n.format})},decrypt:function(t,e,i,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var a=t.createDecryptor(i,n).finalize(e.ciphertext);return a},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),x=i.kdf={},w=x.OpenSSL={execute:function(t,e,i,n,a){if(n||(n=r.random(8)),a)o=u.create({keySize:e+i,hasher:a}).compute(t,n);else var o=u.create({keySize:e+i}).compute(t,n);var s=r.create(o.words.slice(e),4*i);return o.sigBytes=4*e,m.create({key:o,iv:s,salt:n})}},S=n.PasswordBasedCipher=b.extend({cfg:b.cfg.extend({kdf:w}),encrypt:function(t,e,i,n){n=this.cfg.extend(n);var a=n.kdf.execute(i,t.keySize,t.ivSize,n.salt,n.hasher);n.iv=a.iv;var r=b.encrypt.call(this,t,e,a.key,n);return r.mixIn(a),r},decrypt:function(t,e,i,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var a=n.kdf.execute(i,t.keySize,t.ivSize,e.salt,n.hasher);n.iv=a.iv;var r=b.decrypt.call(this,t,e,a.key,n);return r}})}()})},19021:function(t,e,i){(function(e,i){t.exports=i()})(0,function(){var t=t||function(t,e){var n;if("undefined"!==typeof window&&window.crypto&&(n=window.crypto),"undefined"!==typeof self&&self.crypto&&(n=self.crypto),"undefined"!==typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!==typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&"undefined"!==typeof i.g&&i.g.crypto&&(n=i.g.crypto),!n)try{n=i(50477)}catch(g){}var a=function(){if(n){if("function"===typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(g){}if("function"===typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(g){}}throw new Error("Native crypto module could not be used to get secure random number.")},r=Object.create||function(){function t(){}return function(e){var i;return t.prototype=e,i=new t,t.prototype=null,i}}(),o={},s=o.lib={},l=s.Base=function(){return{extend:function(t){var e=r(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),c=s.WordArray=l.extend({init:function(t,i){t=this.words=t||[],this.sigBytes=i!=e?i:4*t.length},toString:function(t){return(t||d).stringify(this)},concat:function(t){var e=this.words,i=t.words,n=this.sigBytes,a=t.sigBytes;if(this.clamp(),n%4)for(var r=0;r>>2]>>>24-r%4*8&255;e[n+r>>>2]|=o<<24-(n+r)%4*8}else for(var s=0;s>>2]=i[s>>>2];return this.sigBytes+=a,this},clamp:function(){var e=this.words,i=this.sigBytes;e[i>>>2]&=4294967295<<32-i%4*8,e.length=t.ceil(i/4)},clone:function(){var t=l.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],i=0;i>>2]>>>24-a%4*8&255;n.push((r>>>4).toString(16)),n.push((15&r).toString(16))}return n.join("")},parse:function(t){for(var e=t.length,i=[],n=0;n>>3]|=parseInt(t.substr(n,2),16)<<24-n%8*4;return new c.init(i,e/2)}},h=u.Latin1={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>24-a%4*8&255;n.push(String.fromCharCode(r))}return n.join("")},parse:function(t){for(var e=t.length,i=[],n=0;n>>2]|=(255&t.charCodeAt(n))<<24-n%4*8;return new c.init(i,e)}},p=u.Utf8={stringify:function(t){try{return decodeURIComponent(escape(h.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return h.parse(unescape(encodeURIComponent(t)))}},v=s.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=p.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var i,n=this._data,a=n.words,r=n.sigBytes,o=this.blockSize,s=4*o,l=r/s;l=e?t.ceil(l):t.max((0|l)-this._minBufferSize,0);var u=l*o,d=t.min(4*u,r);if(u){for(var h=0;h>>2]>>>24-r%4*8&255,s=e[r+1>>>2]>>>24-(r+1)%4*8&255,l=e[r+2>>>2]>>>24-(r+2)%4*8&255,c=o<<16|s<<8|l,u=0;u<4&&r+.75*u>>6*(3-u)&63));var d=n.charAt(64);if(d)while(a.length%4)a.push(d);return a.join("")},parse:function(t){var e=t.length,i=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var a=0;a>>6-o%4*2,c=s|l;a[r>>>2]|=c<<24-r%4*8,r++}return n.create(a,r)}}(),t.enc.Base64})},64725:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.enc;a.Base64url={stringify:function(t,e){void 0===e&&(e=!0);var i=t.words,n=t.sigBytes,a=e?this._safe_map:this._map;t.clamp();for(var r=[],o=0;o>>2]>>>24-o%4*8&255,l=i[o+1>>>2]>>>24-(o+1)%4*8&255,c=i[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|l<<8|c,d=0;d<4&&o+.75*d>>6*(3-d)&63));var h=a.charAt(64);if(h)while(r.length%4)r.push(h);return r.join("")},parse:function(t,e){void 0===e&&(e=!0);var i=t.length,n=e?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var o=0;o>>6-o%4*2,c=s|l;a[r>>>2]|=c<<24-r%4*8,r++}return n.create(a,r)}}(),t.enc.Base64url})},45503:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.enc;a.Utf16=a.Utf16BE={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>16-a%4*8&65535;n.push(String.fromCharCode(r))}return n.join("")},parse:function(t){for(var e=t.length,i=[],a=0;a>>1]|=t.charCodeAt(a)<<16-a%2*16;return n.create(i,2*e)}};function r(t){return t<<8&4278255360|t>>>8&16711935}a.Utf16LE={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>16-a%4*8&65535);n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,i=[],a=0;a>>1]|=r(t.charCodeAt(a)<<16-a%2*16);return n.create(i,2*e)}}}(),t.enc.Utf16})},39506:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(45471),i(51025))})(0,function(t){return function(){var e=t,i=e.lib,n=i.Base,a=i.WordArray,r=e.algo,o=r.MD5,s=r.EvpKDF=n.extend({cfg:n.extend({keySize:4,hasher:o,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){var i,n=this.cfg,r=n.hasher.create(),o=a.create(),s=o.words,l=n.keySize,c=n.iterations;while(s.lengthn&&(e=t.finalize(e)),e.clamp();for(var a=this._oKey=e.clone(),o=this._iKey=e.clone(),s=a.words,l=o.words,c=0;c>>2]|=t[n]<<24-n%4*8;a.call(this,i,e)}else a.apply(this,arguments)};r.prototype=n}}(),t.lib.WordArray})},84636:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.algo,s=[];(function(){for(var t=0;t<64;t++)s[t]=4294967296*e.abs(e.sin(t+1))|0})();var l=o.MD5=r.extend({_doReset:function(){this._hash=new a.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var i=0;i<16;i++){var n=e+i,a=t[n];t[n]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}var r=this._hash.words,o=t[e+0],l=t[e+1],p=t[e+2],v=t[e+3],f=t[e+4],g=t[e+5],m=t[e+6],y=t[e+7],_=t[e+8],b=t[e+9],x=t[e+10],w=t[e+11],S=t[e+12],C=t[e+13],k=t[e+14],I=t[e+15],E=r[0],A=r[1],P=r[2],M=r[3];E=c(E,A,P,M,o,7,s[0]),M=c(M,E,A,P,l,12,s[1]),P=c(P,M,E,A,p,17,s[2]),A=c(A,P,M,E,v,22,s[3]),E=c(E,A,P,M,f,7,s[4]),M=c(M,E,A,P,g,12,s[5]),P=c(P,M,E,A,m,17,s[6]),A=c(A,P,M,E,y,22,s[7]),E=c(E,A,P,M,_,7,s[8]),M=c(M,E,A,P,b,12,s[9]),P=c(P,M,E,A,x,17,s[10]),A=c(A,P,M,E,w,22,s[11]),E=c(E,A,P,M,S,7,s[12]),M=c(M,E,A,P,C,12,s[13]),P=c(P,M,E,A,k,17,s[14]),A=c(A,P,M,E,I,22,s[15]),E=u(E,A,P,M,l,5,s[16]),M=u(M,E,A,P,m,9,s[17]),P=u(P,M,E,A,w,14,s[18]),A=u(A,P,M,E,o,20,s[19]),E=u(E,A,P,M,g,5,s[20]),M=u(M,E,A,P,x,9,s[21]),P=u(P,M,E,A,I,14,s[22]),A=u(A,P,M,E,f,20,s[23]),E=u(E,A,P,M,b,5,s[24]),M=u(M,E,A,P,k,9,s[25]),P=u(P,M,E,A,v,14,s[26]),A=u(A,P,M,E,_,20,s[27]),E=u(E,A,P,M,C,5,s[28]),M=u(M,E,A,P,p,9,s[29]),P=u(P,M,E,A,y,14,s[30]),A=u(A,P,M,E,S,20,s[31]),E=d(E,A,P,M,g,4,s[32]),M=d(M,E,A,P,_,11,s[33]),P=d(P,M,E,A,w,16,s[34]),A=d(A,P,M,E,k,23,s[35]),E=d(E,A,P,M,l,4,s[36]),M=d(M,E,A,P,f,11,s[37]),P=d(P,M,E,A,y,16,s[38]),A=d(A,P,M,E,x,23,s[39]),E=d(E,A,P,M,C,4,s[40]),M=d(M,E,A,P,o,11,s[41]),P=d(P,M,E,A,v,16,s[42]),A=d(A,P,M,E,m,23,s[43]),E=d(E,A,P,M,b,4,s[44]),M=d(M,E,A,P,S,11,s[45]),P=d(P,M,E,A,I,16,s[46]),A=d(A,P,M,E,p,23,s[47]),E=h(E,A,P,M,o,6,s[48]),M=h(M,E,A,P,y,10,s[49]),P=h(P,M,E,A,k,15,s[50]),A=h(A,P,M,E,g,21,s[51]),E=h(E,A,P,M,S,6,s[52]),M=h(M,E,A,P,v,10,s[53]),P=h(P,M,E,A,x,15,s[54]),A=h(A,P,M,E,l,21,s[55]),E=h(E,A,P,M,_,6,s[56]),M=h(M,E,A,P,I,10,s[57]),P=h(P,M,E,A,m,15,s[58]),A=h(A,P,M,E,C,21,s[59]),E=h(E,A,P,M,f,6,s[60]),M=h(M,E,A,P,w,10,s[61]),P=h(P,M,E,A,p,15,s[62]),A=h(A,P,M,E,b,21,s[63]),r[0]=r[0]+E|0,r[1]=r[1]+A|0,r[2]=r[2]+P|0,r[3]=r[3]+M|0},_doFinalize:function(){var t=this._data,i=t.words,n=8*this._nDataBytes,a=8*t.sigBytes;i[a>>>5]|=128<<24-a%32;var r=e.floor(n/4294967296),o=n;i[15+(a+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),i[14+(a+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(i.length+1),this._process();for(var s=this._hash,l=s.words,c=0;c<4;c++){var u=l[c];l[c]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}return s},clone:function(){var t=r.clone.call(this);return t._hash=this._hash.clone(),t}});function c(t,e,i,n,a,r,o){var s=t+(e&i|~e&n)+a+o;return(s<>>32-r)+e}function u(t,e,i,n,a,r,o){var s=t+(e&n|i&~n)+a+o;return(s<>>32-r)+e}function d(t,e,i,n,a,r,o){var s=t+(e^i^n)+a+o;return(s<>>32-r)+e}function h(t,e,i,n,a,r,o){var s=t+(i^(e|~n))+a+o;return(s<>>32-r)+e}i.MD5=r._createHelper(l),i.HmacMD5=r._createHmacHelper(l)}(Math),t.MD5})},82169:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.mode.CFB=function(){var e=t.lib.BlockCipherMode.extend();function i(t,e,i,n){var a,r=this._iv;r?(a=r.slice(0),this._iv=void 0):a=this._prevBlock,n.encryptBlock(a,0);for(var o=0;o>24&255)){var e=t>>16&255,i=t>>8&255,n=255&t;255===e?(e=0,255===i?(i=0,255===n?n=0:++n):++i):++e,t=0,t+=e<<16,t+=i<<8,t+=n}else t+=1<<24;return t}function n(t){return 0===(t[0]=i(t[0]))&&(t[1]=i(t[1])),t}var a=e.Encryptor=e.extend({processBlock:function(t,e){var i=this._cipher,a=i.blockSize,r=this._iv,o=this._counter;r&&(o=this._counter=r.slice(0),this._iv=void 0),n(o);var s=o.slice(0);i.encryptBlock(s,0);for(var l=0;l>>2]|=a<<24-r%4*8,t.sigBytes+=a},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},t.pad.Ansix923})},54905:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.pad.Iso10126={pad:function(e,i){var n=4*i,a=n-e.sigBytes%n;e.concat(t.lib.WordArray.random(a-1)).concat(t.lib.WordArray.create([a<<24],1))},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},t.pad.Iso10126})},10482:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.pad.Iso97971={pad:function(e,i){e.concat(t.lib.WordArray.create([2147483648],1)),t.pad.ZeroPadding.pad(e,i)},unpad:function(e){t.pad.ZeroPadding.unpad(e),e.sigBytes--}},t.pad.Iso97971})},58124:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.pad.NoPadding={pad:function(){},unpad:function(){}},t.pad.NoPadding})},52155:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.pad.ZeroPadding={pad:function(t,e){var i=4*e;t.clamp(),t.sigBytes+=i-(t.sigBytes%i||i)},unpad:function(t){var e=t.words,i=t.sigBytes-1;for(i=t.sigBytes-1;i>=0;i--)if(e[i>>>2]>>>24-i%4*8&255){t.sigBytes=i+1;break}}},t.pad.ZeroPadding})},70019:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(63009),i(51025))})(0,function(t){return function(){var e=t,i=e.lib,n=i.Base,a=i.WordArray,r=e.algo,o=r.SHA256,s=r.HMAC,l=r.PBKDF2=n.extend({cfg:n.extend({keySize:4,hasher:o,iterations:25e4}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){var i=this.cfg,n=s.create(i.hasher,t),r=a.create(),o=a.create([1]),l=r.words,c=o.words,u=i.keySize,d=i.iterations;while(l.length>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],n=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var a=0;a<4;a++)c.call(this);for(a=0;a<8;a++)n[a]^=i[a+4&7];if(e){var r=e.words,o=r[0],s=r[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),d=l>>>16|4294901760&u,h=u<<16|65535&l;n[0]^=l,n[1]^=d,n[2]^=u,n[3]^=h,n[4]^=l,n[5]^=d,n[6]^=u,n[7]^=h;for(a=0;a<4;a++)c.call(this)}},_doProcessBlock:function(t,e){var i=this._X;c.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var n=0;n<4;n++)r[n]=16711935&(r[n]<<8|r[n]>>>24)|4278255360&(r[n]<<24|r[n]>>>8),t[e+n]^=r[n]},blockSize:4,ivSize:2});function c(){for(var t=this._X,e=this._C,i=0;i<8;i++)o[i]=e[i];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0;for(i=0;i<8;i++){var n=t[i]+e[i],a=65535&n,r=n>>>16,l=((a*a>>>17)+a*r>>>15)+r*r,c=((4294901760&n)*n|0)+((65535&n)*n|0);s[i]=l^c}t[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,t[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,t[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,t[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,t[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,t[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,t[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,t[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.RabbitLegacy=n._createHelper(l)}(),t.RabbitLegacy})},96298:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.StreamCipher,a=e.algo,r=[],o=[],s=[],l=a.Rabbit=n.extend({_doReset:function(){for(var t=this._key.words,e=this.cfg.iv,i=0;i<4;i++)t[i]=16711935&(t[i]<<8|t[i]>>>24)|4278255360&(t[i]<<24|t[i]>>>8);var n=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],a=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(i=0;i<4;i++)c.call(this);for(i=0;i<8;i++)a[i]^=n[i+4&7];if(e){var r=e.words,o=r[0],s=r[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),d=l>>>16|4294901760&u,h=u<<16|65535&l;a[0]^=l,a[1]^=d,a[2]^=u,a[3]^=h,a[4]^=l,a[5]^=d,a[6]^=u,a[7]^=h;for(i=0;i<4;i++)c.call(this)}},_doProcessBlock:function(t,e){var i=this._X;c.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var n=0;n<4;n++)r[n]=16711935&(r[n]<<8|r[n]>>>24)|4278255360&(r[n]<<24|r[n]>>>8),t[e+n]^=r[n]},blockSize:4,ivSize:2});function c(){for(var t=this._X,e=this._C,i=0;i<8;i++)o[i]=e[i];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0;for(i=0;i<8;i++){var n=t[i]+e[i],a=65535&n,r=n>>>16,l=((a*a>>>17)+a*r>>>15)+r*r,c=((4294901760&n)*n|0)+((65535&n)*n|0);s[i]=l^c}t[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,t[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,t[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,t[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,t[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,t[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,t[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,t[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.Rabbit=n._createHelper(l)}(),t.Rabbit})},77193:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.StreamCipher,a=e.algo,r=a.RC4=n.extend({_doReset:function(){for(var t=this._key,e=t.words,i=t.sigBytes,n=this._S=[],a=0;a<256;a++)n[a]=a;a=0;for(var r=0;a<256;a++){var o=a%i,s=e[o>>>2]>>>24-o%4*8&255;r=(r+n[a]+s)%256;var l=n[a];n[a]=n[r],n[r]=l}this._i=this._j=0},_doProcessBlock:function(t,e){t[e]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var t=this._S,e=this._i,i=this._j,n=0,a=0;a<4;a++){e=(e+1)%256,i=(i+t[e])%256;var r=t[e];t[e]=t[i],t[i]=r,n|=t[(t[e]+t[i])%256]<<24-8*a}return this._i=e,this._j=i,n}e.RC4=n._createHelper(r);var s=a.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)o.call(this)}});e.RC4Drop=n._createHelper(s)}(),t.RC4})},78056:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){ +/** @preserve + (c) 2012 by Cédric Mesnil. All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +return function(){var e=t,i=e.lib,n=i.WordArray,a=i.Hasher,r=e.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),s=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),d=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=r.RIPEMD160=a.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var i=0;i<16;i++){var n=e+i,a=t[n];t[n]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}var r,h,_,b,x,w,S,C,k,I,E,A=this._hash.words,P=u.words,M=d.words,D=o.words,T=s.words,B=l.words,F=c.words;w=r=A[0],S=h=A[1],C=_=A[2],k=b=A[3],I=x=A[4];for(i=0;i<80;i+=1)E=r+t[e+D[i]]|0,E+=i<16?p(h,_,b)+P[0]:i<32?v(h,_,b)+P[1]:i<48?f(h,_,b)+P[2]:i<64?g(h,_,b)+P[3]:m(h,_,b)+P[4],E|=0,E=y(E,B[i]),E=E+x|0,r=x,x=b,b=y(_,10),_=h,h=E,E=w+t[e+T[i]]|0,E+=i<16?m(S,C,k)+M[0]:i<32?g(S,C,k)+M[1]:i<48?f(S,C,k)+M[2]:i<64?v(S,C,k)+M[3]:p(S,C,k)+M[4],E|=0,E=y(E,F[i]),E=E+I|0,w=I,I=k,k=y(C,10),C=S,S=E;E=A[1]+_+k|0,A[1]=A[2]+b+I|0,A[2]=A[3]+x+w|0,A[3]=A[4]+r+S|0,A[4]=A[0]+h+C|0,A[0]=E},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t.sigBytes=4*(e.length+1),this._process();for(var a=this._hash,r=a.words,o=0;o<5;o++){var s=r[o];r[o]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return a},clone:function(){var t=a.clone.call(this);return t._hash=this._hash.clone(),t}});function p(t,e,i){return t^e^i}function v(t,e,i){return t&e|~t&i}function f(t,e,i){return(t|~e)^i}function g(t,e,i){return t&i|e&~i}function m(t,e,i){return t^(e|~i)}function y(t,e){return t<>>32-e}e.RIPEMD160=a._createHelper(h),e.HmacRIPEMD160=a._createHmacHelper(h)}(Math),t.RIPEMD160})},45471:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=i.Hasher,r=e.algo,o=[],s=r.SHA1=a.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],s=i[3],l=i[4],c=0;c<80;c++){if(c<16)o[c]=0|t[e+c];else{var u=o[c-3]^o[c-8]^o[c-14]^o[c-16];o[c]=u<<1|u>>>31}var d=(n<<5|n>>>27)+l+o[c];d+=c<20?1518500249+(a&r|~a&s):c<40?1859775393+(a^r^s):c<60?(a&r|a&s|r&s)-1894007588:(a^r^s)-899497514,l=s,s=r,r=a<<30|a>>>2,a=n,n=d}i[0]=i[0]+n|0,i[1]=i[1]+a|0,i[2]=i[2]+r|0,i[3]=i[3]+s|0,i[4]=i[4]+l|0},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=Math.floor(i/4294967296),e[15+(n+64>>>9<<4)]=i,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=a.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA1=a._createHelper(s),e.HmacSHA1=a._createHmacHelper(s)}(),t.SHA1})},36308:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(63009))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.algo,r=a.SHA256,o=a.SHA224=r.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var t=r._doFinalize.call(this);return t.sigBytes-=4,t}});e.SHA224=r._createHelper(o),e.HmacSHA224=r._createHmacHelper(o)}(),t.SHA224})},63009:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.algo,s=[],l=[];(function(){function t(t){for(var i=e.sqrt(t),n=2;n<=i;n++)if(!(t%n))return!1;return!0}function i(t){return 4294967296*(t-(0|t))|0}var n=2,a=0;while(a<64)t(n)&&(a<8&&(s[a]=i(e.pow(n,.5))),l[a]=i(e.pow(n,1/3)),a++),n++})();var c=[],u=o.SHA256=r.extend({_doReset:function(){this._hash=new a.init(s.slice(0))},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],o=i[3],s=i[4],u=i[5],d=i[6],h=i[7],p=0;p<64;p++){if(p<16)c[p]=0|t[e+p];else{var v=c[p-15],f=(v<<25|v>>>7)^(v<<14|v>>>18)^v>>>3,g=c[p-2],m=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;c[p]=f+c[p-7]+m+c[p-16]}var y=s&u^~s&d,_=n&a^n&r^a&r,b=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),x=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),w=h+x+y+l[p]+c[p],S=b+_;h=d,d=u,u=s,s=o+w|0,o=r,r=a,a=n,n=w+S|0}i[0]=i[0]+n|0,i[1]=i[1]+a|0,i[2]=i[2]+r|0,i[3]=i[3]+o|0,i[4]=i[4]+s|0,i[5]=i[5]+u|0,i[6]=i[6]+d|0,i[7]=i[7]+h|0},_doFinalize:function(){var t=this._data,i=t.words,n=8*this._nDataBytes,a=8*t.sigBytes;return i[a>>>5]|=128<<24-a%32,i[14+(a+64>>>9<<4)]=e.floor(n/4294967296),i[15+(a+64>>>9<<4)]=n,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var t=r.clone.call(this);return t._hash=this._hash.clone(),t}});i.SHA256=r._createHelper(u),i.HmacSHA256=r._createHmacHelper(u)}(Math),t.SHA256})},45953:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.x64,s=o.Word,l=i.algo,c=[],u=[],d=[];(function(){for(var t=1,e=0,i=0;i<24;i++){c[t+5*e]=(i+1)*(i+2)/2%64;var n=e%5,a=(2*t+3*e)%5;t=n,e=a}for(t=0;t<5;t++)for(e=0;e<5;e++)u[t+5*e]=e+(2*t+3*e)%5*5;for(var r=1,o=0;o<24;o++){for(var l=0,h=0,p=0;p<7;p++){if(1&r){var v=(1<>>24)|4278255360&(r<<24|r>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8);var s=i[a];s.high^=o,s.low^=r}for(var l=0;l<24;l++){for(var p=0;p<5;p++){for(var v=0,f=0,g=0;g<5;g++){s=i[p+5*g];v^=s.high,f^=s.low}var m=h[p];m.high=v,m.low=f}for(p=0;p<5;p++){var y=h[(p+4)%5],_=h[(p+1)%5],b=_.high,x=_.low;for(v=y.high^(b<<1|x>>>31),f=y.low^(x<<1|b>>>31),g=0;g<5;g++){s=i[p+5*g];s.high^=v,s.low^=f}}for(var w=1;w<25;w++){s=i[w];var S=s.high,C=s.low,k=c[w];k<32?(v=S<>>32-k,f=C<>>32-k):(v=C<>>64-k,f=S<>>64-k);var I=h[u[w]];I.high=v,I.low=f}var E=h[0],A=i[0];E.high=A.high,E.low=A.low;for(p=0;p<5;p++)for(g=0;g<5;g++){w=p+5*g,s=i[w];var P=h[w],M=h[(p+1)%5+5*g],D=h[(p+2)%5+5*g];s.high=P.high^~M.high&D.high,s.low=P.low^~M.low&D.low}s=i[0];var T=d[l];s.high^=T.high,s.low^=T.low}},_doFinalize:function(){var t=this._data,i=t.words,n=(this._nDataBytes,8*t.sigBytes),r=32*this.blockSize;i[n>>>5]|=1<<24-n%32,i[(e.ceil((n+1)/r)*r>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var o=this._state,s=this.cfg.outputLength/8,l=s/8,c=[],u=0;u>>24)|4278255360&(h<<24|h>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),c.push(p),c.push(h)}return new a.init(c,s)},clone:function(){for(var t=r.clone.call(this),e=t._state=this._state.slice(0),i=0;i<25;i++)e[i]=e[i].clone();return t}});i.SHA3=r._createHelper(p),i.HmacSHA3=r._createHmacHelper(p)}(Math),t.SHA3})},89557:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240),i(81380))})(0,function(t){return function(){var e=t,i=e.x64,n=i.Word,a=i.WordArray,r=e.algo,o=r.SHA512,s=r.SHA384=o.extend({_doReset:function(){this._hash=new a.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var t=o._doFinalize.call(this);return t.sigBytes-=16,t}});e.SHA384=o._createHelper(s),e.HmacSHA384=o._createHmacHelper(s)}(),t.SHA384})},81380:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240))})(0,function(t){return function(){var e=t,i=e.lib,n=i.Hasher,a=e.x64,r=a.Word,o=a.WordArray,s=e.algo;function l(){return r.create.apply(r,arguments)}var c=[l(1116352408,3609767458),l(1899447441,602891725),l(3049323471,3964484399),l(3921009573,2173295548),l(961987163,4081628472),l(1508970993,3053834265),l(2453635748,2937671579),l(2870763221,3664609560),l(3624381080,2734883394),l(310598401,1164996542),l(607225278,1323610764),l(1426881987,3590304994),l(1925078388,4068182383),l(2162078206,991336113),l(2614888103,633803317),l(3248222580,3479774868),l(3835390401,2666613458),l(4022224774,944711139),l(264347078,2341262773),l(604807628,2007800933),l(770255983,1495990901),l(1249150122,1856431235),l(1555081692,3175218132),l(1996064986,2198950837),l(2554220882,3999719339),l(2821834349,766784016),l(2952996808,2566594879),l(3210313671,3203337956),l(3336571891,1034457026),l(3584528711,2466948901),l(113926993,3758326383),l(338241895,168717936),l(666307205,1188179964),l(773529912,1546045734),l(1294757372,1522805485),l(1396182291,2643833823),l(1695183700,2343527390),l(1986661051,1014477480),l(2177026350,1206759142),l(2456956037,344077627),l(2730485921,1290863460),l(2820302411,3158454273),l(3259730800,3505952657),l(3345764771,106217008),l(3516065817,3606008344),l(3600352804,1432725776),l(4094571909,1467031594),l(275423344,851169720),l(430227734,3100823752),l(506948616,1363258195),l(659060556,3750685593),l(883997877,3785050280),l(958139571,3318307427),l(1322822218,3812723403),l(1537002063,2003034995),l(1747873779,3602036899),l(1955562222,1575990012),l(2024104815,1125592928),l(2227730452,2716904306),l(2361852424,442776044),l(2428436474,593698344),l(2756734187,3733110249),l(3204031479,2999351573),l(3329325298,3815920427),l(3391569614,3928383900),l(3515267271,566280711),l(3940187606,3454069534),l(4118630271,4000239992),l(116418474,1914138554),l(174292421,2731055270),l(289380356,3203993006),l(460393269,320620315),l(685471733,587496836),l(852142971,1086792851),l(1017036298,365543100),l(1126000580,2618297676),l(1288033470,3409855158),l(1501505948,4234509866),l(1607167915,987167468),l(1816402316,1246189591)],u=[];(function(){for(var t=0;t<80;t++)u[t]=l()})();var d=s.SHA512=n.extend({_doReset:function(){this._hash=new o.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],o=i[3],s=i[4],l=i[5],d=i[6],h=i[7],p=n.high,v=n.low,f=a.high,g=a.low,m=r.high,y=r.low,_=o.high,b=o.low,x=s.high,w=s.low,S=l.high,C=l.low,k=d.high,I=d.low,E=h.high,A=h.low,P=p,M=v,D=f,T=g,B=m,F=y,R=_,L=b,N=x,O=w,z=S,V=C,W=k,H=I,$=E,K=A,Y=0;Y<80;Y++){var X,j,U=u[Y];if(Y<16)j=U.high=0|t[e+2*Y],X=U.low=0|t[e+2*Y+1];else{var G=u[Y-15],Z=G.high,q=G.low,J=(Z>>>1|q<<31)^(Z>>>8|q<<24)^Z>>>7,Q=(q>>>1|Z<<31)^(q>>>8|Z<<24)^(q>>>7|Z<<25),tt=u[Y-2],et=tt.high,it=tt.low,nt=(et>>>19|it<<13)^(et<<3|it>>>29)^et>>>6,at=(it>>>19|et<<13)^(it<<3|et>>>29)^(it>>>6|et<<26),rt=u[Y-7],ot=rt.high,st=rt.low,lt=u[Y-16],ct=lt.high,ut=lt.low;X=Q+st,j=J+ot+(X>>>0>>0?1:0),X+=at,j=j+nt+(X>>>0>>0?1:0),X+=ut,j=j+ct+(X>>>0>>0?1:0),U.high=j,U.low=X}var dt=N&z^~N&W,ht=O&V^~O&H,pt=P&D^P&B^D&B,vt=M&T^M&F^T&F,ft=(P>>>28|M<<4)^(P<<30|M>>>2)^(P<<25|M>>>7),gt=(M>>>28|P<<4)^(M<<30|P>>>2)^(M<<25|P>>>7),mt=(N>>>14|O<<18)^(N>>>18|O<<14)^(N<<23|O>>>9),yt=(O>>>14|N<<18)^(O>>>18|N<<14)^(O<<23|N>>>9),_t=c[Y],bt=_t.high,xt=_t.low,wt=K+yt,St=$+mt+(wt>>>0>>0?1:0),Ct=(wt=wt+ht,St=St+dt+(wt>>>0>>0?1:0),wt=wt+xt,St=St+bt+(wt>>>0>>0?1:0),wt=wt+X,St=St+j+(wt>>>0>>0?1:0),gt+vt),kt=ft+pt+(Ct>>>0>>0?1:0);$=W,K=H,W=z,H=V,z=N,V=O,O=L+wt|0,N=R+St+(O>>>0>>0?1:0)|0,R=B,L=F,B=D,F=T,D=P,T=M,M=wt+Ct|0,P=St+kt+(M>>>0>>0?1:0)|0}v=n.low=v+M,n.high=p+P+(v>>>0>>0?1:0),g=a.low=g+T,a.high=f+D+(g>>>0>>0?1:0),y=r.low=y+F,r.high=m+B+(y>>>0>>0?1:0),b=o.low=b+L,o.high=_+R+(b>>>0>>0?1:0),w=s.low=w+O,s.high=x+N+(w>>>0>>0?1:0),C=l.low=C+V,l.high=S+z+(C>>>0>>0?1:0),I=d.low=I+H,d.high=k+W+(I>>>0>>0?1:0),A=h.low=A+K,h.high=E+$+(A>>>0>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[30+(n+128>>>10<<5)]=Math.floor(i/4294967296),e[31+(n+128>>>10<<5)]=i,t.sigBytes=4*e.length,this._process();var a=this._hash.toX32();return a},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});e.SHA512=n._createHelper(d),e.HmacSHA512=n._createHmacHelper(d)}(),t.SHA512})},7628:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=i.BlockCipher,r=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],c=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],d=r.DES=a.extend({_doReset:function(){for(var t=this._key,e=t.words,i=[],n=0;n<56;n++){var a=o[n]-1;i[n]=e[a>>>5]>>>31-a%32&1}for(var r=this._subKeys=[],c=0;c<16;c++){var u=r[c]=[],d=l[c];for(n=0;n<24;n++)u[n/6|0]|=i[(s[n]-1+d)%28]<<31-n%6,u[4+(n/6|0)]|=i[28+(s[n+24]-1+d)%28]<<31-n%6;u[0]=u[0]<<1|u[0]>>>31;for(n=1;n<7;n++)u[n]=u[n]>>>4*(n-1)+3;u[7]=u[7]<<5|u[7]>>>27}var h=this._invSubKeys=[];for(n=0;n<16;n++)h[n]=r[15-n]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,i){this._lBlock=t[e],this._rBlock=t[e+1],h.call(this,4,252645135),h.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),h.call(this,1,1431655765);for(var n=0;n<16;n++){for(var a=i[n],r=this._lBlock,o=this._rBlock,s=0,l=0;l<8;l++)s|=c[l][((o^a[l])&u[l])>>>0];this._lBlock=o,this._rBlock=r^s}var d=this._lBlock;this._lBlock=this._rBlock,this._rBlock=d,h.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(t,e){var i=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=i,this._lBlock^=i<>>t^this._lBlock)&e;this._lBlock^=i,this._rBlock^=i<192.");var i=e.slice(0,2),a=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=d.createEncryptor(n.create(i)),this._des2=d.createEncryptor(n.create(a)),this._des3=d.createEncryptor(n.create(r))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=a._createHelper(v)}(),t.TripleDES})},43240:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.Base,r=n.WordArray,o=i.x64={};o.Word=a.extend({init:function(t,e){this.high=t,this.low=e}}),o.WordArray=a.extend({init:function(t,i){t=this.words=t||[],this.sigBytes=i!=e?i:8*t.length},toX32:function(){for(var t=this.words,e=t.length,i=[],n=0;n=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}}throw new TypeError((0,n.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/631-legacy.5f83b8fd.js b/frontend/dist/js/631-legacy.5f83b8fd.js deleted file mode 100644 index 96f6b49..0000000 --- a/frontend/dist/js/631-legacy.5f83b8fd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[631],{82631:function(t,a,s){s.r(a),s.d(a,{default:function(){return N}});s(28706),s(74423),s(34782),s(62010),s(9868),s(21699);var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-analysis-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded},style:{"--primary-color":t.primaryColor}},[a("div",{staticClass:"main-content-full"},[a("div",{staticClass:"top-index-bar"},[t.loadingSentiment?[t._m(0),t._m(1),t._m(2)]:[a("div",{staticClass:"indicator-box fear-greed",class:t.getFearGreedClass(t.marketData.fearGreed)},[a("span",{staticClass:"ind-label"},[t._v(t._s(t.$t("globalMarket.fearGreedShort")))]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.fearGreed||"--"))])]),a("div",{staticClass:"indicator-box vix",class:t.getVixLevel(t.marketData.vix)},[a("span",{staticClass:"ind-label"},[t._v("VIX")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.vix||"--"))])]),a("div",{staticClass:"indicator-box dxy"},[a("span",{staticClass:"ind-label"},[t._v("DXY")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.dxy||"--"))])])],a("div",{staticClass:"indices-marquee"},[t.loadingIndices?[a("div",{staticClass:"indices-loading"},[a("a-icon",{attrs:{type:"loading"}}),t._v(" "+t._s(t.$t("common.loading")||"加载中...")+" ")],1)]:t.marketData.indices.length>0?[a("div",{staticClass:"marquee-track"},[t._l(t.marketData.indices,function(s){return a("div",{key:"a-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])}),t._l(t.marketData.indices,function(s){return a("div",{key:"b-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])})],2)]:[a("div",{staticClass:"indices-empty"},[t._v("--")])]],2),a("a-button",{staticClass:"refresh-btn",attrs:{type:"link",size:"small",loading:t.loadingMarket},on:{click:t.loadMarketData}},[a("a-icon",{attrs:{type:"sync",spin:t.loadingMarket}})],1)],2),a("div",{staticClass:"main-body"},[a("div",{staticClass:"left-panel"},[a("div",{staticClass:"heatmap-box"},[a("div",{staticClass:"box-header"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.heatmapType,callback:function(a){t.heatmapType=a},expression:"heatmapType"}},[a("a-radio-button",{attrs:{value:"crypto"}},[t._v(t._s(t.$t("globalMarket.cryptoHeatmap")))]),a("a-radio-button",{attrs:{value:"commodities"}},[t._v(t._s(t.$t("globalMarket.commoditiesHeatmap")))]),a("a-radio-button",{attrs:{value:"sectors"}},[t._v(t._s(t.$t("globalMarket.sectorHeatmap")))]),a("a-radio-button",{attrs:{value:"forex"}},[t._v(t._s(t.$t("globalMarket.forexHeatmap")))])],1)],1),a("div",{staticClass:"heatmap-grid"},[t.loadingHeatmap?t._l(12,function(t){return a("div",{key:"skel-"+t,staticClass:"heat-cell skeleton-cell"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.currentHeatmap.length>0?t._l(t.currentHeatmap.slice(0,12),function(s,e){return a("div",{key:e,staticClass:"heat-cell",style:t.getHeatmapStyle(s.value)},[a("span",{staticClass:"heat-name"},[t._v(t._s(t.getHeatmapName(s)))]),s.price?a("span",{staticClass:"heat-price"},[t._v(t._s(t.formatHeatmapPrice(s.price)))]):t._e(),a("span",{staticClass:"heat-val"},[t._v(t._s(s.value>=0?"+":"")+t._s(t.formatNum(s.value))+"%")])])}):[a("div",{staticClass:"heatmap-empty"},[t._v(t._s(t.$t("common.noData")||"暂无数据"))])]],2)]),a("div",{staticClass:"calendar-box"},[a("div",{staticClass:"box-header"},[a("span",{staticClass:"box-title"},[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t.$t("globalMarket.calendar")))],1)]),a("div",{staticClass:"calendar-list"},[t.loadingCalendar?t._l(5,function(t){return a("div",{key:"cal-skel-"+t,staticClass:"cal-item skeleton-item"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.marketData.calendar.length>0?t._l(t.marketData.calendar.slice(0,10),function(s){return a("div",{key:s.id,staticClass:"cal-item",class:s.importance},[a("span",{staticClass:"cal-date"},[t._v(t._s(t.formatCalendarDate(s.date)))]),a("span",{staticClass:"cal-time"},[t._v(t._s(s.time||"--:--"))]),a("span",{staticClass:"cal-flag"},[t._v(t._s(t.getCountryFlag(s.country)))]),a("span",{staticClass:"cal-name"},[t._v(t._s(t.isZhLocale?s.name:s.name_en))]),a("span",{staticClass:"cal-impact",class:t.getImpactClass(s)},["bullish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-up"}}):"bearish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-down"}}):a("a-icon",{attrs:{type:"minus"}}),t._v(" "+t._s(s.actual||s.forecast||"--")+" ")],1)])}):[a("div",{staticClass:"cal-empty"},[t._v(t._s(t.$t("globalMarket.noEvents")))])]],2)])]),a("div",{staticClass:"right-panel"},[a("div",{staticClass:"analysis-toolbar"},[a("a-select",{staticClass:"symbol-selector",attrs:{placeholder:t.$t("dashboard.analysis.empty.selectSymbol"),size:"large","show-search":"","allow-clear":"","filter-option":t.filterSymbolOption},on:{change:t.handleSymbolChange},model:{value:t.selectedSymbol,callback:function(a){t.selectedSymbol=a},expression:"selectedSymbol"}},[t._l(t.watchlist||[],function(s){return a("a-select-option",{key:"".concat(s.market,"-").concat(s.symbol),attrs:{value:"".concat(s.market,":").concat(s.symbol)}},[a("span",{staticClass:"symbol-option"},[a("a-tag",{attrs:{color:t.getMarketColor(s.market),size:"small"}},[t._v(t._s(t.getMarketName(s.market)))]),a("strong",{staticStyle:{"margin-left":"6px"}},[t._v(t._s(s.symbol))]),s.name?a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]):t._e()],1)])}),a("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[a("div",{staticStyle:{"text-align":"center",padding:"4px 0",color:"#1890ff"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),t._v(t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")],1)])],2),a("a-button",{staticClass:"analyze-button",attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.selectedSymbol||t.analyzing},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")]),a("a-button",{staticClass:"history-button",attrs:{size:"large",icon:"history"},on:{click:function(a){t.showHistoryModal=!0,t.loadHistoryList()}}},[t._v(" "+t._s(t.$t("fastAnalysis.history"))+" ")])],1),a("div",{staticClass:"analysis-main"},[t.analysisResult||t.analyzing||t.analysisError?t._e():a("div",{staticClass:"analysis-placeholder"},[a("div",{staticClass:"placeholder-hero"},[t._m(3),a("div",{staticClass:"hero-body"},[a("div",{staticClass:"hero-badge"},[t._v("AI-POWERED")]),a("h2",{staticClass:"hero-title"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.title")))]),a("p",{staticClass:"hero-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.subtitle")))]),a("div",{staticClass:"hero-stats"},[a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"line-chart"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"dashboard"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"apartment"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3Desc")))])])])]),a("div",{staticClass:"hero-cta"},[a("a-button",{attrs:{type:"primary",size:"large",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")]),a("a-button",{attrs:{size:"large",icon:"thunderbolt",disabled:!t.selectedSymbol},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")])],1),a("p",{staticClass:"hero-hint"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.quickStart")))])])])]),t.analysisResult||t.analyzing||t.analysisError?a("FastAnalysisReport",{attrs:{result:t.analysisResult,loading:t.analyzing,error:t.analysisError,"error-tone":t.analysisErrorTone},on:{retry:t.startFastAnalysis}}):t._e()],1)]),a("div",{staticClass:"watchlist-panel"},[a("div",{staticClass:"panel-header"},[a("span",{staticClass:"panel-title"},[a("a-icon",{attrs:{type:"star",theme:"filled"}}),t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.title")))],1),a("span",{staticClass:"panel-header-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage")}},[a("a-badge",{attrs:{count:t.monitors.length,offset:[-2,2],"number-style":{fontSize:"9px",minWidth:"14px",height:"14px",lineHeight:"14px",padding:"0 3px"}}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"unordered-list"},on:{click:function(a){t.showTaskDrawer=!0}}})],1)],1),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.batch.schedule")}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"schedule"},on:{click:t.toggleBatchMode}})],1),a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"plus"},on:{click:function(a){t.showAddStockModal=!0}}})],1)]),t.watchlist&&t.watchlist.length>0?a("div",{staticClass:"panel-summary"},[a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlist.length))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.totalAssets")))])]),t.watchlistPositionCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistPositionCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.positionCount")))])]):t._e(),t.watchlistTaskCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistTaskCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.taskCount")))])]):t._e(),0!==t.watchlistTotalPnl?a("div",{staticClass:"summary-chip pnl"},[a("span",{staticClass:"sc-num",class:t.watchlistTotalPnl>=0?"up":"down"},[t._v(t._s(t.watchlistTotalPnl>=0?"+":"")+t._s(t.formatNum(t.watchlistTotalPnl)))]),a("span",{staticClass:"sc-label"},[t._v("P&L")])]):t._e()]):t._e(),t.batchMode?a("div",{staticClass:"batch-bar"},[a("a-checkbox",{staticClass:"batch-all-cb",attrs:{checked:t.batchSelectedAll,indeterminate:t.batchIndeterminate},on:{change:t.onBatchSelectAll}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.selectAll"))+" ")]),a("a-button",{attrs:{type:"primary",size:"small",disabled:0===t.batchSelectedKeys.length},on:{click:t.openBatchScheduleModal}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.schedule"))),t.batchSelectedKeys.length>0?[t._v(" "+t._s(t.batchSelectedKeys.length))]:t._e()],2),a("a-button",{attrs:{size:"small"},on:{click:t.toggleBatchMode}},[t._v(t._s(t.$t("common.cancel")))])],1):t._e(),a("div",{staticClass:"watchlist-list"},[t._l(t.watchlist||[],function(s){var e,i,n;return a("div",{key:"wl-".concat(s.market,"-").concat(s.symbol),staticClass:"wl-card",class:{active:t.selectedSymbol==="".concat(s.market,":").concat(s.symbol)},on:{click:function(a){return t.selectWatchlistItem(s)}}},[t.batchMode?a("a-checkbox",{staticClass:"wl-card-cb",attrs:{checked:t.batchSelectedKeys.includes("".concat(s.market,":").concat(s.symbol))},on:{change:function(a){return t.onBatchItemToggle(s,a)}},nativeOn:{click:function(t){t.stopPropagation()}}}):t._e(),a("div",{staticClass:"wl-card-body",class:{"with-cb":t.batchMode}},[a("div",{staticClass:"wl-row-main"},[a("span",{staticClass:"wl-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"wl-market"},[t._v(t._s(t.getMarketName(s.market)))]),a("span",{staticClass:"wl-spacer"}),t.watchlistPrices["".concat(s.market,":").concat(s.symbol)]?[a("span",{staticClass:"wl-price"},[t._v(t._s(t.formatPrice(t.watchlistPrices["".concat(s.market,":").concat(s.symbol)].price)))]),a("span",{staticClass:"wl-change",class:((null===(e=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===e?void 0:e.change)||0)>=0?"up":"down"},[t._v(" "+t._s(((null===(i=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===i?void 0:i.change)||0)>=0?"+":"")+t._s(t.formatNum(null===(n=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===n?void 0:n.change))+"% ")])]:t._e()],2),t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)]?a("div",{staticClass:"wl-row-pnl"},[a("span",{staticClass:"wl-pnl-qty"},[t._v(t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].quantity,4))+" @ "+t._s(t.formatPrice(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].avgEntry||0)))]),a("span",{staticClass:"wl-pnl-val",class:t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"up":"down"},[t._v(" "+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl||0))+" ("+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent||0))+"%) ")])]):t._e(),t.getMonitorMeta(s)?a("div",{staticClass:"wl-row-task"},[a("span",{staticClass:"wl-task-badge",class:t.getMonitorMeta(s).activeCount>0?"active":"paused",on:{click:function(a){return a.stopPropagation(),t.toggleStockMonitor(s)}}},[a("a-icon",{attrs:{type:t.getMonitorMeta(s).activeCount>0?"sync":"pause-circle",spin:t.getMonitorMeta(s).activeCount>0}}),t._v(" "+t._s(t.getMonitorMeta(s).activeCount>0?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")],1),t.getMonitorMeta(s).nextRunAtText?a("span",{staticClass:"wl-task-next"},[t._v(t._s(t.getMonitorMeta(s).nextRunAtText))]):t._e()]):t._e()]),a("div",{staticClass:"wl-card-hover-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.position.quickAdd")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openPositionModal(s)}}},[a("a-icon",{attrs:{type:"wallet"}})],1)]),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.monitor.quickTask")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openMonitorModal(s)}}},[a("a-icon",{attrs:{type:"clock-circle"}})],1)]),a("span",{staticClass:"wl-hover-btn danger",on:{click:function(a){return a.stopPropagation(),t.removeFromWatchlist(s)}}},[a("a-icon",{attrs:{type:"delete"}})],1)],1)],1)}),t.watchlist&&0!==t.watchlist.length?t._e():a("div",{staticClass:"watchlist-empty"},[a("div",{staticClass:"we-icon"},[a("a-icon",{attrs:{type:"star"}})],1),a("p",[t._v(t._s(t.$t("dashboard.analysis.empty.noWatchlist")))]),a("a-button",{attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")])],1)],2)])])]),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",wrapClassName:t.isDarkTheme?"qd-dark-modal":"",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[a("div",{staticClass:"add-stock-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(a){t.selectedMarketTab=a},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(s){return a("a-tab-pane",{key:s.value,attrs:{tab:t.$t(s.i18nKey||"dashboard.analysis.market.".concat(s.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(a){t.symbolSearchKeyword=a},expression:"symbolSearchKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):a("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?a("div",{staticClass:"selected-symbol-section"},[a("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(a){t.selectedSymbolForAdd=null}}},[a("template",{slot:"description"},[a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),a("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?a("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):t._e()],1)])],2)],1):t._e()],1)]),a("a-modal",{attrs:{visible:t.showPositionModal,title:"".concat(t.$i18n&&"zh-CN"===t.$i18n.locale?"创建持仓(虚拟仓)":"Create Position (Virtual)"," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.savePosition,cancel:function(a){t.showPositionModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("portfolio.positions.side")||"Direction"}},[a("a-select",{model:{value:t.positionForm.side,callback:function(a){t.$set(t.positionForm,"side",a)},expression:"positionForm.side"}},[a("a-select-option",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")||"Long"))]),a("a-select-option",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")||"Short"))])],1)],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"数量":"Quantity"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.quantity,callback:function(a){t.$set(t.positionForm,"quantity",a)},expression:"positionForm.quantity"}})],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"买入单价":"Entry Price"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.entryPrice,callback:function(a){t.$set(t.positionForm,"entryPrice",a)},expression:"positionForm.entryPrice"}})],1)],1)],1),a("a-modal",{attrs:{visible:t.showMonitorModal,title:"".concat(t.$t("aiAssetAnalysis.monitor.quickTask")," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveMonitorTask,cancel:function(a){t.showMonitorModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.monitorForm.interval_min,callback:function(a){t.$set(t.monitorForm,"interval_min",a)},expression:"monitorForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.monitorForm.notify_channels,callback:function(a){t.$set(t.monitorForm,"notify_channels",a)},expression:"monitorForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1),a("a-alert",{attrs:{message:t.$t("aiAssetAnalysis.monitor.tip"),type:"info","show-icon":""}})],1)],1),a("a-modal",{attrs:{visible:t.showBatchScheduleModal,title:t.$t("aiAssetAnalysis.batch.scheduleTitle"),confirmLoading:t.batchRunning,width:"520px",wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveBatchSchedule,cancel:function(a){t.showBatchScheduleModal=!1}}},[a("div",{staticClass:"batch-modal-summary"},[a("p",[t._v(t._s(t.$t("aiAssetAnalysis.batch.scheduleDesc",{count:t.batchSelectedKeys.length})))]),a("div",{staticClass:"batch-symbols-preview"},t._l(t.batchSelectedKeys,function(s){return a("a-tag",{key:s,staticStyle:{"margin-bottom":"4px"},attrs:{color:"blue"}},[t._v(t._s(s.split(":")[1]))])}),1)]),a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.interval_min,callback:function(a){t.$set(t.batchScheduleForm,"interval_min",a)},expression:"batchScheduleForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.notify_channels,callback:function(a){t.$set(t.batchScheduleForm,"notify_channels",a)},expression:"batchScheduleForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1),a("a-alert",{staticStyle:{"margin-top":"8px"},attrs:{message:t.$t("aiAssetAnalysis.batch.scheduleTip"),type:"info","show-icon":""}})],1),a("a-drawer",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage"),visible:t.showTaskDrawer,width:"420",placement:"right",wrapClassName:t.isDarkTheme?"qd-dark-drawer":""},on:{close:function(a){t.showTaskDrawer=!1}}},[0===t.monitors.length?a("div",{staticClass:"task-drawer-empty"},[a("a-icon",{staticStyle:{"font-size":"40px",color:"#ccc"},attrs:{type:"inbox"}}),a("p",[t._v(t._s(t.$t("aiAssetAnalysis.tasks.empty")))])],1):a("div",{staticClass:"task-drawer-list"},t._l(t.monitors,function(s){return a("div",{key:s.id,staticClass:"task-item"},[a("div",{staticClass:"task-item-header"},[a("span",{staticClass:"task-item-name"},[t._v(t._s(s.name||"AI Task"))]),a("a-tag",{attrs:{color:s.is_active?"green":"default",size:"small"}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")])],1),a("div",{staticClass:"task-item-meta"},[s.config&&s.config.run_interval_minutes?a("span",[a("a-icon",{attrs:{type:"clock-circle"}}),t._v(" "+t._s(t.formatIntervalText(s.config.run_interval_minutes))+" ")],1):t._e(),s.next_run_at?a("span",[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t._formatNextRunText(s.next_run_at))+" ")],1):t._e()]),a("div",{staticClass:"task-item-actions"},[a("a-button",{attrs:{size:"small",type:s.is_active?"default":"primary",icon:"poweroff"},on:{click:function(a){return t.handleToggleTask(s)}}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.tasks.pause"):t.$t("aiAssetAnalysis.tasks.resume"))+" ")]),a("a-button",{attrs:{size:"small",icon:"edit"},on:{click:function(a){return t.handleEditTask(s)}}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.edit")))]),a("a-popconfirm",{attrs:{title:t.$t("aiAssetAnalysis.tasks.deleteConfirm"),okText:t.$t("common.confirm"),cancelText:t.$t("common.cancel")},on:{confirm:function(a){return t.handleDeleteTask(s)}}},[a("a-button",{attrs:{size:"small",type:"danger",icon:"delete"}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.delete")))])],1)],1)])}),0)]),a("a-modal",{attrs:{visible:t.showEditTaskModal,title:t.$t("aiAssetAnalysis.tasks.edit"),confirmLoading:t.editTaskLoading,wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveEditTask,cancel:function(a){t.showEditTaskModal=!1}}},[t.editTaskForm?a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.tasks.name")}},[a("a-input",{model:{value:t.editTaskForm.name,callback:function(a){t.$set(t.editTaskForm,"name",a)},expression:"editTaskForm.name"}})],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.interval_min,callback:function(a){t.$set(t.editTaskForm,"interval_min",a)},expression:"editTaskForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.notify_channels,callback:function(a){t.$set(t.editTaskForm,"notify_channels",a)},expression:"editTaskForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1):t._e()],1),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.history.title"),visible:t.showHistoryModal,footer:null,width:"800px",bodyStyle:{maxHeight:"60vh",overflowY:"auto"},wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{cancel:function(a){t.showHistoryModal=!1}}},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-list",{attrs:{"data-source":t.historyList,pagination:{current:t.historyPage,pageSize:t.historyPageSize,total:t.historyTotal,onChange:function(a){t.historyPage=a,t.loadHistoryList()},showSizeChanger:!0,pageSizeOptions:["10","20","50"],onShowSizeChange:function(a,s){t.historyPageSize=s,t.historyPage=1,t.loadHistoryList()}}},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticStyle:{display:"flex","align-items":"center","justify-content":"space-between"}},[a("div",[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(s.market)}},[t._v(" "+t._s(t.getMarketName(s.market))+" ")]),a("strong",[t._v(t._s(s.symbol))]),a("a-tag",{staticStyle:{"margin-left":"12px"},attrs:{color:"BUY"===s.decision?"green":"SELL"===s.decision?"red":"blue"}},[t._v(" "+t._s(s.decision)+" ")]),a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{color:t.getStatusColor(s.status||"completed")}},[t._v(" "+t._s(t.getStatusText(s.status||"completed"))+" ")]),a("span",{staticStyle:{color:"#999","margin-left":"8px","font-size":"12px"}},[t._v(" "+t._s(t.$t("fastAnalysis.confidence"))+": "+t._s(s.confidence)+"% ")])],1),a("div",[a("a-button",{attrs:{type:"link",size:"small",icon:"eye",disabled:"processing"===(s.status||"").toLowerCase()},on:{click:function(a){return t.viewHistoryResult(s)}}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.viewResult"))+" ")]),a("a-popconfirm",{attrs:{title:t.$t("dashboard.analysis.modal.history.deleteConfirm"),"ok-text":t.$t("common.confirm"),"cancel-text":t.$t("common.cancel")},on:{confirm:function(a){return t.deleteHistoryItem(s)}}},[a("a-button",{staticStyle:{color:"#ff4d4f"},attrs:{type:"link",size:"small",icon:"delete"}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.delete"))+" ")])],1)],1)])]),a("template",{slot:"description"},[a("div",{staticStyle:{color:"#666","font-size":"12px"}},[s.price?a("span",[t._v("$"+t._s(t.formatNumber(s.price)))]):t._e(),s.summary?a("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(s.summary.substring(0,80))+t._s(s.summary.length>80?"...":""))]):t._e()]),s.created_at?a("div",{staticStyle:{color:"#999","font-size":"12px","margin-top":"4px"}},[t._v(" "+t._s(t.formatIsoTime(s.created_at))+" ")]):t._e()])],2)],1)}}])}),t.historyLoading||0!==t.historyList.length?t._e():a("a-empty",{attrs:{description:t.$t("dashboard.analysis.empty.noHistory")}})],1)],1)],1)},i=[function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"hero-bg"},[a("div",{staticClass:"hero-bg-circle c1"}),a("div",{staticClass:"hero-bg-circle c2"}),a("div",{staticClass:"hero-bg-grid"})])}],n=s(44735),r=s(21560),o=s(57532),l=s(2403),c=s(15863),d=s(81127),u=s(56252),m=s(76338),h=(s(2008),s(50113),s(62062),s(2892),s(32637),s(40150),s(79432),s(26099),s(16034),s(27495),s(31415),s(99449),s(47764),s(25440),s(42762),s(23500),s(62953),s(95353)),p=s(505),v=s(35038),y=s(24364),f=s(75769),b="/api/fast-analysis";function g(t){return(0,f.Ay)({url:"".concat(b,"/analyze"),method:"post",data:t,timeout:3e5})}function _(t){return(0,f.Ay)({url:"".concat(b,"/history/all"),method:"get",params:t})}function k(t){return(0,f.Ay)({url:"".concat(b,"/history/").concat(t),method:"delete"})}function C(t){return(0,f.Ay)({url:"".concat(b,"/feedback"),method:"post",data:t})}var A=s(44146),S=function(){var t,a,s,e,i,n,r,o,l,c,d,u,m,h,p,v,y,f,b,g,_,k,C=this,A=C._self._c;return A("div",{staticClass:"fast-analysis-report",class:{"theme-dark":C.isDarkTheme}},[C.loading?A("div",{staticClass:"loading-container"},[A("div",{staticClass:"loading-content-pro"},[A("div",{staticClass:"loading-header"},[A("a-icon",{staticClass:"loading-icon-pro",attrs:{type:"thunderbolt"}}),A("span",{staticClass:"loading-title"},[C._v(C._s(C.$t("fastAnalysis.analyzing")))])],1),A("div",{staticClass:"progress-wrapper"},[A("a-progress",{attrs:{percent:C.progressPercent,showInfo:!1,strokeColor:"#1890ff",strokeWidth:8}}),A("span",{staticClass:"progress-text"},[C._v(C._s(C.formatProgress(C.progressPercent))+"%")])],1),A("div",{staticClass:"current-step"},[A("a-icon",{attrs:{type:"loading",spin:""}}),A("span",[C._v(C._s(C.currentStepText))])],1),A("div",{staticClass:"steps-list"},[A("div",{staticClass:"step-item",class:{done:C.step>1,active:1===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step1")||"获取实时数据"))]),C.step>1?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>2,active:2===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step2")||"计算技术指标"))]),C.step>2?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>3,active:3===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step3")||"AI深度分析"))]),C.step>3?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>4,active:4===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step4")||"生成报告"))]),C.step>4?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1)]),A("div",{staticClass:"loading-footer"},[A("span",{staticClass:"elapsed-time"},[C._v(C._s(C.elapsedTimeText))])])])]):C.error?A("div",{staticClass:"error-container"},[A("a-result",{attrs:{status:"warning"===C.errorTone?"warning":"error",title:C.errorTitle,"sub-title":C.error},scopedSlots:C._u([{key:"extra",fn:function(){return[A("a-button",{attrs:{type:"primary"},on:{click:function(t){return C.$emit("retry")}}},[C._v(" "+C._s(C.$t("fastAnalysis.retry"))+" ")])]},proxy:!0}])})],1):C.result?A("div",{staticClass:"result-container"},[A("div",{staticClass:"decision-card",class:C.decisionClass},[A("div",{staticClass:"decision-main"},[A("div",{staticClass:"decision-badge"},[A("a-icon",{attrs:{type:C.decisionIcon}}),A("span",{staticClass:"decision-text"},[C._v(C._s(C.result.decision))])],1),A("div",{staticClass:"confidence-ring"},[A("a-progress",{attrs:{type:"circle",percent:C.result.confidence,width:80,strokeColor:C.confidenceColor},scopedSlots:C._u([{key:"format",fn:function(t){return[A("span",{staticClass:"confidence-value"},[C._v(C._s(t)+"%")])]}}])}),A("div",{staticClass:"confidence-label"},[C._v(C._s(C.$t("fastAnalysis.confidence")))])],1)]),A("div",{staticClass:"decision-summary"},[C._v(" "+C._s(C.result.summary)+" ")]),C.consensusBlock?A("div",{staticClass:"consensus-strip"},[A("div",{staticClass:"consensus-strip-title"},[A("a-icon",{attrs:{type:"cluster"}}),C._v(" "+C._s(C.$t("fastAnalysis.consensusTitle"))+" ")],1),A("div",{staticClass:"consensus-strip-metrics"},[A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusDecision")))]),C._v(" "+C._s(C.consensusBlock.consensus_decision)+" ")]),A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusScore")))]),C._v(" "+C._s(C.formatConsensusNum(C.consensusBlock.consensus_score))+" ")]),null!=C.consensusBlock.agreement_ratio?A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusAgreement")))]),C._v(" "+C._s(C.formatAgreementPct(C.consensusBlock.agreement_ratio))+" ")]):C._e()])]):C._e()]),A("div",{staticClass:"price-info-row",class:{"hold-mode":C.isHoldDecision}},[A("div",{staticClass:"price-card current"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.currentPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(null===(t=C.result.market_data)||void 0===t?void 0:t.current_price)))]),A("div",{staticClass:"price-change",class:(null===(a=C.result.market_data)||void 0===a?void 0:a.change_24h)>=0?"positive":"negative"},[C._v(" "+C._s((null===(s=C.result.market_data)||void 0===s?void 0:s.change_24h)>=0?"+":"")+C._s(C.formatNumber(null===(e=C.result.market_data)||void 0===e?void 0:e.change_24h,2))+"% ")])]),C.isHoldDecision?C._e():[A("div",{staticClass:"price-card entry"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.entryPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.entry_price)))])]),A("div",{staticClass:"price-card stop"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.stopLoss")))]),A("div",{staticClass:"price-value negative"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.stop_loss)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.stopLossHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)]),A("div",{staticClass:"price-card target"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.takeProfit")))]),A("div",{staticClass:"price-value positive"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.take_profit)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.takeProfitHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)])]],2),C.trendOutlookBlocks.length||C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-card"},[A("div",{staticClass:"trend-outlook-header"},[A("a-icon",{attrs:{type:"calendar"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.trendOutlookTitle")))])],1),C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-summary"},[C._v(" "+C._s(C.trendOutlookSummaryText)+" ")]):C._e(),C.trendOutlookBlocks.length?A("div",{staticClass:"trend-outlook-grid"},C._l(C.trendOutlookBlocks,function(t){return A("div",{key:t.key,staticClass:"trend-outlook-item"},[A("div",{staticClass:"to-label"},[C._v(C._s(t.label))]),A("div",{staticClass:"to-trend",class:C.outlookTrendClass(t.trend)},[C._v(" "+C._s(C.formatOutlookTrend(t.trend))+" ")]),A("div",{staticClass:"to-meta"},[A("span",{staticClass:"to-score"},[C._v(C._s(null!=t.score?t.score:"--"))]),A("span",{staticClass:"to-str"},[C._v(C._s(t.strength||"--"))])])])}),0):C._e()]):C._e(),A("div",{staticClass:"scores-row"},[A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technical")))])],1),A("a-progress",{attrs:{percent:(null===(i=C.result.scores)||void 0===i?void 0:i.technical)||50,strokeColor:C.getScoreColor(null===(n=C.result.scores)||void 0===n?void 0:n.technical),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(r=C.result.scores)||void 0===r?void 0:r.technical)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamental")))])],1),A("a-progress",{attrs:{percent:(null===(o=C.result.scores)||void 0===o?void 0:o.fundamental)||50,strokeColor:C.getScoreColor(null===(l=C.result.scores)||void 0===l?void 0:l.fundamental),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(c=C.result.scores)||void 0===c?void 0:c.fundamental)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentiment")))])],1),A("a-progress",{attrs:{percent:(null===(d=C.result.scores)||void 0===d?void 0:d.sentiment)||50,strokeColor:C.getScoreColor(null===(u=C.result.scores)||void 0===u?void 0:u.sentiment),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(m=C.result.scores)||void 0===m?void 0:m.sentiment)||50))])],1),A("div",{staticClass:"score-item overall"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"dashboard"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.overall")))])],1),A("a-progress",{attrs:{percent:(null===(h=C.result.scores)||void 0===h?void 0:h.overall)||50,strokeColor:C.getScoreColor(null===(p=C.result.scores)||void 0===p?void 0:p.overall),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(v=C.result.scores)||void 0===v?void 0:v.overall)||50))])],1)]),C.result.detailed_analysis?A("div",{staticClass:"detailed-analysis"},[C.result.detailed_analysis.technical?A("div",{staticClass:"analysis-card technical"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technicalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(y=C.result.scores)||void 0===y?void 0:y.technical)}},[C._v(" "+C._s((null===(f=C.result.scores)||void 0===f?void 0:f.technical)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.technical)+" ")])]):C._e(),C.result.detailed_analysis.fundamental?A("div",{staticClass:"analysis-card fundamental"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamentalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(b=C.result.scores)||void 0===b?void 0:b.fundamental)}},[C._v(" "+C._s((null===(g=C.result.scores)||void 0===g?void 0:g.fundamental)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.fundamental)+" ")])]):C._e(),C.result.detailed_analysis.sentiment?A("div",{staticClass:"analysis-card sentiment"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentimentAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(_=C.result.scores)||void 0===_?void 0:_.sentiment)}},[C._v(" "+C._s((null===(k=C.result.scores)||void 0===k?void 0:k.sentiment)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.sentiment)+" ")])]):C._e()]):C._e(),A("div",{staticClass:"analysis-details"},[A("div",{staticClass:"detail-section reasons"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"bulb",theme:"twoTone",twoToneColor:"#52c41a"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.keyReasons")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.reasons,function(t,a){return A("li",{key:"r-"+a},[C._v(" "+C._s(t)+" ")])}),0)]),A("div",{staticClass:"detail-section risks"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"warning",theme:"twoTone",twoToneColor:"#faad14"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.risks")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.risks,function(t,a){return A("li",{key:"k-"+a},[C._v(" "+C._s(t)+" ")])}),0)])]),C.result.indicators&&Object.keys(C.result.indicators).length>0?A("div",{staticClass:"indicators-section"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"stock"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicators")))]),A("a-tag",{staticClass:"indicators-pro-badge",attrs:{color:"blue"}},[C._v(C._s(C.$t("fastAnalysis.indicatorsProBadge")))])],1),A("div",{staticClass:"indicators-methodology"},[A("a-icon",{attrs:{type:"experiment"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicatorsProSubtitle")))])],1),A("div",{staticClass:"indicators-grid"},[C.result.indicators.rsi?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("RSI (14)")]),A("div",{staticClass:"indicator-value",class:C.getRsiClass(C.result.indicators.rsi.value)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.rsi.value,1))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.rsi.signal)))])]):C._e(),C.result.indicators.macd?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("MACD (12,26,9)")]),A("div",{staticClass:"indicator-value",class:"bullish"===C.result.indicators.macd.signal?"bullish":"bearish"===C.result.indicators.macd.signal?"bearish":""},[C._v(" "+C._s(C.translateTrend(C.result.indicators.macd.trend))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.macd.signal)))])]):C._e(),C.result.indicators.moving_averages?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.maTrend")))]),A("div",{staticClass:"indicator-value",class:C.getMaTrendClass(C.result.indicators.moving_averages.trend)},[C._v(" "+C._s(C.translateTrend(C.result.indicators.moving_averages.trend))+" ")])]):C._e(),C.result.indicators.volatility&&null!=C.result.indicators.volatility.atr?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("ATR (14)")]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" $"+C._s(C.formatPrice(C.result.indicators.volatility.atr))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.atrTrueRange")))])]):C._e(),C.result.indicators.bollinger&&null!=C.result.indicators.bollinger.BB_width?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.bbWidth")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.bollinger.BB_width,2))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.bbWidthHint")))])]):C._e(),null!=C.result.indicators.price_position?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.rangePct20")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.price_position,1))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.rangePct20Hint")))])]):C._e(),null!=C.result.indicators.volume_ratio?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volumeRatio")))]),A("div",{staticClass:"indicator-value",class:C.volumeRatioClass(C.result.indicators.volume_ratio)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.volume_ratio,2))+"× ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.volumeRatioHint")))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.support")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.support)))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.resistance")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.resistance)))])]):C._e(),C.result.indicators.volatility?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volatility")))]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" "+C._s(C.translateVolatility(C.result.indicators.volatility.level))+" ("+C._s(C.result.indicators.volatility.pct)+"%) ")])]):C._e()]),C.professionalIndicatorRows.length?A("div",{staticClass:"indicators-pro-wrap"},[A("div",{staticClass:"indicators-pro-title"},[A("a-icon",{attrs:{type:"deployment-unit"}}),C._v(" "+C._s(C.$i18n&&"zh-CN"===C.$i18n.locale?"量化参数明细":"Quant Parameters")+" ")],1),A("a-descriptions",{staticClass:"indicators-pro-desc",attrs:{bordered:"",size:"small",column:2}},C._l(C.professionalIndicatorRows,function(t){return A("a-descriptions-item",{key:t.key,attrs:{label:t.label}},[A("span",{class:t.valueClass},[C._v(C._s(t.text))])])}),1)],1):C._e()]):C._e(),A("div",{staticClass:"feedback-section"},[A("div",{staticClass:"feedback-question"},[C._v(C._s(C.$t("fastAnalysis.wasHelpful")))]),A("div",{staticClass:"feedback-buttons"},[A("a-button",{attrs:{type:"helpful"===C.userFeedback?"primary":"default",size:"small",loading:"helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("helpful")}}},[A("a-icon",{attrs:{type:"like"}}),C._v(" "+C._s(C.$t("fastAnalysis.helpful"))+" ")],1),A("a-button",{attrs:{type:"not_helpful"===C.userFeedback?"danger":"default",size:"small",loading:"not_helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("not_helpful")}}},[A("a-icon",{attrs:{type:"dislike"}}),C._v(" "+C._s(C.$t("fastAnalysis.notHelpful"))+" ")],1)],1),A("div",{staticClass:"analysis-meta"},[A("span",[C._v(C._s(C.$t("fastAnalysis.analysisTime"))+": "+C._s(C.result.analysis_time_ms)+"ms")]),C.result.memory_id?A("span",[C._v("ID: #"+C._s(C.result.memory_id))]):C._e()])])]):A("div",{staticClass:"empty-container"},[A("div",{staticClass:"empty-content"},[A("a-icon",{staticClass:"empty-icon",attrs:{type:"radar-chart"}}),A("div",{staticClass:"empty-title"},[C._v(C._s(C.$t("fastAnalysis.selectSymbol")))]),A("div",{staticClass:"empty-hint"},[C._v(C._s(C.$t("fastAnalysis.selectHint")))])],1)])])},w=[],$={name:"FastAnalysisReport",props:{result:{type:Object,default:null},loading:{type:Boolean,default:!1},error:{type:String,default:null},errorTone:{type:String,default:"error",validator:function(t){return["error","warning","info"].includes(t)}}},data:function(){return{userFeedback:null,feedbackLoading:null,progress:0,elapsedSeconds:0,mainTimer:null}},computed:(0,m.A)((0,m.A)({},(0,h.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},progressPercent:function(){return Math.round(10*this.progress)/10},step:function(){return this.progress<25?1:this.progress<50?2:this.progress<75?3:4},currentStepText:function(){var t={1:this.$t("fastAnalysis.step1")||"获取实时数据",2:this.$t("fastAnalysis.step2")||"计算技术指标",3:this.$t("fastAnalysis.step3")||"AI深度分析",4:this.$t("fastAnalysis.step4")||"生成报告"};return t[this.step]||this.$t("fastAnalysis.preparing")||"准备中..."},elapsedTimeText:function(){if(this.elapsedSeconds<60)return"".concat(this.elapsedSeconds,"s");var t=Math.floor(this.elapsedSeconds/60),a=this.elapsedSeconds%60;return"".concat(t,"m ").concat(a,"s")},isHoldDecision:function(){return this.result&&"HOLD"===this.result.decision},decisionClass:function(){if(!this.result)return"";var t=this.result.decision;return"BUY"===t?"decision-buy":"SELL"===t?"decision-sell":"decision-hold"},decisionIcon:function(){if(!this.result)return"question";var t=this.result.decision;return"BUY"===t?"arrow-up":"SELL"===t?"arrow-down":"pause"},confidenceColor:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.confidence)||50;return a>=70?"#52c41a":a>=50?"#1890ff":"#faad14"},consensusBlock:function(){var t,a=null===(t=this.result)||void 0===t?void 0:t.consensus;return a&&"object"===(0,n.A)(a)?null==a.consensus_decision&&null==a.consensus_score?null:a:null},tradingPlan:function(){var t,a,s,e,i,n,r=(null===(t=this.result)||void 0===t?void 0:t.trading_plan)||{},o=null!==(a=r.entry_price)&&void 0!==a?a:r.entryPrice,l=null!==(s=null!==(e=r.stop_loss)&&void 0!==e?e:r.stopLoss)&&void 0!==s?s:r.loss_exit_price,c=null!==(i=null!==(n=r.take_profit)&&void 0!==n?n:r.takeProfit)&&void 0!==i?i:r.profit_target_price;return{entry_price:o,stop_loss:l,take_profit:c}},trendOutlookRaw:function(){var t,a;return(null===(t=this.result)||void 0===t?void 0:t.trend_outlook)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlook)||null},trendOutlookSummaryText:function(){var t,a,s=(null===(t=this.result)||void 0===t?void 0:t.trend_outlook_summary)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlookSummary);return s&&String(s).trim()?String(s).trim():""},trendOutlookBlocks:function(){var t=this,a=this.trendOutlookRaw;if(!a||"object"!==(0,n.A)(a))return[];var s=[{key:"next_24h",labelKey:"fastAnalysis.outlook24h"},{key:"next_3d",labelKey:"fastAnalysis.outlook3d"},{key:"next_1w",labelKey:"fastAnalysis.outlook1w"},{key:"next_1m",labelKey:"fastAnalysis.outlook1m"}];return s.map(function(s){var e=s.key,i=s.labelKey,n=a[e]||{};return{key:e,label:t.$t(i),trend:n.trend,score:n.score,strength:n.strength}}).filter(function(t){var s=a[t.key];return s&&"object"===(0,n.A)(s)&&(null!=s.trend||null!=s.score)})},stopLossHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.stopLossHintShort"):this.$t("fastAnalysis.stopLossHint")},takeProfitHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.takeProfitHintShort"):this.$t("fastAnalysis.takeProfitHint")},professionalIndicatorRows:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.indicators)||{},s=[],e=function(t,a,e){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";void 0!==e&&null!==e&&""!==e&&s.push({key:t,label:a,text:String(e),valueClass:i})},i=a.macd||{};if(null!=i.value&&e("macd_dif",this.$t("fastAnalysis.macdDif"),this.formatCompactNum(i.value)),null!=i.signal_line&&e("macd_dea",this.$t("fastAnalysis.macdDea"),this.formatCompactNum(i.signal_line)),null!=i.histogram){var n=Number(i.histogram),r=n>0?"bullish":n<0?"bearish":"";e("macd_hist",this.$t("fastAnalysis.macdHist"),this.formatCompactNum(i.histogram),r)}var o=a.moving_averages||{};null!=o.ma5&&e("ma5",this.$t("fastAnalysis.ma5Label"),"$"+this.formatPrice(o.ma5)),null!=o.ma10&&e("ma10",this.$t("fastAnalysis.ma10Label"),"$"+this.formatPrice(o.ma10)),null!=o.ma20&&e("ma20",this.$t("fastAnalysis.ma20Label"),"$"+this.formatPrice(o.ma20));var l=a.bollinger||{};null!=l.BB_upper&&e("bb_u",this.$t("fastAnalysis.bbUpper"),"$"+this.formatPrice(l.BB_upper)),null!=l.BB_middle&&e("bb_m",this.$t("fastAnalysis.bbMiddle"),"$"+this.formatPrice(l.BB_middle)),null!=l.BB_lower&&e("bb_l",this.$t("fastAnalysis.bbLower"),"$"+this.formatPrice(l.BB_lower)),null!=l.BB_width&&e("bb_w",this.$t("fastAnalysis.bbWidthPct"),this.formatNumber(l.BB_width,2)+"%");var c=a.levels||{};null!=c.pivot&&e("piv",this.$t("fastAnalysis.pivotStd"),"$"+this.formatPrice(c.pivot)),null!=c.s1&&e("s1",this.$t("fastAnalysis.levelS1"),"$"+this.formatPrice(c.s1)),null!=c.r1&&e("r1",this.$t("fastAnalysis.levelR1"),"$"+this.formatPrice(c.r1)),null!=c.s2&&e("s2",this.$t("fastAnalysis.levelS2"),"$"+this.formatPrice(c.s2)),null!=c.r2&&e("r2",this.$t("fastAnalysis.levelR2"),"$"+this.formatPrice(c.r2)),null!=c.swing_high&&e("sw_h",this.$t("fastAnalysis.swingHigh20"),"$"+this.formatPrice(c.swing_high)),null!=c.swing_low&&e("sw_l",this.$t("fastAnalysis.swingLow20"),"$"+this.formatPrice(c.swing_low));var d=a.volatility||{};if(null!=d.atr){var u=null!=d.pct?this.formatNumber(d.pct,2)+"% ATR/Price":"";e("atr14",this.$t("fastAnalysis.atr14Label"),"$"+this.formatPrice(d.atr)+(u?" · "+u:""))}var m=a.trading_levels||{};return null!=m.risk_reward_ratio&&Number(m.risk_reward_ratio)>0&&e("rr",this.$t("fastAnalysis.rrLongRef"),"1 : "+this.formatNumber(m.risk_reward_ratio,2)),null!=a.current_price&&e("cref",this.$t("fastAnalysis.refClose"),"$"+this.formatPrice(a.current_price)),s},insufficientCreditsError:function(){if(!this.error)return!1;var t=String(this.error);return t.includes("积分不足")||t.toLowerCase().includes("insufficient credits")},errorTitle:function(){return"warning"===this.errorTone?this.$t("fastAnalysis.analysisInProgressTitle"):this.insufficientCreditsError?this.$t("fastAnalysis.insufficientCredits"):this.$t("fastAnalysis.error")}}),watch:{result:function(){this.userFeedback=null},loading:{handler:function(t){t?this.startProgressTimer():this.stopProgressTimer()},immediate:!0}},mounted:function(){this.loading&&this.startProgressTimer()},beforeDestroy:function(){this.stopProgressTimer()},methods:{formatPrice:function(t){if(void 0===t||null===t)return"--";var a=parseFloat(t);return isNaN(a)?"--":a<1?a.toFixed(6):a<100?a.toFixed(4):a<1e4?a.toFixed(2):a.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatNumber:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(void 0===t||null===t)return"--";var s=parseFloat(t);return isNaN(s)?"--":s.toFixed(a)},formatConsensusNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?"--":a.toFixed(1)},formatAgreementPct:function(t){var a=Number(t);return Number.isNaN(a)?"--":"".concat(Math.round(100*a),"%")},formatProgress:function(t){var a=parseFloat(t)||0;return a%1===0?a.toFixed(0):a.toFixed(1)},formatOutlookTrend:function(t){var a=String(t||"HOLD").toUpperCase();return"BUY"===a?this.$t("fastAnalysis.outlookBull"):"SELL"===a?this.$t("fastAnalysis.outlookBear"):this.$t("fastAnalysis.outlookNeutral")},outlookTrendClass:function(t){var a=String(t||"").toUpperCase();return"BUY"===a?"trend-bull":"SELL"===a?"trend-bear":"trend-neutral"},formatCompactNum:function(t){var a=parseFloat(t);return Number.isNaN(a)?"--":0!==a&&Math.abs(a)<1e-4?a.toExponential(2):Math.abs(a)<1?a.toFixed(6):Math.abs(a)<100?a.toFixed(4):a.toFixed(2)},volumeRatioClass:function(t){var a=parseFloat(t);return Number.isNaN(a)?"":a>=1.5?"bullish":a<=.65?"bearish":""},getScoreColor:function(t){return t>=70?"#52c41a":t>=50?"#1890ff":t>=30?"#faad14":"#ff4d4f"},getScoreTagColor:function(t){return t>=70?"green":t>=50?"blue":t>=30?"orange":"red"},getRsiClass:function(t){return t<30?"oversold":t>70?"overbought":""},getMaTrendClass:function(t){return t?t.includes("uptrend")||t.includes("strong_uptrend")?"bullish":t.includes("downtrend")||t.includes("strong_downtrend")?"bearish":"":""},getVolatilityClass:function(t){return"high"===t?"high-volatility":"low"===t?"low-volatility":""},translateSignal:function(t){if(!t)return"--";var a="fastAnalysis.signal.".concat(t),s=this.$t(a);return s===a?t:s},translateTrend:function(t){if(!t)return"--";var a="fastAnalysis.trend.".concat(t),s=this.$t(a);return s===a?t:s},translateVolatility:function(t){if(!t)return"--";var a="fastAnalysis.volatilityLevel.".concat(t),s=this.$t(a);return s===a?t:s},submitFeedback:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(null!==(e=a.result)&&void 0!==e&&e.memory_id){s.n=1;break}return a.$message.warning(a.$t("fastAnalysis.feedbackUnavailable")||"反馈功能暂不可用,请刷新后重试"),s.a(2);case 1:return a.feedbackLoading=t,s.p=2,s.n=3,C({memory_id:a.result.memory_id,feedback:t});case 3:a.userFeedback=t,a.$message.success(a.$t("fastAnalysis.feedbackThanks")),s.n=5;break;case 4:s.p=4,s.v,a.$message.error(a.$t("fastAnalysis.feedbackFailed"));case 5:return s.p=5,a.feedbackLoading=null,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},startProgressTimer:function(){var t=this;this.stopProgressTimer(),this.progress=0,this.elapsedSeconds=0;var a=Date.now();this.mainTimer=window.setInterval(function(){t.elapsedSeconds=Math.floor((Date.now()-a)/1e3),t.progress<75?t.progress=Math.min(t.progress+1,75):t.progress<90?t.progress=Math.min(t.progress+.5,90):t.progress<95&&(t.progress=Math.min(t.progress+.2,95))},100)},stopProgressTimer:function(){this.mainTimer&&(window.clearInterval(this.mainTimer),this.mainTimer=null),this.progress=0,this.elapsedSeconds=0}}},T=$,x=s(845),M=(0,x.A)(T,S,w,!1,null,"03feb1fa",null),P=M.exports,F={name:"Analysis",props:{embedded:{type:Boolean,default:!1},presetSymbol:{type:String,default:""},autoAnalyzeSignal:{type:Number,default:0}},components:{FastAnalysisReport:P},data:function(){return{loadingMarket:!1,heatmapType:"crypto",marketData:{fearGreed:null,vix:null,dxy:null,indices:[],heatmap:{crypto:[],commodities:[],sectors:[],forex:[]},calendar:[]},loadingSentiment:!1,loadingIndices:!1,loadingHeatmap:!1,loadingCalendar:!1,watchlistPriceTimer:null,watchlistPrices:{},localUserInfo:{},loadingUserInfo:!1,userId:1,watchlist:[],loadingWatchlist:!1,showAddStockModal:!1,addingStock:!1,selectedSymbol:void 0,analyzing:!1,analysisResult:null,analysisError:null,analysisErrorTone:"error",showHistoryModal:!1,historyList:[],historyLoading:!1,historyPage:1,historyPageSize:20,historyTotal:0,currentTaskId:null,taskPollingTimer:null,taskPollingStartedAt:0,marketTypes:[],selectedMarketTab:"",symbolSearchKeyword:"",symbolSearchResults:[],searchingSymbols:!1,hotSymbols:[],loadingHotSymbols:!1,selectedSymbolForAdd:null,searchTimer:null,hasSearched:!1,positions:[],monitors:[],positionSummaryMap:{},showPositionModal:!1,showMonitorModal:!1,targetStockForOps:null,positionForm:{side:"long",quantity:null,entryPrice:null},monitorForm:{interval_min:240,notify_channels:[]},batchMode:!1,batchSelectedKeys:[],batchRunning:!1,batchProgress:0,showBatchScheduleModal:!1,batchScheduleForm:{interval_min:240,notify_channels:[]},showTaskDrawer:!1,showEditTaskModal:!1,editTaskLoading:!1,editTaskId:null,editTaskForm:{name:"",interval_min:240,notify_channels:[]}}},computed:(0,m.A)((0,m.A)((0,m.A)({},(0,h.L8)(["userInfo"])),(0,h.aH)({navTheme:function(t){return t.app.theme},primaryColor:function(t){return t.app.color||"#1890ff"}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isZhLocale:function(){return"zh-CN"===this.$i18n.locale},currentHeatmap:function(){return this.marketData.heatmap[this.heatmapType]||[]},storeUserInfo:function(){return this.userInfo||{}},mergedUserInfo:function(){return this.localUserInfo&&this.localUserInfo.email?this.localUserInfo:this.storeUserInfo},watchlistTotalPnl:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(Number(a.pnl)||0)},0)},watchlistPositionCount:function(){return Object.values(this.positionSummaryMap).filter(function(t){return t.quantity>0}).length},watchlistTaskCount:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(a.monitorCount||0)},0)},batchSelectedAll:function(){return this.watchlist&&this.watchlist.length>0&&this.batchSelectedKeys.length===this.watchlist.length},batchIndeterminate:function(){return this.batchSelectedKeys.length>0&&this.batchSelectedKeys.length<(this.watchlist||[]).length}}),created:function(){this.loadUserInfo(),this.loadMarketTypes(),this.loadWatchlist(),this.loadPositionData(),this.loadMarketData()},mounted:function(){this.startWatchlistPriceRefresh()},beforeDestroy:function(){this.watchlistPriceTimer&&clearInterval(this.watchlistPriceTimer),this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null)},methods:{stopTaskPolling:function(){this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null),this.currentTaskId=null,this.taskPollingStartedAt=0},pollTaskResult:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.currentTaskId){a.n=1;break}return a.a(2);case 1:return a.p=1,a.n=2,_({page:1,pagesize:50});case 2:if(s=a.v,s&&1===s.code&&s.data){a.n=3;break}return a.a(2);case 3:if(e=s.data.list||[],i=e.find(function(a){return Number(a.id)===Number(t.currentTaskId)}),i){a.n=4;break}return a.a(2);case 4:if(n=String(i.status||"").toLowerCase(),"completed"!==n){a.n=8;break}if(!i.full_result){a.n=5;break}t.analysisResult=i.full_result,a.n=6;break;case 5:return a.n=6,t.viewHistoryResult(i);case 6:return t.$message.success(t.$t("dashboard.analysis.message.analysisComplete")),a.n=7,t.refreshUserInfoFromServer();case 7:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 8:if("failed"!==n){a.n=10;break}return t.analysisError=i.error_message||t.$t("dashboard.analysis.message.analysisFailed"),t.analysisErrorTone="error",t.$message.error(t.analysisError),a.n=9,t.refreshUserInfoFromServer();case 9:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 10:Date.now()-t.taskPollingStartedAt>18e4&&(t.$message.warning(t.$t("fastAnalysis.analysisStillProcessing")||"任务仍在处理中,请稍后在历史记录查看"),t.analyzing=!1,t.stopTaskPolling());case 11:a.n=13;break;case 12:a.p=12,a.v;case 13:return a.a(2)}},a,null,[[1,12]])}))()},startTaskPolling:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:return a.stopTaskPolling(),a.currentTaskId=Number(t),a.taskPollingStartedAt=Date.now(),s.n=1,a.pollTaskResult();case 1:a.taskPollingTimer=setInterval(function(){a.pollTaskResult()},2500);case 2:return s.a(2)}},s)}))()},filterSymbolOption:function(t,a){var s,e=(null===(s=a.componentOptions)||void 0===s||null===(s=s.propsData)||void 0===s?void 0:s.value)||"";return"__add_stock_option__"===e||e.toLowerCase().includes(t.toLowerCase())},handleSymbolChange:function(t){var a=this;if("__add_stock_option__"===t)return this.showAddStockModal=!0,void this.$nextTick(function(){a.selectedSymbol=void 0});this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",t)},selectWatchlistItem:function(t){this.selectedSymbol="".concat(t.market,":").concat(t.symbol),this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",this.selectedSymbol)},hasMonitorForStock:function(t){if(!t)return!1;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!!(s&&s.monitorCount>0)},getMonitorMeta:function(t){if(!t)return null;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!s||s.monitorCount<=0?null:{activeCount:s.activeMonitorCount||0,nextRunAtText:s.nextRunAtText||""}},getPnlBarStyle:function(t){var a=Math.abs(Number((null===t||void 0===t?void 0:t.pnlPercent)||0)),s=Math.min(100,Math.max(4,a));return{width:"".concat(s,"%")}},_displayDateTimeLocaleOptions:function(){var t=String(this.storeUserInfo&&this.storeUserInfo.timezone||"").trim(),a={year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};if(!t)return a;try{return Intl.DateTimeFormat(void 0,{timeZone:t}).format(new Date),(0,m.A)((0,m.A)({},a),{},{timeZone:t})}catch(s){return a}},_parseInstantForDisplay:function(t){if(t=String(t||"").trim(),!t)return null;var a=/[zZ]$/.test(t)||/[+-]\d{2}:?\d{2}$/.test(t);if(!a){var s=t.replace(" ","T");t=s.endsWith("Z")?s:"".concat(s,"Z")}var e=new Date(t);return Number.isNaN(e.getTime())?null:e},_formatNextRunText:function(t){try{var a=this._parseInstantForDisplay(t);return a?a.toLocaleString(void 0,this._displayDateTimeLocaleOptions()):""}catch(s){return""}},buildPositionSummary:function(){var t=this,a={},s=Array.isArray(this.positions)?this.positions:[],e=Array.isArray(this.monitors)?this.monitors:[],i=new Set,n={};s.forEach(function(t){n[Number(t.id)]="".concat(t.market,":").concat(t.symbol)}),e.forEach(function(s){var e=Array.isArray(s.position_ids)?s.position_ids:[];e.forEach(function(t){return i.add(Number(t))});var r=!!s.is_active,o=s.next_run_at||"";e.forEach(function(s){var e=n[Number(s)];e&&(a[e]||(a[e]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[e].monitorCount+=1,r&&(a[e].activeMonitorCount+=1),!a[e].nextRunAtText&&o&&(a[e].nextRunAtText=t._formatNextRunText(o)))})}),s.forEach(function(t){var s="".concat(t.market,":").concat(t.symbol),e=Number(t.quantity||0),n=Number(t.entry_price||0);a[s]||(a[s]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[s].quantity+=e,a[s].weightedEntry+=e*n,a[s].pnl+=Number(t.pnl||0),a[s].marketValue+=Number(t.market_value||0),i.has(Number(t.id))&&(a[s].monitorCount+=1)}),Object.keys(a).forEach(function(t){var s=a[t];s.avgEntry=s.quantity>0?s.weightedEntry/s.quantity:0;var e=s.quantity>0?s.weightedEntry:0;s.pnlPercent=e>0?s.pnl/e*100:0}),this.positionSummaryMap=a},toggleStockMonitor:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r,o,l;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(e="".concat(t.market,":").concat(t.symbol),i=(a.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),0!==i.length){s.n=1;break}return s.a(2);case 1:if(n=(a.monitors||[]).filter(function(t){var a=Array.isArray(t.position_ids)?t.position_ids.map(function(t){return Number(t)}):[];return a.some(function(t){return i.includes(t)})}),0!==n.length){s.n=2;break}return s.a(2);case 2:return r=!n.some(function(t){return!!t.is_active}),s.p=3,s.n=4,Promise.all(n.map(function(t){return(0,y.sk)(t.id,{is_active:r})}));case 4:return a.$message.success(r?a.$t("aiAssetAnalysis.monitor.enabled")||"已启用任务":a.$t("aiAssetAnalysis.monitor.disabled")||"已暂停任务"),s.n=5,a.loadPositionData();case 5:s.n=7;break;case 6:s.p=6,l=s.v,a.$message.error((null===l||void 0===l||null===(o=l.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===l||void 0===l?void 0:l.message)||"Toggle monitor failed");case 7:return s.a(2)}},s,null,[[3,6]])}))()},loadPositionData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,Promise.all([(0,y.Dt)(),(0,y.w1)()]);case 1:s=a.v,e=(0,c.A)(s,2),i=e[0],n=e[1],t.positions=i&&1===i.code&&i.data||[],t.monitors=n&&1===n.code&&n.data||[],t.buildPositionSummary(),a.n=3;break;case 2:a.p=2,a.v,t.positions=[],t.monitors=[],t.positionSummaryMap={};case 3:return a.a(2)}},a,null,[[0,2]])}))()},openPositionModal:function(t){this.targetStockForOps=t;var a="".concat(t.market,":").concat(t.symbol),s=(this.positions||[]).find(function(t){return"".concat(t.market,":").concat(t.symbol)===a});if(s){var e=Number(s.quantity||0);this.positionForm={side:s.side||(e<0?"short":"long"),quantity:Math.abs(e)||null,entryPrice:Number(s.entry_price||0)||null}}else this.positionForm={side:"long",quantity:null,entryPrice:null};this.showPositionModal=!0},savePosition:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:if(e=Number(t.positionForm.quantity||0),i=Number(t.positionForm.entryPrice||0),e>0&&i>0){a.n=2;break}return t.$message.warning(t.$i18n&&"zh-CN"===t.$i18n.locale?"请输入有效的数量和买入单价":"Please enter valid quantity and entry price"),a.a(2);case 2:return a.p=2,a.n=3,(0,y.Ps)({market:s.market,symbol:s.symbol,name:s.name||s.symbol,side:t.positionForm.side||"long",quantity:e,entry_price:i});case 3:if(n=a.v,!n||1!==n.code){a.n=5;break}return t.$message.success(t.$t("portfolio.positions.add")+" OK"),t.showPositionModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===n||void 0===n?void 0:n.msg)||"Add position failed");case 6:a.n=8;break;case 7:a.p=7,o=a.v,t.$message.error((null===o||void 0===o||null===(r=o.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===o||void 0===o?void 0:o.message)||"Add position failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},openMonitorModal:function(t){this.targetStockForOps=t,this.monitorForm={interval_min:240,notify_channels:[]},this.showMonitorModal=!0},saveMonitorTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,c;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:return e="".concat(s.market,":").concat(s.symbol),i=t.monitorForm.interval_min,n=t.monitorForm.notify_channels||[],r=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(s.symbol,"-").concat(i,"m"),position_ids:r,monitor_type:"ai",config:{run_interval_minutes:i,symbol:s.symbol,market:s.market,language:t.$store.getters.lang||t.$i18n.locale||"en-US"},notification_config:{channels:n},is_active:!0});case 3:if(o=a.v,!o||1!==o.code){a.n=5;break}return t.$message.success(t.$t("aiAssetAnalysis.monitor.created")),t.showMonitorModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||"Create monitor failed");case 6:a.n=8;break;case 7:a.p=7,c=a.v,t.$message.error((null===c||void 0===c||null===(l=c.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.msg)||(null===c||void 0===c?void 0:c.message)||"Create monitor failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},toggleBatchMode:function(){this.batchMode=!this.batchMode,this.batchMode||(this.batchSelectedKeys=[])},onBatchSelectAll:function(t){t.target.checked?this.batchSelectedKeys=(this.watchlist||[]).map(function(t){return"".concat(t.market,":").concat(t.symbol)}):this.batchSelectedKeys=[]},onBatchItemToggle:function(t,a){var s="".concat(t.market,":").concat(t.symbol);a.target.checked?this.batchSelectedKeys.includes(s)||this.batchSelectedKeys.push(s):this.batchSelectedKeys=this.batchSelectedKeys.filter(function(t){return t!==s})},openBatchScheduleModal:function(){0!==this.batchSelectedKeys.length&&(this.batchScheduleForm={interval_min:240,notify_channels:[]},this.showBatchScheduleModal=!0)},saveBatchSchedule:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,u,m,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=(0,l.A)(t.batchSelectedKeys),0!==s.length){a.n=1;break}return a.a(2);case 1:t.batchRunning=!0,e=t.batchScheduleForm.interval_min,i=t.batchScheduleForm.notify_channels||[],n=0,u=(0,o.A)(s),a.p=2,h=(0,d.A)().m(function a(){var s,r,o,l,u,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=m.value,r=s.split(":"),o=(0,c.A)(r,2),l=o[0],u=o[1],h=(t.watchlist||[]).find(function(t){return t.market===l&&t.symbol===u}),h){a.n=1;break}return a.a(2,1);case 1:return p=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===s}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(u,"-").concat(e,"m"),position_ids:p,monitor_type:"ai",config:{run_interval_minutes:e,symbol:u,market:l,language:t.$store.getters.lang||t.$i18n.locale||"en-US"},notification_config:{channels:i},is_active:!0});case 3:n++,a.n=5;break;case 4:a.p=4,a.v;case 5:return a.a(2)}},a,null,[[2,4]])}),u.s();case 3:if((m=u.n()).done){a.n=6;break}return a.d((0,r.A)(h()),4);case 4:if(!a.v){a.n=5;break}return a.a(3,5);case 5:a.n=3;break;case 6:a.n=8;break;case 7:a.p=7,p=a.v,u.e(p);case 8:return a.p=8,u.f(),a.f(8);case 9:return t.batchRunning=!1,t.showBatchScheduleModal=!1,t.batchMode=!1,t.batchSelectedKeys=[],a.n=10,t.loadPositionData();case 10:t.$message.success(t.$t("aiAssetAnalysis.batch.done")+" (".concat(n,"/").concat(s.length,")"));case 11:return a.a(2)}},a,null,[[2,7,8,9]])}))()},formatIntervalText:function(t){return t>=1440?"".concat(Math.round(t/1440),"d"):t>=60?"".concat(Math.round(t/60),"h"):"".concat(t,"m")},handleToggleTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.sk)(t.id,{is_active:!t.is_active});case 1:return a.$message.success(t.is_active?a.$t("aiAssetAnalysis.tasks.paused"):a.$t("aiAssetAnalysis.tasks.resumed")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},handleEditTask:function(t){this.editTaskId=t.id,this.editTaskForm={name:t.name||"",interval_min:t.config&&t.config.run_interval_minutes||240,notify_channels:t.notification_config&&t.notification_config.channels||[]},this.showEditTaskModal=!0},saveEditTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.editTaskId){a.n=1;break}return a.a(2);case 1:return t.editTaskLoading=!0,a.p=2,a.n=3,(0,y.sk)(t.editTaskId,{name:t.editTaskForm.name,config:{run_interval_minutes:t.editTaskForm.interval_min},notification_config:{channels:t.editTaskForm.notify_channels}});case 3:return t.$message.success("OK"),t.showEditTaskModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:a.p=5,e=a.v,t.$message.error((null===e||void 0===e||null===(s=e.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.msg)||(null===e||void 0===e?void 0:e.message)||"Failed");case 6:return a.p=6,t.editTaskLoading=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},handleDeleteTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.ei)(t.id);case 1:return a.$message.success(a.$t("aiAssetAnalysis.tasks.deleted")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},loadMarketData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){return(0,d.A)().w(function(a){while(1)switch(a.n){case 0:t.loadingMarket=!0,t.loadSentimentData(),t.loadIndicesData(),t.loadHeatmapData(),t.loadCalendarData();case 1:return a.a(2)}},a)}))()},loadSentimentData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingSentiment=!0,a.p=1,a.n=2,(0,A.EF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.fearGreed=(null===(e=s.data.fear_greed)||void 0===e?void 0:e.value)||null,t.marketData.vix=(null===(i=s.data.vix)||void 0===i?void 0:i.value)||null,t.marketData.dxy=(null===(n=s.data.dxy)||void 0===n?void 0:n.value)||null),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingSentiment=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadIndicesData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingIndices=!0,a.p=1,a.n=2,(0,A.yI)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.indices=s.data.indices||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingIndices=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadHeatmapData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingHeatmap=!0,a.p=1,a.n=2,(0,A.f$)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.heatmap={crypto:s.data.crypto||[],commodities:s.data.commodities||[],sectors:s.data.sectors||[],forex:s.data.forex||[]}),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingHeatmap=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadCalendarData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingCalendar=!0,a.p=1,a.n=2,(0,A.kF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&(t.marketData.calendar=s.data||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingCalendar=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},checkAllLoaded:function(){this.loadingSentiment||this.loadingIndices||this.loadingHeatmap||this.loadingCalendar||(this.loadingMarket=!1)},getFearGreedClass:function(t){return t?t<=25?"extreme-fear":t<=45?"fear":t<=55?"neutral":t<=75?"greed":"extreme-greed":""},getVixLevel:function(t){return t?t<15?"low":t<25?"medium":"high":""},formatNum:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t||isNaN(t)?"--":Number(t).toFixed(a)},getHeatmapStyle:function(t){var a=parseFloat(t)||0,s=Math.min(Math.abs(a)/5,1),e=this.isDarkTheme;if(a>=0){var i=e?a>2?"#fff":"#4ade80":a>2?"#fff":"#166534";return{background:"rgba(34, 197, 94, ".concat(.15+.6*s,")"),color:i}}var n=e?a<-2?"#fff":"#f87171":a<-2?"#fff":"#991b1b";return{background:"rgba(239, 68, 68, ".concat(.15+.6*s,")"),color:n}},getCountryFlag:function(t){var a={US:"🇺🇸",CN:"🇨🇳",EU:"🇪🇺",JP:"🇯🇵",UK:"🇬🇧",DE:"🇩🇪",AU:"🇦🇺",CA:"🇨🇦"};return a[t]||"🌍"},formatCalendarDate:function(t){if(!t)return"";try{var a=new Date(t),s=new Date,e=new Date(s);if(e.setDate(e.getDate()+1),a.toDateString()===s.toDateString())return this.isZhLocale?"今天":"Today";if(a.toDateString()===e.toDateString())return this.isZhLocale?"明天":"Tmrw";var i=a.getMonth()+1,n=a.getDate();return"".concat(i,"/").concat(n)}catch(r){return t}},formatPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1e3?t.toFixed(0):t.toFixed(2):"--"},formatHeatmapPrice:function(t){return t?t>=1e4?"$"+(t/1e3).toFixed(1)+"K":t>=1e3?"$"+t.toFixed(0):t>=1?"$"+t.toFixed(2):"$"+t.toFixed(4):""},getHeatmapName:function(t){return"sectors"===this.heatmapType||"commodities"===this.heatmapType||"forex"===this.heatmapType?this.isZhLocale?t.name_cn||t.name:t.name_en||t.name:t.name},getImpactClass:function(t){return t.actual_impact||t.expected_impact||"neutral"},getMarketColor:function(t){var a={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return a[t]||"default"},getCurrencySymbol:function(t){return"$"},formatCreditNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?String(t):Number.isInteger(a)?String(a):a.toFixed(2)},refreshUserInfoFromServer:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.ug)();case 1:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data)),a.n=3;break;case 2:a.p=2,a.v;case 3:return a.a(2)}},a,null,[[0,2]])}))()},startFastAnalysis:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,u,h,p,v,y,f,b,_,k,C;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(!t.analyzing){a.n=1;break}return a.a(2);case 1:if(t.selectedSymbol){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.message.selectSymbol")),a.a(2);case 2:return t.analyzing=!0,t.analysisError=null,t.analysisErrorTone="error",s=t.selectedSymbol.split(":"),e=(0,c.A)(s,2),i=e[0],n=e[1],r=t.$store.getters.lang||"zh-CN",o=!1,a.p=3,a.n=4,g({market:i,symbol:n,language:r,timeframe:"1D",async_submit:!0});case 4:if(l=a.v,!l||1!==l.code||!l.data){a.n=9;break}if("processing"!==l.data.status){a.n=6;break}return o=!0,u=l.data.remaining_credits,void 0!==u&&null!==u?t.$message.success(t.$t("fastAnalysis.analysisSubmittedWithCredits",{remaining:t.formatCreditNum(u)})):t.$message.success(t.$t("fastAnalysis.analysisSubmitted")||"任务已提交,正在分析中"),a.n=5,t.startTaskPolling(l.data.task_id);case 5:a.n=7;break;case 6:h=(0,m.A)({},l.data),delete h.credits_charged,delete h.remaining_credits,t.analysisResult=h,p=l.data.remaining_credits,void 0!==p&&null!==p?t.$message.success(t.$t("fastAnalysis.analysisCompleteWithCredits",{remaining:t.formatCreditNum(p)})):t.$message.success(t.$t("dashboard.analysis.message.analysisComplete"));case 7:return a.n=8,t.refreshUserInfoFromServer();case 8:a.n=10;break;case 9:throw new Error((null===l||void 0===l?void 0:l.msg)||"分析失败");case 10:a.n=12;break;case 11:a.p=11,C=a.v,f=null===C||void 0===C||null===(v=C.response)||void 0===v?void 0:v.status,b=(null===C||void 0===C||null===(y=C.response)||void 0===y?void 0:y.data)||{},_=b.msg,k=b.data,429===f&&k&&k.in_progress?(t.analysisErrorTone="warning",t.analysisError=t.$t("fastAnalysis.analysisInProgress"),t.$message.warning(t.analysisError)):400===f&&"Insufficient credits"===_?(t.analysisError=t.$t("fastAnalysis.insufficientCreditsDetail",{required:t.formatCreditNum(null===k||void 0===k?void 0:k.required),current:t.formatCreditNum(null===k||void 0===k?void 0:k.current),shortage:t.formatCreditNum(null===k||void 0===k?void 0:k.shortage)}),t.$message.error(t.analysisError)):(t.analysisError=_||(null===C||void 0===C?void 0:C.message)||t.$t("dashboard.analysis.message.analysisFailed"),t.$message.error(t.analysisError));case 12:return a.p=12,o||(t.analyzing=!1),a.f(12);case 13:return a.a(2)}},a,null,[[3,11,12,13]])}))()},loadHistoryList:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,_({page:t.historyPage,pagesize:t.historyPageSize});case 2:s=a.v,s&&1===s.code&&s.data&&(t.historyList=s.data.list||[],t.historyTotal=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("dashboard.analysis.message.loadHistoryFailed")||"加载历史记录失败");case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},viewHistoryResult:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r;return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:if("processing"!==(t.status||"").toLowerCase()){s.n=1;break}return a.$message.info(a.$t("fastAnalysis.analysisStillProcessing")||"该任务仍在处理中,请稍后刷新历史记录"),s.a(2);case 1:if(!t.full_result){s.n=2;break}return a.analysisResult=t.full_result,a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1,s.a(2);case 2:e=Number(t.price)||0,i=String(t.decision||"HOLD").toUpperCase(),n=null,r=null,e>0&&("SELL"===i?(n=1.05*e,r=.95*e):"BUY"===i&&(n=.95*e,r=1.05*e)),a.analysisResult={decision:t.decision,confidence:t.confidence,summary:t.summary,market_data:{current_price:t.price,change_24h:0},trading_plan:{entry_price:t.price,stop_loss:n,take_profit:r},scores:t.scores||{},reasons:t.reasons||[],risks:[],indicators:t.indicators||{},memory_id:t.id,analysis_time_ms:0},a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1;case 3:return s.a(2)}},s)}))()},deleteHistoryItem:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,k(t.id);case 1:e=s.v,e&&1===e.code?(a.$message.success(a.$t("dashboard.analysis.message.deleteSuccess")),a.loadHistoryList()):a.$message.error((null===e||void 0===e?void 0:e.msg)||a.$t("dashboard.analysis.message.deleteFailed")),s.n=3;break;case 2:s.p=2,s.v,a.$message.error(a.$t("dashboard.analysis.message.deleteFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},formatTime:function(t){if(!t)return"-";var a=new Date(1e3*t);return Number.isNaN(a.getTime())?"-":a.toLocaleString(void 0,this._displayDateTimeLocaleOptions())},formatIsoTime:function(t){var a=this._parseInstantForDisplay(t);return a?a.toLocaleString(void 0,this._displayDateTimeLocaleOptions()):"-"},getStatusColor:function(t){var a={pending:"orange",processing:"blue",completed:"green",failed:"red"};return a[t]||"default"},getStatusText:function(t){var a={pending:"dashboard.analysis.status.pending",processing:"dashboard.analysis.status.processing",completed:"dashboard.analysis.status.completed",failed:"dashboard.analysis.status.failed"},s=a[t];return s?this.$t(s):t},loadUserInfo:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.loadingUserInfo=!0,a.p=1,!t.storeUserInfo||!t.storeUserInfo.email){a.n=2;break}return t.localUserInfo=t.storeUserInfo,t.userId=t.storeUserInfo.id,t.loadingUserInfo=!1,t.loadWatchlist(),a.a(2);case 2:return a.n=3,(0,p.ug)();case 3:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data),t.loadWatchlist()),a.n=5;break;case 4:a.p=4,a.v;case 5:return a.p=5,t.loadingUserInfo=!1,a.f(5);case 6:return a.a(2)}},a,null,[[1,4,5,6]])}))()},loadWatchlist:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.userId){a.n=1;break}return a.a(2);case 1:return t.loadingWatchlist=!0,a.p=2,a.n=3,(0,v.Qo)({userid:t.userId});case 3:if(s=a.v,!s||1!==s.code||!s.data){a.n=4;break}return t.watchlist=s.data.map(function(t){return(0,m.A)((0,m.A)({},t),{},{price:0,change:0,changePercent:0})}),a.n=4,t.loadWatchlistPrices();case 4:a.n=6;break;case 5:a.p=5,a.v;case 6:return a.p=6,t.loadingWatchlist=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},loadWatchlistPrices:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.watchlist&&0!==t.watchlist.length){a.n=1;break}return a.a(2);case 1:return a.p=1,s=t.watchlist.map(function(t){return{market:t.market,symbol:t.symbol}}),a.n=2,(0,v.ms)({watchlist:s});case 2:e=a.v,e&&1===e.code&&e.data&&(i={},n={},e.data.forEach(function(t){i["".concat(t.market,"-").concat(t.symbol)]=t,n["".concat(t.market,":").concat(t.symbol)]={price:t.price||0,change:t.changePercent||0}}),t.watchlistPrices=n,t.watchlist=t.watchlist.map(function(t){var a="".concat(t.market,"-").concat(t.symbol),s=i[a];return s?(0,m.A)((0,m.A)({},t),{},{price:s.price||0,change:s.change||0,changePercent:s.changePercent||0}):t})),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},startWatchlistPriceRefresh:function(){var t=this;this.watchlistPriceTimer=setInterval(function(){t.watchlist&&t.watchlist.length>0&&t.loadWatchlistPrices()},3e4),this.watchlist&&this.watchlist.length>0&&this.loadWatchlistPrices()},handleAddStock:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s="",e="",i="",!t.selectedSymbolForAdd){a.n=1;break}s=t.selectedSymbolForAdd.market,e=t.selectedSymbolForAdd.symbol.toUpperCase(),i=t.selectedSymbolForAdd.name||"",a.n=4;break;case 1:if(!t.symbolSearchKeyword||!t.symbolSearchKeyword.trim()){a.n=3;break}if(t.selectedMarketTab){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:s=t.selectedMarketTab,e=t.symbolSearchKeyword.trim().toUpperCase(),i="",a.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),a.a(2);case 4:return t.addingStock=!0,a.p=5,a.n=6,(0,v.dp)({userid:t.userId,market:s,symbol:e,name:i});case 6:if(n=a.v,!n||1!==n.code){a.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),t.handleCloseAddStockModal(),a.n=7,t.loadWatchlist();case 7:a.n=9;break;case 8:t.$message.error((null===n||void 0===n?void 0:n.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:a.n=11;break;case 10:a.p=10,l=a.v,o=(null===l||void 0===l||null===(r=l.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===l||void 0===l?void 0:l.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(o);case 11:return a.p=11,t.addingStock=!1,a.f(11);case 12:return a.a(2)}},a,null,[[5,10,11,12]])}))()},handleCloseAddStockModal:function(){this.showAddStockModal=!1,this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.selectedMarketTab=this.marketTypes.length>0?this.marketTypes[0].value:""},handleMarketTabChange:function(t){this.selectedMarketTab=t,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.selectedSymbolForAdd=null,this.hasSearched=!1,this.loadHotSymbols(t)},handleSymbolSearchInput:function(t){var a=this,s=t.target.value;if(this.symbolSearchKeyword=s,this.searchTimer&&clearTimeout(this.searchTimer),!s||""===s.trim())return this.symbolSearchResults=[],this.hasSearched=!1,void(this.selectedSymbolForAdd=null);this.searchTimer=setTimeout(function(){a.searchSymbolsInModal(s)},500)},handleSearchOrInput:function(t){t&&t.trim()&&(this.selectedMarketTab?this.symbolSearchResults.length>0||(this.hasSearched&&0===this.symbolSearchResults.length?this.handleDirectAdd():this.searchSymbolsInModal(t)):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},searchSymbolsInModal:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t&&""!==t.trim()){s.n=1;break}return a.symbolSearchResults=[],a.hasSearched=!1,s.a(2);case 1:if(a.selectedMarketTab){s.n=2;break}return a.$message.warning(a.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),s.a(2);case 2:return a.searchingSymbols=!0,a.hasSearched=!0,s.p=3,s.n=4,(0,v._3)({market:a.selectedMarketTab,keyword:t.trim(),limit:20});case 4:e=s.v,e&&1===e.code&&e.data&&e.data.length>0?a.symbolSearchResults=e.data:(a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""}),s.n=6;break;case 5:s.p=5,s.v,a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""};case 6:return s.p=6,a.searchingSymbols=!1,s.f(6);case 7:return s.a(2)}},s,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.symbolSearchKeyword&&this.symbolSearchKeyword.trim()?this.selectedMarketTab?this.selectedSymbolForAdd={market:this.selectedMarketTab,symbol:this.symbolSearchKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},selectSymbol:function(t){this.selectedSymbolForAdd={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},loadHotSymbols:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t||(t=a.selectedMarketTab||(a.marketTypes.length>0?a.marketTypes[0].value:"")),t){s.n=1;break}return s.a(2);case 1:return a.loadingHotSymbols=!0,s.p=2,s.n=3,(0,v.z6)({market:t,limit:10});case 3:e=s.v,e&&1===e.code&&e.data?a.hotSymbols=e.data:a.hotSymbols=[],s.n=5;break;case 4:s.p=4,s.v,a.hotSymbols=[];case 5:return s.p=5,a.loadingHotSymbols=!1,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},removeFromWatchlist:function(t){var a=arguments,s=this;return(0,u.A)((0,d.A)().m(function e(){var i,r,o;return(0,d.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(s.userId){e.n=1;break}return e.a(2);case 1:return i="object"===(0,n.A)(t)?t.symbol:t,r="object"===(0,n.A)(t)?t.market:a[1],e.p=2,e.n=3,(0,v.mk)({userid:s.userId,symbol:i,market:r});case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return s.$message.success(s.$t("dashboard.analysis.message.removeStockSuccess")),e.n=4,s.loadWatchlist();case 4:e.n=6;break;case 5:s.$message.error((null===o||void 0===o?void 0:o.msg)||s.$t("dashboard.analysis.message.removeStockFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,s.$message.error(s.$t("dashboard.analysis.message.removeStockFailed"));case 8:return e.a(2)}},e,null,[[2,7]])}))()},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},formatNumber:function(t){return"string"===typeof t?t:t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},loadMarketTypes:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,v.iO)();case 1:s=a.v,s&&1===s.code&&s.data&&Array.isArray(s.data)?t.marketTypes=s.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],a.n=3;break;case 2:a.p=2,a.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:t.marketTypes.length>0&&!t.selectedMarketTab&&(t.selectedMarketTab=t.marketTypes[0].value);case 4:return a.a(2)}},a,null,[[0,2]])}))()}},watch:{presetSymbol:function(t){t&&t!==this.selectedSymbol&&(this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error")},autoAnalyzeSignal:function(t){var a=this;t&&(this.presetSymbol&&this.presetSymbol!==this.selectedSymbol&&(this.selectedSymbol=this.presetSymbol),this.$nextTick(function(){a.startFastAnalysis()}))},showAddStockModal:function(t){t?(this.marketTypes.length>0&&!this.selectedMarketTab&&(this.selectedMarketTab=this.marketTypes[0].value),this.selectedMarketTab&&this.loadHotSymbols(this.selectedMarketTab)):(this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.searchTimer&&(clearTimeout(this.searchTimer),this.searchTimer=null))}}},I=F,D=(0,x.A)(I,e,i,!1,null,"22f26594",null),N=D.exports},44146:function(t,a,s){s.d(a,{EF:function(){return l},f$:function(){return r},kF:function(){return o},r9:function(){return c},yI:function(){return n}});var e=s(75769),i="/api/global-market";function n(){return(0,e.Ay)({url:"".concat(i,"/overview"),method:"get"})}function r(){return(0,e.Ay)({url:"".concat(i,"/heatmap"),method:"get"})}function o(){return(0,e.Ay)({url:"".concat(i,"/calendar"),method:"get"})}function l(){return(0,e.Ay)({url:"".concat(i,"/sentiment"),method:"get"})}function c(t){return(0,e.Ay)({url:"".concat(i,"/opportunities"),method:"get",params:t})}},35038:function(t,a,s){s.d(a,{Qo:function(){return n},_3:function(){return d},dp:function(){return r},iO:function(){return c},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var e=s(75769),i={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function n(t){return(0,e.Ay)({url:i.GetWatchlist,method:"get",params:t})}function r(t){return(0,e.Ay)({url:i.AddWatchlist,method:"post",data:t})}function o(t){return(0,e.Ay)({url:i.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,e.Ay)({url:i.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function c(){return(0,e.Ay)({url:i.GetMarketTypes,method:"get"})}function d(t){return(0,e.Ay)({url:i.SearchSymbols,method:"get",params:t})}function u(t){return(0,e.Ay)({url:i.GetHotSymbols,method:"get",params:t})}},24364:function(t,a,s){s.d(a,{$p:function(){return o},Dt:function(){return i},Iw:function(){return v},Ps:function(){return n},Xg:function(){return r},_3:function(){return g},aU:function(){return h},bC:function(){return l},cg:function(){return y},ei:function(){return m},f:function(){return b},iO:function(){return _},qS:function(){return f},qu:function(){return p},sk:function(){return u},w1:function(){return c},yr:function(){return d}});var e=s(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function n(t){return(0,e.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function r(t,a){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:a})}function o(t){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"get"})}function d(t){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function u(t,a){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:a})}function m(t){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function h(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:a})}function p(){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function y(t,a){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:a})}function f(t){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function b(){return(0,e.Ay)({url:"/api/portfolio/groups",method:"get"})}function g(t){return(0,e.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function _(){return(0,e.Ay)({url:"/api/market/types",method:"get"})}},21560:function(t,a,s){s.d(a,{A:function(){return i}});s(52675),s(89463),s(2259),s(26099),s(47764),s(62953);var e=s(44735);function i(t){if(null!=t){var a=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],s=0;if(a)return a.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&s>=t.length&&(t=void 0),{value:t&&t[s++],done:!t}}}}throw new TypeError((0,e.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/681.d83c19bb.js b/frontend/dist/js/681.d83c19bb.js deleted file mode 100644 index 8bfaa12..0000000 --- a/frontend/dist/js/681.d83c19bb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[681],{67681:function(t,a,s){s.r(a),s.d(a,{default:function(){return N}});s(74423);var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-analysis-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded},style:{"--primary-color":t.primaryColor}},[a("div",{staticClass:"main-content-full"},[a("div",{staticClass:"top-index-bar"},[t.loadingSentiment?[t._m(0),t._m(1),t._m(2)]:[a("div",{staticClass:"indicator-box fear-greed",class:t.getFearGreedClass(t.marketData.fearGreed)},[a("span",{staticClass:"ind-label"},[t._v(t._s(t.$t("globalMarket.fearGreedShort")))]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.fearGreed||"--"))])]),a("div",{staticClass:"indicator-box vix",class:t.getVixLevel(t.marketData.vix)},[a("span",{staticClass:"ind-label"},[t._v("VIX")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.vix||"--"))])]),a("div",{staticClass:"indicator-box dxy"},[a("span",{staticClass:"ind-label"},[t._v("DXY")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.dxy||"--"))])])],a("div",{staticClass:"indices-marquee"},[t.loadingIndices?[a("div",{staticClass:"indices-loading"},[a("a-icon",{attrs:{type:"loading"}}),t._v(" "+t._s(t.$t("common.loading")||"加载中...")+" ")],1)]:t.marketData.indices.length>0?[a("div",{staticClass:"marquee-track"},[t._l(t.marketData.indices,function(s){return a("div",{key:"a-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])}),t._l(t.marketData.indices,function(s){return a("div",{key:"b-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])})],2)]:[a("div",{staticClass:"indices-empty"},[t._v("--")])]],2),a("a-button",{staticClass:"refresh-btn",attrs:{type:"link",size:"small",loading:t.loadingMarket},on:{click:t.loadMarketData}},[a("a-icon",{attrs:{type:"sync",spin:t.loadingMarket}})],1)],2),a("div",{staticClass:"main-body"},[a("div",{staticClass:"left-panel"},[a("div",{staticClass:"heatmap-box"},[a("div",{staticClass:"box-header"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.heatmapType,callback:function(a){t.heatmapType=a},expression:"heatmapType"}},[a("a-radio-button",{attrs:{value:"crypto"}},[t._v(t._s(t.$t("globalMarket.cryptoHeatmap")))]),a("a-radio-button",{attrs:{value:"commodities"}},[t._v(t._s(t.$t("globalMarket.commoditiesHeatmap")))]),a("a-radio-button",{attrs:{value:"sectors"}},[t._v(t._s(t.$t("globalMarket.sectorHeatmap")))]),a("a-radio-button",{attrs:{value:"forex"}},[t._v(t._s(t.$t("globalMarket.forexHeatmap")))])],1)],1),a("div",{staticClass:"heatmap-grid"},[t.loadingHeatmap?t._l(12,function(t){return a("div",{key:"skel-"+t,staticClass:"heat-cell skeleton-cell"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.currentHeatmap.length>0?t._l(t.currentHeatmap.slice(0,12),function(s,e){return a("div",{key:e,staticClass:"heat-cell",style:t.getHeatmapStyle(s.value)},[a("span",{staticClass:"heat-name"},[t._v(t._s(t.getHeatmapName(s)))]),s.price?a("span",{staticClass:"heat-price"},[t._v(t._s(t.formatHeatmapPrice(s.price)))]):t._e(),a("span",{staticClass:"heat-val"},[t._v(t._s(s.value>=0?"+":"")+t._s(t.formatNum(s.value))+"%")])])}):[a("div",{staticClass:"heatmap-empty"},[t._v(t._s(t.$t("common.noData")||"暂无数据"))])]],2)]),a("div",{staticClass:"calendar-box"},[a("div",{staticClass:"box-header"},[a("span",{staticClass:"box-title"},[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t.$t("globalMarket.calendar")))],1)]),a("div",{staticClass:"calendar-list"},[t.loadingCalendar?t._l(5,function(t){return a("div",{key:"cal-skel-"+t,staticClass:"cal-item skeleton-item"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.marketData.calendar.length>0?t._l(t.marketData.calendar.slice(0,10),function(s){return a("div",{key:s.id,staticClass:"cal-item",class:s.importance},[a("span",{staticClass:"cal-date"},[t._v(t._s(t.formatCalendarDate(s.date)))]),a("span",{staticClass:"cal-time"},[t._v(t._s(s.time||"--:--"))]),a("span",{staticClass:"cal-flag"},[t._v(t._s(t.getCountryFlag(s.country)))]),a("span",{staticClass:"cal-name"},[t._v(t._s(t.isZhLocale?s.name:s.name_en))]),a("span",{staticClass:"cal-impact",class:t.getImpactClass(s)},["bullish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-up"}}):"bearish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-down"}}):a("a-icon",{attrs:{type:"minus"}}),t._v(" "+t._s(s.actual||s.forecast||"--")+" ")],1)])}):[a("div",{staticClass:"cal-empty"},[t._v(t._s(t.$t("globalMarket.noEvents")))])]],2)])]),a("div",{staticClass:"right-panel"},[a("div",{staticClass:"analysis-toolbar"},[a("a-select",{staticClass:"symbol-selector",attrs:{placeholder:t.$t("dashboard.analysis.empty.selectSymbol"),size:"large","show-search":"","allow-clear":"","filter-option":t.filterSymbolOption},on:{change:t.handleSymbolChange},model:{value:t.selectedSymbol,callback:function(a){t.selectedSymbol=a},expression:"selectedSymbol"}},[t._l(t.watchlist||[],function(s){return a("a-select-option",{key:"".concat(s.market,"-").concat(s.symbol),attrs:{value:"".concat(s.market,":").concat(s.symbol)}},[a("span",{staticClass:"symbol-option"},[a("a-tag",{attrs:{color:t.getMarketColor(s.market),size:"small"}},[t._v(t._s(t.getMarketName(s.market)))]),a("strong",{staticStyle:{"margin-left":"6px"}},[t._v(t._s(s.symbol))]),s.name?a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]):t._e()],1)])}),a("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[a("div",{staticStyle:{"text-align":"center",padding:"4px 0",color:"#1890ff"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),t._v(t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")],1)])],2),a("a-button",{staticClass:"analyze-button",attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.selectedSymbol||t.analyzing},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")]),a("a-button",{staticClass:"history-button",attrs:{size:"large",icon:"history"},on:{click:function(a){t.showHistoryModal=!0,t.loadHistoryList()}}},[t._v(" "+t._s(t.$t("fastAnalysis.history"))+" ")])],1),a("div",{staticClass:"analysis-main"},[t.analysisResult||t.analyzing||t.analysisError?t._e():a("div",{staticClass:"analysis-placeholder"},[a("div",{staticClass:"placeholder-hero"},[t._m(3),a("div",{staticClass:"hero-body"},[a("div",{staticClass:"hero-badge"},[t._v("AI-POWERED")]),a("h2",{staticClass:"hero-title"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.title")))]),a("p",{staticClass:"hero-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.subtitle")))]),a("div",{staticClass:"hero-stats"},[a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"line-chart"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"dashboard"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"apartment"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3Desc")))])])])]),a("div",{staticClass:"hero-cta"},[a("a-button",{attrs:{type:"primary",size:"large",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")]),a("a-button",{attrs:{size:"large",icon:"thunderbolt",disabled:!t.selectedSymbol},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")])],1),a("p",{staticClass:"hero-hint"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.quickStart")))])])])]),t.analysisResult||t.analyzing||t.analysisError?a("FastAnalysisReport",{attrs:{result:t.analysisResult,loading:t.analyzing,error:t.analysisError,"error-tone":t.analysisErrorTone},on:{retry:t.startFastAnalysis}}):t._e()],1)]),a("div",{staticClass:"watchlist-panel"},[a("div",{staticClass:"panel-header"},[a("span",{staticClass:"panel-title"},[a("a-icon",{attrs:{type:"star",theme:"filled"}}),t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.title")))],1),a("span",{staticClass:"panel-header-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage")}},[a("a-badge",{attrs:{count:t.monitors.length,offset:[-2,2],"number-style":{fontSize:"9px",minWidth:"14px",height:"14px",lineHeight:"14px",padding:"0 3px"}}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"unordered-list"},on:{click:function(a){t.showTaskDrawer=!0}}})],1)],1),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.batch.schedule")}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"schedule"},on:{click:t.toggleBatchMode}})],1),a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"plus"},on:{click:function(a){t.showAddStockModal=!0}}})],1)]),t.watchlist&&t.watchlist.length>0?a("div",{staticClass:"panel-summary"},[a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlist.length))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.totalAssets")))])]),t.watchlistPositionCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistPositionCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.positionCount")))])]):t._e(),t.watchlistTaskCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistTaskCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.taskCount")))])]):t._e(),0!==t.watchlistTotalPnl?a("div",{staticClass:"summary-chip pnl"},[a("span",{staticClass:"sc-num",class:t.watchlistTotalPnl>=0?"up":"down"},[t._v(t._s(t.watchlistTotalPnl>=0?"+":"")+t._s(t.formatNum(t.watchlistTotalPnl)))]),a("span",{staticClass:"sc-label"},[t._v("P&L")])]):t._e()]):t._e(),t.batchMode?a("div",{staticClass:"batch-bar"},[a("a-checkbox",{staticClass:"batch-all-cb",attrs:{checked:t.batchSelectedAll,indeterminate:t.batchIndeterminate},on:{change:t.onBatchSelectAll}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.selectAll"))+" ")]),a("a-button",{attrs:{type:"primary",size:"small",disabled:0===t.batchSelectedKeys.length},on:{click:t.openBatchScheduleModal}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.schedule"))),t.batchSelectedKeys.length>0?[t._v(" "+t._s(t.batchSelectedKeys.length))]:t._e()],2),a("a-button",{attrs:{size:"small"},on:{click:t.toggleBatchMode}},[t._v(t._s(t.$t("common.cancel")))])],1):t._e(),a("div",{staticClass:"watchlist-list"},[t._l(t.watchlist||[],function(s){var e,i,n;return a("div",{key:"wl-".concat(s.market,"-").concat(s.symbol),staticClass:"wl-card",class:{active:t.selectedSymbol==="".concat(s.market,":").concat(s.symbol)},on:{click:function(a){return t.selectWatchlistItem(s)}}},[t.batchMode?a("a-checkbox",{staticClass:"wl-card-cb",attrs:{checked:t.batchSelectedKeys.includes("".concat(s.market,":").concat(s.symbol))},on:{change:function(a){return t.onBatchItemToggle(s,a)}},nativeOn:{click:function(t){t.stopPropagation()}}}):t._e(),a("div",{staticClass:"wl-card-body",class:{"with-cb":t.batchMode}},[a("div",{staticClass:"wl-row-main"},[a("span",{staticClass:"wl-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"wl-market"},[t._v(t._s(t.getMarketName(s.market)))]),a("span",{staticClass:"wl-spacer"}),t.watchlistPrices["".concat(s.market,":").concat(s.symbol)]?[a("span",{staticClass:"wl-price"},[t._v(t._s(t.formatPrice(t.watchlistPrices["".concat(s.market,":").concat(s.symbol)].price)))]),a("span",{staticClass:"wl-change",class:((null===(e=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===e?void 0:e.change)||0)>=0?"up":"down"},[t._v(" "+t._s(((null===(i=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===i?void 0:i.change)||0)>=0?"+":"")+t._s(t.formatNum(null===(n=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===n?void 0:n.change))+"% ")])]:t._e()],2),t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)]?a("div",{staticClass:"wl-row-pnl"},[a("span",{staticClass:"wl-pnl-qty"},[t._v(t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].quantity,4))+" @ "+t._s(t.formatPrice(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].avgEntry||0)))]),a("span",{staticClass:"wl-pnl-val",class:t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"up":"down"},[t._v(" "+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl||0))+" ("+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent||0))+"%) ")])]):t._e(),t.getMonitorMeta(s)?a("div",{staticClass:"wl-row-task"},[a("span",{staticClass:"wl-task-badge",class:t.getMonitorMeta(s).activeCount>0?"active":"paused",on:{click:function(a){return a.stopPropagation(),t.toggleStockMonitor(s)}}},[a("a-icon",{attrs:{type:t.getMonitorMeta(s).activeCount>0?"sync":"pause-circle",spin:t.getMonitorMeta(s).activeCount>0}}),t._v(" "+t._s(t.getMonitorMeta(s).activeCount>0?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")],1),t.getMonitorMeta(s).nextRunAtText?a("span",{staticClass:"wl-task-next"},[t._v(t._s(t.getMonitorMeta(s).nextRunAtText))]):t._e()]):t._e()]),a("div",{staticClass:"wl-card-hover-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.position.quickAdd")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openPositionModal(s)}}},[a("a-icon",{attrs:{type:"wallet"}})],1)]),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.monitor.quickTask")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openMonitorModal(s)}}},[a("a-icon",{attrs:{type:"clock-circle"}})],1)]),a("span",{staticClass:"wl-hover-btn danger",on:{click:function(a){return a.stopPropagation(),t.removeFromWatchlist(s)}}},[a("a-icon",{attrs:{type:"delete"}})],1)],1)],1)}),t.watchlist&&0!==t.watchlist.length?t._e():a("div",{staticClass:"watchlist-empty"},[a("div",{staticClass:"we-icon"},[a("a-icon",{attrs:{type:"star"}})],1),a("p",[t._v(t._s(t.$t("dashboard.analysis.empty.noWatchlist")))]),a("a-button",{attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")])],1)],2)])])]),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",wrapClassName:t.isDarkTheme?"qd-dark-modal":"",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[a("div",{staticClass:"add-stock-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(a){t.selectedMarketTab=a},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(s){return a("a-tab-pane",{key:s.value,attrs:{tab:t.$t(s.i18nKey||"dashboard.analysis.market.".concat(s.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(a){t.symbolSearchKeyword=a},expression:"symbolSearchKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):a("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?a("div",{staticClass:"selected-symbol-section"},[a("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(a){t.selectedSymbolForAdd=null}}},[a("template",{slot:"description"},[a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),a("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?a("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):t._e()],1)])],2)],1):t._e()],1)]),a("a-modal",{attrs:{visible:t.showPositionModal,title:"".concat(t.$i18n&&"zh-CN"===t.$i18n.locale?"创建持仓(虚拟仓)":"Create Position (Virtual)"," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.savePosition,cancel:function(a){t.showPositionModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("portfolio.positions.side")||"Direction"}},[a("a-select",{model:{value:t.positionForm.side,callback:function(a){t.$set(t.positionForm,"side",a)},expression:"positionForm.side"}},[a("a-select-option",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")||"Long"))]),a("a-select-option",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")||"Short"))])],1)],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"数量":"Quantity"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.quantity,callback:function(a){t.$set(t.positionForm,"quantity",a)},expression:"positionForm.quantity"}})],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"买入单价":"Entry Price"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.entryPrice,callback:function(a){t.$set(t.positionForm,"entryPrice",a)},expression:"positionForm.entryPrice"}})],1)],1)],1),a("a-modal",{attrs:{visible:t.showMonitorModal,title:"".concat(t.$t("aiAssetAnalysis.monitor.quickTask")," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveMonitorTask,cancel:function(a){t.showMonitorModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.monitorForm.interval_min,callback:function(a){t.$set(t.monitorForm,"interval_min",a)},expression:"monitorForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.monitorForm.notify_channels,callback:function(a){t.$set(t.monitorForm,"notify_channels",a)},expression:"monitorForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1),a("a-alert",{attrs:{message:t.$t("aiAssetAnalysis.monitor.tip"),type:"info","show-icon":""}})],1)],1),a("a-modal",{attrs:{visible:t.showBatchScheduleModal,title:t.$t("aiAssetAnalysis.batch.scheduleTitle"),confirmLoading:t.batchRunning,width:"520px",wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveBatchSchedule,cancel:function(a){t.showBatchScheduleModal=!1}}},[a("div",{staticClass:"batch-modal-summary"},[a("p",[t._v(t._s(t.$t("aiAssetAnalysis.batch.scheduleDesc",{count:t.batchSelectedKeys.length})))]),a("div",{staticClass:"batch-symbols-preview"},t._l(t.batchSelectedKeys,function(s){return a("a-tag",{key:s,staticStyle:{"margin-bottom":"4px"},attrs:{color:"blue"}},[t._v(t._s(s.split(":")[1]))])}),1)]),a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.interval_min,callback:function(a){t.$set(t.batchScheduleForm,"interval_min",a)},expression:"batchScheduleForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.notify_channels,callback:function(a){t.$set(t.batchScheduleForm,"notify_channels",a)},expression:"batchScheduleForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1),a("a-alert",{staticStyle:{"margin-top":"8px"},attrs:{message:t.$t("aiAssetAnalysis.batch.scheduleTip"),type:"info","show-icon":""}})],1),a("a-drawer",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage"),visible:t.showTaskDrawer,width:"420",placement:"right",wrapClassName:t.isDarkTheme?"qd-dark-drawer":""},on:{close:function(a){t.showTaskDrawer=!1}}},[0===t.monitors.length?a("div",{staticClass:"task-drawer-empty"},[a("a-icon",{staticStyle:{"font-size":"40px",color:"#ccc"},attrs:{type:"inbox"}}),a("p",[t._v(t._s(t.$t("aiAssetAnalysis.tasks.empty")))])],1):a("div",{staticClass:"task-drawer-list"},t._l(t.monitors,function(s){return a("div",{key:s.id,staticClass:"task-item"},[a("div",{staticClass:"task-item-header"},[a("span",{staticClass:"task-item-name"},[t._v(t._s(s.name||"AI Task"))]),a("a-tag",{attrs:{color:s.is_active?"green":"default",size:"small"}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")])],1),a("div",{staticClass:"task-item-meta"},[s.config&&s.config.run_interval_minutes?a("span",[a("a-icon",{attrs:{type:"clock-circle"}}),t._v(" "+t._s(t.formatIntervalText(s.config.run_interval_minutes))+" ")],1):t._e(),s.next_run_at?a("span",[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t._formatNextRunText(s.next_run_at))+" ")],1):t._e()]),a("div",{staticClass:"task-item-actions"},[a("a-button",{attrs:{size:"small",type:s.is_active?"default":"primary",icon:"poweroff"},on:{click:function(a){return t.handleToggleTask(s)}}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.tasks.pause"):t.$t("aiAssetAnalysis.tasks.resume"))+" ")]),a("a-button",{attrs:{size:"small",icon:"edit"},on:{click:function(a){return t.handleEditTask(s)}}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.edit")))]),a("a-popconfirm",{attrs:{title:t.$t("aiAssetAnalysis.tasks.deleteConfirm"),okText:t.$t("common.confirm"),cancelText:t.$t("common.cancel")},on:{confirm:function(a){return t.handleDeleteTask(s)}}},[a("a-button",{attrs:{size:"small",type:"danger",icon:"delete"}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.delete")))])],1)],1)])}),0)]),a("a-modal",{attrs:{visible:t.showEditTaskModal,title:t.$t("aiAssetAnalysis.tasks.edit"),confirmLoading:t.editTaskLoading,wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveEditTask,cancel:function(a){t.showEditTaskModal=!1}}},[t.editTaskForm?a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.tasks.name")}},[a("a-input",{model:{value:t.editTaskForm.name,callback:function(a){t.$set(t.editTaskForm,"name",a)},expression:"editTaskForm.name"}})],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.interval_min,callback:function(a){t.$set(t.editTaskForm,"interval_min",a)},expression:"editTaskForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.notify_channels,callback:function(a){t.$set(t.editTaskForm,"notify_channels",a)},expression:"editTaskForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1):t._e()],1),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.history.title"),visible:t.showHistoryModal,footer:null,width:"800px",bodyStyle:{maxHeight:"60vh",overflowY:"auto"},wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{cancel:function(a){t.showHistoryModal=!1}}},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-list",{attrs:{"data-source":t.historyList,pagination:{current:t.historyPage,pageSize:t.historyPageSize,total:t.historyTotal,onChange:function(a){t.historyPage=a,t.loadHistoryList()},showSizeChanger:!0,pageSizeOptions:["10","20","50"],onShowSizeChange:function(a,s){t.historyPageSize=s,t.historyPage=1,t.loadHistoryList()}}},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticStyle:{display:"flex","align-items":"center","justify-content":"space-between"}},[a("div",[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(s.market)}},[t._v(" "+t._s(t.getMarketName(s.market))+" ")]),a("strong",[t._v(t._s(s.symbol))]),a("a-tag",{staticStyle:{"margin-left":"12px"},attrs:{color:"BUY"===s.decision?"green":"SELL"===s.decision?"red":"blue"}},[t._v(" "+t._s(s.decision)+" ")]),a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{color:t.getStatusColor(s.status||"completed")}},[t._v(" "+t._s(t.getStatusText(s.status||"completed"))+" ")]),a("span",{staticStyle:{color:"#999","margin-left":"8px","font-size":"12px"}},[t._v(" "+t._s(t.$t("fastAnalysis.confidence"))+": "+t._s(s.confidence)+"% ")])],1),a("div",[a("a-button",{attrs:{type:"link",size:"small",icon:"eye",disabled:"processing"===(s.status||"").toLowerCase()},on:{click:function(a){return t.viewHistoryResult(s)}}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.viewResult"))+" ")]),a("a-popconfirm",{attrs:{title:t.$t("dashboard.analysis.modal.history.deleteConfirm"),"ok-text":t.$t("common.confirm"),"cancel-text":t.$t("common.cancel")},on:{confirm:function(a){return t.deleteHistoryItem(s)}}},[a("a-button",{staticStyle:{color:"#ff4d4f"},attrs:{type:"link",size:"small",icon:"delete"}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.delete"))+" ")])],1)],1)])]),a("template",{slot:"description"},[a("div",{staticStyle:{color:"#666","font-size":"12px"}},[s.price?a("span",[t._v("$"+t._s(t.formatNumber(s.price)))]):t._e(),s.summary?a("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(s.summary.substring(0,80))+t._s(s.summary.length>80?"...":""))]):t._e()]),s.created_at?a("div",{staticStyle:{color:"#999","font-size":"12px","margin-top":"4px"}},[t._v(" "+t._s(t.formatIsoTime(s.created_at))+" ")]):t._e()])],2)],1)}}])}),t.historyLoading||0!==t.historyList.length?t._e():a("a-empty",{attrs:{description:t.$t("dashboard.analysis.empty.noHistory")}})],1)],1)],1)},i=[function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"hero-bg"},[a("div",{staticClass:"hero-bg-circle c1"}),a("div",{staticClass:"hero-bg-circle c2"}),a("div",{staticClass:"hero-bg-grid"})])}],n=s(44735),r=s(21560),o=s(57532),l=s(2403),c=s(15863),d=s(81127),u=s(56252),m=s(76338),h=s(95353),p=s(505),v=s(35038),y=s(24364),f=s(75769),b="/api/fast-analysis";function g(t){return(0,f.Ay)({url:"".concat(b,"/analyze"),method:"post",data:t,timeout:3e5})}function _(t){return(0,f.Ay)({url:"".concat(b,"/history/all"),method:"get",params:t})}function k(t){return(0,f.Ay)({url:"".concat(b,"/history/").concat(t),method:"delete"})}function C(t){return(0,f.Ay)({url:"".concat(b,"/feedback"),method:"post",data:t})}var A=s(44146),S=function(){var t,a,s,e,i,n,r,o,l,c,d,u,m,h,p,v,y,f,b,g,_,k,C=this,A=C._self._c;return A("div",{staticClass:"fast-analysis-report",class:{"theme-dark":C.isDarkTheme}},[C.loading?A("div",{staticClass:"loading-container"},[A("div",{staticClass:"loading-content-pro"},[A("div",{staticClass:"loading-header"},[A("a-icon",{staticClass:"loading-icon-pro",attrs:{type:"thunderbolt"}}),A("span",{staticClass:"loading-title"},[C._v(C._s(C.$t("fastAnalysis.analyzing")))])],1),A("div",{staticClass:"progress-wrapper"},[A("a-progress",{attrs:{percent:C.progressPercent,showInfo:!1,strokeColor:"#1890ff",strokeWidth:8}}),A("span",{staticClass:"progress-text"},[C._v(C._s(C.formatProgress(C.progressPercent))+"%")])],1),A("div",{staticClass:"current-step"},[A("a-icon",{attrs:{type:"loading",spin:""}}),A("span",[C._v(C._s(C.currentStepText))])],1),A("div",{staticClass:"steps-list"},[A("div",{staticClass:"step-item",class:{done:C.step>1,active:1===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step1")||"获取实时数据"))]),C.step>1?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>2,active:2===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step2")||"计算技术指标"))]),C.step>2?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>3,active:3===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step3")||"AI深度分析"))]),C.step>3?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>4,active:4===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step4")||"生成报告"))]),C.step>4?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1)]),A("div",{staticClass:"loading-footer"},[A("span",{staticClass:"elapsed-time"},[C._v(C._s(C.elapsedTimeText))])])])]):C.error?A("div",{staticClass:"error-container"},[A("a-result",{attrs:{status:"warning"===C.errorTone?"warning":"error",title:C.errorTitle,"sub-title":C.error},scopedSlots:C._u([{key:"extra",fn:function(){return[A("a-button",{attrs:{type:"primary"},on:{click:function(t){return C.$emit("retry")}}},[C._v(" "+C._s(C.$t("fastAnalysis.retry"))+" ")])]},proxy:!0}])})],1):C.result?A("div",{staticClass:"result-container"},[A("div",{staticClass:"decision-card",class:C.decisionClass},[A("div",{staticClass:"decision-main"},[A("div",{staticClass:"decision-badge"},[A("a-icon",{attrs:{type:C.decisionIcon}}),A("span",{staticClass:"decision-text"},[C._v(C._s(C.result.decision))])],1),A("div",{staticClass:"confidence-ring"},[A("a-progress",{attrs:{type:"circle",percent:C.result.confidence,width:80,strokeColor:C.confidenceColor},scopedSlots:C._u([{key:"format",fn:function(t){return[A("span",{staticClass:"confidence-value"},[C._v(C._s(t)+"%")])]}}])}),A("div",{staticClass:"confidence-label"},[C._v(C._s(C.$t("fastAnalysis.confidence")))])],1)]),A("div",{staticClass:"decision-summary"},[C._v(" "+C._s(C.result.summary)+" ")]),C.consensusBlock?A("div",{staticClass:"consensus-strip"},[A("div",{staticClass:"consensus-strip-title"},[A("a-icon",{attrs:{type:"cluster"}}),C._v(" "+C._s(C.$t("fastAnalysis.consensusTitle"))+" ")],1),A("div",{staticClass:"consensus-strip-metrics"},[A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusDecision")))]),C._v(" "+C._s(C.consensusBlock.consensus_decision)+" ")]),A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusScore")))]),C._v(" "+C._s(C.formatConsensusNum(C.consensusBlock.consensus_score))+" ")]),null!=C.consensusBlock.agreement_ratio?A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusAgreement")))]),C._v(" "+C._s(C.formatAgreementPct(C.consensusBlock.agreement_ratio))+" ")]):C._e()])]):C._e()]),A("div",{staticClass:"price-info-row",class:{"hold-mode":C.isHoldDecision}},[A("div",{staticClass:"price-card current"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.currentPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(null===(t=C.result.market_data)||void 0===t?void 0:t.current_price)))]),A("div",{staticClass:"price-change",class:(null===(a=C.result.market_data)||void 0===a?void 0:a.change_24h)>=0?"positive":"negative"},[C._v(" "+C._s((null===(s=C.result.market_data)||void 0===s?void 0:s.change_24h)>=0?"+":"")+C._s(C.formatNumber(null===(e=C.result.market_data)||void 0===e?void 0:e.change_24h,2))+"% ")])]),C.isHoldDecision?C._e():[A("div",{staticClass:"price-card entry"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.entryPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.entry_price)))])]),A("div",{staticClass:"price-card stop"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.stopLoss")))]),A("div",{staticClass:"price-value negative"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.stop_loss)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.stopLossHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)]),A("div",{staticClass:"price-card target"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.takeProfit")))]),A("div",{staticClass:"price-value positive"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.take_profit)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.takeProfitHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)])]],2),C.trendOutlookBlocks.length||C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-card"},[A("div",{staticClass:"trend-outlook-header"},[A("a-icon",{attrs:{type:"calendar"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.trendOutlookTitle")))])],1),C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-summary"},[C._v(" "+C._s(C.trendOutlookSummaryText)+" ")]):C._e(),C.trendOutlookBlocks.length?A("div",{staticClass:"trend-outlook-grid"},C._l(C.trendOutlookBlocks,function(t){return A("div",{key:t.key,staticClass:"trend-outlook-item"},[A("div",{staticClass:"to-label"},[C._v(C._s(t.label))]),A("div",{staticClass:"to-trend",class:C.outlookTrendClass(t.trend)},[C._v(" "+C._s(C.formatOutlookTrend(t.trend))+" ")]),A("div",{staticClass:"to-meta"},[A("span",{staticClass:"to-score"},[C._v(C._s(null!=t.score?t.score:"--"))]),A("span",{staticClass:"to-str"},[C._v(C._s(t.strength||"--"))])])])}),0):C._e()]):C._e(),A("div",{staticClass:"scores-row"},[A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technical")))])],1),A("a-progress",{attrs:{percent:(null===(i=C.result.scores)||void 0===i?void 0:i.technical)||50,strokeColor:C.getScoreColor(null===(n=C.result.scores)||void 0===n?void 0:n.technical),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(r=C.result.scores)||void 0===r?void 0:r.technical)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamental")))])],1),A("a-progress",{attrs:{percent:(null===(o=C.result.scores)||void 0===o?void 0:o.fundamental)||50,strokeColor:C.getScoreColor(null===(l=C.result.scores)||void 0===l?void 0:l.fundamental),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(c=C.result.scores)||void 0===c?void 0:c.fundamental)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentiment")))])],1),A("a-progress",{attrs:{percent:(null===(d=C.result.scores)||void 0===d?void 0:d.sentiment)||50,strokeColor:C.getScoreColor(null===(u=C.result.scores)||void 0===u?void 0:u.sentiment),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(m=C.result.scores)||void 0===m?void 0:m.sentiment)||50))])],1),A("div",{staticClass:"score-item overall"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"dashboard"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.overall")))])],1),A("a-progress",{attrs:{percent:(null===(h=C.result.scores)||void 0===h?void 0:h.overall)||50,strokeColor:C.getScoreColor(null===(p=C.result.scores)||void 0===p?void 0:p.overall),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(v=C.result.scores)||void 0===v?void 0:v.overall)||50))])],1)]),C.result.detailed_analysis?A("div",{staticClass:"detailed-analysis"},[C.result.detailed_analysis.technical?A("div",{staticClass:"analysis-card technical"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technicalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(y=C.result.scores)||void 0===y?void 0:y.technical)}},[C._v(" "+C._s((null===(f=C.result.scores)||void 0===f?void 0:f.technical)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.technical)+" ")])]):C._e(),C.result.detailed_analysis.fundamental?A("div",{staticClass:"analysis-card fundamental"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamentalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(b=C.result.scores)||void 0===b?void 0:b.fundamental)}},[C._v(" "+C._s((null===(g=C.result.scores)||void 0===g?void 0:g.fundamental)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.fundamental)+" ")])]):C._e(),C.result.detailed_analysis.sentiment?A("div",{staticClass:"analysis-card sentiment"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentimentAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(_=C.result.scores)||void 0===_?void 0:_.sentiment)}},[C._v(" "+C._s((null===(k=C.result.scores)||void 0===k?void 0:k.sentiment)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.sentiment)+" ")])]):C._e()]):C._e(),A("div",{staticClass:"analysis-details"},[A("div",{staticClass:"detail-section reasons"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"bulb",theme:"twoTone",twoToneColor:"#52c41a"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.keyReasons")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.reasons,function(t,a){return A("li",{key:"r-"+a},[C._v(" "+C._s(t)+" ")])}),0)]),A("div",{staticClass:"detail-section risks"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"warning",theme:"twoTone",twoToneColor:"#faad14"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.risks")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.risks,function(t,a){return A("li",{key:"k-"+a},[C._v(" "+C._s(t)+" ")])}),0)])]),C.result.indicators&&Object.keys(C.result.indicators).length>0?A("div",{staticClass:"indicators-section"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"stock"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicators")))]),A("a-tag",{staticClass:"indicators-pro-badge",attrs:{color:"blue"}},[C._v(C._s(C.$t("fastAnalysis.indicatorsProBadge")))])],1),A("div",{staticClass:"indicators-methodology"},[A("a-icon",{attrs:{type:"experiment"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicatorsProSubtitle")))])],1),A("div",{staticClass:"indicators-grid"},[C.result.indicators.rsi?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("RSI (14)")]),A("div",{staticClass:"indicator-value",class:C.getRsiClass(C.result.indicators.rsi.value)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.rsi.value,1))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.rsi.signal)))])]):C._e(),C.result.indicators.macd?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("MACD (12,26,9)")]),A("div",{staticClass:"indicator-value",class:"bullish"===C.result.indicators.macd.signal?"bullish":"bearish"===C.result.indicators.macd.signal?"bearish":""},[C._v(" "+C._s(C.translateTrend(C.result.indicators.macd.trend))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.macd.signal)))])]):C._e(),C.result.indicators.moving_averages?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.maTrend")))]),A("div",{staticClass:"indicator-value",class:C.getMaTrendClass(C.result.indicators.moving_averages.trend)},[C._v(" "+C._s(C.translateTrend(C.result.indicators.moving_averages.trend))+" ")])]):C._e(),C.result.indicators.volatility&&null!=C.result.indicators.volatility.atr?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("ATR (14)")]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" $"+C._s(C.formatPrice(C.result.indicators.volatility.atr))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.atrTrueRange")))])]):C._e(),C.result.indicators.bollinger&&null!=C.result.indicators.bollinger.BB_width?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.bbWidth")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.bollinger.BB_width,2))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.bbWidthHint")))])]):C._e(),null!=C.result.indicators.price_position?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.rangePct20")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.price_position,1))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.rangePct20Hint")))])]):C._e(),null!=C.result.indicators.volume_ratio?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volumeRatio")))]),A("div",{staticClass:"indicator-value",class:C.volumeRatioClass(C.result.indicators.volume_ratio)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.volume_ratio,2))+"× ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.volumeRatioHint")))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.support")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.support)))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.resistance")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.resistance)))])]):C._e(),C.result.indicators.volatility?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volatility")))]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" "+C._s(C.translateVolatility(C.result.indicators.volatility.level))+" ("+C._s(C.result.indicators.volatility.pct)+"%) ")])]):C._e()]),C.professionalIndicatorRows.length?A("div",{staticClass:"indicators-pro-wrap"},[A("div",{staticClass:"indicators-pro-title"},[A("a-icon",{attrs:{type:"deployment-unit"}}),C._v(" "+C._s(C.$i18n&&"zh-CN"===C.$i18n.locale?"量化参数明细":"Quant Parameters")+" ")],1),A("a-descriptions",{staticClass:"indicators-pro-desc",attrs:{bordered:"",size:"small",column:2}},C._l(C.professionalIndicatorRows,function(t){return A("a-descriptions-item",{key:t.key,attrs:{label:t.label}},[A("span",{class:t.valueClass},[C._v(C._s(t.text))])])}),1)],1):C._e()]):C._e(),A("div",{staticClass:"feedback-section"},[A("div",{staticClass:"feedback-question"},[C._v(C._s(C.$t("fastAnalysis.wasHelpful")))]),A("div",{staticClass:"feedback-buttons"},[A("a-button",{attrs:{type:"helpful"===C.userFeedback?"primary":"default",size:"small",loading:"helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("helpful")}}},[A("a-icon",{attrs:{type:"like"}}),C._v(" "+C._s(C.$t("fastAnalysis.helpful"))+" ")],1),A("a-button",{attrs:{type:"not_helpful"===C.userFeedback?"danger":"default",size:"small",loading:"not_helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("not_helpful")}}},[A("a-icon",{attrs:{type:"dislike"}}),C._v(" "+C._s(C.$t("fastAnalysis.notHelpful"))+" ")],1)],1),A("div",{staticClass:"analysis-meta"},[A("span",[C._v(C._s(C.$t("fastAnalysis.analysisTime"))+": "+C._s(C.result.analysis_time_ms)+"ms")]),C.result.memory_id?A("span",[C._v("ID: #"+C._s(C.result.memory_id))]):C._e()])])]):A("div",{staticClass:"empty-container"},[A("div",{staticClass:"empty-content"},[A("a-icon",{staticClass:"empty-icon",attrs:{type:"radar-chart"}}),A("div",{staticClass:"empty-title"},[C._v(C._s(C.$t("fastAnalysis.selectSymbol")))]),A("div",{staticClass:"empty-hint"},[C._v(C._s(C.$t("fastAnalysis.selectHint")))])],1)])])},w=[],$={name:"FastAnalysisReport",props:{result:{type:Object,default:null},loading:{type:Boolean,default:!1},error:{type:String,default:null},errorTone:{type:String,default:"error",validator:function(t){return["error","warning","info"].includes(t)}}},data:function(){return{userFeedback:null,feedbackLoading:null,progress:0,elapsedSeconds:0,mainTimer:null}},computed:(0,m.A)((0,m.A)({},(0,h.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},progressPercent:function(){return Math.round(10*this.progress)/10},step:function(){return this.progress<25?1:this.progress<50?2:this.progress<75?3:4},currentStepText:function(){var t={1:this.$t("fastAnalysis.step1")||"获取实时数据",2:this.$t("fastAnalysis.step2")||"计算技术指标",3:this.$t("fastAnalysis.step3")||"AI深度分析",4:this.$t("fastAnalysis.step4")||"生成报告"};return t[this.step]||this.$t("fastAnalysis.preparing")||"准备中..."},elapsedTimeText:function(){if(this.elapsedSeconds<60)return"".concat(this.elapsedSeconds,"s");var t=Math.floor(this.elapsedSeconds/60),a=this.elapsedSeconds%60;return"".concat(t,"m ").concat(a,"s")},isHoldDecision:function(){return this.result&&"HOLD"===this.result.decision},decisionClass:function(){if(!this.result)return"";var t=this.result.decision;return"BUY"===t?"decision-buy":"SELL"===t?"decision-sell":"decision-hold"},decisionIcon:function(){if(!this.result)return"question";var t=this.result.decision;return"BUY"===t?"arrow-up":"SELL"===t?"arrow-down":"pause"},confidenceColor:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.confidence)||50;return a>=70?"#52c41a":a>=50?"#1890ff":"#faad14"},consensusBlock:function(){var t,a=null===(t=this.result)||void 0===t?void 0:t.consensus;return a&&"object"===(0,n.A)(a)?null==a.consensus_decision&&null==a.consensus_score?null:a:null},tradingPlan:function(){var t,a,s,e,i,n,r=(null===(t=this.result)||void 0===t?void 0:t.trading_plan)||{},o=null!==(a=r.entry_price)&&void 0!==a?a:r.entryPrice,l=null!==(s=null!==(e=r.stop_loss)&&void 0!==e?e:r.stopLoss)&&void 0!==s?s:r.loss_exit_price,c=null!==(i=null!==(n=r.take_profit)&&void 0!==n?n:r.takeProfit)&&void 0!==i?i:r.profit_target_price;return{entry_price:o,stop_loss:l,take_profit:c}},trendOutlookRaw:function(){var t,a;return(null===(t=this.result)||void 0===t?void 0:t.trend_outlook)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlook)||null},trendOutlookSummaryText:function(){var t,a,s=(null===(t=this.result)||void 0===t?void 0:t.trend_outlook_summary)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlookSummary);return s&&String(s).trim()?String(s).trim():""},trendOutlookBlocks:function(){var t=this,a=this.trendOutlookRaw;if(!a||"object"!==(0,n.A)(a))return[];var s=[{key:"next_24h",labelKey:"fastAnalysis.outlook24h"},{key:"next_3d",labelKey:"fastAnalysis.outlook3d"},{key:"next_1w",labelKey:"fastAnalysis.outlook1w"},{key:"next_1m",labelKey:"fastAnalysis.outlook1m"}];return s.map(function(s){var e=s.key,i=s.labelKey,n=a[e]||{};return{key:e,label:t.$t(i),trend:n.trend,score:n.score,strength:n.strength}}).filter(function(t){var s=a[t.key];return s&&"object"===(0,n.A)(s)&&(null!=s.trend||null!=s.score)})},stopLossHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.stopLossHintShort"):this.$t("fastAnalysis.stopLossHint")},takeProfitHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.takeProfitHintShort"):this.$t("fastAnalysis.takeProfitHint")},professionalIndicatorRows:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.indicators)||{},s=[],e=function(t,a,e){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";void 0!==e&&null!==e&&""!==e&&s.push({key:t,label:a,text:String(e),valueClass:i})},i=a.macd||{};if(null!=i.value&&e("macd_dif",this.$t("fastAnalysis.macdDif"),this.formatCompactNum(i.value)),null!=i.signal_line&&e("macd_dea",this.$t("fastAnalysis.macdDea"),this.formatCompactNum(i.signal_line)),null!=i.histogram){var n=Number(i.histogram),r=n>0?"bullish":n<0?"bearish":"";e("macd_hist",this.$t("fastAnalysis.macdHist"),this.formatCompactNum(i.histogram),r)}var o=a.moving_averages||{};null!=o.ma5&&e("ma5",this.$t("fastAnalysis.ma5Label"),"$"+this.formatPrice(o.ma5)),null!=o.ma10&&e("ma10",this.$t("fastAnalysis.ma10Label"),"$"+this.formatPrice(o.ma10)),null!=o.ma20&&e("ma20",this.$t("fastAnalysis.ma20Label"),"$"+this.formatPrice(o.ma20));var l=a.bollinger||{};null!=l.BB_upper&&e("bb_u",this.$t("fastAnalysis.bbUpper"),"$"+this.formatPrice(l.BB_upper)),null!=l.BB_middle&&e("bb_m",this.$t("fastAnalysis.bbMiddle"),"$"+this.formatPrice(l.BB_middle)),null!=l.BB_lower&&e("bb_l",this.$t("fastAnalysis.bbLower"),"$"+this.formatPrice(l.BB_lower)),null!=l.BB_width&&e("bb_w",this.$t("fastAnalysis.bbWidthPct"),this.formatNumber(l.BB_width,2)+"%");var c=a.levels||{};null!=c.pivot&&e("piv",this.$t("fastAnalysis.pivotStd"),"$"+this.formatPrice(c.pivot)),null!=c.s1&&e("s1",this.$t("fastAnalysis.levelS1"),"$"+this.formatPrice(c.s1)),null!=c.r1&&e("r1",this.$t("fastAnalysis.levelR1"),"$"+this.formatPrice(c.r1)),null!=c.s2&&e("s2",this.$t("fastAnalysis.levelS2"),"$"+this.formatPrice(c.s2)),null!=c.r2&&e("r2",this.$t("fastAnalysis.levelR2"),"$"+this.formatPrice(c.r2)),null!=c.swing_high&&e("sw_h",this.$t("fastAnalysis.swingHigh20"),"$"+this.formatPrice(c.swing_high)),null!=c.swing_low&&e("sw_l",this.$t("fastAnalysis.swingLow20"),"$"+this.formatPrice(c.swing_low));var d=a.volatility||{};if(null!=d.atr){var u=null!=d.pct?this.formatNumber(d.pct,2)+"% ATR/Price":"";e("atr14",this.$t("fastAnalysis.atr14Label"),"$"+this.formatPrice(d.atr)+(u?" · "+u:""))}var m=a.trading_levels||{};return null!=m.risk_reward_ratio&&Number(m.risk_reward_ratio)>0&&e("rr",this.$t("fastAnalysis.rrLongRef"),"1 : "+this.formatNumber(m.risk_reward_ratio,2)),null!=a.current_price&&e("cref",this.$t("fastAnalysis.refClose"),"$"+this.formatPrice(a.current_price)),s},insufficientCreditsError:function(){if(!this.error)return!1;var t=String(this.error);return t.includes("积分不足")||t.toLowerCase().includes("insufficient credits")},errorTitle:function(){return"warning"===this.errorTone?this.$t("fastAnalysis.analysisInProgressTitle"):this.insufficientCreditsError?this.$t("fastAnalysis.insufficientCredits"):this.$t("fastAnalysis.error")}}),watch:{result:function(){this.userFeedback=null},loading:{handler:function(t){t?this.startProgressTimer():this.stopProgressTimer()},immediate:!0}},mounted:function(){this.loading&&this.startProgressTimer()},beforeDestroy:function(){this.stopProgressTimer()},methods:{formatPrice:function(t){if(void 0===t||null===t)return"--";var a=parseFloat(t);return isNaN(a)?"--":a<1?a.toFixed(6):a<100?a.toFixed(4):a<1e4?a.toFixed(2):a.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatNumber:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(void 0===t||null===t)return"--";var s=parseFloat(t);return isNaN(s)?"--":s.toFixed(a)},formatConsensusNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?"--":a.toFixed(1)},formatAgreementPct:function(t){var a=Number(t);return Number.isNaN(a)?"--":"".concat(Math.round(100*a),"%")},formatProgress:function(t){var a=parseFloat(t)||0;return a%1===0?a.toFixed(0):a.toFixed(1)},formatOutlookTrend:function(t){var a=String(t||"HOLD").toUpperCase();return"BUY"===a?this.$t("fastAnalysis.outlookBull"):"SELL"===a?this.$t("fastAnalysis.outlookBear"):this.$t("fastAnalysis.outlookNeutral")},outlookTrendClass:function(t){var a=String(t||"").toUpperCase();return"BUY"===a?"trend-bull":"SELL"===a?"trend-bear":"trend-neutral"},formatCompactNum:function(t){var a=parseFloat(t);return Number.isNaN(a)?"--":0!==a&&Math.abs(a)<1e-4?a.toExponential(2):Math.abs(a)<1?a.toFixed(6):Math.abs(a)<100?a.toFixed(4):a.toFixed(2)},volumeRatioClass:function(t){var a=parseFloat(t);return Number.isNaN(a)?"":a>=1.5?"bullish":a<=.65?"bearish":""},getScoreColor:function(t){return t>=70?"#52c41a":t>=50?"#1890ff":t>=30?"#faad14":"#ff4d4f"},getScoreTagColor:function(t){return t>=70?"green":t>=50?"blue":t>=30?"orange":"red"},getRsiClass:function(t){return t<30?"oversold":t>70?"overbought":""},getMaTrendClass:function(t){return t?t.includes("uptrend")||t.includes("strong_uptrend")?"bullish":t.includes("downtrend")||t.includes("strong_downtrend")?"bearish":"":""},getVolatilityClass:function(t){return"high"===t?"high-volatility":"low"===t?"low-volatility":""},translateSignal:function(t){if(!t)return"--";var a="fastAnalysis.signal.".concat(t),s=this.$t(a);return s===a?t:s},translateTrend:function(t){if(!t)return"--";var a="fastAnalysis.trend.".concat(t),s=this.$t(a);return s===a?t:s},translateVolatility:function(t){if(!t)return"--";var a="fastAnalysis.volatilityLevel.".concat(t),s=this.$t(a);return s===a?t:s},submitFeedback:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(null!==(e=a.result)&&void 0!==e&&e.memory_id){s.n=1;break}return a.$message.warning(a.$t("fastAnalysis.feedbackUnavailable")||"反馈功能暂不可用,请刷新后重试"),s.a(2);case 1:return a.feedbackLoading=t,s.p=2,s.n=3,C({memory_id:a.result.memory_id,feedback:t});case 3:a.userFeedback=t,a.$message.success(a.$t("fastAnalysis.feedbackThanks")),s.n=5;break;case 4:s.p=4,s.v,a.$message.error(a.$t("fastAnalysis.feedbackFailed"));case 5:return s.p=5,a.feedbackLoading=null,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},startProgressTimer:function(){var t=this;this.stopProgressTimer(),this.progress=0,this.elapsedSeconds=0;var a=Date.now();this.mainTimer=window.setInterval(function(){t.elapsedSeconds=Math.floor((Date.now()-a)/1e3),t.progress<75?t.progress=Math.min(t.progress+1,75):t.progress<90?t.progress=Math.min(t.progress+.5,90):t.progress<95&&(t.progress=Math.min(t.progress+.2,95))},100)},stopProgressTimer:function(){this.mainTimer&&(window.clearInterval(this.mainTimer),this.mainTimer=null),this.progress=0,this.elapsedSeconds=0}}},T=$,x=s(845),M=(0,x.A)(T,S,w,!1,null,"03feb1fa",null),P=M.exports,F={name:"Analysis",props:{embedded:{type:Boolean,default:!1},presetSymbol:{type:String,default:""},autoAnalyzeSignal:{type:Number,default:0}},components:{FastAnalysisReport:P},data:function(){return{loadingMarket:!1,heatmapType:"crypto",marketData:{fearGreed:null,vix:null,dxy:null,indices:[],heatmap:{crypto:[],commodities:[],sectors:[],forex:[]},calendar:[]},loadingSentiment:!1,loadingIndices:!1,loadingHeatmap:!1,loadingCalendar:!1,watchlistPriceTimer:null,watchlistPrices:{},localUserInfo:{},loadingUserInfo:!1,userId:1,watchlist:[],loadingWatchlist:!1,showAddStockModal:!1,addingStock:!1,selectedSymbol:void 0,analyzing:!1,analysisResult:null,analysisError:null,analysisErrorTone:"error",showHistoryModal:!1,historyList:[],historyLoading:!1,historyPage:1,historyPageSize:20,historyTotal:0,currentTaskId:null,taskPollingTimer:null,taskPollingStartedAt:0,marketTypes:[],selectedMarketTab:"",symbolSearchKeyword:"",symbolSearchResults:[],searchingSymbols:!1,hotSymbols:[],loadingHotSymbols:!1,selectedSymbolForAdd:null,searchTimer:null,hasSearched:!1,positions:[],monitors:[],positionSummaryMap:{},showPositionModal:!1,showMonitorModal:!1,targetStockForOps:null,positionForm:{side:"long",quantity:null,entryPrice:null},monitorForm:{interval_min:240,notify_channels:[]},batchMode:!1,batchSelectedKeys:[],batchRunning:!1,batchProgress:0,showBatchScheduleModal:!1,batchScheduleForm:{interval_min:240,notify_channels:[]},showTaskDrawer:!1,showEditTaskModal:!1,editTaskLoading:!1,editTaskId:null,editTaskForm:{name:"",interval_min:240,notify_channels:[]}}},computed:(0,m.A)((0,m.A)((0,m.A)({},(0,h.L8)(["userInfo"])),(0,h.aH)({navTheme:function(t){return t.app.theme},primaryColor:function(t){return t.app.color||"#1890ff"}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isZhLocale:function(){return"zh-CN"===this.$i18n.locale},currentHeatmap:function(){return this.marketData.heatmap[this.heatmapType]||[]},storeUserInfo:function(){return this.userInfo||{}},mergedUserInfo:function(){return this.localUserInfo&&this.localUserInfo.email?this.localUserInfo:this.storeUserInfo},watchlistTotalPnl:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(Number(a.pnl)||0)},0)},watchlistPositionCount:function(){return Object.values(this.positionSummaryMap).filter(function(t){return t.quantity>0}).length},watchlistTaskCount:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(a.monitorCount||0)},0)},batchSelectedAll:function(){return this.watchlist&&this.watchlist.length>0&&this.batchSelectedKeys.length===this.watchlist.length},batchIndeterminate:function(){return this.batchSelectedKeys.length>0&&this.batchSelectedKeys.length<(this.watchlist||[]).length}}),created:function(){this.loadUserInfo(),this.loadMarketTypes(),this.loadWatchlist(),this.loadPositionData(),this.loadMarketData()},mounted:function(){this.startWatchlistPriceRefresh()},beforeDestroy:function(){this.watchlistPriceTimer&&clearInterval(this.watchlistPriceTimer),this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null)},methods:{stopTaskPolling:function(){this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null),this.currentTaskId=null,this.taskPollingStartedAt=0},pollTaskResult:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.currentTaskId){a.n=1;break}return a.a(2);case 1:return a.p=1,a.n=2,_({page:1,pagesize:50});case 2:if(s=a.v,s&&1===s.code&&s.data){a.n=3;break}return a.a(2);case 3:if(e=s.data.list||[],i=e.find(function(a){return Number(a.id)===Number(t.currentTaskId)}),i){a.n=4;break}return a.a(2);case 4:if(n=String(i.status||"").toLowerCase(),"completed"!==n){a.n=8;break}if(!i.full_result){a.n=5;break}t.analysisResult=i.full_result,a.n=6;break;case 5:return a.n=6,t.viewHistoryResult(i);case 6:return t.$message.success(t.$t("dashboard.analysis.message.analysisComplete")),a.n=7,t.refreshUserInfoFromServer();case 7:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 8:if("failed"!==n){a.n=10;break}return t.analysisError=i.error_message||t.$t("dashboard.analysis.message.analysisFailed"),t.analysisErrorTone="error",t.$message.error(t.analysisError),a.n=9,t.refreshUserInfoFromServer();case 9:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 10:Date.now()-t.taskPollingStartedAt>18e4&&(t.$message.warning(t.$t("fastAnalysis.analysisStillProcessing")||"任务仍在处理中,请稍后在历史记录查看"),t.analyzing=!1,t.stopTaskPolling());case 11:a.n=13;break;case 12:a.p=12,a.v;case 13:return a.a(2)}},a,null,[[1,12]])}))()},startTaskPolling:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:return a.stopTaskPolling(),a.currentTaskId=Number(t),a.taskPollingStartedAt=Date.now(),s.n=1,a.pollTaskResult();case 1:a.taskPollingTimer=setInterval(function(){a.pollTaskResult()},2500);case 2:return s.a(2)}},s)}))()},filterSymbolOption:function(t,a){var s,e=(null===(s=a.componentOptions)||void 0===s||null===(s=s.propsData)||void 0===s?void 0:s.value)||"";return"__add_stock_option__"===e||e.toLowerCase().includes(t.toLowerCase())},handleSymbolChange:function(t){var a=this;if("__add_stock_option__"===t)return this.showAddStockModal=!0,void this.$nextTick(function(){a.selectedSymbol=void 0});this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",t)},selectWatchlistItem:function(t){this.selectedSymbol="".concat(t.market,":").concat(t.symbol),this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",this.selectedSymbol)},hasMonitorForStock:function(t){if(!t)return!1;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!!(s&&s.monitorCount>0)},getMonitorMeta:function(t){if(!t)return null;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!s||s.monitorCount<=0?null:{activeCount:s.activeMonitorCount||0,nextRunAtText:s.nextRunAtText||""}},getPnlBarStyle:function(t){var a=Math.abs(Number((null===t||void 0===t?void 0:t.pnlPercent)||0)),s=Math.min(100,Math.max(4,a));return{width:"".concat(s,"%")}},_displayDateTimeLocaleOptions:function(){var t=String(this.storeUserInfo&&this.storeUserInfo.timezone||"").trim(),a={year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};if(!t)return a;try{return Intl.DateTimeFormat(void 0,{timeZone:t}).format(new Date),(0,m.A)((0,m.A)({},a),{},{timeZone:t})}catch(s){return a}},_parseInstantForDisplay:function(t){if(t=String(t||"").trim(),!t)return null;var a=/[zZ]$/.test(t)||/[+-]\d{2}:?\d{2}$/.test(t);if(!a){var s=t.replace(" ","T");t=s.endsWith("Z")?s:"".concat(s,"Z")}var e=new Date(t);return Number.isNaN(e.getTime())?null:e},_formatNextRunText:function(t){try{var a=this._parseInstantForDisplay(t);return a?a.toLocaleString(void 0,this._displayDateTimeLocaleOptions()):""}catch(s){return""}},buildPositionSummary:function(){var t=this,a={},s=Array.isArray(this.positions)?this.positions:[],e=Array.isArray(this.monitors)?this.monitors:[],i=new Set,n={};s.forEach(function(t){n[Number(t.id)]="".concat(t.market,":").concat(t.symbol)}),e.forEach(function(s){var e=Array.isArray(s.position_ids)?s.position_ids:[];e.forEach(function(t){return i.add(Number(t))});var r=!!s.is_active,o=s.next_run_at||"";e.forEach(function(s){var e=n[Number(s)];e&&(a[e]||(a[e]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[e].monitorCount+=1,r&&(a[e].activeMonitorCount+=1),!a[e].nextRunAtText&&o&&(a[e].nextRunAtText=t._formatNextRunText(o)))})}),s.forEach(function(t){var s="".concat(t.market,":").concat(t.symbol),e=Number(t.quantity||0),n=Number(t.entry_price||0);a[s]||(a[s]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[s].quantity+=e,a[s].weightedEntry+=e*n,a[s].pnl+=Number(t.pnl||0),a[s].marketValue+=Number(t.market_value||0),i.has(Number(t.id))&&(a[s].monitorCount+=1)}),Object.keys(a).forEach(function(t){var s=a[t];s.avgEntry=s.quantity>0?s.weightedEntry/s.quantity:0;var e=s.quantity>0?s.weightedEntry:0;s.pnlPercent=e>0?s.pnl/e*100:0}),this.positionSummaryMap=a},toggleStockMonitor:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r,o,l;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(e="".concat(t.market,":").concat(t.symbol),i=(a.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),0!==i.length){s.n=1;break}return s.a(2);case 1:if(n=(a.monitors||[]).filter(function(t){var a=Array.isArray(t.position_ids)?t.position_ids.map(function(t){return Number(t)}):[];return a.some(function(t){return i.includes(t)})}),0!==n.length){s.n=2;break}return s.a(2);case 2:return r=!n.some(function(t){return!!t.is_active}),s.p=3,s.n=4,Promise.all(n.map(function(t){return(0,y.sk)(t.id,{is_active:r})}));case 4:return a.$message.success(r?a.$t("aiAssetAnalysis.monitor.enabled")||"已启用任务":a.$t("aiAssetAnalysis.monitor.disabled")||"已暂停任务"),s.n=5,a.loadPositionData();case 5:s.n=7;break;case 6:s.p=6,l=s.v,a.$message.error((null===l||void 0===l||null===(o=l.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===l||void 0===l?void 0:l.message)||"Toggle monitor failed");case 7:return s.a(2)}},s,null,[[3,6]])}))()},loadPositionData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,Promise.all([(0,y.Dt)(),(0,y.w1)()]);case 1:s=a.v,e=(0,c.A)(s,2),i=e[0],n=e[1],t.positions=i&&1===i.code&&i.data||[],t.monitors=n&&1===n.code&&n.data||[],t.buildPositionSummary(),a.n=3;break;case 2:a.p=2,a.v,t.positions=[],t.monitors=[],t.positionSummaryMap={};case 3:return a.a(2)}},a,null,[[0,2]])}))()},openPositionModal:function(t){this.targetStockForOps=t;var a="".concat(t.market,":").concat(t.symbol),s=(this.positions||[]).find(function(t){return"".concat(t.market,":").concat(t.symbol)===a});if(s){var e=Number(s.quantity||0);this.positionForm={side:s.side||(e<0?"short":"long"),quantity:Math.abs(e)||null,entryPrice:Number(s.entry_price||0)||null}}else this.positionForm={side:"long",quantity:null,entryPrice:null};this.showPositionModal=!0},savePosition:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:if(e=Number(t.positionForm.quantity||0),i=Number(t.positionForm.entryPrice||0),e>0&&i>0){a.n=2;break}return t.$message.warning(t.$i18n&&"zh-CN"===t.$i18n.locale?"请输入有效的数量和买入单价":"Please enter valid quantity and entry price"),a.a(2);case 2:return a.p=2,a.n=3,(0,y.Ps)({market:s.market,symbol:s.symbol,name:s.name||s.symbol,side:t.positionForm.side||"long",quantity:e,entry_price:i});case 3:if(n=a.v,!n||1!==n.code){a.n=5;break}return t.$message.success(t.$t("portfolio.positions.add")+" OK"),t.showPositionModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===n||void 0===n?void 0:n.msg)||"Add position failed");case 6:a.n=8;break;case 7:a.p=7,o=a.v,t.$message.error((null===o||void 0===o||null===(r=o.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===o||void 0===o?void 0:o.message)||"Add position failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},openMonitorModal:function(t){this.targetStockForOps=t,this.monitorForm={interval_min:240,notify_channels:[]},this.showMonitorModal=!0},saveMonitorTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,c;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:return e="".concat(s.market,":").concat(s.symbol),i=t.monitorForm.interval_min,n=t.monitorForm.notify_channels||[],r=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(s.symbol,"-").concat(i,"m"),position_ids:r,monitor_type:"ai",config:{run_interval_minutes:i,symbol:s.symbol,market:s.market,language:t.$store.getters.lang||t.$i18n.locale||"en-US"},notification_config:{channels:n},is_active:!0});case 3:if(o=a.v,!o||1!==o.code){a.n=5;break}return t.$message.success(t.$t("aiAssetAnalysis.monitor.created")),t.showMonitorModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||"Create monitor failed");case 6:a.n=8;break;case 7:a.p=7,c=a.v,t.$message.error((null===c||void 0===c||null===(l=c.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.msg)||(null===c||void 0===c?void 0:c.message)||"Create monitor failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},toggleBatchMode:function(){this.batchMode=!this.batchMode,this.batchMode||(this.batchSelectedKeys=[])},onBatchSelectAll:function(t){t.target.checked?this.batchSelectedKeys=(this.watchlist||[]).map(function(t){return"".concat(t.market,":").concat(t.symbol)}):this.batchSelectedKeys=[]},onBatchItemToggle:function(t,a){var s="".concat(t.market,":").concat(t.symbol);a.target.checked?this.batchSelectedKeys.includes(s)||this.batchSelectedKeys.push(s):this.batchSelectedKeys=this.batchSelectedKeys.filter(function(t){return t!==s})},openBatchScheduleModal:function(){0!==this.batchSelectedKeys.length&&(this.batchScheduleForm={interval_min:240,notify_channels:[]},this.showBatchScheduleModal=!0)},saveBatchSchedule:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,u,m,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=(0,l.A)(t.batchSelectedKeys),0!==s.length){a.n=1;break}return a.a(2);case 1:t.batchRunning=!0,e=t.batchScheduleForm.interval_min,i=t.batchScheduleForm.notify_channels||[],n=0,u=(0,o.A)(s),a.p=2,h=(0,d.A)().m(function a(){var s,r,o,l,u,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=m.value,r=s.split(":"),o=(0,c.A)(r,2),l=o[0],u=o[1],h=(t.watchlist||[]).find(function(t){return t.market===l&&t.symbol===u}),h){a.n=1;break}return a.a(2,1);case 1:return p=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===s}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(u,"-").concat(e,"m"),position_ids:p,monitor_type:"ai",config:{run_interval_minutes:e,symbol:u,market:l,language:t.$store.getters.lang||t.$i18n.locale||"en-US"},notification_config:{channels:i},is_active:!0});case 3:n++,a.n=5;break;case 4:a.p=4,a.v;case 5:return a.a(2)}},a,null,[[2,4]])}),u.s();case 3:if((m=u.n()).done){a.n=6;break}return a.d((0,r.A)(h()),4);case 4:if(!a.v){a.n=5;break}return a.a(3,5);case 5:a.n=3;break;case 6:a.n=8;break;case 7:a.p=7,p=a.v,u.e(p);case 8:return a.p=8,u.f(),a.f(8);case 9:return t.batchRunning=!1,t.showBatchScheduleModal=!1,t.batchMode=!1,t.batchSelectedKeys=[],a.n=10,t.loadPositionData();case 10:t.$message.success(t.$t("aiAssetAnalysis.batch.done")+" (".concat(n,"/").concat(s.length,")"));case 11:return a.a(2)}},a,null,[[2,7,8,9]])}))()},formatIntervalText:function(t){return t>=1440?"".concat(Math.round(t/1440),"d"):t>=60?"".concat(Math.round(t/60),"h"):"".concat(t,"m")},handleToggleTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.sk)(t.id,{is_active:!t.is_active});case 1:return a.$message.success(t.is_active?a.$t("aiAssetAnalysis.tasks.paused"):a.$t("aiAssetAnalysis.tasks.resumed")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},handleEditTask:function(t){this.editTaskId=t.id,this.editTaskForm={name:t.name||"",interval_min:t.config&&t.config.run_interval_minutes||240,notify_channels:t.notification_config&&t.notification_config.channels||[]},this.showEditTaskModal=!0},saveEditTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.editTaskId){a.n=1;break}return a.a(2);case 1:return t.editTaskLoading=!0,a.p=2,a.n=3,(0,y.sk)(t.editTaskId,{name:t.editTaskForm.name,config:{run_interval_minutes:t.editTaskForm.interval_min},notification_config:{channels:t.editTaskForm.notify_channels}});case 3:return t.$message.success("OK"),t.showEditTaskModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:a.p=5,e=a.v,t.$message.error((null===e||void 0===e||null===(s=e.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.msg)||(null===e||void 0===e?void 0:e.message)||"Failed");case 6:return a.p=6,t.editTaskLoading=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},handleDeleteTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.ei)(t.id);case 1:return a.$message.success(a.$t("aiAssetAnalysis.tasks.deleted")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},loadMarketData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){return(0,d.A)().w(function(a){while(1)switch(a.n){case 0:t.loadingMarket=!0,t.loadSentimentData(),t.loadIndicesData(),t.loadHeatmapData(),t.loadCalendarData();case 1:return a.a(2)}},a)}))()},loadSentimentData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingSentiment=!0,a.p=1,a.n=2,(0,A.EF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.fearGreed=(null===(e=s.data.fear_greed)||void 0===e?void 0:e.value)||null,t.marketData.vix=(null===(i=s.data.vix)||void 0===i?void 0:i.value)||null,t.marketData.dxy=(null===(n=s.data.dxy)||void 0===n?void 0:n.value)||null),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingSentiment=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadIndicesData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingIndices=!0,a.p=1,a.n=2,(0,A.yI)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.indices=s.data.indices||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingIndices=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadHeatmapData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingHeatmap=!0,a.p=1,a.n=2,(0,A.f$)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.heatmap={crypto:s.data.crypto||[],commodities:s.data.commodities||[],sectors:s.data.sectors||[],forex:s.data.forex||[]}),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingHeatmap=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadCalendarData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingCalendar=!0,a.p=1,a.n=2,(0,A.kF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&(t.marketData.calendar=s.data||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingCalendar=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},checkAllLoaded:function(){this.loadingSentiment||this.loadingIndices||this.loadingHeatmap||this.loadingCalendar||(this.loadingMarket=!1)},getFearGreedClass:function(t){return t?t<=25?"extreme-fear":t<=45?"fear":t<=55?"neutral":t<=75?"greed":"extreme-greed":""},getVixLevel:function(t){return t?t<15?"low":t<25?"medium":"high":""},formatNum:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t||isNaN(t)?"--":Number(t).toFixed(a)},getHeatmapStyle:function(t){var a=parseFloat(t)||0,s=Math.min(Math.abs(a)/5,1),e=this.isDarkTheme;if(a>=0){var i=e?a>2?"#fff":"#4ade80":a>2?"#fff":"#166534";return{background:"rgba(34, 197, 94, ".concat(.15+.6*s,")"),color:i}}var n=e?a<-2?"#fff":"#f87171":a<-2?"#fff":"#991b1b";return{background:"rgba(239, 68, 68, ".concat(.15+.6*s,")"),color:n}},getCountryFlag:function(t){var a={US:"🇺🇸",CN:"🇨🇳",EU:"🇪🇺",JP:"🇯🇵",UK:"🇬🇧",DE:"🇩🇪",AU:"🇦🇺",CA:"🇨🇦"};return a[t]||"🌍"},formatCalendarDate:function(t){if(!t)return"";try{var a=new Date(t),s=new Date,e=new Date(s);if(e.setDate(e.getDate()+1),a.toDateString()===s.toDateString())return this.isZhLocale?"今天":"Today";if(a.toDateString()===e.toDateString())return this.isZhLocale?"明天":"Tmrw";var i=a.getMonth()+1,n=a.getDate();return"".concat(i,"/").concat(n)}catch(r){return t}},formatPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1e3?t.toFixed(0):t.toFixed(2):"--"},formatHeatmapPrice:function(t){return t?t>=1e4?"$"+(t/1e3).toFixed(1)+"K":t>=1e3?"$"+t.toFixed(0):t>=1?"$"+t.toFixed(2):"$"+t.toFixed(4):""},getHeatmapName:function(t){return"sectors"===this.heatmapType||"commodities"===this.heatmapType||"forex"===this.heatmapType?this.isZhLocale?t.name_cn||t.name:t.name_en||t.name:t.name},getImpactClass:function(t){return t.actual_impact||t.expected_impact||"neutral"},getMarketColor:function(t){var a={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return a[t]||"default"},getCurrencySymbol:function(t){return"$"},formatCreditNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?String(t):Number.isInteger(a)?String(a):a.toFixed(2)},refreshUserInfoFromServer:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.ug)();case 1:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data)),a.n=3;break;case 2:a.p=2,a.v;case 3:return a.a(2)}},a,null,[[0,2]])}))()},startFastAnalysis:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,u,h,p,v,y,f,b,_,k,C;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(!t.analyzing){a.n=1;break}return a.a(2);case 1:if(t.selectedSymbol){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.message.selectSymbol")),a.a(2);case 2:return t.analyzing=!0,t.analysisError=null,t.analysisErrorTone="error",s=t.selectedSymbol.split(":"),e=(0,c.A)(s,2),i=e[0],n=e[1],r=t.$store.getters.lang||"zh-CN",o=!1,a.p=3,a.n=4,g({market:i,symbol:n,language:r,timeframe:"1D",async_submit:!0});case 4:if(l=a.v,!l||1!==l.code||!l.data){a.n=9;break}if("processing"!==l.data.status){a.n=6;break}return o=!0,u=l.data.remaining_credits,void 0!==u&&null!==u?t.$message.success(t.$t("fastAnalysis.analysisSubmittedWithCredits",{remaining:t.formatCreditNum(u)})):t.$message.success(t.$t("fastAnalysis.analysisSubmitted")||"任务已提交,正在分析中"),a.n=5,t.startTaskPolling(l.data.task_id);case 5:a.n=7;break;case 6:h=(0,m.A)({},l.data),delete h.credits_charged,delete h.remaining_credits,t.analysisResult=h,p=l.data.remaining_credits,void 0!==p&&null!==p?t.$message.success(t.$t("fastAnalysis.analysisCompleteWithCredits",{remaining:t.formatCreditNum(p)})):t.$message.success(t.$t("dashboard.analysis.message.analysisComplete"));case 7:return a.n=8,t.refreshUserInfoFromServer();case 8:a.n=10;break;case 9:throw new Error((null===l||void 0===l?void 0:l.msg)||"分析失败");case 10:a.n=12;break;case 11:a.p=11,C=a.v,f=null===C||void 0===C||null===(v=C.response)||void 0===v?void 0:v.status,b=(null===C||void 0===C||null===(y=C.response)||void 0===y?void 0:y.data)||{},_=b.msg,k=b.data,429===f&&k&&k.in_progress?(t.analysisErrorTone="warning",t.analysisError=t.$t("fastAnalysis.analysisInProgress"),t.$message.warning(t.analysisError)):400===f&&"Insufficient credits"===_?(t.analysisError=t.$t("fastAnalysis.insufficientCreditsDetail",{required:t.formatCreditNum(null===k||void 0===k?void 0:k.required),current:t.formatCreditNum(null===k||void 0===k?void 0:k.current),shortage:t.formatCreditNum(null===k||void 0===k?void 0:k.shortage)}),t.$message.error(t.analysisError)):(t.analysisError=_||(null===C||void 0===C?void 0:C.message)||t.$t("dashboard.analysis.message.analysisFailed"),t.$message.error(t.analysisError));case 12:return a.p=12,o||(t.analyzing=!1),a.f(12);case 13:return a.a(2)}},a,null,[[3,11,12,13]])}))()},loadHistoryList:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,_({page:t.historyPage,pagesize:t.historyPageSize});case 2:s=a.v,s&&1===s.code&&s.data&&(t.historyList=s.data.list||[],t.historyTotal=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("dashboard.analysis.message.loadHistoryFailed")||"加载历史记录失败");case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},viewHistoryResult:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r;return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:if("processing"!==(t.status||"").toLowerCase()){s.n=1;break}return a.$message.info(a.$t("fastAnalysis.analysisStillProcessing")||"该任务仍在处理中,请稍后刷新历史记录"),s.a(2);case 1:if(!t.full_result){s.n=2;break}return a.analysisResult=t.full_result,a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1,s.a(2);case 2:e=Number(t.price)||0,i=String(t.decision||"HOLD").toUpperCase(),n=null,r=null,e>0&&("SELL"===i?(n=1.05*e,r=.95*e):"BUY"===i&&(n=.95*e,r=1.05*e)),a.analysisResult={decision:t.decision,confidence:t.confidence,summary:t.summary,market_data:{current_price:t.price,change_24h:0},trading_plan:{entry_price:t.price,stop_loss:n,take_profit:r},scores:t.scores||{},reasons:t.reasons||[],risks:[],indicators:t.indicators||{},memory_id:t.id,analysis_time_ms:0},a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1;case 3:return s.a(2)}},s)}))()},deleteHistoryItem:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,k(t.id);case 1:e=s.v,e&&1===e.code?(a.$message.success(a.$t("dashboard.analysis.message.deleteSuccess")),a.loadHistoryList()):a.$message.error((null===e||void 0===e?void 0:e.msg)||a.$t("dashboard.analysis.message.deleteFailed")),s.n=3;break;case 2:s.p=2,s.v,a.$message.error(a.$t("dashboard.analysis.message.deleteFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},formatTime:function(t){if(!t)return"-";var a=new Date(1e3*t);return Number.isNaN(a.getTime())?"-":a.toLocaleString(void 0,this._displayDateTimeLocaleOptions())},formatIsoTime:function(t){var a=this._parseInstantForDisplay(t);return a?a.toLocaleString(void 0,this._displayDateTimeLocaleOptions()):"-"},getStatusColor:function(t){var a={pending:"orange",processing:"blue",completed:"green",failed:"red"};return a[t]||"default"},getStatusText:function(t){var a={pending:"dashboard.analysis.status.pending",processing:"dashboard.analysis.status.processing",completed:"dashboard.analysis.status.completed",failed:"dashboard.analysis.status.failed"},s=a[t];return s?this.$t(s):t},loadUserInfo:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.loadingUserInfo=!0,a.p=1,!t.storeUserInfo||!t.storeUserInfo.email){a.n=2;break}return t.localUserInfo=t.storeUserInfo,t.userId=t.storeUserInfo.id,t.loadingUserInfo=!1,t.loadWatchlist(),a.a(2);case 2:return a.n=3,(0,p.ug)();case 3:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data),t.loadWatchlist()),a.n=5;break;case 4:a.p=4,a.v;case 5:return a.p=5,t.loadingUserInfo=!1,a.f(5);case 6:return a.a(2)}},a,null,[[1,4,5,6]])}))()},loadWatchlist:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.userId){a.n=1;break}return a.a(2);case 1:return t.loadingWatchlist=!0,a.p=2,a.n=3,(0,v.Qo)({userid:t.userId});case 3:if(s=a.v,!s||1!==s.code||!s.data){a.n=4;break}return t.watchlist=s.data.map(function(t){return(0,m.A)((0,m.A)({},t),{},{price:0,change:0,changePercent:0})}),a.n=4,t.loadWatchlistPrices();case 4:a.n=6;break;case 5:a.p=5,a.v;case 6:return a.p=6,t.loadingWatchlist=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},loadWatchlistPrices:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.watchlist&&0!==t.watchlist.length){a.n=1;break}return a.a(2);case 1:return a.p=1,s=t.watchlist.map(function(t){return{market:t.market,symbol:t.symbol}}),a.n=2,(0,v.ms)({watchlist:s});case 2:e=a.v,e&&1===e.code&&e.data&&(i={},n={},e.data.forEach(function(t){i["".concat(t.market,"-").concat(t.symbol)]=t,n["".concat(t.market,":").concat(t.symbol)]={price:t.price||0,change:t.changePercent||0}}),t.watchlistPrices=n,t.watchlist=t.watchlist.map(function(t){var a="".concat(t.market,"-").concat(t.symbol),s=i[a];return s?(0,m.A)((0,m.A)({},t),{},{price:s.price||0,change:s.change||0,changePercent:s.changePercent||0}):t})),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},startWatchlistPriceRefresh:function(){var t=this;this.watchlistPriceTimer=setInterval(function(){t.watchlist&&t.watchlist.length>0&&t.loadWatchlistPrices()},3e4),this.watchlist&&this.watchlist.length>0&&this.loadWatchlistPrices()},handleAddStock:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s="",e="",i="",!t.selectedSymbolForAdd){a.n=1;break}s=t.selectedSymbolForAdd.market,e=t.selectedSymbolForAdd.symbol.toUpperCase(),i=t.selectedSymbolForAdd.name||"",a.n=4;break;case 1:if(!t.symbolSearchKeyword||!t.symbolSearchKeyword.trim()){a.n=3;break}if(t.selectedMarketTab){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:s=t.selectedMarketTab,e=t.symbolSearchKeyword.trim().toUpperCase(),i="",a.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),a.a(2);case 4:return t.addingStock=!0,a.p=5,a.n=6,(0,v.dp)({userid:t.userId,market:s,symbol:e,name:i});case 6:if(n=a.v,!n||1!==n.code){a.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),t.handleCloseAddStockModal(),a.n=7,t.loadWatchlist();case 7:a.n=9;break;case 8:t.$message.error((null===n||void 0===n?void 0:n.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:a.n=11;break;case 10:a.p=10,l=a.v,o=(null===l||void 0===l||null===(r=l.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===l||void 0===l?void 0:l.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(o);case 11:return a.p=11,t.addingStock=!1,a.f(11);case 12:return a.a(2)}},a,null,[[5,10,11,12]])}))()},handleCloseAddStockModal:function(){this.showAddStockModal=!1,this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.selectedMarketTab=this.marketTypes.length>0?this.marketTypes[0].value:""},handleMarketTabChange:function(t){this.selectedMarketTab=t,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.selectedSymbolForAdd=null,this.hasSearched=!1,this.loadHotSymbols(t)},handleSymbolSearchInput:function(t){var a=this,s=t.target.value;if(this.symbolSearchKeyword=s,this.searchTimer&&clearTimeout(this.searchTimer),!s||""===s.trim())return this.symbolSearchResults=[],this.hasSearched=!1,void(this.selectedSymbolForAdd=null);this.searchTimer=setTimeout(function(){a.searchSymbolsInModal(s)},500)},handleSearchOrInput:function(t){t&&t.trim()&&(this.selectedMarketTab?this.symbolSearchResults.length>0||(this.hasSearched&&0===this.symbolSearchResults.length?this.handleDirectAdd():this.searchSymbolsInModal(t)):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},searchSymbolsInModal:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t&&""!==t.trim()){s.n=1;break}return a.symbolSearchResults=[],a.hasSearched=!1,s.a(2);case 1:if(a.selectedMarketTab){s.n=2;break}return a.$message.warning(a.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),s.a(2);case 2:return a.searchingSymbols=!0,a.hasSearched=!0,s.p=3,s.n=4,(0,v._3)({market:a.selectedMarketTab,keyword:t.trim(),limit:20});case 4:e=s.v,e&&1===e.code&&e.data&&e.data.length>0?a.symbolSearchResults=e.data:(a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""}),s.n=6;break;case 5:s.p=5,s.v,a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""};case 6:return s.p=6,a.searchingSymbols=!1,s.f(6);case 7:return s.a(2)}},s,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.symbolSearchKeyword&&this.symbolSearchKeyword.trim()?this.selectedMarketTab?this.selectedSymbolForAdd={market:this.selectedMarketTab,symbol:this.symbolSearchKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},selectSymbol:function(t){this.selectedSymbolForAdd={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},loadHotSymbols:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t||(t=a.selectedMarketTab||(a.marketTypes.length>0?a.marketTypes[0].value:"")),t){s.n=1;break}return s.a(2);case 1:return a.loadingHotSymbols=!0,s.p=2,s.n=3,(0,v.z6)({market:t,limit:10});case 3:e=s.v,e&&1===e.code&&e.data?a.hotSymbols=e.data:a.hotSymbols=[],s.n=5;break;case 4:s.p=4,s.v,a.hotSymbols=[];case 5:return s.p=5,a.loadingHotSymbols=!1,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},removeFromWatchlist:function(t){var a=arguments,s=this;return(0,u.A)((0,d.A)().m(function e(){var i,r,o;return(0,d.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(s.userId){e.n=1;break}return e.a(2);case 1:return i="object"===(0,n.A)(t)?t.symbol:t,r="object"===(0,n.A)(t)?t.market:a[1],e.p=2,e.n=3,(0,v.mk)({userid:s.userId,symbol:i,market:r});case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return s.$message.success(s.$t("dashboard.analysis.message.removeStockSuccess")),e.n=4,s.loadWatchlist();case 4:e.n=6;break;case 5:s.$message.error((null===o||void 0===o?void 0:o.msg)||s.$t("dashboard.analysis.message.removeStockFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,s.$message.error(s.$t("dashboard.analysis.message.removeStockFailed"));case 8:return e.a(2)}},e,null,[[2,7]])}))()},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},formatNumber:function(t){return"string"===typeof t?t:t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},loadMarketTypes:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,v.iO)();case 1:s=a.v,s&&1===s.code&&s.data&&Array.isArray(s.data)?t.marketTypes=s.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],a.n=3;break;case 2:a.p=2,a.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:t.marketTypes.length>0&&!t.selectedMarketTab&&(t.selectedMarketTab=t.marketTypes[0].value);case 4:return a.a(2)}},a,null,[[0,2]])}))()}},watch:{presetSymbol:function(t){t&&t!==this.selectedSymbol&&(this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error")},autoAnalyzeSignal:function(t){var a=this;t&&(this.presetSymbol&&this.presetSymbol!==this.selectedSymbol&&(this.selectedSymbol=this.presetSymbol),this.$nextTick(function(){a.startFastAnalysis()}))},showAddStockModal:function(t){t?(this.marketTypes.length>0&&!this.selectedMarketTab&&(this.selectedMarketTab=this.marketTypes[0].value),this.selectedMarketTab&&this.loadHotSymbols(this.selectedMarketTab)):(this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.searchTimer&&(clearTimeout(this.searchTimer),this.searchTimer=null))}}},I=F,D=(0,x.A)(I,e,i,!1,null,"22f26594",null),N=D.exports},44146:function(t,a,s){s.d(a,{EF:function(){return l},f$:function(){return r},kF:function(){return o},r9:function(){return c},yI:function(){return n}});var e=s(75769),i="/api/global-market";function n(){return(0,e.Ay)({url:"".concat(i,"/overview"),method:"get"})}function r(){return(0,e.Ay)({url:"".concat(i,"/heatmap"),method:"get"})}function o(){return(0,e.Ay)({url:"".concat(i,"/calendar"),method:"get"})}function l(){return(0,e.Ay)({url:"".concat(i,"/sentiment"),method:"get"})}function c(t){return(0,e.Ay)({url:"".concat(i,"/opportunities"),method:"get",params:t})}},35038:function(t,a,s){s.d(a,{Qo:function(){return n},_3:function(){return d},dp:function(){return r},iO:function(){return c},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var e=s(75769),i={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function n(t){return(0,e.Ay)({url:i.GetWatchlist,method:"get",params:t})}function r(t){return(0,e.Ay)({url:i.AddWatchlist,method:"post",data:t})}function o(t){return(0,e.Ay)({url:i.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,e.Ay)({url:i.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function c(){return(0,e.Ay)({url:i.GetMarketTypes,method:"get"})}function d(t){return(0,e.Ay)({url:i.SearchSymbols,method:"get",params:t})}function u(t){return(0,e.Ay)({url:i.GetHotSymbols,method:"get",params:t})}},24364:function(t,a,s){s.d(a,{$p:function(){return o},Dt:function(){return i},Iw:function(){return v},Ps:function(){return n},Xg:function(){return r},_3:function(){return g},aU:function(){return h},bC:function(){return l},cg:function(){return y},ei:function(){return m},f:function(){return b},iO:function(){return _},qS:function(){return f},qu:function(){return p},sk:function(){return u},w1:function(){return c},yr:function(){return d}});var e=s(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function n(t){return(0,e.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function r(t,a){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:a})}function o(t){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"get"})}function d(t){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function u(t,a){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:a})}function m(t){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function h(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:a})}function p(){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function y(t,a){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:a})}function f(t){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function b(){return(0,e.Ay)({url:"/api/portfolio/groups",method:"get"})}function g(t){return(0,e.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function _(){return(0,e.Ay)({url:"/api/market/types",method:"get"})}},21560:function(t,a,s){s.d(a,{A:function(){return i}});var e=s(44735);function i(t){if(null!=t){var a=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],s=0;if(a)return a.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&s>=t.length&&(t=void 0),{value:t&&t[s++],done:!t}}}}throw new TypeError((0,e.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/755.1226be89.js b/frontend/dist/js/755.1226be89.js deleted file mode 100644 index 9b11b43..0000000 --- a/frontend/dist/js/755.1226be89.js +++ /dev/null @@ -1,18 +0,0 @@ -(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[755],{27077:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return $a}});var n=function(){var t=this,e=t._self._c;return e("div",{staticClass:"chart-container",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"chart-header"},[e("div",{staticClass:"header-top"},[e("div",{staticClass:"header-left"},[e("div",{staticClass:"search-section"},[e("a-select",{staticClass:"symbol-select",attrs:{"show-search":"",placeholder:t.$t("dashboard.indicator.selectSymbol"),dropdownClassName:"dark-dropdown","filter-option":t.filterSymbolOption,"not-found-content":null,open:t.symbolSearchOpen},on:{search:t.handleSymbolSearch,change:t.handleSymbolSelect,dropdownVisibleChange:t.handleDropdownVisibleChange},model:{value:t.searchSymbol,callback:function(e){t.searchSymbol=e},expression:"searchSymbol"}},[e("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),t._l(t.symbolSuggestions,function(i){return e("a-select-option",{key:i.value,attrs:{value:i.value}},[e("div",{staticClass:"symbol-option"},[e("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:t.getMarketColor(i.market)}},[t._v(" "+t._s(t.getMarketName(i.market))+" ")]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.symbol))]),i.name?e("span",{staticClass:"symbol-name-extra"},[t._v(t._s(i.name))]):t._e()],1)])}),e("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[e("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),e("span",[t._v(t._s(t.$t("dashboard.analysis.watchlist.add")))])],1)])],2)],1),e("div",{staticClass:"timeframe-group"},t._l(["1m","5m","15m","30m","1H","4H","1D","1W"],function(i){return e("div",{key:i,staticClass:"timeframe-item",class:{active:t.timeframe===i},on:{click:function(e){return t.setTimeframe(i)}}},[t._v(" "+t._s(i)+" ")])}),0)]),t.currentSymbol?e("div",{staticClass:"current-symbol"},[e("div",{staticClass:"symbol-info"},[e("span",{staticClass:"symbol-label"},[t._v(t._s(t.currentSymbol))]),e("span",{staticClass:"market-tag"},[t._v(t._s(t.currentMarket))])]),e("div",{staticClass:"price-info",class:t.priceChangeClass},[e("span",{staticClass:"symbol-price"},[t._v(t._s(t.currentPrice))]),e("span",{staticClass:"symbol-change"},[t._v(" "+t._s(t.priceChange>0?"+":"")+t._s(t.priceChange.toFixed(2))+"% ")])]),t.isCryptoMarket?e("a-button",{staticClass:"qt-header-btn",attrs:{size:"small"},on:{click:t.openQuickTrade}},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}}),t._v(" "+t._s(t.$t("quickTrade.openPanel"))+" ")],1):t._e()],1):t._e()])]),e("div",{staticClass:"chart-content"},[e("div",{staticClass:"chart-main-row"},[t.currentSymbol?e("div",{staticClass:"mobile-symbol-price"},[e("div",{staticClass:"mobile-symbol-info"},[e("span",{staticClass:"mobile-market-tag"},[t._v(t._s(t.currentMarket))]),e("span",[t._v("-")]),e("span",{staticClass:"mobile-symbol-label"},[t._v(t._s(t.currentSymbol))])]),e("div",{staticClass:"mobile-price-info",class:t.priceChangeClass},[e("span",{staticClass:"mobile-symbol-price"},[t._v(t._s(t.currentPrice))]),e("span",{staticClass:"mobile-symbol-change"},[t._v(" "+t._s(t.priceChange>0?"+":"")+t._s(t.priceChange.toFixed(2))+"% ")])])]):t._e(),e("kline-chart",{ref:"klineChart",attrs:{symbol:t.currentSymbol,market:t.currentMarket,timeframe:t.timeframe,theme:t.chartTheme,activeIndicators:t.activeIndicators,realtimeEnabled:t.realtimeEnabled},on:{"price-change":t.handlePriceChange,retry:t.handleChartRetry,"indicator-toggle":t.handleIndicatorToggle}}),e("div",{staticClass:"chart-right"},[e("div",{staticClass:"indicators-panel"},[e("div",{staticClass:"panel-header"},[e("span",[t._v(t._s(t.$t("dashboard.indicator.panel.title")))]),e("div",{staticStyle:{display:"flex","align-items":"center","margin-left":"auto",gap:"8px"}},[t.isMobile?e("a-button",{staticClass:"mobile-header-create-btn",attrs:{type:"primary",size:"small",icon:"plus"},on:{click:t.handleCreateIndicator}},[t._v(" "+t._s(t.$t("dashboard.indicator.create"))+" ")]):t._e(),e("a-tooltip",{attrs:{title:t.realtimeEnabled?t.$t("dashboard.indicator.panel.realtimeOn"):t.$t("dashboard.indicator.panel.realtimeOff")}},[e("a-button",{staticClass:"realtime-toggle-btn",class:{active:t.realtimeEnabled},attrs:{type:"text"},on:{click:t.toggleRealtime}},[e("a-icon",{attrs:{type:t.realtimeEnabled?"sync":"pause-circle",spin:t.realtimeEnabled}})],1)],1)],1)]),e("div",{staticClass:"panel-body"},[t.isMobile?[e("div",{staticClass:"mobile-tab-content"},[e("div",{staticClass:"section-content custom-scrollbar"},[t._l(t.customIndicators,function(i){return e("div",{key:"custom-"+i.id,class:["indicator-card",{"indicator-active":t.isIndicatorActive("custom-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"custom")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[t._v(t._s(i.name))]),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.edit")}},[e("a-icon",{staticClass:"action-icon edit-icon",attrs:{type:"edit"},on:{click:function(e){return e.stopPropagation(),t.handleEditIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.delete")}},[e("a-icon",{staticClass:"action-icon delete-icon",attrs:{type:"delete"},on:{click:function(e){return e.stopPropagation(),t.handleDeleteIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.isIndicatorActive("custom-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("custom-"+i.id)}],attrs:{type:t.isIndicatorActive("custom-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"custom")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1),e("a-tooltip",{attrs:{title:i.publish_to_community?t.$t("dashboard.indicator.action.unpublish"):t.$t("dashboard.indicator.action.publish")}},[e("a-icon",{class:["action-icon","publish-icon",{published:i.publish_to_community}],attrs:{type:i.publish_to_community?"cloud":"cloud-upload"},on:{click:function(e){return e.stopPropagation(),t.handlePublishIndicator(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.customIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"info-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.empty")))])],1):t._e()],2)])]:[e("div",{staticClass:"indicator-section",class:{"section-empty":0===t.customIndicators.length}},[e("div",{staticClass:"section-label"},[e("div",{staticClass:"section-label-left",on:{click:t.toggleCustomSection}},[e("a-icon",{staticClass:"collapse-icon",attrs:{type:t.customSectionCollapsed?"right":"down"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.section.myCreated"))+" ("+t._s(t.customIndicators.length)+")")])],1),e("a-button",{staticClass:"create-indicator-btn",attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(e){return e.stopPropagation(),t.handleCreateIndicator.apply(null,arguments)}}},[t._v(" "+t._s(t.$t("dashboard.indicator.create"))+" ")])],1),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.customSectionCollapsed,expression:"!customSectionCollapsed"}],staticClass:"section-content custom-scrollbar"},[t._l(t.customIndicators,function(i){return e("div",{key:"custom-"+i.id,class:["indicator-card",{"indicator-active":t.isIndicatorActive("custom-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"custom")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[t._v(t._s(i.name))]),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.edit")}},[e("a-icon",{staticClass:"action-icon edit-icon",attrs:{type:"edit"},on:{click:function(e){return e.stopPropagation(),t.handleEditIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.delete")}},[e("a-icon",{staticClass:"action-icon delete-icon",attrs:{type:"delete"},on:{click:function(e){return e.stopPropagation(),t.handleDeleteIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.isIndicatorActive("custom-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("custom-"+i.id)}],attrs:{type:t.isIndicatorActive("custom-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"custom")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1),e("a-tooltip",{attrs:{title:i.publish_to_community?t.$t("dashboard.indicator.action.unpublish"):t.$t("dashboard.indicator.action.publish")}},[e("a-icon",{class:["action-icon","publish-icon",{published:i.publish_to_community}],attrs:{type:i.publish_to_community?"cloud":"cloud-upload"},on:{click:function(e){return e.stopPropagation(),t.handlePublishIndicator(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.action.createStrategy")}},[e("a-icon",{staticClass:"action-icon create-strategy-icon",attrs:{type:"rocket"},on:{click:function(e){return e.stopPropagation(),t.handleCreateStrategyFromIndicator(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.customIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"info-circle"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.empty")))])],1):t._e()],2)]),e("div",{staticClass:"indicator-section",class:{"section-empty":0===t.purchasedIndicators.length}},[e("div",{staticClass:"section-label"},[e("div",{staticClass:"section-label-left",on:{click:function(e){t.purchasedSectionCollapsed=!t.purchasedSectionCollapsed}}},[e("a-icon",{staticClass:"collapse-icon",attrs:{type:t.purchasedSectionCollapsed?"right":"down"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.section.purchased"))+" ("+t._s(t.purchasedIndicators.length)+")")])],1),e("a-button",{staticClass:"buy-indicator-btn",attrs:{type:"link",size:"small",icon:"shop"},on:{click:function(e){return e.stopPropagation(),t.goToIndicatorMarket.apply(null,arguments)}}},[t._v(" "+t._s(t.$t("menu.dashboard.community"))+" ")])],1),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.purchasedSectionCollapsed,expression:"!purchasedSectionCollapsed"}],staticClass:"section-content custom-scrollbar"},[t._l(t.purchasedIndicators,function(i){return e("div",{key:"purchased-"+i.id,class:["indicator-card","purchased-indicator",{"indicator-active":t.isIndicatorActive("purchased-"+i.id)}],on:{click:function(e){return t.toggleIndicator(i,"purchased")}}},[e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-header"},[e("span",{staticClass:"card-name"},[e("a-icon",{staticClass:"purchased-icon",attrs:{type:"shopping"}}),t._v(" "+t._s(i.name)+" ")],1),e("div",{staticClass:"card-actions"},[e("a-tooltip",{attrs:{title:t.isIndicatorActive("purchased-"+i.id)?t.$t("dashboard.indicator.action.stop"):t.$t("dashboard.indicator.action.start")}},[e("a-icon",{class:["action-icon","toggle-icon",{active:t.isIndicatorActive("purchased-"+i.id)}],attrs:{type:t.isIndicatorActive("purchased-"+i.id)?"pause-circle":"play-circle"},on:{click:function(e){return e.stopPropagation(),t.toggleIndicator(i,"purchased")}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.title")}},[e("a-icon",{staticClass:"action-icon backtest-icon",attrs:{type:"experiment"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktest(i)}}})],1),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.backtest.historyTitle")}},[e("a-icon",{staticClass:"action-icon backtest-history-icon",attrs:{type:"clock-circle"},on:{click:function(e){return e.stopPropagation(),t.handleOpenBacktestHistory(i)}}})],1)],1)]),e("span",{staticClass:"card-desc"},[t._v(t._s(i.description||""))])])])}),0===t.purchasedIndicators.length?e("div",{staticClass:"empty-indicators"},[e("a-icon",{attrs:{type:"shopping"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.emptyPurchased")))])],1):t._e()],2)])]],2)])])],1),e("indicator-editor",{ref:"indicatorEditor",attrs:{visible:t.showIndicatorEditor,indicator:t.editingIndicator,userId:t.userId},on:{run:t.handleRunIndicator,save:t.handleSaveIndicator,cancel:function(e){t.showIndicatorEditor=!1,t.editingIndicator=null}}}),e("a-modal",{attrs:{visible:t.showParamsModal,title:t.$t("dashboard.indicator.paramsConfig.title"),confirmLoading:t.loadingParams,width:500,maskClosable:!1,keyboard:!1},on:{ok:t.confirmIndicatorParams,cancel:t.cancelIndicatorParams,afterClose:t.handleParamsModalAfterClose}},[t.pendingIndicator?e("div",{staticClass:"params-config-modal"},[e("div",{staticClass:"indicator-info"},[e("span",{staticClass:"indicator-name"},[t._v(t._s(t.pendingIndicator.name))])]),e("a-divider"),t.indicatorParams.length>0?e("div",{staticClass:"params-form"},t._l(t.indicatorParams,function(i){return e("div",{key:i.name,staticClass:"param-item"},[e("div",{staticClass:"param-header"},[e("label",{staticClass:"param-label"},[t._v(t._s(i.name))]),i.description?e("a-tooltip",{attrs:{title:i.description}},[e("a-icon",{staticStyle:{color:"#999","margin-left":"4px"},attrs:{type:"question-circle"}})],1):t._e()],1),"int"===i.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0},model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):"float"===i.type?e("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4},model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):"bool"===i.type?e("a-switch",{model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}}):e("a-input",{model:{value:t.indicatorParamValues[i.name],callback:function(e){t.$set(t.indicatorParamValues,i.name,e)},expression:"indicatorParamValues[param.name]"}})],1)}),0):e("a-empty",{attrs:{description:t.$t("dashboard.indicator.paramsConfig.noParams")}})],1):t._e()]),e("a-modal",{attrs:{title:t.publishIndicator&&t.publishIndicator.publish_to_community?t.$t("dashboard.indicator.publish.editTitle"):t.$t("dashboard.indicator.publish.title"),visible:t.showPublishModal,confirmLoading:t.publishing,width:"500px",okText:t.publishIndicator&&t.publishIndicator.publish_to_community?t.$t("dashboard.indicator.publish.update"):t.$t("dashboard.indicator.publish.confirm"),cancelText:t.$t("common.cancel")},on:{ok:t.handleConfirmPublish,cancel:function(e){t.showPublishModal=!1,t.publishIndicator=null}}},[e("a-form-model",{ref:"publishForm",attrs:{model:t.publishForm,rules:t.publishRules,layout:"vertical"}},[e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info","show-icon":"",message:t.$t("dashboard.indicator.publish.hint")}}),e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.pricingType"),prop:"pricingType"}},[e("a-radio-group",{model:{value:t.publishPricingType,callback:function(e){t.publishPricingType=e},expression:"publishPricingType"}},[e("a-radio",{attrs:{value:"free"}},[t._v(t._s(t.$t("dashboard.indicator.publish.free")))]),e("a-radio",{attrs:{value:"paid"}},[t._v(t._s(t.$t("dashboard.indicator.publish.paid")))])],1)],1),"paid"===t.publishPricingType?e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.price"),prop:"price"}},[e("a-input-number",{staticStyle:{width:"200px"},attrs:{min:1,max:1e4,precision:0},model:{value:t.publishPrice,callback:function(e){t.publishPrice=e},expression:"publishPrice"}}),e("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(t.$t("community.credits")))])],1):t._e(),"paid"===t.publishPricingType?e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.vipFree")}},[e("a-switch",{model:{value:t.publishVipFree,callback:function(e){t.publishVipFree=e},expression:"publishVipFree"}}),e("div",{staticStyle:{"margin-top":"6px",color:"rgba(0,0,0,0.45)","font-size":"12px"}},[t._v(" "+t._s(t.$t("dashboard.indicator.publish.vipFreeHint"))+" ")])],1):t._e(),e("a-form-model-item",{attrs:{label:t.$t("dashboard.indicator.publish.description"),prop:"description"}},[e("a-textarea",{attrs:{placeholder:t.$t("dashboard.indicator.publish.descriptionPlaceholder"),rows:4,maxLength:500},model:{value:t.publishDescription,callback:function(e){t.publishDescription=e},expression:"publishDescription"}})],1),t.publishIndicator&&t.publishIndicator.publish_to_community?e("div",{staticStyle:{"margin-top":"16px"}},[e("a-button",{attrs:{type:"danger",ghost:"",loading:t.unpublishing},on:{click:t.handleUnpublish}},[e("a-icon",{attrs:{type:"close-circle"}}),t._v(" "+t._s(t.$t("dashboard.indicator.publish.unpublish"))+" ")],1)],1):t._e()],1)],1),e("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[e("div",{staticClass:"add-stock-modal-content"},[e("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(e){t.selectedMarketTab=e},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(i){return e("a-tab-pane",{key:i.value,attrs:{tab:t.$t(i.i18nKey||"dashboard.analysis.market.".concat(i.value))}})}),1),e("div",{staticClass:"symbol-search-section"},[e("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(e){t.symbolSearchKeyword=e},expression:"symbolSearchKeyword"}},[e("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?e("div",{staticClass:"search-results-section"},[e("div",{staticClass:"section-title"},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),e("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(i){return e("a-list-item",{staticClass:"symbol-list-item",on:{click:function(e){return t.selectSymbol(i)}}},[e("a-list-item-meta",[e("template",{slot:"title"},[e("div",{staticClass:"symbol-item-content"},[e("span",{staticClass:"symbol-code"},[t._v(t._s(i.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.name))]),i.exchange?e("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(i.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),e("div",{staticClass:"hot-symbols-section"},[e("div",{staticClass:"section-title"},[e("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),e("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?e("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(i){return e("a-list-item",{staticClass:"symbol-list-item",on:{click:function(e){return t.selectSymbol(i)}}},[e("a-list-item-meta",[e("template",{slot:"title"},[e("div",{staticClass:"symbol-item-content"},[e("span",{staticClass:"symbol-code"},[t._v(t._s(i.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(i.name))]),i.exchange?e("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(i.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):e("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?e("div",{staticClass:"selected-symbol-section"},[e("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(e){t.selectedSymbolForAdd=null}}},[e("template",{slot:"description"},[e("div",{staticClass:"selected-symbol-info"},[e("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),e("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?e("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):e("span",{staticStyle:{color:"#999","margin-left":"8px","font-style":"italic"}},[t._v(t._s(t.$t("dashboard.analysis.modal.addStock.nameWillBeFetched")))])],1)])],2)],1):t._e()],1)])],1),e("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentSymbol&&t.isCryptoMarket?e("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTrade}},[e("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),e("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:"indicator","market-type":"swap"},on:{close:function(e){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}})],1)},a=[],r=(i(62621),i(43898)),o=i(44735),s=i(15863),l=i(81127),c=i(56252),u=(i(6011),i(18787)),d=i(76338),h=(i(74423),i(85471)),p=i(95353),v=i(75769),f=i(35038),g=i(505),m=function(){var t=this,e=t._self._c;return e("div",[e("a-modal",{staticClass:"indicator-editor-modal",style:t.isMobile?{top:0,paddingBottom:0}:{top:"2%"},attrs:{title:t.$t("dashboard.indicator.editor.title"),visible:t.visible,width:t.isMobile?"100%":"95vw",confirmLoading:t.saving,okText:t.$t("dashboard.indicator.editor.save"),cancelText:t.$t("dashboard.indicator.editor.cancel"),maskClosable:!1,centered:!1},on:{ok:t.handleSave,cancel:t.handleCancel,afterClose:t.handleAfterClose}},[e("div",{staticClass:"editor-content"},[e("a-row",{staticClass:"editor-layout",class:{"mobile-layout":t.isMobile},attrs:{gutter:16}},[e("a-col",{staticClass:"code-editor-column",attrs:{span:24,xs:24,sm:24,md:24}},[e("div",{staticClass:"code-section"},[e("div",{staticClass:"section-header"},[e("div",{staticClass:"header-left"},[e("span",{staticClass:"section-title"},[t._v(t._s(t.$t("dashboard.indicator.editor.code")))])]),e("div",{staticClass:"section-actions"},[e("a-button",{staticStyle:{padding:"0 8px",color:"#52c41a","font-weight":"bold"},attrs:{type:"link",size:"small",loading:t.verifying},on:{click:t.handleVerifyCode}},[e("a-icon",{attrs:{type:"check-circle"}}),t._v(" "+t._s(t.$t("dashboard.indicator.editor.verifyCode"))+" ")],1),e("a-button",{staticStyle:{padding:"0"},attrs:{type:"link",size:"small"},on:{click:t.goToDocs}},[e("a-icon",{attrs:{type:"book"}}),t._v(" "+t._s(t.$t("dashboard.indicator.editor.guide"))+" ")],1)],1)]),e("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":"",message:t.$t("dashboard.indicator.boundary.message"),description:t.$t("dashboard.indicator.boundary.indicatorRule")}}),e("div",{staticClass:"code-mode-split"},[e("a-row",{staticClass:"code-mode-row",attrs:{gutter:16}},[e("a-col",{staticClass:"code-pane",attrs:{xs:24,sm:24,md:18}},[e("div",{ref:"codeEditorContainer",staticClass:"code-editor-container"})]),e("a-col",{staticClass:"ai-pane",attrs:{xs:24,sm:24,md:6}},[e("div",{staticClass:"ai-panel"},[e("div",{staticClass:"ai-panel-title"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(t.$t("dashboard.indicator.editor.aiGenerate")))])],1),e("a-textarea",{attrs:{placeholder:t.$t("dashboard.indicator.editor.aiPromptPlaceholder"),rows:12,"auto-size":{minRows:12,maxRows:20}},model:{value:t.aiPrompt,callback:function(e){t.aiPrompt=e},expression:"aiPrompt"}}),e("a-button",{staticStyle:{"margin-top":"10px"},attrs:{type:"primary",block:"",loading:t.aiGenerating,size:"large"},on:{click:t.handleAIGenerate}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.aiGenerateBtn"))+" ")])],1)])],1)],1)],1)])],1)],1),e("div",{staticClass:"editor-footer",attrs:{slot:"footer"},slot:"footer"},[e("a-button",{on:{click:t.handleCancel}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.cancel"))+" ")]),e("a-button",{attrs:{type:"primary",loading:t.saving},on:{click:t.handleSave}},[t._v(" "+t._s(t.$t("dashboard.indicator.editor.save"))+" ")])],1)])],1)},y=[],_=i(57532),b=i(15237),x=i.n(b),w=(i(74806),i(55218),i(97923),i(50436),i(74053)),S=i.n(w),C=i(75314),k={name:"IndicatorEditor",props:{visible:{type:Boolean,default:!1},indicator:{type:Object,default:null},userId:{type:Number,default:null}},data:function(){return{saving:!1,codeEditor:null,aiPrompt:"",aiGenerating:!1,verifying:!1,isMobile:!1}},computed:{},watch:{visible:function(t){var e=this;t?this.$nextTick(function(){setTimeout(function(){!e.codeEditor&&e.$refs.codeEditorContainer&&e.initCodeEditor(),e.initFormData()},200)}):this.codeEditor&&this.codeEditor.refresh()},indicator:{handler:function(t){var e=this;t&&this.visible&&this.$nextTick(function(){setTimeout(function(){e.initFormData()},100)})},deep:!0}},mounted:function(){var t=this;this.checkMobile(),window.addEventListener("resize",this.checkMobile),this.visible&&this.$nextTick(function(){setTimeout(function(){t.initCodeEditor()},100)})},beforeDestroy:function(){if(window.removeEventListener("resize",this.checkMobile),this.codeEditor)try{if("function"===typeof this.codeEditor.toTextArea)this.codeEditor.toTextArea();else if("function"===typeof this.codeEditor.getWrapperElement){var t=this.codeEditor.getWrapperElement();t&&t.parentNode&&t.parentNode.removeChild(t)}}catch(e){}finally{this.codeEditor=null}},methods:{getDefaultIndicatorCode:function(){return'#Demo Code:\n#my_indicator_name = "My Buy/Sell Indicator"\n#my_indicator_description = "Buy/Sell only; execution is normalized in backend."\n\n#df = df.copy()\n#sma = df["close"].rolling(14).mean()\n#buy = (df["close"] > sma) & (df["close"].shift(1) <= sma.shift(1))\n#sell = (df["close"] < sma) & (df["close"].shift(1) >= sma.shift(1))\n#df["buy"] = buy.fillna(False).astype(bool)\n#df["sell"] = sell.fillna(False).astype(bool)\n\n#buy_marks = [df["low"].iloc[i] * 0.995 if df["buy"].iloc[i] else None for i in range(len(df))]\n#sell_marks = [df["high"].iloc[i] * 1.005 if df["sell"].iloc[i] else None for i in range(len(df))]\n\n#output = {\n# "name": my_indicator_name,\n# "plots": [],\n# "signals": [\n# {"type": "buy", "text": "B", "data": buy_marks, "color": "#00E676"},\n# {"type": "sell", "text": "S", "data": sell_marks, "color": "#FF5252"}\n# ]\n#}\n'},checkMobile:function(){this.isMobile=window.innerWidth<=768},goToDocs:function(){window.open("https://github.com/brokermr810/QuantDinger/blob/main/docs/STRATEGY_DEV_GUIDE.md","_blank")},handleVerifyCode:function(){var t=this,e=this.codeEditor?this.codeEditor.getValue():"";e&&e.trim()?(this.verifying=!0,(0,v.Ay)({url:"/api/indicator/verifyCode",method:"post",data:{code:e}}).then(function(e){if(1===e.code){var i=e.data||{};t.$message.success("".concat(t.$t("dashboard.indicator.editor.verifyCodeSuccess")," (").concat(i.plots_count||0," plots, ").concat(i.signals_count||0," signals)"))}else{var n=e.data||{};t.$error({title:t.$t("dashboard.indicator.editor.verifyCodeFailed"),width:600,content:function(t){return t("div",[t("p",{style:{fontWeight:"bold",color:"#ff4d4f"}},e.msg),n.details?t("pre",{style:{background:"#f5f5f5",padding:"8px",overflow:"auto",maxHeight:"300px",marginTop:"8px",fontSize:"12px",fontFamily:"monospace"}},n.details):null])}})}}).catch(function(e){t.$message.error("Request Failed: "+(e.message||"Unknown Error"))}).finally(function(){t.verifying=!1})):this.$message.warning(this.$t("dashboard.indicator.editor.verifyCodeEmpty"))},cleanMarkdownCodeBlocks:function(t){if(!t||"string"!==typeof t)return t;var e=t.trim(),i=/```/.test(e);return i?(e=e.replace(/^```[\w]*\s*\n?/i,""),e.startsWith("```")&&(e=e.replace(/^```\s*\n?/g,"")),e.endsWith("```")&&(e=e.replace(/\n?```\s*$/g,"")),e=e.replace(/^\s*```[\w]*\s*$/gm,""),e=e.replace(/^\s*```\s*$/gm,""),e=e.replace(/\n{3,}/g,"\n\n"),e=e.trim(),e):e},initFormData:function(){var t=this;if(this.visible){var e=this.indicator&&this.indicator.code||"";e&&String(e).trim()||(e=this.getDefaultIndicatorCode()),this.$nextTick(function(){setTimeout(function(){t.aiPrompt="",t.codeEditor&&(t.codeEditor.setValue(e),t.codeEditor.refresh())},50)})}},initCodeEditor:function(){var t=this;if(this.$refs.codeEditorContainer){if(this.codeEditor){try{if("function"===typeof this.codeEditor.toTextArea)this.codeEditor.toTextArea();else if("function"===typeof this.codeEditor.getWrapperElement){var e=this.codeEditor.getWrapperElement();e&&e.parentNode&&e.parentNode.removeChild(e)}}catch(i){}this.codeEditor=null}try{this.$refs.codeEditorContainer.innerHTML="",this.codeEditor=x()(this.$refs.codeEditorContainer,{value:function(){var e=t.indicator&&t.indicator.code||"";return e&&String(e).trim()?e:t.getDefaultIndicatorCode()}(),mode:"python",theme:"eclipse",lineNumbers:!0,lineWrapping:!0,indentUnit:4,indentWithTabs:!1,smartIndent:!0,matchBrackets:!0,autoCloseBrackets:!0,styleActiveLine:!0,foldGutter:!1,gutters:["CodeMirror-linenumbers"],tabSize:4,viewportMargin:1/0}),this.codeEditor.on("change",function(t){t.getValue()}),this.$nextTick(function(){t.codeEditor&&t.codeEditor.refresh()})}catch(n){}}},handleSave:function(){var t=this.codeEditor?this.codeEditor.getValue():"",e=t||"";e.trim()?(this.saving=!0,this.$emit("save",{id:this.indicator?this.indicator.id:0,code:e,userid:this.userId})):this.$message.warning(this.$t("dashboard.indicator.editor.codeRequired"))},handleCancel:function(){this.codeEditor&&this.codeEditor.setValue(""),this.$emit("cancel")},handleAfterClose:function(){var t=this;this.codeEditor&&this.$nextTick(function(){t.codeEditor&&t.codeEditor.refresh()}),this.aiPrompt=""},handleAIGenerate:function(){var t=this;return(0,c.A)((0,l.A)().m(function e(){var i,n,a,r,o,s,c,u,d,h,p,v,f,g,m,y,b,x,w,k,I,E,A,P,M;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.aiPrompt&&t.aiPrompt.trim()){e.n=1;break}return t.$message.warning(t.$t("dashboard.indicator.editor.aiPromptRequired")),e.a(2);case 1:return t.aiGenerating=!0,i="",t.codeEditor&&(i=t.codeEditor.getValue()||""),t.codeEditor&&(t.codeEditor.setValue("# AI generating...\n"),t.codeEditor.refresh()),n="",e.p=2,a="/api/indicator/aiGenerate",r=S().get(C.Xh),o={prompt:t.aiPrompt.trim()},i.trim()&&(o.existingCode=i.trim()),e.n=3,fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:r?"Bearer ".concat(r):"","Access-Token":r||"",Token:r||""},body:JSON.stringify(o),credentials:"include"});case 3:if(s=e.v,s.ok){e.n=5;break}return e.n=4,s.text().catch(function(){return""});case 4:throw c=e.v,new Error(c||"HTTP error! status: ".concat(s.status));case 5:if(s.body&&"function"===typeof s.body.getReader){e.n=6;break}throw new Error("AI 服务未返回可读取的流(response.body 不存在)");case 6:u=s.body.getReader(),d=new TextDecoder,h="";case 7:return e.n=8,u.read();case 8:if(p=e.v,v=p.done,f=p.value,!v){e.n=9;break}return e.a(3,21);case 9:h+=d.decode(f,{stream:!0}),g=h.split("\n\n"),h=g.pop()||"",m=(0,_.A)(g),e.p=10,m.s();case 11:if((y=m.n()).done){e.n=17;break}if(b=y.value,b.trim()&&b.startsWith("data: ")){e.n=12;break}return e.a(3,16);case 12:if(x=b.substring(6),"[DONE]"!==x){e.n=13;break}return e.a(3,17);case 13:if(e.p=13,w=JSON.parse(x),!w.error){e.n=14;break}throw new Error(w.error);case 14:w.content&&(n+=w.content,k=t.cleanMarkdownCodeBlocks(n),t.codeEditor&&(t.codeEditor.setValue(k),I=t.codeEditor.lineCount(),t.codeEditor.setCursor({line:I-1,ch:0}),t.codeEditor.refresh())),e.n=16;break;case 15:e.p=15,e.v;case 16:e.n=11;break;case 17:e.n=19;break;case 18:e.p=18,P=e.v,m.e(P);case 19:return e.p=19,m.f(),e.f(19);case 20:e.n=7;break;case 21:t.codeEditor&&n?(E=t.cleanMarkdownCodeBlocks(n),t.codeEditor.setValue(E),t.codeEditor.refresh(),t.$message.success(t.$t("dashboard.indicator.editor.aiGenerateSuccess"))):n||t.$message.warning("未生成任何代码,请尝试更详细的提示词"),e.n=23;break;case 22:e.p=22,M=e.v,t.$message.error(M.message||t.$t("dashboard.indicator.editor.aiGenerateError")),n&&t.codeEditor&&(A=t.cleanMarkdownCodeBlocks(n),t.codeEditor.setValue(A));case 23:return e.p=23,t.aiGenerating=!1,e.f(23);case 24:return e.a(2)}},e,null,[[13,15],[10,18,19,20],[2,22,23,24]])}))()}}},I=k,E=i(845),A=(0,E.A)(I,m,y,!1,null,"4fea1865",null),P=A.exports,M=function(){var t=this,e=t._self._c;return e("div",{staticClass:"chart-left",class:{"theme-dark":"dark"===t.chartTheme}},[e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"drawing-toolbar"},[t._l(t.drawingTools,function(i){return e("a-tooltip",{key:i.name,attrs:{title:i.title,placement:"right"}},[e("div",{staticClass:"drawing-tool-btn",class:{active:t.activeDrawingTool===i.name},on:{click:function(e){return t.selectDrawingTool(i.name)}}},[e("a-icon",{attrs:{type:i.icon}})],1)])}),e("a-divider",{attrs:{type:"vertical"}}),e("a-tooltip",{attrs:{title:t.$t("dashboard.indicator.drawing.clearAll"),placement:"right"}},[e("div",{staticClass:"drawing-tool-btn",on:{click:t.clearAllDrawings}},[e("a-icon",{attrs:{type:"delete"}})],1)])],2),e("div",{staticClass:"chart-content-area"},[e("div",{staticClass:"indicator-toolbar"},t._l(t.indicatorButtons,function(i){return e("div",{key:i.id,staticClass:"indicator-btn",class:{active:t.isIndicatorActive(i.id)},attrs:{title:i.name},on:{click:function(e){return t.toggleIndicator(i)}}},[t._v(" "+t._s(i.shortName)+" ")])}),0),e("div",{staticClass:"kline-chart-container",attrs:{id:"kline-chart-container"}})]),t.loading?e("div",{staticClass:"chart-overlay"},[e("a-spin",{attrs:{size:"large"}},[e("a-icon",{staticStyle:{"font-size":"24px",color:"#13c2c2"},attrs:{slot:"indicator",type:"loading",spin:""},slot:"indicator"})],1)],1):t._e(),t.error?e("div",{staticClass:"chart-overlay"},[e("div",{staticClass:"error-box"},[e("a-icon",{staticStyle:{"font-size":"24px",color:"#ef5350","margin-bottom":"10px"},attrs:{type:"warning"}}),e("span",[t._v(t._s(t.error))]),e("a-button",{staticStyle:{"margin-top":"12px"},attrs:{type:"primary",size:"small",ghost:""},on:{click:t.handleRetry}},[t._v(" "+t._s(t.$t("dashboard.indicator.retry"))+" ")])],1)]):t._e(),t.pyodideLoadFailed?e("div",{staticClass:"chart-overlay pyodide-warning"},[e("div",{staticClass:"warning-box"},[e("a-icon",{staticStyle:{"font-size":"32px",color:"#faad14","margin-bottom":"12px"},attrs:{type:"warning"}}),e("div",{staticClass:"warning-title"},[t._v(t._s(t.$t("dashboard.indicator.warning.pyodideLoadFailed")))]),e("div",{staticClass:"warning-desc"},[t._v(t._s(t.$t("dashboard.indicator.warning.pyodideLoadFailedDesc")))])],1)]):t._e(),t.symbol||t.loading||t.error||t.pyodideLoadFailed?t._e():e("div",{staticClass:"chart-overlay initial-hint"},[e("div",{staticClass:"hint-box"},[e("a-icon",{staticStyle:{"font-size":"48px",color:"#1890ff","margin-bottom":"16px"},attrs:{type:"line-chart"}}),e("div",{staticClass:"hint-title"},[t._v(t._s(t.$t("dashboard.indicator.hint.selectSymbol")))]),e("div",{staticClass:"hint-desc"},[t._v(t._s(t.$t("dashboard.indicator.hint.selectSymbolDesc")))])],1)])])])},D=[],T=i(21560),B=i(26297),F=i(2403),R=function(t,e){return R=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},R(t,e)};function L(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function i(){this.constructor=t}R(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}var N,O,z,V,W,H,$,Y,X,K=function(){return K=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0&&a[a.length-1])&&(6===s[0]||2===s[0])){r=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Z(t,e){var i="function"===typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,a,r=i.call(t),o=[];try{while((void 0===e||e-- >0)&&!(n=r.next()).done)o.push(n.value)}catch(s){a={error:s}}finally{try{n&&!n.done&&(i=r["return"])&&i.call(r)}finally{if(a)throw a.error}}return o}function q(t,e,i){if(i||2===arguments.length)for(var n,a=0,r=e.length;a1e9)return"".concat(+(e/1e9).toFixed(3),"B");if(e>1e6)return"".concat(+(e/1e6).toFixed(3),"M");if(e>1e3)return"".concat(+(e/1e3).toFixed(3),"K")}return"".concat(t)}function zt(t,e){var i="".concat(t);if(0===e.length)return i;if(i.includes(".")){var n=i.split(".");return"".concat(n[0].replace(/(\d)(?=(\d{3})+$)/g,function(t){return"".concat(t).concat(e)}),".").concat(n[1])}return i.replace(/(\d)(?=(\d{3})+$)/g,function(t){return"".concat(t).concat(e)})}function Vt(t,e){var i="".concat(t),n=new RegExp("\\.0{"+e+",}[1-9][0-9]*$");if(n.test(i)){var a=i.split("."),r=a[a.length-1],o=r.match(/0*/);if(At(o)){var s=o[0].length;return a[a.length-1]=r.replace(/0*/,"0{".concat(s,"}")),a.join(".")}}return i}function Wt(t){var e,i,n;return null!==(n=null===(i=null===(e=t.ownerDocument)||void 0===e?void 0:e.defaultView)||void 0===i?void 0:i.devicePixelRatio)&&void 0!==n?n:1}function Ht(t,e,i){return"".concat(null!==e&&void 0!==e?e:"normal"," ").concat(null!==t&&void 0!==t?t:12,"px ").concat(null!==i&&void 0!==i?i:"Helvetica Neue")}function $t(t,e,i,n){if(!At(Dt)){var a=document.createElement("canvas"),r=Wt(a);Dt=a.getContext("2d"),Dt.scale(r,r)}return Dt.font=Ht(e,i,n),Math.round(Dt.measureText(t).width)}(function(t){t["OnDataReady"]="onDataReady",t["OnZoom"]="onZoom",t["OnScroll"]="onScroll",t["OnVisibleRangeChange"]="onVisibleRangeChange",t["OnTooltipIconClick"]="onTooltipIconClick",t["OnCrosshairChange"]="onCrosshairChange",t["OnCandleBarClick"]="onCandleBarClick",t["OnPaneDrag"]="onPaneDrag"})(Tt||(Tt={}));var Yt,Xt,Kt=function(){function t(){this._callbacks=[]}return t.prototype.subscribe=function(t){var e,i=null!==(e=this._callbacks.indexOf(t))&&void 0!==e?e:-1;i<0&&this._callbacks.push(t)},t.prototype.unsubscribe=function(t){var e;if(kt(t)){var i=null!==(e=this._callbacks.indexOf(t))&&void 0!==e?e:-1;i>-1&&this._callbacks.splice(i,1)}else this._callbacks=[]},t.prototype.execute=function(t){this._callbacks.forEach(function(e){e(t)})},t.prototype.isEmpty=function(){return 0===this._callbacks.length},t}();function jt(t,e,i,n,a){var r,o=e.result,s=e.figures,l=e.styles,c=Rt(l,"circles",n.circles),u=c.length,d=Rt(l,"bars",n.bars),h=d.length,p=Rt(l,"lines",n.lines),v=p.length,f=0,g=0,m=0,y=0;s.forEach(function(s){var l;switch(s.type){case"circle":y=f;var _=c[f%u];r=K(K({},_),{color:_.noChangeColor}),f++;break;case"bar":y=g;var b=d[g%h];r=K(K({},b),{color:b.noChangeColor}),g++;break;case"line":y=m,r=p[m%v],m++;break}if(At(r)){var x={prev:{kLineData:t[i-1],indicatorData:o[i-1]},current:{kLineData:t[i],indicatorData:o[i]},next:{kLineData:t[i+1],indicatorData:o[i+1]}},w=null===(l=s.styles)||void 0===l?void 0:l.call(s,x,e,n);a(s,K(K({},r),w),y)}})}(function(t){t["Init"]="init",t["Forward"]="forward",t["Backward"]="backward"})(Yt||(Yt={})),function(t){t["Normal"]="normal",t["Price"]="price",t["Volume"]="volume"}(Xt||(Xt={}));var Ut,Gt=function(){function t(t){this.result=[],this._precisionFlag=!1;var e=t.name,i=t.shortName,n=t.series,a=t.calcParams,r=t.figures,o=t.precision,s=t.shouldOhlc,l=t.shouldFormatBigNumber,c=t.visible,u=t.zLevel,d=t.minValue,h=t.maxValue,p=t.styles,v=t.extendData,f=t.regenerateFigures,g=t.createTooltipDataSource,m=t.draw;this.name=e,this.shortName=null!==i&&void 0!==i?i:e,this.series=null!==n&&void 0!==n?n:Xt.Normal,this.precision=null!==o&&void 0!==o?o:4,this.calcParams=null!==a&&void 0!==a?a:[],this.figures=null!==r&&void 0!==r?r:[],this.shouldOhlc=null!==s&&void 0!==s&&s,this.shouldFormatBigNumber=null!==l&&void 0!==l&&l,this.visible=null===c||void 0===c||c,this.zLevel=null!==u&&void 0!==u?u:0,this.minValue=null!==d&&void 0!==d?d:null,this.maxValue=null!==h&&void 0!==h?h:null,this.styles=St(null!==p&&void 0!==p?p:{}),this.extendData=v,this.regenerateFigures=null!==f&&void 0!==f?f:null,this.createTooltipDataSource=null!==g&&void 0!==g?g:null,this.draw=null!==m&&void 0!==m?m:null}return t.prototype.setShortName=function(t){return this.shortName!==t&&(this.shortName=t,!0)},t.prototype.setSeries=function(t){return this.series!==t&&(this.series=t,!0)},t.prototype.setPrecision=function(t,e){var i=null!==e&&void 0!==e&&e,n=Math.floor(t);return!(!(n!==this.precision&&t>=0)||i&&(!i||this._precisionFlag))&&(this.precision=n,i||(this._precisionFlag=!0),!0)},t.prototype.setCalcParams=function(t){var e,i;return this.calcParams=t,this.figures=null!==(i=null===(e=this.regenerateFigures)||void 0===e?void 0:e.call(this,t))&&void 0!==i?i:this.figures,!0},t.prototype.setShouldOhlc=function(t){return this.shouldOhlc!==t&&(this.shouldOhlc=t,!0)},t.prototype.setShouldFormatBigNumber=function(t){return this.shouldFormatBigNumber!==t&&(this.shouldFormatBigNumber=t,!0)},t.prototype.setVisible=function(t){return this.visible!==t&&(this.visible=t,!0)},t.prototype.setZLevel=function(t){return this.zLevel!==t&&(this.zLevel=t,!0)},t.prototype.setStyles=function(t){return wt(this.styles,t),!0},t.prototype.setExtendData=function(t){return this.extendData!==t&&(this.extendData=t,!0)},t.prototype.setFigures=function(t){return this.figures!==t&&(this.figures=t,!0)},t.prototype.setMinValue=function(t){return this.minValue!==t&&(this.minValue=t,!0)},t.prototype.setMaxValue=function(t){return this.maxValue!==t&&(this.maxValue=t,!0)},t.prototype.setRegenerateFigures=function(t){return this.regenerateFigures!==t&&(this.regenerateFigures=t,!0)},t.prototype.setCreateTooltipDataSource=function(t){return this.createTooltipDataSource!==t&&(this.createTooltipDataSource=t,!0)},t.prototype.setDraw=function(t){return this.draw!==t&&(this.draw=t,!0)},t.prototype.calcIndicator=function(t){return j(this,void 0,void 0,function(){var e;return U(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this.calc(t,this)];case 1:return e=i.sent(),this.result=e,[2,!0];case 2:return i.sent(),[2,!1];case 3:return[2]}})})},t.extend=function(e){var i=function(t){function i(){return t.call(this,e)||this}return L(i,t),i.prototype.calc=function(t,i){return e.calc(t,i)},i}(t);return i},t}();function Zt(){return["mouseClickEvent","mouseDoubleClickEvent","mouseRightClickEvent","tapEvent","doubleTapEvent","mouseDownEvent","touchStartEvent","mouseMoveEvent","touchMoveEvent"]}(function(t){t["Normal"]="normal",t["WeakMagnet"]="weak_magnet",t["StrongMagnet"]="strong_magnet"})(Ut||(Ut={}));var qt,Jt=1,Qt=-1,te="overlay_",ee="overlay_figure_",ie=function(){function t(t){this.currentStep=Jt,this.points=[],this._prevPressedPoint=null,this._prevPressedPoints=[];var e=t.mode,i=t.modeSensitivity,n=t.extendData,a=t.styles,r=t.name,o=t.totalStep,s=t.lock,l=t.visible,c=t.zLevel,u=t.needDefaultPointFigure,d=t.needDefaultXAxisFigure,h=t.needDefaultYAxisFigure,p=t.createPointFigures,v=t.createXAxisFigures,f=t.createYAxisFigures,g=t.performEventPressedMove,m=t.performEventMoveForDrawing,y=t.onDrawStart,_=t.onDrawing,b=t.onDrawEnd,x=t.onClick,w=t.onDoubleClick,S=t.onRightClick,C=t.onPressedMoveStart,k=t.onPressedMoving,I=t.onPressedMoveEnd,E=t.onMouseEnter,A=t.onMouseLeave,P=t.onRemoved,M=t.onSelected,D=t.onDeselected;this.name=r,this.totalStep=!Et(o)||o<2?1:o,this.lock=null!==s&&void 0!==s&&s,this.visible=null===l||void 0===l||l,this.zLevel=null!==c&&void 0!==c?c:0,this.needDefaultPointFigure=null!==u&&void 0!==u&&u,this.needDefaultXAxisFigure=null!==d&&void 0!==d&&d,this.needDefaultYAxisFigure=null!==h&&void 0!==h&&h,this.mode=null!==e&&void 0!==e?e:Ut.Normal,this.modeSensitivity=null!==i&&void 0!==i?i:8,this.extendData=n,this.styles=St(null!==a&&void 0!==a?a:{}),this.createPointFigures=null!==p&&void 0!==p?p:null,this.createXAxisFigures=null!==v&&void 0!==v?v:null,this.createYAxisFigures=null!==f&&void 0!==f?f:null,this.performEventPressedMove=null!==g&&void 0!==g?g:null,this.performEventMoveForDrawing=null!==m&&void 0!==m?m:null,this.onDrawStart=null!==y&&void 0!==y?y:null,this.onDrawing=null!==_&&void 0!==_?_:null,this.onDrawEnd=null!==b&&void 0!==b?b:null,this.onClick=null!==x&&void 0!==x?x:null,this.onDoubleClick=null!==w&&void 0!==w?w:null,this.onRightClick=null!==S&&void 0!==S?S:null,this.onPressedMoveStart=null!==C&&void 0!==C?C:null,this.onPressedMoving=null!==k&&void 0!==k?k:null,this.onPressedMoveEnd=null!==I&&void 0!==I?I:null,this.onMouseEnter=null!==E&&void 0!==E?E:null,this.onMouseLeave=null!==A&&void 0!==A?A:null,this.onRemoved=null!==P&&void 0!==P?P:null,this.onSelected=null!==M&&void 0!==M?M:null,this.onDeselected=null!==D&&void 0!==D?D:null}return t.prototype.setId=function(t){return!Mt(this.id)&&(this.id=t,!0)},t.prototype.setGroupId=function(t){return!Mt(this.groupId)&&(this.groupId=t,!0)},t.prototype.setPaneId=function(t){this.paneId=t},t.prototype.setExtendData=function(t){return t!==this.extendData&&(this.extendData=t,!0)},t.prototype.setStyles=function(t){return wt(this.styles,t),!0},t.prototype.setPoints=function(t){if(t.length>0){var e=void 0;if(this.points=q([],Z(t),!1),t.length>=this.totalStep-1?(this.currentStep=Qt,e=this.totalStep-1):(this.currentStep=t.length+1,e=t.length),null!==this.performEventMoveForDrawing)for(var i=0;is?n=r:a=r,o<=2)break}return n}function ve(t){var e=Math.floor(ye(t)),i=_e(e),n=t/i,a=0;return a=n<1.5?1:n<2.5?2:n<3.5?3:n<4.5?4:n<5.5?5:n<6.5?6:8,t=a*i,e>=-20?+t.toFixed(e<0?-e:0):t}function fe(t,e){null==e&&(e=10),e=Math.min(Math.max(0,e),20);var i=(+t).toFixed(e);return+i}function ge(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var a=e.indexOf(".");return a<0?0:e.length-1-a}function me(t,e,i){var n=[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER];return t.forEach(function(t){var a,r;n[0]=Math.max(null!==(a=t[e])&&void 0!==a?a:t,n[0]),n[1]=Math.min(null!==(r=t[i])&&void 0!==r?r:t,n[1])}),n}function ye(t){return Math.log(t)/Math.log(10)}function _e(t){return Math.pow(10,t)}function be(){return{from:0,to:0,realFrom:0,realTo:0}}var xe={MIN:1,MAX:50},we=8,Se=80,Ce=.88,ke=10,Ie=function(){function t(t){this._dateTimeFormat=this._buildDateTimeFormat(),this._zoomEnabled=!0,this._scrollEnabled=!0,this._totalBarSpace=0,this._barSpace=we,this._offsetRightDistance=Se,this._startLastBarRightSideDiffBarCount=0,this._scrollLimitRole=0,this._minVisibleBarCount={left:2,right:2},this._maxOffsetDistance={left:50,right:50},this._visibleRange=be(),this._chartStore=t,this._gapBarSpace=this._calcGapBarSpace(),this._lastBarRightSideDiffBarCount=this._offsetRightDistance/this._barSpace}return t.prototype._calcGapBarSpace=function(){var t;return this._barSpace>3?t=Math.floor(this._barSpace*Ce):(t=Math.floor(this._barSpace),t===this._barSpace&&t--),t%2===0&&t--,t=Math.max(1,t),t},t.prototype.adjustVisibleRange=function(){var t,e,i,n,a=this._chartStore.getDataList(),r=a.length,o=this._totalBarSpace/this._barSpace;1===this._scrollLimitRole?(i=(this._totalBarSpace-this._maxOffsetDistance.right)/this._barSpace,n=(this._totalBarSpace-this._maxOffsetDistance.left)/this._barSpace):(i=this._minVisibleBarCount.left,n=this._minVisibleBarCount.right),i=Math.max(0,i),n=Math.max(0,n);var s=o-Math.min(i,r);this._lastBarRightSideDiffBarCount>s&&(this._lastBarRightSideDiffBarCount=s);var l=-r+Math.min(n,r);this._lastBarRightSideDiffBarCountr&&(c=r);var d=Math.round(c-o)-1;d<0&&(d=0);var h=this._lastBarRightSideDiffBarCount>0?Math.round(r+this._lastBarRightSideDiffBarCount-o)-1:d;if(this._visibleRange={from:d,to:c,realFrom:h,realTo:u},this._chartStore.getActionStore().execute(Tt.OnVisibleRangeChange,this._visibleRange),this._chartStore.adjustVisibleDataList(),0===d){var p=a[0];this._chartStore.executeLoadMoreCallback(null!==(t=null===p||void 0===p?void 0:p.timestamp)&&void 0!==t?t:null),this._chartStore.executeLoadDataCallback({type:Yt.Forward,data:null!==p&&void 0!==p?p:null})}c===r&&this._chartStore.executeLoadDataCallback({type:Yt.Backward,data:null!==(e=a[r-1])&&void 0!==e?e:null})},t.prototype.getDateTimeFormat=function(){return this._dateTimeFormat},t.prototype._buildDateTimeFormat=function(t){var e={hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"};Mt(t)&&(e.timeZone=t);var i=null;try{i=new Intl.DateTimeFormat("en",e)}catch(n){_t("","","Timezone is error!!!")}return i},t.prototype.setTimezone=function(t){var e=this._buildDateTimeFormat(t);null!==e&&(this._dateTimeFormat=e)},t.prototype.getTimezone=function(){return this._dateTimeFormat.resolvedOptions().timeZone},t.prototype.getBarSpace=function(){return{bar:this._barSpace,halfBar:this._barSpace/2,gapBar:this._gapBarSpace,halfGapBar:Math.floor(this._gapBarSpace/2)}},t.prototype.setBarSpace=function(t,e){txe.MAX||this._barSpace===t||(this._barSpace=t,this._gapBarSpace=this._calcGapBarSpace(),null===e||void 0===e||e(),this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0))},t.prototype.setTotalBarSpace=function(t){return this._totalBarSpace!==t&&(this._totalBarSpace=t,this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0)),this},t.prototype.setOffsetRightDistance=function(t,e){return this._offsetRightDistance=1===this._scrollLimitRole?Math.min(this._maxOffsetDistance.right,t):t,this._lastBarRightSideDiffBarCount=this._offsetRightDistance/this._barSpace,null!==e&&void 0!==e&&e&&(this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0)),this},t.prototype.resetOffsetRightDistance=function(){this.setOffsetRightDistance(this._offsetRightDistance)},t.prototype.getInitialOffsetRightDistance=function(){return this._offsetRightDistance},t.prototype.getOffsetRightDistance=function(){return Math.max(0,this._lastBarRightSideDiffBarCount*this._barSpace)},t.prototype.getLastBarRightSideDiffBarCount=function(){return this._lastBarRightSideDiffBarCount},t.prototype.setLastBarRightSideDiffBarCount=function(t){return this._lastBarRightSideDiffBarCount=t,this},t.prototype.setMaxOffsetLeftDistance=function(t){return this._scrollLimitRole=1,this._maxOffsetDistance.left=t,this},t.prototype.setMaxOffsetRightDistance=function(t){return this._scrollLimitRole=1,this._maxOffsetDistance.right=t,this},t.prototype.setLeftMinVisibleBarCount=function(t){return this._scrollLimitRole=0,this._minVisibleBarCount.left=t,this},t.prototype.setRightMinVisibleBarCount=function(t){return this._scrollLimitRole=0,this._minVisibleBarCount.right=t,this},t.prototype.getVisibleRange=function(){return this._visibleRange},t.prototype.startScroll=function(){this._startLastBarRightSideDiffBarCount=this._lastBarRightSideDiffBarCount},t.prototype.scroll=function(t){if(this._scrollEnabled){var e=t/this._barSpace,i=this._lastBarRightSideDiffBarCount*this._barSpace;this._lastBarRightSideDiffBarCount=this._startLastBarRightSideDiffBarCount-e,this.adjustVisibleRange(),this._chartStore.getTooltipStore().recalculateCrosshair(!0),this._chartStore.getChart().adjustPaneViewport(!1,!0,!0,!0);var n=Math.round(i-this._lastBarRightSideDiffBarCount*this._barSpace);0!==n&&this._chartStore.getActionStore().execute(Tt.OnScroll,{distance:n})}},t.prototype.getDataByDataIndex=function(t){var e;return null!==(e=this._chartStore.getDataList()[t])&&void 0!==e?e:null},t.prototype.coordinateToFloatIndex=function(t){var e=this._chartStore.getDataList().length,i=(this._totalBarSpace-t)/this._barSpace,n=e+this._lastBarRightSideDiffBarCount-i;return Math.round(1e6*n)/1e6},t.prototype.dataIndexToTimestamp=function(t){var e,i=this.getDataByDataIndex(t);return null!==(e=null===i||void 0===i?void 0:i.timestamp)&&void 0!==e?e:null},t.prototype.timestampToDataIndex=function(t){var e=this._chartStore.getDataList();return 0===e.length?0:pe(e,"timestamp",t)},t.prototype.dataIndexToCoordinate=function(t){var e=this._chartStore.getDataList().length,i=e+this._lastBarRightSideDiffBarCount-t;return Math.floor(this._totalBarSpace-(i-.5)*this._barSpace)},t.prototype.coordinateToDataIndex=function(t){return Math.ceil(this.coordinateToFloatIndex(t))-1},t.prototype.zoom=function(t,e){var i,n=this;if(this._zoomEnabled){var a=null!==e&&void 0!==e?e:null;if(!Et(null===a||void 0===a?void 0:a.x)){var r=this._chartStore.getTooltipStore().getCrosshair();a={x:null!==(i=null===r||void 0===r?void 0:r.x)&&void 0!==i?i:this._totalBarSpace/2}}var o=a.x,s=this.coordinateToFloatIndex(o),l=this._barSpace,c=this._barSpace+t*(this._barSpace/ke);this.setBarSpace(c,function(){n._lastBarRightSideDiffBarCount+=s-n.coordinateToFloatIndex(o)});var u=this._barSpace/l;1!==u&&this._chartStore.getActionStore().execute(Tt.OnZoom,{scale:u})}},t.prototype.setZoomEnabled=function(t){return this._zoomEnabled=t,this},t.prototype.getZoomEnabled=function(){return this._zoomEnabled},t.prototype.setScrollEnabled=function(t){return this._scrollEnabled=t,this},t.prototype.getScrollEnabled=function(){return this._scrollEnabled},t.prototype.clear=function(){this._visibleRange=be()},t}(),Ee={name:"AVP",shortName:"AVP",series:Xt.Price,precision:2,figures:[{key:"avp",title:"AVP: ",type:"line"}],calc:function(t){var e=0,i=0;return t.map(function(t){var n,a,r={},o=null!==(n=null===t||void 0===t?void 0:t.turnover)&&void 0!==n?n:0,s=null!==(a=null===t||void 0===t?void 0:t.volume)&&void 0!==a?a:0;return e+=o,i+=s,0!==i&&(r.avp=e/i),r})}},Ae={name:"AO",shortName:"AO",calcParams:[5,34],figures:[{key:"ao",title:"AO: ",type:"bar",baseValue:0,styles:function(t,e,i){var n,a,r,o,s,l=t.prev,c=t.current,u=null!==(a=null===(n=l.indicatorData)||void 0===n?void 0:n.ao)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,d=null!==(o=null===(r=c.indicatorData)||void 0===r?void 0:r.ao)&&void 0!==o?o:Number.MIN_SAFE_INTEGER;s=d>u?Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):Rt(e.styles,"bars[0].downColor",i.bars[0].downColor);var h=d>u?O.Stroke:O.Fill;return{color:s,style:h,borderColor:s}}}],calc:function(t,e){var i=e.calcParams,n=Math.max(i[0],i[1]),a=0,r=0,o=0,s=0;return t.map(function(e,l){var c={},u=(e.low+e.high)/2;if(a+=u,r+=u,l>=i[0]-1){o=a/i[0];var d=t[l-(i[0]-1)];a-=(d.low+d.high)/2}if(l>=i[1]-1){s=r/i[1];d=t[l-(i[1]-1)];r-=(d.low+d.high)/2}return l>=n-1&&(c.ao=o-s),c})}},Pe={name:"BIAS",shortName:"BIAS",calcParams:[6,12,24],figures:[{key:"bias1",title:"BIAS6: ",type:"line"},{key:"bias2",title:"BIAS12: ",type:"line"},{key:"bias3",title:"BIAS24: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"bias".concat(e+1),title:"BIAS".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[];return t.map(function(e,r){var o={},s=e.close;return i.forEach(function(e,l){var c;if(a[l]=(null!==(c=a[l])&&void 0!==c?c:0)+s,r>=e-1){var u=a[l]/i[l];o[n[l].key]=(s-u)/u*100,a[l]-=t[r-(e-1)].close}}),o})}};function Me(t,e){var i=t.length,n=0;return t.forEach(function(t){var i=t.close-e;n+=i*i}),n=Math.abs(n),Math.sqrt(n/i)}var De={name:"BOLL",shortName:"BOLL",series:Xt.Price,calcParams:[20,2],precision:2,shouldOhlc:!0,figures:[{key:"up",title:"UP: ",type:"line"},{key:"mid",title:"MID: ",type:"line"},{key:"dn",title:"DN: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=i[0]-1,a=0;return t.map(function(e,r){var o=e.close,s={};if(a+=o,r>=n){s.mid=a/i[0];var l=Me(t.slice(r-n,r+1),s.mid);s.up=s.mid+i[1]*l,s.dn=s.mid-i[1]*l,a-=t[r-n].close}return s})}},Te={name:"BRAR",shortName:"BRAR",calcParams:[26],figures:[{key:"br",title:"BR: ",type:"line"},{key:"ar",title:"AR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0;return t.map(function(e,s){var l,c,u={},d=e.high,h=e.low,p=e.open,v=(null!==(l=t[s-1])&&void 0!==l?l:e).close;if(r+=d-p,o+=p-h,n+=d-v,a+=v-h,s>=i[0]-1){u.ar=0!==o?r/o*100:0,u.br=0!==a?n/a*100:0;var f=t[s-(i[0]-1)],g=f.high,m=f.low,y=f.open,_=(null!==(c=t[s-i[0]])&&void 0!==c?c:t[s-(i[0]-1)]).close;n-=g-_,a-=_-m,r-=g-y,o-=y-m}return u})}},Be={name:"BBI",shortName:"BBI",series:Xt.Price,precision:2,calcParams:[3,6,12,24],shouldOhlc:!0,figures:[{key:"bbi",title:"BBI: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.max.apply(Math,q([],Z(i),!1)),a=[],r=[];return t.map(function(e,o){var s={},l=e.close;if(i.forEach(function(e,i){var n;a[i]=(null!==(n=a[i])&&void 0!==n?n:0)+l,o>=e-1&&(r[i]=a[i]/e,a[i]-=t[o-(e-1)].close)}),o>=n-1){var c=0;r.forEach(function(t){c+=t}),s.bbi=c/4}return s})}},Fe={name:"CCI",shortName:"CCI",calcParams:[20],figures:[{key:"cci",title:"CCI: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=i[0]-1,a=0,r=[];return t.map(function(e,o){var s={},l=(e.high+e.low+e.close)/3;if(a+=l,r.push(l),o>=n){var c=a/i[0],u=r.slice(o-n,o+1),d=0;u.forEach(function(t){d+=Math.abs(t-c)});var h=d/i[0];s.cci=0!==h?(l-c)/h/.015:0;var p=(t[o-n].high+t[o-n].low+t[o-n].close)/3;a-=p}return s})}},Re={name:"CR",shortName:"CR",calcParams:[26,10,20,40,60],figures:[{key:"cr",title:"CR: ",type:"line"},{key:"ma1",title:"MA1: ",type:"line"},{key:"ma2",title:"MA2: ",type:"line"},{key:"ma3",title:"MA3: ",type:"line"},{key:"ma4",title:"MA4: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.ceil(i[1]/2.5+1),a=Math.ceil(i[2]/2.5+1),r=Math.ceil(i[3]/2.5+1),o=Math.ceil(i[4]/2.5+1),s=0,l=[],c=0,u=[],d=0,h=[],p=0,v=[],f=[];return t.forEach(function(e,g){var m,y,_,b,x,w={},S=null!==(m=t[g-1])&&void 0!==m?m:e,C=(S.high+S.close+S.low+S.open)/4,k=Math.max(0,e.high-C),I=Math.max(0,C-e.low);g>=i[0]-1&&(w.cr=0!==I?k/I*100:0,s+=w.cr,c+=w.cr,d+=w.cr,p+=w.cr,g>=i[0]+i[1]-2&&(l.push(s/i[1]),g>=i[0]+i[1]+n-3&&(w.ma1=l[l.length-1-n]),s-=null!==(y=f[g-(i[1]-1)].cr)&&void 0!==y?y:0),g>=i[0]+i[2]-2&&(u.push(c/i[2]),g>=i[0]+i[2]+a-3&&(w.ma2=u[u.length-1-a]),c-=null!==(_=f[g-(i[2]-1)].cr)&&void 0!==_?_:0),g>=i[0]+i[3]-2&&(h.push(d/i[3]),g>=i[0]+i[3]+r-3&&(w.ma3=h[h.length-1-r]),d-=null!==(b=f[g-(i[3]-1)].cr)&&void 0!==b?b:0),g>=i[0]+i[4]-2&&(v.push(p/i[4]),g>=i[0]+i[4]+o-3&&(w.ma4=v[v.length-1-o]),p-=null!==(x=f[g-(i[4]-1)].cr)&&void 0!==x?x:0)),f.push(w)}),f}},Le={name:"DMA",shortName:"DMA",calcParams:[10,50,10],figures:[{key:"dma",title:"DMA: ",type:"line"},{key:"ama",title:"AMA: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=Math.max(i[0],i[1]),a=0,r=0,o=0,s=[];return t.forEach(function(e,l){var c,u={},d=e.close;a+=d,r+=d;var h=0,p=0;if(l>=i[0]-1&&(h=a/i[0],a-=t[l-(i[0]-1)].close),l>=i[1]-1&&(p=r/i[1],r-=t[l-(i[1]-1)].close),l>=n-1){var v=h-p;u.dma=v,o+=v,l>=n+i[2]-2&&(u.ama=o/i[2],o-=null!==(c=s[l-(i[2]-1)].dma)&&void 0!==c?c:0)}s.push(u)}),s}},Ne={name:"DMI",shortName:"DMI",calcParams:[14,6],figures:[{key:"pdi",title:"PDI: ",type:"line"},{key:"mdi",title:"MDI: ",type:"line"},{key:"adx",title:"ADX: ",type:"line"},{key:"adxr",title:"ADXR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0,s=0,l=0,c=0,u=0,d=[];return t.forEach(function(e,h){var p,v,f={},g=null!==(p=t[h-1])&&void 0!==p?p:e,m=g.close,y=e.high,_=e.low,b=y-_,x=Math.abs(y-m),w=Math.abs(m-_),S=y-g.high,C=g.low-_,k=Math.max(Math.max(b,x),w),I=S>0&&S>C?S:0,E=C>0&&C>S?C:0;if(n+=k,a+=I,r+=E,h>=i[0]-1){h>i[0]-1?(o=o-o/i[0]+k,s=s-s/i[0]+I,l=l-l/i[0]+E):(o=n,s=a,l=r);var A=0,P=0;0!==o&&(A=100*s/o,P=100*l/o),f.pdi=A,f.mdi=P;var M=0;P+A!==0&&(M=Math.abs(P-A)/(P+A)*100),c+=M,h>=2*i[0]-2&&(u=h>2*i[0]-2?(u*(i[0]-1)+M)/i[0]:c/i[0],f.adx=u,h>=2*i[0]+i[1]-3&&(f.adxr=((null!==(v=d[h-(i[1]-1)].adx)&&void 0!==v?v:0)+u)/2))}d.push(f)}),d}},Oe={name:"EMV",shortName:"EMV",calcParams:[14,9],figures:[{key:"emv",title:"EMV: ",type:"line"},{key:"maEmv",title:"MAEMV: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=[];return t.map(function(e,r){var o,s={};if(r>0){var l=t[r-1],c=e.high,u=e.low,d=null!==(o=e.volume)&&void 0!==o?o:0,h=(c+u)/2-(l.high+l.low)/2;if(0===d||c-u===0)s.emv=0;else{var p=d/1e8/(c-u);s.emv=h/p}n+=s.emv,a.push(s.emv),r>=i[0]&&(s.maEmv=n/i[0],n-=a[r-i[0]])}return s})}},ze={name:"EMA",shortName:"EMA",series:Xt.Price,calcParams:[6,12,20],precision:2,shouldOhlc:!0,figures:[{key:"ema1",title:"EMA6: ",type:"line"},{key:"ema2",title:"EMA12: ",type:"line"},{key:"ema3",title:"EMA20: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"ema".concat(e+1),title:"EMA".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=0,r=[];return t.map(function(t,e){var o={},s=t.close;return a+=s,i.forEach(function(t,i){e>=t-1&&(r[i]=e>t-1?(2*s+(t-1)*r[i])/(t+1):a/t,o[n[i].key]=r[i])}),o})}},Ve={name:"MTM",shortName:"MTM",calcParams:[12,6],figures:[{key:"mtm",title:"MTM: ",type:"line"},{key:"maMtm",title:"MAMTM: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=[];return t.forEach(function(e,r){var o,s={};if(r>=i[0]){var l=e.close,c=t[r-i[0]].close;s.mtm=l-c,n+=s.mtm,r>=i[0]+i[1]-1&&(s.maMtm=n/i[1],n-=null!==(o=a[r-(i[1]-1)].mtm)&&void 0!==o?o:0)}a.push(s)}),a}},We={name:"MA",shortName:"MA",series:Xt.Price,calcParams:[5,10,30,60],precision:2,shouldOhlc:!0,figures:[{key:"ma5",title:"MA5: ",type:"line"},{key:"ma10",title:"MA10: ",type:"line"},{key:"ma30",title:"MA30: ",type:"line"},{key:"ma60",title:"MA60: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){return{key:"ma".concat(e+1),title:"MA".concat(t,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[];return t.map(function(e,r){var o={},s=e.close;return i.forEach(function(e,i){var l;a[i]=(null!==(l=a[i])&&void 0!==l?l:0)+s,r>=e-1&&(o[n[i].key]=a[i]/e,a[i]-=t[r-(e-1)].close)}),o})}},He={name:"MACD",shortName:"MACD",calcParams:[12,26,9],figures:[{key:"dif",title:"DIF: ",type:"line"},{key:"dea",title:"DEA: ",type:"line"},{key:"macd",title:"MACD: ",type:"bar",baseValue:0,styles:function(t,e,i){var n,a,r,o,s,l=t.prev,c=t.current,u=null!==(a=null===(n=l.indicatorData)||void 0===n?void 0:n.macd)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,d=null!==(o=null===(r=c.indicatorData)||void 0===r?void 0:r.macd)&&void 0!==o?o:Number.MIN_SAFE_INTEGER;s=d>0?Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):d<0?Rt(e.styles,"bars[0].downColor",i.bars[0].downColor):Rt(e.styles,"bars[0].noChangeColor",i.bars[0].noChangeColor);var h=u=a[0]-1&&(i=e>a[0]-1?(2*d+(a[0]-1)*i)/(a[0]+1):r/a[0]),e>=a[1]-1&&(n=e>a[1]-1?(2*d+(a[1]-1)*n)/(a[1]+1):r/a[1]),e>=c-1&&(o=i-n,u.dif=o,s+=o,e>=c+a[2]-2&&(l=e>c+a[2]-2?(2*o+l*(a[2]-1))/(a[2]+1):s/a[2],u.macd=2*(o-l),u.dea=l)),u})}},$e={name:"OBV",shortName:"OBV",calcParams:[30],figures:[{key:"obv",title:"OBV: ",type:"line"},{key:"maObv",title:"MAOBV: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=[];return t.forEach(function(e,o){var s,l,c,u,d=null!==(s=t[o-1])&&void 0!==s?s:e;e.closed.close&&(a+=null!==(c=e.volume)&&void 0!==c?c:0);var h={obv:a};n+=a,o>=i[0]-1&&(h.maObv=n/i[0],n-=null!==(u=r[o-(i[0]-1)].obv)&&void 0!==u?u:0),r.push(h)}),r}},Ye={name:"PVT",shortName:"PVT",figures:[{key:"pvt",title:"PVT: ",type:"line"}],calc:function(t){var e=0;return t.map(function(i,n){var a,r,o={},s=i.close,l=null!==(a=i.volume)&&void 0!==a?a:1,c=(null!==(r=t[n-1])&&void 0!==r?r:i).close,u=0,d=c*l;return 0!==d&&(u=(s-c)/d),e+=u,o.pvt=e,o})}},Xe={name:"PSY",shortName:"PSY",calcParams:[12,6],figures:[{key:"psy",title:"PSY: ",type:"line"},{key:"maPsy",title:"MAPSY: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=[],o=[];return t.forEach(function(e,s){var l,c,u={},d=(null!==(l=t[s-1])&&void 0!==l?l:e).close,h=e.close-d>0?1:0;r.push(h),n+=h,s>=i[0]-1&&(u.psy=n/i[0]*100,a+=u.psy,s>=i[0]+i[1]-2&&(u.maPsy=a/i[1],a-=null!==(c=o[s-(i[1]-1)].psy)&&void 0!==c?c:0),n-=r[s-(i[0]-1)]),o.push(u)}),o}},Ke={name:"ROC",shortName:"ROC",calcParams:[12,6],figures:[{key:"roc",title:"ROC: ",type:"line"},{key:"maRoc",title:"MAROC: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=[],a=0;return t.forEach(function(e,r){var o,s,l={};if(r>=i[0]-1){var c=e.close,u=(null!==(o=t[r-i[0]])&&void 0!==o?o:t[r-(i[0]-1)]).close;l.roc=0!==u?(c-u)/u*100:0,a+=l.roc,r>=i[0]-1+i[1]-1&&(l.maRoc=a/i[1],a-=null!==(s=n[r-(i[1]-1)].roc)&&void 0!==s?s:0)}n.push(l)}),n}},je={name:"RSI",shortName:"RSI",calcParams:[6,12,24],figures:[{key:"rsi1",title:"RSI1: ",type:"line"},{key:"rsi2",title:"RSI2: ",type:"line"},{key:"rsi3",title:"RSI3: ",type:"line"}],regenerateFigures:function(t){return t.map(function(t,e){var i=e+1;return{key:"rsi".concat(i),title:"RSI".concat(i,": "),type:"line"}})},calc:function(t,e){var i=e.calcParams,n=e.figures,a=[],r=[];return t.map(function(e,o){var s,l={},c=(null!==(s=t[o-1])&&void 0!==s?s:e).close,u=e.close-c;return i.forEach(function(e,i){var s,c,d;if(u>0?a[i]=(null!==(s=a[i])&&void 0!==s?s:0)+u:r[i]=(null!==(c=r[i])&&void 0!==c?c:0)+Math.abs(u),o>=e-1){0!==r[i]?l[n[i].key]=100-100/(1+a[i]/r[i]):l[n[i].key]=0;var h=t[o-(e-1)],p=null!==(d=t[o-e])&&void 0!==d?d:h,v=h.close-p.close;v>0?a[i]-=v:r[i]-=Math.abs(v)}}),l})}},Ue={name:"SMA",shortName:"SMA",series:Xt.Price,calcParams:[12,2],precision:2,figures:[{key:"sma",title:"SMA: ",type:"line"}],shouldOhlc:!0,calc:function(t,e){var i=e.calcParams,n=0,a=0;return t.map(function(t,e){var r={},o=t.close;return n+=o,e>=i[0]-1&&(a=e>i[0]-1?(o*i[1]+a*(i[0]-i[1]+1))/(i[0]+1):n/i[0],r.sma=a),r})}},Ge={name:"KDJ",shortName:"KDJ",calcParams:[9,3,3],figures:[{key:"k",title:"K: ",type:"line"},{key:"d",title:"D: ",type:"line"},{key:"j",title:"J: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=[];return t.forEach(function(e,a){var r,o,s,l,c={},u=e.close;if(a>=i[0]-1){var d=me(t.slice(a-(i[0]-1),a+1),"high","low"),h=d[0],p=d[1],v=h-p,f=(u-p)/(0===v?1:v)*100;c.k=((i[1]-1)*(null!==(o=null===(r=n[a-1])||void 0===r?void 0:r.k)&&void 0!==o?o:50)+f)/i[1],c.d=((i[2]-1)*(null!==(l=null===(s=n[a-1])||void 0===s?void 0:s.d)&&void 0!==l?l:50)+c.k)/i[2],c.j=3*c.k-2*c.d}n.push(c)}),n}},Ze={name:"SAR",shortName:"SAR",series:Xt.Price,calcParams:[2,2,20],precision:2,shouldOhlc:!0,figures:[{key:"sar",title:"SAR: ",type:"circle",styles:function(t,e,i){var n,a,r=t.current,o=null!==(a=null===(n=r.indicatorData)||void 0===n?void 0:n.sar)&&void 0!==a?a:Number.MIN_SAFE_INTEGER,s=r.kLineData,l=((null===s||void 0===s?void 0:s.high)+(null===s||void 0===s?void 0:s.low))/2,c=oe.low?(c=s,o=n,s=-100,l=!l):c>p&&(c=p)}else{(-100===s||s>h)&&(s=h,o=Math.min(o+a,r)),c=u+o*(s-u);var v=Math.max(t[Math.max(1,i)-1].high,d);c=r[0]-1&&(i=e>r[0]-1?(2*p+(r[0]-1)*i)/(r[0]+1):o/r[0],s+=i,e>=2*r[0]-2&&(n=e>2*r[0]-2?(2*i+(r[0]-1)*n)/(r[0]+1):s/r[0],l+=n,e>=3*r[0]-3))){var v=void 0,f=0;e>3*r[0]-3?(v=(2*n+(r[0]-1)*a)/(r[0]+1),f=(v-a)/a*100):v=l/r[0],a=v,h.trix=f,c+=f,e>=3*r[0]+r[1]-4&&(h.maTrix=c/r[1],c-=null!==(d=u[e-(r[1]-1)].trix)&&void 0!==d?d:0)}u.push(h)}),u}};function Je(){return{key:"volume",title:"VOLUME: ",type:"bar",baseValue:0,styles:function(t,e,i){var n=t.current.kLineData,a=Rt(e.styles,"bars[0].noChangeColor",i.bars[0].noChangeColor);return At(n)&&(n.close>n.open?a=Rt(e.styles,"bars[0].upColor",i.bars[0].upColor):n.close=e-1&&(l[n[i].key]=a[i]/e,a[i]-=null!==(c=t[r-(e-1)].volume)&&void 0!==c?c:0)}),l})}},ti={name:"VR",shortName:"VR",calcParams:[26,6],figures:[{key:"vr",title:"VR: ",type:"line"},{key:"maVr",title:"MAVR: ",type:"line"}],calc:function(t,e){var i=e.calcParams,n=0,a=0,r=0,o=0,s=[];return t.forEach(function(e,l){var c,u,d,h,p,v={},f=e.close,g=(null!==(c=t[l-1])&&void 0!==c?c:e).close,m=null!==(u=e.volume)&&void 0!==u?u:0;if(f>g?n+=m:f=i[0]-1){var y=r/2;v.vr=a+y===0?0:(n+y)/(a+y)*100,o+=v.vr,l>=i[0]+i[1]-2&&(v.maVr=o/i[1],o-=null!==(d=s[l-(i[1]-1)].vr)&&void 0!==d?d:0);var _=t[l-(i[0]-1)],b=null!==(h=t[l-i[0]])&&void 0!==h?h:_,x=_.close,w=null!==(p=_.volume)&&void 0!==p?p:0;x>b.close?n-=w:x=s){var l=me(t.slice(a-s,a+1),"high","low"),c=l[0],u=l[1],d=c-u;r[n[i].key]=0===d?0:(o-c)/d*100}}),r})}},ii={},ni=[Ee,Ae,Pe,De,Te,Be,Fe,Re,Le,Ne,Oe,ze,Ve,We,He,$e,Ye,Xe,Ke,je,Ue,Ge,Ze,qe,Qe,ti,ei];function ai(t){ii[t.name]=Gt.extend(t)}function ri(t){var e;return null!==(e=ii[t])&&void 0!==e?e:null}ni.forEach(function(t){ii[t.name]=Gt.extend(t)});var oi=function(){function t(t){this._instances=new Map,this._chartStore=t}return t.prototype._overrideInstance=function(t,e){var i=e.shortName,n=e.series,a=e.calcParams,r=e.precision,o=e.figures,s=e.minValue,l=e.maxValue,c=e.shouldOhlc,u=e.shouldFormatBigNumber,d=e.visible,h=e.zLevel,p=e.styles,v=e.extendData,f=e.regenerateFigures,g=e.createTooltipDataSource,m=e.draw,y=e.calc,_=!1;Mt(i)&&t.setShortName(i)&&(_=!0),At(n)&&t.setSeries(n)&&(_=!0);var b=!1;Ct(a)&&t.setCalcParams(a)&&(_=!0,b=!0),Ct(o)&&t.setFigures(o)&&(_=!0,b=!0),void 0!==s&&t.setMinValue(s)&&(_=!0),void 0!==l&&t.setMinValue(l)&&(_=!0),Et(r)&&t.setPrecision(r)&&(_=!0),Pt(c)&&t.setShouldOhlc(c)&&(_=!0),Pt(u)&&t.setShouldFormatBigNumber(u)&&(_=!0),Pt(d)&&t.setVisible(d)&&(_=!0);var x=!1;return Et(h)&&t.setZLevel(h)&&(_=!0,x=!0),At(p)&&t.setStyles(p)&&(_=!0),void 0!==v&&t.setExtendData(v)&&(_=!0,b=!0),void 0!==f&&t.setRegenerateFigures(f)&&(_=!0),void 0!==g&&t.setCreateTooltipDataSource(g)&&(_=!0),void 0!==m&&t.setDraw(m)&&(_=!0),kt(y)&&(t.calc=y,b=!0),[_,b,x]},t.prototype._sort=function(t){var e;Mt(t)?null===(e=this._instances.get(t))||void 0===e||e.sort(function(t,e){return t.zLevel-e.zLevel}):this._instances.forEach(function(t){t.sort(function(t,e){return t.zLevel-e.zLevel})})},t.prototype.addInstance=function(t,e,i){return j(this,void 0,void 0,function(){var n,a,r,o,s;return U(this,function(l){switch(l.label){case 0:return n=t.name,a=this._instances.get(e),At(a)?(r=a.find(function(t){return t.name===n}),At(r)?[4,Promise.reject(new Error("Duplicate indicators."))]:[3,2]):[3,2];case 1:return[2,l.sent()];case 2:return At(a)||(a=[]),o=ri(n),s=new o,this.synchronizeSeriesPrecision(s),this._overrideInstance(s,t),i||(a=[]),a.push(s),this._instances.set(e,a),this._sort(e),[4,s.calcIndicator(this._chartStore.getDataList())];case 3:return[2,l.sent()]}})})},t.prototype.getInstances=function(t){var e;return null!==(e=this._instances.get(t))&&void 0!==e?e:[]},t.prototype.removeInstance=function(t,e){var i,n=!1,a=this._instances.get(t);if(At(a)){if(Mt(e)){var r=a.findIndex(function(t){return t.name===e});r>-1&&(a.splice(r,1),n=!0)}else this._instances.set(t,[]),n=!0;0===(null===(i=this._instances.get(t))||void 0===i?void 0:i.length)&&this._instances.delete(t)}return n},t.prototype.hasInstances=function(t){return this._instances.has(t)},t.prototype.calcInstance=function(t,e){return j(this,void 0,void 0,function(){var i,n,a,r,o=this;return U(this,function(s){switch(s.label){case 0:return i=[],Mt(t)?Mt(e)?(n=this._instances.get(e),At(n)&&(a=n.find(function(e){return e.name===t}),At(a)&&i.push(a.calcIndicator(this._chartStore.getDataList())))):this._instances.forEach(function(e){var n=e.find(function(e){return e.name===t});At(n)&&i.push(n.calcIndicator(o._chartStore.getDataList()))}):this._instances.forEach(function(t){t.forEach(function(t){i.push(t.calcIndicator(o._chartStore.getDataList()))})}),[4,Promise.all(i)];case 1:return r=s.sent(),[2,r.includes(!0)]}})})},t.prototype.getInstanceByPaneId=function(t,e){var i,n,a=function(t){var e=new Map;return t.forEach(function(t){e.set(t.name,t)}),e};if(Mt(t)){var r=null!==(i=this._instances.get(t))&&void 0!==i?i:[];return Mt(e)?null!==(n=null===r||void 0===r?void 0:r.find(function(t){return t.name===e}))&&void 0!==n?n:null:a(r)}var o=new Map;return this._instances.forEach(function(t,e){o.set(e,a(t))}),o},t.prototype.synchronizeSeriesPrecision=function(t){var e=this._chartStore.getPrecision(),i=e.price,n=e.volume,a=function(t){switch(t.series){case Xt.Price:t.setPrecision(i,!0);break;case Xt.Volume:t.setPrecision(n,!0);break}};At(t)?a(t):this._instances.forEach(function(t){t.forEach(function(t){a(t)})})},t.prototype.override=function(t,e){return j(this,void 0,void 0,function(){var i,n,a,r,o,s,l,c=this;return U(this,function(u){switch(u.label){case 0:return i=t.name,n=new Map,null!==e?(a=this._instances.get(e),At(a)&&n.set(e,a)):n=this._instances,r=!1,o=[],s=!1,n.forEach(function(e){var n=e.find(function(t){return t.name===i});if(At(n)){var a=c._overrideInstance(n,t);a[2]&&(s=!0),a[1]?o.push(n.calcIndicator(c._chartStore.getDataList())):a[0]&&(r=!0)}}),s&&this._sort(),[4,Promise.all(o)];case 1:return l=u.sent(),[2,[r,l.includes(!0)]]}})})},t}(),si=function(){function t(t){this._crosshair={},this._activeIcon=null,this._chartStore=t}return t.prototype.setCrosshair=function(t,e){var i,n,a=null!==e&&void 0!==e?e:{},r=a.notInvalidate,o=a.notExecuteAction,s=this._chartStore.getDataList(),l=null!==t&&void 0!==t?t:{};Et(l.x)?(i=this._chartStore.getTimeScaleStore().coordinateToDataIndex(l.x),n=i<0?0:i>s.length-1?s.length-1:i):(i=s.length-1,n=i);var c=s[n],u=this._chartStore.getTimeScaleStore().dataIndexToCoordinate(i),d={x:this._crosshair.x,y:this._crosshair.y,paneId:this._crosshair.paneId};this._crosshair=K(K({},l),{realX:u,kLineData:c,realDataIndex:i,dataIndex:n}),d.x===l.x&&d.y===l.y&&d.paneId===l.paneId||(null===c||null!==o&&void 0!==o&&o||this._chartStore.getChart().crosshairChange(this._crosshair),null!==r&&void 0!==r&&r||this._chartStore.getChart().updatePane(1))},t.prototype.recalculateCrosshair=function(t){this.setCrosshair(this._crosshair,{notInvalidate:t})},t.prototype.getCrosshair=function(){return this._crosshair},t.prototype.setActiveIcon=function(t){this._activeIcon=null!==t&&void 0!==t?t:null},t.prototype.getActiveIcon=function(){return this._activeIcon},t.prototype.clear=function(){this.setCrosshair({},{notInvalidate:!0}),this.setActiveIcon()},t}(),li={name:"fibonacciLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e,i=t.coordinates,n=t.bounding,a=t.overlay,r=t.precision,o=t.thousandsSeparator,s=t.decimalFoldThreshold,l=t.yAxis,c=a.points;if(i.length>0){var u=null===(e=null===l||void 0===l?void 0:l.isInCandle())||void 0===e||e?r.price:r.excludePriceVolumeMax,d=[],h=[],p=0,v=n.width;if(i.length>1&&Et(c[0].value)&&Et(c[1].value)){var f=[1,.786,.618,.5,.382,.236,0],g=i[0].y-i[1].y,m=c[0].value-c[1].value;f.forEach(function(t){var e,n=i[1].y+g*t,a=Vt(zt(((null!==(e=c[1].value)&&void 0!==e?e:0)+m*t).toFixed(u),o),s);d.push({coordinates:[{x:p,y:n},{x:v,y:n}]}),h.push({x:p,y:n,text:"".concat(a," (").concat((100*t).toFixed(1),"%)"),baseline:"bottom"})})}return[{type:"line",attrs:d},{type:"text",isCheckEvent:!1,attrs:h}]}return[]}},ci={name:"horizontalRayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding,n={x:0,y:e[0].y};return At(e[1])&&e[0].x-1)for(var a=n;a>-1;a--)if(this._children[a].dispatchEvent(t,e,i))return!0;return this.onEvent(t,e,i)},t.prototype.addChild=function(t){return this._children.push(t),this},t.prototype.clear=function(){this._children=[]},t}(),pi=2,vi=function(t){function e(e){var i=t.call(this)||this;return i.attrs=e.attrs,i.styles=e.styles,i}return L(e,t),e.prototype.checkEventOn=function(t){return this.checkEventOnImp(t,this.attrs,this.styles)},e.prototype.setAttrs=function(t){return this.attrs=t,this},e.prototype.setStyles=function(t){return this.styles=t,this},e.prototype.draw=function(t){this.drawImp(t,this.attrs,this.styles)},e.extend=function(t){var i=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return L(i,e),i.prototype.checkEventOnImp=function(e,i,n){return t.checkEventOn(e,i,n)},i.prototype.drawImp=function(e,i,n){t.draw(e,i,n)},i}(e);return i},e}(hi);function fi(t,e){var i=[];i=i.concat(e);for(var n=0;n1)for(var r=1;r0&&i<1?i:0:i?.5:0;if(a>0&&n>2){for(var r=e[0].x,o=e[0].y,s=1;s1&&(2!==i.length||i[0].x!==i[1].x&&i[0].y!==i[1].y?(t.save(),c%2===1&&t.translate(.5,.5),t.beginPath(),t.moveTo(i[0].x,i[0].y),_i(t,i,s),t.stroke(),t.closePath(),t.restore()):(t.beginPath(),i[0].x===i[1].x?(t.moveTo(i[0].x+v,i[0].y),t.lineTo(i[1].x+v,i[1].y)):(t.moveTo(i[0].x,i[0].y+v),t.lineTo(i[1].x,i[1].y+v)),t.stroke(),t.closePath()))})}var xi={name:"line",checkEventOn:fi,draw:function(t,e,i){bi(t,e,i)}};function wi(t,e,i){var n=null!==i&&void 0!==i?i:0,a=[];if(t.length>1)if(t[0].x===t[1].x){var r=0,o=e.height;if(a.push({coordinates:[{x:t[0].x,y:r},{x:t[0].x,y:o}]}),t.length>2){a.push({coordinates:[{x:t[2].x,y:r},{x:t[2].x,y:o}]});for(var s=t[0].x-t[2].x,l=0;l2){var f=t[2].y-p*t[2].x;a.push({coordinates:[{x:u,y:u*p+f},{x:d,y:d*p+f}]});for(s=v-f,l=0;l1){var i=void 0;return i=t[0].x===t[1].x&&t[0].y!==t[1].y?t[0].yt[1].x?{x:0,y:mi(t[0],t[1],{x:0,y:t[0].y})}:{x:e.width,y:mi(t[0],t[1],{x:e.width,y:t[0].y})},{coordinates:[t[0],i]}}return[]}var Ei={name:"rayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;return[{type:"line",attrs:Ii(e,i)}]}},Ai={name:"segment",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates;return 2===e.length?[{type:"line",attrs:{coordinates:e}}]:[]}},Pi={name:"straightLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;return 2===e.length?e[0].x===e[1].x?[{type:"line",attrs:{coordinates:[{x:e[0].x,y:0},{x:e[0].x,y:i.height}]}}]:[{type:"line",attrs:{coordinates:[{x:0,y:mi(e[0],e[1],{x:0,y:e[0].y})},{x:i.width,y:mi(e[0],e[1],{x:i.width,y:e[0].y})}]}}]:[]}},Mi={name:"verticalRayLine",totalStep:3,needDefaultPointFigure:!0,needDefaultXAxisFigure:!0,needDefaultYAxisFigure:!0,createPointFigures:function(t){var e=t.coordinates,i=t.bounding;if(2===e.length){var n={x:e[0].x,y:0};return e[0].y0&&l.set(e[0],n)};try{for(var u=G(this._instances),d=u.next();!d.done;d=u.next()){var h=d.value;c(h)}}catch(v){e={error:v}}finally{try{d&&!d.done&&(i=u.return)&&i.call(u)}finally{if(e)throw e.error}}this._instances=l}else this._instances.forEach(function(t,e){r.push(e),t.forEach(function(t){var e;null===(e=t.onRemoved)||void 0===e||e.call(t,{overlay:t})})}),this._instances.clear();if(r.length>0){var p=this._chartStore.getChart();r.forEach(function(t){p.updatePane(1,t)}),p.updatePane(1,Wi.X_AXIS)}},t.prototype.setPressedInstanceInfo=function(t){this._pressedInstanceInfo=t},t.prototype.getPressedInstanceInfo=function(){return this._pressedInstanceInfo},t.prototype.updatePointPosition=function(t,e){if(t>0){var i=this._chartStore.getDataList();this._instances.forEach(function(n){n.forEach(function(n){var a=n.points;a.forEach(function(n){if(!At(n.timestamp)&&At(n.dataIndex)){e===Yt.Forward&&(n.dataIndex=n.dataIndex+t);var a=i[n.dataIndex];n.timestamp=null===a||void 0===a?void 0:a.timestamp}})})})}},t.prototype.setHoverInstanceInfo=function(t,e){var i,n,a=this._hoverInstanceInfo,r=a.instance,o=a.figureType,s=a.figureKey,l=a.figureIndex;if(((null===r||void 0===r?void 0:r.id)!==(null===(i=t.instance)||void 0===i?void 0:i.id)||o!==t.figureType||l!==t.figureIndex)&&(this._hoverInstanceInfo=t,(null===r||void 0===r?void 0:r.id)!==(null===(n=t.instance)||void 0===n?void 0:n.id))){var c=!1,u=!1;null!==r&&(u=!0,kt(r.onMouseLeave)&&(r.onMouseLeave(K({overlay:r,figureKey:s,figureIndex:l},e)),c=!0)),null!==t.instance&&(u=!0,kt(t.instance.onMouseEnter)&&(t.instance.onMouseEnter(K({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e)),c=!0)),u&&this._sort(),c||this._chartStore.getChart().updatePane(1)}},t.prototype.getHoverInstanceInfo=function(){return this._hoverInstanceInfo},t.prototype.setClickInstanceInfo=function(t,e){var i,n,a,r,o,s,l,c,u,d=this._clickInstanceInfo,h=d.paneId,p=d.instance,v=d.figureType,f=d.figureKey,g=d.figureIndex;if(null!==(n=null===(i=t.instance)||void 0===i?void 0:i.isDrawing())&&void 0!==n&&n||null===(r=null===(a=t.instance)||void 0===a?void 0:a.onClick)||void 0===r||r.call(a,K({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e)),((null===p||void 0===p?void 0:p.id)!==(null===(o=t.instance)||void 0===o?void 0:o.id)||v!==t.figureType||g!==t.figureIndex)&&(this._clickInstanceInfo=t,(null===p||void 0===p?void 0:p.id)!==(null===(s=t.instance)||void 0===s?void 0:s.id))){null===(l=null===p||void 0===p?void 0:p.onDeselected)||void 0===l||l.call(p,K({overlay:p,figureKey:f,figureIndex:g},e)),null===(u=null===(c=t.instance)||void 0===c?void 0:c.onSelected)||void 0===u||u.call(c,K({overlay:t.instance,figureKey:t.figureKey,figureIndex:t.figureIndex},e));var m=this._chartStore.getChart();m.updatePane(1,t.paneId),h!==t.paneId&&m.updatePane(1,h),m.updatePane(1,Wi.X_AXIS)}},t.prototype.getClickInstanceInfo=function(){return this._clickInstanceInfo},t.prototype.isEmpty=function(){return 0===this._instances.size&&null===this._progressInstanceInfo},t.prototype.isDrawing=function(){var t,e;return null!==this._progressInstanceInfo&&null!==(e=null===(t=this._progressInstanceInfo)||void 0===t?void 0:t.instance.isDrawing())&&void 0!==e&&e},t}(),$i=function(){function t(){this._actions=new Map}return t.prototype.execute=function(t,e){var i;null===(i=this._actions.get(t))||void 0===i||i.execute(e)},t.prototype.subscribe=function(t,e){var i;this._actions.has(t)||this._actions.set(t,new Kt),null===(i=this._actions.get(t))||void 0===i||i.subscribe(e)},t.prototype.unsubscribe=function(t,e){var i=this._actions.get(t);At(i)&&(i.unsubscribe(e),i.isEmpty()&&this._actions.delete(t))},t.prototype.has=function(t){var e=this._actions.get(t);return At(e)&&!e.isEmpty()},t}(),Yi={grid:{horizontal:{color:"#EDEDED"},vertical:{color:"#EDEDED"}},candle:{priceMark:{high:{color:"#76808F"},low:{color:"#76808F"}},tooltip:{rect:{color:"#FEFEFE",borderColor:"#F2F3F5"},text:{color:"#76808F"}}},indicator:{tooltip:{text:{color:"#76808F"}}},xAxis:{axisLine:{color:"#DDDDDD"},tickText:{color:"#76808F"},tickLine:{color:"#DDDDDD"}},yAxis:{axisLine:{color:"#DDDDDD"},tickText:{color:"#76808F"},tickLine:{color:"#DDDDDD"}},separator:{color:"#DDDDDD"},crosshair:{horizontal:{line:{color:"#76808F"},text:{borderColor:"#686D76",backgroundColor:"#686D76"}},vertical:{line:{color:"#76808F"},text:{borderColor:"#686D76",backgroundColor:"#686D76"}}}},Xi={grid:{horizontal:{color:"#292929"},vertical:{color:"#292929"}},candle:{priceMark:{high:{color:"#929AA5"},low:{color:"#929AA5"}},tooltip:{rect:{color:"rgba(10, 10, 10, .6)",borderColor:"rgba(10, 10, 10, .6)"},text:{color:"#929AA5"}}},indicator:{tooltip:{text:{color:"#929AA5"}}},xAxis:{axisLine:{color:"#333333"},tickText:{color:"#929AA5"},tickLine:{color:"#333333"}},yAxis:{axisLine:{color:"#333333"},tickText:{color:"#929AA5"},tickLine:{color:"#333333"}},separator:{color:"#333333"},crosshair:{horizontal:{line:{color:"#929AA5"},text:{borderColor:"#373a40",backgroundColor:"#373a40"}},vertical:{line:{color:"#929AA5"},text:{borderColor:"#373a40",backgroundColor:"#373a40"}}}},Ki={light:Yi,dark:Xi};function ji(t){var e;return null!==(e=Ki[t])&&void 0!==e?e:null}var Ui=function(){function t(t,e){this._styles=gt(),this._customApi=ne(),this._locale=ae,this._precision={price:2,volume:0},this._thousandsSeparator=",",this._decimalFoldThreshold=3,this._dataList=[],this._loadMoreCallback=null,this._loadDataCallback=null,this._loading=!0,this._forwardMore=!0,this._backwardMore=!0,this._timeScaleStore=new Ie(this),this._indicatorStore=new oi(this),this._overlayStore=new Hi(this),this._tooltipStore=new si(this),this._actionStore=new $i,this._visibleDataList=[],this._chart=t,this.setOptions(e)}return t.prototype.adjustVisibleDataList=function(){this._visibleDataList=[];for(var t=this._timeScaleStore.getVisibleRange(),e=t.realFrom,i=t.realTo,n=e;n0&&(this._decimalFoldThreshold=u)}return this},t.prototype.getStyles=function(){return this._styles},t.prototype.getLocale=function(){return this._locale},t.prototype.getCustomApi=function(){return this._customApi},t.prototype.getThousandsSeparator=function(){return this._thousandsSeparator},t.prototype.getDecimalFoldThreshold=function(){return this._decimalFoldThreshold},t.prototype.getPrecision=function(){return this._precision},t.prototype.setPrecision=function(t){return this._precision=t,this._indicatorStore.synchronizeSeriesPrecision(),this},t.prototype.getDataList=function(){return this._dataList},t.prototype.getVisibleFirstData=function(){var t,e=this._timeScaleStore.getVisibleRange().from;return null!==(t=this._dataList[e])&&void 0!==t?t:null},t.prototype.getVisibleDataList=function(){return this._visibleDataList},t.prototype.addData=function(t,e,i){return j(this,void 0,void 0,function(){var n,a,r,o,s,l,c;return U(this,function(u){switch(u.label){case 0:if(n=!1,a=!1,r=0,Ct(t)){switch(r=t.length,e){case Yt.Init:this.clear(),this._dataList=t,this._forwardMore=null===i||void 0===i||i,this._timeScaleStore.resetOffsetRightDistance(),a=!0;break;case Yt.Backward:this._dataList=this._dataList.concat(t),this._backwardMore=null!==i&&void 0!==i&&i,a=r>0;break;case Yt.Forward:this._dataList=t.concat(this._dataList),this._forwardMore=null!==i&&void 0!==i&&i,a=r>0}this._loading=!1,n=!0}else o=this._dataList.length,s=t.timestamp,l=Rt(this._dataList[o-1],"timestamp",0),s>l?(this._dataList.push(t),c=this._timeScaleStore.getLastBarRightSideDiffBarCount(),c<0&&this._timeScaleStore.setLastBarRightSideDiffBarCount(--c),r=1,n=!0,a=!0):s===l&&(this._dataList[o-1]=t,n=!0,a=!0);if(!n)return[3,5];u.label=1;case 1:return u.trys.push([1,4,,5]),this._overlayStore.updatePointPosition(r,e),a?(this._timeScaleStore.adjustVisibleRange(),this._tooltipStore.recalculateCrosshair(!0),[4,this._indicatorStore.calcInstance()]):[3,3];case 2:u.sent(),this._chart.adjustPaneViewport(!1,!0,!0,!0),u.label=3;case 3:return this._actionStore.execute(Tt.OnDataReady),[3,5];case 4:return u.sent(),[3,5];case 5:return[2]}})})},t.prototype.setLoadMoreCallback=function(t){this._loadMoreCallback=t},t.prototype.executeLoadMoreCallback=function(t){this._forwardMore&&!this._loading&&At(this._loadMoreCallback)&&(this._loading=!0,this._loadMoreCallback(t))},t.prototype.setLoadDataCallback=function(t){this._loadDataCallback=t},t.prototype.executeLoadDataCallback=function(t){var e=this;if(!this._loading&&At(this._loadDataCallback)&&(this._forwardMore&&t.type===Yt.Forward||this._backwardMore&&t.type===Yt.Backward)){var i=function(i,n){e.addData(i,t.type,n).then(function(){}).catch(function(){})};this._loading=!0,this._loadDataCallback(K(K({},t),{callback:i}))}},t.prototype.clear=function(){this._forwardMore=!0,this._backwardMore=!0,this._loading=!0,this._dataList=[],this._visibleDataList=[],this._timeScaleStore.clear(),this._tooltipStore.clear()},t.prototype.getTimeScaleStore=function(){return this._timeScaleStore},t.prototype.getIndicatorStore=function(){return this._indicatorStore},t.prototype.getOverlayStore=function(){return this._overlayStore},t.prototype.getTooltipStore=function(){return this._tooltipStore},t.prototype.getActionStore=function(){return this._actionStore},t.prototype.getChart=function(){return this._chart},t}(),Gi={MAIN:"main",X_AXIS:"xAxis",Y_AXIS:"yAxis",SEPARATOR:"separator"},Zi=7;function qi(){return j(this,void 0,void 0,function(){return U(this,function(t){switch(t.label){case 0:return[4,new Promise(function(t){var e=new ResizeObserver(function(i){t(i.every(function(t){return"devicePixelContentBoxSize"in t})),e.disconnect()});e.observe(document.body,{box:"device-pixel-content-box"})}).catch(function(){return!1})];case 1:return[2,t.sent()]}})})}var Ji=function(){function t(t,e){var i=this;this._supportedDevicePixelContentBox=!1,this._width=0,this._height=0,this._pixelWidth=0,this._pixelHeight=0,this._nextPixelWidth=0,this._nextPixelHeight=0,this._requestAnimationId=re,this._mediaQueryListener=function(){var t=Wt(i._element);i._nextPixelWidth=Math.round(i._element.clientWidth*t),i._nextPixelHeight=Math.round(i._element.clientHeight*t),i._resetPixelRatio()},this._listener=e,this._element=he("canvas",t),this._ctx=this._element.getContext("2d",{willReadFrequently:!0}),qi().then(function(t){i._supportedDevicePixelContentBox=t,t?(i._resizeObserver=new ResizeObserver(function(t){var e,n=t.find(function(t){return t.target===i._element}),a=null===(e=null===n||void 0===n?void 0:n.devicePixelContentBoxSize)||void 0===e?void 0:e[0];At(a)&&(i._nextPixelWidth=a.inlineSize,i._nextPixelHeight=a.blockSize,i._pixelWidth===i._nextPixelWidth&&i._pixelHeight===i._nextPixelHeight||i._resetPixelRatio())}),i._resizeObserver.observe(i._element,{box:"device-pixel-content-box"})):(i._mediaQueryList=window.matchMedia("(resolution: ".concat(Wt(i._element),"dppx)")),i._mediaQueryList.addListener(i._mediaQueryListener))}).catch(function(t){return!1})}return t.prototype._resetPixelRatio=function(){var t=this;this._executeListener(function(){var e=t._element.clientWidth,i=t._element.clientHeight,n=t._nextPixelWidth/e,a=t._nextPixelHeight/i;t._width=e,t._height=i,t._pixelWidth=t._nextPixelWidth,t._pixelHeight=t._nextPixelHeight,t._element.width=t._nextPixelWidth,t._element.height=t._nextPixelHeight,t._ctx.scale(n,a)})},t.prototype._executeListener=function(t){var e=this;this._requestAnimationId===re&&(this._requestAnimationId=oe(function(){e._ctx.clearRect(0,0,e._width,e._height),null===t||void 0===t||t(),e._listener(),e._requestAnimationId=re}))},t.prototype.update=function(t,e){if(this._width!==t||this._height!==e){if(this._element.style.width="".concat(t,"px"),this._element.style.height="".concat(e,"px"),!this._supportedDevicePixelContentBox){var i=Wt(this._element);this._nextPixelWidth=Math.round(t*i),this._nextPixelHeight=Math.round(e*i),this._resetPixelRatio()}}else this._executeListener()},t.prototype.getElement=function(){return this._element},t.prototype.getContext=function(){return this._ctx},t.prototype.destroy=function(){At(this._resizeObserver)&&this._resizeObserver.unobserve(this._element),At(this._mediaQueryList)&&this._mediaQueryList.removeListener(this._mediaQueryListener)},t}();function Qi(t){var e={width:0,height:0,left:0,right:0,top:0,bottom:0};return At(t)&&wt(e,t),e}var tn=function(t){function e(e,i){var n=t.call(this)||this;return n._bounding=Qi(),n._pane=i,n._rootContainer=e,n._container=n.createContainer(),e.appendChild(n._container),n}return L(e,t),e.prototype.setBounding=function(t){return wt(this._bounding,t),this},e.prototype.getContainer=function(){return this._container},e.prototype.getBounding=function(){return this._bounding},e.prototype.getPane=function(){return this._pane},e.prototype.update=function(t){this.updateImp(this._container,this._bounding,null!==t&&void 0!==t?t:3)},e.prototype.destroy=function(){this._rootContainer.removeChild(this._container)},e}(hi),en=function(t){function e(e,i){var n=t.call(this,e,i)||this;n._mainCanvas=new Ji({position:"absolute",top:"0",left:"0",zIndex:"2",boxSizing:"border-box"},function(){n.updateMain(n._mainCanvas.getContext())}),n._overlayCanvas=new Ji({position:"absolute",top:"0",left:"0",zIndex:"2",boxSizing:"border-box"},function(){n.updateOverlay(n._overlayCanvas.getContext())});var a=n.getContainer();return a.appendChild(n._mainCanvas.getElement()),a.appendChild(n._overlayCanvas.getElement()),n}return L(e,t),e.prototype.createContainer=function(){return he("div",{margin:"0",padding:"0",position:"absolute",top:"0",overflow:"hidden",boxSizing:"border-box",zIndex:"1"})},e.prototype.updateImp=function(t,e,i){var n=e.width,a=e.height,r=e.left;t.style.left="".concat(r,"px");var o=i,s=t.clientWidth,l=t.clientHeight;switch(n===s&&a===l||(t.style.width="".concat(n,"px"),t.style.height="".concat(a,"px"),o=3),o){case 0:this._mainCanvas.update(n,a);break;case 1:this._overlayCanvas.update(n,a);break;case 3:case 4:this._mainCanvas.update(n,a),this._overlayCanvas.update(n,a);break}},e.prototype.destroy=function(){this._mainCanvas.destroy(),this._overlayCanvas.destroy()},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),r=a.getContext("2d"),o=Wt(a);return a.width=i*o,a.height=n*o,r.scale(o,o),r.drawImage(this._mainCanvas.getElement(),0,0,i,n),t&&r.drawImage(this._overlayCanvas.getElement(),0,0,i,n),a},e}(tn);function nn(t){return"transparent"===t||"none"===t||/^[rR][gG][Bb][Aa]\(([\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\s]*,){3}[\s]*0[\s]*\)$/.test(t)||/^[hH][Ss][Ll][Aa]\(([\s]*(360|3[0-5][0-9]|[012]?[0-9][0-9]?)[\s]*,)([\s]*((100|[0-9][0-9]?)%|0)[\s]*,){2}([\s]*0[\s]*)\)$/.test(t)}function an(t,e){var i=[];i=i.concat(e);for(var n=0;ns*s))return!0}return!1}function rn(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?O.Fill:a,o=i.color,s=void 0===o?"currentColor":o,l=i.borderSize,c=void 0===l?1:l,u=i.borderColor,d=void 0===u?"currentColor":u,h=i.borderStyle,p=void 0===h?N.Solid:h,v=i.borderDashedValue,f=void 0===v?[2,2]:v,g=(r===O.Fill||i.style===O.StrokeFill)&&(!Mt(s)||!nn(s));g&&(t.fillStyle=s,n.forEach(function(e){var i=e.x,n=e.y,a=e.r;t.beginPath(),t.arc(i,n,a,0,2*Math.PI),t.closePath(),t.fill()})),(r===O.Stroke||i.style===O.StrokeFill)&&c>0&&!nn(d)&&(t.strokeStyle=d,t.lineWidth=c,p===N.Dashed?t.setLineDash(f):t.setLineDash([]),n.forEach(function(e){var i=e.x,n=e.y,a=e.r;(!g||a>c)&&(t.beginPath(),t.arc(i,n,a,0,2*Math.PI),t.closePath(),t.stroke())}))}var on={name:"circle",checkEventOn:an,draw:function(t,e,i){rn(t,e,i)}};function sn(t,e){var i=[];i=i.concat(e);for(var n=0;nt.y!==r[s].y>t.y&&t.x<(r[s].x-r[o].x)*(t.y-r[o].y)/(r[s].y-r[o].y)+r[o].x&&(a=!a);if(a)return!0}return!1}function ln(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?O.Fill:a,o=i.color,s=void 0===o?"currentColor":o,l=i.borderSize,c=void 0===l?1:l,u=i.borderColor,d=void 0===u?"currentColor":u,h=i.borderStyle,p=void 0===h?N.Solid:h,v=i.borderDashedValue,f=void 0===v?[2,2]:v;r!==O.Fill&&i.style!==O.StrokeFill||Mt(s)&&nn(s)||(t.fillStyle=s,n.forEach(function(e){var i=e.coordinates;t.beginPath(),t.moveTo(i[0].x,i[0].y);for(var n=1;n0&&!nn(d)&&(t.strokeStyle=d,t.lineWidth=c,p===N.Dashed?t.setLineDash(f):t.setLineDash([]),n.forEach(function(e){var i=e.coordinates;t.beginPath(),t.moveTo(i[0].x,i[0].y);for(var n=1;n=r&&t.x<=r+o&&t.y>=s&&t.y<=s+l)return!0}return!1}function dn(t,e,i){var n,a=[];a=a.concat(e);var r=i.style,o=void 0===r?O.Fill:r,s=i.color,l=void 0===s?"transparent":s,c=i.borderSize,u=void 0===c?1:c,d=i.borderColor,h=void 0===d?"transparent":d,p=i.borderStyle,v=void 0===p?N.Solid:p,f=i.borderRadius,g=void 0===f?0:f,m=i.borderDashedValue,y=void 0===m?[2,2]:m,_=null!==(n=t.roundRect)&&void 0!==n?n:t.rect,b=(o===O.Fill||i.style===O.StrokeFill)&&(!Mt(l)||!nn(l));if(b&&(t.fillStyle=l,a.forEach(function(e){var i=e.x,n=e.y,a=e.width,r=e.height;t.beginPath(),_.call(t,i,n,a,r,g),t.closePath(),t.fill()})),(o===O.Stroke||i.style===O.StrokeFill)&&u>0&&!nn(h)){t.strokeStyle=h,t.fillStyle=h,t.lineWidth=u,v===N.Dashed?t.setLineDash(y):t.setLineDash([]);var x=u%2===1?.5:0,w=Math.round(2*x);a.forEach(function(e){var i=e.x,n=e.y,a=e.width,r=e.height;a>2*u&&r>2*u?(t.beginPath(),_.call(t,i+x,n+x,a-w,r-w,g),t.closePath(),t.stroke()):b||t.fillRect(i,n,a,r)})}}var hn={name:"rect",checkEventOn:un,draw:function(t,e,i){dn(t,e,i)}};function pn(t,e){var i,n,a=e.size,r=void 0===a?12:a,o=e.paddingLeft,s=void 0===o?0:o,l=e.paddingTop,c=void 0===l?0:l,u=e.paddingRight,d=void 0===u?0:u,h=e.paddingBottom,p=void 0===h?0:h,v=e.weight,f=void 0===v?"normal":v,g=e.family,m=t.x,y=t.y,_=t.text,b=t.align,x=void 0===b?"left":b,w=t.baseline,S=void 0===w?"top":w,C=t.width,k=t.height,I=null!==C&&void 0!==C?C:s+$t(_,r,f,g)+d,E=null!==k&&void 0!==k?k:c+r+p;switch(x){case"left":case"start":i=m;break;case"right":case"end":i=m-I;break;default:i=m-I/2;break}switch(S){case"top":case"hanging":n=y;break;case"bottom":case"ideographic":case"alphabetic":n=y-E;break;default:n=y-E/2;break}return{x:i,y:n,width:I,height:E}}function vn(t,e,i){var n=[];n=n.concat(e);for(var a=0;a=o&&t.x<=o+l&&t.y>=s&&t.y<=s+c)return!0}return!1}function fn(t,e,i){var n=[];n=n.concat(e);var a=i.color,r=void 0===a?"currentColor":a,o=i.size,s=void 0===o?12:o,l=i.family,c=i.weight,u=i.paddingLeft,d=void 0===u?0:u,h=i.paddingTop,p=void 0===h?0:h,v=i.paddingRight,f=void 0===v?0:v,g=n.map(function(t){return pn(t,i)});dn(t,g,K(K({},i),{color:i.backgroundColor})),t.textAlign="left",t.textBaseline="top",t.font=Ht(s,c,l),t.fillStyle=r,n.forEach(function(e,i){var n=g[i];t.fillText(e.text,n.x+d,n.y+p,n.width-d-f)})}var gn={name:"text",checkEventOn:vn,draw:function(t,e,i){fn(t,e,i)}},mn=gn;function yn(t,e){var i=t.x-e.x,n=t.y-e.y;return Math.sqrt(i*i+n*n)}function _n(t,e){var i=[];i=i.concat(e);for(var n=0;n=Math.min(l,u)-pi&&t.y<=Math.max(c,d)+pi&&t.y>=Math.min(c,d)-pi)return!0}}return!1}function bn(t,e,i){var n=[];n=n.concat(e);var a=i.style,r=void 0===a?N.Solid:a,o=i.size,s=void 0===o?1:o,l=i.color,c=void 0===l?"currentColor":l,u=i.dashedValue,d=void 0===u?[2,2]:u;t.lineWidth=s,t.strokeStyle=c,r===N.Dashed?t.setLineDash(d):t.setLineDash([]),n.forEach(function(e){var i=e.x,n=e.y,a=e.r,r=e.startAngle,o=e.endAngle;t.beginPath(),t.arc(i,n,a,r,o),t.stroke(),t.closePath()})}var xn={name:"arc",checkEventOn:_n,draw:function(t,e,i){bn(t,e,i)}},wn={},Sn=[on,xi,cn,hn,gn,mn,xn];function Cn(t){var e;return null!==(e=wn[t])&&void 0!==e?e:null}Sn.forEach(function(t){wn[t.name]=vi.extend(t)});var kn=function(t){function e(e){var i=t.call(this)||this;return i._widget=e,i}return L(e,t),e.prototype.getWidget=function(){return this._widget},e.prototype.createFigure=function(t,e){var i=Cn(t.name);if(null!==i){var n=new i(t);if(At(e)){for(var a in e)e.hasOwnProperty(a)&&n.registerEvent(a,e[a]);this.addChild(n)}return n}return null},e.prototype.draw=function(t){this.clear(),this.drawImp(t)},e}(hi),In=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i,n=this.getWidget(),a=this.getWidget().getPane(),r=a.getChart(),o=n.getBounding(),s=r.getStyles().grid,l=s.show;if(l){t.save(),t.globalCompositeOperation="destination-over";var c=s.horizontal,u=c.show;if(u){var d=a.getAxisComponent(),h=d.getTicks().map(function(t){return{coordinates:[{x:0,y:t.coord},{x:o.width,y:t.coord}]}});null===(e=this.createFigure({name:"line",attrs:h,styles:c}))||void 0===e||e.draw(t)}var p=s.vertical,v=p.show;if(v){var f=r.getXAxisPane().getAxisComponent();h=f.getTicks().map(function(t){return{coordinates:[{x:t.coord,y:0},{x:t.coord,y:o.height}]}});null===(i=this.createFigure({name:"line",attrs:h,styles:p}))||void 0===i||i.draw(t)}t.restore()}},e}(kn),En=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.eachChildren=function(t){var e=this.getWidget().getPane(),i=e.getChart().getChartStore(),n=i.getVisibleDataList(),a=i.getTimeScaleStore().getBarSpace();n.forEach(function(e,i){t(e,a,i)})},e}(kn),An=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._boundCandleBarClickEvent=function(t){return function(){return e.getWidget().getPane().getChart().getChartStore().getActionStore().execute(Tt.OnCandleBarClick,t),!1}},e}return L(e,t),e.prototype.drawImp=function(t){var e=this,i=this.getWidget().getPane(),n=i.getId()===Wi.CANDLE,a=i.getChart().getChartStore(),r=this.getCandleBarOptions(a);if(null!==r){var o=0,s=0;if(r.type===$.Ohlc){var l=a.getTimeScaleStore().getBarSpace().gapBar;o=Math.min(Math.max(Math.round(.2*l),1),8),o>2&&o%2===1&&o--,s=Math.floor(s/2)}var c=i.getAxisComponent();this.eachChildren(function(i,a){var l=i.data,u=i.x;if(At(l)){var d=l.open,h=l.high,p=l.low,v=l.close,f=r.type,g=r.styles,m=[];v>d?(m[0]=g.upColor,m[1]=g.upBorderColor,m[2]=g.upWickColor):vd?e._createStrokeBar(u,b,a,m):e._createSolidBar(u,b,a,m);break;case $.CandleDownStroke:x=d>v?e._createStrokeBar(u,b,a,m):e._createSolidBar(u,b,a,m);break;case $.Ohlc:x=[{name:"rect",attrs:[{x:u-s,y:b[0],width:o,height:b[3]-b[0]},{x:u-a.halfGapBar,y:y+o>b[3]?b[3]-o:y,width:a.halfGapBar,height:o},{x:u+s,y:_+o>b[3]?b[3]-o:_,width:a.halfGapBar-s,height:o}],styles:{color:m[0]}}];break}x.forEach(function(a){var r,o;n&&(o={mouseClickEvent:e._boundCandleBarClickEvent(i)}),null===(r=e.createFigure(a,o))||void 0===r||r.draw(t)})}})}},e.prototype.getCandleBarOptions=function(t){var e=t.getStyles().candle;return{type:e.type,styles:e.bar}},e.prototype._createSolidBar=function(t,e,i,n){return[{name:"rect",attrs:{x:t,y:e[0],width:1,height:e[3]-e[0]},styles:{color:n[2]}},{name:"rect",attrs:{x:t-i.halfGapBar,y:e[1],width:i.gapBar,height:Math.max(1,e[2]-e[1])},styles:{style:O.StrokeFill,color:n[0],borderColor:n[1]}}]},e.prototype._createStrokeBar=function(t,e,i,n){return[{name:"rect",attrs:[{x:t,y:e[0],width:1,height:e[1]-e[0]},{x:t,y:e[2],width:1,height:e[3]-e[2]}],styles:{color:n[2]}},{name:"rect",attrs:{x:t-i.halfGapBar,y:e[1],width:i.gapBar,height:Math.max(1,e[2]-e[1])},styles:{style:O.Stroke,borderColor:n[1]}}]},e}(En),Pn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getCandleBarOptions=function(t){var e,i,n=this.getWidget().getPane(),a=n.getAxisComponent();if(!a.isInCandle()){var r=t.getIndicatorStore().getInstances(n.getId());try{for(var o=G(r),s=o.next();!s.done;s=o.next()){var l=s.value;if(l.shouldOhlc&&l.visible){var c=l.styles,u=t.getStyles().indicator,d=Rt(c,"ohlc.upColor",u.ohlc.upColor),h=Rt(c,"ohlc.downColor",u.ohlc.downColor),p=Rt(c,"ohlc.noChangeColor",u.ohlc.noChangeColor);return{type:$.Ohlc,styles:{upColor:d,downColor:h,noChangeColor:p,upBorderColor:d,downBorderColor:h,noChangeBorderColor:p,upWickColor:d,downWickColor:h,noChangeWickColor:p}}}}}catch(v){e={error:v}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(e)throw e.error}}}return null},e.prototype.drawImp=function(e){var i=this;t.prototype.drawImp.call(this,e);var n=this.getWidget(),a=n.getPane(),r=a.getChart(),o=n.getBounding(),s=r.getXAxisPane().getAxisComponent(),l=a.getAxisComponent(),c=r.getChartStore(),u=c.getDataList(),d=c.getTimeScaleStore(),h=d.getVisibleRange(),p=c.getIndicatorStore().getInstances(a.getId()),v=c.getStyles().indicator;e.save(),p.forEach(function(t){var n;if(t.visible){t.zLevel<0?e.globalCompositeOperation="destination-over":e.globalCompositeOperation="source-over";var a=!1;if(null!==t.draw&&(e.save(),a=null!==(n=t.draw({ctx:e,kLineDataList:u,indicator:t,visibleRange:h,bounding:o,barSpace:d.getBarSpace(),defaultStyles:v,xAxis:s,yAxis:l}))&&void 0!==n&&n,e.restore()),!a){var r=t.result,c=[];i.eachChildren(function(n,a){var d,h,p,f=a.halfGapBar,g=n.dataIndex,m=n.x,y=s.convertToPixel(g-1),_=s.convertToPixel(g+1),b=null!==(d=r[g-1])&&void 0!==d?d:null,x=null!==(h=r[g])&&void 0!==h?h:null,w=null!==(p=r[g+1])&&void 0!==p?p:null,S={x:y},C={x:m},k={x:_};t.figures.forEach(function(t){var e=t.key,i=null===b||void 0===b?void 0:b[e];Et(i)&&(S[e]=l.convertToPixel(i));var n=null===x||void 0===x?void 0:x[e];Et(n)&&(C[e]=l.convertToPixel(n));var a=null===w||void 0===w?void 0:w[e];Et(a)&&(k[e]=l.convertToPixel(a))}),jt(u,t,g,v,function(t,n,r){var u,d,h;if(At(null===x||void 0===x?void 0:x[t.key])){var p=C[t.key],v=null===(u=t.attrs)||void 0===u?void 0:u.call(t,{data:{prev:b,current:x,next:w},coordinate:{prev:S,current:C,next:k},bounding:o,barSpace:a,xAxis:s,yAxis:l});if(!At(v))switch(t.type){case"circle":v={x:m,y:p,r:Math.max(1,f)};break;case"rect":case"bar":var g=null!==(d=t.baseValue)&&void 0!==d?d:l.getRange().from,y=l.convertToPixel(g),_=Math.abs(y-p);g!==(null===x||void 0===x?void 0:x[t.key])&&(_=Math.max(1,_));var I=void 0;I=p>y?y:p,v={x:m-f,y:I,width:Math.max(1,2*f),height:_};break;case"line":At(c[r])||(c[r]=[]),Et(C[t.key])&&Et(k[t.key])&&c[r].push({coordinates:[{x:C.x,y:C[t.key]},{x:k.x,y:k[t.key]}],styles:n});break}var E=t.type;At(v)&&"line"!==E&&(null===(h=i.createFigure({name:"bar"===E?"rect":E,attrs:v,styles:n}))||void 0===h||h.draw(e))}})}),c.forEach(function(t){if(t.length>1){for(var n=[{coordinates:[t[0].coordinates[0],t[0].coordinates[1]],styles:t[0].styles}],a=1;a0,C=x.length>0;if(S||C){var k=Z(p.classifyTooltipIcons(w),3),I=k[0],E=k[1],A=k[2];if(g=p.drawStandardTooltipIcons(t,a,I,m,e,r.name,c,g,d),S){var P=_;b.length>0&&(P="".concat(P).concat(b)),g=p.drawStandardTooltipLegends(t,[{title:{text:"",color:f.color},value:{text:P,color:f.color}}],m,c,g,d,f)}g=p.drawStandardTooltipIcons(t,a,E,m,e,r.name,c,g,d),C&&(g=p.drawStandardTooltipLegends(t,x,m,c,g,d,v.text)),g=p.drawStandardTooltipIcons(t,a,A,m,e,r.name,c,g,d),u=m.y+g}})}return u},e.prototype.drawStandardTooltipIcons=function(t,e,i,n,a,r,o,s,l){var c=this;if(i.length>0){var u=0,d=0;i.forEach(function(e){var i=e.marginLeft,n=void 0===i?0:i,a=e.marginTop,r=void 0===a?0:a,o=e.marginRight,s=void 0===o?0:o,l=e.marginBottom,c=void 0===l?0:l,h=e.paddingLeft,p=void 0===h?0:h,v=e.paddingTop,f=void 0===v?0:v,g=e.paddingRight,m=void 0===g?0:g,y=e.paddingBottom,_=void 0===y?0:y,b=e.size,x=e.fontFamily,w=e.icon;t.font=Ht(b,"normal",x),u+=n+p+t.measureText(w).width+m+s,d=Math.max(d,r+f+b+_+c)}),n.x+u>l?(n.x=o,n.y+=s,s=d):s=Math.max(s,d),i.forEach(function(i){var o,s=i.marginLeft,l=void 0===s?0:s,u=i.marginTop,d=void 0===u?0:u,h=i.marginRight,p=void 0===h?0:h,v=i.paddingLeft,f=void 0===v?0:v,g=i.paddingTop,m=void 0===g?0:g,y=i.paddingRight,_=void 0===y?0:y,b=i.paddingBottom,x=void 0===b?0:b,w=i.color,S=i.activeColor,C=i.size,k=i.fontFamily,I=i.icon,E=i.backgroundColor,A=i.activeBackgroundColor,P=(null===e||void 0===e?void 0:e.paneId)===a&&(null===e||void 0===e?void 0:e.indicatorName)===r&&(null===e||void 0===e?void 0:e.iconId)===i.id;null===(o=c.createFigure({name:"text",attrs:{text:I,x:n.x+l,y:n.y+d},styles:{paddingLeft:f,paddingTop:m,paddingRight:_,paddingBottom:x,color:P?S:w,size:C,family:k,backgroundColor:P?A:E}},{mouseClickEvent:c._boundIconClickEvent({paneId:a,indicatorName:r,iconId:i.id}),mouseMoveEvent:c._boundIconMouseMoveEvent({paneId:a,indicatorName:r,iconId:i.id})}))||void 0===o||o.draw(t),n.x+=l+f+t.measureText(I).width+_+p})}return s},e.prototype.drawStandardTooltipLegends=function(t,e,i,n,a,r,o){var s=this;if(e.length>0){var l=o.marginLeft,c=o.marginTop,u=o.marginRight,d=o.marginBottom,h=o.size,p=o.family,v=o.weight;t.font=Ht(h,v,p),e.forEach(function(e){var o,f,g=e.title,m=e.value,y=t.measureText(g.text).width,_=t.measureText(m.text).width,b=y+_,x=c+h+d;i.x+l+b+u>r?(i.x=n,i.y+=a,a=x):a=Math.max(a,x),g.text.length>0&&(null===(o=s.createFigure({name:"text",attrs:{x:i.x+l,y:i.y+c,text:g.text},styles:{color:g.color,size:h,family:p,weight:v}}))||void 0===o||o.draw(t)),null===(f=s.createFigure({name:"text",attrs:{x:i.x+l+y,y:i.y+c,text:m.text},styles:{color:m.color,size:h,family:p,weight:v}}))||void 0===f||f.draw(t),i.x+=l+b+u})}return a},e.prototype.isDrawTooltip=function(t,e){var i=e.showRule;return i===z.Always||i===z.FollowCross&&Mt(t.paneId)},e.prototype.getIndicatorTooltipData=function(t,e,i,n,a,r,o){var s,l,c=o.tooltip,u=c.showName?i.shortName:"",d="",h=i.calcParams;h.length>0&&c.showParams&&(d="(".concat(h.join(","),")"));var p={name:u,calcParamsText:d,values:[],icons:c.icons},v=e.dataIndex,f=null!==(s=i.result)&&void 0!==s?s:[],g=[];if(i.visible){var m=null!==(l=f[v])&&void 0!==l?l:{};jt(t,i,v,o,function(t,e){var o;if(Mt(t.title)){var s=e.color,l=null!==(o=m[t.key])&&void 0!==o?o:c.defaultValue;Et(l)&&(l=Nt(l,i.precision),i.shouldFormatBigNumber&&(l=n.formatBigNumber(l)),l=Vt(zt(l,a),r)),g.push({title:{text:t.title,color:s},value:{text:l,color:s}})}}),p.values=g}if(null!==i.createTooltipDataSource){var y=this.getWidget(),_=y.getPane(),b=_.getChart().getChartStore(),x=i.createTooltipDataSource({kLineDataList:t,indicator:i,visibleRange:b.getTimeScaleStore().getVisibleRange(),bounding:y.getBounding(),crosshair:e,defaultStyles:o,xAxis:_.getChart().getXAxisPane().getAxisComponent(),yAxis:_.getAxisComponent()}),w=x.name,S=x.calcParamsText,C=x.values,k=x.icons;if(Mt(w)&&c.showName&&(p.name=w),Mt(S)&&c.showParams&&(p.calcParamsText=S),At(k)&&(p.icons=k),At(C)&&i.visible){var I=[],E=o.tooltip.text.color;C.forEach(function(t){var e,o={text:"",color:E};It(t.title)?o=t.title:o.text=t.title;var s={text:"",color:E};if(It(t.value)?s=t.value:s.text=null!==(e=t.value)&&void 0!==e?e:c.defaultValue,Et(s.text)){var l=Nt(s.text,i.precision);i.shouldFormatBigNumber&&(l=n.formatBigNumber(l)),l=Vt(zt(l,a),r),s.text=l}I.push({title:o,value:s})}),p.values=I}}return p},e.prototype.classifyTooltipIcons=function(t){var e=[],i=[],n=[];return t.forEach(function(t){switch(t.position){case W.Left:e.push(t);break;case W.Middle:i.push(t);break;case W.Right:n.push(t);break}}),[e,i,n]},e}(kn),Tn=function(t){function e(e){var i=t.call(this,e)||this;return i._initEvent(),i}return L(e,t),e.prototype._initEvent=function(){var t=this,e=this.getWidget().getPane(),i=e.getId(),n=e.getChart().getChartStore().getOverlayStore();this.registerEvent("mouseMoveEvent",function(e){var a,r=n.getProgressInstanceInfo();if(null!==r){var o=r.instance,s=r.paneId;o.isStart()&&(n.updateProgressInstanceInfo(i),s=i);var l=o.points.length-1,c="".concat(ee,"point_").concat(l);return o.isDrawing()&&s===i&&(o.eventMoveForDrawing(t._coordinateToPoint(r.instance,e)),null===(a=o.onDrawing)||void 0===a||a.call(o,K({overlay:o,figureKey:c,figureIndex:l},e))),t._figureMouseMoveEvent(o,1,c,l,0)(e)}return n.setHoverInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1},e),!1}).registerEvent("mouseClickEvent",function(e){var a,r,o=n.getProgressInstanceInfo();if(null!==o){var s=o.instance,l=o.paneId;s.isStart()&&(n.updateProgressInstanceInfo(i,!0),l=i);var c=s.points.length-1,u="".concat(ee,"point_").concat(c);return s.isDrawing()&&l===i&&(s.eventMoveForDrawing(t._coordinateToPoint(s,e)),null===(a=s.onDrawing)||void 0===a||a.call(s,K({overlay:s,figureKey:u,figureIndex:c},e)),s.nextStep(),s.isDrawing()||(n.progressInstanceComplete(),null===(r=s.onDrawEnd)||void 0===r||r.call(s,K({overlay:s,figureKey:u,figureIndex:c},e)))),t._figureMouseClickEvent(s,1,u,c,0)(e)}return n.setClickInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1},e),!1}).registerEvent("mouseDoubleClickEvent",function(e){var a,r=n.getProgressInstanceInfo();if(null!==r){var o=r.instance,s=r.paneId;if(o.isDrawing()&&s===i&&(o.forceComplete(),!o.isDrawing())){n.progressInstanceComplete();var l=o.points.length-1,c="".concat(ee,"point_").concat(l);null===(a=o.onDrawEnd)||void 0===a||a.call(o,K({overlay:o,figureKey:c,figureIndex:l},e))}var u=o.points.length-1;return t._figureMouseClickEvent(o,1,"".concat(ee,"point_").concat(u),u,0)(e)}return!1}).registerEvent("mouseRightClickEvent",function(e){var i=n.getProgressInstanceInfo();if(null!==i){var a=i.instance;if(a.isDrawing()){var r=a.points.length-1;return t._figureMouseRightClickEvent(a,1,"".concat(ee,"point_").concat(r),r,0)(e)}}return!1}).registerEvent("mouseUpEvent",function(t){var e,a=n.getPressedInstanceInfo(),r=a.instance,o=a.figureIndex,s=a.figureKey;return null!==r&&(null===(e=r.onPressedMoveEnd)||void 0===e||e.call(r,K({overlay:r,figureKey:s,figureIndex:o},t))),n.setPressedInstanceInfo({paneId:i,instance:null,figureType:0,figureKey:"",figureIndex:-1,attrsIndex:-1}),!1}).registerEvent("pressedMouseMoveEvent",function(e){var i,a,r=n.getPressedInstanceInfo(),o=r.instance,s=r.figureType,l=r.figureIndex,c=r.figureKey;if(null!==o){if(!o.lock&&(null===(a=null===(i=o.onPressedMoving)||void 0===i?void 0:i.call(o,K({overlay:o,figureIndex:l,figureKey:c},e)))||void 0===a||!a)){var u=t._coordinateToPoint(o,e);1===s?o.eventPressedPointMove(u,l):o.eventPressedOtherMove(u,t.getWidget().getPane().getChart().getChartStore().getTimeScaleStore())}return!0}return!1})},e.prototype._createFigureEvents=function(t,e,i,n,a,r){var o;if(!t.isDrawing()){var s=[];if(At(r)&&(Pt(r)?r&&(s=Zt()):s=r),0===s.length)return{mouseMoveEvent:this._figureMouseMoveEvent(t,e,i,n,a),mouseDownEvent:this._figureMouseDownEvent(t,e,i,n,a),mouseClickEvent:this._figureMouseClickEvent(t,e,i,n,a),mouseRightClickEvent:this._figureMouseRightClickEvent(t,e,i,n,a),mouseDoubleClickEvent:this._figureMouseDoubleClickEvent(t,e,i,n,a)};o={},s.includes("mouseMoveEvent")||s.includes("touchMoveEvent")||(o.mouseMoveEvent=this._figureMouseMoveEvent(t,e,i,n,a)),s.includes("mouseDownEvent")||s.includes("touchStartEvent")||(o.mouseDownEvent=this._figureMouseDownEvent(t,e,i,n,a)),s.includes("mouseClickEvent")||s.includes("tapEvent")||(o.mouseClickEvent=this._figureMouseClickEvent(t,e,i,n,a)),s.includes("mouseDoubleClickEvent")||s.includes("doubleTapEvent")||(o.mouseDoubleClickEvent=this._figureMouseDoubleClickEvent(t,e,i,n,a)),s.includes("mouseRightClickEvent")||(o.mouseRightClickEvent=this._figureMouseRightClickEvent(t,e,i,n,a))}return o},e.prototype._figureMouseMoveEvent=function(t,e,i,n,a){var r=this;return function(o){var s=r.getWidget().getPane(),l=s.getChart().getChartStore().getOverlayStore();return l.setHoverInstanceInfo({paneId:s.getId(),instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a},o),!0}},e.prototype._figureMouseDownEvent=function(t,e,i,n,a){var r=this;return function(o){var s,l=r.getWidget().getPane(),c=l.getId(),u=l.getChart().getChartStore().getOverlayStore();return t.startPressedMove(r._coordinateToPoint(t,o)),null===(s=t.onPressedMoveStart)||void 0===s||s.call(t,K({overlay:t,figureIndex:n,figureKey:i},o)),u.setPressedInstanceInfo({paneId:c,instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a}),!0}},e.prototype._figureMouseClickEvent=function(t,e,i,n,a){var r=this;return function(o){var s=r.getWidget().getPane(),l=s.getId(),c=s.getChart().getChartStore().getOverlayStore();return c.setClickInstanceInfo({paneId:l,instance:t,figureType:e,figureKey:i,figureIndex:n,attrsIndex:a},o),!0}},e.prototype._figureMouseDoubleClickEvent=function(t,e,i,n,a){return function(e){var a;return null===(a=t.onDoubleClick)||void 0===a||a.call(t,K(K({},e),{figureIndex:n,figureKey:i,overlay:t})),!0}},e.prototype._figureMouseRightClickEvent=function(t,e,i,n,a){var r=this;return function(e){var a,o;if(null===(o=null===(a=t.onRightClick)||void 0===a?void 0:a.call(t,K({overlay:t,figureIndex:n,figureKey:i},e)))||void 0===o||!o){var s=r.getWidget().getPane(),l=s.getChart().getChartStore().getOverlayStore();l.removeInstance(t)}return!0}},e.prototype._coordinateToPoint=function(t,e){var i,n={},a=this.getWidget().getPane(),r=a.getChart(),o=a.getId(),s=r.getChartStore().getTimeScaleStore();if(this.coordinateToPointTimestampDataIndexFlag()){var l=r.getXAxisPane().getAxisComponent(),c=l.convertFromPixel(e.x),u=null!==(i=s.dataIndexToTimestamp(c))&&void 0!==i?i:void 0;n.dataIndex=c,n.timestamp=u}if(this.coordinateToPointValueFlag()){var d=a.getAxisComponent(),h=d.convertFromPixel(e.y);if(t.mode!==Ut.Normal&&o===Wi.CANDLE&&Et(n.dataIndex)){var p=s.getDataByDataIndex(n.dataIndex);if(null!==p){var v=t.modeSensitivity;if(h>p.high)if(t.mode===Ut.WeakMagnet){var f=d.convertToPixel(p.high),g=d.convertFromPixel(f-v);hg&&(h=p.low)}else h=p.low;else{var y=Math.max(p.open,p.close),_=Math.min(p.open,p.close);h=h>y?h-y0){var m=(new Array).concat(this.getFigures(e,g,i,n,a,s,l,r,c,u,d));this.drawFigures(t,e,m,c)}this.drawDefaultFigures(t,e,g,i,a,r,o,s,l,c,u,d,h,p)},e.prototype.drawFigures=function(t,e,i,n){var a=this;i.forEach(function(i,r){var o=i.type,s=i.styles,l=i.attrs,c=i.ignoreEvent,u=[].concat(l);u.forEach(function(l,u){var d,h,p,v=a._createFigureEvents(e,2,null!==(d=i.key)&&void 0!==d?d:"",r,u,c),f=K(K(K({},n[o]),null===(h=e.styles)||void 0===h?void 0:h[o]),s);null===(p=a.createFigure({name:o,attrs:l,styles:f},v))||void 0===p||p.draw(t)})})},e.prototype.getCompleteOverlays=function(t,e){return t.getInstances(e)},e.prototype.getProgressOverlay=function(t,e){return t.paneId===e?t.instance:null},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createPointFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e.prototype.drawDefaultFigures=function(t,e,i,n,a,r,o,s,l,c,u,d,h,p){var v,f,g=this;if(e.needDefaultPointFigure&&((null===(v=h.instance)||void 0===v?void 0:v.id)===e.id&&0!==h.figureType||(null===(f=p.instance)||void 0===f?void 0:f.id)===e.id&&0!==p.figureType)){var m=e.styles,y=K(K({},c.point),null===m||void 0===m?void 0:m.point);i.forEach(function(i,n){var a,r,o,s=i.x,l=i.y,c=y.radius,u=y.color,d=y.borderColor,p=y.borderSize;(null===(a=h.instance)||void 0===a?void 0:a.id)===e.id&&1===h.figureType&&h.figureIndex===n&&(c=y.activeRadius,u=y.activeColor,d=y.activeBorderColor,p=y.activeBorderSize),null===(r=g.createFigure({name:"circle",attrs:{x:s,y:l,r:c+p},styles:{color:d}},g._createFigureEvents(e,1,"".concat(ee,"point_").concat(n),n,0)))||void 0===r||r.draw(t),null===(o=g.createFigure({name:"circle",attrs:{x:s,y:l,r:c},styles:{color:u}}))||void 0===o||o.draw(t)})}},e}(kn),Bn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._gridView=new In(n),n._indicatorView=new Pn(n),n._crosshairLineView=new Mn(n),n._tooltipView=n.createTooltipView(),n._overlayView=new Tn(n),n.addChild(n._tooltipView),n.addChild(n._overlayView),n.getContainer().style.cursor="crosshair",n.registerEvent("mouseMoveEvent",function(){return i.getChart().getChartStore().getTooltipStore().setActiveIcon(),!1}),n}return L(e,t),e.prototype.getName=function(){return Gi.MAIN},e.prototype.updateMain=function(t){this.updateMainContent(t),this._indicatorView.draw(t),this._gridView.draw(t)},e.prototype.createTooltipView=function(){return new Dn(this)},e.prototype.updateMainContent=function(t){},e.prototype.updateOverlay=function(t){this._overlayView.draw(t),this._crosshairLineView.draw(t),this._tooltipView.draw(t)},e}(en),Fn=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._ripplePoint=e.createFigure({name:"circle",attrs:{x:0,y:0,r:0},styles:{style:"fill"}}),e._animationFrameTime=0,e._animation=new le({iterationCount:1/0}).doFrame(function(t){e._animationFrameTime=t;var i=e.getWidget().getPane();i.getChart().updatePane(0,i.getId())}),e}return L(e,t),e.prototype.drawImp=function(t){var e,i,n,a=this.getWidget(),r=a.getPane(),o=r.getChart(),s=o.getDataList(),l=s.length-1,c=a.getBounding(),u=r.getAxisComponent(),d=o.getStyles().candle.area,h=[],p=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,f=null;if(this.eachChildren(function(t){var e=t.data,i=t.x,n=null===e||void 0===e?void 0:e[d.value];if(Et(n)){var a=u.convertToPixel(n);v===Number.MIN_SAFE_INTEGER&&(v=i),h.push({x:i,y:a}),p=Math.min(p,a),t.dataIndex===l&&(f={x:i,y:a})}}),h.length>0){null===(e=this.createFigure({name:"line",attrs:{coordinates:h},styles:{color:d.lineColor,size:d.lineSize,smooth:d.smooth}}))||void 0===e||e.draw(t);var g=d.backgroundColor,m=void 0;if(Ct(g)){var y=t.createLinearGradient(0,c.height,0,p);try{g.forEach(function(t){var e=t.offset,i=t.color;y.addColorStop(e,i)})}catch(x){}m=y}else m=g;t.fillStyle=m,t.beginPath(),t.moveTo(v,c.height),t.lineTo(h[0].x,h[0].y),_i(t,h,d.smooth),t.lineTo(h[h.length-1].x,c.height),t.closePath(),t.fill()}var _=d.point;if(_.show&&At(f)){null===(i=this.createFigure({name:"circle",attrs:{x:f.x,y:f.y,r:_.radius},styles:{style:"fill",color:_.color}}))||void 0===i||i.draw(t);var b=_.rippleRadius;_.animation&&(b=_.radius+this._animationFrameTime/_.animationDuration*(_.rippleRadius-_.radius),this._animation.setDuration(_.animationDuration).start()),null===(n=this._ripplePoint)||void 0===n||n.setAttrs({x:f.x,y:f.y,r:b}).setStyles({style:"fill",color:_.rippleColor}).draw(t)}else this.stopAnimation()},e.prototype.stopAnimation=function(){this._animation.stop()},e}(En),Rn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e=this.getWidget(),i=e.getPane(),n=i.getChart().getChartStore(),a=n.getStyles().candle.priceMark,r=a.high,o=a.low;if(a.show&&(r.show||o.show)){var s=n.getThousandsSeparator(),l=n.getDecimalFoldThreshold(),c=n.getPrecision(),u=i.getAxisComponent(),d=Number.MIN_SAFE_INTEGER,h=0,p=Number.MAX_SAFE_INTEGER,v=0;this.eachChildren(function(t){var e=t.data,i=t.x;At(e)&&(de.low&&(p=e.low,v=i))});var f=u.convertToPixel(d),g=u.convertToPixel(p);r.show&&d!==Number.MIN_SAFE_INTEGER&&this._drawMark(t,Vt(zt(Nt(d,c.price),s),l),{x:h,y:f},fp/2?(l=d-5,c=l-a.textOffset,u="right"):(l=d+5,u="left",c=l+a.textOffset);var v=h+n[1];null===(o=this.createFigure({name:"line",attrs:{coordinates:[{x:d,y:h},{x:d,y:v},{x:l,y:v}]},styles:{color:a.color}}))||void 0===o||o.draw(t),null===(s=this.createFigure({name:"text",attrs:{x:c,y:v,text:e,align:u,baseline:"middle"},styles:{color:a.color,size:a.textSize,family:a.textFamily,weight:a.textWeight}}))||void 0===s||s.draw(t)},e}(En),Ln=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=n.getChart().getChartStore(),o=r.getStyles().candle.priceMark,s=o.last,l=s.line;if(o.show&&s.show&&l.show){var c=n.getAxisComponent(),u=r.getDataList(),d=u[u.length-1];if(null!=d){var h=d.close,p=d.open,v=c.convertToNicePixel(h),f=void 0;f=h>p?s.upColor:h0&&(b=this.drawStandardTooltipLegends(t,S,x,d,b,p,_)),b=this.drawStandardTooltipIcons(t,a,E,x,i,"",d,b,p)}return x.y+b},e.prototype._drawRectTooltip=function(t,e,i,n,a,r,o,s,l,c,u,d,h,p,v,f){var g,m,y,_,b,x=this,w=f.candle,S=f.indicator,C=w.tooltip,k=S.tooltip;if(h||p){var I=null!==(g=r.dataIndex)&&void 0!==g?g:0,E=this._getCandleTooltipLegends({prev:null!==(m=e[I-1])&&void 0!==m?m:null,current:r.kLineData,next:null!==(y=e[I+1])&&void 0!==y?y:null},o,s,l,c,u,d,w),A=C.offsetLeft,P=C.offsetTop,M=C.offsetRight,D=C.offsetBottom,T=C.text,B=T.marginLeft,F=T.marginRight,R=T.marginTop,L=T.marginBottom,N=T.size,z=T.weight,V=T.family,W=C.rect,$=W.position,X=W.paddingLeft,K=W.paddingRight,j=W.paddingTop,U=W.paddingBottom,G=W.offsetLeft,Z=W.offsetRight,q=W.offsetTop,J=W.offsetBottom,Q=W.borderSize,tt=W.borderRadius,et=W.borderColor,it=W.color,nt=0,at=0,rt=0;h&&(t.font=Ht(N,z,V),E.forEach(function(e){var i=e.title,n=e.value,a="".concat(i.text).concat(n.text),r=t.measureText(a).width+B+F;nt=Math.max(nt,r)}),rt+=(L+R+N)*E.length);var ot=k.text,st=ot.marginLeft,lt=ot.marginRight,ct=ot.marginTop,ut=ot.marginBottom,dt=ot.size,ht=ot.weight,pt=ot.family,vt=[];if(p&&(t.font=Ht(dt,ht,pt),i.forEach(function(i){var n,a=null!==(n=x.getIndicatorTooltipData(e,r,i,c,u,d,S).values)&&void 0!==n?n:[];vt.push(a),a.forEach(function(e){var i=e.title,n=e.value,a="".concat(i.text).concat(n.text),r=t.measureText(a).width+st+lt;nt=Math.max(nt,r),rt+=ct+ut+dt})})),at+=nt,0!==at&&0!==rt){at+=2*Q+X+K,rt+=2*Q+j+U;var ft=n.width/2,gt=$===H.Pointer&&r.paneId===Wi.CANDLE,mt=(null!==(_=r.realX)&&void 0!==_?_:0)>ft,yt=0;if(gt){var _t=r.realX;yt=mt?_t-Z-at:_t+G}else mt?(yt=G+A,f.yAxis.inside&&f.yAxis.position===Y.Left&&(yt+=a.width)):(yt=n.width-Z-at-M,f.yAxis.inside&&f.yAxis.position===Y.Right&&(yt-=a.width));var bt=v+q;if(gt){var xt=r.y;bt=xt-rt/2,bt+rt>n.height-J-D&&(bt=n.height-J-rt-D),bt1){var c="{".concat(l[1],"}");o.text=o.text.replace(c,null!==(e=b[c])&&void 0!==e?e:p.defaultValue),"{change}"===c&&(o.color=0===m?s.priceMark.last.noChangeColor:m>0?s.priceMark.last.upColor:s.priceMark.last.downColor)}return{title:r,value:o}})},e}(Dn),Hn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._candleBarView=new An(n),n._candleAreaView=new Fn(n),n._candleHighLowPriceView=new Rn(n),n._candleLastPriceLineView=new Ln(n),n.addChild(n._candleBarView),n}return L(e,t),e.prototype.updateMainContent=function(t){var e=this.getPane().getChart().getStyles().candle;e.type!==$.Area?(this._candleBarView.draw(t),this._candleHighLowPriceView.draw(t),this._candleAreaView.stopAnimation()):this._candleAreaView.draw(t),this._candleLastPriceLineView.draw(t)},e.prototype.createTooltipView=function(){return new Wn(this)},e}(Bn),$n=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i,n=this,a=this.getWidget(),r=a.getPane(),o=a.getBounding(),s=r.getAxisComponent(),l=this.getAxisStyles(r.getChart().getStyles());if(l.show){l.axisLine.show&&(null===(e=this.createFigure({name:"line",attrs:this.createAxisLine(o,l),styles:l.axisLine}))||void 0===e||e.draw(t));var c=s.getTicks();if(l.tickLine.show){var u=this.createTickLines(c,o,l);u.forEach(function(e){var i;null===(i=n.createFigure({name:"line",attrs:e,styles:l.tickLine}))||void 0===i||i.draw(t)})}if(l.tickText.show){var d=this.createTickTexts(c,o,l);null===(i=this.createFigure({name:"text",attrs:d,styles:l.tickText}))||void 0===i||i.draw(t)}}},e}(kn),Yn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getAxisStyles=function(t){return t.yAxis},e.prototype.createAxisLine=function(t,e){var i,n=this.getWidget().getPane().getAxisComponent(),a=e.axisLine.size;return i=n.isFromZero()?0:t.width-a,{coordinates:[{x:i,y:0},{x:i,y:t.height}]}},e.prototype.createTickLines=function(t,e,i){var n=this.getWidget().getPane().getAxisComponent(),a=i.axisLine,r=i.tickLine,o=0,s=0;return n.isFromZero()?(o=0,a.show&&(o+=a.size),s=o+r.length):(o=e.width,a.show&&(o-=a.size),s=o-r.length),t.map(function(t){return{coordinates:[{x:o,y:t.coord},{x:s,y:t.coord}]}})},e.prototype.createTickTexts=function(t,e,i){var n=this.getWidget().getPane().getAxisComponent(),a=i.axisLine,r=i.tickLine,o=i.tickText,s=0;n.isFromZero()?(s=o.marginStart,a.show&&(s+=a.size),r.show&&(s+=r.length)):(s=e.width-o.marginEnd,a.show&&(s-=a.size),r.show&&(s-=r.length));var l=this.getWidget().getPane().getAxisComponent().isFromZero()?"left":"right";return t.map(function(t){return{x:s,y:t.coord,text:t.text,align:l,baseline:"middle"}})},e}($n),Xn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=n.getChart().getChartStore(),o=r.getStyles().candle.priceMark,s=o.last,l=s.text;if(o.show&&s.show&&l.show){var c=r.getPrecision(),u=n.getAxisComponent(),d=r.getDataList(),h=d[d.length-1];if(At(h)){var p=h.close,v=h.open,f=u.convertToNicePixel(p),g=void 0;g=p>v?s.upColor:p1&&p.unshift({type:"rect",attrs:{x:0,y:g,width:i.width,height:m-g},ignoreEvent:!0})}return p},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createYAxisFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e}(Tn),Un=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.drawImp=function(t){var e,i=this.getWidget(),n=i.getPane(),a=i.getBounding(),r=i.getPane().getChart().getChartStore(),o=r.getTooltipStore().getCrosshair(),s=r.getStyles().crosshair;if(Mt(o.paneId)&&this.compare(o,n.getId())&&s.show){var l=this.getDirectionStyles(s),c=l.text;if(l.show&&c.show){var u=n.getAxisComponent(),d=this.getText(o,r,u);t.font=Ht(c.size,c.weight,c.family),null===(e=this.createFigure({name:"text",attrs:this.getTextAttrs(d,t.measureText(d).width,o,a,u,c),styles:c}))||void 0===e||e.draw(t)}}},e.prototype.compare=function(t,e){return t.paneId===e},e.prototype.getDirectionStyles=function(t){return t.horizontal},e.prototype.getText=function(t,e,i){var n,a=i,r=i.convertFromPixel(t.y);if(a.getType()===X.Percentage){var o=e.getVisibleFirstData();n="".concat(((r-o.close)/o.close*100).toFixed(2),"%")}else{var s=e.getIndicatorStore().getInstances(t.paneId),l=0,c=!1;a.isInCandle()?l=e.getPrecision().price:s.forEach(function(t){l=Math.max(t.precision,l),c||(c=t.shouldFormatBigNumber)}),n=Nt(r,l),c&&(n=e.getCustomApi().formatBigNumber(n))}return Vt(zt(n,e.getThousandsSeparator()),e.getDecimalFoldThreshold())},e.prototype.getTextAttrs=function(t,e,i,n,a,r){var o,s,l=a;return l.isFromZero()?(o=0,s="left"):(o=n.width,s="right"),{x:o,y:i.y,text:t,align:s,baseline:"middle"}},e}(kn),Gn=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._yAxisView=new Yn(n),n._candleLastPriceLabelView=new Xn(n),n._indicatorLastValueView=new Kn(n),n._overlayYAxisView=new jn(n),n._crosshairHorizontalLabelView=new Un(n),n.getContainer().style.cursor="ns-resize",n.addChild(n._overlayYAxisView),n}return L(e,t),e.prototype.getName=function(){return Gi.Y_AXIS},e.prototype.updateMain=function(t){this._yAxisView.draw(t),this.getPane().getAxisComponent().isInCandle()&&this._candleLastPriceLabelView.draw(t),this._indicatorLastValueView.draw(t)},e.prototype.updateOverlay=function(t){this._overlayYAxisView.draw(t),this._crosshairHorizontalLabelView.draw(t)},e}(en),Zn=function(){function t(t){this._range={from:0,to:0,range:0,realFrom:0,realTo:0,realRange:0},this._prevRange={from:0,to:0,range:0,realFrom:0,realTo:0,realRange:0},this._ticks=[],this._autoCalcTickFlag=!0,this._parent=t}return t.prototype.getParent=function(){return this._parent},t.prototype.buildTicks=function(t){if(this._autoCalcTickFlag&&(this._range=this.calcRange()),this._prevRange.from!==this._range.from||this._prevRange.to!==this._range.to||t){this._prevRange=this._range;var e=this.optimalTicks(this._calcTicks());return this._ticks=this.createTicks({range:this._range,bounding:this.getSelfBounding(),defaultTicks:e}),!0}return!1},t.prototype.getTicks=function(){return this._ticks},t.prototype.getScrollZoomEnabled=function(){var t;return null===(t=this.getParent().getOptions().axisOptions.scrollZoomEnabled)||void 0===t||t},t.prototype.setRange=function(t){this._autoCalcTickFlag=!1,this._range=t},t.prototype.getRange=function(){return this._range},t.prototype.setAutoCalcTickFlag=function(t){this._autoCalcTickFlag=t},t.prototype.getAutoCalcTickFlag=function(){return this._autoCalcTickFlag},t.prototype._calcTicks=function(){var t=this._range,e=t.realFrom,i=t.realTo,n=t.realRange,a=[];if(n>=0){var r=Z(this._calcTickInterval(n),2),o=r[0],s=r[1],l=fe(Math.ceil(e/o)*o,s),c=fe(Math.floor(i/o)*o,s),u=0,d=l;if(0!==o)while(d<=c){var h=d.toFixed(s);a[u]={text:h,coord:0,value:h},++u,d+=o}}return a},t.prototype._calcTickInterval=function(t){var e=ve(t/8),i=ge(e);return[e,i]},t}(),qn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.calcRange=function(){var t,e,i,n,a=this.getParent(),r=a.getChart(),o=r.getChartStore(),s=Number.MAX_SAFE_INTEGER,l=Number.MIN_SAFE_INTEGER,c=[],u=!1,d=Number.MAX_SAFE_INTEGER,h=Number.MIN_SAFE_INTEGER,p=Number.MAX_SAFE_INTEGER,v=o.getIndicatorStore().getInstances(a.getId());v.forEach(function(t){var e,i,n;u||(u=null!==(e=t.shouldOhlc)&&void 0!==e&&e),p=Math.min(p,t.precision),Et(t.minValue)&&(d=Math.min(d,t.minValue)),Et(t.maxValue)&&(h=Math.max(h,t.maxValue)),c.push({figures:null!==(i=t.figures)&&void 0!==i?i:[],result:null!==(n=t.result)&&void 0!==n?n:[]})});var f=4,g=this.isInCandle();if(g){var m=o.getPrecision().price;f=p!==Number.MAX_SAFE_INTEGER?Math.min(p,m):m}else p!==Number.MAX_SAFE_INTEGER&&(f=p);var y=o.getVisibleDataList(),_=r.getStyles().candle,b=_.type===$.Area,x=_.area.value,w=g&&!b||!g&&u;y.forEach(function(t){var e=t.dataIndex,i=t.data;if(At(i)&&(w&&(s=Math.min(s,i.low),l=Math.max(l,i.high)),g&&b)){var n=i[x];Et(n)&&(s=Math.min(s,n),l=Math.max(l,n))}c.forEach(function(t){var i,n=t.figures,a=t.result,r=null!==(i=a[e])&&void 0!==i?i:{};n.forEach(function(t){var e=r[t.key];Et(e)&&(s=Math.min(s,e),l=Math.max(l,e))})})}),s!==Number.MAX_SAFE_INTEGER&&l!==Number.MIN_SAFE_INTEGER?(s=Math.min(d,s),l=Math.max(h,l)):(s=0,l=10);var S,C=this.getType();switch(C){case X.Percentage:var k=o.getVisibleFirstData();At(k)&&Et(k.close)&&(s=(s-k.close)/k.close*100,l=(l-k.close)/k.close*100),S=Math.pow(10,-2);break;case X.Log:s=ye(s),l=ye(l),S=.05*_e(-f);break;default:S=_e(-f)}if(s===l||Math.abs(s-l)=1&&(M/=A);var D=null!==(n=null===P||void 0===P?void 0:P.bottom)&&void 0!==n?n:.1;D>=1&&(D/=A);var T,B,F,R=Math.abs(l-s);return s-=R*D,l+=R*M,R=Math.abs(l-s),C===X.Log?(T=_e(s),B=_e(l),F=Math.abs(B-T)):(T=s,B=l,F=R),{from:s,to:l,range:R,realFrom:T,realTo:B,realRange:F}},e.prototype._innerConvertToPixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.getRange(),r=a.from,o=a.range,s=(t-r)/o;return this.isReverse()?Math.round(s*n):Math.round((1-s)*n)},e.prototype.isInCandle=function(){return this.getParent().getId()===Wi.CANDLE},e.prototype.getType=function(){return this.isInCandle()?this.getParent().getChart().getStyles().yAxis.type:X.Normal},e.prototype.getPosition=function(){return this.getParent().getChart().getStyles().yAxis.position},e.prototype.isReverse=function(){return!!this.isInCandle()&&this.getParent().getChart().getStyles().yAxis.reverse},e.prototype.isFromZero=function(){var t=this.getParent().getChart().getStyles().yAxis,e=t.inside;return t.position===Y.Left&&e||t.position===Y.Right&&!e},e.prototype.optimalTicks=function(t){var e,i,n=this,a=this.getParent(),r=null!==(i=null===(e=a.getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,o=a.getChart().getChartStore(),s=o.getCustomApi(),l=[],c=this.getType(),u=o.getIndicatorStore().getInstances(a.getId()),d=o.getThousandsSeparator(),h=o.getDecimalFoldThreshold(),p=0,v=!1;this.isInCandle()?p=o.getPrecision().price:u.forEach(function(t){p=Math.max(p,t.precision),v||(v=t.shouldFormatBigNumber)});var f,g=o.getStyles().xAxis.tickText.size;return t.forEach(function(t){var e,i=t.value,a=n._innerConvertToPixel(+i);switch(c){case X.Percentage:e="".concat(Nt(i,2),"%");break;case X.Log:a=n._innerConvertToPixel(ye(+i)),e=Nt(i,p);break;default:e=Nt(i,p),v&&(e=s.formatBigNumber(i));break}e=Vt(zt(e,d),h);var o=Et(f);a>g&&a2*g||!o)&&(l.push({text:e,coord:a,value:i}),f=a)}),l},e.prototype.getAutoSize=function(){var t=this.getParent(),e=t.getChart(),i=e.getStyles(),n=i.yAxis,a=n.size;if("auto"!==a)return a;var r=e.getChartStore(),o=r.getCustomApi(),s=0;if(n.show&&(n.axisLine.show&&(s+=n.axisLine.size),n.tickLine.show&&(s+=n.tickLine.length),n.tickText.show)){var l=0;this.getTicks().forEach(function(t){l=Math.max(l,$t(t.text,n.tickText.size,n.tickText.weight,n.tickText.family))}),s+=n.tickText.marginStart+n.tickText.marginEnd+l}var c=i.crosshair,u=0;if(c.show&&c.horizontal.show&&c.horizontal.text.show){var d=r.getIndicatorStore().getInstances(t.getId()),h=0,p=!1;d.forEach(function(t){h=Math.max(t.precision,h),p||(p=t.shouldFormatBigNumber)});var v=2;if(this.getType()!==X.Percentage)if(this.isInCandle()){var f=r.getPrecision().price,g=i.indicator.lastValueMark;v=g.show&&g.text.show?Math.max(h,f):f}else v=h;var m=Nt(this.getRange().to,v);p&&(m=o.formatBigNumber(m)),m=Vt(m,r.getDecimalFoldThreshold()),u+=c.horizontal.text.paddingLeft+c.horizontal.text.paddingRight+2*c.horizontal.text.borderSize+$t(m,c.horizontal.text.size,c.horizontal.text.weight,c.horizontal.text.family)}return Math.max(s,u)},e.prototype.getSelfBounding=function(){return this.getParent().getYAxisWidget().getBounding()},e.prototype.convertFromPixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.getRange(),r=a.from,o=a.range,s=this.isReverse()?t/n:1-t/n,l=s*o+r;switch(this.getType()){case X.Percentage:var c=this.getParent().getChart().getChartStore().getVisibleFirstData();return At(c)&&Et(c.close)?c.close*l/100+c.close:0;case X.Log:return _e(l);default:return l}},e.prototype.convertToRealValue=function(t){var e=t;return this.getType()===X.Log&&(e=_e(t)),e},e.prototype.convertToPixel=function(t){var e=t;switch(this.getType()){case X.Percentage:var i=this.getParent().getChart().getChartStore().getVisibleFirstData();At(i)&&Et(i.close)&&(e=(t-i.close)/i.close*100);break;case X.Log:e=ye(t);break;default:e=t}return this._innerConvertToPixel(e)},e.prototype.convertToNicePixel=function(t){var e,i,n=null!==(i=null===(e=this.getParent().getYAxisWidget())||void 0===e?void 0:e.getBounding().height)&&void 0!==i?i:0,a=this.convertToPixel(t);return Math.round(Math.max(.05*n,Math.min(a,.98*n)))},e.extend=function(t){var i=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return L(i,e),i.prototype.createTicks=function(e){return t.createTicks(e)},i}(e);return i},e}(Zn),Jn={name:"default",createTicks:function(t){var e=t.defaultTicks;return e}},Qn={default:qn.extend(Jn)};function ta(t){var e;return null!==(e=Qn[t])&&void 0!==e?e:Qn.default}var ea=function(){function t(t,e,i,n){this._bounding=Qi(),this._chart=i,this._id=n,this._init(t,e)}return t.prototype._init=function(t,e){this._rootContainer=t,this._container=he("div",{width:"100%",margin:"0",padding:"0",position:"relative",overflow:"hidden",boxSizing:"border-box"}),null!==e?t.insertBefore(this._container,e):t.appendChild(this._container)},t.prototype.getContainer=function(){return this._container},t.prototype.getId=function(){return this._id},t.prototype.getChart=function(){return this._chart},t.prototype.getBounding=function(){return this._bounding},t.prototype.update=function(t){this._bounding.height!==this._container.clientHeight&&(this._container.style.height="".concat(this._bounding.height,"px")),this.updateImp(null!==t&&void 0!==t?t:3,this._container,this._bounding)},t.prototype.destroy=function(){this._rootContainer.removeChild(this._container)},t}(),ia=function(t){function e(e,i,n,a,r){var o=t.call(this,e,i,n,a)||this;o._yAxisWidget=null,o._options={minHeight:zi,dragEnabled:!0,gap:{top:.2,bottom:.1},axisOptions:{name:"default",scrollZoomEnabled:!0}};var s=o.getContainer();return o._mainWidget=o.createMainWidget(s),o._yAxisWidget=o.createYAxisWidget(s),o.setOptions(r),o}return L(e,t),e.prototype.setOptions=function(t){var e,i,n,a,r,o=null===(e=t.axisOptions)||void 0===e?void 0:e.name;return(this._options.axisOptions.name!==o&&Mt(o)||!At(this._axis))&&(this._axis=this.createAxisComponent(null!==o&&void 0!==o?o:"default")),wt(this._options,t),this.getId()===Wi.X_AXIS?(a=this.getMainWidget().getContainer(),r="ew-resize"):(a=this.getYAxisWidget().getContainer(),r="ns-resize"),null===(n=null===(i=t.axisOptions)||void 0===i?void 0:i.scrollZoomEnabled)||void 0===n||n?a.style.cursor=r:a.style.cursor="default",this},e.prototype.getOptions=function(){return this._options},e.prototype.getAxisComponent=function(){return this._axis},e.prototype.setBounding=function(t,e,i){var n,a;wt(this.getBounding(),t);var r={};return At(t.height)&&(r.height=t.height),At(t.top)&&(r.top=t.top),this._mainWidget.setBounding(r),null===(n=this._yAxisWidget)||void 0===n||n.setBounding(r),At(e)&&this._mainWidget.setBounding(e),At(i)&&(null===(a=this._yAxisWidget)||void 0===a||a.setBounding(i)),this},e.prototype.getMainWidget=function(){return this._mainWidget},e.prototype.getYAxisWidget=function(){return this._yAxisWidget},e.prototype.updateImp=function(t){var e;this._mainWidget.update(t),null===(e=this._yAxisWidget)||void 0===e||e.update(t)},e.prototype.destroy=function(){var e;t.prototype.destroy.call(this),this._mainWidget.destroy(),null===(e=this._yAxisWidget)||void 0===e||e.destroy()},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),r=a.getContext("2d"),o=Wt(a);a.width=i*o,a.height=n*o,r.scale(o,o);var s=this._mainWidget.getBounding();if(r.drawImage(this._mainWidget.getImage(t),s.left,0,s.width,s.height),null!==this._yAxisWidget){var l=this._yAxisWidget.getBounding();r.drawImage(this._yAxisWidget.getImage(t),l.left,0,l.width,l.height)}return a},e.prototype.createYAxisWidget=function(t){return null},e}(ea),na=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.createAxisComponent=function(t){var e=ta(null!==t&&void 0!==t?t:"default");return new e(this)},e.prototype.createMainWidget=function(t){return new Bn(t,this)},e.prototype.createYAxisWidget=function(t){return new Gn(t,this)},e}(ia),aa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.createMainWidget=function(t){return new Hn(t,this)},e}(na),ra=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.getAxisStyles=function(t){return t.xAxis},e.prototype.createAxisLine=function(t){return{coordinates:[{x:0,y:0},{x:t.width,y:0}]}},e.prototype.createTickLines=function(t,e,i){var n=i.tickLine,a=i.axisLine.size;return t.map(function(t){return{coordinates:[{x:t.coord,y:0},{x:t.coord,y:a+n.length}]}})},e.prototype.createTickTexts=function(t,e,i){var n=i.tickText,a=i.axisLine.size,r=i.tickLine.length;return t.map(function(t){return{x:t.coord,y:a+r+n.marginStart,text:t.text,align:"center",baseline:"top"}})},e}($n),oa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.coordinateToPointTimestampDataIndexFlag=function(){return!0},e.prototype.coordinateToPointValueFlag=function(){return!1},e.prototype.getCompleteOverlays=function(t){return t.getInstances()},e.prototype.getProgressOverlay=function(t){return t.instance},e.prototype.getDefaultFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h=[];if(t.needDefaultXAxisFigure&&t.id===(null===(d=u.instance)||void 0===d?void 0:d.id)){var p=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER;e.forEach(function(e,i){p=Math.min(p,e.x),v=Math.max(v,e.x);var n=t.points[i];if(Et(n.timestamp)){var o=r.formatDate(a,n.timestamp,"YYYY-MM-DD HH:mm",qt.Crosshair);h.push({type:"text",attrs:{x:e.x,y:0,text:o,align:"center"},ignoreEvent:!0})}}),e.length>1&&h.unshift({type:"rect",attrs:{x:p,y:0,width:v-p,height:i.height},ignoreEvent:!0})}return h},e.prototype.getFigures=function(t,e,i,n,a,r,o,s,l,c,u){var d,h;return null!==(h=null===(d=t.createXAxisFigures)||void 0===d?void 0:d.call(t,{overlay:t,coordinates:e,bounding:i,barSpace:n,precision:a,thousandsSeparator:r,decimalFoldThreshold:o,dateTimeFormat:s,defaultStyles:l,xAxis:c,yAxis:u}))&&void 0!==h?h:[]},e}(jn),sa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.compare=function(t){return At(t.kLineData)&&t.dataIndex===t.realDataIndex},e.prototype.getDirectionStyles=function(t){return t.vertical},e.prototype.getText=function(t,e){var i,n=null===(i=t.kLineData)||void 0===i?void 0:i.timestamp;return e.getCustomApi().formatDate(e.getTimeScaleStore().getDateTimeFormat(),n,"YYYY-MM-DD HH:mm",qt.Crosshair)},e.prototype.getTextAttrs=function(t,e,i,n,a,r){var o,s=i.realX,l="center";return s-e/2-r.paddingLeft<0?(o=0,l="left"):s+e/2+r.paddingRight>n.width?(o=n.width,l="right"):o=s,{x:o,y:0,text:t,align:l,baseline:"top"}},e}(Un),la=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._xAxisView=new ra(n),n._overlayXAxisView=new oa(n),n._crosshairVerticalLabelView=new sa(n),n.getContainer().style.cursor="ew-resize",n.addChild(n._overlayXAxisView),n}return L(e,t),e.prototype.getName=function(){return Gi.X_AXIS},e.prototype.updateMain=function(t){this._xAxisView.draw(t)},e.prototype.updateOverlay=function(t){this._overlayXAxisView.draw(t),this._crosshairVerticalLabelView.draw(t)},e}(en),ca=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return L(e,t),e.prototype.calcRange=function(){var t=this.getParent().getChart().getChartStore(),e=t.getTimeScaleStore().getVisibleRange(),i=e.from,n=e.to,a=i,r=n-1,o=n-i;return{from:a,to:r,range:o,realFrom:a,realTo:r,realRange:o}},e.prototype.optimalTicks=function(t){var e,i,n=this.getParent().getChart(),a=n.getChartStore(),r=a.getCustomApi().formatDate,o=[],s=t.length,l=a.getDataList();if(s>0){var c=a.getTimeScaleStore().getDateTimeFormat(),u=n.getStyles().xAxis.tickText,d=$t("00-00 00:00",u.size,u.weight,u.family),h=parseInt(t[0].value,10),p=this.convertToPixel(h),v=1;if(s>1){var f=parseInt(t[1].value,10),g=this.convertToPixel(f),m=Math.abs(g-p);me&&(t.apply(this,arguments),i=n)}}var fa=function(t){function e(e,i){var n=t.call(this,e,i)||this;return n._dragFlag=!1,n._dragStartY=0,n._topPaneHeight=0,n._bottomPaneHeight=0,n._pressedMouseMoveEvent=va(n._pressedTouchMouseMoveEvent,20),n.registerEvent("touchStartEvent",n._mouseDownEvent.bind(n)).registerEvent("touchMoveEvent",n._pressedMouseMoveEvent.bind(n)).registerEvent("touchEndEvent",n._mouseUpEvent.bind(n)).registerEvent("mouseDownEvent",n._mouseDownEvent.bind(n)).registerEvent("mouseUpEvent",n._mouseUpEvent.bind(n)).registerEvent("pressedMouseMoveEvent",n._pressedMouseMoveEvent.bind(n)).registerEvent("mouseEnterEvent",n._mouseEnterEvent.bind(n)).registerEvent("mouseLeaveEvent",n._mouseLeaveEvent.bind(n)),n}return L(e,t),e.prototype.getName=function(){return Gi.SEPARATOR},e.prototype.checkEventOn=function(){return!0},e.prototype._mouseDownEvent=function(t){this._dragFlag=!0,this._dragStartY=t.pageY;var e=this.getPane();return this._topPaneHeight=e.getTopPane().getBounding().height,this._bottomPaneHeight=e.getBottomPane().getBounding().height,!0},e.prototype._mouseUpEvent=function(){return this._dragFlag=!1,this._mouseLeaveEvent()},e.prototype._pressedTouchMouseMoveEvent=function(t){var e=t.pageY-this._dragStartY,i=this.getPane(),n=i.getTopPane(),a=i.getBottomPane(),r=e<0;if(null!==n&&(null===a||void 0===a?void 0:a.getOptions().dragEnabled)){var o=void 0,s=void 0,l=void 0,c=void 0;r?(o=n,s=a,l=this._topPaneHeight,c=this._bottomPaneHeight):(o=a,s=n,l=this._bottomPaneHeight,c=this._topPaneHeight);var u=o.getOptions().minHeight;if(l>u){var d=Math.max(l-Math.abs(e),u),h=l-d;o.setBounding({height:d}),s.setBounding({height:c+h});var p=i.getChart();p.getChartStore().getActionStore().execute(Tt.OnPaneDrag,{paneId:i.getId()}),p.adjustPaneViewport(!0,!0,!0,!0,!0)}}return!0},e.prototype._mouseEnterEvent=function(){var t,e=this.getPane(),i=e.getBottomPane();if(null!==(t=null===i||void 0===i?void 0:i.getOptions().dragEnabled)&&void 0!==t&&t){var n=e.getChart(),a=n.getStyles().separator;return this.getContainer().style.background=a.activeBackgroundColor,!0}return!1},e.prototype._mouseLeaveEvent=function(){return!this._dragFlag&&(this.getContainer().style.background="",!0)},e.prototype.createContainer=function(){return he("div",{width:"100%",height:"".concat(Zi,"px"),margin:"0",padding:"0",position:"absolute",top:"-3px",zIndex:"20",boxSizing:"border-box",cursor:"ns-resize"})},e.prototype.updateImp=function(t,e,i){if(4===i||2===i){var n=this.getPane().getChart().getStyles().separator;t.style.top="".concat(-Math.floor((Zi-n.size)/2),"px"),t.style.height="".concat(Zi,"px")}},e}(tn),ga=function(t){function e(e,i,n,a,r,o){var s=t.call(this,e,i,n,a)||this;return s.getContainer().style.overflow="",s._topPane=r,s._bottomPane=o,s._separatorWidget=new fa(s.getContainer(),s),s}return L(e,t),e.prototype.setBounding=function(t){return wt(this.getBounding(),t),this},e.prototype.getTopPane=function(){return this._topPane},e.prototype.setTopPane=function(t){return this._topPane=t,this},e.prototype.getBottomPane=function(){return this._bottomPane},e.prototype.setBottomPane=function(t){return this._bottomPane=t,this},e.prototype.getWidget=function(){return this._separatorWidget},e.prototype.getImage=function(t){var e=this.getBounding(),i=e.width,n=e.height,a=this.getChart().getStyles().separator,r=he("canvas",{width:"".concat(i,"px"),height:"".concat(n,"px"),boxSizing:"border-box"}),o=r.getContext("2d"),s=Wt(r);return r.width=i*s,r.height=n*s,o.scale(s,s),o.fillStyle=a.color,o.fillRect(0,0,i,n),r},e.prototype.updateImp=function(t,e,i){if(4===t||2===t){var n=this.getChart().getStyles().separator;e.style.backgroundColor=n.color,e.style.height="".concat(i.height,"px"),e.style.marginLeft="".concat(i.left,"px"),e.style.width="".concat(i.width,"px"),this._separatorWidget.update(t)}},e}(ea);function ma(){var t;return"undefined"!==typeof window&&(null!==(t=window.navigator.userAgent.toLowerCase().indexOf("firefox"))&&void 0!==t?t:-1)>-1}function ya(){return"undefined"!==typeof window&&/iPhone|iPad|iPod/.test(window.navigator.platform)}var _a,ba=10,xa=function(){function t(t,e,i){var n=this;this._clickCount=0,this._clickTimeoutId=null,this._clickCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY},this._tapCount=0,this._tapTimeoutId=null,this._tapCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY},this._longTapTimeoutId=null,this._longTapActive=!1,this._mouseMoveStartCoordinate=null,this._touchMoveStartCoordinate=null,this._touchMoveExceededManhattanDistance=!1,this._cancelClick=!1,this._cancelTap=!1,this._unsubscribeOutsideMouseEvents=null,this._unsubscribeOutsideTouchEvents=null,this._unsubscribeMobileSafariEvents=null,this._unsubscribeMousemove=null,this._unsubscribeMouseWheel=null,this._unsubscribeContextMenu=null,this._unsubscribeRootMouseEvents=null,this._unsubscribeRootTouchEvents=null,this._startPinchMiddleCoordinate=null,this._startPinchDistance=0,this._pinchPrevented=!1,this._preventTouchDragProcess=!1,this._mousePressed=!1,this._lastTouchEventTimeStamp=0,this._activeTouchId=null,this._acceptMouseLeave=!ya(),this._onFirefoxOutsideMouseUp=function(t){n._mouseUpHandler(t)},this._onMobileSafariDoubleClick=function(t){if(n._firesTouchEvents(t)){if(++n._tapCount,null!==n._tapTimeoutId&&n._tapCount>1){var e=n._mouseTouchMoveWithDownInfo(n._getCoordinate(t),n._tapCoordinate).manhattanDistance;e<30&&!n._cancelTap&&n._processEvent(n._makeCompatEvent(t),n._handler.doubleTapEvent),n._resetTapTimeout()}}else if(++n._clickCount,null!==n._clickTimeoutId&&n._clickCount>1){e=n._mouseTouchMoveWithDownInfo(n._getCoordinate(t),n._clickCoordinate).manhattanDistance;e<5&&!n._cancelClick&&n._processEvent(n._makeCompatEvent(t),n._handler.mouseDoubleClickEvent),n._resetClickTimeout()}},this._target=t,this._handler=e,this._options=i,this._init()}return t.prototype.destroy=function(){null!==this._unsubscribeOutsideMouseEvents&&(this._unsubscribeOutsideMouseEvents(),this._unsubscribeOutsideMouseEvents=null),null!==this._unsubscribeOutsideTouchEvents&&(this._unsubscribeOutsideTouchEvents(),this._unsubscribeOutsideTouchEvents=null),null!==this._unsubscribeMousemove&&(this._unsubscribeMousemove(),this._unsubscribeMousemove=null),null!==this._unsubscribeMouseWheel&&(this._unsubscribeMouseWheel(),this._unsubscribeMouseWheel=null),null!==this._unsubscribeContextMenu&&(this._unsubscribeContextMenu(),this._unsubscribeContextMenu=null),null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null),null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null),null!==this._unsubscribeMobileSafariEvents&&(this._unsubscribeMobileSafariEvents(),this._unsubscribeMobileSafariEvents=null),this._clearLongTapTimeout(),this._resetClickTimeout()},t.prototype._mouseEnterHandler=function(t){var e,i,n,a=this;null===(e=this._unsubscribeMousemove)||void 0===e||e.call(this),null===(i=this._unsubscribeMouseWheel)||void 0===i||i.call(this),null===(n=this._unsubscribeContextMenu)||void 0===n||n.call(this);var r=this._mouseMoveHandler.bind(this);this._unsubscribeMousemove=function(){a._target.removeEventListener("mousemove",r)},this._target.addEventListener("mousemove",r);var o=this._mouseWheelHandler.bind(this);this._unsubscribeMouseWheel=function(){a._target.removeEventListener("wheel",o)},this._target.addEventListener("wheel",o,{passive:!1});var s=this._contextMenuHandler.bind(this);this._unsubscribeContextMenu=function(){a._target.removeEventListener("contextmenu",s)},this._target.addEventListener("contextmenu",s,{passive:!1}),this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseEnterEvent),this._acceptMouseLeave=!0)},t.prototype._resetClickTimeout=function(){null!==this._clickTimeoutId&&clearTimeout(this._clickTimeoutId),this._clickCount=0,this._clickTimeoutId=null,this._clickCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY}},t.prototype._resetTapTimeout=function(){null!==this._tapTimeoutId&&clearTimeout(this._tapTimeoutId),this._tapCount=0,this._tapTimeoutId=null,this._tapCoordinate={x:Number.NEGATIVE_INFINITY,y:Number.POSITIVE_INFINITY}},t.prototype._mouseMoveHandler=function(t){this._mousePressed||null!==this._touchMoveStartCoordinate||this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseMoveEvent),this._acceptMouseLeave=!0)},t.prototype._mouseWheelHandler=function(t){if(Math.abs(t.deltaX)>Math.abs(t.deltaY)){if(!At(this._handler.mouseWheelHortEvent))return;if(this._preventDefault(t),0===Math.abs(t.deltaX))return;this._handler.mouseWheelHortEvent(this._makeCompatEvent(t),-t.deltaX)}else{if(!At(this._handler.mouseWheelVertEvent))return;var e=-t.deltaY/100;if(0===e)return;switch(this._preventDefault(t),t.deltaMode){case t.DOM_DELTA_PAGE:e*=120;break;case t.DOM_DELTA_LINE:e*=32;break}if(0!==e){var i=Math.sign(e)*Math.min(1,Math.abs(e));this._handler.mouseWheelVertEvent(this._makeCompatEvent(t),i)}}},t.prototype._contextMenuHandler=function(t){this._preventDefault(t)},t.prototype._touchMoveHandler=function(t){var e=this._touchWithId(t.changedTouches,this._activeTouchId);if(null!==e&&(this._lastTouchEventTimeStamp=this._eventTimeStamp(t),null===this._startPinchMiddleCoordinate&&!this._preventTouchDragProcess)){this._pinchPrevented=!0;var i=this._mouseTouchMoveWithDownInfo(this._getCoordinate(e),this._touchMoveStartCoordinate),n=i.xOffset,a=i.yOffset,r=i.manhattanDistance;if(this._touchMoveExceededManhattanDistance||!(r<5)){if(!this._touchMoveExceededManhattanDistance){var o=.5*n,s=a>=o&&!this._options.treatVertDragAsPageScroll(),l=o>a&&!this._options.treatHorzDragAsPageScroll();s||l||(this._preventTouchDragProcess=!0),this._touchMoveExceededManhattanDistance=!0,this._cancelTap=!0,this._clearLongTapTimeout(),this._resetTapTimeout()}this._preventTouchDragProcess||this._processEvent(this._makeCompatEvent(t,e),this._handler.touchMoveEvent)}}},t.prototype._mouseMoveWithDownHandler=function(t){if(0===t.button){var e=this._mouseTouchMoveWithDownInfo(this._getCoordinate(t),this._mouseMoveStartCoordinate),i=e.manhattanDistance;i>=5&&(this._cancelClick=!0,this._resetClickTimeout()),this._cancelClick&&this._processEvent(this._makeCompatEvent(t),this._handler.pressedMouseMoveEvent)}},t.prototype._mouseTouchMoveWithDownInfo=function(t,e){var i=Math.abs(e.x-t.x),n=Math.abs(e.y-t.y),a=i+n;return{xOffset:i,yOffset:n,manhattanDistance:a}},t.prototype._touchEndHandler=function(t){var e=this._touchWithId(t.changedTouches,this._activeTouchId);if(null===e&&0===t.touches.length&&(e=t.changedTouches[0]),null!==e){this._activeTouchId=null,this._lastTouchEventTimeStamp=this._eventTimeStamp(t),this._clearLongTapTimeout(),this._touchMoveStartCoordinate=null,null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null);var i=this._makeCompatEvent(t,e);if(this._processEvent(i,this._handler.touchEndEvent),++this._tapCount,null!==this._tapTimeoutId&&this._tapCount>1){var n=this._mouseTouchMoveWithDownInfo(this._getCoordinate(e),this._tapCoordinate).manhattanDistance;n<30&&!this._cancelTap&&this._processEvent(i,this._handler.doubleTapEvent),this._resetTapTimeout()}else this._cancelTap||(this._processEvent(i,this._handler.tapEvent),At(this._handler.tapEvent)&&this._preventDefault(t));0===this._tapCount&&this._preventDefault(t),0===t.touches.length&&this._longTapActive&&(this._longTapActive=!1,this._preventDefault(t))}},t.prototype._mouseUpHandler=function(t){if(0===t.button){var e=this._makeCompatEvent(t);if(this._mouseMoveStartCoordinate=null,this._mousePressed=!1,null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null),ma()){var i=this._target.ownerDocument.documentElement;i.removeEventListener("mouseleave",this._onFirefoxOutsideMouseUp)}if(!this._firesTouchEvents(t))if(this._processEvent(e,this._handler.mouseUpEvent),++this._clickCount,null!==this._clickTimeoutId&&this._clickCount>1){var n=this._mouseTouchMoveWithDownInfo(this._getCoordinate(t),this._clickCoordinate).manhattanDistance;n<5&&!this._cancelClick&&this._processEvent(e,this._handler.mouseDoubleClickEvent),this._resetClickTimeout()}else this._cancelClick||this._processEvent(e,this._handler.mouseClickEvent)}},t.prototype._clearLongTapTimeout=function(){null!==this._longTapTimeoutId&&(clearTimeout(this._longTapTimeoutId),this._longTapTimeoutId=null)},t.prototype._touchStartHandler=function(t){if(null===this._activeTouchId){var e=t.changedTouches[0];this._activeTouchId=e.identifier,this._lastTouchEventTimeStamp=this._eventTimeStamp(t);var i=this._target.ownerDocument.documentElement;this._cancelTap=!1,this._touchMoveExceededManhattanDistance=!1,this._preventTouchDragProcess=!1,this._touchMoveStartCoordinate=this._getCoordinate(e),null!==this._unsubscribeRootTouchEvents&&(this._unsubscribeRootTouchEvents(),this._unsubscribeRootTouchEvents=null);var n=this._touchMoveHandler.bind(this),a=this._touchEndHandler.bind(this);this._unsubscribeRootTouchEvents=function(){i.removeEventListener("touchmove",n),i.removeEventListener("touchend",a)},i.addEventListener("touchmove",n,{passive:!1}),i.addEventListener("touchend",a,{passive:!1}),this._clearLongTapTimeout(),this._longTapTimeoutId=setTimeout(this._longTapHandler.bind(this,t),500),this._processEvent(this._makeCompatEvent(t,e),this._handler.touchStartEvent),null===this._tapTimeoutId&&(this._tapCount=0,this._tapTimeoutId=setTimeout(this._resetTapTimeout.bind(this),500),this._tapCoordinate=this._getCoordinate(e))}},t.prototype._mouseDownHandler=function(t){if(2===t.button)return this._preventDefault(t),void this._processEvent(this._makeCompatEvent(t),this._handler.mouseRightClickEvent);if(0===t.button){var e=this._target.ownerDocument.documentElement;ma()&&e.addEventListener("mouseleave",this._onFirefoxOutsideMouseUp),this._cancelClick=!1,this._mouseMoveStartCoordinate=this._getCoordinate(t),null!==this._unsubscribeRootMouseEvents&&(this._unsubscribeRootMouseEvents(),this._unsubscribeRootMouseEvents=null);var i=this._mouseMoveWithDownHandler.bind(this),n=this._mouseUpHandler.bind(this);this._unsubscribeRootMouseEvents=function(){e.removeEventListener("mousemove",i),e.removeEventListener("mouseup",n)},e.addEventListener("mousemove",i),e.addEventListener("mouseup",n),this._mousePressed=!0,this._firesTouchEvents(t)||(this._processEvent(this._makeCompatEvent(t),this._handler.mouseDownEvent),null===this._clickTimeoutId&&(this._clickCount=0,this._clickTimeoutId=setTimeout(this._resetClickTimeout.bind(this),500),this._clickCoordinate=this._getCoordinate(t)))}},t.prototype._init=function(){var t=this;this._target.addEventListener("mouseenter",this._mouseEnterHandler.bind(this)),this._target.addEventListener("touchcancel",this._clearLongTapTimeout.bind(this));var e=this._target.ownerDocument,i=function(e){null!=t._handler.mouseDownOutsideEvent&&(e.composed&&t._target.contains(e.composedPath()[0])||null!==e.target&&t._target.contains(e.target)||t._handler.mouseDownOutsideEvent({x:0,y:0,pageX:0,pageY:0}))};this._unsubscribeOutsideTouchEvents=function(){e.removeEventListener("touchstart",i)},this._unsubscribeOutsideMouseEvents=function(){e.removeEventListener("mousedown",i)},e.addEventListener("mousedown",i),e.addEventListener("touchstart",i,{passive:!0}),ya()&&(this._unsubscribeMobileSafariEvents=function(){t._target.removeEventListener("dblclick",t._onMobileSafariDoubleClick)},this._target.addEventListener("dblclick",this._onMobileSafariDoubleClick)),this._target.addEventListener("mouseleave",this._mouseLeaveHandler.bind(this)),this._target.addEventListener("touchstart",this._touchStartHandler.bind(this),{passive:!0}),this._target.addEventListener("mousedown",function(t){if(1===t.button)return t.preventDefault(),!1}),this._target.addEventListener("mousedown",this._mouseDownHandler.bind(this)),this._initPinch(),this._target.addEventListener("touchmove",function(){},{passive:!1})},t.prototype._initPinch=function(){var t=this;(At(this._handler.pinchStartEvent)||At(this._handler.pinchEvent)||At(this._handler.pinchEndEvent))&&(this._target.addEventListener("touchstart",function(e){t._checkPinchState(e.touches)},{passive:!0}),this._target.addEventListener("touchmove",function(e){if(2===e.touches.length&&null!==t._startPinchMiddleCoordinate&&At(t._handler.pinchEvent)){var i=t._getTouchDistance(e.touches[0],e.touches[1]),n=i/t._startPinchDistance;t._handler.pinchEvent(K(K({},t._startPinchMiddleCoordinate),{pageX:0,pageY:0}),n),t._preventDefault(e)}},{passive:!1}),this._target.addEventListener("touchend",function(e){t._checkPinchState(e.touches)}))},t.prototype._checkPinchState=function(t){1===t.length&&(this._pinchPrevented=!1),2!==t.length||this._pinchPrevented||this._longTapActive?this._stopPinch():this._startPinch(t)},t.prototype._startPinch=function(t){var e,i=null!==(e=this._target.getBoundingClientRect())&&void 0!==e?e:{left:0,top:0};this._startPinchMiddleCoordinate={x:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,y:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this._startPinchDistance=this._getTouchDistance(t[0],t[1]),At(this._handler.pinchStartEvent)&&this._handler.pinchStartEvent({x:0,y:0,pageX:0,pageY:0}),this._clearLongTapTimeout()},t.prototype._stopPinch=function(){null!==this._startPinchMiddleCoordinate&&(this._startPinchMiddleCoordinate=null,At(this._handler.pinchEndEvent)&&this._handler.pinchEndEvent({x:0,y:0,pageX:0,pageY:0}))},t.prototype._mouseLeaveHandler=function(t){var e,i,n;null===(e=this._unsubscribeMousemove)||void 0===e||e.call(this),null===(i=this._unsubscribeMouseWheel)||void 0===i||i.call(this),null===(n=this._unsubscribeContextMenu)||void 0===n||n.call(this),this._firesTouchEvents(t)||this._acceptMouseLeave&&(this._processEvent(this._makeCompatEvent(t),this._handler.mouseLeaveEvent),this._acceptMouseLeave=!ya())},t.prototype._longTapHandler=function(t){var e=this._touchWithId(t.touches,this._activeTouchId);null!==e&&(this._processEvent(this._makeCompatEvent(t,e),this._handler.longTapEvent),this._cancelTap=!0,this._longTapActive=!0)},t.prototype._firesTouchEvents=function(t){var e;return At(null===(e=t.sourceCapabilities)||void 0===e?void 0:e.firesTouchEvents)?t.sourceCapabilities.firesTouchEvents:this._eventTimeStamp(t)this._startScrollCoordinate.y-s.y){var d=s.x-this._startScrollCoordinate.x;c.getTimeScaleStore().scroll(d)}return!0;case Gi.X_AXIS:case Gi.Y_AXIS:var h=o.dispatchEvent("pressedMouseMoveEvent",s);return h&&(null===(n=s.preventDefault)||void 0===n||n.call(s),this._chart.updatePane(1)),h}}return!1},t.prototype.touchEndEvent=function(t){var e=this,i=this._findWidgetByEvent(t).widget;if(null!==i){var n=this._makeWidgetEvent(t,i),a=i.getName();switch(a){case Gi.MAIN:if(i.dispatchEvent("mouseUpEvent",n),null!==this._startScrollCoordinate){var r=(new Date).getTime()-this._flingStartTime,o=n.x-this._startScrollCoordinate.x,s=o/(r>0?r:1)*20;if(r<200&&Math.abs(s)>0){var l=this._chart.getChartStore().getTimeScaleStore(),c=function(){e._flingScrollRequestId=oe(function(){l.startScroll(),l.scroll(s),s*=.975,Math.abs(s)<1?null!==e._flingScrollRequestId&&(se(e._flingScrollRequestId),e._flingScrollRequestId=null):c()})};c()}}return!0;case Gi.X_AXIS:case Gi.Y_AXIS:var u=i.dispatchEvent("mouseUpEvent",n);u&&this._chart.updatePane(1)}}return!1},t.prototype.tapEvent=function(t){var e=this._findWidgetByEvent(t),i=e.pane,n=e.widget,a=!1;if(null!==n){var r=this._makeWidgetEvent(t,n),o=n.dispatchEvent("mouseClickEvent",r);if(n.getName()===Gi.MAIN){var s=this._makeWidgetEvent(t,n),l=this._chart.getChartStore(),c=l.getTooltipStore();o?(this._touchCancelCrosshair=!0,this._touchCoordinate=null,c.setCrosshair(void 0,{notInvalidate:!0}),a=!0):(this._touchCancelCrosshair||this._touchZoomed||(this._touchCoordinate={x:s.x,y:s.y},c.setCrosshair({x:s.x,y:s.y,paneId:null===i||void 0===i?void 0:i.getId()},{notInvalidate:!0}),a=!0),this._touchCancelCrosshair=!1)}(a||o)&&this._chart.updatePane(1)}return a},t.prototype.doubleTapEvent=function(t){return this.mouseDoubleClickEvent(t)},t.prototype.longTapEvent=function(t){var e=this._findWidgetByEvent(t),i=e.pane,n=e.widget;if(null!==n&&n.getName()===Gi.MAIN){var a=this._makeWidgetEvent(t,n);return this._touchCoordinate={x:a.x,y:a.y},this._chart.getChartStore().getTooltipStore().setCrosshair({x:a.x,y:a.y,paneId:null===i||void 0===i?void 0:i.getId()}),!0}return!1},t.prototype._findWidgetByEvent=function(t){var e,i,n,a,r=t.x,o=t.y,s=this._chart.getAllSeparatorPanes(),l=this._chart.getChartStore().getStyles().separator.size;try{for(var c=G(s),u=c.next();!u.done;u=c.next()){var d=Z(u.value,2),h=d[1],p=h.getBounding(),v=p.top-Math.round((Zi-l)/2);if(r>=p.left&&r<=p.left+p.width&&o>=v&&o<=v+Zi)return{pane:h,widget:h.getWidget()}}}catch(k){e={error:k}}finally{try{u&&!u.done&&(i=c.return)&&i.call(c)}finally{if(e)throw e.error}}var f=this._chart.getAllDrawPanes(),g=null;try{for(var m=G(f),y=m.next();!y.done;y=m.next()){var _=y.value;p=_.getBounding();if(r>=p.left&&r<=p.left+p.width&&o>=p.top&&o<=p.top+p.height){g=_;break}}}catch(I){n={error:I}}finally{try{y&&!y.done&&(a=m.return)&&a.call(m)}finally{if(n)throw n.error}}var b=null;if(null!==g){if(null===b){var x=g.getMainWidget(),w=x.getBounding();r>=w.left&&r<=w.left+w.width&&o>=w.top&&o<=w.top+w.height&&(b=x)}if(null===b){var S=g.getYAxisWidget();if(null!==S){var C=S.getBounding();r>=C.left&&r<=C.left+C.width&&o>=C.top&&o<=C.top+C.height&&(b=S)}}}return{pane:g,widget:b}},t.prototype._makeWidgetEvent=function(t,e){var i,n,a,r=null!==(i=null===e||void 0===e?void 0:e.getBounding())&&void 0!==i?i:null;return K(K({},t),{x:t.x-(null!==(n=null===r||void 0===r?void 0:r.left)&&void 0!==n?n:0),y:t.y-(null!==(a=null===r||void 0===r?void 0:r.top)&&void 0!==a?a:0)})},t.prototype.destroy=function(){this._container.removeEventListener("keydown",this._boundKeyBoardDownEvent),this._event.destroy()},t}();(function(t){t["Root"]="root",t["Main"]="main",t["YAxis"]="yAxis"})(_a||(_a={}));var Sa=function(){function t(t,e){this._drawPanes=[],this._separatorPanes=new Map,this._initContainer(t),this._chartEvent=new wa(this._chartContainer,this),this._chartStore=new Ui(this,e),this._initPanes(e),this.adjustPaneViewport(!0,!0,!0)}return t.prototype._initContainer=function(t){this._container=t,this._chartContainer=he("div",{position:"relative",width:"100%",outline:"none",borderStyle:"none",cursor:"crosshair",boxSizing:"border-box",userSelect:"none",webkitUserSelect:"none",msUserSelect:"none",MozUserSelect:"none",webkitTapHighlightColor:"transparent"}),this._chartContainer.tabIndex=1,t.appendChild(this._chartContainer)},t.prototype._initPanes=function(t){var e,i=this,n=null!==(e=null===t||void 0===t?void 0:t.layout)&&void 0!==e?e:[{type:"candle"}],a=!1,r=!1,o=function(t){if(!r){var e=i._createPane(pa,Wi.X_AXIS,null!==t&&void 0!==t?t:{});i._xAxisPane=e,r=!0}};n.forEach(function(t){var e,n,r;switch(t.type){case"candle":if(!a){var s=null!==(e=t.options)&&void 0!==e?e:{};wt(s,{id:Wi.CANDLE}),i._candlePane=i._createPane(aa,Wi.CANDLE,s);var l=null!==(n=t.content)&&void 0!==n?n:[];l.forEach(function(t){i.createIndicator(t,!0,s)}),a=!0}break;case"indicator":var c;l=null!==(r=t.content)&&void 0!==r?r:[];if(l.length>0)l.forEach(function(e){At(c)?i.createIndicator(e,!0,{id:c}):c=i.createIndicator(e,!0,t.options)});break;case"xAxis":o(t.options);break}}),o({position:"bottom"})},t.prototype._createPane=function(t,e,i){var n,a=null,r=null,o=null===i||void 0===i?void 0:i.position;switch(o){case"top":var s=this._drawPanes[0];At(s)&&(r=new t(this._chartContainer,s.getContainer(),this,e,null!==i&&void 0!==i?i:{}),a=0);break;case"bottom":break;default:for(var l=this._drawPanes.length-1;l>-1;l--){var c=this._drawPanes[l],u=this._drawPanes[l-1];if("bottom"===(null===c||void 0===c?void 0:c.getOptions().position)&&"bottom"!==(null===u||void 0===u?void 0:u.getOptions().position)){r=new t(this._chartContainer,c.getContainer(),this,e,null!==i&&void 0!==i?i:{}),a=l;break}}}if(At(r)||(r=new t(this._chartContainer,null,this,e,null!==i&&void 0!==i?i:{})),Et(a)?(this._drawPanes.splice(a,0,r),n=a):(this._drawPanes.push(r),n=this._drawPanes.length-1),r.getId()!==Wi.X_AXIS){var d=this._drawPanes[n+1];if(At(d)&&d.getId()===Wi.X_AXIS&&(d=this._drawPanes[n+2]),At(d)){var h=this._separatorPanes.get(d);At(h)?h.setTopPane(r):(h=new ga(this._chartContainer,d.getContainer(),this,"",r,d),this._separatorPanes.set(d,h))}var p=this._drawPanes[n-1];if(At(p)&&p.getId()===Wi.X_AXIS&&(p=this._drawPanes[n-2]),At(p)){h=new ga(this._chartContainer,r.getContainer(),this,"",p,r);this._separatorPanes.set(r,h)}}return r},t.prototype._measurePaneHeight=function(){var t,e=this,i=Math.floor(this._container.clientHeight),n=this._chartStore.getStyles().separator.size,a=this._xAxisPane.getAxisComponent().getAutoSize(),r=i-a-this._separatorPanes.size*n;r<0&&(r=0);var o=0;this._drawPanes.forEach(function(t){if(t.getId()!==Wi.CANDLE&&t.getId()!==Wi.X_AXIS){var e=t.getBounding().height,i=t.getOptions().minHeight;er?(o=r,e=Math.max(r-o,0)):o+=e,t.setBounding({height:e})}});var s=r-o;null===(t=this._candlePane)||void 0===t||t.setBounding({height:s}),this._xAxisPane.setBounding({height:a});var l=0;this._drawPanes.forEach(function(t){var i=e._separatorPanes.get(t);At(i)&&(i.setBounding({height:n,top:l}),l+=n),t.setBounding({top:l}),l+=t.getBounding().height})},t.prototype._measurePaneWidth=function(){var t=this,e=Math.floor(this._container.clientWidth),i=this._chartStore.getStyles(),n=i.yAxis,a=n.position===Y.Left,r=!n.inside,o=0,s=0,l=0,c=0;this._drawPanes.forEach(function(t){t.getId()!==Wi.X_AXIS&&(s=Math.max(s,t.getAxisComponent().getAutoSize()))}),s>e&&(s=e),r?(o=e-s,a?(l=0,c=s):(l=e-s,c=0)):(o=e,c=0,l=a?0:e-s),this._chartStore.getTimeScaleStore().setTotalBarSpace(o);var u,d={width:e},h={width:o,left:c},p={width:s,left:l},v=i.separator.fill;u=r&&!v?h:d,this._drawPanes.forEach(function(e){var i;null===(i=t._separatorPanes.get(e))||void 0===i||i.setBounding(u),e.setBounding(d,h,p)})},t.prototype._setPaneOptions=function(t,e){var i,n;if(Mt(t.id)){var a=this.getDrawPaneById(t.id),r=!1;if(null!==a){var o=e;if(t.id!==Wi.CANDLE&&Et(t.height)&&t.height>0){var s=Math.max(null!==(i=t.minHeight)&&void 0!==i?i:a.getOptions().minHeight,0),l=Math.max(s,t.height);a.setBounding({height:l}),o=!0,r=!0}(Mt(null===(n=t.axisOptions)||void 0===n?void 0:n.name)||At(t.gap))&&(o=!0),a.setOptions(t),o&&this.adjustPaneViewport(r,!0,!0,!0,!0)}}},t.prototype.getDrawPaneById=function(t){if(t===Wi.CANDLE)return this._candlePane;if(t===Wi.X_AXIS)return this._xAxisPane;var e=this._drawPanes.find(function(e){return e.getId()===t});return null!==e&&void 0!==e?e:null},t.prototype.getContainer=function(){return this._container},t.prototype.getChartStore=function(){return this._chartStore},t.prototype.getXAxisPane=function(){return this._xAxisPane},t.prototype.getAllDrawPanes=function(){return this._drawPanes},t.prototype.getAllSeparatorPanes=function(){return this._separatorPanes},t.prototype.adjustPaneViewport=function(t,e,i,n,a){t&&this._measurePaneHeight();var r=e,o=null!==n&&void 0!==n&&n,s=null!==a&&void 0!==a&&a;(o||s)&&this._drawPanes.forEach(function(t){var e=t.getAxisComponent().buildTicks(s);r||(r=e)}),r&&this._measurePaneWidth(),null!==i&&void 0!==i&&i&&(this._xAxisPane.getAxisComponent().buildTicks(!0),this.updatePane(4))},t.prototype.updatePane=function(t,e){if(At(e)){var i=this.getDrawPaneById(e);null===i||void 0===i||i.update(t)}else this._separatorPanes.forEach(function(e){e.update(t)}),this._drawPanes.forEach(function(e){e.update(t)})},t.prototype.crosshairChange=function(t){var e=this,i=this._chartStore.getActionStore();if(i.has(Tt.OnCrosshairChange)){var n={};this._drawPanes.forEach(function(i){var a=i.getId(),r={},o=e._chartStore.getIndicatorStore().getInstances(a);o.forEach(function(e){var i,n=e.result;r[e.name]=n[null!==(i=t.dataIndex)&&void 0!==i?i:n.length-1]}),n[a]=r}),Mt(t.paneId)&&i.execute(Tt.OnCrosshairChange,K(K({},t),{indicatorData:n}))}},t.prototype.getDom=function(t,e){var i,n;if(!Mt(t))return this._chartContainer;var a=this.getDrawPaneById(t);if(null!==a){var r=null!==e&&void 0!==e?e:_a.Root;switch(r){case _a.Root:return a.getContainer();case _a.Main:return a.getMainWidget().getContainer();case _a.YAxis:return null!==(n=null===(i=a.getYAxisWidget())||void 0===i?void 0:i.getContainer())&&void 0!==n?n:null}}return null},t.prototype.getSize=function(t,e){var i,n;if(!At(t))return{width:Math.floor(this._chartContainer.clientWidth),height:Math.floor(this._chartContainer.clientHeight),left:0,top:0,right:0,bottom:0};var a=this.getDrawPaneById(t);if(null!==a){var r=null!==e&&void 0!==e?e:_a.Root;switch(r){case _a.Root:return a.getBounding();case _a.Main:return a.getMainWidget().getBounding();case _a.YAxis:return null!==(n=null===(i=a.getYAxisWidget())||void 0===i?void 0:i.getBounding())&&void 0!==n?n:null}}return null},t.prototype.setStyles=function(t){var e,i,n;this._chartStore.setOptions({styles:t}),n=Mt(t)?ji(t):t,At(null===(e=null===n||void 0===n?void 0:n.yAxis)||void 0===e?void 0:e.type)&&(null===(i=this._candlePane)||void 0===i||i.getAxisComponent().setAutoCalcTickFlag(!0)),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.getStyles=function(){return this._chartStore.getStyles()},t.prototype.setLocale=function(t){this._chartStore.setOptions({locale:t}),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.getLocale=function(){return this._chartStore.getLocale()},t.prototype.setCustomApi=function(t){this._chartStore.setOptions({customApi:t}),this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.setPriceVolumePrecision=function(t,e){this._chartStore.setPrecision({price:t,volume:e})},t.prototype.getPriceVolumePrecision=function(){return this._chartStore.getPrecision()},t.prototype.setTimezone=function(t){this._chartStore.setOptions({timezone:t}),this._xAxisPane.getAxisComponent().buildTicks(!0),this._xAxisPane.update(3)},t.prototype.getTimezone=function(){return this._chartStore.getTimeScaleStore().getTimezone()},t.prototype.setOffsetRightDistance=function(t){this._chartStore.getTimeScaleStore().setOffsetRightDistance(t,!0)},t.prototype.getOffsetRightDistance=function(){return this._chartStore.getTimeScaleStore().getOffsetRightDistance()},t.prototype.setMaxOffsetLeftDistance=function(t){t<0?_t("setMaxOffsetLeftDistance","distance","distance must greater than zero!!!"):this._chartStore.getTimeScaleStore().setMaxOffsetLeftDistance(t)},t.prototype.setMaxOffsetRightDistance=function(t){t<0?_t("setMaxOffsetRightDistance","distance","distance must greater than zero!!!"):this._chartStore.getTimeScaleStore().setMaxOffsetRightDistance(t)},t.prototype.setLeftMinVisibleBarCount=function(t){t<0?_t("setLeftMinVisibleBarCount","barCount","barCount must greater than zero!!!"):this._chartStore.getTimeScaleStore().setLeftMinVisibleBarCount(Math.ceil(t))},t.prototype.setRightMinVisibleBarCount=function(t){t<0?_t("setRightMinVisibleBarCount","barCount","barCount must greater than zero!!!"):this._chartStore.getTimeScaleStore().setRightMinVisibleBarCount(Math.ceil(t))},t.prototype.setBarSpace=function(t){this._chartStore.getTimeScaleStore().setBarSpace(t)},t.prototype.getBarSpace=function(){return this._chartStore.getTimeScaleStore().getBarSpace().bar},t.prototype.getVisibleRange=function(){return this._chartStore.getTimeScaleStore().getVisibleRange()},t.prototype.clearData=function(){this._chartStore.clear()},t.prototype.getDataList=function(){return this._chartStore.getDataList()},t.prototype.applyNewData=function(t,e,i){At(i)&&_t("applyNewData","","param `callback` has been deprecated since version 9.8.0, use `subscribeAction('onDataReady')` instead."),this._chartStore.addData(t,Yt.Init,e).then(function(){}).catch(function(){}).finally(function(){null===i||void 0===i||i()})},t.prototype.applyMoreData=function(t,e,i){_t("","","Api `applyMoreData` has been deprecated since version 9.8.0."),this._chartStore.addData(t,Yt.Forward,null===e||void 0===e||e).then(function(){}).catch(function(){}).finally(function(){null===i||void 0===i||i()})},t.prototype.updateData=function(t,e){At(e)&&_t("updateData","","param `callback` has been deprecated since version 9.8.0, use `subscribeAction('onDataReady')` instead."),this._chartStore.addData(t).then(function(){}).catch(function(){}).finally(function(){null===e||void 0===e||e()})},t.prototype.loadMore=function(t){_t("","","Api `loadMore` has been deprecated since version 9.8.0, use `setLoadDataCallback` instead."),this._chartStore.setLoadMoreCallback(t)},t.prototype.setLoadDataCallback=function(t){this._chartStore.setLoadDataCallback(t)},t.prototype.createIndicator=function(t,e,i,n){var a,r=this,o=Mt(t)?{name:t}:t;if(null===ri(o.name))return _t("createIndicator","value","indicator not supported, you may need to use registerIndicator to add one!!!"),null;var s=null===i||void 0===i?void 0:i.id,l=this.getDrawPaneById(null!==s&&void 0!==s?s:"");if(null!==l)this._chartStore.getIndicatorStore().addInstance(o,null!==s&&void 0!==s?s:"",null!==e&&void 0!==e&&e).then(function(t){var e;r._setPaneOptions(null!==i&&void 0!==i?i:{},null!==(e=l.getAxisComponent().buildTicks(!0))&&void 0!==e&&e)}).catch(function(t){});else{null!==s&&void 0!==s||(s=de(Wi.INDICATOR));var c=this._createPane(na,s,null!==i&&void 0!==i?i:{}),u=null!==(a=null===i||void 0===i?void 0:i.height)&&void 0!==a?a:Vi;c.setBounding({height:u}),this._chartStore.getIndicatorStore().addInstance(o,s,null!==e&&void 0!==e&&e).finally(function(){r.adjustPaneViewport(!0,!0,!0,!0,!0),null===n||void 0===n||n()})}return null!==s&&void 0!==s?s:null},t.prototype.overrideIndicator=function(t,e,i){var n=this;this._chartStore.getIndicatorStore().override(t,null!==e&&void 0!==e?e:null).then(function(t){var e=Z(t,2),a=e[0],r=e[1];(a||r)&&(n.adjustPaneViewport(!1,r,!0,r),null===i||void 0===i||i())}).catch(function(){})},t.prototype.getIndicatorByPaneId=function(t,e){return this._chartStore.getIndicatorStore().getInstanceByPaneId(t,e)},t.prototype.removeIndicator=function(t,e){var i,n,a,r=this._chartStore.getIndicatorStore(),o=r.removeInstance(t,e);if(o){var s=!1;if(t!==Wi.CANDLE&&!r.hasInstances(t)){var l=this.getDrawPaneById(t),c=this._drawPanes.findIndex(function(e){return e.getId()===t});if(null!==l){s=!0;var u=this._separatorPanes.get(l);if(At(u)){var d=null===u||void 0===u?void 0:u.getTopPane();try{for(var h=G(this._separatorPanes),p=h.next();!p.done;p=h.next()){var v=p.value;if(v[1].getTopPane().getId()===l.getId()){v[1].setTopPane(d);break}}}catch(g){i={error:g}}finally{try{p&&!p.done&&(n=h.return)&&n.call(h)}finally{if(i)throw i.error}}u.destroy(),this._separatorPanes.delete(l)}this._drawPanes.splice(c,1),l.destroy();var f=this._drawPanes[0];At(f)&&f.getId()===Wi.X_AXIS&&(f=this._drawPanes[1]),null===(a=this._separatorPanes.get(f))||void 0===a||a.destroy(),this._separatorPanes.delete(f)}}this.adjustPaneViewport(s,!0,!0,!0,!0)}},t.prototype.createOverlay=function(t,e){var i=[];if(Mt(t))i=[{name:t}];else if(Ct(t))i=t.map(function(t){return Mt(t)?{name:t}:t});else{var n=t;i=[n]}var a=!0;At(e)&&null!==this.getDrawPaneById(e)||(e=Wi.CANDLE,a=!1);var r=this._chartStore.getOverlayStore().addInstances(i,e,a);return Ct(t)?r:r[0]},t.prototype.getOverlayById=function(t){return this._chartStore.getOverlayStore().getInstanceById(t)},t.prototype.overrideOverlay=function(t){this._chartStore.getOverlayStore().override(t)},t.prototype.removeOverlay=function(t){var e;At(t)&&(e=Mt(t)?{id:t}:t),this._chartStore.getOverlayStore().removeInstance(e)},t.prototype.setPaneOptions=function(t){this._setPaneOptions(t,!1)},t.prototype.setZoomEnabled=function(t){this._chartStore.getTimeScaleStore().setZoomEnabled(t)},t.prototype.isZoomEnabled=function(){return this._chartStore.getTimeScaleStore().getZoomEnabled()},t.prototype.setScrollEnabled=function(t){this._chartStore.getTimeScaleStore().setScrollEnabled(t)},t.prototype.isScrollEnabled=function(){return this._chartStore.getTimeScaleStore().getScrollEnabled()},t.prototype.scrollByDistance=function(t,e){var i=Et(e)&&e>0?e:0,n=this._chartStore.getTimeScaleStore();if(n.startScroll(),i>0){var a=new le({duration:i});a.doFrame(function(e){var a=t*(e/i);n.scroll(a)}),a.start()}else n.scroll(t)},t.prototype.scrollToRealTime=function(t){var e=this._chartStore.getTimeScaleStore(),i=e.getBarSpace().bar,n=e.getLastBarRightSideDiffBarCount()-e.getInitialOffsetRightDistance()/i,a=n*i;this.scrollByDistance(a,t)},t.prototype.scrollToDataIndex=function(t,e){var i=this._chartStore.getTimeScaleStore(),n=(i.getLastBarRightSideDiffBarCount()+(this.getDataList().length-1-t))*i.getBarSpace().bar;this.scrollByDistance(n,e)},t.prototype.scrollToTimestamp=function(t,e){var i=pe(this.getDataList(),"timestamp",t);this.scrollToDataIndex(i,e)},t.prototype.zoomAtCoordinate=function(t,e,i){var n=Et(i)&&i>0?i:0,a=this._chartStore.getTimeScaleStore(),r=a.getBarSpace().bar,o=r*t,s=o-r;if(n>0){var l=0,c=new le({duration:n});c.doFrame(function(t){var i=s*(t/n),r=(i-l)/a.getBarSpace().bar*ke;a.zoom(r,e),l=i}),c.start()}else a.zoom(s/r*ke,e)},t.prototype.zoomAtDataIndex=function(t,e,i){var n=this._chartStore.getTimeScaleStore().dataIndexToCoordinate(e);this.zoomAtCoordinate(t,{x:n,y:0},i)},t.prototype.zoomAtTimestamp=function(t,e,i){var n=pe(this.getDataList(),"timestamp",e);this.zoomAtDataIndex(t,n,i)},t.prototype.convertToPixel=function(t,e){var i,n=e.paneId,a=void 0===n?Wi.CANDLE:n,r=e.absolute,o=void 0!==r&&r,s=[];if(a!==Wi.X_AXIS){var l=this.getDrawPaneById(a);if(null!==l){var c=this._chartStore.getTimeScaleStore(),u=l.getBounding(),d=(new Array).concat(t),h=this._xAxisPane.getAxisComponent(),p=l.getAxisComponent();s=d.map(function(t){var e={},i=t.dataIndex;if(Et(t.timestamp)&&(i=c.timestampToDataIndex(t.timestamp)),Et(i)&&(e.x=null===h||void 0===h?void 0:h.convertToPixel(i)),Et(t.value)){var n=null===p||void 0===p?void 0:p.convertToPixel(t.value);e.y=o?u.top+n:n}return e})}}return Ct(t)?s:null!==(i=s[0])&&void 0!==i?i:{}},t.prototype.convertFromPixel=function(t,e){var i,n=e.paneId,a=void 0===n?Wi.CANDLE:n,r=e.absolute,o=void 0!==r&&r,s=[];if(a!==Wi.X_AXIS){var l=this.getDrawPaneById(a);if(null!==l){var c=this._chartStore.getTimeScaleStore(),u=l.getBounding(),d=(new Array).concat(t),h=this._xAxisPane.getAxisComponent(),p=l.getAxisComponent();s=d.map(function(t){var e,i,n={};if(Et(t.x)){var a=null!==(e=null===h||void 0===h?void 0:h.convertFromPixel(t.x))&&void 0!==e?e:-1;n.dataIndex=a,n.timestamp=null!==(i=c.dataIndexToTimestamp(a))&&void 0!==i?i:void 0}if(Et(t.y)){var r=o?t.y-u.top:t.y;n.value=p.convertFromPixel(r)}return n})}}return Ct(t)?s:null!==(i=s[0])&&void 0!==i?i:{}},t.prototype.executeAction=function(t,e){var i;switch(t){case Tt.OnCrosshairChange:var n=K({},e);n.paneId=null!==(i=n.paneId)&&void 0!==i?i:Wi.CANDLE,this._chartStore.getTooltipStore().setCrosshair(n,{notExecuteAction:!0});break}},t.prototype.subscribeAction=function(t,e){this._chartStore.getActionStore().subscribe(t,e)},t.prototype.unsubscribeAction=function(t,e){this._chartStore.getActionStore().unsubscribe(t,e)},t.prototype.getConvertPictureUrl=function(t,e,i){var n=this,a=this._chartContainer.clientWidth,r=this._chartContainer.clientHeight,o=he("canvas",{width:"".concat(a,"px"),height:"".concat(r,"px"),boxSizing:"border-box"}),s=o.getContext("2d"),l=Wt(o);o.width=a*l,o.height=r*l,s.scale(l,l),s.fillStyle=null!==i&&void 0!==i?i:"#FFFFFF",s.fillRect(0,0,a,r);var c=null!==t&&void 0!==t&&t;return this._drawPanes.forEach(function(t){var e=n._separatorPanes.get(t);if(At(e)){var i=e.getBounding();s.drawImage(e.getImage(c),i.left,i.top,i.width,i.height)}var r=t.getBounding();s.drawImage(t.getImage(c),0,r.top,a,r.height)}),o.toDataURL("image/".concat(null!==e&&void 0!==e?e:"jpeg"))},t.prototype.resize=function(){this.adjustPaneViewport(!0,!0,!0,!0,!0)},t.prototype.destroy=function(){this._chartEvent.destroy(),this._drawPanes.forEach(function(t){t.destroy()}),this._drawPanes=[],this._separatorPanes.forEach(function(t){t.destroy()}),this._separatorPanes.clear(),this._container.removeChild(this._chartContainer)},t}(),Ca=new Map,ka=1;function Ia(t,e){var i;if(xt(),i=Mt(t)?document.getElementById(t):t,null===i)return bt("","","The chart cannot be initialized correctly. Please check the parameters. The chart container cannot be null and child elements need to be added!!!"),null;var n=Ca.get(i.id);if(At(n))return _t("","","The chart has been initialized on the dom!!!"),n;var a="k_line_chart_".concat(ka++);return n=new Sa(i,e),n.id=a,i.setAttribute("k-line-chart-id",a),Ca.set(a,n),n}var Ea=i(21396),Aa=i.n(Ea);function Pa(t,e,i,n){if(!t||!e||!i||!n)return t;try{var a=Aa().enc.Base64.parse(t),r=Aa().lib.WordArray.create(a.words.slice(0,4)),o=Aa().lib.WordArray.create(a.words.slice(4)),s=Aa().enc.Base64.parse(n),l=Aa().AES.decrypt({ciphertext:o},s,{iv:r,mode:Aa().mode.CBC,padding:Aa().pad.Pkcs7}),c=l.toString(Aa().enc.Utf8);return c||t}catch(u){return t}}function Ma(t,e){return Da.apply(this,arguments)}function Da(){return Da=(0,c.A)((0,l.A)().m(function t(e,i){var n,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e&&i){t.n=1;break}throw new Error("用户ID和指标ID不能为空");case 1:return t.p=1,t.n=2,(0,v.Ay)({url:"/api/indicator/getDecryptKey",method:"post",data:{userid:e,indicatorId:i}});case 2:if(n=t.v,1!==n.code||!n.data||!n.data.key){t.n=3;break}return t.a(2,n.data.key);case 3:throw new Error(n.msg||"获取解密密钥失败");case 4:t.n=6;break;case 5:throw t.p=5,a=t.v,new Error("无法获取解密密钥,请检查网络连接或联系管理员: "+(a.message||"未知错误"));case 6:return t.a(2)}},t,null,[[1,5]])})),Da.apply(this,arguments)}function Ta(t,e,i){return Ba.apply(this,arguments)}function Ba(){return Ba=(0,c.A)((0,l.A)().m(function t(e,i,n){var a;return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,Ma(i,n);case 1:return a=t.v,t.a(2,Pa(e,i,n,a))}},t)})),Ba.apply(this,arguments)}function Fa(t,e){if(1===e||!0===e)return!0;if(t&&t.length>100)try{var i=atob(t);if(i.length>50)return!0}catch(n){}return!1}var Ra={name:"KlineChart",props:{symbol:{type:String,default:""},market:{type:String,default:""},timeframe:{type:String,default:"1H"},theme:{type:String,default:"light"},activeIndicators:{type:Array,default:function(){return[]}},realtimeEnabled:{type:Boolean,default:!1},userId:{type:Number,default:null}},emits:["retry","price-change","load","indicator-toggle"],setup:function(t,e){var i=e.emit,n=(0,h.IJ)([]),a=(0,h.KR)(!1),r=(0,h.KR)(null),s=(0,h.KR)(!1),u=(0,h.KR)(!0),p=null,f=(0,h.KR)(!1),g=(0,h.IJ)(null),m=(0,h.KR)(t.theme||"light"),y=(0,h.KR)(null),b=(0,h.KR)(5e3),x=(0,h.KR)(!1),w=(0,h.KR)(1e4),S=(0,h.KR)(0),C=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(g.value){var e=Date.now(),i=Number(w.value||1e4);(t||!S.value||e-S.value>=i)&&(S.value=e,xt())}},k=(0,h.KR)([]),I=(0,h.KR)([]),E=(0,h.KR)([]),A=(0,h.KR)(null),P=(0,h.nI)(),M=P.proxy,D=(0,h.EW)(function(){return[{name:"line",title:M.$t("dashboard.indicator.drawing.line"),icon:"line"},{name:"horizontalLine",title:M.$t("dashboard.indicator.drawing.horizontalLine"),icon:"minus"},{name:"verticalLine",title:M.$t("dashboard.indicator.drawing.verticalLine"),icon:"column-width"},{name:"ray",title:M.$t("dashboard.indicator.drawing.ray"),icon:"arrow-right"},{name:"straightLine",title:M.$t("dashboard.indicator.drawing.straightLine"),icon:"menu"},{name:"parallelStraightLine",title:M.$t("dashboard.indicator.drawing.parallelLine"),icon:"menu"},{name:"priceLine",title:M.$t("dashboard.indicator.drawing.priceLine"),icon:"dollar"},{name:"priceChannelLine",title:M.$t("dashboard.indicator.drawing.priceChannel"),icon:"border"},{name:"fibonacciLine",title:M.$t("dashboard.indicator.drawing.fibonacciLine"),icon:"rise"},{name:"measure",title:M.$t("dashboard.indicator.drawing.measure"),icon:"drag"}]}),R=(0,h.KR)([{id:"sma",name:"SMA (简单移动平均)",shortName:"SMA",type:"line",defaultParams:{length:20}},{id:"ema",name:"EMA (指数移动平均)",shortName:"EMA",type:"line",defaultParams:{length:20}},{id:"rsi",name:"RSI (相对强弱)",shortName:"RSI",type:"line",defaultParams:{length:14}},{id:"macd",name:"MACD",shortName:"MACD",type:"macd",defaultParams:{fast:12,slow:26,signal:9}},{id:"bb",name:"布林带 (Bollinger Bands)",shortName:"BB",type:"band",defaultParams:{length:20,mult:2}},{id:"atr",name:"ATR (平均真实波幅)",shortName:"ATR",type:"line",defaultParams:{period:14}},{id:"cci",name:"CCI (商品通道指数)",shortName:"CCI",type:"line",defaultParams:{length:20}},{id:"williams",name:"Williams %R (威廉指标)",shortName:"W%R",type:"line",defaultParams:{length:14}},{id:"mfi",name:"MFI (资金流量指标)",shortName:"MFI",type:"line",defaultParams:{length:14}},{id:"adx",name:"ADX (平均趋向指数)",shortName:"ADX",type:"adx",defaultParams:{length:14}},{id:"obv",name:"OBV (能量潮)",shortName:"OBV",type:"line",defaultParams:{}},{id:"adosc",name:"ADOSC (积累/派发振荡器)",shortName:"ADOSC",type:"line",defaultParams:{fast:3,slow:10}},{id:"ad",name:"AD (积累/派发线)",shortName:"AD",type:"line",defaultParams:{}},{id:"kdj",name:"KDJ (随机指标)",shortName:"KDJ",type:"line",defaultParams:{period:9,k:3,d:3}}]),L=function(e){return t.activeIndicators.some(function(t){return t.id===e})},N=function(t){if(g.value){var e={line:"segment",horizontalLine:"horizontalStraightLine",verticalLine:"verticalStraightLine",ray:"rayLine",straightLine:"straightLine",parallelStraightLine:"parallelStraightLine",priceLine:"priceLine",priceChannelLine:"priceChannelLine",fibonacciLine:"fibonacciLine",measure:"priceRangeMeasure"},i=e[t]||t;if(A.value!==t){A.value=t;try{var n=["priceRangeMeasure"];if(n.includes(i)){if("function"!==typeof g.value.overrideOverlay)return void(A.value=null);g.value.overrideOverlay({name:i,lock:!1})}else{var a={name:i,lock:!1,extendData:{isDrawing:!0}},r=g.value.createOverlay(a);r?E.value.push(r):A.value=null}}catch(o){A.value=null}}else{A.value=null;try{"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(s){}}}},O=function(){if(g.value)try{E.value.forEach(function(t){try{"function"===typeof g.value.removeOverlay?g.value.removeOverlay(t):"function"===typeof g.value.removeOverlayById&&g.value.removeOverlayById(t)}catch(e){}}),E.value=[],A.value=null,"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(t){}},z=function(t){var e=L(t.id);if(e)i("indicator-toggle",{action:"remove",indicator:{id:t.id}});else{var n=(0,d.A)((0,d.A)({},t),{},{params:(0,d.A)({},t.defaultParams),calculate:null});i("indicator-toggle",{action:"add",indicator:n})}},V=(0,h.KR)(null),W=(0,h.KR)(!1),H=(0,h.KR)(!1),$=(0,h.KR)(!1),Y=(0,h.EW)(function(){return"dark"===m.value?{backgroundColor:"#141414",textColor:"#d1d4dc",textColorSecondary:"#787b86",borderColor:"#2a2a2a",gridLineColor:"#252525",gridLineColorDashed:"#363c4e",tooltipBg:"rgba(25, 27, 32, 0.95)",tooltipBorder:"#333",tooltipText:"#ccc",tooltipTextSecondary:"#888",axisLabelColor:"#787b86",splitAreaColor:["rgba(250,250,250,0.05)","rgba(200,200,200,0.02)"],dataZoomBorder:"#2a2a2a",dataZoomFiller:"rgba(41, 98, 255, 0.15)",dataZoomHandle:"#13c2c2",dataZoomText:"transparent",dataZoomBg:"#252525"}:{backgroundColor:"#fff",textColor:"#333",textColorSecondary:"#666",borderColor:"#e8e8e8",gridLineColor:"#e8e8e8",gridLineColorDashed:"#e8e8e8",tooltipBg:"rgba(255, 255, 255, 0.95)",tooltipBorder:"#e8e8e8",tooltipText:"#333",tooltipTextSecondary:"#666",axisLabelColor:"#666",splitAreaColor:["rgba(250,250,250,0.05)","rgba(200,200,200,0.02)"],dataZoomBorder:"#e8e8e8",dataZoomFiller:"rgba(24, 144, 255, 0.15)",dataZoomHandle:"#1890ff",dataZoomText:"#999",dataZoomBg:"#f0f2f5"}}),X=function(t){return"dark"===m.value?["#13c2c2","#e040fb","#ffeb3b","#00e676","#ff6d00","#9c27b0"][t%6]:["#13c2c2","#9c27b0","#f57c00","#1976d2","#c2185b","#7b1fa2"][t%6]},K=function(){return new Promise(function(t,e){if(window.pyodide)return V.value=window.pyodide,H.value=!0,void t(window.pyodide);W.value=!0;var i="0.25.0",n=function(t){return t&&t.endsWith("/")?t:t?t+"/":t},a="/assets/pyodide/v".concat(i,"/full/"),r="https://cdn.jsdelivr.net/pyodide/v".concat(i,"/full/"),o=n({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_LOCAL_BASE||a),s=n({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_CDN_BASE||r),u=({NODE_ENV:"production",VUE_APP_API_BASE_URL:"/api",VUE_APP_PREVIEW:"false",BASE_URL:"/"}.VUE_APP_PYODIDE_PREFER_CDN||"").toString().toLowerCase(),d=!u||("true"===u||"1"===u||"yes"===u),h=function(t){return new Promise(function(e,i){var n=document.querySelector('script[data-pyodide-src="'.concat(t,'"]'));if(n)return"function"===typeof window.loadPyodide?e():(n.addEventListener("load",function(){return e()},{once:!0}),void n.addEventListener("error",function(){return i(new Error("Pyodide 脚本加载失败"))},{once:!0}));var a=document.createElement("script");a.dataset.pyodideSrc=t,a.src=t,a.onload=function(){return e()},a.onerror=function(){return i(new Error("Pyodide 脚本加载失败"))},document.head.appendChild(a)})},p=function(){var e=(0,c.A)((0,l.A)().m(function e(i){return(0,l.A)().w(function(e){while(1)switch(e.n){case 0:if("function"===typeof window.loadPyodide){e.n=1;break}throw new Error("loadPyodide 函数未找到");case 1:return e.n=2,window.loadPyodide({indexURL:i});case 2:return window.pyodide=e.v,e.n=3,window.pyodide.loadPackage(["pandas","numpy"]);case 3:V.value=window.pyodide,H.value=!0,W.value=!1,t(window.pyodide);case 4:return e.a(2)}},e)}));return function(t){return e.apply(this,arguments)}}();(0,c.A)((0,l.A)().m(function t(){var e,i,n;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e=function(){var t=(0,c.A)((0,l.A)().m(function t(e){return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,h(e+"pyodide.js");case 1:return t.n=2,p(e);case 2:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}(),t.p=1,!d){t.n=3;break}return t.n=2,e(s);case 2:t.n=4;break;case 3:return t.n=4,e(o);case 4:t.n=9;break;case 5:return t.p=5,i=t.v,t.p=6,t.n=7,e(d?o:s);case 7:t.n=9;break;case 8:throw t.p=8,n=t.v,n||i;case 9:return t.a(2)}},t,null,[[6,8],[1,5]])}))().catch(function(t){W.value=!1,$.value=!0,e(t)})})},j=function(t){if(!t||"string"!==typeof t)return null;try{var e={},i=t.match(/(\w+)\s*=\s*(\d+\.?\d*)/g);return i&&i.forEach(function(t){var i=t.split("=");if(2===i.length){var n=i[0].trim(),a=parseFloat(i[1].trim());isNaN(a)||(e[n]=a)}}),{params:e,plots:[],success:!0}}catch(n){return{params:{},plots:[],success:!1}}},U=function(){var e=(0,c.A)((0,l.A)().m(function e(i,n){var a,r,s,c,u,d,h,p,v,f,g,m,y,_,b,x,w,S,C=arguments;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a=C.length>2&&void 0!==C[2]?C[2]:{},r=C.length>3&&void 0!==C[3]?C[3]:{},H.value&&V.value){e.n=5;break}if(!W.value){e.n=4;break}s=0;case 1:if(!(W.value&&s<30)){e.n=4;break}return e.n=2,new Promise(function(t){return setTimeout(t,500)});case 2:if(s++,!H.value||!V.value){e.n=3;break}return e.a(3,4);case 3:e.n=1;break;case 4:if(H.value&&V.value){e.n=5;break}throw W.value?(W.value=!1,$.value=!0):$.value=!0,new Error("Python 引擎未就绪,请等待加载完成");case 5:if(e.p=5,c=i,u=r.is_encrypted||r.isEncrypted||0,!u&&!Fa(i,u)){e.n=11;break}if(d=r.user_id||r.userId||t.userId||a.userId,h=r.originalId||r.id||a.indicatorId,!d||!h){e.n=10;break}return e.p=6,e.n=7,Ta(c,d,h);case 7:c=e.v,e.n=9;break;case 8:throw e.p=8,x=e.v,new Error("代码解密失败,无法执行指标: "+(x.message||"未知错误"));case 9:e.n=11;break;case 10:throw new Error("缺少必要的解密参数(用户ID或指标ID),无法执行加密指标");case 11:return p=n.map(function(t){var e=t.timestamp||t.time;return e<1e10&&(e*=1e3),{time:Math.floor(e/1e3),open:parseFloat(t.open)||0,high:parseFloat(t.high)||0,low:parseFloat(t.low)||0,close:parseFloat(t.close)||0,volume:parseFloat(t.volume)||0}}),v=JSON.stringify(p),f=JSON.stringify(a||{}),g=v.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),m=f.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),y="\nimport json\nimport pandas as pd\nimport numpy as np\n\n# 递归清理 NaN 值的函数\ndef clean_nan(obj):\n if isinstance(obj, dict):\n return {k: clean_nan(v) for k, v in obj.items()}\n elif isinstance(obj, list):\n return [clean_nan(item) for item in obj]\n elif isinstance(obj, (pd.Series, np.ndarray)):\n return [None if (isinstance(x, float) and (np.isnan(x) or np.isinf(x))) else x for x in obj]\n elif isinstance(obj, (float, np.floating)):\n if np.isnan(obj) or np.isinf(obj):\n return None\n return float(obj)\n elif pd.isna(obj):\n return None\n else:\n return obj\n\n# 接收 JSON 数据\nraw_data = json.loads('".concat(g,"')\nparams = json.loads('").concat(m,"')\n\n# 将前端参数注入为指标代码可直接使用的变量(对齐回测/实盘执行环境)\n# 兼容多种命名(snake_case / camelCase)\ndef _get_param(key, default=None):\n if key in params:\n return params.get(key, default)\n # camelCase fallback\n camel = ''.join([key.split('_')[0]] + [p.capitalize() for p in key.split('_')[1:]])\n return params.get(camel, default)\n\ntry:\n leverage = float(_get_param('leverage', 1) or 1)\nexcept Exception:\n leverage = 1\n\ntrade_direction = _get_param('trade_direction', _get_param('tradeDirection', 'both')) or 'both'\n\ntry:\n initial_position = int(_get_param('initial_position', 0) or 0)\nexcept Exception:\n initial_position = 0\n\ntry:\n initial_avg_entry_price = float(_get_param('initial_avg_entry_price', 0.0) or 0.0)\nexcept Exception:\n initial_avg_entry_price = 0.0\n\ntry:\n initial_position_count = int(_get_param('initial_position_count', 0) or 0)\nexcept Exception:\n initial_position_count = 0\n\ntry:\n initial_last_add_price = float(_get_param('initial_last_add_price', 0.0) or 0.0)\nexcept Exception:\n initial_last_add_price = 0.0\n\ntry:\n initial_highest_price = float(_get_param('initial_highest_price', 0.0) or 0.0)\nexcept Exception:\n initial_highest_price = 0.0\n\n# 转换为 DataFrame\ndf = pd.DataFrame(raw_data)\n\n# 转换数据类型\ndf['open'] = df['open'].astype(float)\ndf['high'] = df['high'].astype(float)\ndf['low'] = df['low'].astype(float)\ndf['close'] = df['close'].astype(float)\ndf['volume'] = df['volume'].astype(float)\n\n# 用户代码(已解密)\n").concat(c,"\n\n# 构造输出(如果用户没有定义 output,则尝试从 result_json 获取)\nif 'output' not in locals():\n if 'result_json' in locals():\n output = json.loads(result_json)\n else:\n output = {\"plots\": []}\nelse:\n # 确保 output 是字典格式\n if isinstance(output, str):\n output = json.loads(output)\n\n# 清理 output 中的所有 NaN 值\noutput = clean_nan(output)\n\n# 返回 JSON 字符串\njson.dumps(output)\n"),e.n=12,V.value.runPythonAsync(y);case 12:if(_=e.v,_&&"string"===typeof _){e.n=13;break}throw new Error("Python 代码执行后未返回有效的 JSON 字符串,返回类型: ".concat((0,o.A)(_)));case 13:e.p=13,b=JSON.parse(_),e.n=15;break;case 14:throw e.p=14,w=e.v,new Error("JSON 解析失败: ".concat(w.message,"。可能是数据中包含 NaN 或其他无效值。"));case 15:if(b){e.n=16;break}return e.a(2,{plots:[],signals:[],calculatedVars:{}});case 16:return b.plots&&Array.isArray(b.plots)||(b.plots=[]),b.plots=b.plots.map(function(t){return t.data&&Array.isArray(t.data)&&(t.data=t.data.map(function(t){return null===t||void 0===t||"number"===typeof t&&isNaN(t)?null:t})),t}),b.signals&&Array.isArray(b.signals)&&(b.signals=b.signals.map(function(t){return t.data&&Array.isArray(t.data)&&(t.data=t.data.map(function(t){return null===t||void 0===t||"number"===typeof t&&isNaN(t)?null:t})),t})),b.calculatedVars||(b.calculatedVars={}),e.a(2,b);case 17:throw e.p=17,S=e.v,new Error("Python 执行失败: ".concat(S.message));case 18:return e.a(2)}},e,null,[[13,14],[6,8],[5,17]])}));return function(t,i){return e.apply(this,arguments)}}();function G(t,e){for(var i=[],n=0;nn-e+1){var c=(t[o-1].high+t[o-1].low+t[o-1].close)/3;s>c?a+=l:sp&&h>0?o.push(h):o.push(0),p>h&&p>0?s.push(p):s.push(0)}for(var v=[],f=[],g=[],m=0;m=e-1){var w=v[m],S=f[m],C=g[m];if(0===w?(i.push(0),n.push(0)):(i.push(S/w*100),n.push(C/w*100)),m>=e-1){var k=i[m]+n[m],I=0===k?0:Math.abs(i[m]-n[m])/k*100;if(m===e-1)a.push(I);else if(m===e){var E=Math.abs(i[m-1]-n[m-1])/(i[m-1]+n[m-1])*100;a.push((E+I)/2)}else a.push((a[m-1]*(e-1)+I)/e)}}}return{adx:a,plusDI:i,minusDI:n}}function nt(t){for(var e=[],i=0,n=0;nt[n-1].close?i+=t[n].volume:t[n].close255?12:7)},0),m=g+2*h,y=v+2*p,_=(null===(i=r.extendData)||void 0===i?void 0:i.side)||(null===(n=r.extendData)||void 0===n?void 0:n.type)||"buy",b="buy"===_,x=b?u:u-y,w=d,S=w,C=b?x:x+y;return[{type:"line",attrs:{coordinates:[{x:c,y:S},{x:c,y:C}]},styles:{style:"stroke",color:l,dashedValue:[2,2]},ignoreEvent:!0},{type:"circle",attrs:{x:c,y:w,r:4},styles:{style:"fill",color:l},ignoreEvent:!0},{type:"rect",attrs:{x:c-m/2,y:x,width:m,height:y,r:4},styles:{style:"fill",color:l,borderSize:0},ignoreEvent:!0},{type:"text",attrs:{x:c,y:x+y/2,text:f,align:"center",baseline:"middle"},styles:{color:"#ffffff",size:v,weight:"bold",backgroundColor:l,borderRadius:5},ignoreEvent:!0}]}}),Ni({name:"priceRangeMeasure",totalStep:2,lock:!1,needDefaultPointFigure:!1,needDefaultXAxisFigure:!1,needDefaultYAxisFigure:!1,createPointFigures:function(t){var e=t.coordinates,i=t.overlay,n=t.ctx;if(!e[0]||!e[1])return[];var a=i.points[0],r=i.points[1];if(!a||!r)return[];var o=a.value,s=r.value,l=s-o,c=l/o*100,u=a.timestamp,d=r.timestamp,h=Math.abs(d-u),p="",v=Math.floor(h/864e5),f=Math.floor(h%864e5/36e5),g=Math.floor(h%36e5/6e4),m=Math.floor(h%6e4/1e3);p=v>0?"".concat(v,"天").concat(f>0?f+"小时":""):f>0?"".concat(f,"小时").concat(g>0?g+"分钟":""):g>0?"".concat(g,"分钟"):"".concat(m,"秒");var y=0;try{if(n&&n.chart){var _=n.chart.getData();if(_&&Array.isArray(_)&&_.length>0){var b=_.findIndex(function(t){return Math.abs(t.timestamp-u)<1e3}),x=_.findIndex(function(t){return Math.abs(t.timestamp-d)<1e3});b>=0&&x>=0&&(y=Math.abs(x-b))}}}catch(z){}var w=c>=0?"+".concat(c.toFixed(2),"%"):"".concat(c.toFixed(2),"%"),S=l>=0?"+".concat(l.toFixed(2)):"".concat(l.toFixed(2)),C="".concat(w," ").concat(S);y>0?(C+=" (".concat(y,"根"),p&&(C+=" / ".concat(p)),C+=")"):p&&(C+=" (".concat(p,")"));var k=l>=0,I=k?"#0ecb81":"#f6465d",E=k?"#0ecb81":"#f6465d",A=k?"rgba(14, 203, 129, 0.1)":"rgba(246, 70, 93, 0.1)",P=e[0].x,M=e[0].y,D=e[1].x,T=e[1].y,B=(P+D)/2,F=(M+T)/2,R=-20,L=12,N=7*C.length+16,O=L+8;return[{type:"line",attrs:{coordinates:[{x:P,y:M},{x:D,y:T}]},styles:{style:"stroke",color:I,size:2,dashedValue:[4,4]},ignoreEvent:!1},{type:"circle",attrs:{x:P,y:M,r:4},styles:{style:"fill",color:I},ignoreEvent:!1},{type:"circle",attrs:{x:D,y:T,r:4},styles:{style:"fill",color:I},ignoreEvent:!1},{type:"rect",attrs:{x:B-N/2,y:F+R-O/2,width:N,height:O,r:4},styles:{style:"fill",color:A,borderSize:1,borderColor:I},ignoreEvent:!1},{type:"text",attrs:{x:B,y:F+R,text:C,align:"center",baseline:"middle"},styles:{color:E,size:L,weight:"bold"},ignoreEvent:!1}]}});var st=function(t){return t.map(function(t){var e=t.time||t.timestamp;return"string"===typeof e&&(e=parseInt(e)),e<1e10&&(e*=1e3),{timestamp:e,open:parseFloat(t.open),high:parseFloat(t.high),low:parseFloat(t.low),close:parseFloat(t.close),volume:parseFloat(t.volume||0)}}).filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)}).sort(function(t,e){return t.timestamp-e.timestamp})},lt=function(t){if(t.length>0){var e=t[t.length-1];if(t.length>1){var n=t[t.length-2],a=e.close.toFixed(2),r=(e.close-n.close)/n.close*100;i("price-change",{price:a,change:r})}else{var o=e.close.toFixed(2);i("price-change",{price:o,change:0})}}},ct=function(t){return t.map(function(t){return{time:Math.floor(t.timestamp/1e3),open:t.open,high:t.high,low:t.low,close:t.close,volume:t.volume}})},ut=function(t,e,i){var n=new Date(1e3*t),a=new Date(1e3*e);switch(i){case"1m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&n.getMinutes()===a.getMinutes();case"5m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/5)===Math.floor(a.getMinutes()/5);case"15m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/15)===Math.floor(a.getMinutes()/15);case"30m":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours()&&Math.floor(n.getMinutes()/30)===Math.floor(a.getMinutes()/30);case"1H":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&n.getHours()===a.getHours();case"4H":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()&&Math.floor(n.getHours()/4)===Math.floor(a.getHours()/4);case"1D":return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate();case"1W":var r=Math.floor((n.getTime()-new Date(n.getFullYear(),0,1).getTime())/6048e5),o=Math.floor((a.getTime()-new Date(a.getFullYear(),0,1).getTime())/6048e5);return n.getFullYear()===a.getFullYear()&&r===o;default:return t===e}},dt=function(){var e=(0,c.A)((0,l.A)().m(function e(){var i,o,s,c,d,p,f,m=arguments;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(i=m.length>0&&void 0!==m[0]&&m[0],t.symbol){e.n=1;break}return e.a(2);case 1:if(!a.value||i){e.n=2;break}return e.a(2);case 2:return a.value=!0,r.value=null,e.p=3,o=[],e.p=4,e.n=5,(0,v.Ay)({url:"/api/indicator/kline",method:"get",params:{market:t.market,symbol:t.symbol,timeframe:t.timeframe,limit:500}});case 5:if(s=e.v,1!==s.code||!s.data||!Array.isArray(s.data)){e.n=6;break}o=st(s.data),e.n=7;break;case 6:throw c=s.msg||"获取K线数据失败","tiingo_subscription"===s.hint&&(c=M.$t("dashboard.indicator.error.tiingoSubscription")||"Forex 1-minute data requires Tiingo paid subscription"),new Error(c);case 7:e.n=9;break;case 8:throw e.p=8,p=e.v,p;case 9:if(o&&0!==o.length){e.n=10;break}throw new Error("未获取到K线数据");case 10:n.value=o,u.value=!0,d=ct(o),lt(d),(0,h.dY)(function(){if(g.value){var e=n.value.filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)});if(e.length>0&&g.value){try{g.value.applyNewData(e)}catch(i){g.value.applyNewData(e)}setTimeout(function(){g.value&&xt()},100)}}else mt();t.realtimeEnabled&&(gt(),ft())}),e.n=12;break;case 11:if(e.p=11,f=e.v,r.value=M.$t("dashboard.indicator.error.loadDataFailed")+": "+(f.message||M.$t("dashboard.indicator.error.loadDataFailedDesc")),n.value=[],g.value)try{g.value.applyNewData([])}catch(l){}case 12:return e.p=12,a.value=!1,e.f(12);case 13:return e.a(2)}},e,null,[[4,8],[3,11,12,13]])}));return function(){return e.apply(this,arguments)}}(),ht=function(){var e=(0,c.A)((0,l.A)().m(function e(i){return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.symbol&&n.value&&0!==n.value.length){e.n=1;break}return e.a(2);case 1:if(!s.value&&!p){e.n=6;break}if(!p){e.n=5;break}return e.p=2,e.n=3,p;case 3:e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2);case 6:if(u.value){e.n=7;break}return g.value&&"function"===typeof g.value.noMoreData&&g.value.noMoreData(),e.a(2);case 7:return s.value=!0,p=(0,c.A)((0,l.A)().m(function e(){var a,r,o,c,d,f;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.n=1,(0,h.dY)();case 1:return e.p=1,a=Math.floor(i/1e3),e.n=2,(0,v.Ay)({url:"/api/indicator/kline",method:"get",params:{market:t.market,symbol:t.symbol,timeframe:t.timeframe,limit:500,before_time:a}});case 2:if(r=e.v,1!==r.code||!r.data||!Array.isArray(r.data)){e.n=5;break}if(o=st(r.data),0!==o.length){e.n=3;break}return u.value=!1,g.value&&"function"===typeof g.value.noMoreData&&g.value.noMoreData(),e.a(2);case 3:if(c=o.filter(function(t){return t.timestamp0&&(a=st(i.data),r=(0,F.A)(n.value),a.length>0&&(o=Math.floor(a[a.length-1].timestamp/1e3),s=Math.floor(r[r.length-1].timestamp/1e3),ut(o,s,t.timeframe)?(c=r[r.length-1],u=a[a.length-1],r[r.length-1]={timestamp:c.timestamp,open:c.open,high:Math.max(c.high,u.high),low:Math.min(c.low,u.low),close:u.close,volume:u.volume},n.value=r,d=ct(n.value),lt(d),g.value&&"function"===typeof g.value.updateData?(h=n.value.length-1,g.value.updateData(r[h]),C(!1)):g.value&&(g.value.applyNewData(n.value),C(!1))):o>s&&(p=a.filter(function(e){var i=Math.floor(e.timestamp/1e3);return!r.some(function(e){var n=Math.floor(e.timestamp/1e3);return ut(i,n,t.timeframe)})}),p.length>0&&(n.value=[].concat((0,F.A)(r),(0,F.A)(p)),n.value.length>500&&(n.value=n.value.slice(-500)),f=ct(n.value),lt(f),g.value&&"function"===typeof g.value.applyMoreData?(g.value.applyMoreData(p),C(!0)):g.value&&(g.value.applyNewData(n.value),C(!0)))))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}));return function(){return e.apply(this,arguments)}}(),ft=function(){y.value&&clearInterval(y.value);var e={"1m":5e3,"5m":1e4,"15m":15e3,"30m":3e4,"1H":6e4,"4H":3e5,"1D":6e5,"1W":18e5},i=e[t.timeframe]||1e4;b.value=Math.min(i,1e3),t.realtimeEnabled&&t.symbol&&n.value.length>0&&(y.value=setInterval(function(){!a.value&&t.symbol&&n.value&&n.value.length>0&&vt()},b.value))},gt=function(){y.value&&(clearInterval(y.value),y.value=null)},mt=function(){var t=document.getElementById("kline-chart-container");if(t)if(0!==t.clientWidth&&0!==t.clientHeight){if(g.value){try{g.value.destroy()}catch(y){}g.value=null}try{var e=document.getElementById("kline-chart-container");if(!e)throw new Error("容器元素不存在");try{g.value=Ia(e,{drawingBarVisible:!0,overlay:{visible:!0}})}catch(y){g.value=Ia(e)}if(g.value&&"function"===typeof g.value.setDrawingBarVisible?g.value.setDrawingBarVisible(!0):g.value&&"function"===typeof g.value.setDrawingBar?g.value.setDrawingBar(!0):g.value&&"function"===typeof g.value.enableDrawing&&g.value.enableDrawing(!0),!g.value)throw new Error("图表初始化失败:无法创建图表实例");if(g.value&&("function"===typeof g.value.setDrawingBarVisible&&g.value.setDrawingBarVisible(!0),"function"===typeof g.value.setDrawingBar&&g.value.setDrawingBar(!0),"function"===typeof g.value.enableDrawing&&g.value.enableDrawing(!0)),_t(),g.value&&"function"===typeof g.value.subscribeAction){if(g.value.subscribeAction("onOverlayCreated",function(t){if(A.value&&t&&t.id){var e={line:"segment",horizontalLine:"horizontalStraightLine",verticalLine:"verticalStraightLine",ray:"rayLine",straightLine:"straightLine",parallelStraightLine:"parallelStraightLine",priceLine:"priceLine",priceChannelLine:"priceChannelLine",fibonacciLine:"fibonacciLine",measure:"priceRangeMeasure"},i=e[A.value];if(!t.name||t.name===i||"priceRangeMeasure"===i){E.value.push(t.id),A.value=null;try{"function"===typeof g.value.overrideOverlay&&g.value.overrideOverlay(null)}catch(y){}}}}),"function"===typeof g.value.subscribeAction)try{g.value.subscribeAction("onOverlayComplete",function(t){A.value&&t&&t.id&&(E.value.push(t.id),A.value=null)})}catch(y){}g.value.subscribeAction("onOverlayRemoved",function(t){var e=E.value.indexOf(t);e>-1&&E.value.splice(e,1)})}if(g.value&&"function"===typeof g.value.subscribeAction){var i=null,a=!1;g.value.subscribeAction("onVisibleRangeChange",function(){var t=(0,c.A)((0,l.A)().m(function t(e){var r,o,c,d,h,v;return(0,l.A)().w(function(t){while(1)switch(t.n){case 0:if(!e||"number"!==typeof e.from){t.n=5;break}if(a){t.n=1;break}return i=e.from,a=!0,setTimeout(function(){f.value=!0},1e3),t.a(2);case 1:if(f.value){t.n=2;break}return i=e.from,t.a(2);case 2:if(!(s.value&&e.from<=0)){t.n=3;break}try{g.value&&"function"===typeof g.value.setVisibleRange&&(r=n.value.length,r>0&&(o=g.value.getVisibleRange(),o&&(c=Math.ceil((o.to-o.from)*r/100),d=.1,h=Math.min(100,d+c/r*100),g.value.setVisibleRange(d,h))))}catch(y){}return t.a(2);case 3:if(!(e.from<=5&&!s.value&&!p&&u.value&&f.value)){t.n=4;break}if(!(null!==i&&i>e.from)){t.n=4;break}if(!(n.value.length>0)){t.n=4;break}return v=n.value[0].timestamp,t.n=4,ht(v);case 4:i=e.from;case 5:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}())}if(n.value&&n.value.length>0){var o=n.value.filter(function(t){return t.timestamp&&!isNaN(t.open)&&!isNaN(t.high)&&!isNaN(t.low)&&!isNaN(t.close)});if(o.length>0){try{g.value.applyNewData(o)}catch(y){try{g.value.applyNewData(o)}catch(_){}}try{g.value.createIndicator("VOL",!1,{height:100,dragEnabled:!0})}catch(y){}(0,h.dY)(function(){xt()})}}window.addEventListener("resize",yt)}catch(r){r.value=M.$t("dashboard.indicator.error.chartInitFailed")+": "+(r.message||"未知错误")}}else{var d=0,v=10,m=function(){var t=document.getElementById("kline-chart-container");t&&t.clientWidth>0&&t.clientHeight>0?mt():d0&&t.clientHeight>0&&mt()}},_t=function(){if(g.value){var t=Y.value,e="dark"===m.value;g.value.setStyles({grid:{show:!0,horizontal:{show:!0,color:t.gridLineColor,style:"dashed",size:1},vertical:{show:!1}},candle:{priceMark:{show:!0,high:{show:!0,color:t.axisLabelColor},low:{show:!0,color:t.axisLabelColor}},tooltip:{showRule:"always",showType:"standard",labels:[M.$t("dashboard.indicator.tooltip.time"),M.$t("dashboard.indicator.tooltip.open"),M.$t("dashboard.indicator.tooltip.high"),M.$t("dashboard.indicator.tooltip.low"),M.$t("dashboard.indicator.tooltip.close"),M.$t("dashboard.indicator.tooltip.volume")],values:function(t){var e=new Date(t.timestamp);return["".concat(e.getFullYear(),"-").concat(e.getMonth()+1,"-").concat(e.getDate()," ").concat(e.getHours(),":").concat(e.getMinutes()),t.open.toFixed(2),t.high.toFixed(2),t.low.toFixed(2),t.close.toFixed(2),t.volume.toFixed(0)]}},bar:{upColor:e?"#0ecb81":"#13c2c2",downColor:e?"#f6465d":"#fa541c",noChangeColor:t.borderColor}},indicator:{tooltip:{showRule:"always",showType:"standard"}},xAxis:{show:!0,axisLine:{show:!0,color:t.borderColor}},yAxis:{show:!0,axisLine:{show:!1}},crosshair:{show:!0,horizontal:{show:!0,line:{show:!0,style:"dashed",color:t.gridLineColor,size:1}},vertical:{show:!0,line:{show:!0,style:"dashed",color:t.gridLineColor,size:1}}},watermark:{show:!1}})}},bt=function(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,r=arguments.length>5&&void 0!==arguments[5]&&arguments[5];try{var o={name:t,shortName:t,calc:e,figures:i,calcParams:n,precision:a,series:r?"price":"normal"};return ai(o),!0}catch(s){return!(!s.message||!s.message.includes("already registered"))}},xt=function(){var e=(0,c.A)((0,l.A)().m(function e(){var i,a,r,o;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!x.value){e.n=1;break}return e.a(2);case 1:if(g.value&&0!==n.value.length){e.n=2;break}return e.a(2);case 2:x.value=!0,e.p=3;try{I.value.length>0&&g.value&&(I.value.forEach(function(t){try{"function"===typeof g.value.removeOverlay?g.value.removeOverlay(t):"function"===typeof g.value.removeOverlayById&&g.value.removeOverlayById(t)}catch(e){}}),I.value=[])}catch(s){}try{k.value.length>0&&(k.value.forEach(function(t){var e="string"===typeof t?t:t.name,i="string"===typeof t?void 0:t.paneId;i?g.value.removeIndicator(i,e):(g.value.removeIndicator("candle_pane",e),g.value.removeIndicator(e))}),k.value=[])}catch(s){}i=ct(n.value),a=(0,l.A)().m(function e(){var n,a,r,s,c,u,d,h,p,v,f,m,y,b,x,w,S,C,E,A,P,M,D,T,R,L,N,O,z,V,H,Y,K,j,st,lt,ct,ut,dt,ht,pt,vt,ft,gt,mt,yt,_t,xt,wt,St,Ct,kt,It,Et,At,Pt,Mt,Dt,Tt,Bt,Ft,Rt,Lt,Nt,Ot,zt,Vt,Wt,Ht,$t,Yt,Xt,Kt,jt,Ut,Gt,Zt,qt,Jt,Qt,te,ee,ie,ne,ae,re,oe,se,le,ce,ue,de,he,pe,ve,fe,ge,me,ye,_e,be,xe,we,Se,Ce,ke,Ie,Ee,Ae,Pe,Me,De,Te,Be,Fe,Re,Le,Ne,Oe,ze,Ve,We,He,$e,Ye,Xe,Ke,je,Ue,Ge,Ze,qe,Je,Qe,ti,ei,ii,ni,ai,ri,oi,si,li,ci,ui,di,hi,pi,vi,fi,gi,mi,yi,_i;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(n=t.activeIndicators[o],e.p=1,"python"!==n.type){e.n=31;break}if(n.code){e.n=2;break}return e.a(2,0);case 2:if(e.p=2,!n.calculate||"function"!==typeof n.calculate){e.n=15;break}return e.n=3,n.calculate(i,n.params||{});case 3:if(a=e.v,r=[],a&&a.plots&&Array.isArray(a.plots)&&(r=(0,F.A)(a.plots)),!(a&&a.signals&&Array.isArray(a.signals))){e.n=14;break}s=(0,_.A)(a.signals),e.p=4,s.s();case 5:if((c=s.n()).done){e.n=11;break}if(u=c.value,!(u.data&&Array.isArray(u.data)&&u.data.length>0)){e.n=10;break}for(d=[],h=0;h0&&g.value){M=(0,_.A)(v);try{for(M.s();!(D=M.n()).done;){T=D.value;try{R=T.timestamp,R<1e10&&(R*=1e3),L=T.text,"function"===typeof g.value.createOverlay&&(N=g.value.createOverlay({name:"signalTag",points:[{timestamp:R,value:T.price},{timestamp:R,value:T.anchorPrice}],extendData:{text:L,color:T.color,side:T.side,action:T.action,price:T.price},lock:!0},"candle_pane"),N&&I.value.push(N))}catch(l){}}}catch(bi){M.e(bi)}finally{M.f()}}case 10:e.n=5;break;case 11:e.n=13;break;case 12:e.p=12,mi=e.v,s.e(mi);case 13:return e.p=13,s.f(),e.f(13);case 14:if(r.length>0&&(O=r.filter(function(t){return t.data&&Array.isArray(t.data)&&t.data.length>0}),O.length>0)){for(z=[],V={},H=0;H0)){e.n=23;break}for(xt=[],wt=0;wt0&&g.value){Lt=(0,_.A)(Ct);try{for(Lt.s();!(Nt=Lt.n()).done;){Ot=Nt.value;try{zt=Ot.timestamp,zt<1e10&&(zt*=1e3),Vt=Ot.text,"function"===typeof g.value.createOverlay&&(Wt=g.value.createOverlay({name:"signalTag",points:[{timestamp:zt,value:Ot.price},{timestamp:zt,value:Ot.anchorPrice}],extendData:{text:Vt,color:Ot.color,side:Ot.side,action:Ot.action,price:Ot.price},lock:!0},"candle_pane"),Wt&&I.value.push(Wt))}catch(l){}}}catch(bi){Lt.e(bi)}finally{Lt.f()}}case 23:e.n=18;break;case 24:e.n=26;break;case 25:e.p=25,yi=e.v,mt.e(yi);case 26:return e.p=26,mt.f(),e.f(26);case 27:if(gt.length>0&&(Ht=gt.filter(function(t){return t.data&&Array.isArray(t.data)&&t.data.length>0}),Ht.length>0)){for($t=[],Yt={},Xt=0;Xt0&&(0,h.dY)(function(){g.value&&xt()})},{deep:!0}),(0,h.wB)(function(){return t.realtimeEnabled},function(t){t?ft():gt()}),(0,h.sV)((0,c.A)((0,l.A)().m(function e(){return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.n=1,(0,h.dY)();case 1:return!t.theme||"dark"!==t.theme&&"light"!==t.theme||(m.value=t.theme),e.p=2,e.n=3,K();case 3:e.n=5;break;case 4:e.p=4,e.v,$.value=!0;case 5:(0,h.dY)(function(){setTimeout(function(){!g.value&&t.symbol&&mt()},300)});case 6:return e.a(2)}},e,null,[[2,4]])}))),(0,h.xo)(function(){gt(),g.value&&(g.value.destroy(),g.value=null),window.removeEventListener("resize",yt)}),{klineData:n,loading:a,error:r,loadingHistory:s,chartRef:g,chartTheme:m,themeConfig:Y,getIndicatorColor:X,handleRetry:wt,loadingPython:W,pythonReady:H,pyodideLoadFailed:$,formatKlineData:st,updatePricePanel:lt,isSameTimeframe:ut,loadKlineData:dt,loadMoreHistoryData:pt,updateKlineRealtime:vt,startRealtime:ft,stopRealtime:gt,initChart:mt,handleResize:yt,updateChartTheme:_t,updateIndicators:xt,executePythonStrategy:U,parsePythonStrategy:j,indicatorButtons:R,isIndicatorActive:L,toggleIndicator:z,drawingTools:D,activeDrawingTool:A,selectDrawingTool:N,clearAllDrawings:O}}},La=Ra,Na=(0,E.A)(La,M,D,!1,null,"58f93984",null),Oa=Na.exports,za=i(46500),Va={name:"DashboardIndicator",components:{IndicatorEditor:P,KlineChart:Oa,QuickTradePanel:za.A},computed:(0,d.A)((0,d.A)({},(0,p.aH)({navTheme:function(t){return t.app.theme}})),{},{chartTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme?"dark":"light"},isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),setup:function(){var t=(0,h.nI)(),e=t||{},i=e.proxy,n=(0,h.KR)(1),a=(0,h.KR)(!1),p=(0,h.KR)(void 0),m=(0,h.KR)([]),y=(0,h.KR)([]),_=(0,h.KR)(!1),b=(0,h.KR)(""),x=(0,h.KR)(!1),w=(0,h.KR)(!1),S=(0,h.KR)(!1),C=(0,h.KR)(""),k=(0,h.KR)(""),I=(0,h.KR)([]),E=(0,h.KR)(!1),A=(0,h.KR)([]),P=(0,h.KR)(!1),M=(0,h.KR)(null),D=(0,h.KR)(null),T=(0,h.KR)([]),B=(0,h.KR)(!1),F=(0,h.KR)(!1),R=(0,h.KR)(""),L=(0,h.KR)(""),N=(0,h.KR)(0),O=(0,h.EW)(function(){return"crypto"===(Y.value||"").toLowerCase()}),z=function(){O.value?(R.value=$.value||"",N.value=parseFloat(X.value)||0,L.value="",F.value=!0):u.A.warning(i.$t("quickTrade.cryptoOnly"))},V=function(){u.A.success(i.$t("quickTrade.orderSuccess"))},W=function(t){t&&O.value&&(R.value=t)},H=function(){i&&i.$router&&i.$router.push("/indicator-community")},$=(0,h.KR)(""),Y=(0,h.KR)(""),X=(0,h.KR)("--"),K=(0,h.KR)(0),j=(0,h.EW)(function(){return K.value>0?"color-up":K.value<0?"color-down":""}),U=(0,h.KR)("1D"),G=(0,h.KR)([]),Z=(0,h.KR)(!1),q=[{id:"sma5",name:"SMA5 (5日均线)",shortName:"SMA5",type:"line",defaultParams:{length:5}},{id:"sma10",name:"SMA10 (10日均线)",shortName:"SMA10",type:"line",defaultParams:{length:10}},{id:"sma20",name:"SMA20 (20日均线)",shortName:"SMA20",type:"line",defaultParams:{length:20}},{id:"sma30",name:"SMA30 (30日均线)",shortName:"SMA30",type:"line",defaultParams:{length:30}}],J=[{id:"ema5",name:"EMA5 (5日指数均线)",shortName:"EMA5",type:"line",defaultParams:{length:5}},{id:"ema10",name:"EMA10 (10日指数均线)",shortName:"EMA10",type:"line",defaultParams:{length:10}},{id:"ema20",name:"EMA20 (20日指数均线)",shortName:"EMA20",type:"line",defaultParams:{length:20}},{id:"ema30",name:"EMA30 (30日指数均线)",shortName:"EMA30",type:"line",defaultParams:{length:30}}],Q=(0,h.KR)([]),tt=(0,h.KR)([]),et=(0,h.KR)(!1),it=(0,h.KR)(!1),nt=(0,h.KR)(null),at=(0,h.KR)(""),rt=(0,h.KR)([]),ot=(0,h.KR)({}),st=(0,h.KR)(!1),lt=(0,h.KR)({}),ct=(0,h.KR)(!1),ut=(0,h.KR)(!1),dt=(0,h.KR)(!1),ht=(0,h.KR)(null),pt=(0,h.KR)(!1),vt=(0,h.KR)(null),ft=(0,h.KR)(!1),gt=(0,h.KR)(null),mt=(0,h.KR)(!1),yt=(0,h.KR)(null),_t=(0,h.KR)(!1),bt=(0,h.KR)(null),xt=(0,h.KR)(!1),wt=(0,h.KR)(!1),St=(0,h.KR)("free"),Ct=(0,h.KR)(10),kt=(0,h.KR)(""),It=(0,h.KR)(!1),Et={price:[{required:!0,message:"请输入价格",trigger:"blur",type:"number"}]},At=(0,h.KR)(!1),Pt=function(t){var e=t.price,i=t.change;X.value=e,K.value=i},Mt=function(){},Dt=(0,h.KR)([]),Tt=(0,h.KR)([]),Bt=function(t){U.value=t},Ft=function(t){return t?Object.values(t).join(", "):""},Rt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,i,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a.value=!0,t.p=1,r=(0,h.nI)(),o=null===r||void 0===r||null===(e=r.proxy)||void 0===e?void 0:e.$store,s=(null===o||void 0===o||null===(i=o.getters)||void 0===i?void 0:i.userInfo)||{},!s||!s.email){t.n=2;break}return n.value=s.id,a.value=!1,Lt(),ae(),t.a(2);case 2:return t.n=3,(0,g.ug)();case 3:c=t.v,c&&1===c.code&&c.data&&(n.value=c.data.id,o&&o.commit("SET_INFO",c.data),Lt(),ae()),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.p=5,a.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[1,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),Lt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return t.a(2);case 1:return _.value=!0,t.p=2,t.n=3,(0,f.Qo)({userid:n.value});case 3:e=t.v,e&&1===e.code&&e.data&&(y.value=e.data.map(function(t){return(0,d.A)((0,d.A)({},t),{},{label:t.symbol+(t.name?" (".concat(t.name,")"):""),value:"".concat(t.market,":").concat(t.symbol)})}),Nt(),y.value.length>0&&!$.value&&(a=y.value[0],Y.value=a.market,$.value=a.symbol,p.value=a.value)),t.n=5;break;case 4:t.p=4,t.v,u.A.error(i.$t("dashboard.indicator.error.loadWatchlistFailed"));case 5:return t.p=5,_.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),Nt=function(){b.value?m.value=y.value.filter(function(t){return t.symbol.toLowerCase().includes(b.value.toLowerCase())||t.name&&t.name.toLowerCase().includes(b.value.toLowerCase())}):m.value=y.value},Ot=function(t){b.value=t,0===y.value.length&&t&&(x.value=!0),Nt()},zt=function(t){x.value=t,t||(b.value="")},Vt=function(t){if("__empty_watchlist_hint__"!==t){if("__add_stock_option__"===t)return w.value=!0,void setTimeout(function(){p.value=void 0},0);var e=y.value.find(function(e){return e.value===t});if(e||(e=m.value.find(function(e){return e.value===t})),!e&&t.includes(":")){var i=t.split(":"),n=(0,s.A)(i,2),a=n[0],r=n[1];e={market:a,symbol:r,value:t}}e&&(Y.value=e.market,$.value=e.symbol,p.value=e.value)}},Wt=function(t,e){var i,n=(null===(i=e.componentOptions)||void 0===i||null===(i=i.propsData)||void 0===i?void 0:i.value)||"";return"__empty_watchlist_hint__"===n||"__add_stock_option__"===n||n.toLowerCase().includes(t.toLowerCase())},Ht=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,(0,f.iO)();case 1:e=t.v,e&&1===e.code&&e.data&&Array.isArray(e.data)?T.value=e.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):e&&1===e.code&&e.data&&"object"===(0,o.A)(e.data)?T.value=Object.keys(e.data).map(function(t){return{value:t,i18nKey:"dashboard.analysis.market.".concat(t)}}):T.value=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],T.value.length>0&&!C.value&&(C.value=T.value[0].value),t.n=3;break;case 2:t.p=2,t.v,T.value=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:return t.a(2)}},t,null,[[0,2]])}));return function(){return t.apply(this,arguments)}}(),$t=function(){w.value=!1,M.value=null,k.value="",I.value=[],B.value=!1,C.value=T.value.length>0?T.value[0].value:""},Yt=function(t){C.value=t,k.value="",I.value=[],M.value=null,B.value=!1,Zt(t)},Xt=function(t){var e=t.target.value;if(k.value=e,D.value&&clearTimeout(D.value),!e||""===e.trim())return I.value=[],B.value=!1,void(M.value=null);D.value=setTimeout(function(){jt(e)},500)},Kt=function(t){t&&t.trim()&&(C.value?I.value.length>0||(B.value&&0===I.value.length?Ut():jt(t)):u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},jt=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var n;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e&&""!==e.trim()){t.n=1;break}return I.value=[],B.value=!1,t.a(2);case 1:if(C.value){t.n=2;break}return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),t.a(2);case 2:return E.value=!0,B.value=!0,t.p=3,t.n=4,(0,f._3)({market:C.value,keyword:e.trim(),limit:20});case 4:n=t.v,n&&1===n.code&&n.data&&n.data.length>0?I.value=n.data:(I.value=[],M.value={market:C.value,symbol:e.trim().toUpperCase(),name:""}),t.n=6;break;case 5:t.p=5,t.v,I.value=[],M.value={market:C.value,symbol:e.trim().toUpperCase(),name:""};case 6:return t.p=6,E.value=!1,t.f(6);case 7:return t.a(2)}},t,null,[[3,5,6,7]])}));return function(e){return t.apply(this,arguments)}}(),Ut=function(){k.value&&k.value.trim()?C.value?M.value={market:C.value,symbol:k.value.trim().toUpperCase(),name:""}:u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},Gt=function(t){M.value={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},Zt=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var i;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e||(e=C.value||(T.value.length>0?T.value[0].value:"")),e){t.n=1;break}return t.a(2);case 1:return P.value=!0,t.p=2,t.n=3,(0,f.z6)({market:e,limit:10});case 3:i=t.v,i&&1===i.code&&i.data?A.value=i.data:A.value=[],t.n=5;break;case 4:t.p=4,t.v,A.value=[];case 5:return t.p=5,P.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e){return t.apply(this,arguments)}}(),qt=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e="",a="",!M.value){t.n=1;break}e=M.value.market,a=M.value.symbol.toUpperCase(),t.n=4;break;case 1:if(!k.value||!k.value.trim()){t.n=3;break}if(C.value){t.n=2;break}return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),t.a(2);case 2:e=C.value,a=k.value.trim().toUpperCase(),t.n=4;break;case 3:return u.A.warning(i.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),t.a(2);case 4:return S.value=!0,t.p=5,t.n=6,(0,f.dp)({userid:n.value,market:e,symbol:a});case 6:if(r=t.v,!r||1!==r.code){t.n=8;break}return u.A.success(i.$t("dashboard.analysis.message.addStockSuccess")),$t(),t.n=7,Lt();case 7:t.n=9;break;case 8:u.A.error((null===r||void 0===r?void 0:r.msg)||i.$t("dashboard.analysis.message.addStockFailed"));case 9:t.n=11;break;case 10:t.p=10,c=t.v,s=(null===c||void 0===c||null===(o=c.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===c||void 0===c?void 0:c.message)||i.$t("dashboard.analysis.message.addStockFailed"),u.A.error(s);case 11:return t.p=11,S.value=!1,t.f(11);case 12:return t.a(2)}},t,null,[[5,10,11,12]])}));return function(){return t.apply(this,arguments)}}(),Jt=function(t){if(!ie(t.id)){var e=t.params||t.defaultParams||{};G.value.push((0,d.A)((0,d.A)({},t),{},{id:t.id,params:(0,d.A)({},e)}))}},Qt=function(t){G.value=G.value.filter(function(e){return e.id!==t})},te=function(t){var e=t.action,i=t.indicator;if("add"===e){var n=(0,d.A)((0,d.A)({},i),{},{calculate:ee(i.id)});Jt(n)}else"remove"===e&&Qt(i.id)},ee=function(t){return null},ie=function(t){return"sma"===t?q.some(function(t){return G.value.some(function(e){return e.id===t.id})}):"ema"===t?J.some(function(t){return G.value.some(function(e){return e.id===t.id})}):G.value.some(function(e){return e.id===t})},ne=function(){var t=new Set;return q.forEach(function(e){return t.add(e.id)}),J.forEach(function(e){return t.add(e.id)}),G.value.filter(function(e){return!t.has(e.id)})},ae=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,i,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return t.a(2);case 1:return et.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:n.value}});case 3:e=t.v,1===e.code&&e.data&&(i=e.data.filter(function(t){return!t.is_buy||0===t.is_buy||"0"===t.is_buy}),a=e.data.filter(function(t){return 1===t.is_buy||"1"===t.is_buy}),Q.value=i.map(function(t){return(0,d.A)((0,d.A)({},t),{},{type:"python",source:"custom"})}),tt.value=a.map(function(t){return(0,d.A)((0,d.A)({},t),{},{type:"python",source:"purchased"})})),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.p=5,et.value=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(){return t.apply(this,arguments)}}(),re=(0,h.KR)(null),oe=function(){var t=(0,c.A)((0,l.A)().m(function t(e,n){var a,r,o,s,c,h,p,v,f;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a="".concat(n,"-").concat(e.id),!ie(a)){t.n=1;break}return Qt(a),t.a(2);case 1:if(t.p=1,r=e.code||"",re.value){t.n=2;break}return u.A.error(i.$t("dashboard.indicator.error.chartNotReady")),t.a(2);case 2:if("function"===typeof re.value.parsePythonStrategy){t.n=3;break}return u.A.error(i.$t("dashboard.indicator.error.chartMethodNotReady")),t.a(2);case 3:if("function"===typeof re.value.executePythonStrategy){t.n=4;break}return u.A.error(i.$t("dashboard.indicator.error.chartExecuteNotReady")),t.a(2);case 4:if(o=re.value.parsePythonStrategy(r),o){t.n=5;break}return u.A.error(i.$t("dashboard.indicator.error.parseFailed")),t.a(2);case 5:s=e.userParams||{},c=r,h=(0,d.A)({},s),p={id:a,name:e.name,type:"python",code:c,description:e.description,parsed:o,userParams:h,originalId:e.id,user_id:e.user_id||e.userId,is_encrypted:e.is_encrypted||e.isEncrypted||0,calculate:function(t,i){return re.value.executePythonStrategy(c,t,(0,d.A)((0,d.A)({},i),h),{id:e.id,user_id:e.user_id||e.userId,is_encrypted:e.is_encrypted||e.isEncrypted||0})}},v=(0,d.A)((0,d.A)({},o.params),s),G.value.push((0,d.A)((0,d.A)({},p),{},{params:v})),t.n=7;break;case 6:t.p=6,f=t.v,u.A.error(i.$t("dashboard.indicator.error.addIndicatorFailed")+": "+(f.message||"未知错误"));case 7:return t.a(2)}},t,null,[[1,6]])}));return function(e,i){return t.apply(this,arguments)}}(),se=function(){var t=(0,c.A)((0,l.A)().m(function t(e,n){var a,r,o,s,c;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a="".concat(n,"-").concat(e.id),!ie(a)){t.n=1;break}Qt(a),t.n=5;break;case 1:return t.p=1,st.value=!0,t.n=2,i.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:e.id}});case 2:r=t.v,r&&1===r.code&&Array.isArray(r.data)&&r.data.length>0?(rt.value=r.data,o="".concat(n,"-").concat(e.id),s=lt.value[o],c={},r.data.forEach(function(t){var e=s&&void 0!==s[t.name]?s[t.name]:t.default;e="int"===t.type?parseInt(e)||0:"float"===t.type?parseFloat(e)||0:"bool"===t.type?!0===e||"true"===e||1===e||"1"===e:e||"",c[t.name]=e}),ot.value=c,nt.value=e,at.value=n,it.value=!0):oe(e,n),t.n=4;break;case 3:t.p=3,t.v,oe(e,n);case 4:return t.p=4,st.value=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}));return function(e,i){return t.apply(this,arguments)}}(),le=function(){if(nt.value){var t="".concat(at.value,"-").concat(nt.value.id);lt.value[t]=(0,d.A)({},ot.value);var e=(0,d.A)((0,d.A)({},nt.value),{},{userParams:(0,d.A)({},ot.value)});oe(e,at.value)}it.value=!1,nt.value=null,at.value=""},ce=function(){ue(),it.value=!1,setTimeout(function(){nt.value=null,at.value=""},100)},ue=function(){if(nt.value&&at.value){var t="".concat(at.value,"-").concat(nt.value.id);lt.value[t]=JSON.parse(JSON.stringify(ot.value))}},de=function(){ue()},he=function(t){var e=t.code,n=t.name;if(e&&e.trim())try{if(!re.value)return void u.A.error(i.$t("dashboard.indicator.error.chartNotReady"));if("function"!==typeof re.value.parsePythonStrategy)return void u.A.error(i.$t("dashboard.indicator.error.chartMethodNotReady"));if("function"!==typeof re.value.executePythonStrategy)return void u.A.error(i.$t("dashboard.indicator.error.chartExecuteNotReady"));var a=re.value.parsePythonStrategy(e);if(!a)return void u.A.error(i.$t("dashboard.indicator.error.parseFailedCheck"));var r={id:"temp-editor-indicator",name:n||"临时指标",type:"python",code:e,description:"",parsed:a,calculate:function(t,i){var n=e;return re.value.executePythonStrategy(n,t,i)}},o=G.value.findIndex(function(t){return"temp-editor-indicator"===t.id});o>=0&&G.value.splice(o,1),G.value.push((0,d.A)((0,d.A)({},r),{},{params:(0,d.A)({},a.params)})),u.A.success(i.$t("dashboard.indicator.success.runIndicator"))}catch(s){u.A.error(i.$t("dashboard.indicator.error.runIndicatorFailed")+": "+(s.message||"未知错误"))}else u.A.warning(i.$t("dashboard.indicator.warning.enterCode"))},pe=function(){ht.value=null,dt.value=!0},ve=function(t){ht.value=t,dt.value=!0},fe=function(){ct.value=!ct.value},ge=function(t){r.A.confirm({title:i.$t("dashboard.indicator.delete.confirmTitle"),content:i.$t("dashboard.indicator.delete.confirmContent",{name:t.name}),okText:i.$t("dashboard.indicator.delete.confirmOk"),okType:"danger",cancelText:i.$t("dashboard.indicator.delete.confirmCancel"),onOk:function(){var e=(0,c.A)((0,l.A)().m(function e(){var a,r,o;return(0,l.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,v.Ay)({url:"/api/indicator/deleteIndicator",method:"post",data:{id:t.id,userid:n.value}});case 1:if(a=e.v,1!==a.code){e.n=3;break}return u.A.success(i.$t("dashboard.indicator.delete.success")),r="custom-"+t.id,ie(r)&&Qt(r),e.n=2,ae();case 2:e.n=4;break;case 3:u.A.error(a.msg||i.$t("dashboard.indicator.delete.failed"));case 4:e.n=6;break;case 5:e.p=5,o=e.v,u.A.error(i.$t("dashboard.indicator.delete.failed")+": "+(o.message||"未知错误"));case 6:return e.a(2)}},e,null,[[0,5]])}));function a(){return e.apply(this,arguments)}return a}()})},me=function(t){i.$router.push({path:"/backtest-center",query:{tab:"indicator",indicator_id:String(t.id)}})},ye=function(t){i.$router.push({path:"/backtest-center",query:{tab:"indicator",indicator_id:String(t.id),view:"history"}})},_e=function(t){},be=function(t){bt.value=(0,d.A)({},t),St.value=t.pricing_type||"free",Ct.value=t.price||10,kt.value=t.description||"",It.value=!!t.vip_free,_t.value=!0},xe=function(t){i.$router.push({path:"/trading-assistant",query:{mode:"create",indicator_id:String(t.id),indicator_name:t.name||"",indicator_desc:t.description||""}})},we=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e,a;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return u.A.error(i.$t("dashboard.indicator.error.pleaseLogin")),t.a(2);case 1:return xt.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:bt.value.id,code:bt.value.code,name:bt.value.name,description:kt.value,publishToCommunity:!0,pricingType:St.value,price:"paid"===St.value?Ct.value:0,vipFree:"paid"===St.value&&It.value}});case 3:if(e=t.v,1!==e.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.publish.success")),_t.value=!1,bt.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(e.msg||i.$t("dashboard.indicator.publish.failed"));case 6:t.n=8;break;case 7:t.p=7,a=t.v,u.A.error(i.$t("dashboard.indicator.publish.failed")+": "+(a.message||""));case 8:return t.p=8,xt.value=!1,t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(){return t.apply(this,arguments)}}(),Se=function(){var t=(0,c.A)((0,l.A)().m(function t(){var e;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value&&bt.value){t.n=1;break}return t.a(2);case 1:return wt.value=!0,t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:bt.value.id,code:bt.value.code,name:bt.value.name,description:bt.value.description,publishToCommunity:!1,pricingType:"free",price:0,vipFree:!1}});case 3:if(e=t.v,1!==e.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.publish.unpublishSuccess")),_t.value=!1,bt.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(e.msg||i.$t("dashboard.indicator.publish.unpublishFailed"));case 6:t.n=8;break;case 7:t.p=7,t.v,u.A.error(i.$t("dashboard.indicator.publish.unpublishFailed"));case 8:return t.p=8,wt.value=!1,t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(){return t.apply(this,arguments)}}(),Ce=function(){var t=(0,c.A)((0,l.A)().m(function t(e){var a,r,o;return(0,l.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(n.value){t.n=1;break}return u.A.error(i.$t("dashboard.indicator.error.pleaseLogin")),t.a(2);case 1:return a=i.$refs.indicatorEditor,a&&(a.saving=!0),t.p=2,t.n=3,(0,v.Ay)({url:"/api/indicator/saveIndicator",method:"post",data:{userid:n.value,id:e.id||0,code:e.code}});case 3:if(r=t.v,1!==r.code){t.n=5;break}return u.A.success(i.$t("dashboard.indicator.save.success")),dt.value=!1,ht.value=null,t.n=4,ae();case 4:t.n=6;break;case 5:u.A.error(r.msg||i.$t("dashboard.indicator.save.failed"));case 6:t.n=8;break;case 7:t.p=7,o=t.v,u.A.error(i.$t("dashboard.indicator.save.failed")+": "+(o.message||"未知错误"));case 8:return t.p=8,a&&(a.saving=!1),t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}));return function(e){return t.apply(this,arguments)}}(),ke=function(t){var e=t.end_time;if(1===e||"1"===e)return i.$t("dashboard.indicator.status.normalPermanent");if(!e||0===e)return i.$t("dashboard.indicator.status.normal");var n=Math.floor(Date.now()/1e3);return e0&&!C.value&&(C.value=T.value[0].value),C.value&&Zt(C.value)):(M.value=null,k.value="",I.value=[],B.value=!1,D.value&&(clearTimeout(D.value),D.value=null))}),(0,h.wB)(function(){return ot.value},function(t){if(it.value&&nt.value&&at.value){var e="".concat(at.value,"-").concat(nt.value.id);lt.value[e]=JSON.parse(JSON.stringify(t))}},{deep:!0,immediate:!1}),(0,h.wB)(it,function(t){t||ue()}),{userId:n,klineChart:re,searchSymbol:p,symbolSuggestions:m,watchlist:y,symbolSearchValue:b,symbolSearchOpen:x,currentSymbol:$,currentMarket:Y,currentPrice:X,priceChange:K,priceChangeClass:j,timeframe:U,loadingWatchlist:_,activeIndicators:G,trendIndicators:Dt,oscillatorIndicators:Tt,customIndicators:Q,purchasedIndicators:tt,loadingIndicators:et,realtimeEnabled:At,toggleRealtime:De,handleSymbolSearch:Ot,handleSymbolSelect:Vt,handleDropdownVisibleChange:zt,filterSymbolOption:Wt,getMarketName:Pe,getMarketColor:Me,setTimeframe:Bt,addIndicator:Jt,removeIndicator:Qt,isIndicatorActive:ie,loadIndicators:ae,addPythonIndicator:oe,toggleIndicator:se,getIndicatorStatus:ke,getIndicatorStatusIcon:Ie,getIndicatorStatusClass:Ee,getExpiryTimeText:Ae,formatParams:Ft,loadWatchlist:Lt,getCustomActiveIndicators:ne,showIndicatorEditor:dt,editingIndicator:ht,handleCreateIndicator:pe,handleRunIndicator:he,handleSaveIndicator:Ce,handleEditIndicator:ve,handleDeleteIndicator:ge,toggleCustomSection:fe,customSectionCollapsed:ct,purchasedSectionCollapsed:ut,handlePriceChange:Pt,handleChartRetry:Mt,handleIndicatorToggle:te,showParamsModal:it,pendingIndicator:nt,indicatorParams:rt,indicatorParamValues:ot,loadingParams:st,confirmIndicatorParams:le,cancelIndicatorParams:ce,handleParamsModalAfterClose:de,showBacktestModal:pt,backtestIndicator:vt,handleOpenBacktest:me,showBacktestHistoryDrawer:ft,backtestHistoryIndicator:gt,handleOpenBacktestHistory:ye,showBacktestRunViewer:mt,selectedBacktestRun:yt,handleViewBacktestRun:_e,showPublishModal:_t,publishIndicator:bt,publishing:xt,unpublishing:wt,publishPricingType:St,publishPrice:Ct,publishDescription:kt,publishVipFree:It,publishRules:Et,handlePublishIndicator:be,handleCreateStrategyFromIndicator:xe,handleConfirmPublish:we,handleUnpublish:Se,selectedSymbol:$,selectedMarket:Y,selectedTimeframe:U,isMobile:Z,showAddStockModal:w,addingStock:S,selectedMarketTab:C,symbolSearchKeyword:k,symbolSearchResults:I,searchingSymbols:E,hotSymbols:A,loadingHotSymbols:P,selectedSymbolForAdd:M,marketTypes:T,hasSearched:B,handleCloseAddStockModal:$t,handleMarketTabChange:Yt,handleSymbolSearchInput:Xt,handleSearchOrInput:Kt,searchSymbolsInModal:jt,selectSymbol:Gt,loadHotSymbols:Zt,handleAddStock:qt,handleDirectAdd:Ut,loadMarketTypes:Ht,showQuickTrade:F,qtSymbol:R,qtSide:L,qtPrice:N,isCryptoMarket:O,openQuickTrade:z,onQuickTradeSuccess:V,handleQuickTradeSymbolChange:W,goToIndicatorMarket:H}}},Wa=Va,Ha=(0,E.A)(Wa,n,a,!1,null,"6bd239a6",null),$a=Ha.exports},40955:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.BlockCipher,a=e.algo,r=[],o=[],s=[],l=[],c=[],u=[],d=[],h=[],p=[],v=[];(function(){for(var t=[],e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;var i=0,n=0;for(e=0;e<256;e++){var a=n^n<<1^n<<2^n<<3^n<<4;a=a>>>8^255&a^99,r[i]=a,o[a]=i;var f=t[i],g=t[f],m=t[g],y=257*t[a]^16843008*a;s[i]=y<<24|y>>>8,l[i]=y<<16|y>>>16,c[i]=y<<8|y>>>24,u[i]=y;y=16843009*m^65537*g^257*f^16843008*i;d[a]=y<<24|y>>>8,h[a]=y<<16|y>>>16,p[a]=y<<8|y>>>24,v[a]=y,i?(i=f^t[t[t[m^f]]],n^=t[t[n]]):i=n=1}})();var f=[0,1,2,4,8,16,32,64,128,27,54],g=a.AES=n.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,i=t.sigBytes/4,n=this._nRounds=i+6,a=4*(n+1),o=this._keySchedule=[],s=0;s6&&s%i==4&&(u=r[u>>>24]<<24|r[u>>>16&255]<<16|r[u>>>8&255]<<8|r[255&u]):(u=u<<8|u>>>24,u=r[u>>>24]<<24|r[u>>>16&255]<<16|r[u>>>8&255]<<8|r[255&u],u^=f[s/i|0]<<24),o[s]=o[s-i]^u);for(var l=this._invKeySchedule=[],c=0;c>>24]]^h[r[u>>>16&255]]^p[r[u>>>8&255]]^v[r[255&u]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,s,l,c,u,r)},decryptBlock:function(t,e){var i=t[e+1];t[e+1]=t[e+3],t[e+3]=i,this._doCryptBlock(t,e,this._invKeySchedule,d,h,p,v,o);i=t[e+1];t[e+1]=t[e+3],t[e+3]=i},_doCryptBlock:function(t,e,i,n,a,r,o,s){for(var l=this._nRounds,c=t[e]^i[0],u=t[e+1]^i[1],d=t[e+2]^i[2],h=t[e+3]^i[3],p=4,v=1;v>>24]^a[u>>>16&255]^r[d>>>8&255]^o[255&h]^i[p++],g=n[u>>>24]^a[d>>>16&255]^r[h>>>8&255]^o[255&c]^i[p++],m=n[d>>>24]^a[h>>>16&255]^r[c>>>8&255]^o[255&u]^i[p++],y=n[h>>>24]^a[c>>>16&255]^r[u>>>8&255]^o[255&d]^i[p++];c=f,u=g,d=m,h=y}f=(s[c>>>24]<<24|s[u>>>16&255]<<16|s[d>>>8&255]<<8|s[255&h])^i[p++],g=(s[u>>>24]<<24|s[d>>>16&255]<<16|s[h>>>8&255]<<8|s[255&c])^i[p++],m=(s[d>>>24]<<24|s[h>>>16&255]<<16|s[c>>>8&255]<<8|s[255&u])^i[p++],y=(s[h>>>24]<<24|s[c>>>16&255]<<16|s[u>>>8&255]<<8|s[255&d])^i[p++];t[e]=f,t[e+1]=g,t[e+2]=m,t[e+3]=y},keySize:8});e.AES=n._createHelper(g)}(),t.AES})},43128:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.BlockCipher,a=e.algo;const r=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],s=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var l={pbox:[],sbox:[]};function c(t,e){let i=e>>24&255,n=e>>16&255,a=e>>8&255,r=255&e,o=t.sbox[0][i]+t.sbox[1][n];return o^=t.sbox[2][a],o+=t.sbox[3][r],o}function u(t,e,i){let n,a=e,o=i;for(let s=0;s1;--s)a^=t.pbox[s],o=c(t,a)^o,n=a,a=o,o=n;return n=a,a=o,o=n,o^=t.pbox[1],a^=t.pbox[0],{left:a,right:o}}function h(t,e,i){for(let r=0;r<4;r++){t.sbox[r]=[];for(let e=0;e<256;e++)t.sbox[r][e]=s[r][e]}let n=0;for(let s=0;s=i&&(n=0);let a=0,l=0,c=0;for(let o=0;o>>2];t.sigBytes-=e}},m=(n.BlockCipher=d.extend({cfg:d.cfg.extend({mode:v,padding:g}),reset:function(){var t;d.reset.call(this);var e=this.cfg,i=e.iv,n=e.mode;this._xformMode==this._ENC_XFORM_MODE?t=n.createEncryptor:(t=n.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==t?this._mode.init(this,i&&i.words):(this._mode=t.call(n,this,i&&i.words),this._mode.__creator=t)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t,e=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(e.pad(this._data,this.blockSize),t=this._process(!0)):(t=this._process(!0),e.unpad(t)),t},blockSize:4}),n.CipherParams=a.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),y=i.format={},_=y.OpenSSL={stringify:function(t){var e,i=t.ciphertext,n=t.salt;return e=n?r.create([1398893684,1701076831]).concat(n).concat(i):i,e.toString(l)},parse:function(t){var e,i=l.parse(t),n=i.words;return 1398893684==n[0]&&1701076831==n[1]&&(e=r.create(n.slice(2,4)),n.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:e})}},b=n.SerializableCipher=a.extend({cfg:a.extend({format:_}),encrypt:function(t,e,i,n){n=this.cfg.extend(n);var a=t.createEncryptor(i,n),r=a.finalize(e),o=a.cfg;return m.create({ciphertext:r,key:i,iv:o.iv,algorithm:t,mode:o.mode,padding:o.padding,blockSize:t.blockSize,formatter:n.format})},decrypt:function(t,e,i,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var a=t.createDecryptor(i,n).finalize(e.ciphertext);return a},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),x=i.kdf={},w=x.OpenSSL={execute:function(t,e,i,n,a){if(n||(n=r.random(8)),a)o=u.create({keySize:e+i,hasher:a}).compute(t,n);else var o=u.create({keySize:e+i}).compute(t,n);var s=r.create(o.words.slice(e),4*i);return o.sigBytes=4*e,m.create({key:o,iv:s,salt:n})}},S=n.PasswordBasedCipher=b.extend({cfg:b.cfg.extend({kdf:w}),encrypt:function(t,e,i,n){n=this.cfg.extend(n);var a=n.kdf.execute(i,t.keySize,t.ivSize,n.salt,n.hasher);n.iv=a.iv;var r=b.encrypt.call(this,t,e,a.key,n);return r.mixIn(a),r},decrypt:function(t,e,i,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var a=n.kdf.execute(i,t.keySize,t.ivSize,e.salt,n.hasher);n.iv=a.iv;var r=b.decrypt.call(this,t,e,a.key,n);return r}})}()})},19021:function(t,e,i){(function(e,i){t.exports=i()})(0,function(){var t=t||function(t,e){var n;if("undefined"!==typeof window&&window.crypto&&(n=window.crypto),"undefined"!==typeof self&&self.crypto&&(n=self.crypto),"undefined"!==typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!==typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&"undefined"!==typeof i.g&&i.g.crypto&&(n=i.g.crypto),!n)try{n=i(50477)}catch(g){}var a=function(){if(n){if("function"===typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(g){}if("function"===typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(g){}}throw new Error("Native crypto module could not be used to get secure random number.")},r=Object.create||function(){function t(){}return function(e){var i;return t.prototype=e,i=new t,t.prototype=null,i}}(),o={},s=o.lib={},l=s.Base=function(){return{extend:function(t){var e=r(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),c=s.WordArray=l.extend({init:function(t,i){t=this.words=t||[],this.sigBytes=i!=e?i:4*t.length},toString:function(t){return(t||d).stringify(this)},concat:function(t){var e=this.words,i=t.words,n=this.sigBytes,a=t.sigBytes;if(this.clamp(),n%4)for(var r=0;r>>2]>>>24-r%4*8&255;e[n+r>>>2]|=o<<24-(n+r)%4*8}else for(var s=0;s>>2]=i[s>>>2];return this.sigBytes+=a,this},clamp:function(){var e=this.words,i=this.sigBytes;e[i>>>2]&=4294967295<<32-i%4*8,e.length=t.ceil(i/4)},clone:function(){var t=l.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],i=0;i>>2]>>>24-a%4*8&255;n.push((r>>>4).toString(16)),n.push((15&r).toString(16))}return n.join("")},parse:function(t){for(var e=t.length,i=[],n=0;n>>3]|=parseInt(t.substr(n,2),16)<<24-n%8*4;return new c.init(i,e/2)}},h=u.Latin1={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>24-a%4*8&255;n.push(String.fromCharCode(r))}return n.join("")},parse:function(t){for(var e=t.length,i=[],n=0;n>>2]|=(255&t.charCodeAt(n))<<24-n%4*8;return new c.init(i,e)}},p=u.Utf8={stringify:function(t){try{return decodeURIComponent(escape(h.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return h.parse(unescape(encodeURIComponent(t)))}},v=s.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=p.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var i,n=this._data,a=n.words,r=n.sigBytes,o=this.blockSize,s=4*o,l=r/s;l=e?t.ceil(l):t.max((0|l)-this._minBufferSize,0);var u=l*o,d=t.min(4*u,r);if(u){for(var h=0;h>>2]>>>24-r%4*8&255,s=e[r+1>>>2]>>>24-(r+1)%4*8&255,l=e[r+2>>>2]>>>24-(r+2)%4*8&255,c=o<<16|s<<8|l,u=0;u<4&&r+.75*u>>6*(3-u)&63));var d=n.charAt(64);if(d)while(a.length%4)a.push(d);return a.join("")},parse:function(t){var e=t.length,i=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var a=0;a>>6-o%4*2,c=s|l;a[r>>>2]|=c<<24-r%4*8,r++}return n.create(a,r)}}(),t.enc.Base64})},64725:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.enc;a.Base64url={stringify:function(t,e){void 0===e&&(e=!0);var i=t.words,n=t.sigBytes,a=e?this._safe_map:this._map;t.clamp();for(var r=[],o=0;o>>2]>>>24-o%4*8&255,l=i[o+1>>>2]>>>24-(o+1)%4*8&255,c=i[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|l<<8|c,d=0;d<4&&o+.75*d>>6*(3-d)&63));var h=a.charAt(64);if(h)while(r.length%4)r.push(h);return r.join("")},parse:function(t,e){void 0===e&&(e=!0);var i=t.length,n=e?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var o=0;o>>6-o%4*2,c=s|l;a[r>>>2]|=c<<24-r%4*8,r++}return n.create(a,r)}}(),t.enc.Base64url})},45503:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.enc;a.Utf16=a.Utf16BE={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>16-a%4*8&65535;n.push(String.fromCharCode(r))}return n.join("")},parse:function(t){for(var e=t.length,i=[],a=0;a>>1]|=t.charCodeAt(a)<<16-a%2*16;return n.create(i,2*e)}};function r(t){return t<<8&4278255360|t>>>8&16711935}a.Utf16LE={stringify:function(t){for(var e=t.words,i=t.sigBytes,n=[],a=0;a>>2]>>>16-a%4*8&65535);n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,i=[],a=0;a>>1]|=r(t.charCodeAt(a)<<16-a%2*16);return n.create(i,2*e)}}}(),t.enc.Utf16})},39506:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(45471),i(51025))})(0,function(t){return function(){var e=t,i=e.lib,n=i.Base,a=i.WordArray,r=e.algo,o=r.MD5,s=r.EvpKDF=n.extend({cfg:n.extend({keySize:4,hasher:o,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){var i,n=this.cfg,r=n.hasher.create(),o=a.create(),s=o.words,l=n.keySize,c=n.iterations;while(s.lengthn&&(e=t.finalize(e)),e.clamp();for(var a=this._oKey=e.clone(),o=this._iKey=e.clone(),s=a.words,l=o.words,c=0;c>>2]|=t[n]<<24-n%4*8;a.call(this,i,e)}else a.apply(this,arguments)};r.prototype=n}}(),t.lib.WordArray})},84636:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.algo,s=[];(function(){for(var t=0;t<64;t++)s[t]=4294967296*e.abs(e.sin(t+1))|0})();var l=o.MD5=r.extend({_doReset:function(){this._hash=new a.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var i=0;i<16;i++){var n=e+i,a=t[n];t[n]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}var r=this._hash.words,o=t[e+0],l=t[e+1],p=t[e+2],v=t[e+3],f=t[e+4],g=t[e+5],m=t[e+6],y=t[e+7],_=t[e+8],b=t[e+9],x=t[e+10],w=t[e+11],S=t[e+12],C=t[e+13],k=t[e+14],I=t[e+15],E=r[0],A=r[1],P=r[2],M=r[3];E=c(E,A,P,M,o,7,s[0]),M=c(M,E,A,P,l,12,s[1]),P=c(P,M,E,A,p,17,s[2]),A=c(A,P,M,E,v,22,s[3]),E=c(E,A,P,M,f,7,s[4]),M=c(M,E,A,P,g,12,s[5]),P=c(P,M,E,A,m,17,s[6]),A=c(A,P,M,E,y,22,s[7]),E=c(E,A,P,M,_,7,s[8]),M=c(M,E,A,P,b,12,s[9]),P=c(P,M,E,A,x,17,s[10]),A=c(A,P,M,E,w,22,s[11]),E=c(E,A,P,M,S,7,s[12]),M=c(M,E,A,P,C,12,s[13]),P=c(P,M,E,A,k,17,s[14]),A=c(A,P,M,E,I,22,s[15]),E=u(E,A,P,M,l,5,s[16]),M=u(M,E,A,P,m,9,s[17]),P=u(P,M,E,A,w,14,s[18]),A=u(A,P,M,E,o,20,s[19]),E=u(E,A,P,M,g,5,s[20]),M=u(M,E,A,P,x,9,s[21]),P=u(P,M,E,A,I,14,s[22]),A=u(A,P,M,E,f,20,s[23]),E=u(E,A,P,M,b,5,s[24]),M=u(M,E,A,P,k,9,s[25]),P=u(P,M,E,A,v,14,s[26]),A=u(A,P,M,E,_,20,s[27]),E=u(E,A,P,M,C,5,s[28]),M=u(M,E,A,P,p,9,s[29]),P=u(P,M,E,A,y,14,s[30]),A=u(A,P,M,E,S,20,s[31]),E=d(E,A,P,M,g,4,s[32]),M=d(M,E,A,P,_,11,s[33]),P=d(P,M,E,A,w,16,s[34]),A=d(A,P,M,E,k,23,s[35]),E=d(E,A,P,M,l,4,s[36]),M=d(M,E,A,P,f,11,s[37]),P=d(P,M,E,A,y,16,s[38]),A=d(A,P,M,E,x,23,s[39]),E=d(E,A,P,M,C,4,s[40]),M=d(M,E,A,P,o,11,s[41]),P=d(P,M,E,A,v,16,s[42]),A=d(A,P,M,E,m,23,s[43]),E=d(E,A,P,M,b,4,s[44]),M=d(M,E,A,P,S,11,s[45]),P=d(P,M,E,A,I,16,s[46]),A=d(A,P,M,E,p,23,s[47]),E=h(E,A,P,M,o,6,s[48]),M=h(M,E,A,P,y,10,s[49]),P=h(P,M,E,A,k,15,s[50]),A=h(A,P,M,E,g,21,s[51]),E=h(E,A,P,M,S,6,s[52]),M=h(M,E,A,P,v,10,s[53]),P=h(P,M,E,A,x,15,s[54]),A=h(A,P,M,E,l,21,s[55]),E=h(E,A,P,M,_,6,s[56]),M=h(M,E,A,P,I,10,s[57]),P=h(P,M,E,A,m,15,s[58]),A=h(A,P,M,E,C,21,s[59]),E=h(E,A,P,M,f,6,s[60]),M=h(M,E,A,P,w,10,s[61]),P=h(P,M,E,A,p,15,s[62]),A=h(A,P,M,E,b,21,s[63]),r[0]=r[0]+E|0,r[1]=r[1]+A|0,r[2]=r[2]+P|0,r[3]=r[3]+M|0},_doFinalize:function(){var t=this._data,i=t.words,n=8*this._nDataBytes,a=8*t.sigBytes;i[a>>>5]|=128<<24-a%32;var r=e.floor(n/4294967296),o=n;i[15+(a+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),i[14+(a+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(i.length+1),this._process();for(var s=this._hash,l=s.words,c=0;c<4;c++){var u=l[c];l[c]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}return s},clone:function(){var t=r.clone.call(this);return t._hash=this._hash.clone(),t}});function c(t,e,i,n,a,r,o){var s=t+(e&i|~e&n)+a+o;return(s<>>32-r)+e}function u(t,e,i,n,a,r,o){var s=t+(e&n|i&~n)+a+o;return(s<>>32-r)+e}function d(t,e,i,n,a,r,o){var s=t+(e^i^n)+a+o;return(s<>>32-r)+e}function h(t,e,i,n,a,r,o){var s=t+(i^(e|~n))+a+o;return(s<>>32-r)+e}i.MD5=r._createHelper(l),i.HmacMD5=r._createHmacHelper(l)}(Math),t.MD5})},82169:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.mode.CFB=function(){var e=t.lib.BlockCipherMode.extend();function i(t,e,i,n){var a,r=this._iv;r?(a=r.slice(0),this._iv=void 0):a=this._prevBlock,n.encryptBlock(a,0);for(var o=0;o>24&255)){var e=t>>16&255,i=t>>8&255,n=255&t;255===e?(e=0,255===i?(i=0,255===n?n=0:++n):++i):++e,t=0,t+=e<<16,t+=i<<8,t+=n}else t+=1<<24;return t}function n(t){return 0===(t[0]=i(t[0]))&&(t[1]=i(t[1])),t}var a=e.Encryptor=e.extend({processBlock:function(t,e){var i=this._cipher,a=i.blockSize,r=this._iv,o=this._counter;r&&(o=this._counter=r.slice(0),this._iv=void 0),n(o);var s=o.slice(0);i.encryptBlock(s,0);for(var l=0;l>>2]|=a<<24-r%4*8,t.sigBytes+=a},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},t.pad.Ansix923})},54905:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.pad.Iso10126={pad:function(e,i){var n=4*i,a=n-e.sigBytes%n;e.concat(t.lib.WordArray.random(a-1)).concat(t.lib.WordArray.create([a<<24],1))},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},t.pad.Iso10126})},10482:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.pad.Iso97971={pad:function(e,i){e.concat(t.lib.WordArray.create([2147483648],1)),t.pad.ZeroPadding.pad(e,i)},unpad:function(e){t.pad.ZeroPadding.unpad(e),e.sigBytes--}},t.pad.Iso97971})},58124:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.pad.NoPadding={pad:function(){},unpad:function(){}},t.pad.NoPadding})},52155:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(57165))})(0,function(t){return t.pad.ZeroPadding={pad:function(t,e){var i=4*e;t.clamp(),t.sigBytes+=i-(t.sigBytes%i||i)},unpad:function(t){var e=t.words,i=t.sigBytes-1;for(i=t.sigBytes-1;i>=0;i--)if(e[i>>>2]>>>24-i%4*8&255){t.sigBytes=i+1;break}}},t.pad.ZeroPadding})},70019:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(63009),i(51025))})(0,function(t){return function(){var e=t,i=e.lib,n=i.Base,a=i.WordArray,r=e.algo,o=r.SHA256,s=r.HMAC,l=r.PBKDF2=n.extend({cfg:n.extend({keySize:4,hasher:o,iterations:25e4}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){var i=this.cfg,n=s.create(i.hasher,t),r=a.create(),o=a.create([1]),l=r.words,c=o.words,u=i.keySize,d=i.iterations;while(l.length>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],n=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var a=0;a<4;a++)c.call(this);for(a=0;a<8;a++)n[a]^=i[a+4&7];if(e){var r=e.words,o=r[0],s=r[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),d=l>>>16|4294901760&u,h=u<<16|65535&l;n[0]^=l,n[1]^=d,n[2]^=u,n[3]^=h,n[4]^=l,n[5]^=d,n[6]^=u,n[7]^=h;for(a=0;a<4;a++)c.call(this)}},_doProcessBlock:function(t,e){var i=this._X;c.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var n=0;n<4;n++)r[n]=16711935&(r[n]<<8|r[n]>>>24)|4278255360&(r[n]<<24|r[n]>>>8),t[e+n]^=r[n]},blockSize:4,ivSize:2});function c(){for(var t=this._X,e=this._C,i=0;i<8;i++)o[i]=e[i];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0;for(i=0;i<8;i++){var n=t[i]+e[i],a=65535&n,r=n>>>16,l=((a*a>>>17)+a*r>>>15)+r*r,c=((4294901760&n)*n|0)+((65535&n)*n|0);s[i]=l^c}t[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,t[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,t[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,t[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,t[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,t[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,t[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,t[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.RabbitLegacy=n._createHelper(l)}(),t.RabbitLegacy})},96298:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.StreamCipher,a=e.algo,r=[],o=[],s=[],l=a.Rabbit=n.extend({_doReset:function(){for(var t=this._key.words,e=this.cfg.iv,i=0;i<4;i++)t[i]=16711935&(t[i]<<8|t[i]>>>24)|4278255360&(t[i]<<24|t[i]>>>8);var n=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],a=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(i=0;i<4;i++)c.call(this);for(i=0;i<8;i++)a[i]^=n[i+4&7];if(e){var r=e.words,o=r[0],s=r[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),d=l>>>16|4294901760&u,h=u<<16|65535&l;a[0]^=l,a[1]^=d,a[2]^=u,a[3]^=h,a[4]^=l,a[5]^=d,a[6]^=u,a[7]^=h;for(i=0;i<4;i++)c.call(this)}},_doProcessBlock:function(t,e){var i=this._X;c.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var n=0;n<4;n++)r[n]=16711935&(r[n]<<8|r[n]>>>24)|4278255360&(r[n]<<24|r[n]>>>8),t[e+n]^=r[n]},blockSize:4,ivSize:2});function c(){for(var t=this._X,e=this._C,i=0;i<8;i++)o[i]=e[i];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0;for(i=0;i<8;i++){var n=t[i]+e[i],a=65535&n,r=n>>>16,l=((a*a>>>17)+a*r>>>15)+r*r,c=((4294901760&n)*n|0)+((65535&n)*n|0);s[i]=l^c}t[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,t[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,t[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,t[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,t[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,t[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,t[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,t[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.Rabbit=n._createHelper(l)}(),t.Rabbit})},77193:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.StreamCipher,a=e.algo,r=a.RC4=n.extend({_doReset:function(){for(var t=this._key,e=t.words,i=t.sigBytes,n=this._S=[],a=0;a<256;a++)n[a]=a;a=0;for(var r=0;a<256;a++){var o=a%i,s=e[o>>>2]>>>24-o%4*8&255;r=(r+n[a]+s)%256;var l=n[a];n[a]=n[r],n[r]=l}this._i=this._j=0},_doProcessBlock:function(t,e){t[e]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var t=this._S,e=this._i,i=this._j,n=0,a=0;a<4;a++){e=(e+1)%256,i=(i+t[e])%256;var r=t[e];t[e]=t[i],t[i]=r,n|=t[(t[e]+t[i])%256]<<24-8*a}return this._i=e,this._j=i,n}e.RC4=n._createHelper(r);var s=a.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)o.call(this)}});e.RC4Drop=n._createHelper(s)}(),t.RC4})},78056:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){ -/** @preserve - (c) 2012 by Cédric Mesnil. All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -return function(){var e=t,i=e.lib,n=i.WordArray,a=i.Hasher,r=e.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),s=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),d=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=r.RIPEMD160=a.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var i=0;i<16;i++){var n=e+i,a=t[n];t[n]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}var r,h,_,b,x,w,S,C,k,I,E,A=this._hash.words,P=u.words,M=d.words,D=o.words,T=s.words,B=l.words,F=c.words;w=r=A[0],S=h=A[1],C=_=A[2],k=b=A[3],I=x=A[4];for(i=0;i<80;i+=1)E=r+t[e+D[i]]|0,E+=i<16?p(h,_,b)+P[0]:i<32?v(h,_,b)+P[1]:i<48?f(h,_,b)+P[2]:i<64?g(h,_,b)+P[3]:m(h,_,b)+P[4],E|=0,E=y(E,B[i]),E=E+x|0,r=x,x=b,b=y(_,10),_=h,h=E,E=w+t[e+T[i]]|0,E+=i<16?m(S,C,k)+M[0]:i<32?g(S,C,k)+M[1]:i<48?f(S,C,k)+M[2]:i<64?v(S,C,k)+M[3]:p(S,C,k)+M[4],E|=0,E=y(E,F[i]),E=E+I|0,w=I,I=k,k=y(C,10),C=S,S=E;E=A[1]+_+k|0,A[1]=A[2]+b+I|0,A[2]=A[3]+x+w|0,A[3]=A[4]+r+S|0,A[4]=A[0]+h+C|0,A[0]=E},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t.sigBytes=4*(e.length+1),this._process();for(var a=this._hash,r=a.words,o=0;o<5;o++){var s=r[o];r[o]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return a},clone:function(){var t=a.clone.call(this);return t._hash=this._hash.clone(),t}});function p(t,e,i){return t^e^i}function v(t,e,i){return t&e|~t&i}function f(t,e,i){return(t|~e)^i}function g(t,e,i){return t&i|e&~i}function m(t,e,i){return t^(e|~i)}function y(t,e){return t<>>32-e}e.RIPEMD160=a._createHelper(h),e.HmacRIPEMD160=a._createHmacHelper(h)}(Math),t.RIPEMD160})},45471:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=i.Hasher,r=e.algo,o=[],s=r.SHA1=a.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],s=i[3],l=i[4],c=0;c<80;c++){if(c<16)o[c]=0|t[e+c];else{var u=o[c-3]^o[c-8]^o[c-14]^o[c-16];o[c]=u<<1|u>>>31}var d=(n<<5|n>>>27)+l+o[c];d+=c<20?1518500249+(a&r|~a&s):c<40?1859775393+(a^r^s):c<60?(a&r|a&s|r&s)-1894007588:(a^r^s)-899497514,l=s,s=r,r=a<<30|a>>>2,a=n,n=d}i[0]=i[0]+n|0,i[1]=i[1]+a|0,i[2]=i[2]+r|0,i[3]=i[3]+s|0,i[4]=i[4]+l|0},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=Math.floor(i/4294967296),e[15+(n+64>>>9<<4)]=i,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=a.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA1=a._createHelper(s),e.HmacSHA1=a._createHmacHelper(s)}(),t.SHA1})},36308:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(63009))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=e.algo,r=a.SHA256,o=a.SHA224=r.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var t=r._doFinalize.call(this);return t.sigBytes-=4,t}});e.SHA224=r._createHelper(o),e.HmacSHA224=r._createHmacHelper(o)}(),t.SHA224})},63009:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.algo,s=[],l=[];(function(){function t(t){for(var i=e.sqrt(t),n=2;n<=i;n++)if(!(t%n))return!1;return!0}function i(t){return 4294967296*(t-(0|t))|0}var n=2,a=0;while(a<64)t(n)&&(a<8&&(s[a]=i(e.pow(n,.5))),l[a]=i(e.pow(n,1/3)),a++),n++})();var c=[],u=o.SHA256=r.extend({_doReset:function(){this._hash=new a.init(s.slice(0))},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],o=i[3],s=i[4],u=i[5],d=i[6],h=i[7],p=0;p<64;p++){if(p<16)c[p]=0|t[e+p];else{var v=c[p-15],f=(v<<25|v>>>7)^(v<<14|v>>>18)^v>>>3,g=c[p-2],m=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;c[p]=f+c[p-7]+m+c[p-16]}var y=s&u^~s&d,_=n&a^n&r^a&r,b=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),x=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),w=h+x+y+l[p]+c[p],S=b+_;h=d,d=u,u=s,s=o+w|0,o=r,r=a,a=n,n=w+S|0}i[0]=i[0]+n|0,i[1]=i[1]+a|0,i[2]=i[2]+r|0,i[3]=i[3]+o|0,i[4]=i[4]+s|0,i[5]=i[5]+u|0,i[6]=i[6]+d|0,i[7]=i[7]+h|0},_doFinalize:function(){var t=this._data,i=t.words,n=8*this._nDataBytes,a=8*t.sigBytes;return i[a>>>5]|=128<<24-a%32,i[14+(a+64>>>9<<4)]=e.floor(n/4294967296),i[15+(a+64>>>9<<4)]=n,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var t=r.clone.call(this);return t._hash=this._hash.clone(),t}});i.SHA256=r._createHelper(u),i.HmacSHA256=r._createHmacHelper(u)}(Math),t.SHA256})},45953:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.WordArray,r=n.Hasher,o=i.x64,s=o.Word,l=i.algo,c=[],u=[],d=[];(function(){for(var t=1,e=0,i=0;i<24;i++){c[t+5*e]=(i+1)*(i+2)/2%64;var n=e%5,a=(2*t+3*e)%5;t=n,e=a}for(t=0;t<5;t++)for(e=0;e<5;e++)u[t+5*e]=e+(2*t+3*e)%5*5;for(var r=1,o=0;o<24;o++){for(var l=0,h=0,p=0;p<7;p++){if(1&r){var v=(1<>>24)|4278255360&(r<<24|r>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8);var s=i[a];s.high^=o,s.low^=r}for(var l=0;l<24;l++){for(var p=0;p<5;p++){for(var v=0,f=0,g=0;g<5;g++){s=i[p+5*g];v^=s.high,f^=s.low}var m=h[p];m.high=v,m.low=f}for(p=0;p<5;p++){var y=h[(p+4)%5],_=h[(p+1)%5],b=_.high,x=_.low;for(v=y.high^(b<<1|x>>>31),f=y.low^(x<<1|b>>>31),g=0;g<5;g++){s=i[p+5*g];s.high^=v,s.low^=f}}for(var w=1;w<25;w++){s=i[w];var S=s.high,C=s.low,k=c[w];k<32?(v=S<>>32-k,f=C<>>32-k):(v=C<>>64-k,f=S<>>64-k);var I=h[u[w]];I.high=v,I.low=f}var E=h[0],A=i[0];E.high=A.high,E.low=A.low;for(p=0;p<5;p++)for(g=0;g<5;g++){w=p+5*g,s=i[w];var P=h[w],M=h[(p+1)%5+5*g],D=h[(p+2)%5+5*g];s.high=P.high^~M.high&D.high,s.low=P.low^~M.low&D.low}s=i[0];var T=d[l];s.high^=T.high,s.low^=T.low}},_doFinalize:function(){var t=this._data,i=t.words,n=(this._nDataBytes,8*t.sigBytes),r=32*this.blockSize;i[n>>>5]|=1<<24-n%32,i[(e.ceil((n+1)/r)*r>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var o=this._state,s=this.cfg.outputLength/8,l=s/8,c=[],u=0;u>>24)|4278255360&(h<<24|h>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),c.push(p),c.push(h)}return new a.init(c,s)},clone:function(){for(var t=r.clone.call(this),e=t._state=this._state.slice(0),i=0;i<25;i++)e[i]=e[i].clone();return t}});i.SHA3=r._createHelper(p),i.HmacSHA3=r._createHmacHelper(p)}(Math),t.SHA3})},89557:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240),i(81380))})(0,function(t){return function(){var e=t,i=e.x64,n=i.Word,a=i.WordArray,r=e.algo,o=r.SHA512,s=r.SHA384=o.extend({_doReset:function(){this._hash=new a.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var t=o._doFinalize.call(this);return t.sigBytes-=16,t}});e.SHA384=o._createHelper(s),e.HmacSHA384=o._createHmacHelper(s)}(),t.SHA384})},81380:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(43240))})(0,function(t){return function(){var e=t,i=e.lib,n=i.Hasher,a=e.x64,r=a.Word,o=a.WordArray,s=e.algo;function l(){return r.create.apply(r,arguments)}var c=[l(1116352408,3609767458),l(1899447441,602891725),l(3049323471,3964484399),l(3921009573,2173295548),l(961987163,4081628472),l(1508970993,3053834265),l(2453635748,2937671579),l(2870763221,3664609560),l(3624381080,2734883394),l(310598401,1164996542),l(607225278,1323610764),l(1426881987,3590304994),l(1925078388,4068182383),l(2162078206,991336113),l(2614888103,633803317),l(3248222580,3479774868),l(3835390401,2666613458),l(4022224774,944711139),l(264347078,2341262773),l(604807628,2007800933),l(770255983,1495990901),l(1249150122,1856431235),l(1555081692,3175218132),l(1996064986,2198950837),l(2554220882,3999719339),l(2821834349,766784016),l(2952996808,2566594879),l(3210313671,3203337956),l(3336571891,1034457026),l(3584528711,2466948901),l(113926993,3758326383),l(338241895,168717936),l(666307205,1188179964),l(773529912,1546045734),l(1294757372,1522805485),l(1396182291,2643833823),l(1695183700,2343527390),l(1986661051,1014477480),l(2177026350,1206759142),l(2456956037,344077627),l(2730485921,1290863460),l(2820302411,3158454273),l(3259730800,3505952657),l(3345764771,106217008),l(3516065817,3606008344),l(3600352804,1432725776),l(4094571909,1467031594),l(275423344,851169720),l(430227734,3100823752),l(506948616,1363258195),l(659060556,3750685593),l(883997877,3785050280),l(958139571,3318307427),l(1322822218,3812723403),l(1537002063,2003034995),l(1747873779,3602036899),l(1955562222,1575990012),l(2024104815,1125592928),l(2227730452,2716904306),l(2361852424,442776044),l(2428436474,593698344),l(2756734187,3733110249),l(3204031479,2999351573),l(3329325298,3815920427),l(3391569614,3928383900),l(3515267271,566280711),l(3940187606,3454069534),l(4118630271,4000239992),l(116418474,1914138554),l(174292421,2731055270),l(289380356,3203993006),l(460393269,320620315),l(685471733,587496836),l(852142971,1086792851),l(1017036298,365543100),l(1126000580,2618297676),l(1288033470,3409855158),l(1501505948,4234509866),l(1607167915,987167468),l(1816402316,1246189591)],u=[];(function(){for(var t=0;t<80;t++)u[t]=l()})();var d=s.SHA512=n.extend({_doReset:function(){this._hash=new o.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var i=this._hash.words,n=i[0],a=i[1],r=i[2],o=i[3],s=i[4],l=i[5],d=i[6],h=i[7],p=n.high,v=n.low,f=a.high,g=a.low,m=r.high,y=r.low,_=o.high,b=o.low,x=s.high,w=s.low,S=l.high,C=l.low,k=d.high,I=d.low,E=h.high,A=h.low,P=p,M=v,D=f,T=g,B=m,F=y,R=_,L=b,N=x,O=w,z=S,V=C,W=k,H=I,$=E,Y=A,X=0;X<80;X++){var K,j,U=u[X];if(X<16)j=U.high=0|t[e+2*X],K=U.low=0|t[e+2*X+1];else{var G=u[X-15],Z=G.high,q=G.low,J=(Z>>>1|q<<31)^(Z>>>8|q<<24)^Z>>>7,Q=(q>>>1|Z<<31)^(q>>>8|Z<<24)^(q>>>7|Z<<25),tt=u[X-2],et=tt.high,it=tt.low,nt=(et>>>19|it<<13)^(et<<3|it>>>29)^et>>>6,at=(it>>>19|et<<13)^(it<<3|et>>>29)^(it>>>6|et<<26),rt=u[X-7],ot=rt.high,st=rt.low,lt=u[X-16],ct=lt.high,ut=lt.low;K=Q+st,j=J+ot+(K>>>0>>0?1:0),K+=at,j=j+nt+(K>>>0>>0?1:0),K+=ut,j=j+ct+(K>>>0>>0?1:0),U.high=j,U.low=K}var dt=N&z^~N&W,ht=O&V^~O&H,pt=P&D^P&B^D&B,vt=M&T^M&F^T&F,ft=(P>>>28|M<<4)^(P<<30|M>>>2)^(P<<25|M>>>7),gt=(M>>>28|P<<4)^(M<<30|P>>>2)^(M<<25|P>>>7),mt=(N>>>14|O<<18)^(N>>>18|O<<14)^(N<<23|O>>>9),yt=(O>>>14|N<<18)^(O>>>18|N<<14)^(O<<23|N>>>9),_t=c[X],bt=_t.high,xt=_t.low,wt=Y+yt,St=$+mt+(wt>>>0>>0?1:0),Ct=(wt=wt+ht,St=St+dt+(wt>>>0>>0?1:0),wt=wt+xt,St=St+bt+(wt>>>0>>0?1:0),wt=wt+K,St=St+j+(wt>>>0>>0?1:0),gt+vt),kt=ft+pt+(Ct>>>0>>0?1:0);$=W,Y=H,W=z,H=V,z=N,V=O,O=L+wt|0,N=R+St+(O>>>0>>0?1:0)|0,R=B,L=F,B=D,F=T,D=P,T=M,M=wt+Ct|0,P=St+kt+(M>>>0>>0?1:0)|0}v=n.low=v+M,n.high=p+P+(v>>>0>>0?1:0),g=a.low=g+T,a.high=f+D+(g>>>0>>0?1:0),y=r.low=y+F,r.high=m+B+(y>>>0>>0?1:0),b=o.low=b+L,o.high=_+R+(b>>>0>>0?1:0),w=s.low=w+O,s.high=x+N+(w>>>0>>0?1:0),C=l.low=C+V,l.high=S+z+(C>>>0>>0?1:0),I=d.low=I+H,d.high=k+W+(I>>>0>>0?1:0),A=h.low=A+Y,h.high=E+$+(A>>>0>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[30+(n+128>>>10<<5)]=Math.floor(i/4294967296),e[31+(n+128>>>10<<5)]=i,t.sigBytes=4*e.length,this._process();var a=this._hash.toX32();return a},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});e.SHA512=n._createHelper(d),e.HmacSHA512=n._createHmacHelper(d)}(),t.SHA512})},7628:function(t,e,i){(function(e,n){t.exports=n(i(19021),i(80754),i(84636),i(39506),i(57165))})(0,function(t){return function(){var e=t,i=e.lib,n=i.WordArray,a=i.BlockCipher,r=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],c=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],d=r.DES=a.extend({_doReset:function(){for(var t=this._key,e=t.words,i=[],n=0;n<56;n++){var a=o[n]-1;i[n]=e[a>>>5]>>>31-a%32&1}for(var r=this._subKeys=[],c=0;c<16;c++){var u=r[c]=[],d=l[c];for(n=0;n<24;n++)u[n/6|0]|=i[(s[n]-1+d)%28]<<31-n%6,u[4+(n/6|0)]|=i[28+(s[n+24]-1+d)%28]<<31-n%6;u[0]=u[0]<<1|u[0]>>>31;for(n=1;n<7;n++)u[n]=u[n]>>>4*(n-1)+3;u[7]=u[7]<<5|u[7]>>>27}var h=this._invSubKeys=[];for(n=0;n<16;n++)h[n]=r[15-n]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,i){this._lBlock=t[e],this._rBlock=t[e+1],h.call(this,4,252645135),h.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),h.call(this,1,1431655765);for(var n=0;n<16;n++){for(var a=i[n],r=this._lBlock,o=this._rBlock,s=0,l=0;l<8;l++)s|=c[l][((o^a[l])&u[l])>>>0];this._lBlock=o,this._rBlock=r^s}var d=this._lBlock;this._lBlock=this._rBlock,this._rBlock=d,h.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(t,e){var i=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=i,this._lBlock^=i<>>t^this._lBlock)&e;this._lBlock^=i,this._rBlock^=i<192.");var i=e.slice(0,2),a=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=d.createEncryptor(n.create(i)),this._des2=d.createEncryptor(n.create(a)),this._des3=d.createEncryptor(n.create(r))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=a._createHelper(v)}(),t.TripleDES})},43240:function(t,e,i){(function(e,n){t.exports=n(i(19021))})(0,function(t){return function(e){var i=t,n=i.lib,a=n.Base,r=n.WordArray,o=i.x64={};o.Word=a.extend({init:function(t,e){this.high=t,this.low=e}}),o.WordArray=a.extend({init:function(t,i){t=this.words=t||[],this.sigBytes=i!=e?i:8*t.length},toX32:function(){for(var t=this.words,e=t.length,i=[],n=0;n=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}}}throw new TypeError((0,n.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/945-legacy.6efa43e3.js b/frontend/dist/js/945-legacy.6efa43e3.js deleted file mode 100644 index 7be10ff..0000000 --- a/frontend/dist/js/945-legacy.6efa43e3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[945],{32945:function(t,e,a){a.d(e,{A:function(){return C}});a(62010),a(27495),a(25440);var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"quick-trade-panel-root"},[e("a-drawer",{staticClass:"quick-trade-drawer",class:{"theme-dark":t.isDark},attrs:{title:null,width:400,visible:t.visible,closable:!1,bodyStyle:{padding:0},maskStyle:{background:"rgba(0,0,0,0.45)"}},on:{close:t.handleClose}},[e("div",{staticClass:"qt-header"},[e("div",{staticClass:"qt-header-left"},[e("a-icon",{staticClass:"qt-icon",attrs:{type:"thunderbolt",theme:"filled"}}),e("span",{staticClass:"qt-header-title"},[t._v(t._s(t.$t("quickTrade.title")))])],1),e("a-icon",{staticClass:"qt-close",attrs:{type:"close"},on:{click:t.handleClose}})],1),e("div",{staticClass:"qt-symbol-bar"},[e("div",{staticClass:"qt-symbol-selector"},[e("a-select",{staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:t.$t("quickTrade.selectSymbol"),"filter-option":!1,"not-found-content":t.symbolSearching?null:void 0,loading:t.symbolSearching},on:{search:t.handleSymbolSearch,change:t.handleSymbolChange,focus:t.handleSymbolFocus},model:{value:t.currentSymbol,callback:function(e){t.currentSymbol=e},expression:"currentSymbol"}},[e("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),t._l(t.symbolSuggestions,function(a){return e("a-select-option",{key:a.value,attrs:{value:a.value}},[e("div",{staticClass:"qt-symbol-option"},[e("span",{staticClass:"qt-symbol-option-name"},[t._v(t._s(a.symbol))]),a.name?e("span",{staticClass:"qt-symbol-option-desc"},[t._v(t._s(a.name))]):t._e()])])})],2)],1),e("div",{staticClass:"qt-price-display",class:t.priceChangeClass},[e("span",{staticClass:"qt-current-price"},[t._v("$"+t._s(t.formatPrice(t.currentPrice)))])])]),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.exchange"))+" "),e("span",{staticClass:"qt-crypto-hint"},[t._v(t._s(t.$t("quickTrade.cryptoOnly")))])]),e("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:t.$t("quickTrade.selectExchange"),loading:t.credLoading,notFoundContent:t.$t("quickTrade.noExchange")},on:{change:t.onCredentialChange},model:{value:t.selectedCredentialId,callback:function(e){t.selectedCredentialId=e},expression:"selectedCredentialId"}},t._l(t.credentials,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[e("span",{staticStyle:{"text-transform":"capitalize"}},[t._v(t._s(a.exchange_id||a.name))]),a.enable_demo_trading?e("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{color:"orange",size:"small"}},[t._v(t._s(t.$t("quickTrade.testnetTag")))]):t._e(),a.market_type?e("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{size:"small"}},[t._v(t._s(a.market_type))]):t._e()],1)}),1),t.credLoading||0!==t.credentials.length?t._e():e("div",{staticClass:"qt-no-cred-actions"},[e("a-button",{attrs:{type:"primary",block:"",size:"small"},on:{click:function(e){t.showAddExchangeModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("quickTrade.addAccountInline"))+" ")],1)],1),e("div",{staticClass:"qt-manage-link"},[e("a",{on:{click:function(e){e.preventDefault(),t.showAddExchangeModal=!0}}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus-circle"}}),t._v(t._s(t.$t("quickTrade.addAccountInline"))+" ")],1),e("span",{staticClass:"qt-manage-sep"},[t._v("·")]),e("router-link",{attrs:{to:"/profile?tab=exchange"}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),t._v(t._s(t.$t("profile.exchange.goToManage"))+" ")],1)],1),t.selectedCredentialId?e("div",{staticClass:"qt-balance"},[t.balanceLoading?[e("a-spin",{attrs:{size:"small"}}),e("span",{staticClass:"qt-balance-label qt-balance-loading-text"},[t._v(t._s(t.$t("quickTrade.available"))+"…")])]:t.balance.error?[e("span",{staticClass:"qt-balance-label"},[t._v(t._s(t.$t("quickTrade.available"))+":")]),e("span",{staticClass:"qt-balance-error",attrs:{title:t.balance.error}},[t._v("—")])]:[e("span",{staticClass:"qt-balance-label"},[t._v(t._s(t.$t("quickTrade.available"))+":")]),e("span",{staticClass:"qt-balance-value"},[t._v("$"+t._s(t.formatPrice(t.balance.available)))])]],2):t._e()],1),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-direction-toggle"},[e("div",{staticClass:"qt-dir-btn qt-dir-long",class:{active:"buy"===t.side},on:{click:function(e){return t.setTradeSide("buy")}}},[e("a-icon",{attrs:{type:"arrow-up"}}),t._v(" "+t._s(t.$t("quickTrade.long"))+" ")],1),e("div",{staticClass:"qt-dir-btn qt-dir-short",class:{active:"sell"===t.side,"qt-dir-disabled":!t.isSwapMode},on:{click:function(e){return t.setTradeSide("sell")}}},[e("a-icon",{attrs:{type:"arrow-down"}}),t._v(" "+t._s(t.$t("quickTrade.short"))+" ")],1)]),t.isSwapMode?t._e():e("div",{staticClass:"qt-hint-text qt-hint-inline"},[t._v(t._s(t.$t("quickTrade.shortDisabledSpot")))])]),e("div",{staticClass:"qt-section"},[e("a-radio-group",{staticStyle:{width:"100%"},attrs:{"button-style":"solid",size:"small"},model:{value:t.orderType,callback:function(e){t.orderType=e},expression:"orderType"}},[e("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"market"}},[t._v(" "+t._s(t.$t("quickTrade.market"))+" ")]),e("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"limit"}},[t._v(" "+t._s(t.$t("quickTrade.limit"))+" ")])],1)],1),"limit"===t.orderType?e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.limitPrice")))]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.enterPrice")},model:{value:t.limitPrice,callback:function(e){t.limitPrice=e},expression:"limitPrice"}})],1):t._e(),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.amount"))+" (USDT)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1,step:10,precision:2,placeholder:t.$t("quickTrade.enterAmount")},model:{value:t.amount,callback:function(e){t.amount=e},expression:"amount"}}),e("div",{staticClass:"qt-quick-amounts"},t._l(t.quickAmountPcts,function(a){return e("a-button",{key:a,attrs:{size:"small",disabled:t.balance.available<=0},on:{click:function(e){return t.setAmountByPercent(a)}}},[t._v(" "+t._s(a)+"% ")])}),1)],1),e("div",{staticClass:"qt-section qt-card qt-mode-card"},[t.isSwapMode?[e("div",{staticClass:"qt-section-title-row"},[e("span",{staticClass:"qt-section-title"},[t._v(t._s(t.$t("quickTrade.leverage")))]),e("span",{staticClass:"qt-badge-contract"},[t._v(t._s(t.$t("quickTrade.contractBadge")))])]),e("div",{staticClass:"qt-leverage-row"},[e("a-slider",{staticStyle:{flex:"1","margin-right":"12px"},attrs:{min:1,max:125,marks:t.leverageMarks,tipFormatter:function(t){return t+"x"}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}}),e("a-input-number",{staticClass:"qt-leverage-input",attrs:{min:1,max:125,formatter:function(t){return"".concat(t,"x")},parser:function(t){return String(t).replace("x","")}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}})],1),e("div",{staticClass:"qt-label qt-label-spaced"},[t._v(t._s(t.$t("quickTrade.marginMode")))]),e("a-radio-group",{staticClass:"qt-margin-radio",attrs:{size:"small","button-style":"solid"},model:{value:t.marginMode,callback:function(e){t.marginMode=e},expression:"marginMode"}},[e("a-radio-button",{attrs:{value:"cross"}},[t._v(t._s(t.$t("quickTrade.crossMargin")))]),e("a-radio-button",{attrs:{value:"isolated"}},[t._v(t._s(t.$t("quickTrade.isolatedMargin")))])],1),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.marginModeHint")))])]:e("div",{staticClass:"qt-spot-banner"},[e("a-icon",{staticClass:"qt-spot-banner-icon",attrs:{type:"wallet"}}),e("div",{staticClass:"qt-spot-banner-text"},[e("div",{staticClass:"qt-spot-banner-title"},[t._v(t._s(t.$t("quickTrade.spotModeTitle")))]),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.spotModeHint")))])])],1)],2),e("div",{staticClass:"qt-section qt-card qt-tpsl-card"},[e("div",{staticClass:"qt-section-title-row"},[e("span",{staticClass:"qt-section-title"},[t._v(t._s(t.$t("quickTrade.tpsl")))]),e("span",{staticClass:"qt-optional-tag"},[t._v(t._s(t.$t("quickTrade.optional")))])]),e("div",{staticClass:"qt-tpsl-row"},[e("div",{staticClass:"qt-tpsl-item"},[e("span",{staticClass:"qt-label qt-tp-label"},[t._v(t._s(t.$t("quickTrade.tp")))]),e("a-input-number",{staticClass:"qt-input-full",attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.tpPlaceholder")},model:{value:t.tpPrice,callback:function(e){t.tpPrice=e},expression:"tpPrice"}})],1),e("div",{staticClass:"qt-tpsl-item"},[e("span",{staticClass:"qt-label qt-sl-label"},[t._v(t._s(t.$t("quickTrade.sl")))]),e("a-input-number",{staticClass:"qt-input-full",attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.slPlaceholder")},model:{value:t.slPrice,callback:function(e){t.slPrice=e},expression:"slPrice"}})],1)])]),e("div",{staticClass:"qt-submit-section"},[e("a-button",{staticClass:"qt-submit-btn",class:["buy"===t.side?"qt-btn-long":"qt-btn-short"],attrs:{type:"buy"===t.side?"primary":"danger",size:"large",block:"",loading:t.submitting,disabled:!t.canSubmit},on:{click:t.handleSubmit}},[e("a-icon",{attrs:{type:"buy"===t.side?"arrow-up":"arrow-down"}}),t._v(" "+t._s("buy"===t.side?t.$t("quickTrade.buyLong"):t.$t("quickTrade.sellShort"))+" "+t._s(t.symbol)+" ")],1)],1),e("div",{staticClass:"qt-position-section"},[e("div",{staticClass:"qt-section-header"},[e("a-icon",{attrs:{type:"wallet"}}),t._v(" "+t._s(t.$t("quickTrade.currentPosition"))+" ")],1),t.currentPosition?e("div",{staticClass:"qt-position-card",class:t.currentPosition.side},[e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.side")))]),e("a-tag",{attrs:{color:"long"===t.currentPosition.side?"#52c41a":"#f5222d",size:"small"}},[t._v(" "+t._s("long"===t.currentPosition.side?t.$t("quickTrade.long"):t.$t("quickTrade.short"))+" ")])],1),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.posSize")))]),e("span",[t._v(t._s(t.currentPosition.size))])]),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.entryPrice")))]),e("span",[t._v("$"+t._s(t.formatPrice(t.currentPosition.entry_price)))])]),t.currentPosition.mark_price?e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.markPrice")))]),e("span",[t._v("$"+t._s(t.formatPrice(t.currentPosition.mark_price)))])]):t._e(),t.currentPosition.leverage&&t.currentPosition.leverage>1?e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.leverage")))]),e("span",[t._v(t._s(t.currentPosition.leverage)+"x")])]):t._e(),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.unrealizedPnl")))]),e("span",{class:t.currentPosition.unrealized_pnl>=0?"qt-green":"qt-red"},[t._v(" $"+t._s(t.formatPrice(t.currentPosition.unrealized_pnl))+" ")])]),e("a-button",{staticStyle:{"margin-top":"8px"},attrs:{type:"danger",size:"small",block:"",ghost:"",loading:t.closingPosition},on:{click:t.handleClosePosition}},[t._v(" "+t._s(t.$t("quickTrade.closePosition"))+" ")])],1):e("div",{staticClass:"qt-position-empty"},[e("a-icon",{staticClass:"qt-empty-icon",attrs:{type:"inbox"}}),e("span",{staticClass:"qt-empty-desc"},[t._v(t._s(t.$t("quickTrade.noPositionHint")))])],1)]),t.recentTrades.length>0?e("div",{staticClass:"qt-history-section"},[e("a-collapse",{attrs:{bordered:!1,activeKey:t.historyCollapsed?[]:["history"]},on:{change:t.handleHistoryCollapse}},[e("a-collapse-panel",{key:"history",style:t.collapseStyle,attrs:{showArrow:!1}},[e("template",{slot:"header"},[e("div",{staticClass:"qt-section-header",staticStyle:{margin:"0",padding:"0"}},[e("a-icon",{attrs:{type:"history"}}),t._v(" "+t._s(t.$t("quickTrade.recentTrades"))+" "),e("span",{staticClass:"qt-history-count"},[t._v("("+t._s(t.recentTrades.length)+")")])],1)]),e("div",{staticClass:"qt-trade-list"},t._l(t.recentTrades,function(a){return e("div",{key:a.id,staticClass:"qt-trade-item"},[e("div",{staticClass:"qt-trade-main"},[e("a-tag",{attrs:{color:"buy"===a.side?"#52c41a":"#f5222d",size:"small"}},[t._v(" "+t._s("buy"===a.side?"LONG":"SHORT")+" ")]),e("span",{staticClass:"qt-trade-symbol"},[t._v(t._s(a.symbol))]),e("span",{staticClass:"qt-trade-amount"},[t._v("$"+t._s(t.formatPrice(a.amount)))])],1),e("div",{staticClass:"qt-trade-meta"},[e("a-tag",{attrs:{color:"filled"===a.status?"#52c41a":"failed"===a.status?"#f5222d":"#faad14",size:"small"}},[t._v(" "+t._s(a.status)+" ")]),e("span",{staticClass:"qt-trade-time"},[t._v(t._s(t.formatTime(a.created_at)))])],1)])}),0)],2)],1)],1):t._e()]),e("exchange-account-modal",{attrs:{visible:t.showAddExchangeModal},on:{"update:visible":function(e){t.showAddExchangeModal=e},success:t.onExchangeAccountSaved}})],1)},s=[],r=a(81127),n=a(56252),c=a(76338),l=(a(28706),a(2008),a(74423),a(62062),a(2892),a(26099),a(21699),a(68156),a(42762),a(95353)),o=a(42430),d=a(75402),u=a(75769);function p(t){return(0,u.Ay)({url:"/api/quick-trade/place-order",method:"post",data:t})}function m(t){return(0,u.Ay)({url:"/api/quick-trade/balance",method:"get",params:t})}function v(t){return(0,u.Ay)({url:"/api/quick-trade/position",method:"get",params:t})}function h(t){return(0,u.Ay)({url:"/api/quick-trade/history",method:"get",params:t})}function b(t){return(0,u.Ay)({url:"/api/quick-trade/close-position",method:"post",data:t})}var g=a(35038),f=a(505),y={name:"QuickTradePanel",components:{ExchangeAccountModal:d.A},props:{visible:{type:Boolean,default:!1},symbol:{type:String,default:""},presetSide:{type:String,default:""},presetPrice:{type:Number,default:0},source:{type:String,default:"manual"},marketType:{type:String,default:"swap"}},data:function(){return{credentials:[],selectedCredentialId:void 0,credLoading:!1,balanceLoading:!1,balance:{available:0,total:0},side:"buy",orderType:"market",limitPrice:0,amount:100,leverage:5,marginMode:"cross",tpPrice:null,slPrice:null,submitting:!1,closingPosition:!1,currentPrice:0,currentPosition:null,recentTrades:[],historyCollapsed:!1,currentSymbol:"",symbolSuggestions:[],symbolSearching:!1,symbolSearchTimer:null,userId:null,quickAmountPcts:[10,25,50,75,100],leverageMarks:{1:"1x",5:"5x",10:"10x",25:"25x",50:"50x",100:"100x",125:"125x"},pollTimer:null,showAddExchangeModal:!1}},computed:(0,c.A)((0,c.A)({},(0,l.aH)({navTheme:function(t){return t.app.theme}})),{},{isDark:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isSwapMode:function(){return Number(this.leverage)>1},effectiveMarketType:function(){return this.isSwapMode?"swap":"spot"},priceStep:function(){return this.currentPrice>1e4?1:this.currentPrice>100?.1:this.currentPrice>1?.01:1e-4},pricePrecision:function(){return this.currentPrice>1e4?0:this.currentPrice>100?1:this.currentPrice>1?2:4},canSubmit:function(){return this.selectedCredentialId&&this.currentSymbol&&this.amount>0&&!this.submitting},priceChangeClass:function(){return""},collapseStyle:function(){return{background:"transparent",borderRadius:"4px",border:0,overflow:"hidden"}}}),watch:{visible:function(t){t?this.init():this.stopPolling()},symbol:function(t){t&&(this.currentSymbol=t)},currentSymbol:function(t){t&&(this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",t))},selectedCredentialId:function(t){t&&this.currentSymbol&&this.loadPosition()},presetSide:function(t){t&&(this.side=t)},presetPrice:function(t){t>0&&(this.currentPrice=t,this.limitPrice=t)},leverage:function(){var t=this;this.isSwapMode||"sell"!==this.side||(this.side="buy"),this.$nextTick(function(){t.selectedCredentialId&&(t.loadBalance(),t.loadPosition())})}},methods:{setTradeSide:function(t){"sell"!==t||this.isSwapMode?this.side=t:this.$message.warning(this.$t("quickTrade.shortDisabledSpot"))},init:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){return(0,r.A)().w(function(e){while(1)switch(e.n){case 0:return t.currentSymbol=t.symbol||"",t.presetSide&&(t.side=t.presetSide),"spot"===t.marketType&&(t.leverage=1),t.presetPrice>0&&(t.currentPrice=t.presetPrice,t.limitPrice=t.presetPrice),e.n=1,t.loadCredentials();case 1:return e.n=2,t.loadUserInfo();case 2:return e.n=3,t.loadWatchlistSymbols();case 3:if(!t.currentSymbol){e.n=4;break}return e.n=4,t.loadPrice();case 4:if(!t.selectedCredentialId||!t.currentSymbol){e.n=5;break}return e.n=5,t.loadPosition();case 5:t.loadHistory(),t.startPolling();case 6:return e.a(2)}},e)}))()},loadUserInfo:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s,n;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(e.p=0,i=t.$store,s=(null===i||void 0===i||null===(a=i.getters)||void 0===a?void 0:a.userInfo)||{},!s||!s.id){e.n=1;break}return t.userId=s.id,e.a(2);case 1:return e.n=2,(0,f.ug)();case 2:n=e.v,n&&1===n.code&&n.data&&(t.userId=n.data.id,i&&i.commit("SET_INFO",n.data)),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[0,3]])}))()},loadWatchlistSymbols:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.userId){e.n=2;break}return e.n=1,t.loadUserInfo();case 1:if(t.userId){e.n=2;break}return e.a(2);case 2:return e.p=2,e.n=3,(0,g.Qo)({userid:t.userId});case 3:a=e.v,a&&1===a.code&&a.data&&(i=(a.data||[]).filter(function(t){return"crypto"===(t.market||"").toLowerCase()}).map(function(t){return{value:t.symbol||"",symbol:t.symbol||"",name:t.name||""}}).filter(function(t){return t.value}),t.symbolSuggestions=i),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[2,4]])}))()},handleSymbolSearch:function(t){var e=this;this.symbolSearchTimer&&clearTimeout(this.symbolSearchTimer),t&&""!==t.trim()?this.symbolSearchTimer=setTimeout((0,n.A)((0,r.A)().m(function a(){var i;return(0,r.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return e.symbolSearching=!0,a.p=1,a.n=2,(0,g._3)({market:"Crypto",keyword:t.trim(),limit:20});case 2:i=a.v,i&&1===i.code&&i.data?e.symbolSuggestions=(i.data.items||i.data||[]).map(function(t){return{value:t.symbol||"",symbol:t.symbol||"",name:t.name||""}}).filter(function(t){return t.value}):e.symbolSuggestions=[],a.n=4;break;case 3:a.p=3,a.v,e.symbolSuggestions=[];case 4:return a.p=4,e.symbolSearching=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])})),300):this.loadWatchlistSymbols()},handleSymbolChange:function(t){t&&t!==this.currentSymbol&&(this.currentSymbol=t,this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",t))},loadPrice:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.currentSymbol){e.n=1;break}return t.currentPrice=0,e.a(2);case 1:return e.p=1,e.n=2,(0,u.Ay)({url:"/api/market/price",method:"get",params:{market:"Crypto",symbol:t.currentSymbol}});case 2:a=e.v,a&&1===a.code&&a.data&&(i=parseFloat(a.data.price||0),i>0&&(t.currentPrice=i,0!==t.limitPrice&&t.limitPrice!==t.presetPrice||(t.limitPrice=i))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},handleSymbolFocus:function(){0===this.symbolSuggestions.length&&this.loadWatchlistSymbols()},loadCredentials:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.credLoading=!0,e.p=1,e.n=2,(0,o.IA)();case 2:a=e.v,1===a.code&&a.data&&(i=a.data.items||a.data||[],s=["ibkr","mt5"],t.credentials=i.filter(function(t){var e=(t.exchange_id||t.name||"").toLowerCase();return!s.includes(e)}),!t.selectedCredentialId&&t.credentials.length>0&&(t.selectedCredentialId=t.credentials[0].id,t.onCredentialChange(t.selectedCredentialId))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.credLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},onExchangeAccountSaved:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s;return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return i=e.selectedCredentialId,a.n=1,e.loadCredentials();case 1:if(s=t&&(t.id||t.credential_id),!s){a.n=3;break}return e.selectedCredentialId=s,a.n=2,e.onCredentialChange(s);case 2:a.n=4;break;case 3:if(i||1!==e.credentials.length){a.n=4;break}return e.selectedCredentialId=e.credentials[0].id,a.n=4,e.onCredentialChange(e.selectedCredentialId);case 4:return a.a(2)}},a)}))()},onCredentialChange:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return e.selectedCredentialId=t,a.n=1,e.loadBalance();case 1:return a.n=2,e.loadPosition();case 2:return a.a(2)}},a)}))()},loadBalance:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedCredentialId){e.n=1;break}return e.a(2);case 1:return t.balanceLoading=!0,e.p=2,e.n=3,m({credential_id:t.selectedCredentialId,market_type:t.effectiveMarketType});case 3:a=e.v,1===a.code&&a.data?t.balance=(0,c.A)({available:0,total:0},a.data):t.balance={available:0,total:0},e.n=5;break;case 4:e.p=4,i=e.v,t.balance={available:0,total:0,error:String(i.message||i)};case 5:return e.p=5,t.balanceLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},loadPosition:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedCredentialId&&t.currentSymbol){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,v({credential_id:t.selectedCredentialId,symbol:t.currentSymbol,market_type:t.effectiveMarketType});case 2:if(a=e.v,!(1===a.code&&a.data&&a.data.positions&&a.data.positions.length>0)){e.n=3;break}return t.currentPosition=a.data.positions[0],e.a(2,!0);case 3:return t.currentPosition=null,e.a(2,!1);case 4:e.n=6;break;case 5:return e.p=5,e.v,t.currentPosition=null,e.a(2,!1);case 6:return e.a(2)}},e,null,[[1,5]])}))()},loadPositionWithRetry:function(){var t=arguments,e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s,n,c;return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return i=t.length>0&&void 0!==t[0]?t[0]:3,s=t.length>1&&void 0!==t[1]?t[1]:2e3,a.n=1,e.loadPosition();case 1:if(n=a.v,!n){a.n=2;break}return a.a(2);case 2:c=0;case 3:if(!(c0&&(this.amount=Math.floor(this.balance.available*t/100*100)/100)},handleSubmit:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.canSubmit){e.n=1;break}return e.a(2);case 1:return t.submitting=!0,e.p=2,a={credential_id:t.selectedCredentialId,symbol:t.currentSymbol,side:t.side,order_type:t.orderType,amount:t.amount,price:"limit"===t.orderType?t.limitPrice:0,leverage:t.isSwapMode?t.leverage:1,market_type:t.effectiveMarketType,margin_mode:t.isSwapMode?t.marginMode:void 0,tp_price:t.tpPrice||0,sl_price:t.slPrice||0,source:t.source},e.n=3,p(a);case 3:if(i=e.v,1!==i.code){e.n=7;break}return t.$emit("order-success",i.data),e.n=4,t.loadBalance();case 4:return e.n=5,t.loadHistory();case 5:return e.n=6,t.loadPositionWithRetry();case 6:e.n=8;break;case 7:t.$message.error(i.msg||t.$t("quickTrade.orderFailed"));case 8:e.n=10;break;case 9:e.p=9,s=e.v,t.$message.error(s.message||t.$t("quickTrade.orderFailed"));case 10:return e.p=10,t.submitting=!1,e.f(10);case 11:return e.a(2)}},e,null,[[2,9,10,11]])}))()},handleClosePosition:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.currentPosition&&t.selectedCredentialId){e.n=1;break}return e.a(2);case 1:return t.closingPosition=!0,e.p=2,a={credential_id:t.selectedCredentialId,symbol:t.currentSymbol,market_type:t.effectiveMarketType,size:0,source:"manual"},e.n=3,b(a);case 3:if(i=e.v,1!==i.code){e.n=6;break}return t.$message.success(t.$t("quickTrade.positionClosed")),e.n=4,t.loadBalance();case 4:return e.n=5,t.loadHistory();case 5:t.currentPosition=null,setTimeout((0,n.A)((0,r.A)().m(function e(){return(0,r.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.loadPosition();case 1:return e.a(2)}},e)})),2e3),e.n=7;break;case 6:t.$message.error(i.msg||t.$t("quickTrade.orderFailed"));case 7:e.n=9;break;case 8:e.p=8,s=e.v,t.$message.error(s.message||t.$t("quickTrade.orderFailed"));case 9:return e.p=9,t.closingPosition=!1,e.f(9);case 10:return e.a(2)}},e,null,[[2,8,9,10]])}))()},startPolling:function(){var t=this;this.stopPolling(),this.pollTimer=setInterval(function(){t.currentSymbol&&t.loadPrice(),t.selectedCredentialId&&t.currentSymbol&&(t.loadBalance(),t.loadPosition())},1e4)},stopPolling:function(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)},handleClose:function(){this.$emit("close"),this.$emit("update:visible",!1)},handleHistoryCollapse:function(t){this.historyCollapsed=!t.includes("history")},formatPrice:function(t){var e=parseFloat(t||0);return Math.abs(e)>=1e4?e.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0}):Math.abs(e)>=100?e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):Math.abs(e)>=1?e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4}):e.toLocaleString("en-US",{minimumFractionDigits:4,maximumFractionDigits:6})},formatTime:function(t){if(!t)return"";var e=new Date(t),a=function(t){return String(t).padStart(2,"0")};return"".concat(a(e.getMonth()+1),"-").concat(a(e.getDate())," ").concat(a(e.getHours()),":").concat(a(e.getMinutes()))}},beforeDestroy:function(){this.stopPolling()}},_=y,k=a(845),q=(0,k.A)(_,i,s,!1,null,"75b64b85",null),C=q.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/947.ad63868c.js b/frontend/dist/js/947.ad63868c.js new file mode 100644 index 0000000..946c1c0 --- /dev/null +++ b/frontend/dist/js/947.ad63868c.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[947],{18947:function(t,e,a){a.d(e,{A:function(){return C}});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"quick-trade-panel-root"},[e("a-drawer",{staticClass:"quick-trade-drawer",class:{"theme-dark":t.isDark},attrs:{title:null,width:400,visible:t.visible,closable:!1,bodyStyle:{padding:0},maskStyle:{background:"rgba(0,0,0,0.45)"}},on:{close:t.handleClose}},[e("div",{staticClass:"qt-header"},[e("div",{staticClass:"qt-header-left"},[e("a-icon",{staticClass:"qt-icon",attrs:{type:"thunderbolt",theme:"filled"}}),e("span",{staticClass:"qt-header-title"},[t._v(t._s(t.$t("quickTrade.title")))])],1),e("a-icon",{staticClass:"qt-close",attrs:{type:"close"},on:{click:t.handleClose}})],1),e("div",{staticClass:"qt-symbol-bar"},[e("div",{staticClass:"qt-symbol-selector"},[e("a-select",{staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:t.$t("quickTrade.selectSymbol"),"filter-option":!1,"not-found-content":t.symbolSearching?null:void 0,loading:t.symbolSearching},on:{search:t.handleSymbolSearch,change:t.handleSymbolChange,focus:t.handleSymbolFocus},model:{value:t.currentSymbol,callback:function(e){t.currentSymbol=e},expression:"currentSymbol"}},[e("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),t._l(t.symbolSuggestions,function(a){return e("a-select-option",{key:a.value,attrs:{value:a.value}},[e("div",{staticClass:"qt-symbol-option"},[e("span",{staticClass:"qt-symbol-option-name"},[t._v(t._s(a.symbol))]),a.name?e("span",{staticClass:"qt-symbol-option-desc"},[t._v(t._s(a.name))]):t._e()])])})],2)],1),e("div",{staticClass:"qt-price-display",class:t.priceChangeClass},[e("span",{staticClass:"qt-current-price"},[t._v("$"+t._s(t.formatPrice(t.currentPrice)))])])]),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.exchange"))+" "),e("span",{staticClass:"qt-crypto-hint"},[t._v(t._s(t.$t("quickTrade.cryptoOnly")))])]),e("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:t.$t("quickTrade.selectExchange"),loading:t.credLoading,notFoundContent:t.$t("quickTrade.noExchange")},on:{change:t.onCredentialChange},model:{value:t.selectedCredentialId,callback:function(e){t.selectedCredentialId=e},expression:"selectedCredentialId"}},t._l(t.credentials,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[e("span",{staticStyle:{"text-transform":"capitalize"}},[t._v(t._s(a.exchange_id||a.name))]),a.enable_demo_trading?e("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{color:"orange",size:"small"}},[t._v(t._s(t.$t("quickTrade.testnetTag")))]):t._e(),a.market_type?e("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{size:"small"}},[t._v(t._s(a.market_type))]):t._e()],1)}),1),t.credLoading||0!==t.credentials.length?t._e():e("div",{staticClass:"qt-no-cred-actions"},[e("a-button",{attrs:{type:"primary",block:"",size:"small"},on:{click:function(e){t.showAddExchangeModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("quickTrade.addAccountInline"))+" ")],1)],1),e("div",{staticClass:"qt-manage-link"},[e("a",{on:{click:function(e){e.preventDefault(),t.showAddExchangeModal=!0}}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus-circle"}}),t._v(t._s(t.$t("quickTrade.addAccountInline"))+" ")],1),e("span",{staticClass:"qt-manage-sep"},[t._v("·")]),e("router-link",{attrs:{to:"/profile?tab=exchange"}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),t._v(t._s(t.$t("profile.exchange.goToManage"))+" ")],1)],1),t.selectedCredentialId?e("div",{staticClass:"qt-balance"},[t.balanceLoading?[e("a-spin",{attrs:{size:"small"}}),e("span",{staticClass:"qt-balance-label qt-balance-loading-text"},[t._v(t._s(t.$t("quickTrade.available"))+"…")])]:t.balance.error?[e("span",{staticClass:"qt-balance-label"},[t._v(t._s(t.$t("quickTrade.available"))+":")]),e("span",{staticClass:"qt-balance-error",attrs:{title:t.balance.error}},[t._v("—")])]:[e("span",{staticClass:"qt-balance-label"},[t._v(t._s(t.$t("quickTrade.available"))+":")]),e("span",{staticClass:"qt-balance-value"},[t._v("$"+t._s(t.formatPrice(t.balance.available)))])]],2):t._e()],1),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-direction-toggle"},[e("div",{staticClass:"qt-dir-btn qt-dir-long",class:{active:"buy"===t.side},on:{click:function(e){return t.setTradeSide("buy")}}},[e("a-icon",{attrs:{type:"arrow-up"}}),t._v(" "+t._s(t.$t("quickTrade.long"))+" ")],1),e("div",{staticClass:"qt-dir-btn qt-dir-short",class:{active:"sell"===t.side,"qt-dir-disabled":!t.isSwapMode},on:{click:function(e){return t.setTradeSide("sell")}}},[e("a-icon",{attrs:{type:"arrow-down"}}),t._v(" "+t._s(t.$t("quickTrade.short"))+" ")],1)]),t.isSwapMode?t._e():e("div",{staticClass:"qt-hint-text qt-hint-inline"},[t._v(t._s(t.$t("quickTrade.shortDisabledSpot")))])]),e("div",{staticClass:"qt-section"},[e("a-radio-group",{staticStyle:{width:"100%"},attrs:{"button-style":"solid",size:"small"},model:{value:t.orderType,callback:function(e){t.orderType=e},expression:"orderType"}},[e("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"market"}},[t._v(" "+t._s(t.$t("quickTrade.market"))+" ")]),e("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"limit"}},[t._v(" "+t._s(t.$t("quickTrade.limit"))+" ")])],1)],1),"limit"===t.orderType?e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.limitPrice")))]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.enterPrice")},model:{value:t.limitPrice,callback:function(e){t.limitPrice=e},expression:"limitPrice"}})],1):t._e(),e("div",{staticClass:"qt-section qt-amount-block"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.amount"))+" (USDT)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1,step:10,precision:2,placeholder:t.$t("quickTrade.enterAmount")},model:{value:t.amount,callback:function(e){t.amount=e},expression:"amount"}}),e("div",{staticClass:"qt-quick-amounts"},t._l(t.quickAmountPcts,function(a){return e("a-button",{key:a,attrs:{size:"small",disabled:t.balance.available<=0},on:{click:function(e){return t.setAmountByPercent(a)}}},[t._v(" "+t._s(a)+"% ")])}),1)],1),e("div",{staticClass:"qt-section qt-card qt-mode-card"},[t.isSwapMode?[e("div",{staticClass:"qt-section-title-row"},[e("span",{staticClass:"qt-section-title"},[t._v(t._s(t.$t("quickTrade.leverage")))]),e("span",{staticClass:"qt-badge-contract"},[t._v(t._s(t.$t("quickTrade.contractBadge")))])]),e("div",{staticClass:"qt-leverage-row"},[e("a-slider",{staticStyle:{flex:"1","margin-right":"12px"},attrs:{min:1,max:125,marks:t.leverageMarks,tipFormatter:function(t){return t+"x"}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}}),e("a-input-number",{staticClass:"qt-leverage-input",attrs:{min:1,max:125,formatter:function(t){return"".concat(t,"x")},parser:function(t){return String(t).replace("x","")}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}})],1),e("div",{staticClass:"qt-label qt-label-spaced"},[t._v(t._s(t.$t("quickTrade.marginMode")))]),e("a-radio-group",{staticClass:"qt-margin-radio",attrs:{size:"small","button-style":"solid"},model:{value:t.marginMode,callback:function(e){t.marginMode=e},expression:"marginMode"}},[e("a-radio-button",{attrs:{value:"cross"}},[t._v(t._s(t.$t("quickTrade.crossMargin")))]),e("a-radio-button",{attrs:{value:"isolated"}},[t._v(t._s(t.$t("quickTrade.isolatedMargin")))])],1),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.marginModeHint")))])]:e("div",{staticClass:"qt-spot-banner"},[e("a-icon",{staticClass:"qt-spot-banner-icon",attrs:{type:"wallet"}}),e("div",{staticClass:"qt-spot-banner-text"},[e("div",{staticClass:"qt-spot-banner-title"},[t._v(t._s(t.$t("quickTrade.spotModeTitle")))]),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.spotModeHint")))])])],1)],2),e("div",{staticClass:"qt-section qt-card qt-tpsl-card"},[e("div",{staticClass:"qt-section-title-row"},[e("span",{staticClass:"qt-section-title"},[t._v(t._s(t.$t("quickTrade.tpsl")))]),e("span",{staticClass:"qt-optional-tag"},[t._v(t._s(t.$t("quickTrade.optional")))])]),e("div",{staticClass:"qt-tpsl-row"},[e("div",{staticClass:"qt-tpsl-item"},[e("span",{staticClass:"qt-label qt-tp-label"},[t._v(t._s(t.$t("quickTrade.tp")))]),e("a-input-number",{staticClass:"qt-input-full",attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.tpPlaceholder")},model:{value:t.tpPrice,callback:function(e){t.tpPrice=e},expression:"tpPrice"}})],1),e("div",{staticClass:"qt-tpsl-item"},[e("span",{staticClass:"qt-label qt-sl-label"},[t._v(t._s(t.$t("quickTrade.sl")))]),e("a-input-number",{staticClass:"qt-input-full",attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.slPlaceholder")},model:{value:t.slPrice,callback:function(e){t.slPrice=e},expression:"slPrice"}})],1)]),e("div",{staticClass:"qt-hint-text qt-tpsl-record-hint"},[t._v(t._s(t.$t("quickTrade.tpslRecordOnlyHint")))])]),e("div",{staticClass:"qt-submit-section"},[e("a-button",{staticClass:"qt-submit-btn",class:["buy"===t.side?"qt-btn-long":"qt-btn-short"],attrs:{type:"buy"===t.side?"primary":"danger",size:"large",block:"",loading:t.submitting,disabled:!t.canSubmit},on:{click:t.handleSubmit}},[e("a-icon",{attrs:{type:"buy"===t.side?"arrow-up":"arrow-down"}}),t._v(" "+t._s("buy"===t.side?t.$t("quickTrade.buyLong"):t.$t("quickTrade.sellShort"))+" "+t._s(t.symbol)+" ")],1)],1),e("div",{staticClass:"qt-position-section"},[e("div",{staticClass:"qt-section-header"},[e("a-icon",{attrs:{type:"wallet"}}),t._v(" "+t._s(t.$t("quickTrade.currentPosition"))+" "),t.currentPositions.length>1?e("span",{staticClass:"qt-position-count"},[t._v("("+t._s(t.currentPositions.length)+")")]):t._e()],1),t.currentPositions.length>0?[t.isSwapMode?e("div",{staticClass:"qt-close-scope qt-close-scope-global"},[e("div",{staticClass:"qt-label qt-label-close-scope"},[t._v(t._s(t.$t("quickTrade.closeScopeLabel")))]),e("a-radio-group",{staticClass:"qt-close-scope-radio",attrs:{size:"small"},model:{value:t.closeScope,callback:function(e){t.closeScope=e},expression:"closeScope"}},[e("a-radio-button",{attrs:{value:"full"}},[t._v(t._s(t.$t("quickTrade.closeScopeFull")))]),e("a-radio-button",{attrs:{value:"system_tracked"}},[t._v(t._s(t.$t("quickTrade.closeScopeSystem")))])],1),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.closeScopeSystemHint")))])],1):t._e(),t._l(t.currentPositions,function(a,i){return e("div",{key:"pos-"+i+"-"+(a.side||"")+"-"+String(a.size||""),staticClass:"qt-position-card",class:a.side},[e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.side")))]),e("a-tag",{attrs:{color:"long"===a.side?"#52c41a":"#f5222d",size:"small"}},[t._v(" "+t._s("long"===a.side?t.$t("quickTrade.long"):t.$t("quickTrade.short"))+" ")])],1),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.posSize")))]),e("span",[t._v(t._s(a.size))])]),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.entryPrice")))]),e("span",[t._v("$"+t._s(t.formatPrice(a.entry_price)))])]),a.mark_price?e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.markPrice")))]),e("span",[t._v("$"+t._s(t.formatPrice(a.mark_price)))])]):t._e(),a.leverage&&a.leverage>1?e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.leverage")))]),e("span",[t._v(t._s(a.leverage)+"x")])]):t._e(),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.unrealizedPnl")))]),e("span",{class:a.unrealized_pnl>=0?"qt-green":"qt-red"},[t._v(" $"+t._s(t.formatPrice(a.unrealized_pnl))+" ")])]),e("a-button",{staticStyle:{"margin-top":"8px"},attrs:{type:"danger",size:"small",block:"",ghost:"",loading:t.closingPositionSide===a.side},on:{click:function(e){return t.handleClosePosition(a)}}},[t._v(" "+t._s(t.$t("quickTrade.closePosition"))+" ")])],1)})]:e("div",{staticClass:"qt-position-empty"},[e("a-icon",{staticClass:"qt-empty-icon",attrs:{type:"inbox"}}),e("span",{staticClass:"qt-empty-desc"},[t._v(t._s(t.$t("quickTrade.noPositionHint")))])],1)],2),t.recentTrades.length>0?e("div",{staticClass:"qt-history-section"},[e("a-collapse",{attrs:{bordered:!1,activeKey:t.historyCollapsed?[]:["history"]},on:{change:t.handleHistoryCollapse}},[e("a-collapse-panel",{key:"history",style:t.collapseStyle,attrs:{showArrow:!1}},[e("template",{slot:"header"},[e("div",{staticClass:"qt-section-header",staticStyle:{margin:"0",padding:"0"}},[e("a-icon",{attrs:{type:"history"}}),t._v(" "+t._s(t.$t("quickTrade.recentTrades"))+" "),e("span",{staticClass:"qt-history-count"},[t._v("("+t._s(t.recentTrades.length)+")")])],1)]),e("div",{staticClass:"qt-trade-list"},t._l(t.recentTrades,function(a){return e("div",{key:a.id,staticClass:"qt-trade-item"},[e("div",{staticClass:"qt-trade-main"},[e("a-tag",{attrs:{color:"buy"===a.side?"#52c41a":"#f5222d",size:"small"}},[t._v(" "+t._s("buy"===a.side?"LONG":"SHORT")+" ")]),e("span",{staticClass:"qt-trade-symbol"},[t._v(t._s(a.symbol))]),e("span",{staticClass:"qt-trade-amount"},[t._v("$"+t._s(t.formatPrice(a.amount)))])],1),e("div",{staticClass:"qt-trade-meta"},[e("a-tag",{attrs:{color:"filled"===a.status?"#52c41a":"failed"===a.status?"#f5222d":"#faad14",size:"small"}},[t._v(" "+t._s(a.status)+" ")]),e("span",{staticClass:"qt-trade-time"},[t._v(t._s(t.formatTime(a.created_at)))])],1)])}),0)],2)],1)],1):t._e()]),e("exchange-account-modal",{attrs:{visible:t.showAddExchangeModal},on:{"update:visible":function(e){t.showAddExchangeModal=e},success:t.onExchangeAccountSaved}})],1)},s=[],r=a(81127),n=a(56252),c=a(76338),l=(a(74423),a(95353)),o=a(42430),d=a(40011),u=a(75769);function p(t){return(0,u.Ay)({url:"/api/quick-trade/place-order",method:"post",data:t})}function m(t){return(0,u.Ay)({url:"/api/quick-trade/balance",method:"get",params:t})}function v(t){return(0,u.Ay)({url:"/api/quick-trade/position",method:"get",params:t})}function h(t){return(0,u.Ay)({url:"/api/quick-trade/history",method:"get",params:t})}function b(t){return(0,u.Ay)({url:"/api/quick-trade/close-position",method:"post",data:t})}var g=a(35038),f=a(505),y={name:"QuickTradePanel",components:{ExchangeAccountModal:d.A},props:{visible:{type:Boolean,default:!1},symbol:{type:String,default:""},presetSide:{type:String,default:""},presetPrice:{type:Number,default:0},source:{type:String,default:"manual"},marketType:{type:String,default:"swap"}},data:function(){return{credentials:[],selectedCredentialId:void 0,credLoading:!1,balanceLoading:!1,balance:{available:0,total:0},side:"buy",orderType:"market",limitPrice:0,amount:100,leverage:5,marginMode:"cross",tpPrice:null,slPrice:null,submitting:!1,closingPositionSide:null,currentPrice:0,currentPositions:[],recentTrades:[],historyCollapsed:!0,closeScope:"full",currentSymbol:"",symbolSuggestions:[],symbolSearching:!1,symbolSearchTimer:null,userId:null,quickAmountPcts:[10,25,50,75,100],leverageMarks:{1:"1x",5:"5x",10:"10x",25:"25x",50:"50x",100:"100x",125:"125x"},pollTimer:null,showAddExchangeModal:!1}},computed:(0,c.A)((0,c.A)({},(0,l.aH)({navTheme:function(t){return t.app.theme}})),{},{isDark:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isSwapMode:function(){return Number(this.leverage)>1},effectiveMarketType:function(){return this.isSwapMode?"swap":"spot"},priceStep:function(){return this.currentPrice>1e4?1:this.currentPrice>100?.1:this.currentPrice>1?.01:1e-4},pricePrecision:function(){return this.currentPrice>1e4?0:this.currentPrice>100?1:this.currentPrice>1?2:4},canSubmit:function(){return this.selectedCredentialId&&this.currentSymbol&&this.amount>0&&!this.submitting},priceChangeClass:function(){return""},collapseStyle:function(){return{background:"transparent",borderRadius:"4px",border:0,overflow:"hidden"}}}),watch:{visible:function(t){t?this.init():this.stopPolling()},symbol:function(t){t&&(this.currentSymbol=t)},currentSymbol:function(t){t&&(this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",t))},selectedCredentialId:function(t){t&&this.currentSymbol&&this.loadPosition()},presetSide:function(t){t&&(this.side=t)},presetPrice:function(t){t>0&&(this.currentPrice=t,this.limitPrice=t)},leverage:function(){var t=this;this.isSwapMode||"sell"!==this.side||(this.side="buy"),this.$nextTick(function(){t.selectedCredentialId&&(t.loadBalance(),t.loadPosition())})}},methods:{setTradeSide:function(t){"sell"!==t||this.isSwapMode?this.side=t:this.$message.warning(this.$t("quickTrade.shortDisabledSpot"))},init:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){return(0,r.A)().w(function(e){while(1)switch(e.n){case 0:return t.currentSymbol=t.symbol||"",t.presetSide&&(t.side=t.presetSide),"spot"===t.marketType&&(t.leverage=1),t.presetPrice>0&&(t.currentPrice=t.presetPrice,t.limitPrice=t.presetPrice),e.n=1,t.loadCredentials();case 1:return e.n=2,t.loadUserInfo();case 2:return e.n=3,t.loadWatchlistSymbols();case 3:if(!t.currentSymbol){e.n=4;break}return e.n=4,t.loadPrice();case 4:if(!t.selectedCredentialId||!t.currentSymbol){e.n=5;break}return e.n=5,t.loadPosition();case 5:t.loadHistory(),t.startPolling();case 6:return e.a(2)}},e)}))()},loadUserInfo:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s,n;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(e.p=0,i=t.$store,s=(null===i||void 0===i||null===(a=i.getters)||void 0===a?void 0:a.userInfo)||{},!s||!s.id){e.n=1;break}return t.userId=s.id,e.a(2);case 1:return e.n=2,(0,f.ug)();case 2:n=e.v,n&&1===n.code&&n.data&&(t.userId=n.data.id,i&&i.commit("SET_INFO",n.data)),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[0,3]])}))()},loadWatchlistSymbols:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.userId){e.n=2;break}return e.n=1,t.loadUserInfo();case 1:if(t.userId){e.n=2;break}return e.a(2);case 2:return e.p=2,e.n=3,(0,g.Qo)({userid:t.userId});case 3:a=e.v,a&&1===a.code&&a.data&&(i=(a.data||[]).filter(function(t){return"crypto"===(t.market||"").toLowerCase()}).map(function(t){return{value:t.symbol||"",symbol:t.symbol||"",name:t.name||""}}).filter(function(t){return t.value}),t.symbolSuggestions=i),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[2,4]])}))()},handleSymbolSearch:function(t){var e=this;this.symbolSearchTimer&&clearTimeout(this.symbolSearchTimer),t&&""!==t.trim()?this.symbolSearchTimer=setTimeout((0,n.A)((0,r.A)().m(function a(){var i;return(0,r.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return e.symbolSearching=!0,a.p=1,a.n=2,(0,g._3)({market:"Crypto",keyword:t.trim(),limit:20});case 2:i=a.v,i&&1===i.code&&i.data?e.symbolSuggestions=(i.data.items||i.data||[]).map(function(t){return{value:t.symbol||"",symbol:t.symbol||"",name:t.name||""}}).filter(function(t){return t.value}):e.symbolSuggestions=[],a.n=4;break;case 3:a.p=3,a.v,e.symbolSuggestions=[];case 4:return a.p=4,e.symbolSearching=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])})),300):this.loadWatchlistSymbols()},handleSymbolChange:function(t){t&&t!==this.currentSymbol&&(this.currentSymbol=t,this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",t))},loadPrice:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.currentSymbol){e.n=1;break}return t.currentPrice=0,e.a(2);case 1:return e.p=1,e.n=2,(0,u.Ay)({url:"/api/market/price",method:"get",params:{market:"Crypto",symbol:t.currentSymbol}});case 2:a=e.v,a&&1===a.code&&a.data&&(i=parseFloat(a.data.price||0),i>0&&(t.currentPrice=i,0!==t.limitPrice&&t.limitPrice!==t.presetPrice||(t.limitPrice=i))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},handleSymbolFocus:function(){0===this.symbolSuggestions.length&&this.loadWatchlistSymbols()},loadCredentials:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.credLoading=!0,e.p=1,e.n=2,(0,o.IA)();case 2:a=e.v,1===a.code&&a.data&&(i=a.data.items||a.data||[],s=["ibkr","mt5"],t.credentials=i.filter(function(t){var e=(t.exchange_id||t.name||"").toLowerCase();return!s.includes(e)}),!t.selectedCredentialId&&t.credentials.length>0&&(t.selectedCredentialId=t.credentials[0].id,t.onCredentialChange(t.selectedCredentialId))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.credLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},onExchangeAccountSaved:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s;return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return i=e.selectedCredentialId,a.n=1,e.loadCredentials();case 1:if(s=t&&(t.id||t.credential_id),!s){a.n=3;break}return e.selectedCredentialId=s,a.n=2,e.onCredentialChange(s);case 2:a.n=4;break;case 3:if(i||1!==e.credentials.length){a.n=4;break}return e.selectedCredentialId=e.credentials[0].id,a.n=4,e.onCredentialChange(e.selectedCredentialId);case 4:return a.a(2)}},a)}))()},onCredentialChange:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return e.selectedCredentialId=t,a.n=1,e.loadBalance();case 1:return a.n=2,e.loadPosition();case 2:return a.a(2)}},a)}))()},loadBalance:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedCredentialId){e.n=1;break}return e.a(2);case 1:return t.balanceLoading=!0,e.p=2,e.n=3,m({credential_id:t.selectedCredentialId,market_type:t.effectiveMarketType});case 3:a=e.v,1===a.code&&a.data?t.balance=(0,c.A)({available:0,total:0},a.data):t.balance={available:0,total:0},e.n=5;break;case 4:e.p=4,i=e.v,t.balance={available:0,total:0,error:String(i.message||i)};case 5:return e.p=5,t.balanceLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},loadPosition:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedCredentialId&&t.currentSymbol){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,v({credential_id:t.selectedCredentialId,symbol:t.currentSymbol,market_type:t.effectiveMarketType});case 2:if(a=e.v,!(1===a.code&&a.data&&a.data.positions&&a.data.positions.length>0)){e.n=3;break}return t.currentPositions=a.data.positions,e.a(2,!0);case 3:return t.currentPositions=[],e.a(2,!1);case 4:e.n=6;break;case 5:return e.p=5,e.v,t.currentPositions=[],e.a(2,!1);case 6:return e.a(2)}},e,null,[[1,5]])}))()},loadPositionWithRetry:function(){var t=arguments,e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s,n,c;return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return i=t.length>0&&void 0!==t[0]?t[0]:3,s=t.length>1&&void 0!==t[1]?t[1]:2e3,a.n=1,e.loadPosition();case 1:if(n=a.v,!n){a.n=2;break}return a.a(2);case 2:c=0;case 3:if(!(c0&&(this.amount=Math.floor(this.balance.available*t/100*100)/100)},handleSubmit:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s,n,c,l;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.canSubmit){e.n=1;break}return e.a(2);case 1:return t.submitting=!0,e.p=2,a={credential_id:t.selectedCredentialId,symbol:t.currentSymbol,side:t.side,order_type:t.orderType,amount:t.amount,price:"limit"===t.orderType?t.limitPrice:0,leverage:t.isSwapMode?t.leverage:1,market_type:t.effectiveMarketType,margin_mode:t.isSwapMode?t.marginMode:void 0,tp_price:t.tpPrice||0,sl_price:t.slPrice||0,source:t.source},e.n=3,p(a);case 3:if(i=e.v,1!==i.code){e.n=7;break}return t.$emit("order-success",i.data),e.n=4,t.loadBalance();case 4:return e.n=5,t.loadHistory();case 5:return e.n=6,t.loadPositionWithRetry();case 6:e.n=8;break;case 7:s=i.error_hint?t.$t(i.error_hint):"",t.$notification.error({message:t.$t("quickTrade.orderFailed"),description:s||i.msg||""});case 8:e.n=10;break;case 9:e.p=9,l=e.v,n=l&&l.response&&l.response.data||{},c=n.error_hint?t.$t(n.error_hint):"",t.$notification.error({message:t.$t("quickTrade.orderFailed"),description:c||n.msg||l.message||""});case 10:return e.p=10,t.submitting=!1,e.f(10);case 11:return e.a(2)}},e,null,[[2,9,10,11]])}))()},handleClosePosition:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s,c,l,o,d,u;return(0,r.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&e.selectedCredentialId&&e.currentSymbol){a.n=1;break}return a.a(2);case 1:return i=(t.side||"").toLowerCase(),e.closingPositionSide=i||null,a.p=2,s={credential_id:e.selectedCredentialId,symbol:e.currentSymbol,market_type:e.effectiveMarketType,size:0,close_scope:e.isSwapMode?e.closeScope:"full",position_side:i,source:"manual"},a.n=3,b(s);case 3:if(c=a.v,1!==c.code){a.n=6;break}return e.$message.success(e.$t("quickTrade.positionClosed")),a.n=4,e.loadBalance();case 4:return a.n=5,e.loadHistory();case 5:e.currentPositions=e.currentPositions.filter(function(t){return(t.side||"").toLowerCase()!==i}),setTimeout((0,n.A)((0,r.A)().m(function t(){return(0,r.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,e.loadPosition();case 1:return t.a(2)}},t)})),2e3),a.n=7;break;case 6:l=c.error_hint?e.$t(c.error_hint):"",e.$notification.error({message:e.$t("quickTrade.orderFailed"),description:l||c.msg||""});case 7:a.n=9;break;case 8:a.p=8,u=a.v,o=u&&u.response&&u.response.data||{},d=o.error_hint?e.$t(o.error_hint):"",e.$notification.error({message:e.$t("quickTrade.orderFailed"),description:d||o.msg||u.message||""});case 9:return a.p=9,e.closingPositionSide=null,a.f(9);case 10:return a.a(2)}},a,null,[[2,8,9,10]])}))()},startPolling:function(){var t=this;this.stopPolling(),this.pollTimer=setInterval(function(){t.currentSymbol&&t.loadPrice(),t.selectedCredentialId&&t.currentSymbol&&(t.loadBalance(),t.loadPosition())},1e4)},stopPolling:function(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)},handleClose:function(){this.$emit("close"),this.$emit("update:visible",!1)},handleHistoryCollapse:function(t){this.historyCollapsed=!t.includes("history")},formatPrice:function(t){var e=parseFloat(t||0);return Math.abs(e)>=1e4?e.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0}):Math.abs(e)>=100?e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):Math.abs(e)>=1?e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4}):e.toLocaleString("en-US",{minimumFractionDigits:4,maximumFractionDigits:6})},formatTime:function(t){if(!t)return"";var e=new Date(t),a=function(t){return String(t).padStart(2,"0")};return"".concat(a(e.getMonth()+1),"-").concat(a(e.getDate())," ").concat(a(e.getHours()),":").concat(a(e.getMinutes()))}},beforeDestroy:function(){this.stopPolling()}},_=y,q=a(845),k=(0,q.A)(_,i,s,!1,null,"66414eaf",null),C=k.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/app-legacy.78cc7a1b.js b/frontend/dist/js/app-legacy.78cc7a1b.js new file mode 100644 index 0000000..1d848a2 --- /dev/null +++ b/frontend/dist/js/app-legacy.78cc7a1b.js @@ -0,0 +1 @@ +(function(){var e={35358:function(e,t,a){var i={"./af":25177,"./af.js":25177,"./ar":61509,"./ar-dz":41488,"./ar-dz.js":41488,"./ar-kw":58676,"./ar-kw.js":58676,"./ar-ly":42353,"./ar-ly.js":42353,"./ar-ma":24496,"./ar-ma.js":24496,"./ar-ps":6947,"./ar-ps.js":6947,"./ar-sa":82682,"./ar-sa.js":82682,"./ar-tn":89756,"./ar-tn.js":89756,"./ar.js":61509,"./az":95533,"./az.js":95533,"./be":28959,"./be.js":28959,"./bg":47777,"./bg.js":47777,"./bm":54903,"./bm.js":54903,"./bn":61290,"./bn-bd":17357,"./bn-bd.js":17357,"./bn.js":61290,"./bo":31545,"./bo.js":31545,"./br":11470,"./br.js":11470,"./bs":44429,"./bs.js":44429,"./ca":7306,"./ca.js":7306,"./cs":56464,"./cs.js":56464,"./cv":73635,"./cv.js":73635,"./cy":64226,"./cy.js":64226,"./da":93601,"./da.js":93601,"./de":77853,"./de-at":26111,"./de-at.js":26111,"./de-ch":54697,"./de-ch.js":54697,"./de.js":77853,"./dv":60708,"./dv.js":60708,"./el":54691,"./el.js":54691,"./en-au":53872,"./en-au.js":53872,"./en-ca":28298,"./en-ca.js":28298,"./en-gb":56195,"./en-gb.js":56195,"./en-ie":66584,"./en-ie.js":66584,"./en-il":65543,"./en-il.js":65543,"./en-in":9033,"./en-in.js":9033,"./en-nz":79402,"./en-nz.js":79402,"./en-sg":43004,"./en-sg.js":43004,"./eo":32934,"./eo.js":32934,"./es":97650,"./es-do":20838,"./es-do.js":20838,"./es-mx":17730,"./es-mx.js":17730,"./es-us":56575,"./es-us.js":56575,"./es.js":97650,"./et":3035,"./et.js":3035,"./eu":3508,"./eu.js":3508,"./fa":119,"./fa.js":119,"./fi":90527,"./fi.js":90527,"./fil":95995,"./fil.js":95995,"./fo":52477,"./fo.js":52477,"./fr":85498,"./fr-ca":26435,"./fr-ca.js":26435,"./fr-ch":37892,"./fr-ch.js":37892,"./fr.js":85498,"./fy":37071,"./fy.js":37071,"./ga":41734,"./ga.js":41734,"./gd":70217,"./gd.js":70217,"./gl":77329,"./gl.js":77329,"./gom-deva":32124,"./gom-deva.js":32124,"./gom-latn":93383,"./gom-latn.js":93383,"./gu":95050,"./gu.js":95050,"./he":11713,"./he.js":11713,"./hi":43861,"./hi.js":43861,"./hr":26308,"./hr.js":26308,"./hu":90609,"./hu.js":90609,"./hy-am":17160,"./hy-am.js":17160,"./id":74063,"./id.js":74063,"./is":89374,"./is.js":89374,"./it":88383,"./it-ch":21827,"./it-ch.js":21827,"./it.js":88383,"./ja":23827,"./ja.js":23827,"./jv":89722,"./jv.js":89722,"./ka":41794,"./ka.js":41794,"./kk":27088,"./kk.js":27088,"./km":96870,"./km.js":96870,"./kn":84451,"./kn.js":84451,"./ko":63164,"./ko.js":63164,"./ku":98174,"./ku-kmr":6181,"./ku-kmr.js":6181,"./ku.js":98174,"./ky":78474,"./ky.js":78474,"./lb":79680,"./lb.js":79680,"./lo":15867,"./lo.js":15867,"./lt":45766,"./lt.js":45766,"./lv":69532,"./lv.js":69532,"./me":58076,"./me.js":58076,"./mi":41848,"./mi.js":41848,"./mk":30306,"./mk.js":30306,"./ml":73739,"./ml.js":73739,"./mn":99053,"./mn.js":99053,"./mr":86169,"./mr.js":86169,"./ms":73386,"./ms-my":92297,"./ms-my.js":92297,"./ms.js":73386,"./mt":77075,"./mt.js":77075,"./my":72264,"./my.js":72264,"./nb":22274,"./nb.js":22274,"./ne":8235,"./ne.js":8235,"./nl":92572,"./nl-be":43784,"./nl-be.js":43784,"./nl.js":92572,"./nn":54566,"./nn.js":54566,"./oc-lnc":69330,"./oc-lnc.js":69330,"./pa-in":29849,"./pa-in.js":29849,"./pl":94418,"./pl.js":94418,"./pt":79834,"./pt-br":48303,"./pt-br.js":48303,"./pt.js":79834,"./ro":24457,"./ro.js":24457,"./ru":82271,"./ru.js":82271,"./sd":1221,"./sd.js":1221,"./se":33478,"./se.js":33478,"./si":17538,"./si.js":17538,"./sk":5784,"./sk.js":5784,"./sl":46637,"./sl.js":46637,"./sq":86794,"./sq.js":86794,"./sr":45719,"./sr-cyrl":3322,"./sr-cyrl.js":3322,"./sr.js":45719,"./ss":56e3,"./ss.js":56e3,"./sv":41011,"./sv.js":41011,"./sw":40748,"./sw.js":40748,"./ta":11025,"./ta.js":11025,"./te":11885,"./te.js":11885,"./tet":28861,"./tet.js":28861,"./tg":86571,"./tg.js":86571,"./th":55802,"./th.js":55802,"./tk":59527,"./tk.js":59527,"./tl-ph":29231,"./tl-ph.js":29231,"./tlh":31052,"./tlh.js":31052,"./tr":85096,"./tr.js":85096,"./tzl":79846,"./tzl.js":79846,"./tzm":81765,"./tzm-latn":97711,"./tzm-latn.js":97711,"./tzm.js":81765,"./ug-cn":48414,"./ug-cn.js":48414,"./uk":16618,"./uk.js":16618,"./ur":57777,"./ur.js":57777,"./uz":57609,"./uz-latn":72475,"./uz-latn.js":72475,"./uz.js":57609,"./vi":21135,"./vi.js":21135,"./x-pseudo":64051,"./x-pseudo.js":64051,"./yo":82218,"./yo.js":82218,"./zh-cn":52648,"./zh-cn.js":52648,"./zh-hk":1632,"./zh-hk.js":1632,"./zh-mo":31541,"./zh-mo.js":31541,"./zh-tw":50304,"./zh-tw.js":50304};function s(e){var t=n(e);return a(t)}function n(e){if(!a.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}s.keys=function(){return Object.keys(i)},s.resolve=n,e.exports=s,s.id=35358},505:function(e,t,a){"use strict";a.d(t,{iD:function(){return n},ri:function(){return l},ug:function(){return o}});var i=a(75769),s={Login:"/api/auth/login",Logout:"/api/auth/logout",UserInfo:"/api/auth/info",UserMenu:"/user/nav"};function n(e){return(0,i.Ay)({url:s.Login,method:"post",data:e})}function r(){return(0,i.Ay)({url:s.UserInfo,method:"get",headers:{"Content-Type":"application/json;charset=UTF-8"}})}function o(){return r()}function l(){return(0,i.Ay)({url:s.Logout,method:"post",headers:{"Content-Type":"application/json;charset=UTF-8"}})}},36911:function(e,t,a){"use strict";a.d(t,{EM:function(){return r},GF:function(){return p},KP:function(){return k},Ke:function(){return c},Ox:function(){return l},P7:function(){return d},UH:function(){return g},WM:function(){return o},YX:function(){return S},Yx:function(){return A},kv:function(){return f},mV:function(){return u},oK:function(){return b},tq:function(){return y},ul:function(){return v},v_:function(){return m},xQ:function(){return h}});var i=a(76338),s=a(75769),n={strategies:"/api/strategies",strategyDetail:"/api/strategies/detail",createStrategy:"/api/strategies/create",batchCreateStrategies:"/api/strategies/batch-create",updateStrategy:"/api/strategies/update",stopStrategy:"/api/strategies/stop",startStrategy:"/api/strategies/start",deleteStrategy:"/api/strategies/delete",batchStartStrategies:"/api/strategies/batch-start",batchStopStrategies:"/api/strategies/batch-stop",batchDeleteStrategies:"/api/strategies/batch-delete",testConnection:"/api/strategies/test-connection",trades:"/api/strategies/trades",positions:"/api/strategies/positions",equityCurve:"/api/strategies/equityCurve",notifications:"/api/strategies/notifications",unreadNotificationCount:"/api/strategies/notifications/unread-count",verifyCode:"/api/strategies/verify-code",aiGenerate:"/api/strategies/ai-generate",performance:"/api/strategies/performance",logs:"/api/strategies/logs",backtest:"/api/strategies/backtest",backtestHistory:"/api/strategies/backtest/history",backtestGet:"/api/strategies/backtest/get"};function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:n.strategies,method:"get",params:e})}function o(e){return(0,s.Ay)({url:n.createStrategy,method:"post",data:e})}function l(e){return(0,s.Ay)({url:n.batchCreateStrategies,method:"post",data:e})}function d(e,t){return(0,s.Ay)({url:n.updateStrategy,method:"put",params:{id:e},data:t})}function c(e){return(0,s.Ay)({url:n.stopStrategy,method:"post",params:{id:e}})}function u(e){return(0,s.Ay)({url:n.startStrategy,method:"post",params:{id:e}})}function m(e){return(0,s.Ay)({url:n.deleteStrategy,method:"delete",params:{id:e}})}function g(e){return(0,s.Ay)({url:n.batchStartStrategies,method:"post",data:e})}function p(e){return(0,s.Ay)({url:n.batchStopStrategies,method:"post",data:e})}function h(e){return(0,s.Ay)({url:n.batchDeleteStrategies,method:"delete",data:e})}function f(e){return(0,s.Ay)({url:n.testConnection,method:"post",data:{exchange_config:e}})}function y(e){return(0,s.Ay)({url:n.trades,method:"get",params:{id:e}})}function b(e){return(0,s.Ay)({url:n.positions,method:"get",params:{id:e}})}function A(e){return(0,s.Ay)({url:n.equityCurve,method:"get",params:{id:e}})}function k(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:n.notifications,method:"get",params:e})}function v(){return(0,s.Ay)({url:n.unreadNotificationCount,method:"get"})}function S(e){var t=(0,i.A)({},e||{}),a=t.timeout;return delete t.timeout,(0,s.Ay)({url:n.backtest,method:"post",data:t,timeout:a})}},45958:function(e,t,a){"use strict";var i=a(76338),s=a(1512),n=a(3508),r=a.n(n),o={antLocale:s.A,momentName:"eu",momentLocale:r()},l={"common.confirm":"Confirm","common.cancel":"Cancel","common.save":"Save","common.delete":"Delete","common.edit":"Edit","common.add":"Add","common.close":"Close","common.done":"Done","common.ok":"OK","common.loading":"Loading...","common.noData":"No data","common.yes":"Yes","common.no":"No",submit:"Submit",save:"Save","submit.ok":"Submit successfully","save.ok":"Saved successfully","menu.welcome":"Welcome","menu.home":"Home","menu.dashboard":"Dashboard","menu.dashboard.analysis":"AI Analysis","menu.dashboard.aiAssetAnalysis":"AI Asset Analysis","menu.dashboard.aiQuant":"AI Quant","menu.dashboard.indicator":"Charts & Indicators","menu.dashboard.community":"Indicator Market","menu.dashboard.tradingAssistant":"Strategy & Live","menu.dashboard.backtestCenter":"Backtest Center","menu.dashboard.portfolio":"Portfolio","menu.dashboard.globalMarket":"Global Market","menu.dashboard.polymarket":"Prediction Markets","menu.settings":"Settings","menu.dashboard.aiTradingAssistant":"AI Trading Assistant","menu.dashboard.signalRobot":"Signal Robot","menu.dashboard.monitor":"Monitor","menu.dashboard.workplace":"Workplace","aiAssetAnalysis.title":"AI Asset Analysis","aiAssetAnalysis.subtitle":"Unify portfolio monitoring, instant analysis, and scheduled tasks into one smooth workflow.","aiAssetAnalysis.actions.quickAnalysis":"Start Analysis Now","aiAssetAnalysis.actions.monitorTasks":"Manage Monitor Tasks","aiAssetAnalysis.actions.openStandalone":"Open Standalone Page","aiAssetAnalysis.quickBar.title":"Quick Analyze","aiAssetAnalysis.quickBar.placeholder":"Select a symbol from asset pool","aiAssetAnalysis.quickBar.useInQuick":"Use in Instant Analysis","aiAssetAnalysis.quickBar.runNow":"Analyze Now","aiAssetAnalysis.history.title":"Recent Analysis","aiAssetAnalysis.history.empty":"No analysis history yet","aiAssetAnalysis.actions.enterQuick":"Go to Instant Analysis","aiAssetAnalysis.actions.enterMonitor":"Go to Asset Pool & Tasks","aiAssetAnalysis.flow.poolTitle":"Build Asset Pool","aiAssetAnalysis.flow.poolDesc":"Add positions and watch targets first to build one unified analysis pool.","aiAssetAnalysis.flow.poolAction":"Manage Asset Pool","aiAssetAnalysis.flow.quickTitle":"Instant Analysis","aiAssetAnalysis.flow.quickDesc":"Run AI analysis for any symbol in one click and get suggestions quickly.","aiAssetAnalysis.flow.quickAction":"Run Analysis","aiAssetAnalysis.flow.autoTitle":"Scheduled Monitoring","aiAssetAnalysis.flow.autoDesc":"Set recurring AI analysis tasks and deliver reports through notification channels.","aiAssetAnalysis.flow.autoAction":"Configure Tasks","aiAssetAnalysis.tabs.quick":"Instant Analysis","aiAssetAnalysis.tabs.monitor":"Asset Pool & Scheduled Tasks","aiAssetAnalysis.position.quickAdd":"Quick Position","aiAssetAnalysis.position.needFirst":"Please add a position first before creating a scheduled AI task","aiAssetAnalysis.monitor.quickTask":"Create AI Scheduled Task","aiAssetAnalysis.monitor.interval":"Run Interval (minutes)","aiAssetAnalysis.monitor.tip":"A scheduled AI monitor will be created for current positions of this symbol.","aiAssetAnalysis.monitor.created":"AI scheduled task created","aiAssetAnalysis.monitor.running":"Running","aiAssetAnalysis.monitor.paused":"Paused","aiAssetAnalysis.monitor.toggle":"Toggle Task","aiAssetAnalysis.monitor.nextRun":"Next Run","aiAssetAnalysis.monitor.enabled":"Task enabled","aiAssetAnalysis.monitor.disabled":"Task paused","aiAssetAnalysis.tasks.manage":"Task Manager","aiAssetAnalysis.tasks.empty":"No scheduled tasks yet","aiAssetAnalysis.tasks.pause":"Pause","aiAssetAnalysis.tasks.resume":"Resume","aiAssetAnalysis.tasks.edit":"Edit Task","aiAssetAnalysis.tasks.delete":"Delete","aiAssetAnalysis.tasks.deleteConfirm":"Are you sure you want to delete this task? This action cannot be undone.","aiAssetAnalysis.tasks.deleted":"Task deleted","aiAssetAnalysis.tasks.paused":"Task paused","aiAssetAnalysis.tasks.resumed":"Task resumed","aiAssetAnalysis.tasks.name":"Task Name","aiAssetAnalysis.watchlist.summary":"Portfolio Summary","aiAssetAnalysis.watchlist.totalAssets":"Assets","aiAssetAnalysis.watchlist.totalPnl":"Total P&L","aiAssetAnalysis.watchlist.positionCount":"Positions","aiAssetAnalysis.watchlist.taskCount":"Tasks","aiAssetAnalysis.batch.selectAll":"Select All","aiAssetAnalysis.batch.deselectAll":"Deselect All","aiAssetAnalysis.batch.schedule":"Batch Schedule","aiAssetAnalysis.batch.scheduleTitle":"Create Batch Scheduled Analysis","aiAssetAnalysis.batch.scheduleDesc":"Will create scheduled AI analysis tasks for {count} selected symbols. Reports will be auto-generated and pushed on schedule.","aiAssetAnalysis.batch.intervalLabel":"Analysis Interval","aiAssetAnalysis.batch.interval1h":"Every 1 hour","aiAssetAnalysis.batch.interval4h":"Every 4 hours","aiAssetAnalysis.batch.interval12h":"Every 12 hours","aiAssetAnalysis.batch.interval24h":"Every 24 hours","aiAssetAnalysis.batch.notifyLabel":"Notification Channels (push after analysis)","aiAssetAnalysis.batch.scheduleTip":"Tasks start automatically once created. You can pause/resume them anytime from the watchlist.","aiAssetAnalysis.batch.done":"Batch scheduled tasks created","aiAssetAnalysis.placeholder.title":"AI Analysis Engine","aiAssetAnalysis.placeholder.subtitle":"Multi-source data driven · Institutional-grade insights · Real-time market pulse","aiAssetAnalysis.placeholder.feature1":"Multi-horizon Outlook","aiAssetAnalysis.placeholder.feature1Desc":"Blends 4 timeframe AI consensus","aiAssetAnalysis.placeholder.feature2":"Pro Indicator Matrix","aiAssetAnalysis.placeholder.feature2Desc":"Institutional-grade quant metrics","aiAssetAnalysis.placeholder.feature3":"Watchlist Synergy","aiAssetAnalysis.placeholder.feature3Desc":"1-click position & smart monitoring","aiAssetAnalysis.placeholder.quickStart":"Pick a symbol from the watchlist on the right, or quick-start below","fastAnalysis.multiPeriodTitle":"Multi-horizon Forecast","fastAnalysis.technicalIndicatorsTitle":"Pro Indicator Matrix","aiAssetAnalysis.tabLead.quick":"Best for ad-hoc decisions: select a symbol and analyze immediately.","aiAssetAnalysis.tabLead.monitor":"Best for continuous tracking: maintain positions and set monitor ranges/frequency.","aiAssetAnalysis.stats.totalAnalyses":"Total Analyses","aiAssetAnalysis.stats.accuracy":"Accuracy","aiAssetAnalysis.stats.avgReturn":"Avg Return","aiAssetAnalysis.stats.satisfaction":"Satisfaction","aiAssetAnalysis.stats.decisions":"Decision Dist.","aiAssetAnalysis.opportunities.title":"AI Opportunity Radar","aiAssetAnalysis.opportunities.empty":"No opportunities found","aiAssetAnalysis.opportunities.analyze":"Analyze","aiAssetAnalysis.opportunities.updateHint":"Updates hourly","aiAssetAnalysis.opportunities.signal.overbought":"Overbought","aiAssetAnalysis.opportunities.signal.oversold":"Oversold","aiAssetAnalysis.opportunities.signal.bullish_momentum":"Bullish","aiAssetAnalysis.opportunities.signal.bearish_momentum":"Bearish","aiAssetAnalysis.opportunities.market.Crypto":"🪙 Crypto","aiAssetAnalysis.opportunities.market.USStock":"📈 US Stock","aiAssetAnalysis.opportunities.market.CNStock":"🇨🇳 A Shares","aiAssetAnalysis.opportunities.market.HKStock":"🇭🇰 Hong Kong","aiAssetAnalysis.opportunities.market.Forex":"💱 Forex","aiAssetAnalysis.opportunities.market.PredictionMarket":"🎯 Prediction Market","aiAssetAnalysis.opportunities.reason.crypto.overbought":"24h +{change}%, 7d +{change7d}%, overbought risk","aiAssetAnalysis.opportunities.reason.crypto.bullish_momentum":"24h +{change}%, strong bullish momentum","aiAssetAnalysis.opportunities.reason.crypto.oversold":"24h -{change}%, possible oversold bounce","aiAssetAnalysis.opportunities.reason.crypto.bearish_momentum":"24h -{change}%, clear bearish trend","aiAssetAnalysis.opportunities.reason.usstock.overbought":"Day +{change}%, large gain, watch for pullback","aiAssetAnalysis.opportunities.reason.usstock.bullish_momentum":"Day +{change}%, strong bullish momentum","aiAssetAnalysis.opportunities.reason.usstock.oversold":"Day -{change}%, possible oversold bounce","aiAssetAnalysis.opportunities.reason.usstock.bearish_momentum":"Day -{change}%, clear bearish trend","aiAssetAnalysis.opportunities.reason.cnstock.overbought":"A-share day +{change}%, large gain, watch for pullback","aiAssetAnalysis.opportunities.reason.cnstock.bullish_momentum":"A-share day +{change}%, bullish momentum","aiAssetAnalysis.opportunities.reason.cnstock.oversold":"A-share day -{change}%, possible oversold bounce","aiAssetAnalysis.opportunities.reason.cnstock.bearish_momentum":"A-share day -{change}%, clear bearish trend","aiAssetAnalysis.opportunities.reason.hkstock.overbought":"HK stock day +{change}%, large gain, watch for pullback","aiAssetAnalysis.opportunities.reason.hkstock.bullish_momentum":"HK stock day +{change}%, bullish momentum","aiAssetAnalysis.opportunities.reason.hkstock.oversold":"HK stock day -{change}%, possible oversold bounce","aiAssetAnalysis.opportunities.reason.hkstock.bearish_momentum":"HK stock day -{change}%, clear bearish trend","aiAssetAnalysis.opportunities.reason.forex.overbought":"Day +{change}%, volatile, watch for reversal","aiAssetAnalysis.opportunities.reason.forex.bullish_momentum":"Day +{change}%, bullish momentum","aiAssetAnalysis.opportunities.reason.forex.oversold":"Day -{change}%, volatile, possible bounce","aiAssetAnalysis.opportunities.reason.forex.bearish_momentum":"Day -{change}%, clear bearish trend","aiAssetAnalysis.checkup.title":"Portfolio Checkup","aiAssetAnalysis.checkup.btn":"Checkup","aiAssetAnalysis.checkup.desc":"Run AI analysis on all positions in your portfolio to quickly understand the current status and get recommendations for each asset.","aiAssetAnalysis.checkup.start":"Start Checkup","aiAssetAnalysis.checkup.progress":"Analyzing {current}/{total}...","aiAssetAnalysis.checkup.noPositions":"No positions in your portfolio. Please add assets first.","aiAssetAnalysis.checkup.complete":"Checkup Complete","aiAssetAnalysis.checkup.failed":"Failed","aiAssetAnalysis.checkup.rerun":"Run Again","aiAssetAnalysis.search.hint":"Search","aiAssetAnalysis.search.placeholder":"Search any symbol... (Ctrl+K)","aiAssetAnalysis.search.noResults":"No results found. Try a different keyword.","menu.form":"Form","menu.form.basic-form":"Basic Form","menu.form.step-form":"Step Form","menu.form.step-form.info":"Step Form(write transfer information)","menu.form.step-form.confirm":"Step Form(confirm transfer information)","menu.form.step-form.result":"Step Form(finished)","menu.form.advanced-form":"Advanced Form","menu.list":"List","menu.list.table-list":"Search Table","menu.list.basic-list":"Basic List","menu.list.card-list":"Card List","menu.list.search-list":"Search List","menu.list.search-list.articles":"Search List(articles)","menu.list.search-list.projects":"Search List(projects)","menu.list.search-list.applications":"Search List(applications)","menu.profile":"Profile","menu.profile.basic":"Basic Profile","menu.profile.advanced":"Advanced Profile","menu.result":"Result","menu.result.success":"Success","menu.result.fail":"Fail","menu.exception":"Exception","menu.exception.not-permission":"403","menu.exception.not-find":"404","menu.exception.server-error":"500","menu.exception.trigger":"Trigger","menu.account":"Account","menu.account.center":"Account Center","menu.account.settings":"Account Settings","menu.account.trigger":"Trigger Error","menu.account.logout":"Logout","menu.wallet":"My Wallet","menu.docs":"Documentation","menu.docs.detail":"Doc Detail","menu.header.refreshPage":"Refresh Page","menu.invite.friends":"Invite Friends","app.setting.pagestyle":"Page Style Setting","app.setting.pagestyle.light":"Light Menu Style","app.setting.pagestyle.dark":"Dark Menu Style","app.setting.pagestyle.realdark":"RealDark style","app.setting.themecolor":"Theme Color","app.setting.navigationmode":"Navigation Mode","app.setting.sidemenu.nav":"Sidebar Navigation","app.setting.topmenu.nav":"Top Navigation","app.setting.content-width":"Content Width","app.setting.content-width.tooltip":"This setting is only effective for [Top Navigation]","app.setting.content-width.fixed":"Fixed","app.setting.content-width.fluid":"Fluid","app.setting.fixedheader":"Fixed Header","app.setting.fixedheader.tooltip":"Configurable when Header is fixed","app.setting.autoHideHeader":"Hide Header on Scroll","app.setting.fixedsidebar":"Fixed Sidebar Menu","app.setting.sidemenu":"Side Menu Layout","app.setting.topmenu":"Top Menu Layout","app.setting.othersettings":"Other Settings","app.setting.weakmode":"Weak Mode","app.setting.multitab":"Multi-Tab Mode","app.setting.copy":"Copy Setting","app.setting.loading":"Loading theme","app.setting.copyinfo":"copy success,please replace defaultSettings in src/config/defaultSettings.js","app.setting.copy.success":"Copy Success","app.setting.copy.fail":"Copy Failed","app.setting.theme.switching":"Switching theme...","app.setting.production.hint":"Setting panel shows in development environment only, please manually modify","app.setting.themecolor.daybreak":"Daybreak Blue (Default)","app.setting.themecolor.dust":"Dust Red","app.setting.themecolor.volcano":"Volcano","app.setting.themecolor.sunset":"Sunset Orange","app.setting.themecolor.cyan":"Cyan","app.setting.themecolor.green":"Polar Green","app.setting.themecolor.geekblue":"Geek Blue","app.setting.themecolor.purple":"Golden Purple","app.setting.tooltip":"Page Settings","notice.title":"Notifications","notice.empty":"No notifications","notice.markAllRead":"Mark all as read","notice.clear":"Clear all","notice.close":"Close","notice.justNow":"Just now","notice.minutesAgo":"minutes ago","notice.hoursAgo":"hours ago","notice.daysAgo":"days ago","notice.detailInfo":"Details","notice.aiDecision":"AI Decision","notice.confidence":"Confidence","notice.reasoning":"Reasoning","notice.symbol":"Symbol","notice.currentPrice":"Current Price","notice.triggerPrice":"Trigger Price","notice.action":"Action","notice.quantity":"Quantity","notice.viewPortfolio":"View Portfolio","notice.type.aiMonitor":"AI Monitor","notice.type.priceAlert":"Price Alert","notice.type.signal":"Trade Signal","notice.type.buy":"Buy Signal","notice.type.sell":"Sell Signal","notice.type.hold":"Hold Suggestion","notice.type.trade":"Trade Execution","notice.type.notification":"Notification","user.login.userName":"userName","user.login.password":"password","user.login.username.placeholder":"Account: admin","user.login.password.placeholder":"password: admin or ant.design","user.login.message-invalid-credentials":"Login failed, please check your email and verification code","user.login.message-invalid-verification-code":"Invalid verification code","user.login.tab-login-credentials":"Credentials","user.login.tab-login-email":"Email","user.login.tab-login-mobile":"Mobile number","user.login.captcha.placeholder":"Please enter captcha","user.login.mobile.placeholder":"Mobile number","user.login.mobile.verification-code.placeholder":"Verification code","user.login.email.placeholder":"Please enter your email address","user.login.email.verification-code.placeholder":"Please enter verification code","user.login.email.sending":"Sending verification code...","user.login.email.send-success-title":"Notice","user.login.email.send-success":"Verification code sent successfully, please check your email","user.login.sms.send-success":"Verification code sent successfully, please check your SMS","user.login.remember-me":"Remember me","user.login.forgot-password":"Forgot your password?","user.login.sign-in-with":"Sign in with","user.login.signup":"Sign up","user.login.login":"Login","user.register.register":"Register","user.register.email.placeholder":"Email","user.register.password.placeholder":"Password ","user.register.password.popover-message":"Please enter at least 6 characters. Please do not use passwords that are easy to guess. ","user.register.confirm-password.placeholder":"Confirm password","user.register.get-verification-code":"Get code","user.register.sign-in":"Already have an account?","user.register-result.msg":"Account:registered at {email}","user.register-result.activation-email":"The activation email has been sent to your email address and is valid for 24 hours. Please log in to the email in time and click on the link in the email to activate the account.","user.register-result.back-home":"Back to home","user.register-result.view-mailbox":"View mailbox","user.email.required":"Please enter your email!","user.email.wrong-format":"The email address is in the wrong format!","user.userName.required":"Please enter account name or email address","user.password.required":"Please enter your password!","user.password.twice.msg":"The passwords entered twice do not match!","user.password.strength.msg":"The password is not strong enough","user.password.strength.strong":"Strength: strong","user.password.strength.medium":"Strength: medium","user.password.strength.low":"Strength: low","user.password.strength.short":"Strength: too short","user.confirm-password.required":"Please confirm your password!","user.phone-number.required":"Please enter your phone number!","user.phone-number.wrong-format":"Please enter a valid phone number","user.verification-code.required":"Please enter the verification code!","user.captcha.required":"Please enter captcha!","user.login.infos":"QuantDinger is an AI multi-agent stock analysis tool that does not have securities investment consulting qualifications. All analysis results, scores, and reference opinions on the platform are automatically generated by AI based on historical data, and are only for learning, research, and technical exchanges, and do not constitute any investment advice or decision-making basis. Stock investment involves market risk, liquidity risk, policy risk and other risks, which may lead to losses of principal. Users should make independent decisions based on their risk tolerance capacity, and bear the consequences of any investment behavior and its results using this tool. Market risk, investment needs to be cautious.","user.login.tab-login-web3":"Web3 Login","user.login.web3.tip":"Sign in with your wallet via signature","user.login.web3.connect":"Connect wallet and login","user.login.web3.no-wallet":"No wallet detected","user.login.web3.no-address":"Wallet address not found","user.login.web3.nonce-failed":"Failed to get nonce","user.login.web3.verify-failed":"Signature verification failed","user.login.web3.success":"Login success","user.login.web3.failed":"Wallet login failed","nav.no_wallet":"No wallet detected","nav.copy":"Copy","nav.copy_success":"Copied","user.login.oauth.google":"Sign in with Google","user.login.oauth.github":"Sign in with GitHub","user.login.oauth.loading":"Redirecting to authorization page...","user.login.oauth.failed":"OAuth login failed","user.login.oauth.get-url-failed":"Failed to get authorization URL","user.login.subtitle":"driven quantitative insights for global markets","user.login.legal.title":"Legal Disclaimer","user.login.legal.view":"View Legal Disclaimer","user.login.legal.collapse":"Hide Legal Disclaimer","user.login.legal.agree":"I have read and agree to the Legal Disclaimer","user.login.legal.required":"Please read and check the Legal Disclaimer first","user.login.legal.content":"QuantDinger is an AI multi-agent stock analysis tool and does not provide investment advice. All analysis results, scores, and references are generated by AI based on historical data and are for learning, research, and technical exchange only. They do not constitute investment advice or a basis for decision-making. Stock investments involve market, liquidity, and policy risks, which may lead to loss of principal. Users should make independent decisions based on their risk tolerance and bear the consequences of any investment behavior and results using this tool.","user.login.privacy.title":"Privacy Policy","user.login.privacy.view":"View Privacy Policy","user.login.privacy.collapse":"Hide Privacy Policy","user.login.privacy.content":"We value your privacy and data protection. (1) Scope of collection: We only collect information necessary to provide the service (e.g., email, mobile number, country code, Web3 wallet address) and limited logs/device data. (2) Purpose of use: Account login and security verification, feature provisioning, troubleshooting, and compliance requirements. (3) Storage & security: Data is encrypted and access-controlled to prevent unauthorized access, disclosure, or loss. (4) Sharing & third parties: We do not share personal data with third parties except as required by law or to deliver the service; where third-party services are involved (e.g., wallets, SMS providers), processing is limited to the minimum scope required. (5) Cookies/local storage: Used for session and login state (e.g., tokens, PHPSESSID). You may clear or restrict them in your browser. (6) Your rights: You may exercise rights of access, correction, deletion, and consent withdrawal as permitted by law. (7) Changes & notices: We will provide prominent notice for updates. Continued use indicates that you have read and agreed to the updated terms. If you do not agree, please stop using the service and contact us.","user.login.username":"Username","user.login.usernameRequired":"Please enter username","user.login.passwordRequired":"Please enter password","user.login.tab":"Login","user.login.submit":"Login","user.login.register":"Create Account","user.login.forgotPassword":"Forgot Password?","user.login.orLoginWith":"Or login with","user.login.methodPassword":"Password","user.login.methodCode":"Email Code","user.login.email":"Email","user.login.emailRequired":"Please enter email","user.login.emailInvalid":"Invalid email format","user.login.verificationCode":"Verification Code","user.login.codeRequired":"Please enter verification code","user.login.sendCode":"Send","user.login.codeSent":"Verification code sent","user.login.codeLoginHint":"New users will be auto-registered","user.login.welcomeNew":"Welcome!","user.login.accountCreated":"Your account has been created","user.oauth.processing":"Processing login...","user.oauth.error.missing_params":"Missing required parameters","user.oauth.error.invalid_state":"Invalid state parameter","user.oauth.error.user_creation_failed":"Failed to create user","user.oauth.error.server_error":"Server error","user.register.tab":"Register","user.register.title":"Create Account","user.register.email":"Email","user.register.emailRequired":"Please enter email","user.register.emailInvalid":"Invalid email format","user.register.verificationCode":"Verification Code","user.register.codeRequired":"Please enter verification code","user.register.sendCode":"Send Code","user.register.codeSent":"Verification code sent","user.register.username":"Username","user.register.usernameRequired":"Please enter username","user.register.usernameLength":"Username must be 3-30 characters","user.register.usernamePattern":"Start with letter, letters/numbers/underscore only","user.register.password":"Password","user.register.passwordRequired":"Please enter password","user.register.confirmPassword":"Confirm Password","user.register.confirmPasswordRequired":"Please confirm password","user.register.passwordMismatch":"Passwords do not match","user.register.submit":"Create Account","user.register.haveAccount":"Already have an account?","user.register.login":"Login","user.register.success":"Registration successful","user.register.pleaseLogin":"Please login with your new account","user.register.pwdMinLength":"At least 8 characters","user.register.pwdUppercase":"At least one uppercase letter","user.register.pwdLowercase":"At least one lowercase letter","user.register.pwdNumber":"At least one number","user.resetPassword.title":"Reset Password","user.resetPassword.email":"Email","user.resetPassword.emailRequired":"Please enter email","user.resetPassword.emailInvalid":"Invalid email format","user.resetPassword.verificationCode":"Verification Code","user.resetPassword.codeRequired":"Please enter verification code","user.resetPassword.sendCode":"Send Code","user.resetPassword.codeSent":"Verification code sent","user.resetPassword.next":"Next","user.resetPassword.backToLogin":"Back to Login","user.resetPassword.resettingFor":"Resetting password for","user.resetPassword.newPassword":"New Password","user.resetPassword.passwordRequired":"Please enter new password","user.resetPassword.confirmPassword":"Confirm New Password","user.resetPassword.confirmPasswordRequired":"Please confirm password","user.resetPassword.submit":"Reset Password","user.resetPassword.back":"Back","user.resetPassword.successTitle":"Password Reset Successful","user.resetPassword.successSubtitle":"You can now login with your new password","user.resetPassword.goToLogin":"Go to Login","user.security.retry":"Retry","profile.passwordHintNew":"For security, email verification is required to change password. Password must be at least 8 characters with uppercase, lowercase, and number.","profile.verificationCode":"Verification Code","profile.codeRequired":"Please enter verification code","profile.codePlaceholder":"Enter verification code","profile.sendCode":"Send Code","profile.codeSent":"Verification code sent","profile.codeWillSendTo":"Code will be sent to","profile.noEmailWarning":"Please set your email first in Basic Info tab","account.basicInfo":"Basic Information","account.id":"User ID","account.username":"Username","account.nickname":"Nickname","account.email":"Email","account.mobile":"Mobile","account.web3address":"Wallet Address","account.pid":"Referrer ID","account.level":"Level","account.money":"Balance","account.qdtBalance":"QDT Balance","account.score":"Score","account.createtime":"Registration Time","account.inviteLink":"Invite Link","account.recharge":"Recharge","account.rechargeTip":"Please scan the QR code below with WeChat or Alipay to recharge","account.qrCodePlaceholder":"QR Code Placeholder (Mock)","account.rechargeAmount":"Recharge Amount","account.enterAmount":"Please enter recharge amount","account.rechargeHint":"Minimum recharge amount: 1 QDT","account.confirmRecharge":"Confirm Recharge","account.enterValidAmount":"Please enter a valid recharge amount","account.rechargeSuccess":"Recharge successful! Recharged {amount} QDT","account.settings.menuMap.basic":"Basic Settings","account.settings.menuMap.security":"Security Settings","account.settings.menuMap.notification":"New Message Notification","account.settings.menuMap.moneyLog":"Transaction History","account.moneyLog.empty":"No transaction history","account.moneyLog.total":"Total {total} records","account.moneyLog.type.purchase":"Purchase Indicator","account.moneyLog.type.recharge":"Recharge","account.moneyLog.type.refund":"Refund","account.moneyLog.type.reward":"Reward","account.moneyLog.type.income":"Indicator Income","account.moneyLog.type.commission":"Platform Fee","wallet.balance":"QDT Balance","wallet.recharge":"Recharge","wallet.withdraw":"Withdraw","wallet.filter":"Filter","wallet.reset":"Reset","wallet.totalRecharge":"Total Recharge","wallet.totalWithdraw":"Total Withdraw","wallet.totalIncome":"Total Income","wallet.records":"Trading Records & Transaction History","wallet.tradingRecords":"Trading Records","wallet.moneyLog":"Transaction History","wallet.rechargeTip":"Please scan the QR code below with WeChat or Alipay to recharge","wallet.qrCodePlaceholder":"QR Code Placeholder (Simulated)","wallet.rechargeAmount":"Recharge Amount","wallet.enterAmount":"Please enter recharge amount","wallet.rechargeHint":"Minimum recharge amount: 1 QDT","wallet.confirmRecharge":"Confirm Recharge","wallet.enterValidAmount":"Please enter a valid recharge amount","wallet.rechargeSuccess":"Recharge successful! Recharged {amount} QDT","wallet.rechargeFailed":"Recharge failed","wallet.withdrawTip":"Please enter withdrawal amount and address","wallet.withdrawAmount":"Withdrawal Amount","wallet.enterWithdrawAmount":"Please enter withdrawal amount","wallet.withdrawHint":"Minimum withdrawal amount: 1 QDT","wallet.withdrawAddress":"Withdrawal Address (Optional)","wallet.enterWithdrawAddress":"Please enter withdrawal address","wallet.confirmWithdraw":"Confirm Withdrawal","wallet.enterValidWithdrawAmount":"Please enter a valid withdrawal amount","wallet.insufficientBalance":"Insufficient balance","wallet.withdrawSuccess":"Withdrawal successful! Withdrew {amount} QDT","wallet.withdrawFailed":"Withdrawal failed","wallet.noTradingRecords":"No trading records","wallet.noMoneyLog":"No transaction history","wallet.loadTradingRecordsFailed":"Failed to load trading records","wallet.loadMoneyLogFailed":"Failed to load transaction history","wallet.moneyLogTotal":"Total {total} records","wallet.moneyLogTypeTitle":"Type","wallet.moneyLogType.all":"All types","wallet.table.time":"Time","wallet.table.type":"Type","wallet.table.price":"Price","wallet.table.amount":"Amount","wallet.table.money":"Amount","wallet.table.balance":"Balance","wallet.table.memo":"Memo","wallet.table.value":"Value","wallet.table.profit":"P/L","wallet.table.commission":"Commission","wallet.table.total":"Total {total} records","wallet.tradeType.buy":"Buy","wallet.tradeType.sell":"Sell","wallet.tradeType.liquidation":"Liquidation","wallet.tradeType.openLong":"Open Long","wallet.tradeType.addLong":"Add Long","wallet.tradeType.closeLong":"Close Long","wallet.tradeType.closeLongStop":"Stop Loss Close Long","wallet.tradeType.closeLongProfit":"Take Profit Close Long","wallet.tradeType.openShort":"Open Short","wallet.tradeType.addShort":"Add Short","wallet.tradeType.closeShort":"Close Short","wallet.tradeType.closeShortStop":"Stop Loss Close Short","wallet.tradeType.closeShortProfit":"Take Profit Close Short","wallet.moneyLogType.purchase":"Purchase Indicator","wallet.moneyLogType.recharge":"Recharge","wallet.moneyLogType.withdraw":"Withdraw","wallet.moneyLogType.refund":"Refund","wallet.moneyLogType.reward":"Reward","wallet.moneyLogType.income":"Income","wallet.moneyLogType.commission":"Commission","wallet.web3Address.required":"Please fill in Web3 wallet address first","wallet.web3Address.requiredDescription":"You need to bind your Web3 wallet address before recharging to receive deposits","wallet.web3Address.placeholder":"Please enter your Web3 wallet address (starts with 0x)","wallet.web3Address.save":"Save Wallet Address","wallet.web3Address.saveSuccess":"Wallet address saved successfully","wallet.web3Address.saveFailed":"Failed to save wallet address","wallet.web3Address.invalidFormat":"Please enter a valid Web3 wallet address (Ethereum format: 42 characters starting with 0x, or TRC20 format: 34 characters starting with T)","wallet.selectCoin":"Select Coin","wallet.selectChain":"Select Chain","wallet.chain.eth":"ETH(ERC20)","wallet.chain.trc20":"TRC20","wallet.chain.bsc":"BSC","wallet.targetQdtAmount":"Target QDT Amount (Optional)","wallet.targetQdtAmount.placeholder":"Enter the QDT amount you want to exchange, current QDT price: {price} USDT","wallet.targetQdtAmount.requiredUsdt":"Required USDT: {amount}","wallet.rechargeAddress":"Recharge Address","wallet.copyAddress":"Copy","wallet.copySuccess":"Copied successfully!","wallet.copyFailed":"Copy failed, please copy manually","wallet.rechargeAddressHint":"Please ensure you use {chain} chain to recharge {coin} to this address","wallet.qdtPrice.loading":"Loading...","wallet.rechargeTip.new":"Please select coin and chain, then scan the QR code below to recharge","wallet.exchangeRate":"1 QDT ≈ {rate} USDT","wallet.withdrawableAmount":"Withdrawable Amount","wallet.totalBalance":"Total Balance","wallet.insufficientWithdrawable":"Insufficient withdrawable amount, current withdrawable: {amount} QDT","wallet.withdrawAddressRequired":"Please enter withdrawal address","wallet.withdrawAddressHint":"Please ensure the address is correct, withdrawal cannot be revoked","wallet.withdrawSubmitSuccess":"Withdrawal application submitted successfully, please wait for review","menu.footer.contactUs":"Contact Us","menu.footer.getSupport":"Get Support","menu.footer.socialAccounts":"Social Accounts","menu.footer.userAgreement":"User Agreement","menu.footer.privacyPolicy":"Privacy Policy","menu.footer.support":"Support","menu.footer.featureRequest":"Feature request","menu.footer.email":"Email","menu.footer.liveChat":"24/7 live chat","dashboard.analysis.title":"Multi-Dimensional Analysis","dashboard.analysis.subtitle":"AI-Powered Comprehensive Financial Analysis Platform","dashboard.analysis.selectSymbol":"Select or enter symbol code","dashboard.analysis.selectModel":"Select Model","dashboard.analysis.startAnalysis":"Start Analysis","dashboard.analysis.history":"History","dashboard.analysis.tab.overview":"Overview","dashboard.analysis.tab.fundamental":"Fundamental","dashboard.analysis.tab.technical":"Technical","dashboard.analysis.tab.news":"News","dashboard.analysis.tab.sentiment":"Sentiment","dashboard.analysis.tab.risk":"Risk","dashboard.analysis.tab.debate":"Debate","dashboard.analysis.tab.decision":"Final Decision","dashboard.analysis.empty.selectSymbol":"Select Symbol to Start Analysis","dashboard.analysis.empty.selectSymbolDesc":"Select from watchlist or enter symbol code to get multi-dimensional AI analysis report","dashboard.analysis.empty.startAnalysis":'Click "Start Analysis" button to perform multi-dimensional analysis',"dashboard.analysis.empty.startAnalysisDesc":"We will provide comprehensive analysis from multiple dimensions including fundamental, technical, news, sentiment and risk","dashboard.analysis.empty.noData":"No {type} analysis data available, please perform comprehensive analysis first","dashboard.analysis.empty.noWatchlist":"No watchlist items","dashboard.analysis.empty.noHistory":"No history records","dashboard.analysis.empty.watchlistHint":"No watchlist, please","dashboard.analysis.empty.noDebateData":"No debate data available","dashboard.analysis.empty.noDecisionData":"No decision data available","dashboard.analysis.empty.selectAgent":"Please select an Agent to view analysis results","dashboard.analysis.loading.analyzing":"Analyzing, please wait...","dashboard.analysis.loading.fundamental":"Analyzing fundamental data...","dashboard.analysis.loading.technical":"Analyzing technical indicators...","dashboard.analysis.loading.news":"Analyzing news data...","dashboard.analysis.loading.sentiment":"Analyzing market sentiment...","dashboard.analysis.loading.risk":"Assessing risks...","dashboard.analysis.loading.debate":"Debating...","dashboard.analysis.loading.decision":"Generating final decision...","dashboard.analysis.score.overall":"Overall Score","dashboard.analysis.score.recommendation":"Recommendation","dashboard.analysis.score.confidence":"Confidence","dashboard.analysis.dimension.fundamental":"Fundamental","dashboard.analysis.dimension.technical":"Technical","dashboard.analysis.dimension.news":"News","dashboard.analysis.dimension.sentiment":"Sentiment","dashboard.analysis.dimension.risk":"Risk","dashboard.analysis.card.dimensionScores":"Dimension Scores","dashboard.analysis.card.overviewReport":"Overview Report","dashboard.analysis.card.financialMetrics":"Financial Metrics","dashboard.analysis.card.fundamentalReport":"Fundamental Analysis Report","dashboard.analysis.card.technicalIndicators":"Technical Indicators","dashboard.analysis.card.technicalReport":"Technical Analysis Report","dashboard.analysis.card.newsList":"Related News","dashboard.analysis.card.newsReport":"News Analysis Report","dashboard.analysis.card.sentimentIndicators":"Sentiment Indicators","dashboard.analysis.card.sentimentReport":"Sentiment Analysis Report","dashboard.analysis.card.riskMetrics":"Risk Metrics","dashboard.analysis.card.riskReport":"Risk Assessment Report","dashboard.analysis.card.bullView":"Bullish View (Bull)","dashboard.analysis.card.bearView":"Bearish View (Bear)","dashboard.analysis.card.researchConclusion":"Researcher Conclusion","dashboard.analysis.card.traderPlan":"Trader Plan","dashboard.analysis.card.riskDebate":"Risk Committee Debate","dashboard.analysis.card.finalDecision":"Final Decision","dashboard.analysis.card.tradePlanDetail":"Trading Plan Details","dashboard.analysis.tradingPlan.entry_price":"Entry Price","dashboard.analysis.tradingPlan.position_size":"Position Size","dashboard.analysis.tradingPlan.stop_loss":"Stop Loss","dashboard.analysis.tradingPlan.take_profit":"Take Profit","dashboard.analysis.label.confidence":"Confidence","dashboard.analysis.label.keyPoints":"Key Points","dashboard.analysis.label.riskWarning":"Risk Warning","dashboard.analysis.risk.risky":"Aggressive View (Risky)","dashboard.analysis.risk.neutral":"Neutral View (Neutral)","dashboard.analysis.risk.safe":"Conservative View (Safe)","dashboard.analysis.risk.conclusion":"Conclusion","dashboard.analysis.feature.fundamental":"Fundamental Analysis","dashboard.analysis.feature.technical":"Technical Analysis","dashboard.analysis.feature.news":"News Analysis","dashboard.analysis.feature.sentiment":"Sentiment Analysis","dashboard.analysis.feature.risk":"Risk Assessment","dashboard.analysis.watchlist.title":"My Watchlist","dashboard.analysis.watchlist.add":"Add","dashboard.analysis.watchlist.addStock":"Add Stock","dashboard.analysis.modal.addStock.title":"Add to Watchlist","dashboard.analysis.modal.addStock.confirm":"Confirm","dashboard.analysis.modal.addStock.cancel":"Cancel","dashboard.analysis.modal.addStock.market":"Market Type","dashboard.analysis.modal.addStock.marketPlaceholder":"Please select market","dashboard.analysis.modal.addStock.marketRequired":"Please select market type","dashboard.analysis.modal.addStock.symbol":"Symbol","dashboard.analysis.modal.addStock.symbolPlaceholder":"e.g.: AAPL, TSLA, GOOGL, 000001, BTC","dashboard.analysis.modal.addStock.symbolRequired":"Please enter symbol code","dashboard.analysis.modal.addStock.searchPlaceholder":"Search symbol code or name","dashboard.analysis.modal.addStock.searchOrInputPlaceholder":"Search or enter symbol code (e.g.: AAPL, BTC/USDT, EUR/USD)","dashboard.analysis.modal.addStock.searchOrInputHint":"Search in database or enter code directly (name will be fetched automatically)","dashboard.analysis.modal.addStock.search":"Search","dashboard.analysis.modal.addStock.searchResults":"Search Results","dashboard.analysis.modal.addStock.hotSymbols":"Hot Symbols","dashboard.analysis.modal.addStock.noHotSymbols":"No hot symbols available","dashboard.analysis.modal.addStock.selectedSymbol":"Selected Symbol","dashboard.analysis.modal.addStock.pleaseSelectSymbol":"Please select a symbol first","dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol":"Please select a symbol or enter symbol code","dashboard.analysis.modal.addStock.pleaseEnterSymbol":"Please enter symbol code","dashboard.analysis.modal.addStock.pleaseSelectMarket":"Please select market type first","dashboard.analysis.modal.addStock.searchFailed":"Search failed, please try again later","dashboard.analysis.modal.addStock.noSearchResults":"No matching symbols found","dashboard.analysis.modal.addStock.willAutoFetchName":"Name will be fetched automatically","dashboard.analysis.modal.addStock.addDirectly":"Add Directly","dashboard.analysis.modal.addStock.nameWillBeFetched":"Name will be fetched automatically when adding","dashboard.analysis.market.USStock":"US Stock","dashboard.analysis.market.CNStock":"A-Shares","dashboard.analysis.market.HKStock":"HK Stocks","dashboard.analysis.market.Crypto":"Cryptocurrency","dashboard.analysis.market.Forex":"Forex","dashboard.analysis.market.Futures":"Futures","dashboard.analysis.modal.history.title":"Analysis History","dashboard.analysis.modal.history.viewResult":"View Result","dashboard.analysis.modal.history.completeTime":"Complete Time","dashboard.analysis.modal.history.error":"Error","dashboard.analysis.status.pending":"Pending","dashboard.analysis.status.processing":"Processing","dashboard.analysis.status.completed":"Completed","dashboard.analysis.status.failed":"Failed","dashboard.analysis.message.selectSymbol":"Please select a symbol first","dashboard.analysis.message.taskCreated":"Analysis task created, executing in background...","dashboard.analysis.message.analysisComplete":"Analysis Complete","dashboard.analysis.message.analysisCompleteCache":"Analysis Complete (Using Cache)","dashboard.analysis.message.analysisFailed":"Analysis failed, please try again later","dashboard.analysis.message.addStockSuccess":"Added successfully","dashboard.analysis.message.addStockFailed":"Failed to add","dashboard.analysis.message.removeStockSuccess":"Removed successfully","dashboard.analysis.message.removeStockFailed":"Failed to remove","dashboard.analysis.message.resumingAnalysis":"Resuming analysis task...","dashboard.analysis.message.deleteSuccess":"Deleted successfully","dashboard.analysis.message.deleteFailed":"Failed to delete","dashboard.analysis.modal.history.delete":"Delete","dashboard.analysis.modal.history.deleteConfirm":"Are you sure you want to delete this analysis record?","dashboard.analysis.test":"Gongzhuan No.{no} shop","dashboard.analysis.introduce":"Introduce","dashboard.analysis.total-sales":"Total Sales","dashboard.analysis.day-sales":"Daily Sales","dashboard.analysis.visits":"Visits","dashboard.analysis.visits-trend":"Visits Trend","dashboard.analysis.visits-ranking":"Visits Ranking","dashboard.analysis.day-visits":"Daily Visits","dashboard.analysis.week":"WoW Change","dashboard.analysis.day":"DoD Change","dashboard.analysis.payments":"Payments","dashboard.analysis.conversion-rate":"Conversion Rate","dashboard.analysis.operational-effect":"Operational Effect","dashboard.analysis.sales-trend":"Stores Sales Trend","dashboard.analysis.sales-ranking":"Sales Ranking","dashboard.analysis.all-year":"All Year","dashboard.analysis.all-month":"All Month","dashboard.analysis.all-week":"All Week","dashboard.analysis.all-day":"All day","dashboard.analysis.search-users":"Search Users","dashboard.analysis.per-capita-search":"Per Capita Search","dashboard.analysis.online-top-search":"Online Top Search","dashboard.analysis.the-proportion-of-sales":"The Proportion Of Sales","dashboard.analysis.dropdown-option-one":"Operation one","dashboard.analysis.dropdown-option-two":"Operation two","dashboard.analysis.channel.all":"ALL","dashboard.analysis.channel.online":"Online","dashboard.analysis.channel.stores":"Stores","dashboard.analysis.sales":"Sales","dashboard.analysis.traffic":"Traffic","dashboard.analysis.table.rank":"Rank","dashboard.analysis.table.search-keyword":"Keyword","dashboard.analysis.table.users":"Users","dashboard.analysis.table.weekly-range":"Weekly Range","dashboard.indicator.selectSymbol":"Select or enter symbol code","dashboard.indicator.emptyWatchlistHint":"No watchlist, please add first","dashboard.indicator.hint.selectSymbol":"Please select a symbol to start analysis","dashboard.indicator.hint.selectSymbolDesc":"Select or enter stock code in the search box above to view K-line chart and technical indicators","dashboard.indicator.retry":"Retry","dashboard.indicator.panel.title":"Technical Indicators","dashboard.indicator.panel.realtimeOn":"Turn off real-time update","dashboard.indicator.panel.realtimeOff":"Turn on real-time update","dashboard.indicator.panel.themeLight":"Switch to dark theme","dashboard.indicator.panel.themeDark":"Switch to light theme","dashboard.indicator.section.enabled":"Enabled","dashboard.indicator.section.added":"My Added Indicators","dashboard.indicator.section.custom":"My Created Indicators","dashboard.indicator.section.bought":"Purchased Indicators","dashboard.indicator.section.myCreated":"My Created Indicators","dashboard.indicator.section.purchased":"Purchased Indicators","dashboard.indicator.empty":"No indicators, please add or create indicators first","dashboard.indicator.emptyPurchased":"No purchased indicators, check out the market","dashboard.indicator.buy":"Buy Indicators","dashboard.indicator.action.start":"Start","dashboard.indicator.action.stop":"Stop","dashboard.indicator.action.edit":"Edit","dashboard.indicator.action.delete":"Delete","dashboard.indicator.action.backtest":"Backtest","dashboard.indicator.action.publish":"Publish to Community","dashboard.indicator.action.unpublish":"Published (Click to Manage)","dashboard.indicator.status.normal":"Active","dashboard.indicator.status.normalPermanent":"Active (Permanent)","dashboard.indicator.status.expired":"Expired","dashboard.indicator.expiry.permanent":"Permanent","dashboard.indicator.expiry.noExpiry":"No expiration","dashboard.indicator.expiry.expired":"Expired: {date}","dashboard.indicator.expiry.expiresOn":"Expires: {date}","dashboard.indicator.delete.confirmTitle":"Confirm Deletion","dashboard.indicator.delete.confirmContent":'Are you sure you want to delete indicator "{name}"? This action cannot be undone.',"dashboard.indicator.delete.confirmOk":"Delete","dashboard.indicator.delete.confirmCancel":"Cancel","dashboard.indicator.delete.success":"Deleted successfully","dashboard.indicator.delete.failed":"Failed to delete","dashboard.indicator.save.success":"Saved successfully","dashboard.indicator.save.failed":"Failed to save","dashboard.indicator.publish.title":"Publish to Community","dashboard.indicator.publish.editTitle":"Manage Publication","dashboard.indicator.publish.hint":'After publishing, other users can view and purchase your indicator in the "Indicator Community"',"dashboard.indicator.publish.pricingType":"Pricing Type","dashboard.indicator.publish.free":"Free","dashboard.indicator.publish.paid":"Paid","dashboard.indicator.publish.price":"Price","dashboard.indicator.publish.description":"Description","dashboard.indicator.publish.descriptionPlaceholder":"Enter a detailed description to help others understand your indicator...","dashboard.indicator.publish.confirm":"Publish","dashboard.indicator.publish.update":"Update","dashboard.indicator.publish.unpublish":"Unpublish","dashboard.indicator.publish.success":"Published successfully","dashboard.indicator.publish.failed":"Failed to publish","dashboard.indicator.publish.unpublishSuccess":"Unpublished successfully","dashboard.indicator.publish.unpublishFailed":"Failed to unpublish","dashboard.indicator.error.loadWatchlistFailed":"Failed to load watchlist","dashboard.indicator.error.chartNotReady":"Chart component not initialized, please select a symbol and wait for the chart to load","dashboard.indicator.error.chartMethodNotReady":"Chart component method not ready, please try again later","dashboard.indicator.error.chartExecuteNotReady":"Chart component execute method not ready, please try again later","dashboard.indicator.error.parseFailed":"Failed to parse Python code","dashboard.indicator.error.parseFailedCheck":"Failed to parse Python code, please check the code format","dashboard.indicator.error.addIndicatorFailed":"Failed to add indicator","dashboard.indicator.error.runIndicatorFailed":"Failed to run indicator","dashboard.indicator.error.pleaseLogin":"Please login first","dashboard.indicator.error.loadDataFailed":"Failed to load data","dashboard.indicator.error.loadDataFailedDesc":"Please check network connection","dashboard.indicator.error.tiingoSubscription":"Forex 1-minute data requires Tiingo paid subscription. Please use other timeframes or upgrade your subscription.","dashboard.indicator.error.pythonEngineFailed":"Python engine failed to load, indicator functionality may be unavailable","dashboard.indicator.error.chartInitFailed":"Chart initialization failed","dashboard.indicator.warning.enterCode":"Please enter indicator code first","dashboard.indicator.warning.chartNotInitialized":"Chart not initialized, cannot use drawing tools","dashboard.indicator.warning.pyodideLoadFailed":"Python Engine Load Failed","dashboard.indicator.warning.pyodideLoadFailedDesc":"Your current region or network environment cannot use this feature","dashboard.indicator.success.runIndicator":"Indicator ran successfully","dashboard.indicator.success.clearDrawings":"All drawings cleared","dashboard.indicator.sma":"SMA (Moving Average Group)","dashboard.indicator.ema":"EMA (Exponential Moving Average Group)","dashboard.indicator.rsi":"RSI (Relative Strength Index)","dashboard.indicator.macd":"MACD","dashboard.indicator.bb":"Bollinger Bands","dashboard.indicator.atr":"ATR (Average True Range)","dashboard.indicator.cci":"CCI (Commodity Channel Index)","dashboard.indicator.williams":"Williams %R","dashboard.indicator.mfi":"MFI (Money Flow Index)","dashboard.indicator.adx":"ADX (Average Directional Index)","dashboard.indicator.obv":"OBV (On Balance Volume)","dashboard.indicator.adosc":"ADOSC (Accumulation/Distribution Oscillator)","dashboard.indicator.ad":"AD (Accumulation/Distribution Line)","dashboard.indicator.kdj":"KDJ (Stochastic Indicator)","dashboard.indicator.signal.buy":"BUY","dashboard.indicator.signal.sell":"SELL","dashboard.indicator.signal.supertrendBuy":"SuperTrend Buy","dashboard.indicator.signal.supertrendSell":"SuperTrend Sell","dashboard.indicator.chart.kline":"K-Line","dashboard.indicator.chart.volume":"Volume","dashboard.indicator.chart.uptrend":"Up Trend","dashboard.indicator.chart.downtrend":"Down Trend","dashboard.indicator.tooltip.time":"Time","dashboard.indicator.tooltip.open":"O","dashboard.indicator.tooltip.close":"C","dashboard.indicator.tooltip.high":"H","dashboard.indicator.tooltip.low":"L","dashboard.indicator.tooltip.volume":"Volume","dashboard.indicator.drawing.line":"Line","dashboard.indicator.drawing.horizontalLine":"Horizontal Line","dashboard.indicator.drawing.verticalLine":"Vertical Line","dashboard.indicator.drawing.ray":"Ray","dashboard.indicator.drawing.straightLine":"Straight Line","dashboard.indicator.drawing.parallelLine":"Parallel Line","dashboard.indicator.drawing.priceLine":"Price Line","dashboard.indicator.drawing.priceChannel":"Price Channel","dashboard.indicator.drawing.fibonacciLine":"Fibonacci Line","dashboard.indicator.drawing.measure":"Measure","dashboard.indicator.drawing.clearAll":"Clear All Drawings","dashboard.indicator.market.USStock":"US Stock","dashboard.indicator.market.CNStock":"A-Shares","dashboard.indicator.market.HKStock":"HK Stocks","dashboard.indicator.market.Crypto":"Cryptocurrency","dashboard.indicator.market.Forex":"Forex","dashboard.indicator.market.Futures":"Futures","dashboard.indicator.create":"Create Indicator","dashboard.indicator.editor.title":"Create/Edit Indicator","dashboard.indicator.editor.name":"Indicator Name","dashboard.indicator.editor.nameRequired":"Please enter indicator name","dashboard.indicator.editor.namePlaceholder":"Enter indicator name","dashboard.indicator.editor.description":"Description","dashboard.indicator.editor.descriptionPlaceholder":"Enter description (optional)","dashboard.indicator.editor.code":"Python Code","dashboard.indicator.editor.codeRequired":"Please enter indicator code","dashboard.indicator.editor.codePlaceholder":"Enter Python code","dashboard.indicator.editor.run":"Run","dashboard.indicator.editor.runHint":"Click Run button to preview indicator on K-line chart","dashboard.indicator.editor.guide":"Development Guide","dashboard.indicator.editor.guideTitle":"Python Indicator Development Guide","dashboard.indicator.editor.save":"Save","dashboard.indicator.editor.cancel":"Cancel","dashboard.indicator.editor.unnamed":"Unnamed Indicator","dashboard.indicator.editor.publishToCommunity":"Publish to Community","dashboard.indicator.editor.publishToCommunityHint":"After publishing, other users can view and use your indicator in the community","dashboard.indicator.editor.indicatorType":"Indicator Type","dashboard.indicator.editor.indicatorTypeRequired":"Please select indicator type","dashboard.indicator.editor.indicatorTypePlaceholder":"Please select indicator type","dashboard.indicator.editor.previewImage":"Preview Image","dashboard.indicator.editor.uploadImage":"Upload Image","dashboard.indicator.editor.previewImageHint":"Recommended size: 800x400, max 2MB","dashboard.indicator.editor.pricing":"Pricing (QDT)","dashboard.indicator.editor.pricingType.free":"Free","dashboard.indicator.editor.pricingType.permanent":"Permanent","dashboard.indicator.editor.pricingType.monthly":"Monthly","dashboard.indicator.editor.price":"Price","dashboard.indicator.editor.priceRequired":"Please enter price","dashboard.indicator.editor.pricePlaceholder":"Please enter price","dashboard.indicator.editor.pricingHint":"Free indicators (price 0) will still receive platform rewards based on usage and ratings (QDT)","dashboard.indicator.editor.aiGenerate":"AI Generate","dashboard.indicator.editor.aiPromptPlaceholder":"Describe your signal logic (buy/sell only) and plots. Position sizing, risk, scaling, fees/slippage are configured in backtest.","dashboard.indicator.boundary.message":"Note: The indicator script only computes plots + buy/sell signals. Position sizing, risk, scaling, fees/slippage belong to execution config.","dashboard.indicator.boundary.indicatorRule":"Keep the script to buy/sell only (and set df['buy']/df['sell']). Do NOT implement position management, TP/SL, scaling in the script.","dashboard.indicator.boundary.backtestRule":"Rule: If a bar has a main signal (buy/sell → open/close/reverse), scaling in/out is skipped on the same bar.","dashboard.indicator.editor.aiGenerateBtn":"AI Generate Code","dashboard.indicator.editor.aiPromptRequired":"Please enter your idea","dashboard.indicator.editor.aiGenerateSuccess":"Code generated successfully","dashboard.indicator.editor.aiGenerateError":"Code generation failed, please try again later","dashboard.indicator.editor.verifyCode":"Verify Code","dashboard.indicator.editor.verifyCodeSuccess":"Verification Passed","dashboard.indicator.editor.verifyCodeFailed":"Verification Failed","dashboard.indicator.editor.verifyCodeEmpty":"Code cannot be empty","dashboard.indicator.guide.title":"Python Indicator & Strategy Development Guide","dashboard.indicator.guide.intro":"This platform supports writing custom technical indicators and trading signals using Python. The system includes built-in pandas and numpy data analysis libraries. You can use standard DataFrame operations to process K-line data and draw charts or mark buy/sell signals.","dashboard.indicator.guide.section1.title":"1. Runtime Environment & Predefined Variables","dashboard.indicator.guide.section1.env":"Your code runs in a browser-based Python environment (Pyodide).","dashboard.indicator.guide.section1.libs":"Pre-installed Libraries","dashboard.indicator.guide.section1.libsDesc":"The following libraries are imported by default, no need to import again:","dashboard.indicator.guide.section1.libsList":"pandas (pd), numpy (np), math, json","dashboard.indicator.guide.section1.data":"Input Data: df","dashboard.indicator.guide.section1.dataDesc":"The system automatically converts current K-line data into a Pandas DataFrame object, variable name is df.","dashboard.indicator.guide.section1.dataColumns":"df contains the following columns (all float type):","dashboard.indicator.guide.section1.dataColumnsList":"time (timestamp, seconds), open, high, low, close, volume","dashboard.indicator.guide.section1.dataNote":"Data index is arranged from old to new (0 is the earliest data, last row is the latest data).","dashboard.indicator.guide.section1.dataIndex":"Important: df index is timestamp (DatetimeIndex), please preserve the index, avoid using .values which loses the index.","dashboard.indicator.guide.section2.title":"2. Parameter Definition","dashboard.indicator.guide.section2.desc":"You can define variables as parameters at the beginning of your code. The system will try to parse statements like variable = value as adjustable parameters.","dashboard.indicator.guide.section2.example":"Parameter Example","dashboard.indicator.guide.section2.exampleCode":"span = 20 or multiplier = 2.0","dashboard.indicator.guide.section3.title":"3. Backtest Signal Setup (Important!)","dashboard.indicator.guide.section3.desc":"If you want your indicator to support backtesting, you must set the following two columns in your code:","dashboard.indicator.guide.section3.backtestRequired":"Required for Backtesting:","dashboard.indicator.guide.section3.backtestBuySignal":"df['buy_signal'] - Boolean Series, True indicates buy signal","dashboard.indicator.guide.section3.backtestSellSignal":"df['sell_signal'] - Boolean Series, True indicates sell signal","dashboard.indicator.guide.section3.backtestExample":"Example:","dashboard.indicator.guide.section3.backtestExampleCode":"df['buy_signal'] = condition_buy
df['sell_signal'] = condition_sell","dashboard.indicator.guide.section3.backtestNote":"Note: Even if you only set output.signals for chart display, you must set these two columns to enable backtesting.","dashboard.indicator.guide.section4.title":"4. Output Requirements: output","dashboard.indicator.guide.section4.desc":"At the end of code execution, you must define a dictionary named output to tell the chart how to display results.","dashboard.indicator.guide.section4.fields":"The output dictionary contains the following fields:","dashboard.indicator.guide.section4.plots":"plots - For drawing lines (e.g., moving averages, RSI)","dashboard.indicator.guide.section4.signals":"signals - For marking buy/sell signals (e.g., arrows, labels)","dashboard.indicator.guide.section4.name":"name - Indicator name (optional)","dashboard.indicator.guide.section4.calculatedVars":"calculatedVars - Calculated variables (optional, for displaying additional information)","dashboard.indicator.guide.section5.title":"5. Plot Configuration (Plots)","dashboard.indicator.guide.section5.desc":"Each object in the plots list represents a line.","dashboard.indicator.guide.section5.table.field":"Field","dashboard.indicator.guide.section5.table.type":"Type","dashboard.indicator.guide.section5.table.required":"Required","dashboard.indicator.guide.section5.table.requiredYes":"Yes","dashboard.indicator.guide.section5.table.requiredNo":"No","dashboard.indicator.guide.section5.table.desc":"Description","dashboard.indicator.guide.section5.table.name":"The name of the indicator line, displayed in the legend","dashboard.indicator.guide.section5.table.data":"Data list, length must match the number of rows in df. Recommended to use series.tolist()","dashboard.indicator.guide.section5.table.color":"Line color (Hex format, e.g. '#ff0000'). If not filled, the system will automatically assign","dashboard.indicator.guide.section5.table.typeDesc":"Chart type, default is 'line'","dashboard.indicator.guide.section5.table.overlay":"Important. True means display on main chart (with K-line), False means display on sub-chart (independent area)","dashboard.indicator.guide.section5.example":"Example: Draw Simple Moving Average (SMA)","dashboard.indicator.guide.section5.exampleCalc":"Calculate SMA","dashboard.indicator.guide.section5.exampleOutput":"Construct Output","dashboard.indicator.guide.section5.exampleOverlay":"Display on main chart","dashboard.indicator.guide.section6.title":"6. Signal Markers (Signals)","dashboard.indicator.guide.section6.desc":"signals are used to mark buy/sell points on specific K-lines through icons or text. Note: This is only for chart display. The backtest system uses df['buy_signal'] and df['sell_signal'].","dashboard.indicator.guide.section6.table.type":"Signal type: 'buy' (buy, marked below K-line) or 'sell' (sell, marked above K-line)","dashboard.indicator.guide.section6.table.data":"Signal data list. Fill price value at signal positions, fill None (or np.nan) at non-signal positions","dashboard.indicator.guide.section6.table.text":'Text displayed on the label (e.g. "B", "S", "Buy", "Sell")',"dashboard.indicator.guide.section6.table.color":"Marker color","dashboard.indicator.guide.section6.hint":"The system automatically handles positioning.","dashboard.indicator.guide.section6.buy":"Markers will be automatically positioned below the Low of the current K-line","dashboard.indicator.guide.section6.sell":"Markers will be automatically positioned above the High of the current K-line","dashboard.indicator.guide.section6.example":"Example: Draw Buy/Sell Signals","dashboard.indicator.guide.section6.exampleInit":"Initialize signal list, fill all with None","dashboard.indicator.guide.section6.exampleLogic":"Simple logic: mark buy when close price is greater than open price","dashboard.indicator.guide.section6.exampleNote":"In actual logic, please use loops or vectorized operations","dashboard.indicator.guide.section6.examplePrice":"Record price","dashboard.indicator.guide.section6.exampleText":"Buy","dashboard.indicator.guide.section7.title":"7. Complete Code Examples","dashboard.indicator.guide.section7.exampleA":"Example A: Dual EMA Strategy (Supports Backtesting)","dashboard.indicator.guide.section7.exampleACode":'# 1. Calculate indicators
df[\'ema_fast\'] = df[\'close\'].ewm(span=5, adjust=False).mean()
df[\'ema_slow\'] = df[\'close\'].ewm(span=13, adjust=False).mean()

# 2. Calculate crossover signals
cross_up = (df[\'ema_fast\'] > df[\'ema_slow\']) & (df[\'ema_fast\'].shift(1) <= df[\'ema_slow\'].shift(1))
cross_down = (df[\'ema_fast\'] < df[\'ema_slow\']) & (df[\'ema_fast\'].shift(1) >= df[\'ema_slow\'].shift(1))

# 3. 【Important】Set NEW backtest signal columns (bool)
df[\'open_long\'] = cross_up
df[\'close_long\'] = cross_down
df[\'open_short\'] = cross_down
df[\'close_short\'] = cross_up

# 4. Generate signal data for chart display
buy_signals = [df[\'low\'].iloc[i] * 0.995 if cross_up.iloc[i] else None for i in range(len(df))]
sell_signals = [df[\'high\'].iloc[i] * 1.005 if cross_down.iloc[i] else None for i in range(len(df))]

# 5. Build output
output = {
"name": "Dual EMA Strategy",
"plots": [
{"name": "EMA 5", "data": df[\'ema_fast\'].tolist(), "color": "#FF6B6B", "overlay": True},
{"name": "EMA 13", "data": df[\'ema_slow\'].tolist(), "color": "#4ECDC4", "overlay": True}
],
"signals": [
{"type": "buy", "text": "BUY", "data": buy_signals, "color": "#00E676"},
{"type": "sell", "text": "SELL", "data": sell_signals, "color": "#FF5252"}
]
}',"dashboard.indicator.guide.section7.exampleB":"Example B: Bollinger Bands - Chart Display Only","dashboard.indicator.guide.section7.exampleBCode":'# Calculate Bollinger Bands (chart display only, no backtesting)
length = 20
mult = 2.0
df[\'sma\'] = df[\'close\'].rolling(length).mean()
df[\'std\'] = df[\'close\'].rolling(length).std()
df[\'upper\'] = df[\'sma\'] + mult * df[\'std\']
df[\'lower\'] = df[\'sma\'] - mult * df[\'std\']

output = {
"name": "Bollinger Bands",
"plots": [
{"name": "Upper", "data": df[\'upper\'].tolist(), "color": "#FF5252", "overlay": True},
{"name": "Middle", "data": df[\'sma\'].tolist(), "color": "#2196F3", "overlay": True},
{"name": "Lower", "data": df[\'lower\'].tolist(), "color": "#00E676", "overlay": True}
]
}',"dashboard.indicator.guide.section7.exampleC":"Example C: RSI Strategy (Supports Backtesting)","dashboard.indicator.guide.section7.exampleCCode":'# Calculate RSI
delta = df[\'close\'].diff()
up = delta.clip(lower=0)
down = -1 * delta.clip(upper=0)
ema_up = up.ewm(com=13, adjust=False).mean()
ema_down = down.ewm(com=13, adjust=False).mean()
rs = ema_up / ema_down
df[\'rsi\'] = 100 - (100 / (1 + rs))

# Generate trading signals
buy_condition = df[\'rsi\'] < 30 # Oversold buy
sell_condition = df[\'rsi\'] > 70 # Overbought sell

# 【Important】Set NEW backtest signal columns (bool)
df[\'open_long\'] = buy_condition
df[\'close_long\'] = sell_condition
df[\'open_short\'] = sell_condition
df[\'close_short\'] = buy_condition

# Generate chart signals
buy_signals = [df[\'low\'].iloc[i] * 0.995 if buy_condition.iloc[i] else None for i in range(len(df))]
sell_signals = [df[\'high\'].iloc[i] * 1.005 if sell_condition.iloc[i] else None for i in range(len(df))]

output = {
"name": "RSI Strategy",
"plots": [
{"name": "RSI", "data": df[\'rsi\'].tolist(), "color": "#9C27B0", "overlay": False},
{"name": "Overbought", "data": [70] * len(df), "color": "#FF5252", "style": "dashed", "overlay": False},
{"name": "Oversold", "data": [30] * len(df), "color": "#00E676", "style": "dashed", "overlay": False}
],
"signals": [
{"type": "buy", "text": "BUY", "data": buy_signals, "color": "#00E676"},
{"type": "sell", "text": "SELL", "data": sell_signals, "color": "#FF5252"}
]
}',"dashboard.indicator.guide.section6.param":"Parameters","dashboard.indicator.guide.section6.calc":"Calculate","dashboard.indicator.guide.section6.output":"Output","dashboard.indicator.guide.section6.generate":"Generate signal data (initialize with None)","dashboard.indicator.guide.section6.subchart":"Display on sub-chart","dashboard.indicator.guide.section8.title":"8. Frequently Asked Questions (FAQ)","dashboard.indicator.guide.section8.q1":"Q: Why can't my indicator be backtested?","dashboard.indicator.guide.section8.a1":"A: The backtest system requires NEW signal columns: df['open_long'], df['close_long'], df['open_short'], df['close_short'] (boolean). Even if you set output.signals for chart display, you must set these columns to enable backtesting.","dashboard.indicator.guide.section8.q2":"Q: Data length mismatch?","dashboard.indicator.guide.section8.a2":"A: The data list in plots and signals must have exactly the same length as the K-line data. If you use df['xxx'].tolist(), there is usually no problem.","dashboard.indicator.guide.section8.q3":"Q: How to handle NaN (empty values)?","dashboard.indicator.guide.section8.a3":"A: Pandas calculations (such as rolling mean) will produce NaN at the beginning. The system will automatically convert NaN to null for chart rendering. You don't need to manually clean it, but if you need specific logic, you can use df.fillna(0) or other methods.","dashboard.indicator.guide.section8.q4":"Q: Index mismatch causing all signals to be NaN?","dashboard.indicator.guide.section8.a4":"A: Please ensure you preserve the original df index (timestamp). Avoid using .values to create new Series. Use columns directly like df['close'] for operations.","dashboard.indicator.guide.section8.q5":"Q: Can I use third-party network libraries?","dashboard.indicator.guide.section8.a5":"A: No. The runtime environment is a browser sandbox and cannot use libraries like requests to request external APIs, nor can it install additional pip packages. Limited to built-in libraries such as pandas, numpy, math, json.","dashboard.indicator.guide.section8.q6":"Q: How to debug code?","dashboard.indicator.guide.section8.a6":"A: If the chart does not display indicators, it is usually because the Python code has an error. Please check for syntax errors or array index out of bounds. It is recommended to debug the algorithm logic in a local Python environment first, then copy it in.","dashboard.indicator.guide.section8.q7":"Q: Backtest shows 0 signals?","dashboard.indicator.guide.section8.a7":"A: Please check the data type of df['open_long']/df['close_long']/df['open_short']/df['close_short']. They should be boolean (True/False), not numeric. Use condition.fillna(False).astype(bool) to ensure correct type.","dashboard.indicator.paramsConfig.title":"Indicator Parameters","dashboard.indicator.paramsConfig.noParams":"No configurable parameters for this indicator","dashboard.indicator.paramsConfig.hint":"Configure parameters and click OK to run the indicator","dashboard.indicator.backtest.title":"Indicator Backtest","dashboard.indicator.backtest.config":"Backtest Parameters","dashboard.indicator.backtest.startDate":"Start Date","dashboard.indicator.backtest.endDate":"End Date","dashboard.indicator.backtest.selectStartDate":"Select start date","dashboard.indicator.backtest.selectEndDate":"Select end date","dashboard.indicator.backtest.startDateRequired":"Please select start date","dashboard.indicator.backtest.endDateRequired":"Please select end date","dashboard.indicator.backtest.initialCapital":"Initial Capital","dashboard.indicator.backtest.initialCapitalRequired":"Please enter initial capital","dashboard.indicator.backtest.commission":"Commission Rate (%)","dashboard.indicator.backtest.commissionHint":"Charged on notional value (incl. leverage) per trade; both entry & exit are deducted from balance.","dashboard.indicator.backtest.leverage":"Leverage","dashboard.indicator.backtest.timeframe":"Timeframe","dashboard.indicator.backtest.tradeDirection":"Trade Direction","dashboard.indicator.backtest.longOnly":"Long Only","dashboard.indicator.backtest.shortOnly":"Short Only","dashboard.indicator.backtest.both":"Both","dashboard.indicator.backtest.run":"Run Backtest","dashboard.indicator.backtest.rerun":"Run Again","dashboard.indicator.backtest.close":"Close","dashboard.indicator.backtest.running":"Running indicator backtest...","dashboard.indicator.backtest.loadingTip1":"Fetching historical K-line data...","dashboard.indicator.backtest.loadingTip2":"Executing strategy signal calculation...","dashboard.indicator.backtest.loadingTip3":"Simulating trade execution...","dashboard.indicator.backtest.loadingTip4":"Calculating backtest metrics...","dashboard.indicator.backtest.loadingTip5":"Almost done, please wait...","dashboard.indicator.backtest.results":"Backtest Results","dashboard.indicator.backtest.totalReturn":"Total Return","dashboard.indicator.backtest.annualReturn":"Annual Return","dashboard.indicator.backtest.maxDrawdown":"Max Drawdown","dashboard.indicator.backtest.sharpeRatio":"Sharpe Ratio","dashboard.indicator.backtest.winRate":"Win Rate","dashboard.indicator.backtest.profitFactor":"Profit Factor","dashboard.indicator.backtest.totalTrades":"Total Trades","dashboard.indicator.totalReturn":"Total Return","dashboard.indicator.annualReturn":"Annual Return","dashboard.indicator.maxDrawdown":"Max Drawdown","dashboard.indicator.sharpeRatio":"Sharpe Ratio","dashboard.indicator.winRate":"Win Rate","dashboard.indicator.profitFactor":"Profit Factor","dashboard.indicator.totalTrades":"Total Trades","dashboard.indicator.backtest.totalCommission":"Total Commission","dashboard.indicator.backtest.equityCurve":"Equity Curve","dashboard.indicator.backtest.strategy":"Indicator","dashboard.indicator.backtest.benchmark":"Benchmark","dashboard.indicator.backtest.tradeHistory":"Trade History","dashboard.indicator.backtest.tradeTime":"Time","dashboard.indicator.backtest.tradeType":"Type","dashboard.indicator.backtest.tradeDetail":"Action Detail","dashboard.indicator.backtest.buy":"Buy","dashboard.indicator.backtest.sell":"Sell","dashboard.indicator.backtest.liquidation":"Liquidation","dashboard.indicator.backtest.openLong":"Open Long","dashboard.indicator.backtest.closeLong":"Close Long","dashboard.indicator.backtest.closeLongStop":"Close Long (Stop Loss)","dashboard.indicator.backtest.closeLongProfit":"Close Long (Take Profit)","dashboard.indicator.backtest.addLong":"Add Long","dashboard.indicator.backtest.openShort":"Open Short","dashboard.indicator.backtest.closeShort":"Close Short","dashboard.indicator.backtest.closeShortStop":"Close Short (Stop Loss)","dashboard.indicator.backtest.closeShortProfit":"Close Short (Take Profit)","dashboard.indicator.backtest.addShort":"Add Short","dashboard.indicator.backtest.closeLongTrailing":"Close Long (Trailing)","dashboard.indicator.backtest.reduceLong":"Reduce Long","dashboard.indicator.backtest.closeShortTrailing":"Close Short (Trailing)","dashboard.indicator.backtest.reduceShort":"Reduce Short","dashboard.indicator.backtest.tradeDetailOpenLong":"Open a long position","dashboard.indicator.backtest.tradeDetailAddLong":"Add to the long position","dashboard.indicator.backtest.tradeDetailCloseLong":"Close the long position by signal","dashboard.indicator.backtest.tradeDetailCloseLongStop":"Stop loss triggered, closing the long position","dashboard.indicator.backtest.tradeDetailCloseLongProfit":"Take profit triggered, closing the long position","dashboard.indicator.backtest.tradeDetailCloseLongTrailing":"Trailing stop triggered, closing the long position","dashboard.indicator.backtest.tradeDetailReduceLong":"Reduce the long position","dashboard.indicator.backtest.tradeDetailOpenShort":"Open a short position","dashboard.indicator.backtest.tradeDetailAddShort":"Add to the short position","dashboard.indicator.backtest.tradeDetailCloseShort":"Close the short position by signal","dashboard.indicator.backtest.tradeDetailCloseShortStop":"Stop loss triggered, closing the short position","dashboard.indicator.backtest.tradeDetailCloseShortProfit":"Take profit triggered, closing the short position","dashboard.indicator.backtest.tradeDetailCloseShortTrailing":"Trailing stop triggered, closing the short position","dashboard.indicator.backtest.tradeDetailReduceShort":"Reduce the short position","dashboard.indicator.backtest.tradeDetailLiquidation":"Margin exhausted, liquidation triggered","dashboard.indicator.backtest.tradeDetailBuy":"Buy filled","dashboard.indicator.backtest.tradeDetailSell":"Sell filled","dashboard.indicator.backtest.price":"Price","dashboard.indicator.backtest.amount":"Amount","dashboard.indicator.backtest.balance":"Balance","dashboard.indicator.backtest.profit":"P&L","dashboard.indicator.backtest.success":"Backtest completed","dashboard.indicator.backtest.failed":"Backtest failed, please try again later","dashboard.indicator.backtest.quickSelect":"Quick Select","dashboard.indicator.backtest.precisionMode":"Backtest Precision Mode","dashboard.indicator.backtest.estimatedCandles":"Est. {count} candles to process","dashboard.indicator.backtest.highPrecisionDesc":"Using 1-minute candles for high-precision backtest, stop-loss/take-profit triggers are more accurate","dashboard.indicator.backtest.mediumPrecisionDesc":"Range exceeds 30 days, using 5-minute candles to balance precision and performance","dashboard.indicator.backtest.standardModeWarning":"Using Standard Backtest Mode","dashboard.indicator.backtest.standardModeDesc":"Current config does not support high-precision backtest, using strategy timeframe","dashboard.indicator.backtest.onlyCryptoSupported":"High-precision backtest only supports cryptocurrency market","dashboard.indicator.backtest.noIndicatorCode":"This indicator has no backtestable code","dashboard.indicator.backtest.noSymbol":"Please select a trading symbol first","dashboard.indicator.backtest.dateRangeExceeded":"Backtest date range exceeded: {timeframe} timeframe allows max {maxRange}","dashboard.indicator.backtest.dateRangeExceededDays":"Backtest range exceeds limit: {timeframe} max {maxRange} ({maxDays} days)","dashboard.indicator.backtest.metaLine":"Symbol: {symbol} | Market: {market} | Timeframe: {timeframe}","dashboard.indicator.backtest.savedRunId":"Backtest saved. Run ID: {id}","dashboard.indicator.backtest.historyTitle":"Backtest History","dashboard.indicator.backtest.historyRefresh":"Refresh","dashboard.indicator.backtest.historyView":"View","dashboard.indicator.backtest.historyNoData":"No backtest history","dashboard.indicator.backtest.historyUseCurrent":"Only current symbol/timeframe","dashboard.indicator.backtest.historyFilterSymbol":"Symbol","dashboard.indicator.backtest.historyFilterTimeframe":"Timeframe","dashboard.indicator.backtest.historyApply":"Apply filters","dashboard.indicator.backtest.historyAIAnalyze":"AI Analyze","dashboard.indicator.backtest.historyAIAnalyzeTitle":"AI Suggestions","dashboard.indicator.backtest.historyAISuggest":"AI Backtest Suggestions","dashboard.indicator.backtest.historyAISuggestShort":"AI Suggest","dashboard.indicator.backtest.historyAISuggestTitle":"AI Backtest Correction Suggestions","dashboard.indicator.backtest.historyAISuggestLoading":"Analyzing backtest data, generating parameter suggestions...","dashboard.indicator.backtest.historyNoAIResult":"No AI analysis result","dashboard.indicator.backtest.historyAISelectPrompt":"Please select at least one backtest run, or click the row-level AI suggestion action","dashboard.indicator.backtest.historyAIFailed":"Failed to generate AI backtest suggestions. Please try again later.","dashboard.indicator.backtest.historySelectedCount":"{count} selected","dashboard.indicator.backtest.historyAICopy":"Copy","dashboard.indicator.backtest.historyAIRetry":"Regenerate","dashboard.indicator.backtest.historyAIHint":"AI only provides parameter tuning suggestions based on backtest results. It does not rewrite indicator logic directly. Validate suggestions with A/B backtests.","dashboard.indicator.backtest.historyAIModeLLM":"AI Model","dashboard.indicator.backtest.historyAIModeRule":"Rule-Based","dashboard.indicator.backtest.historyAIModeUnknown":"Suggestion","dashboard.indicator.backtest.historyAICopySuccess":"AI suggestion copied","dashboard.indicator.backtest.historyAICopyFailed":"Copy failed. Please copy manually.","dashboard.indicator.backtest.historySymbol":"Symbol","dashboard.indicator.backtest.historyRunId":"Run ID","dashboard.indicator.backtest.historyCreatedAt":"Time","dashboard.indicator.backtest.historyRange":"Range","dashboard.indicator.backtest.historyStatus":"Status","dashboard.indicator.backtest.historyStatusSuccess":"Success","dashboard.indicator.backtest.historyStatusFailed":"Failed","dashboard.indicator.backtest.historyActions":"Actions","dashboard.indicator.backtest.prev":"Previous","dashboard.indicator.backtest.next":"Next","dashboard.indicator.backtest.steps.strategy.title":"Execution Config","dashboard.indicator.backtest.steps.strategy.desc":"Position, risk, scaling","dashboard.indicator.backtest.steps.trading.title":"Backtest Setup","dashboard.indicator.backtest.steps.trading.desc":"Time, capital, fees, leverage, slippage","dashboard.indicator.backtest.steps.results.title":"Results","dashboard.indicator.backtest.steps.results.desc":"Summary & trades","dashboard.indicator.backtest.panel.risk":"Execution: Risk (SL / trailing)","dashboard.indicator.backtest.panel.scale":"Execution: Scale-in (Trend / DCA)","dashboard.indicator.backtest.panel.reduce":"Execution: Scale-out (Trend / Adverse)","dashboard.indicator.backtest.panel.position":"Execution: Entry sizing","dashboard.indicator.backtest.field.stopLossPct":"Stop Loss (%)","dashboard.indicator.backtest.field.takeProfitPct":"Take Profit (%)","dashboard.indicator.backtest.field.trailingEnabled":"Trailing stop / take profit","dashboard.indicator.backtest.field.trailingStopPct":"Trailing drawdown (%)","dashboard.indicator.backtest.field.trailingActivationPct":"Trailing activation (%)","dashboard.indicator.backtest.field.slippage":"Slippage (%)","dashboard.indicator.backtest.field.signalTiming":"Fill timing","dashboard.indicator.backtest.signalTiming.nextBarOpen":"Next bar open (default, closer to live trading)","dashboard.indicator.backtest.signalTiming.sameBarClose":"Same bar close (aligns with chart markers, more optimistic)","dashboard.indicator.backtest.signalTiming.help":"“Next open” fills on the bar after the signal bar closes. “Same close” fills on the signal bar close and matches markers, but is not always realistic.","dashboard.indicator.backtest.executionAssumptions.title":"Execution assumptions","dashboard.indicator.backtest.executionAssumptions.bodyNextBar":"After the signal is confirmed at a bar’s close, fills use the next bar’s open (plus slippage). Trade timestamps often shift one bar vs markers on the chart.","dashboard.indicator.backtest.executionAssumptions.bodySameBar":"After the signal is confirmed at a bar’s close, fills use that bar’s close (plus slippage). Timestamps align with chart markers; results are usually more optimistic.","dashboard.indicator.backtest.executionAssumptions.fillOpen":"Default fill reference: open price.","dashboard.indicator.backtest.executionAssumptions.fillClose":"Default fill reference: close price.","dashboard.indicator.backtest.executionAssumptions.bodyMtf":"Multi-timeframe path: signal timeframe {sig}, execution timeframe {exec}.","dashboard.indicator.backtest.executionAssumptions.mtfFallback":"High-precision multi-timeframe simulation was not used (fell back to standard backtest); see precision note above.","dashboard.indicator.backtest.executionAssumptions.legacyTitle":"About this saved run","dashboard.indicator.backtest.executionAssumptions.legacyBody":"This run was saved before execution metadata existed. Older runs typically assume fills on the next bar open after the signal bar closes. Re-run with “same bar close” if you need chart-aligned timestamps.","dashboard.indicator.backtest.historyFillTimingCol":"Fill timing","dashboard.indicator.backtest.historyFillTimingNext":"Next open","dashboard.indicator.backtest.historyFillTimingSame":"Same close","dashboard.indicator.backtest.field.trendAddEnabled":"Trend-following scale-in","dashboard.indicator.backtest.field.dcaAddEnabled":"Mean-reversion DCA","dashboard.indicator.backtest.field.trendAddStepPct":"Scale-in trigger (%)","dashboard.indicator.backtest.field.dcaAddStepPct":"DCA trigger (%)","dashboard.indicator.backtest.field.trendAddSizePct":"Scale-in size (% of capital)","dashboard.indicator.backtest.field.dcaAddSizePct":"DCA size (% of capital)","dashboard.indicator.backtest.field.trendAddMaxTimes":"Max scale-in times","dashboard.indicator.backtest.field.dcaAddMaxTimes":"Max DCA times","dashboard.indicator.backtest.field.trendReduceEnabled":"Trend reduce","dashboard.indicator.backtest.field.adverseReduceEnabled":"Adverse reduce","dashboard.indicator.backtest.field.trendReduceStepPct":"Trend trigger (%)","dashboard.indicator.backtest.field.adverseReduceStepPct":"Adverse trigger (%)","dashboard.indicator.backtest.field.trendReduceSizePct":"Reduce size (% of position)","dashboard.indicator.backtest.field.adverseReduceSizePct":"Adverse reduce size (% of position)","dashboard.indicator.backtest.field.trendReduceMaxTimes":"Max trend reduce times","dashboard.indicator.backtest.field.adverseReduceMaxTimes":"Max adverse reduce times","dashboard.indicator.backtest.field.entryPct":"Entry size (% of capital)","dashboard.indicator.backtest.field.minOrderPct":"Min order size (% of capital) (optional)","dashboard.indicator.backtest.hint.entryPctMax":"Max entry: {maxPct}% (reserve budget for future scale-ins)","backtest-center.title":"Backtest Center","backtest-center.subtitle":"Run indicator and strategy backtests in one place, review history and analyze results","backtest-center.tabs.indicator":"Indicator Backtest","backtest-center.tabs.strategy":"Strategy Backtest","backtest-center.indicator.selectIndicator":"Select Indicator","backtest-center.indicator.selectIndicatorPlaceholder":"Choose an indicator to backtest","backtest-center.indicator.noIndicators":"No custom indicators yet. Create one in Charts & Indicators first.","backtest-center.indicator.runBacktest":"Run Backtest","backtest-center.indicator.history":"History","backtest-center.indicator.goToIndicator":"Go to Charts & Indicators","backtest-center.strategy.selectStrategy":"Select Strategy","backtest-center.strategy.selectStrategyPlaceholder":"Choose a strategy to backtest","backtest-center.strategy.noStrategies":"No strategies yet. Create one in Trading Assistant first.","backtest-center.strategy.runBacktest":"Run Backtest","backtest-center.strategy.history":"History","backtest-center.strategy.goToAssistant":"Go to Trading Assistant","backtest-center.strategy.backtestConfig":"Backtest Parameters","backtest-center.strategy.running":"Running strategy backtest...","backtest-center.strategy.result":"Strategy Backtest Result","backtest-center.strategy.noResult":"No backtest result yet. Run a backtest first.","backtest-center.strategy.noIndicator":"This strategy has no linked indicator and cannot be backtested","backtest-center.empty":"Select an indicator or strategy from the left to start backtesting","backtest-center.running":"Running backtest...","backtest-center.emptyTitle":"Configure and Run Backtest","backtest-center.emptyDesc":"Select an indicator and symbol on the left, configure parameters, then click Run to see results","backtest-center.config.symbol":"Symbol","backtest-center.config.marketPlaceholder":"Select market","backtest-center.config.watchlistPlaceholder":"Select from watchlist","backtest-center.config.addSymbol":"Add Symbol","backtest-center.config.addSuccess":"Added successfully","backtest-center.config.noSearchResult":"No match found. The entered code will be used directly.","backtest-center.config.symbolPlaceholder":"Search symbol, e.g. BTC/USDT, AAPL","backtest-center.config.symbolRequired":"Please enter a trading symbol","backtest-center.config.monthUnit":" mo","backtest-center.config.yearUnit":" yr","backtest-center.config.timeframe":"Timeframe","backtest-center.config.dateRange":"Date Range","backtest-center.config.startDate":"Start date","backtest-center.config.endDate":"End date","backtest-center.config.capital":"Capital Settings","backtest-center.config.initialCapital":"Initial Capital","backtest-center.config.leverage":"Leverage","backtest-center.config.commission":"Commission","backtest-center.config.slippage":"Slippage","backtest-center.config.signalTiming":"Fill timing","backtest-center.config.signalTimingNext":"Next bar open","backtest-center.config.signalTimingSame":"Same bar close","backtest-center.config.signalTimingHelp":"Same as indicator backtest: next open is more realistic; same close aligns with chart markers.","backtest-center.config.direction":"Trade Direction","backtest-center.config.long":"Long Only","backtest-center.config.short":"Short Only","backtest-center.config.both":"Both","backtest-center.config.riskPanel":"Risk Parameters","backtest-center.config.stopLoss":"Stop Loss","backtest-center.config.takeProfit":"Take Profit","backtest-center.config.entryPct":"Position Size","backtest-center.config.trailing":"Enable Trailing Stop","backtest-center.config.trailingPct":"Trailing Stop","backtest-center.config.trailingActivation":"Activation Threshold","backtest-center.tip.fetching":"Fetching candlestick data...","backtest-center.tip.computing":"Computing strategy signals...","backtest-center.tip.analyzing":"Analyzing trade results...","backtest-center.result.success":"Backtest completed!","backtest-center.result.failed":"Backtest failed. Please check parameters and try again.","backtest-center.result.totalReturn":"Total Return","backtest-center.result.annualReturn":"Annual Return","backtest-center.result.maxDrawdown":"Max Drawdown","backtest-center.result.sharpe":"Sharpe Ratio","backtest-center.result.winRate":"Win Rate","backtest-center.result.profitFactor":"Profit Factor","backtest-center.result.trades":"Total Trades","backtest-center.result.commission":"Total Commission","backtest-center.result.equityCurve":"Equity Curve","backtest-center.result.tradeHistory":"Trade History","backtest-center.result.colType":"Direction","backtest-center.result.colOpenAction":"Open","backtest-center.result.colCloseReason":"Close Reason","backtest-center.result.colEntry":"Entry Time","backtest-center.result.colExit":"Exit Time","backtest-center.result.colEntryPrice":"Entry Price","backtest-center.result.colExitPrice":"Exit Price","backtest-center.result.colProfit":"Profit","backtest-center.result.colBalance":"Equity Left","backtest-center.result.openLong":"Open Long","backtest-center.result.openShort":"Open Short","backtest-center.result.stopLoss":"Stop Loss","backtest-center.result.takeProfit":"Take Profit","backtest-center.result.trailingStop":"Trailing Stop","backtest-center.result.reverse":"Reverse Close","backtest-center.result.signal":"Signal Close","backtest-center.result.liquidation":"Liquidation","dashboard.docs.title":"Documentation","dashboard.docs.search.placeholder":"Search documents...","dashboard.docs.category.all":"All","dashboard.docs.category.guide":"Guides","dashboard.docs.category.api":"API Reference","dashboard.docs.category.tutorial":"Tutorials","dashboard.docs.category.faq":"FAQ","dashboard.docs.featured.title":"Featured Documents","dashboard.docs.featured.tag":"Featured","dashboard.docs.list.views":"views","dashboard.docs.list.author":"Author","dashboard.docs.list.empty":"No documents","dashboard.docs.list.backToAll":"Back to All Documents","dashboard.docs.list.total":"Total {count} documents","dashboard.docs.detail.back":"Back to List","dashboard.docs.detail.updatedAt":"Updated at","dashboard.docs.detail.related":"Related Documents","dashboard.docs.detail.notFound":"Document Not Found","dashboard.docs.detail.error":"Document does not exist or has been deleted","dashboard.docs.search.result":"Search Results","dashboard.docs.search.keyword":"Keyword","dashboard.totalEquity":"Total Equity","dashboard.totalPnL":"Total P&L","dashboard.aiStrategies":"AI Strategies","dashboard.indicatorStrategies":"Indicator Strategies","dashboard.running":"Running","dashboard.enabled":"Enabled","dashboard.pnlHistory":"P&L History","dashboard.strategyPerformance":"Strategy Performance","dashboard.strategyRanking":"Strategy Ranking","dashboard.winRate":"Win Rate","dashboard.profitFactor":"Profit Factor","dashboard.maxDrawdown":"Max Drawdown","dashboard.totalTrades":"Total Trades","dashboard.runningStrategies":"Running Strategies","dashboard.equityCurve":"Equity Curve","dashboard.strategyAllocation":"Strategy Allocation","dashboard.drawdownCurve":"Drawdown Curve","dashboard.drawdown":"Drawdown","dashboard.hourlyDistribution":"Hourly Distribution","dashboard.dailyPnl":"Daily P&L","dashboard.cumulativePnl":"Cumulative P&L","dashboard.tradeCount":"Trade Count","dashboard.profit":"Profit","dashboard.noData":"No Data","dashboard.noStrategyData":"No strategy data","dashboard.setupGuide.title":"No live strategy is running yet","dashboard.setupGuide.desc":'Go to "Strategy Management" first, create a strategy, and switch its execution mode to "Live Trading". Positions, trades, and performance will show up here afterwards.',"dashboard.setupGuide.path":"Path: Strategy Management -> Create Strategy -> Choose execution mode (Signal Only / Live Trading)","dashboard.setupGuide.primary":"Create Strategy","dashboard.setupGuide.secondary":"Open Strategy Management","dashboard.ranking.totalProfit":"Total Profit","dashboard.ranking.roi":"ROI","dashboard.ranking.trades":"Trades","dashboard.unit.trades":"","dashboard.unit.strategies":"","dashboard.label.avgDaily":"Avg Daily","dashboard.label.avgProfit":"Avg Profit","dashboard.label.win":"W","dashboard.label.lose":"L","dashboard.label.trade":"Trades","dashboard.label.indicator":"Indicator","dashboard.label.totalPnl":"Total P&L","dashboard.label.maxDrawdownPoint":"Max DD","dashboard.profitCalendar":"Profit Calendar","dashboard.recentTrades":"Recent Trades","dashboard.currentPositions":"Current Positions","dashboard.table.time":"Time","dashboard.table.strategy":"Strategy","dashboard.table.symbol":"Symbol","dashboard.table.type":"Type","dashboard.table.side":"Side","dashboard.table.size":"Size","dashboard.table.entryPrice":"Entry Price","dashboard.table.price":"Price","dashboard.table.amount":"Amount","dashboard.table.profit":"Profit","dashboard.pendingOrders":"Order Execution Records","dashboard.totalOrders":"Total {total} orders","dashboard.viewError":"View Error","dashboard.filled":"Filled","dashboard.orderTable.time":"Created Time","dashboard.orderTable.strategy":"Strategy","dashboard.orderTable.symbol":"Symbol","dashboard.orderTable.signalType":"Signal Type","dashboard.orderTable.amount":"Amount","dashboard.orderTable.price":"Filled Price","dashboard.orderTable.status":"Status","dashboard.orderTable.timeInfo":"Time","dashboard.orderTable.executedAt":"Executed Time","dashboard.orderTable.exchange":"Exchange","dashboard.orderTable.notify":"Notify","dashboard.orderTable.actions":"Actions","dashboard.orderTable.delete":"Delete","dashboard.orderTable.deleteConfirm":"Delete this record?","dashboard.orderTable.deleteSuccess":"Deleted","dashboard.orderTable.deleteFailed":"Delete failed","dashboard.newOrderNotify":"New Order Alert","dashboard.newOrderDesc":"New order execution record","dashboard.soundEnabled":"Sound notification enabled","dashboard.soundDisabled":"Sound notification disabled","dashboard.clickToMute":"Click to mute","dashboard.clickToUnmute":"Click to unmute","dashboard.signalType.openLong":"Open Long","dashboard.signalType.openShort":"Open Short","dashboard.signalType.closeLong":"Close Long","dashboard.signalType.closeShort":"Close Short","dashboard.signalType.addLong":"Add Long","dashboard.signalType.addShort":"Add Short","dashboard.status.pending":"Pending","dashboard.status.processing":"Processing","dashboard.status.completed":"Completed","dashboard.status.failed":"Failed","dashboard.status.cancelled":"Cancelled","dashboard.table.pnl":"Unrealized P&L","form.basic-form.basic.title":"Basic form","form.basic-form.basic.description":"Form pages are used to collect or verify information to users, and basic forms are common in scenarios where there are fewer data items.","form.basic-form.title.label":"Title","form.basic-form.title.placeholder":"Give the target a name","form.basic-form.title.required":"Please enter a title","form.basic-form.date.label":"Start and end date","form.basic-form.placeholder.start":"Start date","form.basic-form.placeholder.end":"End date","form.basic-form.date.required":"Please select the start and end date","form.basic-form.goal.label":"Goal description","form.basic-form.goal.placeholder":"Please enter your work goals","form.basic-form.goal.required":"Please enter a description of the goal","form.basic-form.standard.label":"Metrics","form.basic-form.standard.placeholder":"Please enter a metric","form.basic-form.standard.required":"Please enter a metric","form.basic-form.client.label":"Client","form.basic-form.label.tooltip":"Target service object","form.basic-form.client.placeholder":"Please describe your customer service, internal customers directly @ Name / job number","form.basic-form.client.required":"Please describe the customers you serve","form.basic-form.invites.label":"Inviting critics","form.basic-form.invites.placeholder":"Please direct @ Name / job number, you can invite up to 5 people","form.basic-form.weight.label":"Weight","form.basic-form.weight.placeholder":"Please enter weight","form.basic-form.public.label":"Target disclosure","form.basic-form.label.help":"Customers and invitees are shared by default","form.basic-form.radio.public":"Public","form.basic-form.radio.partially-public":"Partially public","form.basic-form.radio.private":"Private","form.basic-form.publicUsers.placeholder":"Open to","form.basic-form.option.A":"Colleague A","form.basic-form.option.B":"Colleague B","form.basic-form.option.C":"Colleague C","form.basic-form.email.required":"Please enter your email!","form.basic-form.email.wrong-format":"The email address is in the wrong format!","form.basic-form.userName.required":"Please enter your userName!","form.basic-form.password.required":"Please enter your password!","form.basic-form.password.twice":"The passwords entered twice do not match!","form.basic-form.strength.msg":"Please enter at least 6 characters and don't use passwords that are easy to guess.","form.basic-form.strength.strong":"Strength: strong","form.basic-form.strength.medium":"Strength: medium","form.basic-form.strength.short":"Strength: too short","form.basic-form.confirm-password.required":"Please confirm your password!","form.basic-form.phone-number.required":"Please enter your phone number!","form.basic-form.phone-number.wrong-format":"Malformed phone number!","form.basic-form.verification-code.required":"Please enter the verification code!","form.basic-form.form.get-captcha":"Get Captcha","form.basic-form.captcha.second":"sec","form.basic-form.form.optional":" (optional) ","form.basic-form.form.submit":"Submit","form.basic-form.form.save":"Save","form.basic-form.email.placeholder":"Email","form.basic-form.password.placeholder":"Password","form.basic-form.confirm-password.placeholder":"Confirm password","form.basic-form.phone-number.placeholder":"Phone number","form.basic-form.verification-code.placeholder":"Verification code","result.success.title":"Submission Success","result.success.description":"The submission results page is used to feed back the results of a series of operational tasks. If it is a simple operation, use the Message global prompt feedback. This text area can show a simple supplementary explanation. If there is a similar requirement for displaying “documents”, the following gray area can present more complicated content.","result.success.operate-title":"Project Name","result.success.operate-id":"Project ID","result.success.principal":"Principal","result.success.operate-time":"Effective time","result.success.step1-title":"Create project","result.success.step1-operator":"Qu Lili","result.success.step2-title":"Departmental preliminary review","result.success.step2-operator":"Zhou Maomao","result.success.step2-extra":"Urge","result.success.step3-title":"Financial review","result.success.step4-title":"Finish","result.success.btn-return":"Back List","result.success.btn-project":"View Project","result.success.btn-print":"Print","result.fail.error.title":"Submission Failed","result.fail.error.description":"Please check and modify the following information before resubmitting.","result.fail.error.hint-title":"The content you submitted has the following error:","result.fail.error.hint-text1":"Your account has been frozen","result.fail.error.hint-btn1":"Thaw immediately","result.fail.error.hint-text2":"Your account is not yet eligible to apply","result.fail.error.hint-btn2":"Upgrade immediately","result.fail.error.btn-text":"Return to modify","account.settings.menuMap.custom":"Custom Settings","account.settings.menuMap.binding":"Account Binding","account.settings.basic.avatar":"Avatar","account.settings.basic.change-avatar":"Change avatar","account.settings.basic.email":"Email","account.settings.basic.email-message":"Please input your email!","account.settings.basic.nickname":"Nickname","account.settings.basic.nickname-message":"Please input your Nickname!","account.settings.basic.profile":"Personal profile","account.settings.basic.profile-message":"Please input your personal profile!","account.settings.basic.profile-placeholder":"Brief introduction to yourself","account.settings.basic.country":"Country/Region","account.settings.basic.country-message":"Please input your country!","account.settings.basic.geographic":"Province or city","account.settings.basic.geographic-message":"Please input your geographic info!","account.settings.basic.address":"Street Address","account.settings.basic.address-message":"Please input your address!","account.settings.basic.phone":"Phone Number","account.settings.basic.phone-message":"Please input your phone!","account.settings.basic.update":"Update Information","account.settings.basic.update.success":"Update basic information successfully","account.settings.security.strong":"Strong","account.settings.security.medium":"Medium","account.settings.security.weak":"Weak","account.settings.security.password":"Account Password","account.settings.security.password-description":"Current password strength:","account.settings.security.phone":"Security Phone","account.settings.security.phone-description":"Bound phone:","account.settings.security.question":"Security Question","account.settings.security.question-description":"The security question is not set, and the security policy can effectively protect the account security","account.settings.security.email":"Bound Email","account.settings.security.email-description":"Bound Email:","account.settings.security.mfa":"MFA Device","account.settings.security.mfa-description":"Unbound MFA device, after binding, can be confirmed twice","account.settings.security.modify":"Modify","account.settings.security.set":"Set","account.settings.security.bind":"Bind","account.settings.binding.taobao":"Binding Taobao","account.settings.binding.taobao-description":"Currently unbound Taobao account","account.settings.binding.alipay":"Binding Alipay","account.settings.binding.alipay-description":"Currently unbound Alipay account","account.settings.binding.dingding":"Binding DingTalk","account.settings.binding.dingding-description":"Currently unbound DingTalk account","account.settings.binding.bind":"Bind","account.settings.notification.password":"Account Password","account.settings.notification.password-description":"Messages from other users will be notified in the form of a station letter","account.settings.notification.messages":"System Messages","account.settings.notification.messages-description":"System messages will be notified in the form of a station letter","account.settings.notification.todo":"To-do Notification","account.settings.notification.todo-description":"The to-do list will be notified in the form of a letter from the station","account.settings.settings.open":"Open","account.settings.settings.close":"Close","trading-assistant.title":"Trading Assistant","trading-assistant.strategyList":"Strategy List","trading-assistant.createStrategy":"Create Strategy","trading-assistant.noStrategy":"No strategies","trading-assistant.selectStrategy":"Please select a strategy from the left to view details","trading-assistant.emptyDetail.title":"No strategy selected","trading-assistant.emptyDetail.hint":"Pick a strategy in the list on the left to see its config, positions, trades, and logs. Create one first if the list is empty.","trading-assistant.guide.title":"Start live trading from here","trading-assistant.guide.desc":'To enable automated live trading, go to "Strategy Management", create a strategy, then switch its execution mode to "Live Trading".',"trading-assistant.guide.eyebrow":"Quick Start","trading-assistant.guide.path":"Path: Strategy Management -> Create Strategy -> Choose execution mode (Signal Only / Live Trading)","trading-assistant.guide.step1Title":"Create a strategy","trading-assistant.guide.step1Desc":"Open Strategy Management and create your first strategy.","trading-assistant.guide.step2Title":"Switch to live mode","trading-assistant.guide.step2Desc":'Choose "Live Trading" as the execution mode.',"trading-assistant.guide.step3Title":"Monitor it here","trading-assistant.guide.step3Desc":"Come back to Live Overview to see positions, trades, and performance.","trading-assistant.guide.primary":"New Strategy / Create Live Setup","trading-assistant.guide.secondary":"Open Strategy Management","trading-assistant.empty.title":"No strategy yet","trading-assistant.empty.desc":"Create a strategy and pick how it runs — live ones show under Live Overview. Add exchange & notifications when you need them.","trading-assistant.empty.path":"","trading-assistant.empty.primary":"Create First Strategy","trading-assistant.startStrategy":"Start Strategy","trading-assistant.scriptBacktestOnly":"Script strategy","trading-assistant.scriptLiveNotSupportedHint":"Script strategies run on_bar once per closed bar; orders use the same execution and risk path as indicator strategies.","trading-assistant.stopStrategy":"Stop Strategy","trading-assistant.editStrategy":"Edit Strategy","trading-assistant.deleteStrategy":"Delete Strategy","trading-assistant.startAll":"Start All","trading-assistant.stopAll":"Stop All","trading-assistant.deleteAll":"Delete All","trading-assistant.symbolCount":"symbols","trading-assistant.strategyCount":"strategies","trading-assistant.groupBy":"Group By","trading-assistant.groupByStrategy":"Strategy","trading-assistant.groupBySymbol":"Symbol","trading-assistant.timeframe":"Timeframe","trading-assistant.indicator":"Indicator","trading-assistant.status.running":"Running","trading-assistant.status.stopped":"Stopped","trading-assistant.status.error":"Error","trading-assistant.strategyType.IndicatorStrategy":"Indicator Strategy","trading-assistant.strategyType.PromptBasedStrategy":"Prompt Strategy","trading-assistant.strategyType.GridStrategy":"Grid Strategy","trading-assistant.tabs.tradingRecords":"Trading Records","trading-assistant.tabs.positions":"Positions","trading-assistant.tabs.equityCurve":"Equity Curve","trading-assistant.form.step1":"Select Indicator","trading-assistant.form.step2":"Exchange Configuration","trading-assistant.form.step3":"Strategy Parameters","trading-assistant.form.step2Params":"Parameters","trading-assistant.form.step3Signal":"Signal Delivery","trading-assistant.form.stepMergedConfig":"Strategy setup","trading-assistant.form.sectionStrategyMarket":"Strategy & market","trading-assistant.form.sectionStrategyMarketDesc":"Strategy type, symbols, capital, and timeframe","trading-assistant.form.sectionRiskExecutionParams":"Risk & position","trading-assistant.form.sectionRiskExecutionParamsDesc":"TP/SL, scaling, position size, and optional AI filter","trading-assistant.form.simpleMode":"Simple","trading-assistant.form.advancedMode":"Advanced","trading-assistant.form.simpleModeHint":"Keep only the essentials and finish setup in about a minute","trading-assistant.form.advancedModeHint":"Best for TP/SL, position sizing and AI filter configuration","trading-assistant.form.defaultStrategyName":"Auto","trading-assistant.form.defaultScriptStrategyName":"Python script","trading-assistant.form.defaultStrategySuffix":" Strategy","trading-assistant.form.strategyNameHint":"A default name has been generated for you, but you can change it anytime","trading-assistant.form.simpleModePreset":"Recommended defaults","trading-assistant.form.simpleModePresetValue":"Starts with 15m / Futures / 5x. You can add TP/SL and position management later in Advanced mode.","trading-assistant.form.simpleModeSectionCore":"Core trading setup","trading-assistant.form.simpleModeSectionCoreDesc":"Finish pair and capital settings first, then decide whether to enable live trading or add advanced risk controls.","trading-assistant.form.step2HeroTitle":"Final execution setup","trading-assistant.form.step2HeroDesc":"Choose whether this strategy should only send signals or connect to live trading, then configure notification channels so you never miss an alert.","trading-assistant.form.executionSectionTitle":"Execution mode","trading-assistant.form.executionSectionDesc":"Pick how the strategy should run. If the market supports it, you can switch directly to automated live trading.","trading-assistant.form.notificationSectionTitle":"Signal notifications","trading-assistant.form.notificationSectionDesc":"Keep at least one instant notification channel enabled so you can react quickly to entries and exits.","trading-assistant.form.riskSectionTitle":"Risk notice","trading-assistant.form.riskSectionDesc":"Before enabling live trading, double-check the trading risk and your account permission scope.","trading-assistant.form.liveConnectionSectionTitle":"Live connection","trading-assistant.form.liveConnectionSectionDesc":"Select a saved exchange credential. The strategy will use this account for real order execution.","trading-assistant.form.simpleStep1":"Select Indicator & Pair","trading-assistant.form.simpleStep2":"Launch Mode","trading-assistant.form.simpleDefaultsHint":"Defaults (expand to customize)","trading-assistant.form.marketCategory":"Market Category","trading-assistant.form.marketCategoryHint":"Select a market first. Only Crypto can enable live trading; other markets are signal-only.","trading-assistant.market.USStock":"US Stock","trading-assistant.market.Crypto":"Crypto","trading-assistant.market.Forex":"Forex","trading-assistant.form.indicator":"Select Indicator","trading-assistant.form.indicatorHint":"You can only select indicators you have purchased or created","trading-assistant.indicatorEmpty.title":"No indicators available","trading-assistant.indicatorEmpty.desc":"Create or purchase a technical indicator on the Charts & Indicators page, then return here to select it.","trading-assistant.indicatorEmpty.cta":"Go to Charts & Indicators","trading-assistant.noCredentialForLive.title":"No saved accounts for this market","trading-assistant.noCredentialForLive.desc":"Add an exchange account here; it will appear in the dropdown after saving.","trading-assistant.form.qdtCostHints":"Using strategies will consume QDT, please ensure your account has sufficient QDT balance","trading-assistant.form.indicatorDescription":"Indicator Description","trading-assistant.form.noDescription":"No description","trading-assistant.form.indicatorParams":"Indicator Parameters","trading-assistant.form.indicatorParamsHint":"These parameters will be passed to the indicator code. Different strategies can use different parameter values.","trading-assistant.form.exchange":"Select Exchange","trading-assistant.form.apiKey":"API Key","trading-assistant.form.secretKey":"Secret Key","trading-assistant.form.passphrase":"Passphrase","trading-assistant.form.testConnection":"Test Connection","trading-assistant.form.strategyName":"Strategy Name","trading-assistant.form.symbol":"Trading Pair","trading-assistant.form.symbols":"Trading Pairs (Multi-select)","trading-assistant.form.symbolHint":"Symbol format depends on the selected market","trading-assistant.form.symbolsHint":"Select multiple pairs to create strategies for each","trading-assistant.form.strategyType":"Strategy Type","trading-assistant.form.strategyTypeSingle":"Single Symbol Strategy","trading-assistant.form.strategyTypeCrossSectional":"Cross-Sectional Strategy","trading-assistant.form.strategyTypeHint":"Single Symbol: Trade a single symbol; Cross-Sectional: Manage a portfolio of multiple symbols","trading-assistant.form.symbolList":"Symbol List","trading-assistant.form.symbolListHint":"Select multiple symbols, strategy will rank and rebalance based on indicator scores","trading-assistant.form.portfolioSize":"Portfolio Size","trading-assistant.form.portfolioSizeHint":"Number of symbols to hold simultaneously","trading-assistant.form.longRatio":"Long Ratio","trading-assistant.form.longRatioHint":"Proportion of long positions (0-1), e.g. 0.5 means 50% long, 50% short","trading-assistant.form.rebalanceFrequency":"Rebalance Frequency","trading-assistant.form.rebalanceDaily":"Daily","trading-assistant.form.rebalanceWeekly":"Weekly","trading-assistant.form.rebalanceMonthly":"Monthly","trading-assistant.form.rebalanceFrequencyHint":"Frequency of portfolio rebalancing","trading-assistant.form.addSymbol":"Add Symbol","trading-assistant.form.addSymbolTitle":"Add Symbol to Watchlist","trading-assistant.form.searchSymbolPlaceholder":"Search by code, e.g. BTC, AAPL","trading-assistant.form.noSymbolFound":"No matching symbol found","trading-assistant.form.canDirectAdd":"You can directly add the code","trading-assistant.form.searchSymbolHint":"Enter code to search symbols","trading-assistant.form.confirmAdd":"Confirm Add","trading-assistant.form.addSymbolSuccess":"Symbol added successfully","trading-assistant.form.addSymbolFailed":"Failed to add, please try again","trading-assistant.form.pleaseSelectSymbol":"Please select or enter a symbol","trading-assistant.form.symbolHintCrypto":"Crypto: use trading pairs like BTC/USDT","trading-assistant.form.symbolHintGeneral":"Enter the symbol for the selected market (e.g. 600519, AAPL, EURUSD).","trading-assistant.form.initialCapital":"Initial Capital","trading-assistant.form.marketType":"Market Type","trading-assistant.form.marketTypeFutures":"Futures","trading-assistant.form.marketTypeSpot":"Spot","trading-assistant.form.marketTypeHint":"Futures support bidirectional trading and leverage, spot only supports long positions with fixed 1x leverage","trading-assistant.form.leverage":"Leverage","trading-assistant.form.leverageHint":"Futures: 1-125x, Spot: Fixed 1x","trading-assistant.form.spotLeverageFixed":"Spot trading leverage is fixed at 1x","trading-assistant.form.spotOnlyLongHint":"Spot trading only supports long positions","trading-assistant.form.tradeDirection":"Trade Direction","trading-assistant.form.tradeDirectionLong":"Long Only","trading-assistant.form.tradeDirectionShort":"Short Only","trading-assistant.form.tradeDirectionBoth":"Both","trading-assistant.form.timeframe":"Timeframe","trading-assistant.form.klinePeriod":"K-Line Period","trading-assistant.form.timeframe1m":"1 Minute","trading-assistant.form.timeframe5m":"5 Minutes","trading-assistant.form.timeframe15m":"15 Minutes","trading-assistant.form.timeframe30m":"30 Minutes","trading-assistant.form.timeframe1H":"1 Hour","trading-assistant.form.timeframe4H":"4 Hours","trading-assistant.form.timeframe1D":"1 Day","trading-assistant.form.selectStrategyType":"Select Strategy Type","trading-assistant.form.indicatorStrategy":"Indicator Strategy","trading-assistant.form.indicatorStrategyDesc":"Automated trading strategy based on technical indicators","trading-assistant.form.aiStrategy":"AI Strategy","trading-assistant.form.aiStrategyDesc":"Automated trading strategy based on AI intelligent decision-making","trading-assistant.form.enableAiFilter":"Enable AI Intelligent Decision Filter","trading-assistant.form.enableAiFilterHint":"When enabled, indicator signals will be filtered by AI to improve trading quality","trading-assistant.form.aiFilterPrompt":"Custom Prompt","trading-assistant.form.aiFilterPromptHint":"Provide custom instructions for AI filtering, leave blank to use system default","trading-assistant.validation.strategyTypeRequired":"Please select a strategy type","trading-assistant.validation.marketCategoryRequired":"Please select a market category","trading-assistant.form.advancedSettings":"Advanced Settings","trading-assistant.form.orderMode":"Order Mode","trading-assistant.form.orderModeMaker":"Maker (Limit)","trading-assistant.form.orderModeTaker":"Taker (Market)","trading-assistant.form.orderModeHint":"Maker mode uses limit orders with lower fees; Taker mode executes immediately with higher fees","trading-assistant.form.makerWaitSec":"Maker Wait Time (seconds)","trading-assistant.form.makerWaitSecHint":"Time to wait for order fill before canceling and retrying","trading-assistant.form.makerRetries":"Maker Retries","trading-assistant.form.makerRetriesHint":"Maximum number of retries when maker order is not filled","trading-assistant.form.fallbackToMarket":"Fallback to Market on failure","trading-assistant.form.fallbackToMarketHint":"If limit order (open/close) is not filled, downgrade to market order to ensure execution","trading-assistant.form.marginMode":"Margin Mode","trading-assistant.form.marginModeCross":"Cross Margin","trading-assistant.form.marginModeIsolated":"Isolated Margin","trading-assistant.form.stopLossPct":"Stop Loss (%)","trading-assistant.form.stopLossPctHint":"Set stop loss percentage, 0 means disabled","trading-assistant.form.takeProfitPct":"Take Profit (%)","trading-assistant.form.takeProfitPctHint":"Set take profit percentage, 0 means disabled","trading-assistant.form.commission":"Commission (%)","trading-assistant.form.commissionHint":"Trading fee percentage (optional)","trading-assistant.form.slippage":"Slippage (%)","trading-assistant.form.slippageHint":"Estimated slippage percentage (optional)","trading-assistant.form.executionMode":"Execution","trading-assistant.form.executionModeSignal":"Signal only (push notifications)","trading-assistant.form.executionModeLive":"Live trading","trading-assistant.form.executionModeSignalDesc":"The system only sends strategy alerts and signals. You decide whether to place the order manually.","trading-assistant.form.executionModeLiveDesc":"The strategy connects to your trading account and places real orders automatically after you confirm the risk setup.","trading-assistant.form.liveTradingCryptoOnlyHint":"Live trading is available for Crypto only. Other markets can only push signals.","trading-assistant.form.liveTradingNotSupportedHint":"Live trading is not available for this market","trading-assistant.form.broker":"Broker","trading-assistant.form.localDeploymentRequired":"⚠️ Local Deployment Required","trading-assistant.form.localDeploymentHint":"IBKR and MT5 are external trading interfaces that require local deployment of QuantDinger. Cloud SaaS mode is not supported. Please ensure you have installed and configured the trading software (TWS/IB Gateway or MT5 terminal) on your local machine.","trading-assistant.form.ibkrConnectionTitle":"Interactive Brokers Connection","trading-assistant.form.ibkrConnectionHint":"Make sure TWS or IB Gateway is running with API enabled","trading-assistant.validation.brokerRequired":"Please select a broker","trading-assistant.placeholders.selectBroker":"Select broker","trading-assistant.brokerNames":{ibkr:"Interactive Brokers (IBKR)",mt5:"MetaTrader 5 (MT5)",mt4:"MetaTrader 4 (MT4)",futu:"Futu Securities",tiger:"Tiger Brokers",td:"TD Ameritrade",schwab:"Charles Schwab"},"trading-assistant.form.ibkrHost":"Host","trading-assistant.form.ibkrPort":"Port","trading-assistant.form.ibkrPortHint":"TWS Live:7497, TWS Paper:7496, Gateway Live:4001, Gateway Paper:4002","trading-assistant.form.ibkrClientId":"Client ID","trading-assistant.form.ibkrAccount":"Account","trading-assistant.form.ibkrAccountHint":"Leave empty to auto-select first account. Specify for multi-account users.","trading-assistant.placeholders.ibkrAccount":"Optional, e.g. U1234567","trading-assistant.exchange.ibkrConnectionSuccess":"IBKR connected successfully","trading-assistant.exchange.ibkrConnectionFailed":"IBKR connection failed. Please check if TWS/Gateway is running.","trading-assistant.exchange.checkLocalDeployment":"Please ensure you are running locally. Cloud SaaS does not support external trading interfaces.","trading-assistant.form.forexBroker":"Forex Broker","trading-assistant.form.mt5ConnectionTitle":"MetaTrader 5 Connection","trading-assistant.form.mt5ConnectionHint":"Make sure MT5 terminal is running and logged in (Windows only)","trading-assistant.form.mt5Server":"Server","trading-assistant.form.mt5ServerHint":"Broker server name (e.g., ICMarkets-Demo)","trading-assistant.form.mt5Login":"Account Number","trading-assistant.form.mt5Password":"Password","trading-assistant.form.mt5TerminalPath":"MT5 Terminal Path (Optional)","trading-assistant.form.mt5TerminalPathHint":"If MT5 terminal is not installed in the default location, specify the full path to terminal64.exe (e.g., C:\\Program Files\\MetaTrader 5\\terminal64.exe)","trading-assistant.placeholders.mt5Server":"e.g., ICMarkets-Demo","trading-assistant.placeholders.mt5Login":"e.g., 12345678","trading-assistant.placeholders.mt5Password":"Your MT5 password","trading-assistant.placeholders.mt5TerminalPath":"e.g., C:\\Program Files\\MetaTrader 5\\terminal64.exe","trading-assistant.validation.mt5ServerRequired":"Please enter MT5 server","trading-assistant.validation.mt5LoginRequired":"Please enter MT5 account number","trading-assistant.validation.mt5PasswordRequired":"Please enter MT5 password","trading-assistant.validation.portfolioSizeRequired":"Please enter portfolio size","trading-assistant.validation.longRatioRequired":"Please enter long ratio","trading-assistant.exchange.mt5ConnectionSuccess":"MT5 connected successfully","trading-assistant.exchange.mt5ConnectionFailed":"MT5 connection failed. Please check if terminal is running.","trading-assistant.form.notifyChannels":"Notification Channels","trading-assistant.form.notifyChannelsHint":"Choose how you want to receive buy/sell and risk-management signals.","trading-assistant.notify.browser":"Browser","trading-assistant.notify.email":"Email","trading-assistant.notify.phone":"Phone","trading-assistant.notify.telegram":"Telegram","trading-assistant.notify.discord":"Discord","trading-assistant.notify.webhook":"Webhook","trading-assistant.form.notifyEmail":"Email","trading-assistant.form.notifyPhone":"Phone number","trading-assistant.form.notifyTelegram":"Telegram (chat id / username)","trading-assistant.form.notifyDiscord":"Discord (webhook url)","trading-assistant.form.notifyWebhook":"Webhook URL","trading-assistant.form.liveTradingConfigTitle":"Exchange Credentials","trading-assistant.form.liveTradingConfigHint":"Provide your exchange API credentials. You can test the connection before saving.","trading-assistant.form.savedCredential":"Saved credential","trading-assistant.form.savedCredentialHint":"Select a saved credential to auto-fill API keys (optional).","trading-assistant.form.saveCredential":"Save this credential for future use","trading-assistant.form.credentialName":"Credential name (optional)","trading-assistant.form.signalMode":"Signal Mode","trading-assistant.form.signalModeConfirmed":"Confirmed","trading-assistant.form.signalModeAggressive":"Aggressive","trading-assistant.form.signalModeHint":"Confirmed: only check completed candles; Aggressive: also check forming candles","trading-assistant.form.cancel":"Cancel","trading-assistant.form.prev":"Previous","trading-assistant.form.next":"Next","trading-assistant.form.confirmCreate":"Confirm Create","trading-assistant.form.confirmEdit":"Confirm Edit","trading-assistant.messages.createSuccess":"Strategy created successfully","trading-assistant.messages.createFailed":"Failed to create strategy","trading-assistant.messages.updateSuccess":"Strategy updated successfully","trading-assistant.messages.updateFailed":"Failed to update strategy","trading-assistant.messages.deleteSuccess":"Strategy deleted successfully","trading-assistant.messages.deleteFailed":"Failed to delete strategy","trading-assistant.messages.startSuccess":"Strategy started successfully","trading-assistant.messages.startFailed":"Failed to start strategy","trading-assistant.messages.stopSuccess":"Strategy stopped successfully","trading-assistant.messages.stopFailed":"Failed to stop strategy","trading-assistant.messages.loadFailed":"Failed to load strategy list","trading-assistant.messages.runningWarning":"Strategy is running, please stop it before editing","trading-assistant.messages.deleteConfirmWithName":'Are you sure you want to delete strategy "{name}"? This action cannot be undone.',"trading-assistant.messages.deleteConfirm":"Are you sure you want to delete this strategy? This action cannot be undone.","trading-assistant.messages.loadTradesFailed":"Failed to load trading records","trading-assistant.messages.loadPositionsFailed":"Failed to load position records","trading-assistant.messages.loadEquityFailed":"Failed to load equity curve","trading-assistant.messages.loadIndicatorsFailed":"Failed to load indicator list, please try again later","trading-assistant.messages.spotLimitations":"Spot trading has been automatically set to long only with 1x leverage","trading-assistant.messages.autoFillApiConfig":"Auto-filled API configuration for this exchange from history","trading-assistant.messages.batchCreateSuccess":"Successfully created {count} strategies","trading-assistant.messages.batchStartSuccess":"Successfully started {count} strategies","trading-assistant.messages.batchStartFailed":"Failed to start strategies","trading-assistant.messages.batchStopSuccess":"Successfully stopped {count} strategies","trading-assistant.messages.batchStopFailed":"Failed to stop strategies","trading-assistant.messages.batchDeleteSuccess":"Successfully deleted {count} strategies","trading-assistant.messages.batchDeleteFailed":"Failed to delete strategies","trading-assistant.messages.batchDeleteConfirm":'Are you sure you want to delete {count} strategies in group "{name}"? This action cannot be undone.',"trading-assistant.placeholders.selectIndicator":"Please select an indicator","trading-assistant.placeholders.selectExchange":"Please select an exchange","trading-assistant.placeholders.selectMarketCategory":"Please select market category","trading-assistant.placeholders.inputApiKey":"Please enter API Key","trading-assistant.placeholders.inputSecretKey":"Please enter Secret Key","trading-assistant.placeholders.inputPassphrase":"Please enter Passphrase","trading-assistant.placeholders.inputStrategyName":"Please enter strategy name","trading-assistant.placeholders.selectSymbol":"Please select trading pair","trading-assistant.placeholders.selectSymbols":"Please select trading pairs (multi-select)","trading-assistant.placeholders.inputSymbol":"Please enter symbol","trading-assistant.placeholders.selectTimeframe":"Please select timeframe","trading-assistant.placeholders.selectKlinePeriod":"Please select K-line period","trading-assistant.placeholders.inputAiFilterPrompt":"Please enter custom prompt (optional)","trading-assistant.placeholders.inputEmail":"Please enter email","trading-assistant.placeholders.inputPhone":"Please enter phone number","trading-assistant.placeholders.inputTelegram":"Please enter Telegram chat id / username","trading-assistant.placeholders.inputDiscord":"Please enter Discord webhook url","trading-assistant.placeholders.inputWebhook":"Please enter webhook url","trading-assistant.placeholders.selectSavedCredential":"Select saved credential","trading-assistant.placeholders.inputCredentialName":"For example: Binance main key","trading-assistant.validation.indicatorRequired":"Please select an indicator","trading-assistant.validation.exchangeRequired":"Please select an exchange","trading-assistant.validation.apiKeyRequired":"Please enter API Key","trading-assistant.validation.secretKeyRequired":"Please enter Secret Key","trading-assistant.validation.passphraseRequired":"Please enter Passphrase","trading-assistant.validation.exchangeConfigIncomplete":"Please fill in complete exchange configuration information","trading-assistant.validation.testConnectionRequired":'Please click "Test Connection" button and ensure the connection is successful',"trading-assistant.validation.testConnectionFailed":"Connection test failed, please check the configuration and test again","trading-assistant.validation.credentialRequired":"Please add and test exchange credentials in Personal Center first","trading-assistant.validation.strategyNameRequired":"Please enter strategy name","trading-assistant.validation.symbolRequired":"Please select trading pair","trading-assistant.validation.symbolsRequired":"Please select at least one trading pair","trading-assistant.validation.initialCapitalRequired":"Please enter initial capital","trading-assistant.validation.leverageRequired":"Please enter leverage","trading-assistant.validation.emailInvalid":"Invalid email address","trading-assistant.validation.notifyChannelRequired":"Please select at least one notification channel","trading-assistant.table.time":"Time","trading-assistant.table.type":"Type","trading-assistant.table.price":"Price","trading-assistant.table.amount":"Amount","trading-assistant.table.value":"Value","trading-assistant.table.commission":"Commission","trading-assistant.table.symbol":"Trading Pair","trading-assistant.table.side":"Side","trading-assistant.table.size":"Position Size","trading-assistant.table.entryPrice":"Entry Price","trading-assistant.table.currentPrice":"Current Price","trading-assistant.table.unrealizedPnl":"Unrealized P&L","trading-assistant.table.pnlPercent":"P&L %","trading-assistant.table.buy":"Buy","trading-assistant.table.sell":"Sell","trading-assistant.table.long":"Long","trading-assistant.table.short":"Short","trading-assistant.table.noPositions":"No positions","trading-assistant.detail.title":"Strategy Details","trading-assistant.detail.strategyName":"Strategy Name","trading-assistant.detail.strategyType":"Strategy Type","trading-assistant.detail.status":"Status","trading-assistant.detail.tradingMode":"Trading Mode","trading-assistant.detail.exchange":"Exchange","trading-assistant.detail.initialCapital":"Initial Capital","trading-assistant.detail.totalInvestment":"Total Investment","trading-assistant.detail.currentEquity":"Current Equity","trading-assistant.detail.totalPnl":"Total P&L","trading-assistant.detail.indicatorName":"Indicator Name","trading-assistant.detail.maxLeverage":"Max Leverage","trading-assistant.detail.decideInterval":"Decision Interval","trading-assistant.detail.symbols":"Trading Symbols","trading-assistant.detail.createdAt":"Created At","trading-assistant.detail.updatedAt":"Updated At","trading-assistant.detail.llmConfig":"AI Model Configuration","trading-assistant.detail.exchangeConfig":"Exchange Configuration","trading-assistant.detail.provider":"Provider","trading-assistant.detail.modelId":"Model ID","trading-assistant.detail.close":"Close","trading-assistant.detail.loadFailed":"Failed to load strategy details","trading-assistant.equity.noData":"No equity data","trading-assistant.equity.equity":"Equity","trading-assistant.exchange.tradingMode":"Trading Mode","trading-assistant.exchange.virtual":"Virtual Trading","trading-assistant.exchange.live":"Live Trading","trading-assistant.exchange.selectExchange":"Select Exchange","trading-assistant.exchange.walletAddress":"Wallet Address","trading-assistant.exchange.walletAddressPlaceholder":"Please enter wallet address (starts with 0x)","trading-assistant.exchange.privateKey":"Private Key","trading-assistant.exchange.privateKeyPlaceholder":"Please enter private key (64 characters)","trading-assistant.exchange.testConnection":"Test Connection","trading-assistant.exchange.connectionSuccess":"Connection successful","trading-assistant.exchange.connectionFailed":"Connection failed","trading-assistant.exchange.testFailed":"Connection test failed","trading-assistant.exchange.fillComplete":"Please fill in complete exchange configuration information","trading-assistant.exchange.ipWhitelistTip":"Please add the following IPs to the whitelist in your exchange API settings:","trading-assistant.strategyTypeOptions.ai":"AI-Driven Strategy","trading-assistant.strategyTypeOptions.indicator":"Indicator Strategy","trading-assistant.strategyTypeOptions.aiDeveloping":"AI-Driven Strategy feature is under development, stay tuned","trading-assistant.strategyTypeOptions.aiDevelopingWarning":"AI-Driven Strategy feature is under development","trading-assistant.indicatorType.trend":"Trend","trading-assistant.indicatorType.momentum":"Momentum","trading-assistant.indicatorType.volatility":"Volatility","trading-assistant.indicatorType.volume":"Volume","trading-assistant.indicatorType.custom":"Custom","trading-assistant.indicatorType.python":"Python","trading-assistant.indicatorType.pine":"Pine Script","trading-assistant.exchangeNames":{okx:"OKX",binance:"Binance",hyperliquid:"Hyperliquid",blockchaincom:"Blockchain.com",coinbaseexchange:"Coinbase",gate:"Gate.io",mexc:"MEXC",kraken:"Kraken",bitfinex:"Bitfinex",bybit:"Bybit",kucoin:"KuCoin",huobi:"Huobi",bitget:"Bitget",bitmex:"BitMEX",deribit:"Deribit",phemex:"Phemex",bitmart:"BitMart",bitstamp:"Bitstamp",bittrex:"Bittrex",poloniex:"Poloniex",gemini:"Gemini",cryptocom:"Crypto.com",bitflyer:"bitFlyer",upbit:"Upbit",bithumb:"Bithumb",coinone:"Coinone",zb:"ZB",lbank:"LBank",bibox:"Bibox",bigone:"BigONE",bitrue:"Bitrue",coinex:"CoinEx",digifinex:"DigiFinex",ftx:"FTX",ftxus:"FTX US",binanceus:"Binance US",binancecoinm:"Binance COIN-M",binanceusdm:"Binance USDⓈ-M",ibkr:"Interactive Brokers (IBKR)",deepcoin:"Deepcoin"},"ai-trading-assistant.title":"AI Trading Assistant","ai-trading-assistant.strategyList":"Strategy List","ai-trading-assistant.createStrategy":"Create Strategy","ai-trading-assistant.noStrategy":"No strategies","ai-trading-assistant.selectStrategy":"Please select a strategy from the left to view details","ai-trading-assistant.startStrategy":"Start Strategy","ai-trading-assistant.stopStrategy":"Stop Strategy","ai-trading-assistant.editStrategy":"Edit Strategy","ai-trading-assistant.deleteStrategy":"Delete Strategy","ai-trading-assistant.status.running":"Running","ai-trading-assistant.status.stopped":"Stopped","ai-trading-assistant.status.error":"Error","ai-trading-assistant.tabs.tradingRecords":"Trading Records","ai-trading-assistant.tabs.positions":"Positions","ai-trading-assistant.tabs.aiDecisions":"AI Decisions","ai-trading-assistant.tabs.equityCurve":"Equity Curve","ai-trading-assistant.form.createTitle":"Create AI Trading Strategy","ai-trading-assistant.form.editTitle":"Edit AI Trading Strategy","ai-trading-assistant.form.strategyName":"Strategy Name","ai-trading-assistant.form.modelId":"AI Model","ai-trading-assistant.form.modelIdHint":"Using system OpenRouter service, no API Key configuration needed","ai-trading-assistant.form.decideInterval":"Decision Interval","ai-trading-assistant.form.decideInterval5m":"5 Minutes","ai-trading-assistant.form.decideInterval10m":"10 Minutes","ai-trading-assistant.form.decideInterval30m":"30 Minutes","ai-trading-assistant.form.decideInterval1h":"1 Hour","ai-trading-assistant.form.decideInterval4h":"4 Hours","ai-trading-assistant.form.decideInterval1d":"1 Day","ai-trading-assistant.form.decideInterval1w":"1 Week","ai-trading-assistant.form.decideIntervalHint":"Time interval for AI decision making","ai-trading-assistant.form.runPeriod":"Run Period","ai-trading-assistant.form.runPeriodHint":"Start and end time for strategy execution","ai-trading-assistant.form.startDate":"Start Date","ai-trading-assistant.form.endDate":"End Date","ai-trading-assistant.form.qdtCostTitle":"QDT Cost Notice","ai-trading-assistant.form.qdtCostHint":"Each AI decision will cost {cost} QDT. Please ensure your account has sufficient QDT balance. During strategy execution, each decision will be charged in real-time.","ai-trading-assistant.form.apiKey":"API Key","ai-trading-assistant.form.exchange":"Select Exchange","ai-trading-assistant.form.secretKey":"Secret Key","ai-trading-assistant.form.passphrase":"Passphrase","ai-trading-assistant.form.testConnection":"Test Connection","ai-trading-assistant.form.symbol":"Trading Pair","ai-trading-assistant.form.symbolHint":"Select the trading pair to trade","ai-trading-assistant.form.initialCapital":"Initial Capital (Margin)","ai-trading-assistant.form.leverage":"Leverage","ai-trading-assistant.form.timeframe":"Timeframe","ai-trading-assistant.form.timeframe1m":"1 Minute","ai-trading-assistant.form.timeframe5m":"5 Minutes","ai-trading-assistant.form.timeframe15m":"15 Minutes","ai-trading-assistant.form.timeframe30m":"30 Minutes","ai-trading-assistant.form.timeframe1H":"1 Hour","ai-trading-assistant.form.timeframe4H":"4 Hours","ai-trading-assistant.form.timeframe1D":"1 Day","ai-trading-assistant.form.marketType":"Market Type","ai-trading-assistant.form.marketTypeFutures":"Futures","ai-trading-assistant.form.marketTypeSpot":"Spot","ai-trading-assistant.form.totalPnl":"Total PnL","ai-trading-assistant.form.customPrompt":"Custom Prompt","ai-trading-assistant.form.customPromptHint":"Optional, used to customize AI trading strategy and decision logic","ai-trading-assistant.form.cancel":"Cancel","ai-trading-assistant.form.prev":"Previous","ai-trading-assistant.form.next":"Next","ai-trading-assistant.form.confirmCreate":"Confirm Create","ai-trading-assistant.form.confirmEdit":"Confirm Edit","ai-trading-assistant.messages.createSuccess":"Strategy created successfully","ai-trading-assistant.messages.createFailed":"Failed to create strategy","ai-trading-assistant.messages.updateSuccess":"Strategy updated successfully","ai-trading-assistant.messages.updateFailed":"Failed to update strategy","ai-trading-assistant.messages.deleteSuccess":"Strategy deleted successfully","ai-trading-assistant.messages.deleteFailed":"Failed to delete strategy","ai-trading-assistant.messages.startSuccess":"Strategy started successfully","ai-trading-assistant.messages.startFailed":"Failed to start strategy","ai-trading-assistant.messages.stopSuccess":"Strategy stopped successfully","ai-trading-assistant.messages.stopFailed":"Failed to stop strategy","ai-trading-assistant.messages.loadFailed":"Failed to load strategy list","ai-trading-assistant.messages.loadDecisionsFailed":"Failed to load AI decision records","ai-trading-assistant.messages.deleteConfirm":"Are you sure you want to delete this strategy? This action cannot be undone.","ai-trading-assistant.placeholders.inputStrategyName":"Please enter strategy name","ai-trading-assistant.placeholders.selectModelId":"Please select AI model","ai-trading-assistant.placeholders.selectDecideInterval":"Please select decision interval","ai-trading-assistant.placeholders.startTime":"Start Time","ai-trading-assistant.placeholders.endTime":"End Time","ai-trading-assistant.placeholders.inputApiKey":"Please enter API Key","ai-trading-assistant.placeholders.selectExchange":"Please select an exchange","ai-trading-assistant.placeholders.inputSecretKey":"Please enter Secret Key","ai-trading-assistant.placeholders.inputPassphrase":"Please enter Passphrase","ai-trading-assistant.placeholders.selectSymbol":"Please select trading pair, e.g.: BTC/USDT","ai-trading-assistant.placeholders.selectTimeframe":"Please select timeframe","ai-trading-assistant.placeholders.inputCustomPrompt":"Please enter custom prompt (optional)","ai-trading-assistant.validation.strategyNameRequired":"Please enter strategy name","ai-trading-assistant.validation.modelIdRequired":"Please select AI model","ai-trading-assistant.validation.runPeriodRequired":"Please select run period","ai-trading-assistant.validation.apiKeyRequired":"Please enter API Key","ai-trading-assistant.validation.exchangeRequired":"Please select an exchange","ai-trading-assistant.validation.secretKeyRequired":"Please enter Secret Key","ai-trading-assistant.validation.symbolRequired":"Please select trading pair","ai-trading-assistant.validation.initialCapitalRequired":"Please enter initial capital","ai-trading-assistant.table.time":"Time","ai-trading-assistant.table.type":"Type","ai-trading-assistant.table.price":"Price","ai-trading-assistant.table.amount":"Amount","ai-trading-assistant.table.value":"Value","ai-trading-assistant.table.symbol":"Trading Pair","ai-trading-assistant.table.side":"Side","ai-trading-assistant.table.size":"Position Size","ai-trading-assistant.table.entryPrice":"Entry Price","ai-trading-assistant.table.currentPrice":"Current Price","ai-trading-assistant.table.unrealizedPnl":"Unrealized P&L","ai-trading-assistant.table.profit":"Profit","ai-trading-assistant.table.openLong":"Open Long","ai-trading-assistant.table.closeLong":"Close Long","ai-trading-assistant.table.openShort":"Open Short","ai-trading-assistant.table.closeShort":"Close Short","ai-trading-assistant.table.addLong":"Add Long","ai-trading-assistant.table.addShort":"Add Short","ai-trading-assistant.table.closeShortProfit":"Close Short (TP)","ai-trading-assistant.table.closeShortStop":"Close Short (SL)","ai-trading-assistant.table.closeLongProfit":"Close Long (TP)","ai-trading-assistant.table.closeLongStop":"Close Long (SL)","ai-trading-assistant.table.buy":"Buy","ai-trading-assistant.table.sell":"Sell","ai-trading-assistant.table.long":"Long","ai-trading-assistant.table.short":"Short","ai-trading-assistant.table.hold":"Hold","ai-trading-assistant.table.reasoning":"Analysis Reasoning","ai-trading-assistant.table.decisions":"Decisions","ai-trading-assistant.table.riskAssessment":"Risk","ai-trading-assistant.table.confidence":"Confidence","ai-trading-assistant.table.totalRecords":"Total {total} records","ai-trading-assistant.table.noPositions":"No positions","ai-trading-assistant.detail.title":"Strategy Details","ai-trading-assistant.equity.noData":"No equity data","ai-trading-assistant.equity.equity":"Equity","ai-trading-assistant.exchange.testFailed":"Connection test failed","ai-trading-assistant.exchange.connectionSuccess":"Connection successful","ai-trading-assistant.exchange.connectionFailed":"Connection failed","ai-trading-assistant.form.advancedSettings":"Advanced Settings","ai-trading-assistant.form.orderMode":"Order Mode","ai-trading-assistant.form.orderModeMaker":"Maker (Limit)","ai-trading-assistant.form.orderModeTaker":"Taker (Market)","ai-trading-assistant.form.orderModeHint":"Maker mode uses limit orders with lower fees; Taker mode executes immediately with higher fees","ai-trading-assistant.form.makerWaitSec":"Maker Wait Time (seconds)","ai-trading-assistant.form.makerWaitSecHint":"Time to wait for order fill before canceling and retrying","ai-trading-assistant.form.makerRetries":"Maker Retries","ai-trading-assistant.form.makerRetriesHint":"Maximum number of retries when maker order is not filled","ai-trading-assistant.form.fallbackToMarket":"Fallback to Market on failure","ai-trading-assistant.form.fallbackToMarketHint":"If limit order (open/close) is not filled, downgrade to market order to ensure execution","ai-trading-assistant.form.marginMode":"Margin Mode","ai-trading-assistant.form.marginModeCross":"Cross Margin","ai-trading-assistant.form.marginModeIsolated":"Isolated Margin","ai-analysis.title":"Quantum Trading Engine","ai-analysis.system.online":"ONLINE","ai-analysis.system.agents":"AGENTS","ai-analysis.system.active":"ACTIVE","ai-analysis.system.stage":"STAGE","ai-analysis.panel.roster":"AGENTS ROSTER","ai-analysis.panel.thinking":"Thinking...","ai-analysis.panel.done":"Done","ai-analysis.panel.standby":"Standby","ai-analysis.input.title":"QUANTUM TRADING ENGINE","ai-analysis.input.placeholder":"SELECT TARGET ASSET (e.g. BTC/USDT)","ai-analysis.input.watchlist":"Watchlist","ai-analysis.input.start":"START ANALYSIS","ai-analysis.input.recent":"RECENT MISSIONS:","ai-analysis.vis.stage":"STAGE","ai-analysis.vis.processing":"PROCESSING","ai-analysis.result.complete":"ANALYSIS COMPLETE","ai-analysis.result.signal":"FINAL SIGNAL","ai-analysis.result.confidence":"CONFIDENCE:","ai-analysis.result.new":"NEW ANALYSIS","ai-analysis.result.full":"VIEW FULL DOSSIER","ai-analysis.logs.title":"SYSTEM LOGS","ai-analysis.modal.title":"CLASSIFIED REPORT","ai-analysis.modal.fundamental":"FUNDAMENTAL ANALYSIS","ai-analysis.modal.technical":"TECHNICAL ANALYSIS","ai-analysis.modal.sentiment":"SENTIMENT ANALYSIS","ai-analysis.modal.risk":"RISK ASSESSMENT","ai-analysis.stage.idle":"IDLE","ai-analysis.stage.1":"PHASE 1: MULTI-DIMENSIONAL ANALYSIS","ai-analysis.stage.2":"PHASE 2: BULL/BEAR DEBATE","ai-analysis.stage.3":"PHASE 3: STRATEGIC PLANNING","ai-analysis.stage.4":"PHASE 4: RISK COMMITTEE REVIEW","ai-analysis.stage.complete":"COMPLETE","ai-analysis.agent.investment_director":"Investment Director","ai-analysis.agent.role.investment_director":"Comprehensive Analysis & Final Conclusion","ai-analysis.agent.market":"Market Analyst","ai-analysis.agent.role.market":"Technical & Market Data","ai-analysis.agent.fundamental":"Fundamental Analyst","ai-analysis.agent.role.fundamental":"Financials & Valuation","ai-analysis.agent.technical":"Technical Analyst","ai-analysis.agent.role.technical":"Technical Indicators & Charts","ai-analysis.agent.news":"News Analyst","ai-analysis.agent.role.news":"Global News Filter","ai-analysis.agent.sentiment":"Sentiment Analyst","ai-analysis.agent.role.sentiment":"Social & Emotional","ai-analysis.agent.risk":"Risk Analyst","ai-analysis.agent.role.risk":"Basic Risk Check","ai-analysis.agent.bull":"Bull Researcher","ai-analysis.agent.role.bull":"Growth Catalyst Hunter","ai-analysis.agent.bear":"Bear Researcher","ai-analysis.agent.role.bear":"Risk & Flaw Hunter","ai-analysis.agent.manager":"Research Manager","ai-analysis.agent.role.manager":"Debate Moderator","ai-analysis.agent.trader":"Trader Agent","ai-analysis.agent.role.trader":"Execution Strategist","ai-analysis.agent.risky":"Risky Analyst","ai-analysis.agent.role.risky":"Aggressive Strategy","ai-analysis.agent.neutral":"Neutral Analyst","ai-analysis.agent.role.neutral":"Balanced Strategy","ai-analysis.agent.safe":"Safe Analyst","ai-analysis.agent.role.safe":"Conservative Strategy","ai-analysis.agent.cro":"Risk Manager (CRO)","ai-analysis.agent.role.cro":"Final Decision Authority","ai-analysis.script.market":"Fetching OHLCV data from major exchanges...","ai-analysis.script.fundamental":"Retrieving quarterly financial reports...","ai-analysis.script.technical":"Analyzing technical indicators and chart patterns...","ai-analysis.script.news":"Scanning global financial news feeds...","ai-analysis.script.sentiment":"Analyzing social media trends...","ai-analysis.script.risk":"Calculating historical volatility...","invite.inviteLink":"Invite Link","invite.copy":"Copy Link","invite.copySuccess":"Copied successfully!","invite.copyFailed":"Copy failed, please copy manually","invite.noInviteLink":"Invite link not generated","invite.totalInvites":"Total Invites","invite.totalReward":"Total Reward","invite.rules":"Invite Rules","invite.rule1":"You will receive a reward for each friend you successfully invite to register","invite.rule2":"When your invited friend completes their first transaction, you will receive an additional reward","invite.rule3":"Invite rewards will be directly credited to your account","invite.inviteList":"Invite List","invite.tasks":"Task Center","invite.inviteeName":"Invitee","invite.inviteTime":"Invite Time","invite.status":"Status","invite.reward":"Reward","invite.active":"Active","invite.inactive":"Inactive","invite.completed":"Completed","invite.claimed":"Claimed","invite.pending":"Pending","invite.goToTask":"Go to Task","invite.claimReward":"Claim Reward","invite.verify":"Verify","invite.verifySuccess":"Verification successful! Task completed","invite.verifyNotCompleted":"Task not completed yet, please complete the task first","invite.verifyFailed":"Verification failed, please try again later","invite.claimSuccess":"Successfully claimed {reward} QDT!","invite.claimFailed":"Claim failed, please try again later","invite.totalRecords":"Total {total} records","invite.task.twitter.title":"Share Tweet on X (Twitter)","invite.task.twitter.desc":"Share our official tweet to your X (Twitter) account","invite.task.youtube.title":"Follow our YouTube Channel","invite.task.youtube.desc":"Subscribe and follow our official YouTube channel","invite.task.telegram.title":"Join Telegram Group","invite.task.telegram.desc":"Join our official Telegram community group","invite.task.discord.title":"Join Discord Server","invite.task.discord.desc":"Join our Discord community server",message:"-","layouts.usermenu.dialog.title":"Message","layouts.usermenu.dialog.content":"Are you sure you would like to logout?","layouts.userLayout.title":"Clarity from Uncertainty","signal-robot.title":"Signal Robot Console","signal-robot.createBot":"Create New Bot","signal-robot.search.nameOrSymbol":"Name/Symbol","signal-robot.search.placeholder":"Search bot name or symbol","signal-robot.search.status":"Status","signal-robot.search.statusAll":"All","signal-robot.search.statusRunning":"Running","signal-robot.search.statusPaused":"Paused","signal-robot.search.query":"Query","signal-robot.search.reset":"Reset","signal-robot.table.botName":"Bot Name","signal-robot.table.symbolTimeframe":"Symbol/Timeframe","signal-robot.table.triggerStrategy":"Trigger Strategy","signal-robot.table.notificationChannels":"Notification Channels","signal-robot.table.status":"Status","signal-robot.table.action":"Action","signal-robot.table.triggerConditions":"{count} trigger conditions","signal-robot.table.monitoring":"Monitoring","signal-robot.table.paused":"Paused","signal-robot.table.edit":"Edit","signal-robot.table.pause":"Pause","signal-robot.table.start":"Start","signal-robot.table.delete":"Delete","signal-robot.table.deleteConfirm":"Are you sure you want to delete this bot?","signal-robot.table.deleteSuccess":"Deleted successfully","signal-robot.table.startSuccess":"Bot started","signal-robot.table.pauseSuccess":"Bot paused","signal-robot.channel.telegram":"Telegram","signal-robot.channel.discord":"Discord","signal-robot.channel.email":"Email","signal-robot.channel.webhook":"Webhook","signal-robot.channel.browser":"Browser Push","signal-robot.modal.createTitle":"Create New Signal Robot","signal-robot.modal.editTitle":"Edit Signal Robot","signal-robot.modal.step.basic":"Basic Settings","signal-robot.modal.step.entry":"Entry Strategy","signal-robot.modal.step.position":"Position Management","signal-robot.modal.step.risk":"Risk Control","signal-robot.modal.step.notify":"Notification Config","signal-robot.modal.prev":"Previous","signal-robot.modal.next":"Next","signal-robot.modal.preview":"Preview Backtest","signal-robot.modal.complete":"Complete & Run","signal-robot.modal.saveSuccess":"Saved successfully","signal-robot.modal.previewDeveloping":"Preview feature is under development...","signal-robot.modal.basicInfoRequired":"Please complete basic information","signal-robot.basic.alert":"Set basic information for the bot","signal-robot.basic.title":"Basic Information","signal-robot.basic.botName":"Bot Name","signal-robot.basic.botNamePlaceholder":"e.g.: BTC SuperTrend Strategy","signal-robot.basic.symbol":"Trading Pair","signal-robot.basic.symbolPlaceholder":"Select from watchlist","signal-robot.basic.noWatchlist":"No watchlist items, please add in market page first","signal-robot.basic.timeframe":"K-Line Period","signal-robot.basic.timeframe15m":"15 Minutes","signal-robot.basic.timeframe30m":"30 Minutes","signal-robot.basic.timeframe1h":"1 Hour","signal-robot.basic.timeframe4h":"4 Hours","signal-robot.basic.timeframe1d":"1 Day","signal-robot.basic.autoNameSuggestion":"{symbol} Signal Robot","signal-robot.entry.alert":"Trigger entry signal when all conditions below are met","signal-robot.entry.condition":"Condition {index}","signal-robot.entry.indicator":"Indicator","signal-robot.entry.indicatorSupertrend":"SuperTrend","signal-robot.entry.indicatorEma":"EMA (Exponential Moving Average)","signal-robot.entry.indicatorRsi":"RSI (Relative Strength Index)","signal-robot.entry.indicatorMacd":"MACD","signal-robot.entry.indicatorBollinger":"Bollinger Bands","signal-robot.entry.atrPeriod":"ATR Period","signal-robot.entry.multiplier":"Multiplier","signal-robot.entry.triggerSignal":"Trigger Signal","signal-robot.entry.signalTrendBullish":"Trend Bullish","signal-robot.entry.signalTrendBearish":"Trend Bearish","signal-robot.entry.signalIsUptrend":"Is Uptrend","signal-robot.entry.signalIsDowntrend":"Is Downtrend","signal-robot.entry.period":"Period","signal-robot.entry.compareCondition":"Compare Condition","signal-robot.entry.priceAbove":"Price > EMA (Price Above)","signal-robot.entry.priceBelow":"Price < EMA (Price Below)","signal-robot.entry.crossUp":"Price Crosses Above EMA (Golden Cross)","signal-robot.entry.crossDown":"Price Crosses Below EMA (Death Cross)","signal-robot.entry.compare":"Compare","signal-robot.entry.greaterThan":"Greater Than","signal-robot.entry.lessThan":"Less Than","signal-robot.entry.crossUpShort":"Cross Up","signal-robot.entry.crossDownShort":"Cross Down","signal-robot.entry.threshold":"Threshold","signal-robot.entry.selectIndicator":"Please select an indicator to configure parameters","signal-robot.entry.addCondition":"Add Condition","signal-robot.position.alert":"Configure initial position size, leverage and pyramiding rules","signal-robot.position.basicTitle":"Basic Position Management","signal-robot.position.initialSize":"Initial Size (Capital %)","signal-robot.position.initialSizeHint":"Recommended 5% - 20%","signal-robot.position.leverage":"Leverage","signal-robot.position.leverageHint":"Please ensure your exchange account supports this leverage","signal-robot.position.maxPyramiding":"Max Pyramiding Times","signal-robot.position.maxPyramidingHint":"0 means no pyramiding","signal-robot.position.pyramidingTitle":"Pyramiding Rules","signal-robot.position.pyramidingEnabled":"Enabled","signal-robot.position.pyramidingDisabled":"Disabled","signal-robot.position.pyramidingCondition":"Pyramiding Trigger Condition","signal-robot.position.priceRisePct":"Price Rises (Long) / Falls (Short)","signal-robot.position.profitPct":"Profit Reaches","signal-robot.position.triggerThreshold":"Trigger Threshold (%)","signal-robot.position.triggerThresholdHint":"e.g. 3%: add position once every 3% rise","signal-robot.position.addSize":"Single Add Size (Capital %)","signal-robot.position.pyramidingDisabledHint":"Pyramiding disabled, only initial position will be executed","signal-robot.risk.alert":"Configure take profit, stop loss and exit rules","signal-robot.risk.stopLossTitle":"Stop Loss","signal-robot.risk.stopLossEnabled":"Enabled","signal-robot.risk.stopLossDisabled":"Disabled","signal-robot.risk.stopLossType":"Stop Loss Type","signal-robot.risk.stopLossFixedPct":"Fixed Percentage","signal-robot.risk.stopLossAtrMultiplier":"ATR Multiplier","signal-robot.risk.stopLossValue":"Value","signal-robot.risk.stopLossFixedHint":"e.g. 2%: stop loss when loss reaches 2%","signal-robot.risk.stopLossAtrHint":"e.g. 2.0: stop loss when price touches ATR*2.0","signal-robot.risk.stopLossDisabledHint":"Stop loss disabled (high risk)","signal-robot.risk.trailingStopTitle":"Trailing Stop","signal-robot.risk.activationProfit":"Activation Profit (%)","signal-robot.risk.activationProfitHint":"Start trailing when profit reaches this level","signal-robot.risk.callbackPct":"Callback (%)","signal-robot.risk.callbackPctHint":"Trigger take profit when price falls from peak by this percentage","signal-robot.risk.trailingStopDisabledHint":"Trailing stop disabled","signal-robot.risk.otherExitTitle":"Other Exit Rules","signal-robot.risk.signalExit":"Allow Signal Exit","signal-robot.risk.signalExitHint":"Close position immediately when reverse signal appears (e.g. close long when short signal appears)","signal-robot.notify.alert":"Configure notification methods when signal is triggered","signal-robot.notify.channelTitle":"Notification Channels","signal-robot.notify.discordWebhook":"Discord Webhook","signal-robot.notify.genericWebhook":"Generic Webhook","signal-robot.notify.webhookUrl":"Webhook URL","signal-robot.notify.webhookUrlPlaceholder":"https://example.com/webhook","signal-robot.notify.discordUrl":"Discord URL","signal-robot.notify.discordUrlPlaceholder":"https://discord.com/api/webhooks/...","signal-robot.operator.greaterThan":"Greater Than","signal-robot.operator.lessThan":"Less Than","signal-robot.operator.equal":"Equal","signal-robot.operator.goldenCross":"Golden Cross","signal-robot.operator.deathCross":"Death Cross","signal-robot.operator.increaseBy":"Increase By","signal-robot.operator.decreaseBy":"Decrease By","signal-robot.indicator.price":"Price","signal-robot.indicator.rsi":"RSI","signal-robot.indicator.kdjK":"KDJ(K)","signal-robot.indicator.kdjJ":"KDJ(J)","signal-robot.indicator.macd":"MACD","signal-robot.indicator.macdHist":"MACD Histogram","signal-robot.indicator.bollingerUp":"Bollinger Upper","signal-robot.indicator.bollingerLow":"Bollinger Lower","signal-robot.indicator.volume":"Volume","signal-robot.indicator.changePct1h":"1H Change %","signal-robot.indicator.changePct24h":"24H Change %","signal-robot.indicator.signalLine":"Signal Line","settings.title":"System Settings","settings.description":"Configure application settings, API keys, and system preferences","settings.save":"Save Settings","settings.reset":"Reset","settings.saveSuccess":"Settings saved successfully","settings.saveFailed":"Failed to save settings","settings.loadFailed":"Failed to load settings","settings.openrouterBalance":"OpenRouter Account Balance","settings.queryBalance":"Query Balance","settings.balanceUsage":"Used","settings.balanceRemaining":"Remaining","settings.balanceLimit":"Total Limit","settings.balanceQuerySuccess":"Balance query successful","settings.balanceQueryFailed":"Failed to query balance","settings.balanceNotQueried":'Click "Query Balance" to get account info',"settings.freeTier":"Free Tier","settings.default":"Default","settings.pleaseSelect":"Please select","settings.inputApiKey":"Enter key","settings.getApi":"Get API","settings.link.getApi":"Get API","settings.link.getApiKey":"Get API Key","settings.link.getToken":"Get Token","settings.link.createBot":"Create Bot","settings.link.viewModels":"View Models","settings.link.freeRegister":"Free Register","settings.link.supportedExchanges":"Supported Exchanges","settings.link.applyApi":"Apply API","settings.link.createSearchEngine":"Create Search Engine","settings.link.getTurnstileKey":"Get Turnstile Key","settings.link.getGoogleCredentials":"Get Google Credentials","settings.link.getGithubCredentials":"Get GitHub Credentials","settings.restartRequired":"Settings saved","settings.copyRestartCmd":"Copy restart command","settings.copySuccess":"Copied","settings.copyFailed":"Copy failed","settings.option.LLM_PROVIDER.openrouter":"OpenRouter (Multi-model gateway)","settings.option.LLM_PROVIDER.openai":"OpenAI Direct","settings.option.LLM_PROVIDER.google":"Google Gemini","settings.option.LLM_PROVIDER.deepseek":"DeepSeek","settings.option.LLM_PROVIDER.grok":"xAI Grok","settings.option.SEARCH_PROVIDER.tavily":"Tavily","settings.option.SEARCH_PROVIDER.google":"Google","settings.option.SEARCH_PROVIDER.bing":"Bing","settings.option.SEARCH_PROVIDER.none":"None","settings.option.ORDER_MODE.maker":"Maker (limit-first)","settings.option.ORDER_MODE.market":"Market (immediate fill)","settings.option.USDT_PAY_CHAIN.TRC20":"TRC20 (TRON)","settings.group.server":"Server Configuration","settings.group.auth":"Security & Authentication","settings.group.ai":"AI / LLM Configuration","settings.group.trading":"Live Trading","settings.group.strategy":"Strategy Execution","settings.group.data_source":"Data Sources","settings.group.notification":"Notifications","settings.group.email":"Email (SMTP)","settings.group.sms":"SMS (Twilio)","settings.group.agent":"AI Agent","settings.group.network":"Network & Proxy","settings.group.search":"Web Search","settings.group.security":"Registration & Security","settings.group.app":"Application","settings.field.SECRET_KEY":"Secret Key","settings.field.ADMIN_USER":"Admin Username","settings.field.ADMIN_PASSWORD":"Admin Password","settings.field.ADMIN_EMAIL":"Admin Email","settings.field.ENABLE_REGISTRATION":"Enable Registration","settings.field.TURNSTILE_SITE_KEY":"Turnstile Site Key","settings.field.TURNSTILE_SECRET_KEY":"Turnstile Secret Key","settings.field.FRONTEND_URL":"Frontend URL","settings.field.GOOGLE_CLIENT_ID":"Google Client ID","settings.field.GOOGLE_CLIENT_SECRET":"Google Client Secret","settings.field.GOOGLE_REDIRECT_URI":"Google Redirect URI","settings.field.GITHUB_CLIENT_ID":"GitHub Client ID","settings.field.GITHUB_CLIENT_SECRET":"GitHub Client Secret","settings.field.GITHUB_REDIRECT_URI":"GitHub Redirect URI","settings.field.SECURITY_IP_MAX_ATTEMPTS":"IP Max Failed Attempts","settings.field.SECURITY_IP_WINDOW_MINUTES":"IP Window (minutes)","settings.field.SECURITY_IP_BLOCK_MINUTES":"IP Block Duration (minutes)","settings.field.SECURITY_ACCOUNT_MAX_ATTEMPTS":"Account Max Failed Attempts","settings.field.SECURITY_ACCOUNT_WINDOW_MINUTES":"Account Window (minutes)","settings.field.SECURITY_ACCOUNT_BLOCK_MINUTES":"Account Block Duration (minutes)","settings.field.VERIFICATION_CODE_EXPIRE_MINUTES":"Verification Code Expiry (minutes)","settings.field.VERIFICATION_CODE_RATE_LIMIT":"Code Rate Limit (seconds)","settings.field.VERIFICATION_CODE_IP_HOURLY_LIMIT":"Code Hourly Limit per IP","settings.field.VERIFICATION_CODE_MAX_ATTEMPTS":"Code Max Attempts","settings.field.VERIFICATION_CODE_LOCK_MINUTES":"Code Lock Minutes","settings.field.PYTHON_API_HOST":"Listen Address","settings.field.PYTHON_API_PORT":"Port","settings.field.PYTHON_API_DEBUG":"Debug Mode","settings.field.ENABLE_PENDING_ORDER_WORKER":"Enable Order Worker","settings.field.PENDING_ORDER_STALE_SEC":"Order Stale Timeout (sec)","settings.field.ORDER_MODE":"Order Mode","settings.field.MAKER_WAIT_SEC":"Limit Order Wait Time (sec)","settings.field.MAKER_OFFSET_BPS":"Limit Order Price Offset (bps)","settings.field.SIGNAL_WEBHOOK_URL":"Webhook URL","settings.field.SIGNAL_WEBHOOK_TOKEN":"Webhook Token","settings.field.SIGNAL_NOTIFY_TIMEOUT_SEC":"Notify Timeout (sec)","settings.field.TELEGRAM_BOT_TOKEN":"Telegram Bot Token","settings.field.SMTP_HOST":"SMTP Host","settings.field.SMTP_PORT":"SMTP Port","settings.field.SMTP_USER":"SMTP Username","settings.field.SMTP_PASSWORD":"SMTP Password","settings.field.SMTP_FROM":"From Address","settings.field.SMTP_USE_TLS":"Use TLS","settings.field.SMTP_USE_SSL":"Use SSL","settings.field.TWILIO_ACCOUNT_SID":"Account SID","settings.field.TWILIO_AUTH_TOKEN":"Auth Token","settings.field.TWILIO_FROM_NUMBER":"From Number","settings.field.DISABLE_RESTORE_RUNNING_STRATEGIES":"Disable Auto Restore","settings.field.STRATEGY_TICK_INTERVAL_SEC":"Tick Interval (sec)","settings.field.PRICE_CACHE_TTL_SEC":"Price Cache TTL (sec)","settings.field.PROXY_URL":"Full Proxy URL","settings.field.RATE_LIMIT":"Rate Limit (per min)","settings.field.ENABLE_CACHE":"Enable Cache","settings.field.ENABLE_REQUEST_LOG":"Enable Request Log","settings.field.ENABLE_AGENT_MEMORY":"Enable Agent Memory","settings.field.AGENT_MEMORY_ENABLE_VECTOR":"Enable Vector Retrieval (Local)","settings.field.AGENT_MEMORY_EMBEDDING_DIM":"Embedding Dimension","settings.field.AGENT_MEMORY_TOP_K":"Top-K Retrieval Count","settings.field.AGENT_MEMORY_CANDIDATE_LIMIT":"Candidate Window Size","settings.field.AGENT_MEMORY_HALF_LIFE_DAYS":"Time Decay Half-life (days)","settings.field.AGENT_MEMORY_W_SIM":"Similarity Weight","settings.field.AGENT_MEMORY_W_RECENCY":"Recency Weight","settings.field.AGENT_MEMORY_W_RETURNS":"Returns Weight","settings.field.ENABLE_REFLECTION_WORKER":"Enable Auto Verification","settings.field.REFLECTION_WORKER_INTERVAL_SEC":"Verification Interval (sec)","settings.field.REFLECTION_MIN_AGE_DAYS":"Min Age for Validation (days)","settings.field.REFLECTION_VALIDATE_LIMIT":"Validation Batch Limit","settings.field.ENABLE_CONFIDENCE_CALIBRATION":"Enable Confidence Calibration","settings.field.ENABLE_AI_ENSEMBLE":"Enable Multi-Model Voting","settings.field.AI_ENSEMBLE_MODELS":"Ensemble Models","settings.field.AI_CALIBRATION_MARKETS":"Calibration Markets","settings.field.AI_CALIBRATION_LOOKBACK_DAYS":"Calibration Lookback (days)","settings.field.AI_CALIBRATION_MIN_SAMPLES":"Calibration Min Samples","settings.field.LLM_PROVIDER":"LLM Provider","settings.field.AI_CODE_GEN_MODEL":"Code Generation Model","settings.field.OPENAI_API_KEY":"OpenAI API Key","settings.field.OPENAI_MODEL":"OpenAI Model","settings.field.OPENAI_BASE_URL":"OpenAI Base URL","settings.field.GOOGLE_API_KEY":"Google API Key (Gemini)","settings.field.GOOGLE_MODEL":"Gemini Model","settings.field.DEEPSEEK_API_KEY":"DeepSeek API Key","settings.field.DEEPSEEK_MODEL":"DeepSeek Model","settings.field.DEEPSEEK_BASE_URL":"DeepSeek Base URL","settings.field.GROK_API_KEY":"Grok API Key","settings.field.GROK_MODEL":"Grok Model","settings.field.GROK_BASE_URL":"Grok Base URL","settings.field.OPENROUTER_API_KEY":"OpenRouter API Key","settings.field.OPENROUTER_API_URL":"OpenRouter API URL","settings.field.OPENROUTER_MODEL":"Default Model","settings.field.AI_ANALYSIS_CONSENSUS_TIMEFRAMES":"Consensus Timeframes","settings.field.OPENROUTER_TEMPERATURE":"Temperature","settings.field.OPENROUTER_MAX_TOKENS":"Max Tokens","settings.field.OPENROUTER_TIMEOUT":"Timeout (sec)","settings.field.OPENROUTER_CONNECT_TIMEOUT":"Connect Timeout (sec)","settings.field.MARKET_TYPES_JSON":"Market Types JSON","settings.field.TRADING_SUPPORTED_SYMBOLS_JSON":"Supported Symbols JSON","settings.field.DATA_SOURCE_TIMEOUT":"Timeout (sec)","settings.field.DATA_SOURCE_RETRY":"Retry Count","settings.field.DATA_SOURCE_RETRY_BACKOFF":"Retry Backoff (sec)","settings.field.FINNHUB_API_KEY":"Finnhub API Key","settings.field.FINNHUB_TIMEOUT":"Finnhub Timeout (sec)","settings.field.FINNHUB_RATE_LIMIT":"Finnhub Rate Limit","settings.field.CCXT_DEFAULT_EXCHANGE":"CCXT Default Exchange","settings.field.CCXT_TIMEOUT":"CCXT Timeout (ms)","settings.field.CCXT_PROXY":"CCXT Proxy","settings.field.YFINANCE_TIMEOUT":"YFinance Timeout (sec)","settings.field.TIINGO_API_KEY":"Tiingo API Key","settings.field.TIINGO_TIMEOUT":"Tiingo Timeout (sec)","settings.field.SEARCH_PROVIDER":"Search Provider","settings.field.SEARCH_MAX_RESULTS":"Max Results","settings.field.TAVILY_API_KEYS":"Tavily API Keys","settings.field.SERPAPI_KEYS":"SerpAPI Keys","settings.field.SEARCH_GOOGLE_API_KEY":"Google API Key","settings.field.SEARCH_GOOGLE_CX":"Google CX","settings.field.SEARCH_BING_API_KEY":"Bing API Key","settings.field.INTERNAL_API_KEY":"Internal API Key","settings.desc.LLM_PROVIDER":"Select your preferred LLM provider for chat and analysis","settings.desc.AI_CODE_GEN_MODEL":"Optional model ID for AI code generation. Leave empty to use the provider default model","settings.desc.OPENAI_API_KEY":"OpenAI official API key","settings.desc.OPENAI_MODEL":"Model name: gpt-4o, gpt-4o-mini, gpt-4-turbo, etc.","settings.desc.OPENAI_BASE_URL":"Custom API endpoint (for proxies or Azure OpenAI)","settings.desc.GOOGLE_API_KEY":"Google AI Studio API key for Gemini","settings.desc.GOOGLE_MODEL":"Gemini model: gemini-1.5-flash, gemini-1.5-pro, etc.","settings.desc.DEEPSEEK_API_KEY":"DeepSeek API key","settings.desc.DEEPSEEK_MODEL":"Model: deepseek-chat, deepseek-coder","settings.desc.DEEPSEEK_BASE_URL":"DeepSeek API endpoint URL","settings.desc.GROK_API_KEY":"xAI Grok API key","settings.desc.GROK_MODEL":"Model: grok-beta, grok-2, etc.","settings.desc.GROK_BASE_URL":"xAI Grok API endpoint URL","settings.desc.AI_ANALYSIS_CONSENSUS_TIMEFRAMES":"Multi-timeframe consensus for fast AI analysis. Comma-separated, e.g. 1D,4H","settings.desc.ENABLE_REFLECTION_WORKER":"Enable background worker for automatic trade reflection and calibration","settings.desc.REFLECTION_WORKER_INTERVAL_SEC":"Reflection worker run interval in seconds (86400 = 1 day)","settings.desc.REFLECTION_MIN_AGE_DAYS":"Only validate analyses older than N days","settings.desc.REFLECTION_VALIDATE_LIMIT":"Max records to validate per reflection cycle","settings.desc.ENABLE_CONFIDENCE_CALIBRATION":"Adjust confidence by historical accuracy in each bucket","settings.desc.ENABLE_AI_ENSEMBLE":"Use multiple models and majority vote for more stable decisions","settings.desc.AI_ENSEMBLE_MODELS":"Comma-separated model IDs for ensemble voting","settings.desc.AI_CALIBRATION_MARKETS":"Comma-separated markets to run threshold calibration","settings.desc.AI_CALIBRATION_LOOKBACK_DAYS":"Days of validated data used for calibration","settings.desc.AI_CALIBRATION_MIN_SAMPLES":"Minimum validated samples required before calibration applies","settings.desc.SEARCH_PROVIDER":"Web search provider for AI research","settings.desc.TAVILY_API_KEYS":"Tavily Search API keys, comma-separated for rotation. Free 1000 requests/month","settings.desc.SERPAPI_KEYS":"SerpAPI keys for Google/Bing search, comma-separated for rotation","settings.desc.ORDER_MODE":"maker: Limit order first (lower fees), market: Market order (instant fill)","settings.desc.MAKER_WAIT_SEC":"Wait time for limit order fill before switching to market order","settings.desc.MAKER_OFFSET_BPS":"Price offset in basis points. Buy: price*(1-offset), Sell: price*(1+offset)","settings.desc.TIINGO_API_KEY":"Tiingo API key for Forex/Metals data (free tier does not support 1-minute data)","settings.desc.TIINGO_TIMEOUT":"Tiingo API request timeout","portfolio.summary.totalValue":"Total Value","portfolio.summary.totalCost":"Total Cost","portfolio.summary.totalPnl":"Total P&L","portfolio.summary.positionCount":"Positions","portfolio.summary.profitLossRatio":"Profit/Loss","portfolio.summary.today":"Today","portfolio.summary.todayPnl":"Today P&L","portfolio.summary.bestPerformer":"Best Performer","portfolio.summary.worstPerformer":"Worst Performer","portfolio.summary.priceSync":"Price Sync","portfolio.summary.syncInterval":"Refresh","portfolio.summary.justNow":"Just now","portfolio.summary.ago":" ago","portfolio.positions.title":"My Positions","portfolio.positions.add":"Add Position","portfolio.positions.addFirst":"Add Your First Position","portfolio.positions.empty":"No positions yet","portfolio.positions.deleteConfirm":"Are you sure to delete this position?","portfolio.positions.currentPrice":"Current","portfolio.positions.entryPrice":"Entry","portfolio.positions.quantity":"Quantity","portfolio.positions.side":"Side","portfolio.positions.long":"Long","portfolio.positions.short":"Short","portfolio.positions.marketValue":"Value","portfolio.positions.pnl":"P&L","portfolio.positions.items":"positions","portfolio.monitors.title":"AI Monitors","portfolio.monitors.add":"Add Monitor","portfolio.monitors.addFirst":"Add AI Monitor","portfolio.monitors.empty":"No monitors yet","portfolio.monitors.deleteConfirm":"Are you sure to delete this monitor?","portfolio.monitors.interval":"Interval","portfolio.monitors.lastRun":"Last Run","portfolio.monitors.nextRun":"Next Run","portfolio.monitors.channels":"Channels","portfolio.monitors.runNow":"Run Now","portfolio.monitors.analysisResult":"AI Analysis Result","portfolio.monitors.runningTitle":"AI Analysis Started","portfolio.monitors.runningDesc":"Analysis is running in background. Results will be pushed via notification. Analyzing multiple positions may take a few minutes.","portfolio.monitors.timeoutTitle":"Request Timeout","portfolio.monitors.timeoutDesc":"Analysis may still be running in background. Please check notifications for results later. If no notification is received, please try again.","portfolio.modal.addPosition":"Add Position","portfolio.modal.editPosition":"Edit Position","portfolio.modal.addMonitor":"Add Monitor","portfolio.modal.editMonitor":"Edit Monitor","portfolio.form.market":"Market","portfolio.form.marketRequired":"Please select a market","portfolio.form.selectMarket":"Select Market","portfolio.form.symbol":"Symbol","portfolio.form.symbolRequired":"Please enter symbol","portfolio.form.searchSymbol":"Search or enter symbol","portfolio.form.useAsSymbol":"Use","portfolio.form.asSymbolCode":"as symbol code","portfolio.form.symbolHint":"Search symbols or enter any code directly","portfolio.form.side":"Side","portfolio.form.quantity":"Quantity","portfolio.form.quantityRequired":"Please enter quantity","portfolio.form.enterQuantity":"Enter quantity","portfolio.form.entryPrice":"Entry Price","portfolio.form.entryPriceRequired":"Please enter entry price","portfolio.form.enterEntryPrice":"Enter entry price","portfolio.form.notes":"Notes","portfolio.form.enterNotes":"Optional: Add notes","portfolio.form.monitorName":"Monitor Name","portfolio.form.monitorNameRequired":"Please enter monitor name","portfolio.form.enterMonitorName":"e.g. Daily Portfolio Analysis","portfolio.form.interval":"Interval","portfolio.form.minutes":"minutes","portfolio.form.hour":"hour","portfolio.form.hours":"hours","portfolio.form.notifyChannels":"Notify Channels","portfolio.form.browser":"Browser","portfolio.form.email":"Email","portfolio.form.telegramChatId":"Telegram Chat ID","portfolio.form.enterTelegramChatId":"Enter Telegram Chat ID","portfolio.form.telegramRequired":"Please enter Telegram Chat ID","portfolio.form.emailAddress":"Email Address","portfolio.form.enterEmail":"Enter email address","portfolio.form.emailRequired":"Please enter email address","portfolio.form.emailInvalid":"Please enter a valid email address","portfolio.form.customPrompt":"Custom Prompt","portfolio.form.customPromptPlaceholder":'Optional: Add focus areas, e.g. "Focus on tech stock risks"',"portfolio.form.monitorScope":"Monitor Scope","portfolio.form.allPositions":"All Positions","portfolio.form.selectedPositions":"Selected Positions","portfolio.form.selectPositions":"Select Positions","portfolio.form.selectAll":"Select All","portfolio.form.deselectAll":"Deselect All","portfolio.form.selectedCount":"{count} of {total} selected","portfolio.form.pleaseSelectPositions":"Please select at least one position to monitor","portfolio.form.notificationFromProfile":"Notifications will be sent to addresses configured in your profile","portfolio.form.goToProfile":"Go to settings","portfolio.message.loadFailed":"Failed to load data","portfolio.message.saveSuccess":"Saved successfully","portfolio.message.saveFailed":"Failed to save","portfolio.message.deleteSuccess":"Deleted successfully","portfolio.message.deleteFailed":"Failed to delete","portfolio.message.updateFailed":"Failed to update","portfolio.message.monitorEnabled":"Monitor enabled","portfolio.message.monitorDisabled":"Monitor paused","portfolio.message.monitorRunSuccess":"Analysis completed","portfolio.message.monitorRunFailed":"Analysis failed","portfolio.message.monitorRunning":"AI analysis started, please wait for notification","portfolio.groups.all":"All Positions","portfolio.groups.ungrouped":"Ungrouped","portfolio.form.group":"Group","portfolio.form.enterGroup":"Enter or select group","portfolio.alerts.title":"Price/PnL Alerts","portfolio.alerts.addAlert":"Add Alert","portfolio.alerts.editAlert":"Edit Alert","portfolio.alerts.alertType":"Alert Type","portfolio.alerts.priceAbove":"Price Above","portfolio.alerts.priceBelow":"Price Below","portfolio.alerts.pnlAbove":"Profit Above (%)","portfolio.alerts.pnlBelow":"Loss Below (%)","portfolio.alerts.threshold":"Threshold","portfolio.alerts.thresholdRequired":"Please enter threshold","portfolio.alerts.enterPrice":"Enter price","portfolio.alerts.enterPercent":"Enter percentage","portfolio.alerts.currentPrice":"Current Price","portfolio.alerts.currentPriceHint":"Current price","portfolio.alerts.repeatInterval":"Repeat Alert","portfolio.alerts.noRepeat":"No repeat (trigger once)","portfolio.alerts.every5min":"Every 5 minutes","portfolio.alerts.every15min":"Every 15 minutes","portfolio.alerts.every30min":"Every 30 minutes","portfolio.alerts.every1hour":"Every 1 hour","portfolio.alerts.every4hours":"Every 4 hours","portfolio.alerts.onceDaily":"Once daily","portfolio.alerts.enabled":"Enable Alert","portfolio.alerts.enabledDesc":"Auto-monitor and trigger notifications","portfolio.alerts.delete":"Delete","portfolio.alerts.deleteConfirm":"Are you sure you want to delete this alert?","portfolio.modal.addAlert":"Add Alert","portfolio.modal.editAlert":"Edit Alert","menu.userManage":"User Management","menu.myProfile":"My Profile","common.actions":"Actions","common.refresh":"Refresh","userManage.title":"User Management","userManage.searchPlaceholder":"Search by username/email/nickname","userManage.description":"Manage system users, roles and permissions","userManage.createUser":"Create User","userManage.editUser":"Edit User","userManage.username":"Username","userManage.password":"Password","userManage.nickname":"Nickname","userManage.email":"Email","userManage.role":"Role","userManage.status":"Status","userManage.lastLogin":"Last Login","userManage.active":"Active","userManage.disabled":"Disabled","userManage.neverLogin":"Never","userManage.usernameRequired":"Please enter username","userManage.usernamePlaceholder":"Enter username","userManage.passwordRequired":"Please enter password","userManage.passwordPlaceholder":"Enter password (min 6 chars)","userManage.passwordMin":"Password must be at least 6 characters","userManage.nicknamePlaceholder":"Enter nickname","userManage.emailPlaceholder":"Enter email","userManage.emailInvalid":"Invalid email format","userManage.rolePlaceholder":"Select role","userManage.statusPlaceholder":"Select status","userManage.resetPassword":"Reset Password","userManage.resetPasswordWarning":"This will reset the user's password","userManage.newPassword":"New Password","userManage.newPasswordPlaceholder":"Enter new password","userManage.confirmDelete":"Are you sure to delete this user?","userManage.roleAdmin":"Admin","userManage.roleManager":"Manager","userManage.roleUser":"User","userManage.roleViewer":"Viewer","profile.title":"My Profile","profile.description":"Manage your account settings and preferences","profile.basicInfo":"Basic Info","profile.changePassword":"Change Password","profile.username":"Username","profile.nickname":"Nickname","profile.email":"Email","profile.lastLogin":"Last Login","profile.nicknamePlaceholder":"Enter your nickname","profile.emailPlaceholder":"Enter your email","profile.emailInvalid":"Invalid email format","profile.emailCannotChange":"Email cannot be changed after registration","profile.timezone":"Time zone","profile.timezonePlaceholder":"Follow browser / system","profile.timezoneBrowser":"Same as browser","profile.passwordHint":"Password must be at least 6 characters","profile.oldPassword":"Current Password","profile.newPassword":"New Password","profile.confirmPassword":"Confirm Password","profile.oldPasswordRequired":"Please enter current password","profile.oldPasswordPlaceholder":"Enter current password","profile.newPasswordRequired":"Please enter new password","profile.newPasswordPlaceholder":"Enter new password","profile.confirmPasswordRequired":"Please confirm password","profile.confirmPasswordPlaceholder":"Confirm new password","profile.passwordMin":"Password must be at least 6 characters","profile.passwordMismatch":"Passwords do not match","profile.credits.title":"My Credits","profile.credits.unit":"Credits","profile.credits.recharge":"Top Up","profile.credits.vipExpires":"VIP expires on","profile.credits.vipExpired":"VIP expired","profile.credits.noVip":"Not a VIP","profile.credits.hint":"AI analysis/backtest/monitoring will consume credits; VIP only makes VIP-free indicators free to use.","profile.creditsLog":"Credits History","profile.creditsLog.time":"Time","profile.creditsLog.action":"Type","profile.creditsLog.amount":"Change","profile.creditsLog.balance":"Balance","profile.creditsLog.remark":"Remark","profile.creditsLog.actionConsume":"Consume","profile.creditsLog.actionRecharge":"Recharge","profile.creditsLog.actionAdjust":"Adjust","profile.creditsLog.actionRefund":"Refund","profile.creditsLog.actionVipGrant":"VIP Grant","profile.creditsLog.actionVipRevoke":"VIP Revoke","profile.creditsLog.actionRegisterBonus":"Register Bonus","profile.creditsLog.actionReferralBonus":"Referral Bonus","profile.creditsLog.actionIndicatorPurchase":"Indicator Purchase","profile.creditsLog.actionIndicatorSale":"Indicator Sale","profile.referral.title":"Invite Friends","profile.referral.listTab":"Referrals","profile.referral.totalInvited":"Invited","profile.referral.bonusPerInvite":"Per Invite","profile.referral.yourLink":"Your Referral Link","profile.referral.copyLink":"Copy Link","profile.referral.linkCopied":"Referral link copied","profile.referral.newUserBonus":"New users get","profile.referral.user":"User","profile.referral.registerTime":"Registered","profile.referral.noReferrals":"No referrals yet","profile.referral.shareNow":"Share Now","profile.notifications.title":"Notification Settings","profile.notifications.hint":"Configure your default notification methods, which will be used automatically when creating asset monitors and alerts","profile.notifications.defaultChannels":"Default Notification Channels","profile.notifications.browser":"In-App Notification","profile.notifications.email":"Email","profile.notifications.phone":"SMS","profile.notifications.telegramBotToken":"Telegram Bot Token","profile.notifications.telegramBotTokenPlaceholder":"Enter your Telegram Bot Token","profile.notifications.telegramBotTokenHint":"Get Token by creating a bot via @BotFather","profile.notifications.telegramChatId":"Telegram Chat ID","profile.notifications.telegramPlaceholder":"Enter your Telegram Chat ID (e.g. 123456789)","profile.notifications.telegramHint":"Send /start to @userinfobot to get your Chat ID","profile.notifications.notifyEmail":"Notification Email","profile.notifications.emailPlaceholder":"Email address to receive notifications","profile.notifications.emailHint":"Uses your account email by default, or set a different one","profile.notifications.phonePlaceholder":"Enter phone number (e.g. +1234567890)","profile.notifications.phoneHint":"Requires admin to configure Twilio service","profile.notifications.discordWebhook":"Discord Webhook","profile.notifications.discordPlaceholder":"https://discord.com/api/webhooks/...","profile.notifications.discordHint":"Create Webhook in Discord server settings","profile.notifications.webhookUrl":"Webhook URL","profile.notifications.webhookPlaceholder":"https://your-server.com/webhook","profile.notifications.webhookHint":"Custom Webhook URL, notifications sent via POST JSON","profile.notifications.webhookToken":"Webhook Token (Optional)","profile.notifications.webhookTokenPlaceholder":"Bearer Token for request authentication","profile.notifications.webhookTokenHint":"Sent as Authorization: Bearer Token to Webhook","profile.notifications.testBtn":"Send Test Notification","profile.notifications.saveSuccess":"Notification settings saved successfully","profile.notifications.selectChannel":"Please select at least one notification channel","profile.notifications.fillTelegramToken":"Please fill in Telegram Bot Token","profile.notifications.fillTelegram":"Please fill in Telegram Chat ID","profile.notifications.fillEmail":"Please fill in notification email","profile.notifications.fillPhone":"Please fill in phone number for SMS","profile.notifications.fillDiscord":"Please fill in Discord Webhook URL","profile.notifications.fillWebhook":"Please fill in Webhook URL","profile.notifications.testSent":"Test notification sent, please check your notification channels","profile.notifications.testFailed":"Failed to send test notification","profile.notifications.testPartial":"Some channels failed","profile.notifications.errSmtpHost":"Email: server SMTP not configured (admin: set SMTP_HOST, SMTP_USER, SMTP_PASSWORD in system settings)","profile.notifications.errSmtpFrom":"Email: SMTP_FROM is not set","profile.notifications.errEmailTarget":"Email: no notification address and account has no email","userManage.credits":"Credits","userManage.adjustCredits":"Adjust Credits","userManage.setVip":"Set VIP","userManage.currentCredits":"Current Credits","userManage.newCredits":"New Credits","userManage.enterCredits":"Enter new credits amount","userManage.creditsNonNegative":"Credits cannot be negative","userManage.currentVip":"Current VIP Status","userManage.vipActive":"Active","userManage.vipExpired":"Expired","userManage.vipDays":"VIP Days","userManage.vipExpiresAt":"VIP Expires At","userManage.cancelVip":"Cancel VIP","userManage.days":"days","userManage.customDate":"Custom Date","userManage.selectDate":"Please select a date","userManage.remark":"Remark","userManage.remarkPlaceholder":"Optional remark","userManage.tabUsers":"User Management","systemOverview.tabTitle":"System Overview","systemOverview.totalStrategies":"Total Strategies","systemOverview.runningStrategies":"Running","systemOverview.totalCapital":"Total Capital","systemOverview.totalPnl":"Total PnL","systemOverview.filterAll":"All Status","systemOverview.filterExecAll":"All modes","systemOverview.filterRunning":"Running","systemOverview.filterStopped":"Stopped","systemOverview.searchPlaceholder":"Search strategy/symbol/user","systemOverview.running":"Running","systemOverview.stopped":"Stopped","systemOverview.colUser":"User","systemOverview.colStrategy":"Strategy","systemOverview.colStatus":"Status","systemOverview.colExecutionMode":"Mode","systemOverview.colSymbol":"Symbol","systemOverview.colCapital":"Capital","systemOverview.colPositionEquity":"Position equity","systemOverview.colPnl":"PnL / ROI","systemOverview.colPositions":"Pos","systemOverview.colTrades":"Trades","systemOverview.colIndicator":"Indicator","systemOverview.colExchange":"Exchange","systemOverview.colTimeframe":"TF","systemOverview.colLeverage":"Lev","systemOverview.colCreatedAt":"Created","systemOverview.colUpdatedAt":"Updated","systemOverview.realized":"Real","systemOverview.unrealized":"Unreal","systemOverview.symbols":"symbols","systemOverview.live":"Live","systemOverview.signal":"Signal Only","settings.group.billing":"Billing & Credits","settings.field.BILLING_ENABLED":"Enable Billing","settings.field.BILLING_COST_AI_ANALYSIS":"AI Analysis Cost","settings.field.BILLING_COST_STRATEGY_RUN":"Strategy Run Cost","settings.field.BILLING_COST_BACKTEST":"Backtest Cost","settings.field.BILLING_COST_PORTFOLIO_MONITOR":"Portfolio Monitor Cost","settings.field.BILLING_COST_AI_CODE_GEN":"AI Code Generation Cost","settings.field.CREDITS_REGISTER_BONUS":"Register Bonus","settings.field.CREDITS_REFERRAL_BONUS":"Referral Bonus","settings.field.RECHARGE_TELEGRAM_URL":"Recharge Telegram URL","settings.field.MEMBERSHIP_MONTHLY_PRICE_USD":"Monthly Membership Price (USD)","settings.field.MEMBERSHIP_MONTHLY_CREDITS":"Monthly Membership Bonus Credits","settings.field.MEMBERSHIP_YEARLY_PRICE_USD":"Yearly Membership Price (USD)","settings.field.MEMBERSHIP_YEARLY_CREDITS":"Yearly Membership Bonus Credits","settings.field.MEMBERSHIP_LIFETIME_PRICE_USD":"Lifetime Membership Price (USD)","settings.field.MEMBERSHIP_LIFETIME_MONTHLY_CREDITS":"Lifetime Monthly Credits","settings.field.USDT_PAY_ENABLED":"Enable USDT Pay","settings.field.USDT_PAY_CHAIN":"USDT Chain","settings.field.USDT_TRC20_XPUB":"TRC20 XPUB (Watch-only)","settings.field.USDT_TRC20_CONTRACT":"USDT TRC20 Contract","settings.field.TRONGRID_BASE_URL":"TronGrid Base URL","settings.field.TRONGRID_API_KEY":"TronGrid API Key","settings.field.USDT_PAY_CONFIRM_SECONDS":"Confirm Delay (sec)","settings.field.USDT_PAY_EXPIRE_MINUTES":"Order Expire (min)","settings.desc.BILLING_ENABLED":"Enable billing system. Users need credits to use certain features when enabled","settings.desc.BILLING_COST_AI_ANALYSIS":"Credits consumed per AI analysis request","settings.desc.BILLING_COST_STRATEGY_RUN":"Credits consumed when starting a strategy","settings.desc.BILLING_COST_BACKTEST":"Credits consumed per backtest run","settings.desc.BILLING_COST_PORTFOLIO_MONITOR":"Credits consumed per portfolio AI monitoring run","settings.desc.BILLING_COST_AI_CODE_GEN":"Credits consumed per AI strategy or indicator code generation (higher token usage)","settings.desc.CREDITS_REGISTER_BONUS":"Credits awarded to new users on registration","settings.desc.CREDITS_REFERRAL_BONUS":"Credits awarded to referrer when someone signs up with their referral code","settings.desc.VERIFICATION_CODE_MAX_ATTEMPTS":"Maximum attempts to verify a code before lockout","settings.desc.VERIFICATION_CODE_LOCK_MINUTES":"Lockout duration after exceeding max attempts","settings.desc.RECHARGE_TELEGRAM_URL":"Telegram customer service URL for recharge inquiries","settings.desc.MEMBERSHIP_MONTHLY_PRICE_USD":"Monthly membership price in USD (mock payment in current version).","settings.desc.MEMBERSHIP_MONTHLY_CREDITS":"Credits granted immediately after purchasing monthly membership.","settings.desc.MEMBERSHIP_YEARLY_PRICE_USD":"Yearly membership price in USD (mock payment in current version).","settings.desc.MEMBERSHIP_YEARLY_CREDITS":"Credits granted immediately after purchasing yearly membership.","settings.desc.MEMBERSHIP_LIFETIME_PRICE_USD":"Lifetime membership price in USD (mock payment in current version).","settings.desc.MEMBERSHIP_LIFETIME_MONTHLY_CREDITS":"Credits granted every 30 days for lifetime members (first grant happens immediately on purchase).","settings.desc.USDT_PAY_ENABLED":"Enable USDT scan-to-pay flow (per-order unique address + auto reconciliation).","settings.desc.USDT_PAY_CHAIN":"Currently only TRC20 is supported.","settings.desc.USDT_TRC20_XPUB":"Watch-only xpub used to derive per-order deposit addresses. Do NOT paste private key/seed.","settings.desc.USDT_TRC20_CONTRACT":"USDT contract address on TRON (default prefilled).","settings.desc.TRONGRID_BASE_URL":"TronGrid API base URL (default is fine).","settings.desc.TRONGRID_API_KEY":"Optional. For higher TronGrid rate limits and stability.","settings.desc.USDT_PAY_CONFIRM_SECONDS":"After a payment is detected, wait N seconds before marking it confirmed.","settings.desc.USDT_PAY_EXPIRE_MINUTES":"Order expiration time; users need to regenerate an order after it expires.","globalMarket.title":"Global Market Dashboard","globalMarket.fearGreedShort":"F&G","globalMarket.calendar":"Calendar","globalMarket.lastUpdate":"Last Update","globalMarket.refresh":"Refresh","globalMarket.name":"Name","globalMarket.price":"Price","globalMarket.change":"Change","globalMarket.trend":"Trend","globalMarket.pair":"Pair","globalMarket.unit":"Unit","globalMarket.refreshSuccess":"Data refreshed successfully","globalMarket.refreshError":"Failed to refresh data","globalMarket.fetchError":"Failed to fetch data","globalMarket.loading":"Loading...","globalMarket.fearGreedIndex":"Fear & Greed Index","globalMarket.fearGreedTip":"Fear & Greed Index measures market sentiment, 0 = Extreme Fear, 100 = Extreme Greed","globalMarket.volatilityIndex":"Volatility Index","globalMarket.dollarIndex":"Dollar Index","globalMarket.majorIndices":"Major Indices","globalMarket.vixTitle":"VIX Volatility Index","globalMarket.vixTip":"VIX measures expected market volatility, higher values indicate more market fear","globalMarket.extremeFear":"Extreme Fear","globalMarket.fear":"Fear","globalMarket.neutral":"Neutral","globalMarket.greed":"Greed","globalMarket.extremeGreed":"Extreme Greed","globalMarket.marketOverview":"Market Overview","globalMarket.indices":"Indices","globalMarket.forex":"Forex","globalMarket.crypto":"Crypto","globalMarket.commodities":"Commodities","globalMarket.heatmap":"Market Heatmap","globalMarket.cryptoHeatmap":"Crypto","globalMarket.commoditiesHeatmap":"Commodities","globalMarket.sectorHeatmap":"Sectors","globalMarket.forexHeatmap":"Forex","globalMarket.opportunities":"Trading Opportunities","globalMarket.noOpportunities":"No significant opportunities detected","globalMarket.financialNews":"Financial News","globalMarket.noNews":"No news available","globalMarket.economicCalendar":"Economic Calendar","globalMarket.noEvents":"No events scheduled","globalMarket.actual":"Actual","globalMarket.forecast":"Forecast","globalMarket.previous":"Previous","globalMarket.signal.bullish":"Bullish Momentum","globalMarket.signal.bearish":"Bearish Momentum","globalMarket.signal.overbought":"Overbought Warning","globalMarket.signal.oversold":"Oversold Opportunity","globalMarket.worldMap":"Global Markets Map","globalMarket.rising":"Rising","globalMarket.falling":"Falling","globalMarket.bullish":"Bullish","globalMarket.bearish":"Bearish","globalMarket.expectedImpact":"Expected Impact","globalMarket.aboveForecast":"Above Forecast","globalMarket.belowForecast":"Below Forecast","globalMarket.upcomingEvents":"Upcoming Events","globalMarket.releasedEvents":"Released Data","trading-assistant.form.notificationFromProfile":"Notifications will be sent to the address configured in your profile.","trading-assistant.form.notificationConfigMissing":"You have not configured parameters for selected channels ({channels}). Please go to your profile to configure them.","trading-assistant.form.goToProfile":"Go to Profile","community.title":"Indicator Market","community.searchPlaceholder":"Search indicators...","community.all":"All","community.freeOnly":"Free","community.paidOnly":"Paid","community.sortNewest":"Newest","community.sortHot":"Popular","community.sortRating":"Top Rated","community.sortPriceLow":"Price: Low to High","community.sortPriceHigh":"Price: High to Low","community.myPurchases":"My Purchases","community.noIndicators":"No indicators yet","community.createFirst":"Create Your First Indicator","community.total":"Total","community.items":"items","community.free":"Free","community.credits":"Credits","community.myIndicator":"My Indicator","community.purchased":"Purchased","community.noDescription":"No description","community.loadFailed":"Failed to load","community.publishedAt":"Published","community.downloads":"Downloads","community.rating":"Rating","community.views":"Views","community.description":"Description","community.performance":"Live Performance","community.strategyCount":"Strategies","community.tradeCount":"Trades","community.winRate":"Win Rate","community.totalProfit":"Total Profit","community.reviews":"Reviews","community.useNow":"Use Now","community.getFree":"Get Free","community.buyNow":"Buy Now","community.purchaseSuccess":"Purchase successful! Indicator added to your list","community.purchaseFailed":"Purchase failed","community.indicator_not_found":"Indicator not found or unavailable","community.cannot_buy_own":"Cannot buy your own indicator","community.already_purchased":"You have already purchased this indicator","community.insufficient_credits":"Insufficient credits","community.commentSuccess":"Comment submitted","community.commentFailed":"Failed to submit comment","community.commentUpdateSuccess":"Comment updated successfully","community.commentUpdateFailed":"Failed to update comment","community.editComment":"Edit Comment","community.cancelEdit":"Cancel","community.updateComment":"Update Comment","community.alreadyCommented":"You have already reviewed this indicator","community.editMyComment":"Edit Review","community.me":"Me","community.edited":"edited","community.not_purchased":"Please purchase/get the indicator first to leave a review","community.cannot_comment_own":"Cannot review your own indicator","community.already_commented":"You have already reviewed this indicator","community.noComments":"No reviews yet","community.yourRating":"Your Rating","community.commentPlaceholder":"Share your experience...","community.submitComment":"Submit Review","community.pleaseRate":"Please select a rating","community.loadMore":"Load More","community.justNow":"Just now","community.minutesAgo":"minutes ago","community.hoursAgo":"hours ago","community.daysAgo":"days ago","community.noPurchases":"No purchases yet","community.purchasedFrom":"Seller","community.purchaseTime":"Purchase Time","community.admin.reviewTab":"Review","community.admin.pending":"Pending","community.admin.approved":"Approved","community.admin.rejected":"Rejected","community.admin.noItems":"No items","community.admin.noDescription":"No description","community.admin.viewCode":"View Code","community.admin.note":"Note","community.admin.approve":"Approve","community.admin.reject":"Reject","community.admin.unpublish":"Unpublish","community.admin.delete":"Delete","community.admin.deleteConfirm":"Are you sure to delete this indicator? This cannot be undone.","community.admin.unpublishConfirm":"Are you sure to unpublish this indicator?","community.admin.unpublishHint":"This indicator will be hidden from the market","community.admin.confirm":"Confirm","community.admin.cancel":"Cancel","community.admin.approveTitle":"Approve Indicator","community.admin.rejectTitle":"Reject Indicator","community.admin.noteLabel":"Note (optional)","community.admin.notePlaceholder":"Enter review note...","community.admin.loadFailed":"Failed to load","community.admin.reviewSuccess":"Review submitted","community.admin.reviewFailed":"Review failed","community.admin.unpublishSuccess":"Unpublished successfully","community.admin.unpublishFailed":"Failed to unpublish","community.admin.deleteSuccess":"Deleted successfully","community.admin.deleteFailed":"Failed to delete","fastAnalysis.aiAnalysis":"AI Analysis","fastAnalysis.analyzing":"AI is analyzing...","fastAnalysis.pleaseWait":"Please wait, fetching real-time data and generating professional report","fastAnalysis.error":"Analysis Failed","fastAnalysis.retry":"Retry","fastAnalysis.selectSymbol":"Select a symbol to start","fastAnalysis.selectHint":"Choose from your watchlist or add a new symbol","fastAnalysis.confidence":"Confidence","fastAnalysis.currentPrice":"Current Price","fastAnalysis.entryPrice":"Entry Price","fastAnalysis.stopLoss":"Stop Loss","fastAnalysis.takeProfit":"Take Profit","fastAnalysis.stopLossHint":"Based on 2x ATR & support","fastAnalysis.takeProfitHint":"Based on 3x ATR & resistance","fastAnalysis.atrBased":"ATR-based","fastAnalysis.riskReward":"Risk/Reward","fastAnalysis.technical":"Technical","fastAnalysis.fundamental":"Fundamental","fastAnalysis.sentiment":"Sentiment","fastAnalysis.overall":"Overall","fastAnalysis.keyReasons":"Key Reasons","fastAnalysis.risks":"Risks","fastAnalysis.indicators":"Technical Indicators","fastAnalysis.maTrend":"MA Trend","fastAnalysis.support":"Support","fastAnalysis.resistance":"Resistance","fastAnalysis.volatility":"Volatility","fastAnalysis.wasHelpful":"Was this analysis helpful?","fastAnalysis.helpful":"Helpful","fastAnalysis.notHelpful":"Not Helpful","fastAnalysis.feedbackThanks":"Thanks for your feedback!","fastAnalysis.feedbackFailed":"Failed to submit feedback","fastAnalysis.feedbackUnavailable":"Feedback unavailable, please re-analyze","fastAnalysis.analysisTime":"Analysis time","fastAnalysis.startAnalysis":"Analyze","fastAnalysis.history":"History","fastAnalysis.systemTitle":"QUANTDINGER AI","fastAnalysis.systemOnline":"Online","fastAnalysis.version":"Fast","fastAnalysis.preparing":"Preparing...","fastAnalysis.step1":"Fetching real-time data","fastAnalysis.step2":"Calculating indicators","fastAnalysis.step3":"AI deep analysis","fastAnalysis.step4":"Generating report","fastAnalysis.technicalAnalysis":"Technical Analysis","fastAnalysis.fundamentalAnalysis":"Fundamental Analysis","fastAnalysis.sentimentAnalysis":"Market Sentiment","fastAnalysis.signal.bullish":"Bullish","fastAnalysis.signal.bearish":"Bearish","fastAnalysis.signal.neutral":"Neutral","fastAnalysis.signal.overbought":"Overbought","fastAnalysis.signal.oversold":"Oversold","fastAnalysis.signal.strong_bullish":"Strong Bullish","fastAnalysis.signal.strong_bearish":"Strong Bearish","fastAnalysis.trend.uptrend":"Uptrend","fastAnalysis.trend.downtrend":"Downtrend","fastAnalysis.trend.sideways":"Sideways","fastAnalysis.trend.consolidating":"Consolidating","fastAnalysis.trend.golden_cross":"Golden Cross","fastAnalysis.trend.death_cross":"Death Cross","fastAnalysis.trend.strong_uptrend":"Strong Uptrend","fastAnalysis.trend.strong_downtrend":"Strong Downtrend","fastAnalysis.volatilityLevel.high":"High","fastAnalysis.volatilityLevel.medium":"Medium","fastAnalysis.volatilityLevel.low":"Low","fastAnalysis.volatilityLevel.unknown":"Unknown","fastAnalysis.marketOverview":"Market Overview","fastAnalysis.selectTip":"Select a symbol from your watchlist to start AI analysis","fastAnalysis.analysisInProgress":"An analysis is already running for this symbol. Please wait and try again.","fastAnalysis.analysisInProgressTitle":"Analysis in progress","fastAnalysis.insufficientCredits":"Insufficient credits","fastAnalysis.insufficientCreditsDetail":"Insufficient credits: need {required}, you have {current}, short by {shortage}.","fastAnalysis.analysisCompleteWithCredits":"Analysis complete. Remaining credits: {remaining}","fastAnalysis.analysisSubmitted":"Analysis task submitted. You can check progress in History.","fastAnalysis.analysisSubmittedWithCredits":"Task submitted. Remaining credits: {remaining}","fastAnalysis.analysisStillProcessing":"This task is still processing. Please refresh history shortly.","fastAnalysis.consensusTitle":"Multi-timeframe consensus","fastAnalysis.consensusDecision":"Consensus","fastAnalysis.consensusScore":"Composite score","fastAnalysis.consensusAgreement":"Timeframe agreement","fastAnalysis.trendOutlookTitle":"Multi-horizon outlook","fastAnalysis.outlook24h":"~24 hours","fastAnalysis.outlook3d":"~3 days","fastAnalysis.outlook1w":"~1 week","fastAnalysis.outlook1m":"~1 month","fastAnalysis.outlookBull":"Bullish","fastAnalysis.outlookBear":"Bearish","fastAnalysis.outlookNeutral":"Neutral / range","fastAnalysis.stopLossHintShort":"Short stop-loss: above current price (loss if price rises). Values from backend trading_plan.","fastAnalysis.takeProfitHintShort":"Short take-profit: below current price (profit if price falls). Values from backend trading_plan.","fastAnalysis.indicatorsProBadge":"PRO","fastAnalysis.indicatorsProSubtitle":"Aligned with backend `MarketDataCollector._calculate_indicators` (mainstream-style): RSI(14) is Wilder-smoothed. MACD(12,26,9) uses SMA-seeded EMAs on closes; DIF from bar 26 onward; DEA = EMA9 of the DIF series (~34+ bars for a full signal line). MAs are SMAs. Pivot uses previous bar H/L/C. Swing = 20-bar high/low extremes. Bollinger = SMA(20) ± 2×population σ; aggregated levels use BB_upper/BB_lower. ATR(14) is Wilder, chained to the latest bar. See docs/INDICATOR_DEFINITIONS_CN.md for volume ratio and range position.","fastAnalysis.indicatorsProTableTitle":"Quant parameters (institutional-style)","fastAnalysis.macdDif":"MACD DIF","fastAnalysis.macdDea":"MACD DEA (signal)","fastAnalysis.macdHist":"MACD histogram","fastAnalysis.ma5Label":"MA(5)","fastAnalysis.ma10Label":"MA(10)","fastAnalysis.ma20Label":"MA(20)","fastAnalysis.bbUpper":"Bollinger upper","fastAnalysis.bbMiddle":"Bollinger middle","fastAnalysis.bbLower":"Bollinger lower","fastAnalysis.bbWidthPct":"Bollinger width %","fastAnalysis.bbWidth":"Width %","fastAnalysis.bbWidthHint":"squeeze / expand","fastAnalysis.pivotStd":"Classic pivot","fastAnalysis.levelS1":"Support S1","fastAnalysis.levelR1":"Resistance R1","fastAnalysis.levelS2":"Support S2","fastAnalysis.levelR2":"Resistance R2","fastAnalysis.swingHigh20":"20-bar swing high","fastAnalysis.swingLow20":"20-bar swing low","fastAnalysis.atr14Label":"ATR(14) absolute","fastAnalysis.atrTrueRange":"avg true range","fastAnalysis.rangePct20":"20-bar range position","fastAnalysis.rangePct20Hint":"0–100% of range","fastAnalysis.volumeRatio":"Volume ratio","fastAnalysis.volumeRatioHint":"vs 20-bar avg vol","fastAnalysis.rrLongRef":"Risk/reward (long ref.)","fastAnalysis.refClose":"Ref. close (calc.)","aiQuant.title":"AI Quant","aiQuant.strategyList":"Strategies","aiQuant.create":"Create","aiQuant.edit":"Edit","aiQuant.delete":"Delete","aiQuant.start":"Start","aiQuant.stop":"Stop","aiQuant.analyze":"Analyze Now","aiQuant.noStrategy":"No strategies yet, click to create","aiQuant.selectStrategy":"Select a strategy from the left","aiQuant.createFirst":"Create Your First Strategy","aiQuant.createStrategy":"Create Strategy","aiQuant.editStrategy":"Edit Strategy","aiQuant.confirmDelete":"Are you sure you want to delete this strategy?","aiQuant.latestAnalysis":"Latest Analysis","aiQuant.analysisHistory":"Analysis History","aiQuant.decision":"Decision","aiQuant.confidence":"Confidence","aiQuant.currentPrice":"Current Price","aiQuant.entryPrice":"Entry Price","aiQuant.stopLoss":"Stop Loss","aiQuant.takeProfit":"Take Profit","aiQuant.reason":"Reason","aiQuant.analyzedAt":"Analyzed At","aiQuant.tradeSettings":"Trade Settings","aiQuant.minutes":"min","aiQuant.hour":"hour","aiQuant.hours":"hours","aiQuant.stats.totalStrategies":"Total Strategies","aiQuant.stats.runningStrategies":"Running","aiQuant.stats.totalAnalyses":"Analyses","aiQuant.stats.totalPnl":"Total PnL","aiQuant.status.running":"Running","aiQuant.status.stopped":"Stopped","aiQuant.status.paused":"Paused","aiQuant.executionMode.signal":"Signal Only","aiQuant.executionMode.live":"Live Trading","aiQuant.marketType.spot":"Spot","aiQuant.marketType.futures":"Futures","aiQuant.field.strategyName":"Strategy Name","aiQuant.field.market":"Market","aiQuant.field.symbol":"Symbol","aiQuant.field.marketType":"Market Type","aiQuant.field.aiModel":"AI Model","aiQuant.field.interval":"Analysis Interval","aiQuant.field.aiPrompt":"AI Prompt","aiQuant.field.executionMode":"Execution Mode","aiQuant.field.positionSize":"Position Size","aiQuant.field.stopLoss":"Stop Loss %","aiQuant.field.takeProfit":"Take Profit %","aiQuant.field.totalAnalyses":"Total Analyses","aiQuant.field.totalTrades":"Total Trades","aiQuant.field.totalPnl":"Total PnL","aiQuant.placeholder.strategyName":"Enter strategy name","aiQuant.placeholder.market":"Select market","aiQuant.placeholder.symbol":"e.g., BTC/USDT","aiQuant.placeholder.aiModel":"Use system default","aiQuant.placeholder.aiPrompt":"Enter your trading strategy prompt, e.g., Buy when RSI is below 30...","aiQuant.validation.strategyName":"Please enter strategy name","aiQuant.validation.market":"Please select market","aiQuant.validation.symbol":"Please enter symbol","aiQuant.table.decision":"Decision","aiQuant.table.confidence":"Confidence","aiQuant.table.entryPrice":"Entry","aiQuant.table.stopLoss":"Stop Loss","aiQuant.table.takeProfit":"Take Profit","aiQuant.table.time":"Time","aiQuant.msg.createSuccess":"Strategy created successfully","aiQuant.msg.updateSuccess":"Strategy updated successfully","aiQuant.msg.deleteSuccess":"Strategy deleted successfully","aiQuant.msg.startSuccess":"Strategy started","aiQuant.msg.stopSuccess":"Strategy stopped","aiQuant.msg.analyzeSuccess":"Analysis completed","aiQuant.field.initialCapital":"Initial Capital","aiQuant.field.leverage":"Leverage","aiQuant.field.tradeDirection":"Trade Direction","aiQuant.field.trailingStop":"Trailing Stop","aiQuant.field.trailingStopPct":"Trailing Stop %","aiQuant.direction.long":"Long Only","aiQuant.direction.short":"Short Only","aiQuant.direction.both":"Both","aiQuant.riskControl":"Risk Control","aiQuant.aiSettings":"AI Settings","aiQuant.systemDefault":"System Default","aiQuant.placeholder.selectSymbol":"Select from watchlist","aiQuant.hint.symbolFromWatchlist":"Select from your watchlist, market type is auto-detected","aiQuant.hint.spotLeverageFixed":"Spot market leverage is fixed at 1x","aiQuant.hint.stopLossEnforced":"Enforced stop loss, AI cannot modify","aiQuant.hint.takeProfitEnforced":"Enforced take profit, AI cannot modify","aiQuant.hint.aiPromptOnly":"AI only determines direction based on prompt, will not modify your risk settings","aiQuant.aiLimitWarning":"AI Permission Restricted","aiQuant.aiLimitDescription":"AI can ONLY determine trade direction (BUY/SELL/HOLD). Leverage, position size, stop loss/take profit are fully controlled by you and CANNOT be modified by AI.","aiQuant.userStopLoss":"Your Stop Loss","aiQuant.userTakeProfit":"Your Take Profit","aiQuant.userLeverage":"Your Leverage","aiQuant.validation.initialCapital":"Please enter initial capital","aiQuant.table.currentPrice":"Current Price","aiQuant.field.promptTemplate":"Strategy Template","aiQuant.placeholder.selectTemplate":"Select a preset template","aiQuant.template.default":"📊 Comprehensive Analysis (Recommended)","aiQuant.template.trend":"📈 Trend Following","aiQuant.template.swing":"🔄 Swing Trading","aiQuant.template.news":"📰 News Driven","aiQuant.template.custom":"✏️ Custom","aiQuant.hint.dataProvided":"System auto-provides: real-time price, indicators (RSI/MACD/MA), recent news, macro data. AI analyzes these with your prompt to determine direction.","aiQuant.hint.liveWarning":"Live mode will trade with REAL money! Make sure you have configured exchange API and understand the risks!","trading-assistant.liveDisclaimer.title":"Live Trading Disclaimer","trading-assistant.liveDisclaimer.content":"Live trading involves significant risk and may result in partial or total loss of funds. The platform does not guarantee returns or profits. You are responsible for your own decisions and outcomes.","trading-assistant.liveDisclaimer.agree":"I have read and understood the disclaimer and still want to enable live trading","trading-assistant.liveDisclaimer.required":"Please accept the disclaimer before enabling live trading","trading-assistant.liveDisclaimer.blockTitle":"Please accept the disclaimer first","trading-assistant.liveDisclaimer.blockDesc":"You must accept the disclaimer to configure live trading connection and order settings.","trading-assistant.strategyMode.signal":"Indicator Signal Strategy","trading-assistant.strategyMode.script":"Python Script Strategy","trading-assistant.strategyMode.signalBadge":"Best for quick start","trading-assistant.strategyMode.scriptBadge":"Best for complex logic","trading-assistant.strategyMode.signalDesc":"Build a strategy from existing indicators and visual risk settings. No coding required, ideal for getting your first strategy online quickly.","trading-assistant.strategyMode.scriptDesc":"Write the full strategy in Python. Best for grid, martingale, DCA, breakout, and other advanced automated trading logic.","trading-assistant.strategyMode.signalFeature1":"No coding: select indicators and configure rules","trading-assistant.strategyMode.signalFeature2":"Visual TP/SL, execution mode, and risk settings","trading-assistant.strategyMode.signalFeature3":"Great for trend, timing, and signal-alert strategies","trading-assistant.strategyMode.scriptFeature1":"Full Python strategy code with custom logic","trading-assistant.strategyMode.scriptFeature2":"Built-in templates for Grid / Martingale / DCA and more","trading-assistant.strategyMode.scriptFeature3":"Best for parameterized strategies and complex position control","trading-assistant.selectMode":"Choose How to Create","trading-assistant.selectModeHint":"If you want the fastest setup, choose Indicator Signal Strategy. If you need grid, martingale, or custom trading logic, choose Python Script Strategy.","trading-assistant.fromTemplate":"Or quick-start from a template","trading-assistant.useThisMode":"Use This Mode","trading-assistant.template.title":"Strategy Templates","trading-assistant.template.trendFollowing":"Trend Following","trading-assistant.template.trendFollowingDesc":"Moving average crossover + dynamic stop-loss, captures mid-to-long trends","trading-assistant.template.martingale":"Martingale","trading-assistant.template.martingaleDesc":"Double down on losses with max-layer control, counter-trend averaging","trading-assistant.template.grid":"Grid Trading","trading-assistant.template.gridDesc":"Bar-based grid simulation (close price vs levels), not an exchange ladder of pre-placed limits; pick neutral / long / short in template params","trading-assistant.template.dca":"DCA","trading-assistant.template.dcaDesc":"Time/condition-based batch entries, dollar-cost averaging","trading-assistant.template.meanReversion":"Mean Reversion","trading-assistant.template.meanReversionDesc":"Bollinger/RSI-based reversion trades, fits range-bound assets","trading-assistant.template.breakout":"Breakout","trading-assistant.template.breakoutDesc":"Enter on key level breakouts confirmed by volume","trading-assistant.template.rsiMeanReversion":"RSI mean reversion","trading-assistant.template.rsiMeanReversionDesc":"Buy when RSI is oversold; close long when overbought","trading-assistant.template.macdCross":"MACD histogram cross","trading-assistant.template.macdCrossDesc":"Long on MACD histogram crossing above zero; exit on cross below","trading-assistant.template.useTemplate":"Use Template","trading-assistant.editor.title":"Strategy Code","trading-assistant.editor.verify":"Verify Code","trading-assistant.editor.verifySuccess":"Code verification passed","trading-assistant.editor.verifyFailed":"Code verification failed","trading-assistant.editor.aiGenerate":"AI Generate Strategy","trading-assistant.editor.aiGenerateBtn":"Generate","trading-assistant.editor.aiPromptPlaceholder":"Describe the strategy you want, e.g.: Write a BTC grid strategy with price range 60000-70000, 10 grid levels...","trading-assistant.editor.apiDocs":"API Docs","trading-assistant.editor.templates":"Templates","trading-assistant.editor.aiTab":"AI Assistant","trading-assistant.editor.docsTab":"API Docs","trading-assistant.editor.templateTab":"Templates","trading-assistant.editor.paramsTab":"Template Params","trading-assistant.editor.codeHint":"Write strategy code using the ctx object for trading API","trading-assistant.editor.generating":"Generating strategy code...","trading-assistant.editor.templateIntroTitle":"Pick a template with editable parameters","trading-assistant.editor.templateIntroDesc":"After selecting a template, adjust its range, layers, TP/SL, and other parameters on the right before applying them into the code.","trading-assistant.editor.paramsHint":'After changing parameters, click "Apply to Code" to regenerate the template defaults in code.',"trading-assistant.editor.resetTemplateParams":"Reset Defaults","trading-assistant.editor.applyTemplateParams":"Apply to Code","trading-assistant.editor.paramsEmpty":"Select a script template first from the Templates tab","trading-assistant.editor.templateApplied":"Template parameters applied to code","trading-assistant.editor.aiHint":"Pick a template first, then use “Adjust template parameters” for natural‑language tweaks (amounts, intervals, etc.). Use “Generate full code” when you need larger logic changes.","trading-assistant.editor.docsIntroTitle":"Built-in API Reference","trading-assistant.editor.docsIntroDesc":"These are the commonly used QuantDinger script strategy APIs and lifecycle hooks, so you can code and look up usage side by side.","trading-assistant.editor.aiPromptRequired":"Please describe what you want AI to generate or revise first","trading-assistant.editor.aiGenerateSuccess":"AI generated strategy code","trading-assistant.editor.aiGenerateFailed":"AI generation failed","trading-assistant.editor.aiSuggestionImprove":"Improve current template","trading-assistant.editor.aiSuggestionImprovePrompt":"Please improve the current template, clean up the structure, add better logs, and make it easier to maintain.","trading-assistant.editor.aiSuggestionRisk":"Add better risk control","trading-assistant.editor.aiSuggestionRiskPrompt":"Please add more complete take-profit, stop-loss, position sizing, and exception protection to the current strategy.","trading-assistant.editor.aiSuggestionExplain":"Explain this code","trading-assistant.editor.aiSuggestionExplainPrompt":"Please explain this strategy code section by section, including parameters, trading logic, and risks.","trading-assistant.editor.aiPromptTemplateHint":"Please continue optimizing this template:","trading-assistant.editor.paramType.number":"Number","trading-assistant.editor.paramType.integer":"Integer","trading-assistant.editor.paramType.percent":"Percent","trading-assistant.editor.paramType.select":"Select","trading-assistant.editor.paramType.boolean":"Toggle","trading-assistant.editor.paramType.text":"Text","trading-assistant.editor.aiAdjustParamsBtn":"Adjust template parameters","trading-assistant.editor.aiGenerateFullCodeBtn":"Generate full code","trading-assistant.editor.aiAdjustingParams":"Adjusting parameters…","trading-assistant.editor.aiAdjustParamsSuccess":"Parameters updated from AI and applied to code","trading-assistant.editor.aiAdjustParamsFailed":"Parameter adjustment failed","trading-assistant.editor.aiAdjustParamsNeedTemplate":"Choose a script template in the Templates tab first","trading-assistant.editor.aiAdjustParamsNoChanges":"No applicable parameter changes recognized; try rephrasing","trading-assistant.templateParam.fast_period.label":"Fast period","trading-assistant.templateParam.fast_period.desc":"Short EMA length used to detect short-term momentum.","trading-assistant.templateParam.slow_period.label":"Slow period","trading-assistant.templateParam.slow_period.desc":"Long EMA length used to confirm the main trend.","trading-assistant.templateParam.position_pct.label":"Position allocation","trading-assistant.templateParam.position_pct.desc":"Maximum portion of account equity used for one entry.","trading-assistant.templateParam.stop_pct.label":"Stop-loss percent","trading-assistant.templateParam.stop_pct.desc":"Exit when price moves against the position by this percentage.","trading-assistant.templateParam.take_profit_pct.label":"Take-profit percent","trading-assistant.templateParam.take_profit_pct.desc":"Take profit when the target return percentage is reached.","trading-assistant.templateParam.rsi_period.label":"RSI period","trading-assistant.templateParam.rsi_period.desc":"Lookback window for RSI calculation.","trading-assistant.templateParam.oversold.label":"Oversold level","trading-assistant.templateParam.oversold.desc":"RSI below this level may trigger a buy.","trading-assistant.templateParam.overbought.label":"Overbought level","trading-assistant.templateParam.overbought.desc":"RSI above this level may trigger closing long.","trading-assistant.templateParam.macd_fast.label":"MACD fast period","trading-assistant.templateParam.macd_fast.desc":"Fast EMA period inside MACD.","trading-assistant.templateParam.macd_slow.label":"MACD slow period","trading-assistant.templateParam.macd_slow.desc":"Slow EMA period inside MACD.","trading-assistant.templateParam.macd_signal.label":"MACD signal period","trading-assistant.templateParam.macd_signal.desc":"Signal line EMA period applied to MACD line.","trading-assistant.templateParam.base_amount.label":"Base order amount","trading-assistant.templateParam.base_amount.desc":"Initial order amount for the first martingale layer.","trading-assistant.templateParam.max_layers.label":"Max layers","trading-assistant.templateParam.max_layers.desc":"Maximum number of averaging layers allowed.","trading-assistant.templateParam.multiplier.label":"Multiplier","trading-assistant.templateParam.multiplier.desc":"How much the next order size increases after a loss.","trading-assistant.templateParam.stop_loss_pct.label":"Risk stop-loss percent","trading-assistant.templateParam.stop_loss_pct.desc":"Force close when loss reaches this threshold to limit risk.","trading-assistant.templateParam.cooldown_bars.label":"Cooldown bars","trading-assistant.templateParam.cooldown_bars.desc":"Wait this many candles after an exit before re-entering.","trading-assistant.templateParam.grid_upper.label":"Grid upper price","trading-assistant.templateParam.grid_upper.desc":"Upper bound of the price range where the grid will work.","trading-assistant.templateParam.grid_lower.label":"Grid lower price","trading-assistant.templateParam.grid_lower.desc":"Lower bound of the price range where the grid will work.","trading-assistant.templateParam.grid_levels.label":"Grid levels","trading-assistant.templateParam.grid_levels.desc":"How many grid slices to divide the range into.","trading-assistant.templateParam.grid_mode.label":"Grid mode","trading-assistant.templateParam.grid_mode.desc":"Neutral: buy dips / sell rallies (futures + both may add shorts after flat). Long: long-biased grid. Short: sell-to-add on rallies, buy-to-cover on dips (use futures + appropriate trade direction).","trading-assistant.templateParam.grid_mode.optionNeutral":"Neutral","trading-assistant.templateParam.grid_mode.optionLong":"Long","trading-assistant.templateParam.grid_mode.optionShort":"Short","trading-assistant.templateParam.order_amount.label":"Order amount per grid","trading-assistant.templateParam.order_amount.desc":"Capital used each time a grid buy or sell is triggered.","trading-assistant.templateParam.buy_amount.label":"DCA amount","trading-assistant.templateParam.buy_amount.desc":"Base amount used for each DCA purchase.","trading-assistant.templateParam.dip_threshold.label":"Dip threshold","trading-assistant.templateParam.dip_threshold.desc":"Trigger an extra buy when price drops this much from the previous buy.","trading-assistant.templateParam.dip_multiplier.label":"Dip multiplier","trading-assistant.templateParam.dip_multiplier.desc":"Multiplier applied to the base amount during dip buys.","trading-assistant.templateParam.buy_interval.label":"Buy interval","trading-assistant.templateParam.buy_interval.desc":"How many candles to wait between regular DCA buys.","trading-assistant.templateParam.max_orders.label":"Max buy count","trading-assistant.templateParam.max_orders.desc":"Maximum total number of DCA entries allowed.","trading-assistant.templateParam.period.label":"Calculation period","trading-assistant.templateParam.period.desc":"Window length used to calculate mean and volatility.","trading-assistant.templateParam.std_mult.label":"Std-dev multiplier","trading-assistant.templateParam.std_mult.desc":"Multiplier used to build the upper and lower volatility bands.","trading-assistant.templateParam.lookback.label":"Breakout lookback","trading-assistant.templateParam.lookback.desc":"Number of historical candles used to detect key highs and lows.","trading-assistant.templateParam.volume_mult.label":"Volume multiplier","trading-assistant.templateParam.volume_mult.desc":"Required multiple of average volume to confirm a breakout.","trading-assistant.tabs.performance":"Performance","trading-assistant.tabs.backtestHistory":"Backtest History","trading-assistant.tabs.logs":"Strategy Logs","trading-assistant.tabs.overview":"Live Overview","trading-assistant.tabs.strategyManage":"Strategy Management","trading-assistant.performance.title":"Strategy Performance","trading-assistant.performance.totalReturn":"Total Return","trading-assistant.performance.annualReturn":"Annual Return","trading-assistant.performance.maxDrawdown":"Max Drawdown","trading-assistant.performance.sharpe":"Sharpe Ratio","trading-assistant.performance.winRate":"Win Rate","trading-assistant.performance.profitFactor":"Profit Factor","trading-assistant.performance.totalTrades":"Total Trades","trading-assistant.performance.runningDays":"Running Days","trading-assistant.performance.equityCurve":"Equity Curve","trading-assistant.performance.dailyReturns":"Daily Returns","trading-assistant.performance.monthlyHeatmap":"Monthly Returns Heatmap","trading-assistant.performance.noData":"No performance data yet, please start the strategy first","trading-assistant.performance.loadFailed":"Failed to load performance data","trading-assistant.logs.title":"Running Logs","trading-assistant.logs.noLogs":"No log records yet","trading-assistant.logs.level.info":"Info","trading-assistant.logs.level.warn":"Warning","trading-assistant.logs.level.error":"Error","trading-assistant.logs.level.trade":"Trade","trading-assistant.logs.level.signal":"Signal","trading-assistant.logs.autoRefresh":"Auto Refresh","trading-assistant.logs.clear":"Clear Logs","trading-assistant.logs.export":"Export Logs","dashboard.indicator.action.createStrategy":"Create Strategy from This Indicator","dashboard.indicator.backtest.advancedHint":"Full strategy configuration available in Trading Assistant","menu.billing":"Membership","billing.title":"Membership / Credits","billing.desc":"Choose a plan to activate VIP and receive bonus credits.","billing.snapshot.credits":"Current Credits","billing.snapshot.vip":"VIP Status","billing.snapshot.notVip":"Not VIP","billing.snapshot.expires":"Expires","billing.vipRule.title":"VIP Benefit","billing.vipRule.desc":"VIP has only one special permission: VIP-free indicators can be used without credits deduction. Other paid features/indicators still consume credits.","billing.plan.monthly":"Monthly","billing.plan.yearly":"Yearly","billing.plan.lifetime":"Lifetime","billing.perMonth":"month","billing.perYear":"year","billing.once":"one-time","billing.credits":"Credits","billing.lifetimeMonthly":"Monthly bonus","billing.buyNow":"Buy Now","billing.purchaseSuccess":"Purchase successful","billing.purchaseFailed":"Purchase failed","billing.usdt.title":"USDT Scan to Pay","billing.usdt.hintTitle":"Scan with your wallet and send USDT","billing.usdt.hintDesc":"Make sure the network and amount are correct (TRC20 only for now). Membership will be activated automatically after payment is confirmed.","billing.usdt.chain":"Chain","billing.usdt.amount":"Amount","billing.usdt.address":"Deposit Address","billing.usdt.copyAddress":"Copy Address","billing.usdt.copyAmount":"Copy Amount","billing.usdt.refresh":"Refresh","billing.usdt.expires":"Expires","billing.usdt.paidSuccess":"Payment confirmed. Membership activated.","billing.usdt.status.pending":"Waiting for payment","billing.usdt.status.paid":"Payment detected","billing.usdt.status.confirmed":"Confirmed","billing.usdt.status.expired":"Expired","billing.usdt.status.cancelled":"Cancelled","billing.usdt.status.failed":"Failed","billing.usdt.expiredHint":"Order expired. If you already paid, please contact support with your TxHash and payment screenshot.","billing.usdt.confirmedHint":"Payment confirmed, membership activated! Thank you for your purchase.","community.vipFree":"VIP Free","dashboard.indicator.publish.vipFree":"VIP Free","dashboard.indicator.publish.vipFreeHint":"When enabled: VIP users can use this indicator for free (non-VIP still need to purchase).","quickTrade.title":"Quick Trade","quickTrade.selectSymbol":"Select Trading Pair","quickTrade.exchange":"Exchange","quickTrade.selectExchange":"Select exchange account","quickTrade.testnetTag":"Testnet","quickTrade.cryptoOnly":"Crypto only","quickTrade.noExchange":"No crypto exchange accounts yet. Add one in Profile → Exchange Config.","quickTrade.addAccountInline":"Add account here","quickTrade.available":"Available","quickTrade.long":"Long","quickTrade.short":"Short","quickTrade.market":"Market","quickTrade.limit":"Limit","quickTrade.limitPrice":"Limit Price","quickTrade.enterPrice":"Enter price","quickTrade.amount":"Amount","quickTrade.enterAmount":"Enter amount","quickTrade.leverage":"Leverage","quickTrade.contractBadge":"Futures","quickTrade.marginMode":"Margin mode","quickTrade.crossMargin":"Cross","quickTrade.isolatedMargin":"Isolated","quickTrade.marginModeHint":"We request the exchange to set cross/isolated for this symbol before placing the order (may fail if orders exist or the exchange rejects).","quickTrade.spotModeTitle":"Spot (1× leverage)","quickTrade.spotModeHint":"At 1× leverage orders use spot. At 2× or higher, USDT-margined perpetuals are used.","quickTrade.shortDisabledSpot":"Spot does not support opening a short. Use futures (leverage ≥ 2×).","quickTrade.tpsl":"Take-profit / Stop-loss","quickTrade.tp":"Take Profit Price","quickTrade.sl":"Stop Loss Price","quickTrade.tpPlaceholder":"Enter TP price","quickTrade.slPlaceholder":"Enter SL price","quickTrade.tpslRecordOnlyHint":"Note: TP/SL prices are saved in QuantDinger trade records only. They are not sent to the exchange as native TP/SL or trigger orders. Set exchange-side TP/SL on the exchange if you need that.","quickTrade.optional":"Optional","quickTrade.buyLong":"Buy / Long","quickTrade.sellShort":"Sell / Short","quickTrade.currentPosition":"Current Position","quickTrade.side":"Side","quickTrade.posSize":"Size","quickTrade.entryPrice":"Entry Price","quickTrade.markPrice":"Mark Price","quickTrade.unrealizedPnl":"Unrealized PnL","quickTrade.closePosition":"Close Position","quickTrade.closeScopeLabel":"Close scope (perp)","quickTrade.closeScopeFull":"Full position","quickTrade.closeScopeSystem":"Quick Trade estimate","quickTrade.closeScopeSystemHint":"Uses filled buy/sell base qty from Quick Trade history and closes min(that net, exchange position). Wrong if you changed size on the exchange or outside this app; use with care.","quickTrade.noPosition":"No Position","quickTrade.noPositionHint":"No position for current trading pair","quickTrade.recentTrades":"Recent Trades","quickTrade.orderSuccess":"Order placed successfully!","quickTrade.orderFailed":"Order failed","quickTrade.positionClosed":"Position closed!","quickTrade.openPanel":"Quick Trade","quickTrade.tradeNow":"Trade Now","quickTrade.errorHints.insufficientBalance":"Insufficient available margin. Please deposit funds or reduce the order amount.","quickTrade.errorHints.invalidSize":"Order size does not meet exchange requirements (below minimum or invalid precision). Please adjust the amount.","quickTrade.errorHints.invalidPrice":"Limit price exceeds the allowed deviation. Please check the price.","quickTrade.errorHints.rateLimit":"Too many requests. Please try again later.","quickTrade.errorHints.authError":"API key is invalid or lacks permissions. Please check your exchange account settings.","quickTrade.errorHints.positionConflict":"No position to close, or position side mismatch.","quickTrade.errorHints.networkError":"Failed to connect to the exchange. Please check your network or try again later.","quickTrade.errorHints.exchangeMaintenance":"The exchange is under maintenance. Please try again later.","profile.exchange.title":"Exchange Config","profile.exchange.hint":"Manage your exchange API keys and broker connections. They can be used in Trading Assistant and Quick Trade.","profile.exchange.addAccount":"Add Exchange Account","profile.exchange.noAccounts":"No exchange accounts yet. Click the button above to add one.","profile.exchange.colExchange":"Exchange","profile.exchange.colName":"Name","profile.exchange.colHint":"Connection Info","profile.exchange.colCreatedAt":"Created At","profile.exchange.colActions":"Actions","profile.exchange.deleteConfirm":"Are you sure you want to delete this exchange account? This cannot be undone.","profile.exchange.deleteSuccess":"Exchange account deleted","profile.exchange.addTitle":"Add Exchange Account","profile.exchange.openAccount":"Open Account","profile.exchange.openAccountTitle":"Choose Exchange to Sign Up","profile.exchange.openAccountPromo":"QuantDinger exclusive signup — up to 20% commission rebate","profile.exchange.openAccountButton":"Open Account","profile.exchange.openAccountHint":"Pick a supported referral link and jump to the exchange registration page.","profile.exchange.openAccountGo":"Register Now","profile.exchange.openAccountUnavailable":"Referral link pending","profile.exchange.openAccountInviteCode":"Invite Code","profile.exchange.openAccountBrokerInfo":"Broker Info","profile.exchange.openAccountExtraLink":"Learn More","profile.exchange.selectExchange":"Select Exchange","profile.exchange.accountName":"Account Name (Optional)","profile.exchange.accountNamePlaceholder":"e.g. Main Account, Test Account","profile.exchange.apiKey":"API Key","profile.exchange.secretKey":"Secret Key","profile.exchange.passphrase":"Passphrase","profile.exchange.demoTrading":"Demo / testnet trading","profile.exchange.demoTag":"Testnet","profile.exchange.demoTradingHint":"Uses each exchange demo/test endpoints where available (e.g. Binance demo hosts, Bybit testnet, OKX simulated-trading header). Bitget, Kraken spot, Bitfinex share the same REST host as live—create paper/demo API keys on the exchange and keep this checked to tag the credential.","profile.exchange.whitelistIpLabel":"API whitelist IP (server egress)","profile.exchange.whitelistIpv4":"IPv4","profile.exchange.whitelistIpv6":"IPv6","profile.exchange.whitelistIpHint":"Add IPv4 and/or IPv6 to your exchange API whitelist as required (you may add both). These are backend egress addresses, not your browser’s IP. A dash means this environment has no egress for that protocol.","profile.exchange.whitelistIpCopy":"Copy","profile.exchange.whitelistIpRefresh":"Refresh","profile.exchange.whitelistIpCopied":"Copied to clipboard","profile.exchange.whitelistIpCopyFail":"Copy failed","profile.exchange.apiDocTitleSuffix":"API Docs","profile.exchange.apiDocHint":"Review the exchange official API guide first, then come back here to fill in your API Key, Secret, and whitelist IP.","profile.exchange.apiDocAction":"Open Official Docs","profile.exchange.ibkrHost":"TWS/Gateway Host","profile.exchange.ibkrPort":"TWS/Gateway Port","profile.exchange.ibkrPortHint":"TWS Paper:7497 | TWS Live:7496 | Gateway Paper:4002 | Gateway Live:4001","profile.exchange.ibkrClientId":"Client ID","profile.exchange.ibkrAccount":"Account (Optional)","profile.exchange.mt5Server":"Server","profile.exchange.mt5Login":"Login","profile.exchange.mt5Password":"Password","profile.exchange.mt5TerminalPath":"Terminal Path (Optional)","profile.exchange.mt5TerminalPathHint":"Path to MT5 terminal, e.g. C:\\Program Files\\MetaTrader 5\\terminal64.exe","profile.exchange.testConnection":"Test Connection","profile.exchange.testSuccess":"Connection successful!","profile.exchange.testFailed":"Connection failed","profile.exchange.saveSuccess":"Exchange account added successfully","profile.exchange.saveFailed":"Failed to add account","profile.exchange.typeCrypto":"Crypto Exchange","profile.exchange.typeIBKR":"US Stocks (IBKR)","profile.exchange.typeMT5":"Forex (MetaTrader 5)","profile.exchange.localDeploymentRequired":"Local deployment required","profile.exchange.localDeploymentHint":"This broker requires local deployment of QuantDinger to use.","profile.exchange.goToManage":"Go to Profile → Exchange Config to manage","profile.exchange.noCredentialHint":"Please add an exchange account in Profile first","adminOrders.tabTitle":"Order List","adminOrders.totalOrders":"Total Orders","adminOrders.paidOrders":"Paid","adminOrders.pendingOrders":"Pending","adminOrders.totalRevenue":"Total Revenue","adminOrders.filterAll":"All Status","adminOrders.filterPending":"Pending","adminOrders.filterPaid":"Paid","adminOrders.filterConfirmed":"Confirmed","adminOrders.filterExpired":"Expired","adminOrders.searchPlaceholder":"Search by username/email","adminOrders.colUser":"User","adminOrders.colType":"Type","adminOrders.colPlan":"Plan","adminOrders.colAmount":"Amount","adminOrders.colStatus":"Status","adminOrders.colChain":"Chain","adminOrders.colAddress":"Address","adminOrders.colTxHash":"Tx Hash","adminOrders.colCreatedAt":"Created","adminOrders.lifetime":"Lifetime","adminOrders.yearly":"Yearly","adminOrders.monthly":"Monthly","adminOrders.statusPaid":"Paid","adminOrders.statusConfirmed":"Confirmed","adminOrders.statusPending":"Pending","adminOrders.statusExpired":"Expired","adminOrders.statusCancelled":"Cancelled","adminOrders.statusFailed":"Failed","adminAiStats.tabTitle":"AI Analysis","adminAiStats.totalAnalyses":"Total Analyses","adminAiStats.activeUsers":"Active Users","adminAiStats.uniqueSymbols":"Symbols Analyzed","adminAiStats.accuracy":"Correct / Verified","adminAiStats.userStatsTitle":"Per-User Statistics","adminAiStats.recentTitle":"Recent Analysis Records","adminAiStats.searchPlaceholder":"Search by username","adminAiStats.colUser":"User","adminAiStats.colAnalysisCount":"Analyses","adminAiStats.colSymbols":"Symbols","adminAiStats.colMarkets":"Markets","adminAiStats.colAccuracy":"Correct / Wrong","adminAiStats.colFeedback":"Feedback","adminAiStats.colLastAnalysis":"Last Analysis","adminAiStats.colMarket":"Market","adminAiStats.colSymbol":"Symbol","adminAiStats.colModel":"Model","adminAiStats.colStatus":"Status","adminAiStats.colCreatedAt":"Time","adminAiStats.helpful":"Helpful","adminAiStats.notHelpful":"Not Helpful","polymarket.title":"Prediction Markets","polymarket.subtitle":"AI analysis and trading opportunity recommendations based on Polymarket prediction market data","polymarket.filter.category":"Select Category","polymarket.filter.sortBy":"Sort By","polymarket.sort.volume":"24h Volume","polymarket.sort.aiScore":"AI Opportunity Score","polymarket.sort.highProbability":"High Probability","polymarket.sort.highReturn":"High Return Ratio","polymarket.search.placeholder":"Search prediction markets...","polymarket.category.all":"All","polymarket.category.crypto":"Cryptocurrency","polymarket.category.politics":"Politics","polymarket.category.economics":"Economics","polymarket.category.sports":"Sports","polymarket.category.tech":"Tech","polymarket.category.finance":"Finance","polymarket.category.geopolitics":"Geopolitics","polymarket.category.culture":"Culture","polymarket.category.climate":"Climate","polymarket.category.entertainment":"Entertainment","polymarket.market.currentProbability":"Current Probability","polymarket.ai.predicted":"AI Predicted Probability","polymarket.ai.marketProbability":"Market Probability","polymarket.ai.recommendation":"AI Recommendation","polymarket.ai.confidence":"Confidence","polymarket.ai.opportunityScore":"Opportunity Score","polymarket.ai.reasoning":"Analysis Reasoning","polymarket.ai.keyFactors":"Key Factors","polymarket.recommendation.YES":"YES (Bullish)","polymarket.recommendation.NO":"NO (Bearish)","polymarket.recommendation.HOLD":"HOLD (Neutral)","polymarket.status.active":"Active","polymarket.status.closed":"Closed","polymarket.status.resolved":"Resolved","polymarket.action.viewDetail":"View Details","polymarket.action.viewOnPolymarket":"View on Polymarket","polymarket.detail.title":"Prediction Market Details","polymarket.detail.currentProbability":"Current Probability","polymarket.detail.volume24h":"24h Volume","polymarket.detail.liquidity":"Liquidity","polymarket.detail.aiAnalysis":"AI Analysis Results","polymarket.detail.assetOpportunities":"Related Asset Trading Opportunities","polymarket.opportunity.confidence":"Confidence","polymarket.opportunity.analyze":"Analyze Asset","polymarket.signal.BUY":"BUY","polymarket.signal.SELL":"SELL","polymarket.signal.HOLD":"HOLD","polymarket.error.loadFailed":"Failed to load markets","polymarket.error.searchFailed":"Search failed","polymarket.error.notFound":"Market not found","polymarket.error.loadDetailFailed":"Failed to load details","polymarket.viewOnPolymarket":"View on Polymarket","polymarket.filter.explanation.title":"Filter Explanation","polymarket.filter.explanation.volume":"Sorted by 24h trading volume, showing the most active prediction markets.","polymarket.filter.explanation.aiScore":"Sorted by AI opportunity score, considering AI-market divergence, confidence, and other factors. High-value opportunities are prioritized.","polymarket.filter.explanation.highProbability":"Sorted by AI predicted probability, prioritizing events with high AI probability (AI prediction > market probability + 10%).","polymarket.filter.explanation.highReturn":"Sorted by high return ratio, prioritizing opportunities with large AI-market divergence and high confidence (divergence × confidence). Suitable for finding undervalued predictions.","polymarket.deepAnalysis.prompt":"Currently showing rule-based simple analysis. Click the button below for AI deep analysis to get more accurate predictions and recommendations.","polymarket.deepAnalysis.button":"Deep Analysis","polymarket.deepAnalysis.success":"Deep analysis completed! Credits charged: {credits}, Remaining: {remaining}","polymarket.deepAnalysis.successFree":"Deep analysis completed!","polymarket.deepAnalysis.failed":"Deep analysis failed, please try again later","polymarket.deepAnalysis.insufficientCredits":"Insufficient credits! Required: {required}, Current: {current}, Shortage: {shortage}","polymarket.error.invalidMarketId":"Invalid market ID","polymarket.analysis.title":"Polymarket Prediction Market Analysis","polymarket.analysis.description":"Enter a Polymarket link or market title, and AI will analyze trading opportunities for you","polymarket.analysis.startAnalysis":"Start Analysis","polymarket.analysis.inputHint":"Please enter a Polymarket market link or market title","polymarket.analysis.inputPlaceholder":'e.g., https://polymarket.com/event/xxx or "Bitcoin price above $100k in 2025?"',"polymarket.analysis.inputRequired":"Please enter a Polymarket link or market title","polymarket.analysis.analyzeButton":"Start Analysis","polymarket.analysis.analyzing":"Analyzing, please wait...","polymarket.analysis.success":"Analysis completed!","polymarket.analysis.failed":"Analysis failed, please try again later","polymarket.analysis.insufficientCredits":"Insufficient credits, please recharge first","polymarket.analysis.viewOnPolymarket":"View on Polymarket","polymarket.analysis.aiAnalysis":"AI Analysis Results","polymarket.analysis.marketProbability":"Market Probability","polymarket.analysis.aiPredictedProbability":"AI Predicted Probability","polymarket.analysis.divergence":"Divergence","polymarket.analysis.recommendation":"Recommendation","polymarket.analysis.recommendationYes":"YES (Bullish)","polymarket.analysis.recommendationNo":"NO (Bearish)","polymarket.analysis.recommendationHold":"HOLD (Neutral)","polymarket.analysis.confidenceScore":"Confidence Score","polymarket.analysis.opportunityScore":"Opportunity Score","polymarket.analysis.reasoning":"Analysis Reasoning","polymarket.analysis.keyFactors":"Key Factors","polymarket.analysis.creditsCharged":"Credits charged for this analysis: {credits}","polymarket.analysis.remainingCredits":"Remaining credits: {credits}","polymarket.analysis.newAnalysis":"New Analysis","polymarket.analysis.tabAnalyze":"Analyze","polymarket.analysis.tabHistory":"History","polymarket.analysis.historyMarket":"Market","polymarket.analysis.historyRecommendation":"Recommendation","polymarket.analysis.historyOpportunityScore":"Opportunity Score","polymarket.analysis.historyCreatedAt":"Analysis Time","polymarket.analysis.historyTotal":"Total {total} records","polymarket.analysis.loadHistoryFailed":"Failed to load history","aiAssetAnalysis.tabs.polymarket":"Prediction Markets"};t["default"]=(0,i.A)((0,i.A)({},o),l)},45703:function(e,t,a){"use strict";a(23792),a(3362),a(69085),a(9391),a(74423),a(21699),a(52675),a(89463),a(66412),a(60193),a(92168),a(2259),a(86964),a(83237),a(61833),a(67947),a(31073),a(45700),a(78125),a(20326),a(28706),a(26835),a(33771),a(2008),a(50113),a(48980),a(46449),a(78350),a(23418),a(48598),a(62062),a(31051),a(34782),a(26910),a(87478),a(54554),a(93514),a(30237),a(54743),a(46761),a(11745),a(89572),a(48957),a(62010),a(4731),a(36033),a(93153),a(82326),a(36389),a(64444),a(8085),a(77762),a(65070),a(60605),a(39469),a(72152),a(75376),a(56624),a(11367),a(5914),a(78553),a(98690),a(60479),a(70761),a(2892),a(45374),a(25428),a(32637),a(40150),a(59149),a(64601),a(44435),a(87220),a(25843),a(9868),a(17427),a(87607),a(5506),a(52811),a(53921),a(83851),a(81278),a(1480),a(40875),a(29908),a(94052),a(94003),a(221),a(79432),a(9220),a(7904),a(93967),a(93941),a(10287),a(26099),a(16034),a(39796),a(60825),a(87411),a(21211),a(40888),a(9065),a(86565),a(32812),a(84634),a(71137),a(30985),a(34268),a(34873),a(84864),a(27495),a(69479),a(38781),a(31415),a(23860),a(99449),a(27337),a(47764),a(71761),a(35701),a(68156),a(85906),a(42781),a(25440),a(5746),a(90744),a(11392),a(42762),a(39202),a(43359),a(89907),a(11898),a(35490),a(5745),a(94298),a(60268),a(69546),a(20781),a(50778),a(89195),a(46276),a(48718),a(16308),a(34594),a(29833),a(46594),a(72107),a(95477),a(21489),a(22134),a(3690),a(61740),a(81630),a(72170),a(75044),a(69539),a(31694),a(89955),a(33206),a(48345),a(44496),a(66651),a(12887),a(19369),a(66812),a(8995),a(52568),a(31575),a(36072),a(88747),a(28845),a(29423),a(57301),a(373),a(86614),a(41405),a(33684),a(73772),a(30958),a(23500),a(62953),a(59848),a(122),a(3296),a(27208),a(48408),a(7452);var i=a(85471),s=function(){var e=this,t=e._self._c;return t("a-config-provider",{attrs:{locale:e.locale,direction:e.direction}},[t("div",{attrs:{id:"app"}},[t("router-view")],1)])},n=[],r={appVersion:"3.0.1",navTheme:"light",primaryColor:"#13C2C2",layout:"sidemenu",contentWidth:"Fluid",fixedHeader:!0,fixSiderbar:!0,colorWeak:!1,menu:{locale:!0},title:"QuantDinger",pwa:!1,iconfontUrl:"",production:!0},o=function(e){document.title=e;var t=navigator.userAgent,a=/\bMicroMessenger\/([\d\.]+)/;if(a.test(t)&&/ip(hone|od|ad)/i.test(t)){var i=document.createElement("iframe");i.src="/favicon.ico",i.style.display="none",i.onload=function(){setTimeout(function(){i.remove()},9)},document.body.appendChild(i)}},l=r.title,d=a(76338),c=a(64765),u=a(74053),m=a.n(u),g=a(95093),p=a.n(g),h=a(45958);i.Ay.use(c.A);var f="en-US",y={"en-US":(0,d.A)({},h["default"])},b=new c.A({silentTranslationWarn:!0,locale:f,fallbackLocale:f,messages:y}),A=[f];function k(e){b.locale=e;var t=document.documentElement,a=/^ar/i.test(e);return t&&(t.setAttribute("lang",e),t.setAttribute("dir",a?"rtl":"ltr")),document.body&&(document.body.setAttribute("dir",a?"rtl":"ltr"),document.body.classList.toggle("rtl",a)),e}function v(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f;return new Promise(function(t){return m().set("lang",e),b.locale!==e?A.includes(e)?t(k(e)):a(2162)("./".concat(e)).then(function(t){var a=t.default;return b.setLocaleMessage(e,a),A.push(e),p().updateLocale(a.momentName,a.momentLocale),k(e)}):t(e)})}function S(e){return b.t("".concat(e))}var P,T,w=b,C={data:function(){return{}},computed:{locale:function(){var e=this.$route.meta.title;return e&&o("".concat(S(e)," - ").concat(l)),this.$i18n.getLocaleMessage(this.$store.getters.lang).antLocale},direction:function(){var e=this.$store.getters.lang;return e&&/^ar/i.test(e)?"rtl":"ltr"},theme:function(){return this.$store.state.app.theme}},watch:{theme:{handler:function(e){"dark"===e||"realdark"===e?(document.body.classList.add("dark"),document.body.classList.remove("light")):(document.body.classList.remove("dark"),document.body.classList.add("light"))},immediate:!0}}},E=C,R=a(845),I=(0,R.A)(E,s,n,!1,null,null,null),_=I.exports,M=a(40173),L=function(){var e=this,t=e._self._c;return t("div",{class:["user-layout-wrapper",e.isMobile&&"mobile"],attrs:{id:"userLayout"}},[t("div",{staticClass:"container"},[e._m(0),t("div",{staticClass:"user-layout-lang"},[t("select-lang",{staticClass:"select-lang-trigger"})],1),t("div",{staticClass:"user-layout-content"},[e._m(1),t("div",{staticClass:"main-content"},[t("router-view")],1),t("div",{staticClass:"footer"},[t("div",{staticClass:"copyright"},[e._v(" Copyright © 2025-2026 Quantdinger.com "),t("div",{staticStyle:{width:"70%","text-align":"center","margin-left":"15%","margin-top":"10px"}},[t("a",{staticStyle:{color:"#1890ff",cursor:"pointer"},on:{click:e.toggleRisk}},[e._v(" "+e._s(e.showRisk?e.$t("user.login.privacy.collapse"):e.$t("user.login.privacy.view"))+" ")]),e.showRisk?t("div",{staticStyle:{"margin-top":"10px","font-size":"12px",color:"rgba(0,0,0,0.65)","line-height":"1.6","text-align":"left"}},[t("div",{staticStyle:{"font-weight":"600","margin-bottom":"6px"}},[e._v(e._s(e.$t("user.login.privacy.title")))]),e._v(" "+e._s(e.$t("user.login.privacy.content"))+" ")]):e._e()])])])])])])},x=[function(){var e=this,t=e._self._c;return t("div",{staticClass:"fx-layer",attrs:{"aria-hidden":"true"}},[t("div",{staticClass:"fx-gradient"}),t("div",{staticClass:"fx-grid"})])},function(){var e=this,t=e._self._c;return t("div",{staticClass:"top"},[t("div",{staticClass:"header"},[t("a",{attrs:{href:"/"}},[t("img",{staticClass:"logo",attrs:{src:a(33153),alt:"logo"}})])])])}],D=a(95353),N={computed:(0,d.A)({},(0,D.aH)({isMobile:function(e){return e.app.isMobile}}))},O=(a(63713),a(77197)),F=(a(78269),a(40255)),B=(a(1747),a(36457)),H={computed:(0,d.A)({},(0,D.aH)({currentLang:function(e){return e.app.lang}})),methods:{setLang:function(e){this.$store.dispatch("setLang",e)}}},q=H,U=["en-US","ja-JP","ko-KR","vi-VN","th-TH","ar-SA","fr-FR","de-DE","zh-TW","zh-CN"],j={"zh-CN":"简体中文","zh-TW":"繁體中文","en-US":"English","ja-JP":"日本語","ko-KR":"한국어","vi-VN":"Tiếng Việt","th-TH":"ไทย","ar-SA":"العربية","fr-FR":"Français","de-DE":"Deutsch"},G={"zh-CN":"🇨🇳","zh-TW":"sg","en-US":"🇺🇸","ja-JP":"🇯🇵","ko-KR":"🇰🇷","vi-VN":"🇻🇳","th-TH":"🇹🇭","ar-SA":"🇸🇦","fr-FR":"🇫🇷","de-DE":"🇩🇪"},W={props:{prefixCls:{type:String,default:"ant-pro-drop-down"}},name:"SelectLang",mixins:[q],render:function(){var e=this,t=arguments[0],a=this.prefixCls,i=function(t){var a=t.key;e.setLang(a)},s=t(B.Ay,{class:["menu","ant-pro-header-menu"],attrs:{selectedKeys:[this.currentLang]},on:{click:i}},[U.map(function(e){return t(B.Ay.Item,{key:e},[t("span",{attrs:{role:"img","aria-label":j[e]}},[G[e]])," ",j[e]])})]);return t(O.Ay,{attrs:{overlay:s,placement:"bottomRight"}},[t("span",{class:a},[t(F.A,{attrs:{type:"global",title:S("navBar.lang")}})])])}},K=W,$={name:"UserLayout",components:{SelectLang:K},mixins:[N],data:function(){return{showRisk:!1}},methods:{toggleRisk:function(){this.showRisk=!this.showRisk}},mounted:function(){document.body.classList.add("userLayout")},beforeDestroy:function(){document.body.classList.remove("userLayout")}},V=$,z=(0,R.A)(V,L,x,!1,null,"7ae30672",null),Q=z.exports,Y=function(){var e=this,t=e._self._c;return t("div",[t("router-view")],1)},X=[],J={name:"BlankLayout"},Z=J,ee=(0,R.A)(Z,Y,X,!1,null,"7f25f9eb",null),te=(ee.exports,function(){var e=this,t=e._self._c;return t("div",{class:["basic-layout-wrapper",e.settings.theme]},[t("pro-layout",e._b({attrs:{menus:e.menus,collapsed:e.collapsed,mediaQuery:e.query,isMobile:e.isMobile,handleMediaQuery:e.handleMediaQuery,handleCollapse:e.handleCollapse,i18nRender:e.i18nRender},scopedSlots:e._u([{key:"menuHeaderRender",fn:function(){return[t("div",[t("img",{attrs:{src:a(2304)}}),t("h1",[e._v(e._s(e.title))])])]},proxy:!0},{key:"headerContentRender",fn:function(){return[t("div",[t("a-tooltip",{attrs:{title:e.$t("menu.header.refreshPage")}},[t("a-icon",{staticStyle:{"font-size":"18px",cursor:"pointer"},attrs:{type:"reload"},on:{click:e.handleRefresh}})],1)],1)]},proxy:!0},{key:"rightContentRender",fn:function(){return[t("right-content",{attrs:{"top-menu":"topmenu"===e.settings.layout,"is-mobile":e.isMobile,theme:e.settings.theme}})]},proxy:!0},{key:"footerRender",fn:function(){return[t("div",{staticStyle:{display:"none"}})]},proxy:!0}])},"pro-layout",e.settings,!1),[t("a-modal",{attrs:{visible:e.showLegalModal,footer:null,title:e.$t("menu.footer.userAgreement"),width:800},on:{cancel:function(t){e.showLegalModal=!1}}},[t("div",{staticStyle:{"max-height":"60vh",overflow:"auto","white-space":"pre-wrap","line-height":"1.8",padding:"16px"}},[e._v(" "+e._s(e.menuFooterConfig.legal.user_agreement||e.$t("user.login.legal.content"))+" ")]),t("div",{staticStyle:{"margin-top":"12px","text-align":"right"}},[t("a-button",{attrs:{type:"primary"},on:{click:function(t){e.showLegalModal=!1}}},[e._v("OK")])],1)]),t("a-modal",{attrs:{visible:e.showPrivacyModal,footer:null,title:e.$t("menu.footer.privacyPolicy"),width:800},on:{cancel:function(t){e.showPrivacyModal=!1}}},[t("div",{staticStyle:{"max-height":"60vh",overflow:"auto","white-space":"pre-wrap","line-height":"1.8",padding:"16px"}},[e._v(" "+e._s(e.menuFooterConfig.legal.privacy_policy||e.$t("user.login.privacy.content"))+" ")]),t("div",{staticStyle:{"margin-top":"12px","text-align":"right"}},[t("a-button",{attrs:{type:"primary"},on:{click:function(t){e.showPrivacyModal=!1}}},[e._v("OK")])],1)]),t("setting-drawer",{ref:"settingDrawer",attrs:{settings:e.settings},on:{change:e.handleSettingChange}},[t("div",{staticStyle:{margin:"12px 0"}},[e._v(" This is SettingDrawer custom footer content. ")])]),t("router-view",{key:e.refreshKey})],1),t("div",{staticClass:"custom-menu-footer",class:{collapsed:e.collapsed,"drawer-open":e.isMobile&&e.isDrawerOpen,"drawer-animating":e.isMobile&&e.isDrawerAnimating}},[e.collapsed?e._e():t("div",{staticClass:"menu-footer-content"},[t("div",{staticClass:"footer-section"},[t("div",{staticClass:"section-title"},[e._v(e._s(e.$t("menu.footer.contactUs")))]),t("div",{staticClass:"section-links"},[t("a",{attrs:{href:e.menuFooterConfig.contact.support_url,target:"_blank"}},[e._v(e._s(e.$t("menu.footer.support")))]),t("span",{staticClass:"separator"},[e._v("|")]),t("a",{attrs:{href:e.menuFooterConfig.contact.feature_request_url,target:"_blank"}},[e._v(e._s(e.$t("menu.footer.featureRequest")))])])]),t("div",{staticClass:"footer-section"},[t("div",{staticClass:"section-title"},[e._v(e._s(e.$t("menu.footer.getSupport")))]),t("div",{staticClass:"section-links"},[t("a",{attrs:{href:"mailto:"+e.menuFooterConfig.contact.email}},[e._v(e._s(e.$t("menu.footer.email")))]),t("span",{staticClass:"separator"},[e._v("|")]),t("a",{attrs:{href:e.menuFooterConfig.contact.live_chat_url,target:"_blank"}},[e._v(e._s(e.$t("menu.footer.liveChat")))])])]),e.menuFooterConfig.social_accounts&&e.menuFooterConfig.social_accounts.length>0?t("div",{staticClass:"footer-section"},[t("div",{staticClass:"section-title"},[e._v(e._s(e.$t("menu.footer.socialAccounts")))]),t("div",{staticClass:"social-icons"},e._l(e.menuFooterConfig.social_accounts,function(e,a){return t("a",{key:a,staticClass:"social-icon",attrs:{href:e.url,target:"_blank",rel:"noopener noreferrer",title:e.name}},[t("Icon",{staticClass:"social-icon-svg",attrs:{icon:"simple-icons:".concat(e.icon)}})],1)}),0)]):e._e(),t("div",{staticClass:"footer-section"},[t("div",{staticClass:"section-links"},[t("a",{on:{click:function(t){e.showLegalModal=!0}}},[e._v(e._s(e.$t("menu.footer.userAgreement")))]),t("span",{staticClass:"separator"},[e._v("&")]),t("a",{on:{click:function(t){e.showPrivacyModal=!0}}},[e._v(e._s(e.$t("menu.footer.privacyPolicy")))])])]),t("div",{staticClass:"footer-section copyright"},[e._v(" "+e._s(e.menuFooterConfig.copyright)+" ")]),t("div",{staticClass:"footer-section version"},[e._v(" V"+e._s(e.appVersion)+" ")])])])],1)}),ae=[],ie=a(18787),se=a(69511),ne=a.n(se),re=a(58391),oe=a.n(re),le={getAntdSerials:function(e){var t=new Array(9).fill().map(function(t,a){return ne().varyColor.lighten(e,a/10)}),a=oe()(e),i=ne().varyColor.toNum3(e.replace("#","")).join(",");return t.concat(a).concat(i)},changeColor:function(e){if(!ne()||!ne().changer||"function"!==typeof ne().changer.changeColor)return Promise.resolve();var t={newColors:this.getAntdSerials(e),changeUrl:function(e){return"/".concat(e)}};try{return ne().changer.changeColor(t,Promise)}catch(a){return Promise.resolve()}}},de=function(){return[{key:w.t("app.setting.themecolor.dust"),color:"#F5222D"},{key:w.t("app.setting.themecolor.volcano"),color:"#FA541C"},{key:w.t("app.setting.themecolor.sunset"),color:"#FAAD14"},{key:w.t("app.setting.themecolor.cyan"),color:"#13C2C2"},{key:w.t("app.setting.themecolor.green"),color:"#52C41A"},{key:w.t("app.setting.themecolor.daybreak"),color:"#1890FF"},{key:w.t("app.setting.themecolor.geekblue"),color:"#2F54EB"},{key:w.t("app.setting.themecolor.purple"),color:"#722ED1"}]},ce=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=t?null:ie.A.loading(w.t("app.setting.theme.switching"),0);le.changeColor(e).finally(function(){a&&setTimeout(function(){a()},10)})},ue=function(e){var t=document.body.querySelector("#app");e?t.classList.add("colorWeak"):t.classList.remove("colorWeak")},me=a(75314),ge=function(){var e=this,t=e._self._c;return t("div",{class:e.wrpCls},[t("avatar-dropdown",{class:e.prefixCls,attrs:{menu:!0,"current-user":e.currentUser}}),t("notice-icon",{class:e.prefixCls}),t("select-lang",{class:e.prefixCls}),t("a-tooltip",{attrs:{title:e.$t("app.setting.tooltip")}},[t("span",{class:e.prefixCls,on:{click:e.handleSettingClick}},[t("a-icon",{staticStyle:{"font-size":"16px"},attrs:{type:"setting"}})],1)])],1)},pe=[],he=a(26297),fe=function(){var e=this,t=e._self._c;return e.currentUser&&e.currentUser.name?t("a-dropdown",{attrs:{placement:"bottomRight"},scopedSlots:e._u([{key:"overlay",fn:function(){return[t("a-menu",{staticClass:"ant-pro-drop-down menu",attrs:{"selected-keys":[]}},[t("a-menu-item",{key:"profile",on:{click:e.handleProfile}},[t("a-icon",{attrs:{type:"user"}}),e._v(" "+e._s(e.$t("menu.profile")||"My Profile")+" ")],1),t("a-menu-divider"),t("a-menu-item",{key:"logout",on:{click:e.handleLogout}},[t("a-icon",{attrs:{type:"logout"}}),e._v(" "+e._s(e.$t("menu.account.logout"))+" ")],1)],1)]},proxy:!0}],null,!1,2847446919)},[t("span",{staticClass:"ant-pro-account-avatar"},[t("a-avatar",{staticClass:"antd-pro-global-header-index-avatar",attrs:{size:"small",src:e.currentUser.avatar}}),t("span",[e._v(e._s(e.currentUser.name))])],1)]):t("span",[t("a-spin",{style:{marginLeft:8,marginRight:8},attrs:{size:"small"}})],1)},ye=[],be=(a(62621),a(43898)),Ae={name:"AvatarDropdown",props:{currentUser:{type:Object,default:function(){return null}},menu:{type:Boolean,default:!0}},methods:{handleProfile:function(){this.$router.push({name:"Profile"})},handleLogout:function(e){var t=this;be.A.confirm({title:this.$t("layouts.usermenu.dialog.title"),content:this.$t("layouts.usermenu.dialog.content"),onOk:function(){return t.$store.dispatch("Logout").then(function(){t.$router.push({name:"login"})})},onCancel:function(){}})}}},ke=Ae,ve=(0,R.A)(ke,fe,ye,!1,null,null,null),Se=ve.exports,Pe=function(){var e=this,t=e._self._c;return t("div",{staticClass:"notice-icon-wrapper"},[t("a-popover",{attrs:{trigger:"click",placement:"bottomRight",overlayClassName:"header-notice-wrapper",getPopupContainer:function(){return e.$refs.noticeRef.parentElement},autoAdjustOverflow:!0,arrowPointAtCenter:!0,overlayStyle:{width:"380px",top:"50px"}},model:{value:e.visible,callback:function(t){e.visible=t},expression:"visible"}},[t("template",{slot:"content"},[t("div",{staticClass:"notice-header"},[t("span",{staticClass:"notice-title"},[e._v(e._s(e.$t("notice.title")))]),e.notifications.length>0?t("a",{staticClass:"notice-action",on:{click:e.markAllRead}},[e._v(" "+e._s(e.$t("notice.markAllRead"))+" ")]):e._e()]),t("a-spin",{attrs:{spinning:e.loading}},[e.notifications.length>0?t("div",{staticClass:"notice-list"},e._l(e.notifications,function(a){return t("div",{key:a.id,staticClass:"notice-item",class:{unread:!a.is_read},on:{click:function(t){return e.handleNoticeClick(a)}}},[t("div",{staticClass:"notice-item-icon"},[t("a-icon",{style:{color:e.getNoticeColor(a.signal_type)},attrs:{type:e.getNoticeIcon(a.signal_type)}})],1),t("div",{staticClass:"notice-item-content"},[t("div",{staticClass:"notice-item-title"},[e._v(e._s(a.title))]),t("div",{staticClass:"notice-item-desc"},[e._v(e._s(e.truncateMessage(a.message)))]),t("div",{staticClass:"notice-item-time"},[e._v(e._s(e.formatTime(a.created_at)))])])])}),0):t("div",{staticClass:"notice-empty"},[t("a-empty",{attrs:{description:e.$t("notice.empty")}})],1)]),e.notifications.length>0?t("div",{staticClass:"notice-footer"},[t("a",{on:{click:e.clearNotifications}},[e._v(e._s(e.$t("notice.clear")))])]):e._e()],1),t("span",{ref:"noticeRef",staticClass:"header-notice",on:{click:e.fetchNotice}},[t("a-badge",{attrs:{count:e.unreadCount,overflowCount:99}},[t("a-icon",{staticStyle:{"font-size":"16px",padding:"4px"},attrs:{type:"bell"}})],1)],1)],2),t("a-modal",{attrs:{title:e.detailNotice?e.detailNotice.title:"",footer:null,width:e.isHtmlReport?900:600,wrapClassName:e.isHtmlReport?"notice-detail-modal html-report-modal":"notice-detail-modal",centered:""},model:{value:e.detailVisible,callback:function(t){e.detailVisible=t},expression:"detailVisible"}},[e.detailNotice?t("div",{staticClass:"notice-detail"},[t("div",{staticClass:"notice-detail-meta"},[t("div",{staticClass:"notice-detail-type"},[t("a-icon",{style:{color:e.getNoticeColor(e.detailNotice.signal_type)},attrs:{type:e.getNoticeIcon(e.detailNotice.signal_type)}}),t("span",{staticClass:"type-label"},[e._v(e._s(e.getNoticeTypeLabel(e.detailNotice.signal_type)))])],1),t("div",{staticClass:"notice-detail-time"},[t("a-icon",{attrs:{type:"clock-circle"}}),t("span",[e._v(e._s(e.formatFullTime(e.detailNotice.created_at)))])],1)]),t("a-divider"),t("div",{staticClass:"notice-detail-content",class:{"html-report":e.isHtmlReport}},[t("div",{staticClass:"message-body",domProps:{innerHTML:e._s(e.formatMessageHtml(e.detailNotice.message))}})]),!e.isHtmlReport&&e.detailNotice.payload&&Object.keys(e.detailNotice.payload).length>0?[t("a-divider"),t("div",{staticClass:"notice-detail-extra"},[t("div",{staticClass:"extra-title"},[e._v(e._s(e.$t("notice.detailInfo")))]),"ai_monitor"===e.detailNotice.signal_type?[e.detailNotice.payload.final_decision?t("div",{staticClass:"extra-item decision"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.aiDecision"))+":")]),t("a-tag",{attrs:{color:e.getDecisionColor(e.detailNotice.payload.final_decision)}},[e._v(" "+e._s(e.detailNotice.payload.final_decision)+" ")]),e.detailNotice.payload.confidence?t("span",{staticClass:"confidence"},[e._v(" ("+e._s(e.$t("notice.confidence"))+": "+e._s(e.detailNotice.payload.confidence)+"%) ")]):e._e()],1):e._e(),e.detailNotice.payload.reasoning?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.reasoning"))+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.detailNotice.payload.reasoning))])]):e._e()]:e._e(),"price_alert"===e.detailNotice.signal_type?[e.detailNotice.payload.symbol?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.symbol"))+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.detailNotice.payload.symbol))])]):e._e(),e.detailNotice.payload.price?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.currentPrice"))+":")]),t("span",{staticClass:"value"},[e._v("$"+e._s(e.detailNotice.payload.price))])]):e._e(),e.detailNotice.payload.trigger_price?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.triggerPrice"))+":")]),t("span",{staticClass:"value"},[e._v("$"+e._s(e.detailNotice.payload.trigger_price))])]):e._e()]:e._e(),"signal"===e.detailNotice.signal_type||"trade"===e.detailNotice.signal_type?[e.detailNotice.payload.symbol?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.symbol"))+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.detailNotice.payload.symbol))])]):e._e(),e.detailNotice.payload.action?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.action"))+":")]),t("a-tag",{attrs:{color:"BUY"===e.detailNotice.payload.action?"green":"red"}},[e._v(" "+e._s(e.detailNotice.payload.action)+" ")])],1):e._e(),e.detailNotice.payload.quantity?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.quantity"))+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.detailNotice.payload.quantity))])]):e._e()]:e._e()],2)]:e._e(),t("div",{staticClass:"notice-detail-actions"},[e.detailNotice.payload&&e.detailNotice.payload.monitor_id?t("a-button",{attrs:{type:"primary"},on:{click:e.goToPortfolio}},[t("a-icon",{attrs:{type:"fund"}}),e._v(" "+e._s(e.$t("notice.viewPortfolio"))+" ")],1):e._e(),t("a-button",{on:{click:function(t){e.detailVisible=!1}}},[e._v(" "+e._s(e.$t("notice.close"))+" ")])],1)],2):e._e()])],1)},Te=[],we=a(2403),Ce=a(81127),Ee=a(56252),Re=a(36911),Ie=a(75769),_e={name:"HeaderNotice",data:function(){return{loading:!1,visible:!1,detailVisible:!1,detailNotice:null,notifications:[],unreadTotal:0,lastFetchId:0,pollingTimer:null}},computed:{unreadCount:function(){return Number(this.unreadTotal||0)},isHtmlReport:function(){return!(!this.detailNotice||!this.detailNotice.message)&&(this.detailNotice.message.includes('
')||this.detailNotice.message.includes("