@dshtrading/client-ui-trading 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +75 -0
- package/README.md +55 -0
- package/lib/bridge.js +794 -0
- package/lib/client/contract.d.ts +11 -0
- package/lib/client/locales.d.ts +6 -0
- package/lib/client/locales.js +943 -0
- package/lib/client.js +20671 -0
- package/lib/client.js.map +1 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.js +141 -0
- package/lib/sse.js +30 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","names":["createObservable","initialState","createObservable","css","createObservable","useId","useRef","TAB_KEY","useState","useSyncExternalStore","useRef","useMemo","css","useState","css","createDevicePixelRatioObservable","en","t","i","n","s","ColorType","CrosshairMode","LineStyle","useState","useRef","createChart","CandlestickSeries","HistogramSeries","LineSeries","createSeriesMarkers","AreaSeries","css","useState","useMemo","css","useState","css","css","useState","useMemo","css","useState","css","useState","css","css","createObservable","useSyncExternalStore","useState","useMemo","useRef","css","useState","css","useState","css","useState","useRef","createPortal","css","css","createObservable","useRef","css","createObservable"],"sources":["../../indicators/lib/registry.js","../../indicators/lib/validate.js","../../watchlist/lib/seeds.js","../src/client/store.ts","../src/client/chart-state.ts","../src/client/indicator-registry.ts","../src/client/stage-views.ts","../src/client/api.ts","../src/client/fill-composer.ts","../src/client/toolview-parse.ts","../src/client/toolview.tsx","../../router/lib/catalog.js","../src/client/color-mode.ts","../src/client/format.ts","../src/client/Sparkline.tsx","../src/client/icons.tsx","../src/client/usePoll.ts","../src/client/MarketSidebar.tsx","../src/client/MarketDock.tsx","../../../node_modules/.pnpm/fancy-canvas@2.1.0/node_modules/fancy-canvas/size.mjs","../../../node_modules/.pnpm/fancy-canvas@2.1.0/node_modules/fancy-canvas/device-pixel-ratio.mjs","../../../node_modules/.pnpm/fancy-canvas@2.1.0/node_modules/fancy-canvas/canvas-element-bitmap-size.mjs","../../../node_modules/.pnpm/fancy-canvas@2.1.0/node_modules/fancy-canvas/canvas-rendering-target.mjs","../../../node_modules/.pnpm/lightweight-charts@5.2.1/node_modules/lightweight-charts/dist/lightweight-charts.production.mjs","../src/client/TvChart.tsx","../src/client/compose-quote.ts","../src/client/FundamentalsStage.tsx","../src/client/DerivativesPane.tsx","../src/client/DerivativesStage.tsx","../src/client/OrderbookPane.tsx","../src/client/OrderPanel.tsx","../src/client/TradeDrawer.tsx","../src/client/paper-trading-store.ts","../src/client/range-stats.ts","../src/client/market-status.ts","../src/client/news-source.ts","../src/client/NewsFeedPane.tsx","../src/client/MarkerTooltip.tsx","../src/client/marker-state.ts","../src/client/QuoteStage.tsx","../src/client/MiddleStage.tsx","../src/client/QuotePane.tsx","../src/client/HomeHistory.tsx","../src/client/SessionRail.tsx","../src/client/chat-width-store.ts","../src/client/ChatResizeHandle.tsx","../src/client/fold-store.ts","../src/client/host-watchlist-sync.ts","../src/client/locales.ts","../src/client/index.ts"],"sourcesContent":["//#region src/registry.ts\nfunction createIndicatorRegistry() {\n\tconst registry = /* @__PURE__ */ new Map();\n\tconst listeners = /* @__PURE__ */ new Set();\n\tlet version = 0;\n\tconst register = (definition) => {\n\t\tregistry.set(definition.id, definition);\n\t\tversion += 1;\n\t\tfor (const listener of listeners) listener();\n\t};\n\tconst definitionParams = (id) => registry.get(id)?.params ?? [];\n\treturn {\n\t\tregister,\n\t\tunregister(id) {\n\t\t\tif (!registry.delete(id)) return;\n\t\t\tversion += 1;\n\t\t\tfor (const listener of listeners) listener();\n\t\t},\n\t\tget: (id) => registry.get(id),\n\t\tlist: () => [...registry.values()],\n\t\tdefaultParams(definition) {\n\t\t\tconst params = {};\n\t\t\tfor (const spec of definition.params) params[spec.key] = spec.default;\n\t\t\treturn params;\n\t\t},\n\t\tdefaultInstance(id) {\n\t\t\tconst definition = registry.get(id);\n\t\t\tif (definition === void 0) return void 0;\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tparams: this.defaultParams(definition)\n\t\t\t};\n\t\t},\n\t\tinstanceKey(instance) {\n\t\t\tconst values = definitionParams(instance.id).map((spec) => instance.params[spec.key] ?? spec.default);\n\t\t\treturn `${instance.id}:${values.join(\",\")}`;\n\t\t},\n\t\tclampParams(definition, params) {\n\t\t\tconst out = {};\n\t\t\tfor (const spec of definition.params) {\n\t\t\t\tconst raw = params[spec.key];\n\t\t\t\tout[spec.key] = typeof raw === \"number\" && Number.isFinite(raw) ? Math.min(spec.max, Math.max(spec.min, Math.round(raw))) : spec.default;\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\tsanitizeInstances(instances) {\n\t\t\tif (!Array.isArray(instances)) return [];\n\t\t\tconst seen = /* @__PURE__ */ new Set();\n\t\t\tconst out = [];\n\t\t\tfor (const raw of instances) {\n\t\t\t\tif (typeof raw !== \"object\" || raw === null) continue;\n\t\t\t\tconst { id, params } = raw;\n\t\t\t\tif (typeof id !== \"string\" || seen.has(id)) continue;\n\t\t\t\tconst definition = registry.get(id);\n\t\t\t\tif (definition === void 0) continue;\n\t\t\t\tseen.add(id);\n\t\t\t\tout.push({\n\t\t\t\t\tid,\n\t\t\t\t\tparams: this.clampParams(definition, typeof params === \"object\" && params !== null ? params : {})\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\tsubscribe(listener) {\n\t\t\tlisteners.add(listener);\n\t\t\treturn () => {\n\t\t\t\tlisteners.delete(listener);\n\t\t\t};\n\t\t},\n\t\tgetVersion: () => version\n\t};\n}\n//#endregion\nexport { createIndicatorRegistry };\n","//#region src/validate.ts\nconst ID_PATTERN = /^[a-z0-9_]{2,32}$/;\nconst PARAM_KEY_PATTERN = /^[a-zA-Z0-9_]{1,16}$/;\nconst MAX_SOURCE_LENGTH = 16384;\nconst MAX_PARAMS_COUNT = 8;\nconst RESERVED_IDS = /* @__PURE__ */ new Set([\n\t\"ma\",\n\t\"ema\",\n\t\"boll\",\n\t\"macd\",\n\t\"rsi\",\n\t\"kdj\"\n]);\nconst DEFAULT_TIMEOUT_MS = 100;\n/** 生成特征测试 K 线序列。 */\nfunction createSampleBars() {\n\tconst baseTime = 17e11;\n\tconst minute = 6e4;\n\treturn {\n\t\tuptrend: Array.from({ length: 30 }, (_, i) => {\n\t\t\tconst open = 100 + i * 2;\n\t\t\tconst close = open + 1.5;\n\t\t\treturn {\n\t\t\t\topenTime: baseTime + i * minute,\n\t\t\t\topen,\n\t\t\t\thigh: close + 1,\n\t\t\t\tlow: open - .5,\n\t\t\t\tclose,\n\t\t\t\tvolume: 1e3 + i * 50\n\t\t\t};\n\t\t}),\n\t\tdowntrend: Array.from({ length: 30 }, (_, i) => {\n\t\t\tconst open = 200 - i * 2.5;\n\t\t\tconst close = open - 2;\n\t\t\treturn {\n\t\t\t\topenTime: baseTime + i * minute,\n\t\t\t\topen,\n\t\t\t\thigh: open + .5,\n\t\t\t\tlow: close - 1,\n\t\t\t\tclose,\n\t\t\t\tvolume: 2e3 - i * 30\n\t\t\t};\n\t\t}),\n\t\tflat: Array.from({ length: 30 }, (_, i) => {\n\t\t\tconst delta = (i % 2 === 0 ? 1 : -1) * (i % 3 === 0 ? .8 : .2);\n\t\t\tconst open = 150;\n\t\t\tconst close = open + delta;\n\t\t\treturn {\n\t\t\t\topenTime: baseTime + i * minute,\n\t\t\t\topen,\n\t\t\t\thigh: Math.max(open, close) + .5,\n\t\t\t\tlow: Math.min(open, close) - .5,\n\t\t\t\tclose,\n\t\t\t\tvolume: 1500\n\t\t\t};\n\t\t}),\n\t\tgap: Array.from({ length: 15 }, (_, i) => {\n\t\t\tconst jump = i === 7 ? 30 : 0;\n\t\t\tconst open = 100 + i * 2 + jump;\n\t\t\tconst close = open + 1;\n\t\t\treturn {\n\t\t\t\topenTime: baseTime + i * minute,\n\t\t\t\topen,\n\t\t\t\thigh: close + 2,\n\t\t\t\tlow: open - 1,\n\t\t\t\tclose,\n\t\t\t\tvolume: 3e3\n\t\t\t};\n\t\t}),\n\t\tshort: [\n\t\t\t{\n\t\t\t\topenTime: baseTime,\n\t\t\t\topen: 100,\n\t\t\t\thigh: 102,\n\t\t\t\tlow: 99,\n\t\t\t\tclose: 101,\n\t\t\t\tvolume: 500\n\t\t\t},\n\t\t\t{\n\t\t\t\topenTime: 170000006e4,\n\t\t\t\topen: 101,\n\t\t\t\thigh: 104,\n\t\t\t\tlow: 100,\n\t\t\t\tclose: 103,\n\t\t\t\tvolume: 600\n\t\t\t},\n\t\t\t{\n\t\t\t\topenTime: 170000012e4,\n\t\t\t\topen: 103,\n\t\t\t\thigh: 105,\n\t\t\t\tlow: 102,\n\t\t\t\tclose: 102,\n\t\t\t\tvolume: 550\n\t\t\t}\n\t\t]\n\t};\n}\n/** 将源码解析为可执行纯函数。 */\nfunction compileComputeSource(source) {\n\tconst trimmed = source.trim();\n\tif (/^(?:\\([a-zA-Z0-9_,\\s]*\\)|[a-zA-Z0-9_]+)\\s*=>/.test(trimmed) || /^function\\b/.test(trimmed)) return new Function(`\"use strict\"; return (${trimmed});`)();\n\treturn new Function(\"bars\", \"params\", `\"use strict\";\\n${trimmed}`);\n}\n/** 默认浏览器纯 JS runner。 */\nconst defaultJsRunner = (source, bars, params) => {\n\treturn compileComputeSource(source)(bars, params);\n};\n/** blob Worker 内执行的编译+试算脚本(自包含,不依赖宿主任何模块)。 */\nconst WORKER_TRIAL_SCRIPT = `self.onmessage = (event) => {\n const { source, bars, params } = event.data\n try {\n const trimmed = String(source).trim()\n let fn\n if (/^(?:\\\\([a-zA-Z0-9_,\\\\s]*\\\\)|[a-zA-Z0-9_]+)\\\\s*=>/.test(trimmed) || /^function\\\\b/.test(trimmed)) {\n fn = (new Function('\"use strict\"; return (' + trimmed + ');'))()\n } else {\n fn = new Function('bars', 'params', '\"use strict\";\\\\n' + trimmed)\n }\n const result = fn(bars, params)\n self.postMessage({ ok: true, result })\n } catch (error) {\n self.postMessage({ ok: false, message: String((error && error.message) || error) })\n }\n}`;\n/**\n* 浏览器端 Worker 超时 runner(issue #31):compute 源码在 blob URL Worker 内\n* 编译执行,主线程超时即 terminate——补 new Function 裸执行「死循环卡死主线程」\n* 的缺口(策略校验与指标异步校验共用)。非浏览器环境(Node)回退同步直执行\n* (无熔断;Node 侧应传 vm 熔断 runner)。\n*/\nfunction workerComputeRunner(computeSource, bars, params, timeoutMs = 100) {\n\tif (typeof Worker === \"undefined\" || typeof Blob === \"undefined\" || typeof URL === \"undefined\") try {\n\t\tconst fn = compileComputeSource(computeSource);\n\t\treturn Promise.resolve(fn(bars, params));\n\t} catch (error) {\n\t\treturn Promise.reject(error);\n\t}\n\treturn new Promise((resolve, reject) => {\n\t\tconst blob = new Blob([WORKER_TRIAL_SCRIPT], { type: \"text/javascript\" });\n\t\tconst url = URL.createObjectURL(blob);\n\t\tconst worker = new Worker(url);\n\t\tlet settled = false;\n\t\tconst finish = (action) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tclearTimeout(timer);\n\t\t\tworker.terminate();\n\t\t\tURL.revokeObjectURL(url);\n\t\t\taction();\n\t\t};\n\t\tconst timer = setTimeout(() => {\n\t\t\tfinish(() => reject(/* @__PURE__ */ new Error(`compute 执行超时(超过 ${timeoutMs}ms),可能存在死循环(如 while/for 未退出)`)));\n\t\t}, timeoutMs);\n\t\tworker.onmessage = (event) => {\n\t\t\tconst data = event.data;\n\t\t\tfinish(() => {\n\t\t\t\tif (data.ok) resolve(data.result);\n\t\t\t\telse reject(new Error(data.message ?? \"compute 执行失败\"));\n\t\t\t});\n\t\t};\n\t\tworker.onerror = (event) => {\n\t\t\tfinish(() => reject(new Error(String(event.message ?? \"worker 执行失败\"))));\n\t\t};\n\t\tworker.postMessage({\n\t\t\tsource: computeSource,\n\t\t\tbars: [...bars],\n\t\t\tparams: { ...params }\n\t\t});\n\t});\n}\n/**\n* 结构与语法校验(检查 1-6,无试算)——sync / async(Worker 熔断)校验器共用。\n*/\nfunction checkCustomIndicatorStructure(raw) {\n\tif (typeof raw !== \"object\" || raw === null) return {\n\t\tok: false,\n\t\treason: \"指标配置必须是一个非空对象\"\n\t};\n\tconst input = raw;\n\tconst id = typeof input.id === \"string\" ? input.id.trim().toLowerCase() : \"\";\n\tif (!id) return {\n\t\tok: false,\n\t\treason: \"缺少指标 id\"\n\t};\n\tif (!ID_PATTERN.test(id)) return {\n\t\tok: false,\n\t\treason: `指标 id \"${id}\" 不合法:必须由 2-32 位小写字母、数字或下划线组成`\n\t};\n\tif (RESERVED_IDS.has(id)) return {\n\t\tok: false,\n\t\treason: `指标 id \"${id}\" 是系统预置保留名称,请使用其他名称(如 custom_${id})`\n\t};\n\tconst title = typeof input.title === \"string\" ? input.title.trim() : \"\";\n\tif (!title || title.length > 32) return {\n\t\tok: false,\n\t\treason: \"指标 title 必须是 1-32 字符的非空字符串\"\n\t};\n\tconst pane = input.pane;\n\tif (pane !== \"main\" && pane !== \"sub\") return {\n\t\tok: false,\n\t\treason: `指标 pane 必须是 \"main\"(主图叠加)或 \"sub\"(副图),收到: ${JSON.stringify(input.pane)}`\n\t};\n\tconst params = [];\n\tif (input.params !== void 0) {\n\t\tif (!Array.isArray(input.params)) return {\n\t\t\tok: false,\n\t\t\treason: \"指标 params 必须是数组\"\n\t\t};\n\t\tif (input.params.length > MAX_PARAMS_COUNT) return {\n\t\t\tok: false,\n\t\t\treason: `指标 params 数量超出上限(至多 ${MAX_PARAMS_COUNT} 个参数)`\n\t\t};\n\t\tfor (let index = 0; index < input.params.length; index++) {\n\t\t\tconst p = input.params[index];\n\t\t\tif (typeof p !== \"object\" || p === null) return {\n\t\t\t\tok: false,\n\t\t\t\treason: `params[${index}] 必须是一个对象`\n\t\t\t};\n\t\t\tconst key = typeof p.key === \"string\" ? p.key.trim() : \"\";\n\t\t\tif (!PARAM_KEY_PATTERN.test(key)) return {\n\t\t\t\tok: false,\n\t\t\t\treason: `params[${index}].key \"${key}\" 不合法:必须是 1-16 位字母数字或下划线`\n\t\t\t};\n\t\t\tconst label = typeof p.label === \"string\" ? p.label.trim() : key;\n\t\t\tconst defVal = Number(p.default);\n\t\t\tconst minVal = Number(p.min);\n\t\t\tconst maxVal = Number(p.max);\n\t\t\tif (!Number.isFinite(defVal) || !Number.isFinite(minVal) || !Number.isFinite(maxVal)) return {\n\t\t\t\tok: false,\n\t\t\t\treason: `params[${index}] (${key}) 的 default、min、max 必须是有限数字`\n\t\t\t};\n\t\t\tif (minVal >= maxVal) return {\n\t\t\t\tok: false,\n\t\t\t\treason: `params[${index}] (${key}) 的 min (${minVal}) 必须严格小于 max (${maxVal})`\n\t\t\t};\n\t\t\tif (defVal < minVal || defVal > maxVal) return {\n\t\t\t\tok: false,\n\t\t\t\treason: `params[${index}] (${key}) 的 default (${defVal}) 必须在 [min, max] (${minVal}..${maxVal}) 范围内`\n\t\t\t};\n\t\t\tparams.push({\n\t\t\t\tkey,\n\t\t\t\tlabel,\n\t\t\t\tdefault: defVal,\n\t\t\t\tmin: minVal,\n\t\t\t\tmax: maxVal\n\t\t\t});\n\t\t}\n\t}\n\tconst computeSource = typeof input.computeSource === \"string\" ? input.computeSource.trim() : \"\";\n\tif (!computeSource) return {\n\t\tok: false,\n\t\treason: \"缺少 computeSource 源码\"\n\t};\n\tif (computeSource.length > MAX_SOURCE_LENGTH) return {\n\t\tok: false,\n\t\treason: `computeSource 源码长度 (${computeSource.length} B) 超出限制 (${MAX_SOURCE_LENGTH} B / 16KB)`\n\t};\n\ttry {\n\t\tcompileComputeSource(computeSource);\n\t} catch (error) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: `源码语法错误或无法编译: ${String(error?.message ?? error)}`\n\t\t};\n\t}\n\tconst defaultParamsMap = {};\n\tfor (const p of params) defaultParamsMap[p.key] = p.default;\n\treturn {\n\t\tok: true,\n\t\tid,\n\t\ttitle,\n\t\tpane,\n\t\tparams,\n\t\tcomputeSource,\n\t\tdefaultParamsMap,\n\t\tinput\n\t};\n}\n/** 试算输出的形状与逐点校验(sync/async 共用);返回 undefined = 通过。 */\nfunction checkIndicatorTrialOutputs(outputs, barsLength) {\n\tif (!Array.isArray(outputs)) return `compute 返回值必须是 IndicatorOutput[] 数组,实际返回类型为: ${typeof outputs}`;\n\tif (outputs.length === 0) return \"compute 返回的 IndicatorOutput[] 数组不能为空(至少需要一个输出系列)\";\n\tif (outputs.length > 8) return `compute 返回的输出系列过多 (${outputs.length} > 8)`;\n\tfor (let outIdx = 0; outIdx < outputs.length; outIdx++) {\n\t\tconst output = outputs[outIdx];\n\t\tif (typeof output !== \"object\" || output === null) return `outputs[${outIdx}] 必须是非空对象`;\n\t\tif (typeof output.key !== \"string\" || !output.key.trim()) return `outputs[${outIdx}].key 必须是非空字符串`;\n\t\tif (output.kind !== \"line\" && output.kind !== \"histogram\" && output.kind !== \"area\") return `outputs[${outIdx}].kind 必须是 \"line\"、\"histogram\" 或 \"area\"`;\n\t\tif (typeof output.color !== \"string\" || !output.color.trim()) return `outputs[${outIdx}].color 必须是非空颜色字符串`;\n\t\tif (!Array.isArray(output.values)) return `outputs[${outIdx}].values 必须是数组`;\n\t\tif (output.values.length !== barsLength) return `outputs[${outIdx}] (${output.key}) 的 values 长度 (${output.values.length}) 与输入的 bars 长度 (${barsLength}) 不一致(必须逐条对齐)`;\n\t\tfor (let valIdx = 0; valIdx < output.values.length; valIdx++) {\n\t\t\tconst v = output.values[valIdx];\n\t\t\tif (v === void 0) continue;\n\t\t\tif (typeof v !== \"number\" || !Number.isFinite(v)) return `outputs[${outIdx}] (${output.key}) 在下标 ${valIdx} 处包含非法数值: ${String(v)}(只允许有限数字或 undefined 作为 warm-up)`;\n\t\t}\n\t}\n}\nfunction validateCustomIndicator(raw, options) {\n\tconst checked = checkCustomIndicatorStructure(raw);\n\tif (!checked.ok) return checked;\n\tconst { id, title, pane, params, computeSource, defaultParamsMap, input } = checked;\n\tconst sampleScenarios = createSampleBars();\n\tconst scenarioNames = [\n\t\t\"uptrend\",\n\t\t\"downtrend\",\n\t\t\"flat\",\n\t\t\"gap\",\n\t\t\"short\"\n\t];\n\tconst runner = options?.runner ?? defaultJsRunner;\n\tfor (const scenario of scenarioNames) {\n\t\tconst bars = sampleScenarios[scenario];\n\t\tlet outputs;\n\t\ttry {\n\t\t\toutputs = runner(computeSource, bars, defaultParamsMap, DEFAULT_TIMEOUT_MS);\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `在 ${scenario} 样例数据上试算执行报错: ${String(error?.message ?? error)}`\n\t\t\t};\n\t\t}\n\t\tconst outputReason = checkIndicatorTrialOutputs(outputs, bars.length);\n\t\tif (outputReason !== void 0) return {\n\t\t\tok: false,\n\t\t\treason: outputReason\n\t\t};\n\t}\n\treturn {\n\t\tok: true,\n\t\tdefinition: {\n\t\t\tid,\n\t\t\ttitle,\n\t\t\tpane,\n\t\t\tparams,\n\t\t\tcompute: compileComputeSource(computeSource)\n\t\t},\n\t\trecord: {\n\t\t\tid,\n\t\t\ttitle,\n\t\t\tpane,\n\t\t\tparams,\n\t\t\tcomputeSource,\n\t\t\tcreatedAt: typeof input.createdAt === \"number\" ? input.createdAt : Date.now(),\n\t\t\tdescription: typeof input.description === \"string\" ? input.description.trim() : void 0\n\t\t}\n\t};\n}\n/**\n* 异步版校验器(issue #31):结构与语法校验与同步版同源(checkCustomIndicatorStructure),\n* 试算走可等待 runner——默认 Worker 超时熔断(workerComputeRunner),补浏览器端\n* new Function 裸执行「死循环卡死主线程」的既知缺口。Node 宿主侧继续用\n* validateCustomIndicatorNode(vm 熔断,同步语义)。\n*/\nasync function validateCustomIndicatorAsync(raw, options) {\n\tconst checked = checkCustomIndicatorStructure(raw);\n\tif (!checked.ok) return checked;\n\tconst { id, title, pane, params, computeSource, defaultParamsMap, input } = checked;\n\tconst sampleScenarios = createSampleBars();\n\tconst scenarioNames = [\n\t\t\"uptrend\",\n\t\t\"downtrend\",\n\t\t\"flat\",\n\t\t\"gap\",\n\t\t\"short\"\n\t];\n\tconst runner = options?.runner ?? workerComputeRunner;\n\tfor (const scenario of scenarioNames) {\n\t\tconst bars = sampleScenarios[scenario];\n\t\tlet outputs;\n\t\ttry {\n\t\t\toutputs = await runner(computeSource, bars, { ...defaultParamsMap }, DEFAULT_TIMEOUT_MS);\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `在 ${scenario} 样例数据上试算执行报错: ${String(error?.message ?? error)}`\n\t\t\t};\n\t\t}\n\t\tconst outputReason = checkIndicatorTrialOutputs(outputs, bars.length);\n\t\tif (outputReason !== void 0) return {\n\t\t\tok: false,\n\t\t\treason: outputReason\n\t\t};\n\t}\n\treturn {\n\t\tok: true,\n\t\tdefinition: {\n\t\t\tid,\n\t\t\ttitle,\n\t\t\tpane,\n\t\t\tparams,\n\t\t\tcompute: compileComputeSource(computeSource)\n\t\t},\n\t\trecord: {\n\t\t\tid,\n\t\t\ttitle,\n\t\t\tpane,\n\t\t\tparams,\n\t\t\tcomputeSource,\n\t\t\tcreatedAt: typeof input.createdAt === \"number\" ? input.createdAt : Date.now(),\n\t\t\tdescription: typeof input.description === \"string\" ? input.description.trim() : void 0\n\t\t}\n\t};\n}\n//#endregion\nexport { compileComputeSource, createSampleBars, validateCustomIndicator, validateCustomIndicatorAsync, workerComputeRunner };\n","//#region src/seeds.ts\n/** 各市场种子行(connector-validated symbol formats)。 */\nconst WATCHLIST_SEEDS = {\n\tcrypto: [\n\t\t{\n\t\t\tmarket: \"crypto\",\n\t\t\tsymbol: \"BTCUSDT\",\n\t\t\tname: \"Bitcoin\"\n\t\t},\n\t\t{\n\t\t\tmarket: \"crypto\",\n\t\t\tsymbol: \"ETHUSDT\",\n\t\t\tname: \"Ethereum\"\n\t\t},\n\t\t{\n\t\t\tmarket: \"crypto\",\n\t\t\tsymbol: \"SOLUSDT\",\n\t\t\tname: \"Solana\"\n\t\t},\n\t\t{\n\t\t\tmarket: \"crypto\",\n\t\t\tsymbol: \"BNBUSDT\",\n\t\t\tname: \"BNB\"\n\t\t}\n\t],\n\tus: [\n\t\t{\n\t\t\tmarket: \"us\",\n\t\t\tsymbol: \"AAPL\",\n\t\t\tname: \"苹果\"\n\t\t},\n\t\t{\n\t\t\tmarket: \"us\",\n\t\t\tsymbol: \"MSFT\",\n\t\t\tname: \"微软\"\n\t\t},\n\t\t{\n\t\t\tmarket: \"us\",\n\t\t\tsymbol: \"NVDA\",\n\t\t\tname: \"英伟达\"\n\t\t},\n\t\t{\n\t\t\tmarket: \"us\",\n\t\t\tsymbol: \"GOOGL\",\n\t\t\tname: \"谷歌\"\n\t\t}\n\t],\n\tcn: [\n\t\t{\n\t\t\tmarket: \"cn\",\n\t\t\tsymbol: \"600519\",\n\t\t\tname: \"贵州茅台\"\n\t\t},\n\t\t{\n\t\t\tmarket: \"cn\",\n\t\t\tsymbol: \"000001\",\n\t\t\tname: \"平安银行\"\n\t\t},\n\t\t{\n\t\t\tmarket: \"cn\",\n\t\t\tsymbol: \"601318\",\n\t\t\tname: \"中国平安\"\n\t\t}\n\t],\n\thk: [\n\t\t{\n\t\t\tmarket: \"hk\",\n\t\t\tsymbol: \"00700\",\n\t\t\tname: \"腾讯控股\"\n\t\t},\n\t\t{\n\t\t\tmarket: \"hk\",\n\t\t\tsymbol: \"09988\",\n\t\t\tname: \"阿里巴巴-W\"\n\t\t},\n\t\t{\n\t\t\tmarket: \"hk\",\n\t\t\tsymbol: \"03690\",\n\t\t\tname: \"美团-W\"\n\t\t}\n\t]\n};\n/** 单市场展示行:用户定制行优先;未定制(缺键/空数组)回落该市场种子。 */\nfunction effectiveWatchlistRows(map, market) {\n\tconst rows = map[market];\n\tif (rows !== void 0 && rows.length > 0) return rows;\n\treturn WATCHLIST_SEEDS[market] ?? [];\n}\n/** 单市场行来源:'custom' = 用户定制行;'seed' = 种子展示行(未定制)。 */\nfunction watchlistRowSource(map, market) {\n\tconst rows = map[market];\n\treturn rows !== void 0 && rows.length > 0 ? \"custom\" : \"seed\";\n}\n//#endregion\nexport { WATCHLIST_SEEDS, effectiveWatchlistRows, watchlistRowSource };\n","/**\n * Client stores: a minimal observable engine (snapshot + subscribe, the\n * HostObservable face the slot renderer synthesizes use* hooks from) plus the\n * two trading-shell stores — instrument selection and per-market watchlists.\n *\n * Deliberately framework-free and dependency-free of SDK runtime code (no\n * @deepseek-ai/dsh-client-store import): these modules are unit-tested under\n * vitest, where seed-module resolution is unavailable. The only workspace\n * import is the watchlist seed table (@dshtrading/watchlist, pure data) —\n * bundled inline by the client build; Agent 工具同源(见 seeds.ts)。Both stores\n * persist to localStorage (durable across reloads; single-user local app — no\n * server sync by design).\n */\nimport type { Instrument, MarketId } from './types.ts'\nimport { WATCHLIST_SEEDS } from '@dshtrading/watchlist'\n\n/** Minimal observable face — matches the slot kit's HostObservable contract. */\nexport interface Observable<T> {\n getSnapshot(): T\n subscribe(listener: () => void): () => void\n}\n\nexport interface WritableObservable<T> extends Observable<T> {\n set(next: T): void\n update(mutator: (current: T) => T): void\n}\n\nexport function createObservable<T>(initial: T): WritableObservable<T> {\n let snapshot = initial\n const listeners = new Set<() => void>()\n return {\n getSnapshot: () => snapshot,\n subscribe(listener) {\n listeners.add(listener)\n return () => { listeners.delete(listener) }\n },\n set(next) {\n snapshot = next\n for (const listener of [...listeners]) listener()\n },\n update(mutator) {\n this.set(mutator(snapshot))\n },\n }\n}\n\n/** localStorage read that survives unavailable storage (privacy mode) and corrupt JSON. */\nexport function readJson<T>(key: string, fallback: T): T {\n try {\n const raw = localStorage.getItem(key)\n if (raw === null) return fallback\n return JSON.parse(raw) as T\n } catch {\n return fallback\n }\n}\n\n/** localStorage write that survives unavailable storage. */\nexport function writeJson(key: string, value: unknown): void {\n try {\n localStorage.setItem(key, JSON.stringify(value))\n } catch {\n /* storage unavailable — session-only degradation */\n }\n}\n\n// ---------------------------------------------------------------------------\n// Instrument selection (shared by MarketSidebar → QuoteStage)\n// ---------------------------------------------------------------------------\n\nconst SELECTION_KEY = 'dshtrading.selection.v1'\n\nexport interface SelectionState {\n instrument: Instrument | null\n}\n\nexport type SelectionStore = WritableObservable<SelectionState> & {\n select(instrument: Instrument): void\n}\n\nexport function inferMarket(symbol?: string): MarketId {\n if (!symbol) return 'crypto'\n const sym = symbol.toUpperCase()\n if (sym.endsWith('.SH') || sym.endsWith('.SZ') || /^\\d{6}$/.test(sym)) return 'cn'\n if (sym.endsWith('.HK') || /^\\d{5}$/.test(sym)) return 'hk'\n if (sym.includes('USDT') || sym.includes('BTC') || sym.includes('ETH')) return 'crypto'\n return 'us'\n}\n\nexport function createSelectionStore(): SelectionStore {\n const raw = readJson<Instrument | null>(SELECTION_KEY, null)\n const initialInstrument: Instrument | null = raw && typeof raw.symbol === 'string' && raw.symbol\n ? {\n market: raw.market && ['crypto', 'us', 'cn', 'hk'].includes(raw.market) ? (raw.market as MarketId) : inferMarket(raw.symbol),\n symbol: raw.symbol,\n ...(raw.name ? { name: raw.name } : {}),\n }\n : null\n const store = createObservable<SelectionState>({\n instrument: initialInstrument,\n })\n return {\n ...store,\n select(instrument) {\n const sanitized: Instrument = {\n market: instrument.market && ['crypto', 'us', 'cn', 'hk'].includes(instrument.market) ? instrument.market : inferMarket(instrument.symbol),\n symbol: instrument.symbol,\n ...(instrument.name ? { name: instrument.name } : {}),\n }\n store.set({ instrument: sanitized })\n writeJson(SELECTION_KEY, sanitized)\n },\n }\n}\n\n// ---------------------------------------------------------------------------\n// Per-market watchlists (the \"自选\" concept; seeded with defaults when empty)\n// ---------------------------------------------------------------------------\n\nconst WATCHLIST_KEY = 'dshtrading.watchlist.v1'\n\nexport type Watchlists = Partial<Record<MarketId, Instrument[]>>\n\nexport interface WatchlistStore extends WritableObservable<Watchlists> {\n /** List for one market: the user's rows, or the market's seed list when untouched. */\n listFor(market: MarketId): Instrument[]\n /** Whether the user has customized this market's list (else seeds show). */\n isCustomized(market: MarketId): boolean\n add(market: MarketId, instrument: Instrument): void\n remove(market: MarketId, symbol: string): void\n}\n\nexport function sameInstrument(a: Instrument, b: Instrument): boolean {\n return a.market === b.market && a.symbol === b.symbol\n}\n\nfunction sanitizeWatchlists(raw: Watchlists): Watchlists {\n const clean: Watchlists = {}\n for (const [key, rows] of Object.entries(raw)) {\n if (!['crypto', 'us', 'cn', 'hk'].includes(key) || !Array.isArray(rows)) continue\n const market = key as MarketId\n clean[market] = rows\n .filter((row): row is Instrument => Boolean(row && typeof row.symbol === 'string' && row.symbol))\n .map(row => ({\n market: row.market && ['crypto', 'us', 'cn', 'hk'].includes(row.market) ? row.market : market,\n symbol: row.symbol,\n ...(row.name ? { name: row.name } : {}),\n }))\n }\n return clean\n}\n\nexport function createWatchlistStore(): WatchlistStore {\n const store = createObservable<Watchlists>(sanitizeWatchlists(readJson<Watchlists>(WATCHLIST_KEY, {})))\n const persist = (): void => { writeJson(WATCHLIST_KEY, store.getSnapshot()) }\n return {\n ...store,\n listFor(market) {\n const rows = store.getSnapshot()[market]\n if (rows !== undefined && rows.length > 0) return rows\n return DEFAULT_WATCHLISTS[market] ?? []\n },\n isCustomized(market) {\n const rows = store.getSnapshot()[market]\n return rows !== undefined && rows.length > 0\n },\n add(market, instrument) {\n const targetMarket = ['crypto', 'us', 'cn', 'hk'].includes(market) ? market : inferMarket(instrument.symbol)\n const sanitized: Instrument = {\n market: targetMarket,\n symbol: instrument.symbol,\n ...(instrument.name ? { name: instrument.name } : {}),\n }\n store.update((current) => {\n const rows = current[targetMarket] ?? []\n if (rows.some(row => row.symbol === sanitized.symbol)) return current\n return { ...current, [targetMarket]: [...rows, sanitized] }\n })\n persist()\n },\n remove(market, symbol) {\n const targetMarket = ['crypto', 'us', 'cn', 'hk'].includes(market) ? market : inferMarket(symbol)\n store.update((current) => {\n const rows = current[targetMarket] ?? []\n return { ...current, [targetMarket]: rows.filter(row => row.symbol !== symbol) }\n })\n persist()\n },\n }\n}\n\n/** Seed rows per market(SSOT 在 @dshtrading/watchlist:agent 的 watchlist_list\n * 合并视图与 GUI 左栏展示同源,2026-09-02 agent 可见性修复)。 */\nexport const DEFAULT_WATCHLISTS = WATCHLIST_SEEDS as unknown as Record<MarketId, Instrument[]>\n\n/** 一个市场的展示行:用户列表,未定制时回落种子列表。 */\nexport function rowsFor(watchlists: Watchlists, market: MarketId): Instrument[] {\n const rows = watchlists[market]\n if (rows !== undefined && rows.length > 0) return rows\n return DEFAULT_WATCHLISTS[market] ?? []\n}\n\n/** Chart intervals offered per market (connector-supported subsets only). */\nexport const MARKET_INTERVALS: Record<MarketId, string[]> = {\n crypto: ['5m', '15m', '30m', '1h', '4h', '1d', '1w'],\n us: ['5m', '15m', '30m', '1h', '1d', '1w', '1M'],\n cn: ['5m', '30m', '1d', '1w', '1M'],\n hk: ['5m', '15m', '30m', '1h', '1d', '1w', '1M'],\n}\n","/**\n * 图表状态 store:当前激活的指标实例列表(每 preset id 至多一个实例)。\n * 仿 selection/watchlist store 模式:无依赖可观测 + localStorage 持久化。\n *\n * 3.2 插件化后注册表异步就位(指标插件经 ctx.inject 桥接),创建时对\n * 「还空的注册表」sanitize 会把持久化激活态清掉——因此创建只读原始实例\n * 列表不清洗:未知 id 实例对 UI 天然不可见(选择器按 definition 名册渲染、\n * 指标调度按 indicators.get 跳过),插件就位后自动生效。default/clamp\n * 收敛在 toggle/setParams 写入边界(定义未知时原样落盘:桥接前选择器没有\n * 该 id 的可点行,此分支 UI 不可达,防御手改 localStorage)。\n */\nimport type { IndicatorInstance, IndicatorRegistry } from '@dshtrading/indicators'\nimport { createObservable, readJson, writeJson } from './store.ts'\nimport type { WritableObservable } from './store.ts'\n\nconst CHART_KEY = 'dshtrading.chart.v1'\n\nexport interface ChartState {\n instances: IndicatorInstance[]\n}\n\nexport interface ChartStateStore extends WritableObservable<ChartState> {\n /** 切换某 preset:无实例 → 加默认实例;有 → 全部移除。 */\n togglePreset(id: string): void\n /** 更新(或补建)某 preset 的唯一实例参数。 */\n setParams(id: string, params: Record<string, number>): void\n /** 移除某 preset 的激活实例(自定义指标删除用;无实例时静默)。 */\n removeInstance(id: string): void\n instanceFor(id: string): IndicatorInstance | undefined\n isActive(id: string): boolean\n}\n\n/** 默认激活:MA(5/10/20/30/60/120),与富途 6 均线既视感一致。注册表未就位时\n 留作未知实例(UI 不可见),插件桥接后自动点亮。 */\nfunction initialState(): ChartState {\n return { instances: [{ id: 'ma', params: { n1: 5, n2: 10, n3: 20, n4: 30, n5: 60, n6: 120 } }] }\n}\n\nexport function createChartStateStore(registry: IndicatorRegistry): ChartStateStore {\n const store = createObservable<ChartState>({\n instances: readJson<IndicatorInstance[]>(CHART_KEY, initialState().instances),\n })\n\n const persist = (): void => { writeJson(CHART_KEY, store.getSnapshot().instances) }\n\n return {\n ...store,\n togglePreset(id) {\n const definition = registry.get(id)\n store.update((current) => {\n const rest = current.instances.filter(instance => instance.id !== id)\n if (rest.length !== current.instances.length) return { instances: rest }\n return { instances: [...current.instances, { id, params: definition !== undefined ? registry.defaultParams(definition) : {} }] }\n })\n persist()\n },\n setParams(id, params) {\n const definition = registry.get(id)\n const clamped = definition !== undefined ? registry.clampParams(definition, params) : params\n store.update((current) => {\n const exists = current.instances.some(instance => instance.id === id)\n return { instances: exists\n ? current.instances.map(instance => instance.id === id ? { id, params: clamped } : instance)\n : [...current.instances, { id, params: clamped }] }\n })\n persist()\n },\n removeInstance(id) {\n store.update((current) => ({ instances: current.instances.filter(instance => instance.id !== id) }))\n persist()\n },\n instanceFor(id) {\n return store.getSnapshot().instances.find(instance => instance.id === id)\n },\n isActive(id) {\n return store.getSnapshot().instances.some(instance => instance.id === id)\n },\n }\n}\n","/**\n * 行情视图的本地指标注册表(模块单例,页面生命周期)。指标 definition\n * 的来源有两个:指标插件(client-ui-indicators 经 tradingIndicators 服务\n * 提供,index.ts 桥接合并)与未来的用户自定义加载;插件未安装时注册表\n * 为空,行情视图零指标正常工作(sanitizer 对未知 id 天然免疫)。\n */\nimport { createIndicatorRegistry } from '@dshtrading/indicators'\n\nexport const indicators = createIndicatorRegistry()\n\n/**\n * 自定义指标 id 跟踪(issue #30 删除入口):从桥加载时登记、删除成功时移除;\n * 指标选择器 UI 据此只给自定义行渲染删除按钮(预置/插件指标不可删)。\n */\nconst customIds = new Set<string>()\n\nexport function markCustomIndicator(id: string): void {\n customIds.add(id)\n}\n\nexport function unmarkCustomIndicator(id: string): void {\n customIds.delete(id)\n}\n\nexport function isCustomIndicator(id: string): boolean {\n return customIds.has(id)\n}\n","/**\n * 中栏视图注册表(issue #34 / P5):MIDDLE_VIEWS 常量升格为开放注册面。\n *\n * 形态 = cordis client 服务(provide 'tradingStageViews',仿 client-ui-indicators\n * 的 tradingIndicators)。注册表本身框架无关、零依赖;client-ui-trading 的\n * client apply 里 provide —— 插件 fiber 持有,插件卸载时服务随之注销。\n *\n * 第三方视图包的接入方式(与 tradingIndicators 完全同款):\n * ctx.inject(['tradingStageViews'] as never, scope => {\n * scope.tradingStageViews.register({ id: 'myview', titleKey: 'myview.title', render: ... })\n * })\n *\n * 跨 bundle 不能用模块级单例:ESM 各 bundle 独立打包,模块单例会双 Map 静默\n * 分裂(indicators/registry.ts 同款教训),共享只能经 cordis 服务单例。同\n * bundle 内的 MiddleStage 直接 import 本模块拿同一实例。\n */\nimport type { ComponentType } from 'react'\nimport type { MarketLocaleKey } from './contract.ts'\n\n/** 视图组件收到的运行时面:t 为 dshtrading.market 词典的翻译函数。 */\nexport interface StageViewProps {\n t: (key: MarketLocaleKey, params?: Record<string, unknown>) => string\n /** 中栏当前视图 id(useSyncExternalStore 驱动的响应式值)。 */\n view: string\n}\n\n/**\n * 一个中栏 tab 的注册 definition:id 全仓唯一('quote' 保留给 shell 行情视图,\n * 第三方不得仿冒——与闸门正则同款词汇纪律)。\n */\nexport interface StageViewDefinition {\n /** 稳定 id:localStorage 持久化值 + tab 排序基准。 */\n id: string\n /** tab 文案(dshtrading.market 词典 key)。 */\n titleKey: MarketLocaleKey\n /** 排序权重:quote 固定 0,插件视图从 10 起步(插入顺序为次级排序)。 */\n order?: number\n /** 视图组件(互斥挂载:切走即卸载,图表态由视图自己持久化承接)。 */\n render: ComponentType<StageViewProps>\n}\n\nexport interface StageViewRegistry {\n /** 注册视图;同 id 覆盖(重载友好),并通知订阅者。未知/保留 id 拒绝。 */\n register(definition: StageViewDefinition): void\n /** 注销视图;未知 id 静默跳过。 */\n unregister(id: string): void\n /** 全部已注册视图(order 升序,次级按注册序)。 */\n list(): StageViewDefinition[]\n get(id: string): StageViewDefinition | undefined\n /** 订阅名册变化;返回退订函数。 */\n subscribe(listener: () => void): () => void\n /** 名册修订号(单调递增),配合 subscribe 供 useSyncExternalStore。 */\n getVersion(): number\n}\n\n/** shell 保留 id:行情视图是 registry 的内建种子条目,第三方不得占用。 */\nexport const RESERVED_STAGE_VIEW_ID = 'quote'\n\nexport function createStageViewRegistry(): StageViewRegistry {\n /** 注册序号 = 次级排序键(order 相同时先到先得)。 */\n const entries = new Map<string, { definition: StageViewDefinition; seq: number }>()\n const listeners = new Set<() => void>()\n let version = 0\n let seq = 0\n\n // 内建种子:quote 视图(tab 条从名册统一渲染;render 不会被调用——\n // MiddleStage 对 quote 走 QuoteStage 直引面)。种子在工厂内写入,\n // 绕过公开 register 的保留 id 检查。\n entries.set(RESERVED_STAGE_VIEW_ID, {\n definition: {\n id: RESERVED_STAGE_VIEW_ID,\n titleKey: 'stage.quote',\n order: 0,\n render: () => { throw new Error('quote view is built into the shell (MiddleStage direct mount)') },\n },\n seq: seq++,\n })\n\n return {\n register(definition) {\n if (definition.id === RESERVED_STAGE_VIEW_ID) {\n throw new Error(`stage view id \"${RESERVED_STAGE_VIEW_ID}\" is reserved for the shell quote view`)\n }\n entries.set(definition.id, { definition, seq: seq++ })\n version += 1\n for (const listener of listeners) listener()\n },\n unregister(id) {\n if (!entries.delete(id)) return\n version += 1\n for (const listener of listeners) listener()\n },\n list() {\n return [...entries.values()]\n .sort((a, b) => (a.definition.order ?? 10) - (b.definition.order ?? 10) || a.seq - b.seq)\n .map(entry => entry.definition)\n },\n get: id => entries.get(id)?.definition,\n subscribe(listener) {\n listeners.add(listener)\n return () => { listeners.delete(listener) }\n },\n getVersion: () => version,\n }\n}\n\n/** client-ui-trading 的单例注册表(apply 时 provide 为 tradingStageViews 服务)。 */\nexport const stageViews = createStageViewRegistry()","/**\n * Bridge client: same-origin fetch wrappers over /dshtrading/api (the node\n * half registers the route behind the browser-auth fence; same-origin fetch\n * carries the auth cookie by default).\n */\nimport type { AccountBalance, DerivativesData, DerivativesHistory, Kline, MarketId, MarketInfo, Order, Orderbook, Position, TickerOutcome, TradeFill, TradeTick } from './types.ts'\nimport type { FundamentalsPackage } from '@dshtrading/api'\nimport type { CustomIndicatorRecord } from '@dshtrading/indicators'\nimport type { KnowledgeCard } from '@dshtrading/knowledge'\nimport type { CustomStrategyRecord } from '@dshtrading/strategies'\n\nexport class BridgeError extends Error {\n constructor(readonly status: number, message: string) {\n super(message)\n }\n}\n\nasync function getJson<T>(path: string): Promise<T> {\n const response = await fetch(path, { headers: { accept: 'application/json' } })\n if (response.status === 401) throw new BridgeError(401, 'unauthorized')\n if (response.status === 403) throw new BridgeError(403, 'forbidden')\n if (!response.ok) throw new BridgeError(response.status, `bridge ${path} failed: ${response.status}`)\n const wire = await response.json() as T\n // 桥的业务错误信封是 HTTP 200 + { ok:false, code, message };必须转成 rejection,\n // 否则调用方拿到 undefined 当成功值(会以 .map-of-undefined 之类的次生错误炸开)。\n if (wire !== null && typeof wire === 'object' && (wire as { ok?: unknown }).ok === false) {\n const business = wire as { code?: string; message?: string }\n throw new BridgeError(200, `${business.code ?? 'TRADING_UNKNOWN'}: ${business.message ?? 'bridge business error'}`)\n }\n return wire\n}\n\n/** Installed markets + active provider slugs (drives the sidebar tab strip). */\nexport async function fetchMarkets(): Promise<MarketInfo[]> {\n const wire = await getJson<{ markets: MarketInfo[] }>('/dshtrading/api/markets')\n return wire.markets ?? []\n}\n\n/** Batched tickers; per-symbol outcomes are independent (bad codes don't sink the batch). */\nexport async function fetchTickers(market: MarketId, symbols: string[]): Promise<Record<string, TickerOutcome>> {\n const query = new URLSearchParams({ market, symbols: symbols.join(',') })\n const wire = await getJson<{ tickers: Record<string, TickerOutcome> }>(`/dshtrading/api/tickers?${query.toString()}`)\n return wire.tickers ?? {}\n}\n\nexport async function fetchKlines(market: MarketId, symbol: string, interval: string, limit: number): Promise<Kline[]> {\n const query = new URLSearchParams({ market, symbol, interval, limit: String(limit) })\n const wire = await getJson<{ klines: Kline[] }>(`/dshtrading/api/klines?${query.toString()}`)\n return Array.isArray(wire.klines) ? wire.klines : []\n}\n\n/**\n * 衍生品指标快照(issue #38,crypto 专属)。连接器未实现 getDerivatives(现货/股票\n * 数据源)或取数失败 → null:面板整体隐藏,不报错横幅。\n */\nexport async function fetchDerivatives(market: MarketId, symbol: string): Promise<DerivativesData | null> {\n try {\n const query = new URLSearchParams({ market, symbol })\n const wire = await getJson<{ ok: boolean; derivatives: DerivativesData }>(`/dshtrading/api/derivatives?${query.toString()}`)\n return wire.derivatives ?? null\n } catch {\n return null\n }\n}\n\n/**\n * 衍生品历史序列(issue #54,「衍生品」页签趋势卡)。连接器未实现\n * getDerivativesHistory 或取数失败 → null:趋势卡隐藏、快照读数保留。\n */\nexport async function fetchDerivativesHistory(market: MarketId, symbol: string): Promise<DerivativesHistory | null> {\n try {\n const query = new URLSearchParams({ market, symbol })\n const wire = await getJson<{ ok: boolean; history: DerivativesHistory }>(`/dshtrading/api/derivatives/history?${query.toString()}`)\n return wire.history ?? null\n } catch {\n return null\n }\n}\n\n/**\n * 盘口快照(issue #39)。连接器未实现 getOrderbook(yahoo/stooq/腾讯 r_hk)或\n * 取数失败 → null:竖栏降级为「未提供盘口」提示,不报错横幅。\n */\nexport async function fetchOrderbook(market: MarketId, symbol: string): Promise<Orderbook | null> {\n try {\n const query = new URLSearchParams({ market, symbol })\n const wire = await getJson<{ ok: boolean; orderbook: Orderbook }>(`/dshtrading/api/orderbook?${query.toString()}`)\n return wire.orderbook ?? null\n } catch {\n return null\n }\n}\n\n/**\n * 最近逐笔成交(issue #39,时间升序)。连接器未实现 getRecentTrades 或失败 → null:\n * 流水段隐藏;成功但空数组 → [](展示空态由调用方判断 length)。\n */\nexport async function fetchRecentTrades(market: MarketId, symbol: string, limit = 50): Promise<TradeTick[] | null> {\n try {\n const query = new URLSearchParams({ market, symbol, limit: String(limit) })\n const wire = await getJson<{ ok: boolean; trades: TradeTick[] }>(`/dshtrading/api/trades?${query.toString()}`)\n return Array.isArray(wire.trades) ? wire.trades : []\n } catch {\n return null\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* 交易台(issue #40):只读查询 + 强制 dry-run 下单 */\n/* ------------------------------------------------------------------ */\n\n/** 持仓快照。交易服务未挂载(桥 400)或失败 → null:交易台整体隐藏。 */\nexport async function fetchTradePositions(market: MarketId): Promise<Position[] | null> {\n try {\n const wire = await getJson<{ ok: boolean; positions: Position[] }>(`/dshtrading/api/trade/positions?market=${market}`)\n return Array.isArray(wire.positions) ? wire.positions : []\n } catch {\n return null\n }\n}\n\n/** 余额快照(可选面)。未实现/失败 → null。 */\nexport async function fetchTradeBalances(market: MarketId): Promise<AccountBalance[] | null> {\n try {\n const wire = await getJson<{ ok: boolean; balances: AccountBalance[] }>(`/dshtrading/api/trade/balances?market=${market}`)\n return Array.isArray(wire.balances) ? wire.balances : []\n } catch {\n return null\n }\n}\n\n/** 当前挂单(可选面)。未实现/失败 → null。 */\nexport async function fetchTradeOpenOrders(market: MarketId): Promise<Order[] | null> {\n try {\n const wire = await getJson<{ ok: boolean; orders: Order[] }>(`/dshtrading/api/trade/orders?market=${market}`)\n return Array.isArray(wire.orders) ? wire.orders : []\n } catch {\n return null\n }\n}\n\n/** 最近成交流水(可选面)。未实现/失败 → null。 */\nexport async function fetchTradeFills(market: MarketId): Promise<TradeFill[] | null> {\n try {\n const wire = await getJson<{ ok: boolean; fills: TradeFill[] }>(`/dshtrading/api/trade/fills?market=${market}`)\n return Array.isArray(wire.fills) ? wire.fills : []\n } catch {\n return null\n }\n}\n\nexport interface GuiOrderInput {\n symbol: string\n side: 'buy' | 'sell'\n type: 'market' | 'limit'\n quantity: number\n price?: number | undefined\n}\n\nexport interface GuiOrderResult {\n order?: Order\n error?: string\n}\n\n/**\n * GUI 实盘下单(只做真交易):直接打到连接器报单。返回订单或失败原因。\n */\nexport async function placeGuiOrder(market: MarketId, input: GuiOrderInput): Promise<GuiOrderResult> {\n try {\n const response = await fetch(`/dshtrading/api/trade/order?market=${market}`, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ ...input, dryRun: false }),\n })\n const wire = await response.json().catch(() => ({})) as { ok?: boolean; order?: Order; code?: string; message?: string }\n if (!response.ok || wire.ok !== true || wire.order === undefined) {\n const msg = wire.message || wire.code || 'Order rejected or service not mounted'\n console.warn('[dsh-trading] gui order rejected:', wire.code, wire.message)\n return { error: msg }\n }\n return { order: wire.order }\n } catch (err) {\n return { error: err instanceof Error ? err.message : 'Network request failed' }\n }\n}\n\n/** 兼容别名 */\nexport async function placeGuiDryRunOrder(market: MarketId, input: GuiOrderInput): Promise<Order | null> {\n const res = await placeGuiOrder(market, input)\n return res.order ?? null\n}\n\n/** GUI 撤单(issue #40):DELETE /trade/order?market&id&symbol */\nexport async function cancelGuiOrder(market: MarketId, orderId: string, symbol?: string): Promise<boolean> {\n try {\n const query = new URLSearchParams({ market, id: orderId, ...(symbol ? { symbol } : {}) })\n const response = await fetch(`/dshtrading/api/trade/order?${query.toString()}`, {\n method: 'DELETE',\n headers: { accept: 'application/json' },\n })\n if (!response.ok) return false\n const wire = await response.json() as { ok?: boolean; canceled?: boolean }\n return wire.ok === true && wire.canceled === true\n } catch {\n return false\n }\n}\n\n/** 动态全集标的名册(Issue #15):可传 q 进行上游在线检索。未支持或失败时回退空数组。 */\nexport async function fetchSymbols(market: MarketId, q?: string): Promise<Array<{ symbol: string; name?: string }>> {\n const query = new URLSearchParams({ market, ...(q ? { query: q } : {}) })\n const wire = await getJson<{ symbols: Array<{ symbol: string; name?: string }> }>(`/dshtrading/api/symbols?${query.toString()}`)\n return Array.isArray(wire.symbols) ? wire.symbols : []\n}\n\n/** 拉取自定义指标列表(Issue #19)。 */\nexport async function fetchCustomIndicators(): Promise<CustomIndicatorRecord[]> {\n try {\n const wire = await getJson<{ ok: boolean; indicators: CustomIndicatorRecord[] }>('/dshtrading/api/indicators/custom')\n return Array.isArray(wire.indicators) ? wire.indicators : []\n } catch {\n return []\n }\n}\n\n/** 删除自定义指标。 */\nexport async function deleteCustomIndicator(id: string): Promise<boolean> {\n try {\n const query = new URLSearchParams({ id })\n const response = await fetch(`/dshtrading/api/indicators/custom?${query.toString()}`, {\n method: 'DELETE',\n headers: { accept: 'application/json' },\n })\n if (!response.ok) return false\n const wire = await response.json() as { ok?: boolean; removed?: boolean }\n return wire.ok === true && wire.removed === true\n } catch {\n return false\n }\n}\n\n/** 拉取知识库卡片全集列表(Issue #24)。 */\nexport async function fetchKnowledgeCards(): Promise<KnowledgeCard[]> {\n try {\n const wire = await getJson<{ ok: boolean; cards: KnowledgeCard[] }>('/dshtrading/api/knowledge/cards')\n return Array.isArray(wire.cards) ? wire.cards : []\n } catch (err) {\n console.warn('[dsh-trading] fetchKnowledgeCards failed, fallback to empty:', err)\n return []\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* 新闻情报流(issue #37) */\n/* ------------------------------------------------------------------ */\n\nexport interface ClientNewsItem {\n source: string\n title: string\n url: string\n publishedAt: string\n}\n\nexport interface ClientNewsResult {\n items: ClientNewsItem[]\n unavailable: string[]\n}\n\n/**\n * 标的新闻(issue #37)。Kit 未注册或会话不活跃 → null:面板显示空态提示。\n * 只返回与标的相关的条目;无相关内容即空列表,无市场要闻兜底。\n */\nexport async function fetchNews(market: MarketId, symbol?: string, limit = 20): Promise<ClientNewsResult | null> {\n try {\n const query = new URLSearchParams({ market, ...(symbol ? { symbol } : {}), limit: String(limit) })\n const wire = await getJson<{ ok: boolean; items: ClientNewsItem[]; unavailable: string[] }>(\n `/dshtrading/api/news?${query.toString()}`,\n )\n return { items: wire.items ?? [], unavailable: wire.unavailable ?? [] }\n } catch {\n return null\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* SSE 失效信号订阅(issue #30 / P1) */\n/* ------------------------------------------------------------------ */\n\n/** 拉取自定义策略名册(issue #31,桥 /strategies/custom;前端校验后并入名册)。 */\nexport async function fetchCustomStrategies(): Promise<CustomStrategyRecord[]> {\n try {\n const wire = await getJson<{ ok: boolean; strategies: CustomStrategyRecord[] }>('/dshtrading/api/strategies/custom')\n return Array.isArray(wire.strategies) ? wire.strategies : []\n } catch (err) {\n console.warn('[dsh-trading] fetchCustomStrategies failed, fallback to empty:', err)\n return []\n }\n}\n\n/** 删除自定义策略(issue #31)。 */\nexport async function deleteCustomStrategy(id: string): Promise<boolean> {\n try {\n const query = new URLSearchParams({ id })\n const response = await fetch(`/dshtrading/api/strategies/custom?${query.toString()}`, {\n method: 'DELETE',\n headers: { accept: 'application/json' },\n })\n if (!response.ok) return false\n const wire = await response.json() as { ok?: boolean; removed?: boolean }\n return wire.ok === true && wire.removed === true\n } catch {\n return false\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* 自选股 + 选中标的(issue #32 / P3):host store 为 SSOT */\n/* ------------------------------------------------------------------ */\n\n/** host 侧自选行(WatchlistsMap:market → 行数组;不含客户端种子回退)。 */\nexport type HostWatchlists = Record<string, Array<{ market: string; symbol: string; name?: string }>>\n\n/** 读取 host 自选全量(启动同步与 SSE 重拉)。 */\nexport async function fetchHostWatchlists(): Promise<HostWatchlists> {\n try {\n const wire = await getJson<{ ok: boolean; watchlists: HostWatchlists }>('/dshtrading/api/watchlists')\n return wire.watchlists ?? {}\n } catch (err) {\n console.warn('[dsh-trading] fetchHostWatchlists failed, fallback to local mirror:', err)\n throw err instanceof BridgeError ? err : new BridgeError(0, 'watchlists unavailable')\n }\n}\n\n/** 追加一行(POST /watchlists)。 */\nexport async function addHostWatchlistRow(instrument: { market: string; symbol: string; name?: string }): Promise<boolean> {\n try {\n const response = await fetch('/dshtrading/api/watchlists', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(instrument),\n })\n if (!response.ok) return false\n const wire = await response.json() as { ok?: boolean }\n return wire.ok === true\n } catch {\n return false\n }\n}\n\n/** 移除一行(DELETE /watchlists?market&symbol)。 */\nexport async function removeHostWatchlistRow(market: string, symbol: string): Promise<boolean> {\n try {\n const query = new URLSearchParams({ market, symbol })\n const response = await fetch(`/dshtrading/api/watchlists?${query.toString()}`, {\n method: 'DELETE',\n headers: { accept: 'application/json' },\n })\n if (!response.ok) return false\n const wire = await response.json() as { ok?: boolean }\n return wire.ok === true\n } catch {\n return false\n }\n}\n\n/** 一次性迁移导入(POST /watchlists/import;host 非空时服务端拒绝,幂等)。 */\nexport async function importHostWatchlists(rows: HostWatchlists): Promise<boolean> {\n try {\n const response = await fetch('/dshtrading/api/watchlists/import', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ watchlists: rows }),\n })\n if (!response.ok) return false\n const wire = await response.json() as { ok?: boolean }\n return wire.ok === true\n } catch {\n return false\n }\n}\n\n/** 读取 host 选中标的(GET /selection)。 */\nexport async function fetchHostSelection(): Promise<{ market: string; symbol: string; name?: string } | null> {\n try {\n const wire = await getJson<{ ok: boolean; instrument: { market: string; symbol: string; name?: string } | null }>('/dshtrading/api/selection')\n return wire.instrument ?? null\n } catch {\n return null\n }\n}\n\n/** 设置 host 选中标的(PUT /selection;watchlist_select 工具与左栏点击同源)。 */\nexport async function putHostSelection(instrument: { market: string; symbol: string; name?: string } | null): Promise<boolean> {\n try {\n const response = await fetch('/dshtrading/api/selection', {\n method: 'PUT',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ instrument }),\n })\n if (!response.ok) return false\n const wire = await response.json() as { ok?: boolean }\n return wire.ok === true\n } catch {\n return false\n }\n}\n\n/**\n * store 词汇(v1):镜像 host 半 @dshtrading/eventbus 的 TradingEventStore.\n * 浏览器半不 import node 包(避免把 cordis 拖进 client bundle)——词汇是封闭\n * 小集合,镜像漂移的代价是 handler 不触发(降级为现状),可接受。\n */\nexport type TradingEventStoreName =\n | 'indicators'\n | 'strategies'\n | 'knowledge'\n | 'watchlists'\n | 'selection'\n | 'routing'\n\ntype TradingEventHandlers = Partial<Record<TradingEventStoreName, () => void>>\n\n/** 模块级单例:多视图共享一条 EventSource 连接(多标签页各自一条,天然隔离)。 */\nlet tradingEventSource: EventSource | null = null\nconst tradingEventListeners = new Set<(store: TradingEventStoreName) => void>()\n\nfunction ensureTradingEventSource(): void {\n if (tradingEventSource !== null) return\n // 无 EventSource(老浏览器/非 web 环境)→ 一次性 fetch 的现状兜底。\n if (typeof window === 'undefined' || typeof EventSource === 'undefined') return\n const source = new EventSource('/dshtrading/api/events')\n source.addEventListener('store.changed', (event) => {\n try {\n const data = JSON.parse((event as MessageEvent).data as string) as { store?: string }\n if (typeof data.store !== 'string') return\n for (const listener of [...tradingEventListeners]) listener(data.store as TradingEventStoreName)\n } catch {\n /* 坏帧忽略(总线只发 JSON 信号,正常不会发生) */\n }\n })\n source.onerror = () => {\n /* EventSource 原生自动重连;桥未挂载(503)时持续失败 = 降级现状,不打扰用户 */\n }\n tradingEventSource = source\n}\n\n/**\n * 订阅失效信号:store 名 → refetch 回调。返回退订函数;最后一个订阅者退订时\n * 关闭连接(视图互斥挂载下 quote/strategy/knowledge 轮流订阅不堆积)。\n */\nexport function subscribeTradingEvents(handlers: TradingEventHandlers): () => void {\n ensureTradingEventSource()\n const listener = (store: TradingEventStoreName): void => { handlers[store]?.() }\n tradingEventListeners.add(listener)\n return () => {\n tradingEventListeners.delete(listener)\n if (tradingEventListeners.size === 0 && tradingEventSource !== null) {\n tradingEventSource.close()\n tradingEventSource = null\n }\n }\n}\n\n/** 拉取标的综合基本面与多期财务矩阵数据(Issue #36,富途牛牛风格工作台数据源)。 */\nexport async function fetchFundamentals(market: MarketId, symbol: string): Promise<FundamentalsPackage | undefined> {\n try {\n const query = new URLSearchParams({ market, symbol })\n const wire = await getJson<{ ok: boolean; fundamentals?: FundamentalsPackage }>(`/dshtrading/api/fundamentals?${query.toString()}`)\n return wire.fundamentals\n } catch (err) {\n console.warn(`[dsh-trading] fetchFundamentals ${market}/${symbol} failed:`, err)\n return undefined\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* tradingBridge client 服务(issue #34 / P5) */\n/* ------------------------------------------------------------------ */\n\n/**\n * 中栏视图包(client-ui-strategies / client-ui-knowledge 及未来的第三方视图)\n * 对桥的唯一依赖面。收口为 cordis client 服务(provide 'tradingBridge'),\n * 原因有二:\n * 1. 插件间协作必须走服务 inject(一切皆插件裁决——client 插件间不得 import\n * 彼此内部模块);\n * 2. SSE 单例与 fetch 封装留在 shell 内(本模块),多视图包共享同一条\n * EventSource 连接——各包自开连接会随拆包数量线性堆积。\n *\n * 视图包不 import 本模块;未安装 shell 时 inject 回调不触发,视图静默不注册\n * (可选依赖语义)。\n */\nexport interface TradingBridgeService {\n fetchKlines: typeof fetchKlines\n fetchCustomStrategies: typeof fetchCustomStrategies\n fetchKnowledgeCards: typeof fetchKnowledgeCards\n fetchFundamentals: typeof fetchFundamentals\n fetchNews: typeof fetchNews\n fetchSymbols: typeof fetchSymbols\n subscribeTradingEvents: typeof subscribeTradingEvents\n}\n\n/** 服务装配(shell apply 时以本模块函数 provide,零转发成本)。 */\nexport function createTradingBridgeService(): TradingBridgeService {\n return {\n fetchKlines,\n fetchCustomStrategies,\n fetchKnowledgeCards,\n fetchFundamentals,\n fetchNews,\n fetchSymbols,\n subscribeTradingEvents,\n }\n}\n","/**\n * 行情 → 会话输入框(「发给 Agent」按钮的落地语义,owner 2026-09-02 裁决:\n * 只填入 composer,**不自动提交**——用户大概率还要补自己的 prompt,发送\n * 由用户自己按)。\n *\n * 通道全部走官方 face,零 DOM hack:\n * - 根服务 `conversation`(ConversationController):`createDraftImages([file])`\n * 把截图注册成 browser-owned 草稿图(id + previewUrl);\n * - per-session `input` facade(SessionInput):`setDraft(text)` 整稿写入\n * (会替换草稿——先读 `state.draft` 非空时以空行拼接追加,不覆盖用户已打\n * 的内容)、`addImages(ids)` 挂图;绝不调 `submit()`。\n *\n * 会话解析:优先 `sessions.list.current`;无当前会话时经 uiWorkspace 的\n * startSession 建/复用会话并短轮询等落地(官方 startSession 是导航动作)。\n * composer 提交中(phase ≠ 'plain')拒绝写入,避免与乐观提交竞态。\n *\n * 纯编排模块(SDK 只 import type):sessions/conversation/startSession 由\n * shell apply 惰性注入,vitest 以 fake 对象直测。\n */\nimport type { ISessions } from '@deepseek-ai/dsh-api-session-controller/client'\nimport type { DraftAttachmentId, SessionInput } from '@deepseek-ai/dsh-client-ui-conversation/client'\n\n/** 随草稿附图的浏览器侧载荷(dataUrl = PNG data URL)。 */\nexport interface SendImageInput {\n dataUrl: string\n name?: string\n width?: number\n height?: number\n}\n\n/** shell 注入的填入入口(QuotePane → MiddleStage → QuoteStage 透传)。 */\nexport type FillComposerFn = (text: string, image?: SendImageInput) => Promise<void>\n\n/** conversation 根服务最小结构面(只用草稿摄取 + input registry 两块)。 */\nexport interface ConversationDraftFace {\n createDraftImages(files: readonly File[]): ReadonlyArray<{ id: DraftAttachmentId }>\n /** 摄取被拒(composer busy)时回收草稿图与 preview URL。 */\n releaseDraftImage?(id: DraftAttachmentId): void\n input: {\n /** 按 session id 直达 facade(官方 service-face 路径,provide 之外也可用)。 */\n shell(id: string): SessionInput\n }\n}\n\nexport interface FillComposerDeps {\n sessions: ISessions\n /** 根服务 `conversation`;缺席(理论上仅 headless)时只能填文本。 */\n conversation?: ConversationDraftFace\n /** 无当前会话时的建会话入口(官方 uiWorkspace.startSession)。 */\n startSession?: () => void\n /** list.current 就绪轮询(默认 100ms × 30 = 3s;单测可缩短)。 */\n pollMs?: number\n pollMax?: number\n}\n\nconst delay = (ms: number): Promise<void> => new Promise(resolve => { setTimeout(resolve, ms) })\n\n/** PNG data URL → 纯 base64(File 构造吃裸字节)。 */\nexport function stripDataUrlPrefix(dataUrl: string): string {\n const marker = 'base64,'\n const index = dataUrl.indexOf(marker)\n return index >= 0 ? dataUrl.slice(index + marker.length) : dataUrl\n}\n\n/** data URL → 浏览器 File(createDraftImages 按 File 摄取)。 */\nexport function dataUrlToFile(dataUrl: string, name: string): File {\n const bytes = Uint8Array.from(atob(stripDataUrlPrefix(dataUrl)), char => char.charCodeAt(0))\n return new File([bytes], name, { type: 'image/png' })\n}\n\nexport async function fillComposerWithQuote(deps: FillComposerDeps, text: string, image?: SendImageInput): Promise<void> {\n const { sessions } = deps\n let current = sessions.list.getSnapshot().current\n if (current === undefined && deps.startSession !== undefined) {\n deps.startSession()\n const pollMs = deps.pollMs ?? 100\n const pollMax = deps.pollMax ?? 30\n for (let round = 0; round < pollMax && current === undefined; round++) {\n await delay(pollMs)\n current = sessions.list.getSnapshot().current\n }\n }\n if (current === undefined) {\n throw new Error('no session available to fill the composer (start a session first)')\n }\n const conversation = deps.conversation\n if (conversation === undefined) throw new Error('conversation service unavailable — cannot fill the composer')\n const facade = conversation.input.shell(current)\n if (facade === undefined) throw new Error('conversation service unavailable — cannot fill the composer')\n\n const { phase, draft } = facade.state.getSnapshot()\n if (phase !== 'plain') {\n throw new Error('composer is busy (submission in flight) — try again in a moment')\n }\n // 截图先落草稿图注册表再挂 id;提交中 addImages 自己也会拒(双保险)。\n if (image !== undefined) {\n const [attachment] = conversation.createDraftImages([dataUrlToFile(image.dataUrl, image.name ?? 'chart.png')])\n if (attachment !== undefined && !facade.addImages([attachment.id])) {\n conversation.releaseDraftImage?.(attachment.id)\n console.warn('[dsh-trading] composer refused image (busy) — filling text only')\n }\n }\n // setDraft 是整稿替换:非空草稿以空行拼接,绝不覆盖用户已打的内容。\n facade.setDraft(draft === '' ? text : `${draft}\\n\\n${text}`)\n}\n","/**\n * shell 半 toolview 卡片的载荷解析(issue #34 / P5)。\n *\n * 输出面:\n * - <market>_place_order → 三态之一(connector-okx buildDryRunReceipt 为范本,\n * 10 个交易 connector 同构):\n * 1. 闸门拒绝:{ status:'rejected', code, message };\n * 2. 模拟回执:{ status:'filled', dryRun:true, note, id, instId/symbol/ticker,\n * side, type, quantity, [price], reference:{price}, timestamp };\n * 3. 实盘回执:各 connector OrderReceipt(symbol/side/type/quantity/id…,\n * 无 dryRun 字段)。\n * - watchlist_add → { ok, added, note };watchlist_select → { ok, selected, note }。\n *\n * 参数面从 argsRaw 取(字段名跨 connector 有别名:instId/symbol/ticker),\n * 全部防御式——失败返回 null 回落通用工具行。\n */\n\nexport interface ParsedOrderCard {\n state: 'filled' | 'rejected'\n dryRun: boolean\n symbol: string\n side: string\n type: string\n quantity: number | string | null\n price: number | null\n referencePrice: number | null\n message: string\n}\n\nfunction asString(value: unknown, fallback = ''): string {\n return typeof value === 'string' ? value : fallback\n}\n\nfunction asNumber(value: unknown): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null\n}\n\nfunction parseArgs(argsRaw: string): Record<string, unknown> {\n try {\n const parsed = JSON.parse(argsRaw) as unknown\n return parsed !== null && typeof parsed === 'object' ? parsed as Record<string, unknown> : {}\n } catch {\n return {}\n }\n}\n\nfunction parseResult(resultText: string): Record<string, unknown> | null {\n try {\n const parsed = JSON.parse(resultText) as unknown\n return parsed !== null && typeof parsed === 'object' ? parsed as Record<string, unknown> : null\n } catch {\n return null\n }\n}\n\nexport function parsePlaceOrderPayload(argsRaw: string, resultText: string): ParsedOrderCard | null {\n const wire = parseResult(resultText)\n if (wire === null) return null\n const args = parseArgs(argsRaw)\n\n if (wire.status === 'rejected') {\n return {\n state: 'rejected',\n dryRun: false,\n symbol: asString(args.instId ?? args.symbol ?? args.ticker, '—'),\n side: asString(args.side, '—'),\n type: asString(args.type ?? args.orderType, '—'),\n quantity: args.quantity ?? null,\n price: asNumber(args.price),\n referencePrice: null,\n message: asString(wire.message),\n }\n }\n\n // 模拟回执 status:'filled' + dryRun:true;实盘回执无 dryRun 字段。\n const dryRun = wire.dryRun === true\n const reference = (wire.reference ?? {}) as { price?: unknown }\n const referencePrice = asNumber(reference.price)\n const symbol = asString(wire.instId ?? wire.symbol ?? wire.ticker ?? args.instId ?? args.symbol ?? args.ticker, '—')\n const quantity = args.quantity ?? wire.quantity ?? null\n return {\n state: 'filled',\n dryRun,\n symbol,\n side: asString(wire.side ?? args.side, '—'),\n type: asString(wire.type ?? wire.orderType ?? args.type ?? args.orderType, '—'),\n quantity: typeof quantity === 'number' || typeof quantity === 'string' ? quantity : null,\n price: asNumber(wire.price ?? args.price),\n referencePrice,\n message: asString(wire.note),\n }\n}\n\nexport interface ParsedWatchlistCard {\n action: 'add' | 'select'\n symbol: string\n market: string\n name: string\n added: boolean\n note: string\n}\n\nexport function parseWatchlistPayload(toolName: string, argsRaw: string, resultText: string): ParsedWatchlistCard | null {\n const wire = parseResult(resultText)\n if (wire === null || wire.ok !== true) return null\n const args = parseArgs(argsRaw)\n // add 载荷行内带 market/symbol(execute 时并入);select 载荷是 selected 字段。\n const instrument = ((wire.selected ?? wire.instrument ?? wire) as { symbol?: unknown; market?: unknown; name?: unknown })\n const symbol = asString(instrument.symbol ?? args.symbol, '—')\n const market = asString(instrument.market ?? args.market, '—')\n if (symbol === '—' || market === '—') return null\n if (toolName === 'watchlist_select') {\n return { action: 'select', symbol, market, name: asString(instrument.name ?? args.name), added: true, note: asString(wire.note) }\n }\n if (toolName === 'watchlist_add') {\n return { action: 'add', symbol, market, name: asString(instrument.name ?? args.name), added: wire.added === true, note: asString(wire.note) }\n }\n return null\n}","/**\n * 对话内富卡片(issue #34 / P5 §5.5,shell 半):tool.call.toolview keyed slot。\n *\n * - OrderCard(key = <market>_place_order,4 市场各注册一把):订单参数 +\n * 模拟/实盘标识(dryRun 回执 status:'filled'+dryRun:true / 闸门拒绝\n * status:'rejected')+ 参考价;\n * - WatchlistChipCard(key = watchlist_add / watchlist_select):标的 chip。\n *\n * 契约同策略卡:running/解析失败 → null,回落官方通用工具行。\n */\nimport type { ToolCallOwnerProps } from '@deepseek-ai/dsh-client-ui-tool/client'\nimport { parsePlaceOrderPayload, parseWatchlistPayload } from './toolview-parse.ts'\nimport type { MarketLocaleKey } from './contract.ts'\nimport css from './toolview.module.css'\n\n/** 卡片文案面:keyed slot 注册声明 locale: NS 后,框架沿 owner props 注入\n * t(宿主内建 SearchRow 同款);SDK 的 ToolCallOwnerProps 类型不含 t,\n * 组件签名本地宽化,缺席时回落英文常量(词典缺失也不渲染裸键)。 */\ntype CardProps = ToolCallOwnerProps & { t?: (key: MarketLocaleKey, params?: Record<string, unknown>) => string }\n\n/** 从 owner.block 取(argsRaw, result 文本)。 */\nfunction readCall(block: ToolCallOwnerProps['block']): { argsRaw: string; resultText: string | null; isError: boolean } {\n if (block.kind === 'tool-result') {\n const text = block.content\n .map((part: unknown) => (typeof part === 'object' && part !== null && 'text' in part ? String((part as { text?: unknown }).text ?? '') : ''))\n .join('')\n return { argsRaw: block.call?.argsRaw ?? '', resultText: text, isError: block.isError }\n }\n return { argsRaw: block.argsRaw ?? '', resultText: null, isError: false }\n}\n\n/** 下单工具名 → 市场(us/cn/hk/crypto_place_order)。 */\nconst ORDER_TOOL_RE = /^(crypto|us|cn|hk)_place_order$/\n\nexport function isOrderTool(name: string): boolean {\n return ORDER_TOOL_RE.test(name)\n}\n\n/** <market>_place_order 卡:订单参数 + 模拟/实盘/拒绝标识 + 参考价。 */\nexport function OrderCard(props: CardProps) {\n const { block, t } = props\n const call = readCall(block)\n if (call.resultText === null) return null\n const parsed = parsePlaceOrderPayload(call.argsRaw, call.resultText)\n if (parsed === null) return null\n\n return (\n <div className={css.card} data-dshtrading-toolview=\"place-order\" data-state={parsed.state}>\n <div className={css.head}>\n <span className={css.badge} data-state={parsed.state}>\n {parsed.state === 'rejected'\n ? (t?.('card.order.rejected') ?? 'Rejected')\n : parsed.dryRun\n ? (t?.('card.order.dryRun') ?? 'Dry-run')\n : (t?.('card.order.live') ?? 'Live')}\n </span>\n <span className={css.title}>{parsed.symbol}</span>\n <span className={css.chip}>{parsed.side === 'buy' ? (t?.('trade.buy') ?? 'Buy') : (t?.('trade.sell') ?? 'Sell')}</span>\n <span className={css.chip}>{parsed.type === 'limit' ? (t?.('trade.limit') ?? 'Limit') : (t?.('trade.market') ?? 'Market')}</span>\n </div>\n <div className={css.params}>\n {parsed.type === 'limit' && parsed.price !== null ? `${t?.('card.order.priceLabel') ?? 'Price'} ${parsed.price} · ` : ''}\n {`${t?.('card.order.quantityLabel') ?? 'Qty'} ${parsed.quantity ?? '—'}`}\n {parsed.referencePrice !== null ? ` · ${t?.('card.order.refPriceLabel') ?? 'Ref'} ${parsed.referencePrice}` : ''}\n </div>\n {parsed.state === 'rejected' && parsed.message !== '' && <div className={css.reason}>{parsed.message}</div>}\n </div>\n )\n}\n\n/** watchlist_add / watchlist_select 卡:标的 chip + 动作结果。 */\nexport function WatchlistChipCard(props: CardProps) {\n const { toolName, block, t } = props\n const call = readCall(block)\n if (call.resultText === null) return null\n const parsed = parseWatchlistPayload(toolName, call.argsRaw, call.resultText)\n if (parsed === null) return null\n\n const title = parsed.action === 'select'\n ? (t?.('card.watchlist.selected') ?? 'Selected')\n : parsed.added\n ? (t?.('card.watchlist.added') ?? 'Added to watchlist')\n : (t?.('card.watchlist.already') ?? 'Already in watchlist')\n\n return (\n <div className={css.card} data-dshtrading-toolview=\"watchlist\">\n <div className={css.head}>\n <span className={css.title}>{title}</span>\n <span className={css.chip}>{parsed.symbol}</span>\n <span className={css.chip}>{parsed.market}</span>\n {parsed.name !== '' && <span className={css.meta}>{parsed.name}</span>}\n </div>\n {parsed.note !== '' && <div className={css.params}>{parsed.note}</div>}\n </div>\n )\n}","//#region src/catalog.ts\nconst SYMBOL_CATALOG = {\n\tcrypto: [\n\t\t{\n\t\t\tsymbol: \"BTCUSDT\",\n\t\t\tname: \"比特币\",\n\t\t\tpinyin: \"BTC,BITCOIN,BITEBI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"ETHUSDT\",\n\t\t\tname: \"以太坊\",\n\t\t\tpinyin: \"ETH,ETHEREUM,YITAIFANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"SOLUSDT\",\n\t\t\tname: \"Solana\",\n\t\t\tpinyin: \"SOL\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"BNBUSDT\",\n\t\t\tname: \"BNB\",\n\t\t\tpinyin: \"BNB\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"XRPUSDT\",\n\t\t\tname: \"XRP\",\n\t\t\tpinyin: \"XRP,RIPPLE,RUIBO\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"DOGEUSDT\",\n\t\t\tname: \"狗狗币\",\n\t\t\tpinyin: \"DOGE,GOUGOUBI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"ADAUSDT\",\n\t\t\tname: \"艾达币\",\n\t\t\tpinyin: \"ADA,AIDABI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"TRXUSDT\",\n\t\t\tname: \"波场\",\n\t\t\tpinyin: \"TRX,BOCHANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"AVAXUSDT\",\n\t\t\tname: \"雪崩\",\n\t\t\tpinyin: \"AVAX,XUEBENG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"LINKUSDT\",\n\t\t\tname: \"链link\",\n\t\t\tpinyin: \"LINK\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"TONUSDT\",\n\t\t\tname: \"Toncoin\",\n\t\t\tpinyin: \"TON\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"SHIBUSDT\",\n\t\t\tname: \"屎币\",\n\t\t\tpinyin: \"SHIB,SHIBI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"SUIUSDT\",\n\t\t\tname: \"Sui\",\n\t\t\tpinyin: \"SUI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"DOTUSDT\",\n\t\t\tname: \"波卡\",\n\t\t\tpinyin: \"DOT,BOKA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"LTCUSDT\",\n\t\t\tname: \"莱特币\",\n\t\t\tpinyin: \"LTC,LAITEBI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"BCHUSDT\",\n\t\t\tname: \"比特币现金\",\n\t\t\tpinyin: \"BCH\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"NEARUSDT\",\n\t\t\tname: \"NEAR\",\n\t\t\tpinyin: \"NEAR\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"APTUSDT\",\n\t\t\tname: \"Aptos\",\n\t\t\tpinyin: \"APT\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"ARBUSDT\",\n\t\t\tname: \"Arbitrum\",\n\t\t\tpinyin: \"ARB\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"OPUSDT\",\n\t\t\tname: \"Optimism\",\n\t\t\tpinyin: \"OP\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"ATOMUSDT\",\n\t\t\tname: \"Cosmos\",\n\t\t\tpinyin: \"ATOM\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"XLMUSDT\",\n\t\t\tname: \"恒星币\",\n\t\t\tpinyin: \"XLM\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"HBARUSDT\",\n\t\t\tname: \"Hedera\",\n\t\t\tpinyin: \"HBAR\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"INJUSDT\",\n\t\t\tname: \"Injective\",\n\t\t\tpinyin: \"INJ\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"SEIUSDT\",\n\t\t\tname: \"Sei\",\n\t\t\tpinyin: \"SEI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"TIAUSDT\",\n\t\t\tname: \"Celestia\",\n\t\t\tpinyin: \"TIA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"PEPEUSDT\",\n\t\t\tname: \"Pepe\",\n\t\t\tpinyin: \"PEPE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"WIFUSDT\",\n\t\t\tname: \"dogwifhat\",\n\t\t\tpinyin: \"WIF\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"BONKUSDT\",\n\t\t\tname: \"Bonk\",\n\t\t\tpinyin: \"BONK\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"ORDIUSDT\",\n\t\t\tname: \"ORDI\",\n\t\t\tpinyin: \"ORDI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"NOTUSDT\",\n\t\t\tname: \"Notcoin\",\n\t\t\tpinyin: \"NOT\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"UNIUSDT\",\n\t\t\tname: \"Uniswap\",\n\t\t\tpinyin: \"UNI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"AAVEUSDT\",\n\t\t\tname: \"Aave\",\n\t\t\tpinyin: \"AAVE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"RENDERUSDT\",\n\t\t\tname: \"Render\",\n\t\t\tpinyin: \"RENDER\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"FETUSDT\",\n\t\t\tname: \"ASAI\",\n\t\t\tpinyin: \"FET\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"WLDUSDT\",\n\t\t\tname: \"世界币\",\n\t\t\tpinyin: \"WLD,SHIJIEBI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"JUPUSDT\",\n\t\t\tname: \"Jupiter\",\n\t\t\tpinyin: \"JUP\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"PYTHUSDT\",\n\t\t\tname: \"Pyth\",\n\t\t\tpinyin: \"PYTH\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"STXUSDT\",\n\t\t\tname: \"Stacks\",\n\t\t\tpinyin: \"STX\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"IMXUSDT\",\n\t\t\tname: \"Immutable\",\n\t\t\tpinyin: \"IMX\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"GALAUSDT\",\n\t\t\tname: \"Gala\",\n\t\t\tpinyin: \"GALA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"SANDUSDT\",\n\t\t\tname: \"The Sandbox\",\n\t\t\tpinyin: \"SAND\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"MANAUSDT\",\n\t\t\tname: \"Decentraland\",\n\t\t\tpinyin: \"MANA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"AXSUSDT\",\n\t\t\tname: \"Axie Infinity\",\n\t\t\tpinyin: \"AXS\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"CRVUSDT\",\n\t\t\tname: \"Curve\",\n\t\t\tpinyin: \"CRV\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"LDOUSDT\",\n\t\t\tname: \"Lido DAO\",\n\t\t\tpinyin: \"LDO\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"ETCUSDT\",\n\t\t\tname: \"以太经典\",\n\t\t\tpinyin: \"ETC\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"FILUSDT\",\n\t\t\tname: \"Filecoin\",\n\t\t\tpinyin: \"FIL\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"MATICUSDT\",\n\t\t\tname: \"Polygon\",\n\t\t\tpinyin: \"MATIC\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"ETHBTC\",\n\t\t\tname: \"ETH/BTC\",\n\t\t\tpinyin: \"ETHBTC\"\n\t\t}\n\t],\n\tus: [\n\t\t{\n\t\t\tsymbol: \"AAPL\",\n\t\t\tname: \"苹果\",\n\t\t\tpinyin: \"AAPL,APPLE,PG,PINGGUO\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"MSFT\",\n\t\t\tname: \"微软\",\n\t\t\tpinyin: \"MSFT,MICROSOFT,WR,WEIRUAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"GOOGL\",\n\t\t\tname: \"谷歌\",\n\t\t\tpinyin: \"GOOGL,GOOGLE,GG,GUGE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"AMZN\",\n\t\t\tname: \"亚马逊\",\n\t\t\tpinyin: \"AMZN,AMAZON,YMX,YAMAXUN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"META\",\n\t\t\tname: \"Meta\",\n\t\t\tpinyin: \"META,FACEBOOK,FB\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"NVDA\",\n\t\t\tname: \"英伟达\",\n\t\t\tpinyin: \"NVDA,NVIDIA,YWD,YINGWEIDA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"TSLA\",\n\t\t\tname: \"特斯拉\",\n\t\t\tpinyin: \"TSLA,TESLA,TSL,TESILA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"AVGO\",\n\t\t\tname: \"博通\",\n\t\t\tpinyin: \"AVGO,BROADCOM,BT,BOTONG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"TSM\",\n\t\t\tname: \"台积电\",\n\t\t\tpinyin: \"TSM,TSMC,TJD,TAIJIDIAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"LLY\",\n\t\t\tname: \"礼来\",\n\t\t\tpinyin: \"LLY,LILLY,LL,LILAI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"JPM\",\n\t\t\tname: \"摩根大通\",\n\t\t\tpinyin: \"JPM,MGDT,MOGENDATONG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"V\",\n\t\t\tname: \"Visa\",\n\t\t\tpinyin: \"V,VISA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"MA\",\n\t\t\tname: \"万事达\",\n\t\t\tpinyin: \"MA,MASTERCARD,WSD,WANSHIDA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"UNH\",\n\t\t\tname: \"联合健康\",\n\t\t\tpinyin: \"UNH,LHJK,LIANHEJIANKANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"JNJ\",\n\t\t\tname: \"强生\",\n\t\t\tpinyin: \"JNJ,QS,QIANGSHENG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"WMT\",\n\t\t\tname: \"沃尔玛\",\n\t\t\tpinyin: \"WMT,WALMART,WEM,WOERMA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"PG\",\n\t\t\tname: \"宝洁\",\n\t\t\tpinyin: \"PG,BJ,BAOJIE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"HD\",\n\t\t\tname: \"家得宝\",\n\t\t\tpinyin: \"HD,HOMEDEPOT,JDB,JIADEBAO\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"ORCL\",\n\t\t\tname: \"甲骨文\",\n\t\t\tpinyin: \"ORCL,ORACLE,JGW,JIAGUWEN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"CRM\",\n\t\t\tname: \"赛富时\",\n\t\t\tpinyin: \"CRM,SALESFORCE,SFS,SAIFUSHI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"NFLX\",\n\t\t\tname: \"奈飞\",\n\t\t\tpinyin: \"NFLX,NETFLIX,NF,NAIFEI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"AMD\",\n\t\t\tname: \"超威半导体\",\n\t\t\tpinyin: \"AMD,CWBDT,CHAOWEI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"INTC\",\n\t\t\tname: \"英特尔\",\n\t\t\tpinyin: \"INTC,INTEL,YTE,YINGTEER\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"QCOM\",\n\t\t\tname: \"高通\",\n\t\t\tpinyin: \"QCOM,QUALCOMM,GT,GAOTONG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"TXN\",\n\t\t\tname: \"德州仪器\",\n\t\t\tpinyin: \"TXN,DZYQ,DEZHOUYIQI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"ADBE\",\n\t\t\tname: \"Adobe\",\n\t\t\tpinyin: \"ADBE,ADOBE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"PYPL\",\n\t\t\tname: \"PayPal\",\n\t\t\tpinyin: \"PYPL,PAYPAL\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"DIS\",\n\t\t\tname: \"迪士尼\",\n\t\t\tpinyin: \"DIS,DISNEY,DSN,DISHINI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"KO\",\n\t\t\tname: \"可口可乐\",\n\t\t\tpinyin: \"KO,COCACOLA,KKKL,KEKOUKELE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"PEP\",\n\t\t\tname: \"百事\",\n\t\t\tpinyin: \"PEP,PEPSI,BS,BAISHI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"MCD\",\n\t\t\tname: \"麦当劳\",\n\t\t\tpinyin: \"MCD,MCDONALDS,MDL,MAIDANGLAO\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"NKE\",\n\t\t\tname: \"耐克\",\n\t\t\tpinyin: \"NKE,NIKE,NK,NAIKE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"BA\",\n\t\t\tname: \"波音\",\n\t\t\tpinyin: \"BA,BOEING,BY,BOYIN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"CAT\",\n\t\t\tname: \"卡特彼勒\",\n\t\t\tpinyin: \"CAT,KTPL,KATEBILE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"XOM\",\n\t\t\tname: \"埃克森美孚\",\n\t\t\tpinyin: \"XOM,EXXON,AKSMF\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"CVX\",\n\t\t\tname: \"雪佛龙\",\n\t\t\tpinyin: \"CVX,CHEVRON,XFL,XUEFOLONG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"BAC\",\n\t\t\tname: \"美国银行\",\n\t\t\tpinyin: \"BAC,MGYH,MEIGUOYINHANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"C\",\n\t\t\tname: \"花旗\",\n\t\t\tpinyin: \"C,CITI,HQ,HUAQI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"GS\",\n\t\t\tname: \"高盛\",\n\t\t\tpinyin: \"GS,GOLDMAN,GS,GAOSHENG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"MS\",\n\t\t\tname: \"摩根士丹利\",\n\t\t\tpinyin: \"MS,MORGAN,MGSDL\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"BLK\",\n\t\t\tname: \"贝莱德\",\n\t\t\tpinyin: \"BLK,BLACKROCK,BLD,BEILAIDE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"UBER\",\n\t\t\tname: \"优步\",\n\t\t\tpinyin: \"UBER,YB,YOUBU\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"ABNB\",\n\t\t\tname: \"爱彼迎\",\n\t\t\tpinyin: \"ABNB,AIRBNB,ABY,AIBIYING\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"COIN\",\n\t\t\tname: \"Coinbase\",\n\t\t\tpinyin: \"COIN,COINBASE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"MSTR\",\n\t\t\tname: \"微策略\",\n\t\t\tpinyin: \"MSTR,MICROSTRATEGY,WCL,WEICELVE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"PLTR\",\n\t\t\tname: \"Palantir\",\n\t\t\tpinyin: \"PLTR,PALANTIR\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"SMCI\",\n\t\t\tname: \"超微电脑\",\n\t\t\tpinyin: \"SMCI,CWDN,CHAOWEIDIANNAO\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"BABA\",\n\t\t\tname: \"阿里巴巴\",\n\t\t\tpinyin: \"BABA,ALIBABA,ALBB\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"GM\",\n\t\t\tname: \"通用汽车\",\n\t\t\tpinyin: \"GM,TYQC,TONGYONGQICHE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"F\",\n\t\t\tname: \"福特\",\n\t\t\tpinyin: \"F,FORD,FT,FUTE\"\n\t\t}\n\t],\n\tcn: [\n\t\t{\n\t\t\tsymbol: \"600519.SH\",\n\t\t\tname: \"贵州茅台\",\n\t\t\tpinyin: \"GZMT,MT,GUIZHOUMAOTAI,MAOTAI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"000001.SZ\",\n\t\t\tname: \"平安银行\",\n\t\t\tpinyin: \"PAYH,PA,PINGANYINHANG,PINGAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600036.SH\",\n\t\t\tname: \"招商银行\",\n\t\t\tpinyin: \"ZSYH,ZS,ZHAOSHANGYINHANG,ZHAOSHANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"000333.SZ\",\n\t\t\tname: \"美的集团\",\n\t\t\tpinyin: \"MDJT,MD,MEIDEJITUAN,MEIDE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"000651.SZ\",\n\t\t\tname: \"格力电器\",\n\t\t\tpinyin: \"GLDQ,GL,GELIDIANQI,GELI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601318.SH\",\n\t\t\tname: \"中国平安\",\n\t\t\tpinyin: \"ZGPA,PA,ZHONGGUOPINGAN,PINGAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600900.SH\",\n\t\t\tname: \"长江电力\",\n\t\t\tpinyin: \"CJDL,CHANGJIANGDIANLI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601398.SH\",\n\t\t\tname: \"工商银行\",\n\t\t\tpinyin: \"GSYH,GS,GONGSHANGYINHANG,GONGHANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601988.SH\",\n\t\t\tname: \"中国银行\",\n\t\t\tpinyin: \"ZGYH,ZG,ZHONGGUOYINHANG,ZHONGHANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601939.SH\",\n\t\t\tname: \"建设银行\",\n\t\t\tpinyin: \"JSYH,JS,JIANSHANG,JIANHANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600030.SH\",\n\t\t\tname: \"中信证券\",\n\t\t\tpinyin: \"ZXZQ,ZX,ZHONGXINZHENGQUAN,ZHONGXIN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601899.SH\",\n\t\t\tname: \"紫金矿业\",\n\t\t\tpinyin: \"ZJKY,ZJ,ZIJINKUANGYE,ZIJIN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"000002.SZ\",\n\t\t\tname: \"万科A\",\n\t\t\tpinyin: \"WKA,WK,WANKEA,WANKE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002594.SZ\",\n\t\t\tname: \"比亚迪\",\n\t\t\tpinyin: \"BYD,BIYADI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"300750.SZ\",\n\t\t\tname: \"宁德时代\",\n\t\t\tpinyin: \"NDSD,ND,NINGDESHIDAI,NINGDE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002475.SZ\",\n\t\t\tname: \"立讯精密\",\n\t\t\tpinyin: \"LXJM,LX,LIXUNJINMI,LIXUN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"603259.SH\",\n\t\t\tname: \"药明康德\",\n\t\t\tpinyin: \"YMKD,YM,YAOMINGKANGDE,YAOMING\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600276.SH\",\n\t\t\tname: \"恒瑞医药\",\n\t\t\tpinyin: \"HRYY,HR,HENGRUIYIYAO,HENGRUI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"000858.SZ\",\n\t\t\tname: \"五粮液\",\n\t\t\tpinyin: \"WLY,WULIANGYE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002415.SZ\",\n\t\t\tname: \"海康威视\",\n\t\t\tpinyin: \"HKWS,HK,HAIKANGWEISHI,HAIKANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"688981.SH\",\n\t\t\tname: \"中芯国际\",\n\t\t\tpinyin: \"ZXGJ,ZX,ZHONGXINGUOJI,ZHONGXIN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601012.SH\",\n\t\t\tname: \"隆基绿能\",\n\t\t\tpinyin: \"LJLN,LJ,LONGJILVNENG,LONGJI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600887.SH\",\n\t\t\tname: \"伊利股份\",\n\t\t\tpinyin: \"YLGF,YL,YILIGUFEN,YILI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601888.SH\",\n\t\t\tname: \"中国中免\",\n\t\t\tpinyin: \"ZGZM,ZM,ZHONGGUOZHONGMIAN,ZHONGMIAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600028.SH\",\n\t\t\tname: \"中国石化\",\n\t\t\tpinyin: \"ZGSH,SH,ZHONGGUOSHIHUA,ZHONGSHIHUA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601857.SH\",\n\t\t\tname: \"中国石油\",\n\t\t\tpinyin: \"ZGSY,SY,ZHONGGUOSHIYOU,ZHONGSHIYOU\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601668.SH\",\n\t\t\tname: \"中国建筑\",\n\t\t\tpinyin: \"ZGJZ,JZ,ZHONGGUOJIANZHU,ZHONGJIAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601728.SH\",\n\t\t\tname: \"中国电信\",\n\t\t\tpinyin: \"ZGDX,DX,ZHONGGUODIANXIN,ZHONGDIANXIN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600941.SH\",\n\t\t\tname: \"中国移动\",\n\t\t\tpinyin: \"ZGYD,YD,ZHONGGUOYIDONG,ZHONGYIDONG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600050.SH\",\n\t\t\tname: \"中国联通\",\n\t\t\tpinyin: \"ZGLT,LT,ZHONGGUOLIANTONG,ZHONGLIANTONG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"300059.SZ\",\n\t\t\tname: \"东方财富\",\n\t\t\tpinyin: \"DFCF,DC,DONGFANGCAIFU,DONGCAI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"300124.SZ\",\n\t\t\tname: \"汇川技术\",\n\t\t\tpinyin: \"HCJS,HC,HUICHUANJISHU,HUICHUAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002230.SZ\",\n\t\t\tname: \"科大讯飞\",\n\t\t\tpinyin: \"KDXF,XF,KEDAXUNFEI,XUNFEI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"688111.SH\",\n\t\t\tname: \"金山办公\",\n\t\t\tpinyin: \"JSBG,WPS,JINSHANBANGONG,JINSHAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"688041.SH\",\n\t\t\tname: \"海光信息\",\n\t\t\tpinyin: \"HGXX,HG,HAIGUANGXINXI,HAIGUANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002371.SZ\",\n\t\t\tname: \"北方华创\",\n\t\t\tpinyin: \"BFHC,HC,BEIFANGHUACHUANG,HUACHUANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"603501.SH\",\n\t\t\tname: \"韦尔股份\",\n\t\t\tpinyin: \"WEGF,WE,WEIERGUFEN,WEIER\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600584.SH\",\n\t\t\tname: \"长电科技\",\n\t\t\tpinyin: \"CDKJ,CD,CHANGDIANKEJI,CHANGDIAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601127.SH\",\n\t\t\tname: \"赛力斯\",\n\t\t\tpinyin: \"SLS,SAILISI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002714.SZ\",\n\t\t\tname: \"牧原股份\",\n\t\t\tpinyin: \"MYGF,MY,MUYUANGUFEN,MUYUAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002745.SZ\",\n\t\t\tname: \"木林森\",\n\t\t\tpinyin: \"MLS,MULINSEN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002240.SZ\",\n\t\t\tname: \"盛新锂能\",\n\t\t\tpinyin: \"SXLN,SX,SHENGXINLINENG,SHENGXIN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002466.SZ\",\n\t\t\tname: \"天齐锂业\",\n\t\t\tpinyin: \"TQLY,TQ,TIANQILIYE,TIANQI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002460.SZ\",\n\t\t\tname: \"赣锋锂业\",\n\t\t\tpinyin: \"GFLY,GF,GANFENGLIYE,GANFENG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600438.SH\",\n\t\t\tname: \"通威股份\",\n\t\t\tpinyin: \"TWGF,TW,TONGWEIGUFEN,TONGWEI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"300274.SZ\",\n\t\t\tname: \"阳光电源\",\n\t\t\tpinyin: \"YGDY,YG,YANGGUANGDIANYUAN,YANGGUANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600000.SH\",\n\t\t\tname: \"浦发银行\",\n\t\t\tpinyin: \"PFYH,PF,PUFAYINHANG,PUFA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002142.SZ\",\n\t\t\tname: \"宁波银行\",\n\t\t\tpinyin: \"NBYH,NB,NINGBOYINHANG,NINGBO\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601166.SH\",\n\t\t\tname: \"兴业银行\",\n\t\t\tpinyin: \"XYYH,XY,XINGYEYINHANG,XINGYE\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"601919.SH\",\n\t\t\tname: \"中远海控\",\n\t\t\tpinyin: \"ZYHK,ZY,ZHONGYUANHAIKONG,HAIKONG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"000063.SZ\",\n\t\t\tname: \"中兴通讯\",\n\t\t\tpinyin: \"ZXTX,ZX,ZHONGXINGTONGXUN,ZHONGXIN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002241.SZ\",\n\t\t\tname: \"歌尔股份\",\n\t\t\tpinyin: \"GEGF,GE,GEERGUFEN,GEER\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"300433.SZ\",\n\t\t\tname: \"蓝思科技\",\n\t\t\tpinyin: \"LSKJ,LS,LANSIKEJI,LANSI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"603986.SH\",\n\t\t\tname: \"兆易创新\",\n\t\t\tpinyin: \"ZYCX,ZY,ZHAOYICHUANGXIN,ZHAOYI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"002156.SZ\",\n\t\t\tname: \"通富微电\",\n\t\t\tpinyin: \"TFMD,TF,TONGFUWEIDIAN,TONGFU\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"600460.SH\",\n\t\t\tname: \"士兰微\",\n\t\t\tpinyin: \"SLW,SL,SHILANWEI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"300014.SZ\",\n\t\t\tname: \"亿纬锂能\",\n\t\t\tpinyin: \"YWLN,YW,YIWEILINENG,YIWEI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"300015.SZ\",\n\t\t\tname: \"爱尔眼科\",\n\t\t\tpinyin: \"AEYK,AE,AERYANKE,AIER\"\n\t\t}\n\t],\n\thk: [\n\t\t{\n\t\t\tsymbol: \"00700.HK\",\n\t\t\tname: \"腾讯控股\",\n\t\t\tpinyin: \"TXKG,TX,TENGXUN,TENGXUNGUFEN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"09988.HK\",\n\t\t\tname: \"阿里巴巴-W\",\n\t\t\tpinyin: \"ALBB,ALI,ALIBABA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"03690.HK\",\n\t\t\tname: \"美团-W\",\n\t\t\tpinyin: \"MT,MEITUAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"09618.HK\",\n\t\t\tname: \"京东集团-SW\",\n\t\t\tpinyin: \"JDJT,JD,JINGDONG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"09999.HK\",\n\t\t\tname: \"网易-S\",\n\t\t\tpinyin: \"WY,WANGYI,NTES\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"09888.HK\",\n\t\t\tname: \"百度集团-SW\",\n\t\t\tpinyin: \"BDJT,BD,BAIDU\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"01024.HK\",\n\t\t\tname: \"快手-W\",\n\t\t\tpinyin: \"KS,KUAISHOU\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"09626.HK\",\n\t\t\tname: \"哔哩哔哩-W\",\n\t\t\tpinyin: \"BLBL,BILI,BILIBILI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"01810.HK\",\n\t\t\tname: \"小米集团-W\",\n\t\t\tpinyin: \"XMJT,XM,XIAOMI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"02015.HK\",\n\t\t\tname: \"理想汽车-W\",\n\t\t\tpinyin: \"LXQC,LX,LIXIANG,LI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"09868.HK\",\n\t\t\tname: \"小鹏汽车-W\",\n\t\t\tpinyin: \"XPQC,XP,XIAOPENG,XPEV\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"09866.HK\",\n\t\t\tname: \"蔚来-SW\",\n\t\t\tpinyin: \"WL,WEILAI,NIO\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"09863.HK\",\n\t\t\tname: \"零跑汽车\",\n\t\t\tpinyin: \"LPQC,LP,LINGPAO\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"01211.HK\",\n\t\t\tname: \"比亚迪股份\",\n\t\t\tpinyin: \"BYD,BIYADI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"02333.HK\",\n\t\t\tname: \"长城汽车\",\n\t\t\tpinyin: \"CCQC,CC,CHANGCHENG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00175.HK\",\n\t\t\tname: \"吉利汽车\",\n\t\t\tpinyin: \"JLQC,JL,JILI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00981.HK\",\n\t\t\tname: \"中芯国际\",\n\t\t\tpinyin: \"ZXGJ,ZX,ZHONGXINGUOJI,SMIC\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00939.HK\",\n\t\t\tname: \"建设银行\",\n\t\t\tpinyin: \"JSYH,JS,JIANSHANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"01398.HK\",\n\t\t\tname: \"工商银行\",\n\t\t\tpinyin: \"GSYH,GS,GONGSHANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"01299.HK\",\n\t\t\tname: \"友邦保险\",\n\t\t\tpinyin: \"YBBX,YB,YOUBANG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"02318.HK\",\n\t\t\tname: \"中国平安\",\n\t\t\tpinyin: \"ZGPA,PA,PINGAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00388.HK\",\n\t\t\tname: \"香港交易所\",\n\t\t\tpinyin: \"HKEX,XGJYS,GANGJIAOSUO\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00005.HK\",\n\t\t\tname: \"汇丰控股\",\n\t\t\tpinyin: \"HSBC,HFKG,HUIFENG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00941.HK\",\n\t\t\tname: \"中国移动\",\n\t\t\tpinyin: \"ZGYD,YD,YIDONG\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00857.HK\",\n\t\t\tname: \"中国石油股份\",\n\t\t\tpinyin: \"ZGSY,SY,SHIYOU\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00883.HK\",\n\t\t\tname: \"中国海洋石油\",\n\t\t\tpinyin: \"ZGHY,CNOOC,HAIYOU\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"03888.HK\",\n\t\t\tname: \"金山软件\",\n\t\t\tpinyin: \"JSRJ,JS,JINSHAN\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"02628.HK\",\n\t\t\tname: \"中国人寿\",\n\t\t\tpinyin: \"ZGRS,RS,RENSHOU\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00322.HK\",\n\t\t\tname: \"康师傅控股\",\n\t\t\tpinyin: \"KSF,KANGSHIFU\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"02319.HK\",\n\t\t\tname: \"蒙牛乳业\",\n\t\t\tpinyin: \"MNRY,MN,MENGNIU\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"01876.HK\",\n\t\t\tname: \"百威亚太\",\n\t\t\tpinyin: \"BWYT,BW,BAIWEI\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00316.HK\",\n\t\t\tname: \"东方海外国际\",\n\t\t\tpinyin: \"DFHW,DONGFA\"\n\t\t},\n\t\t{\n\t\t\tsymbol: \"00669.HK\",\n\t\t\tname: \"创科实业\",\n\t\t\tpinyin: \"CKSY,CHUANGKE\"\n\t\t}\n\t]\n};\nconst dynamicCatalogs = /* @__PURE__ */ new Map();\n/** 注入某市场的动态标的全集(由桥端点拉取并入)。 */\nfunction setDynamicCatalog(market, entries) {\n\tconst normalized = entries.map((e) => ({\n\t\tsymbol: e.symbol,\n\t\tname: e.name ?? e.symbol,\n\t\tpinyin: e.pinyin\n\t}));\n\tdynamicCatalogs.set(market, normalized);\n}\n/** 累加/增量更新某市场的动态标的名称(由实时行情查询或联想补齐触发)。 */\nfunction updateDynamicCatalog(market, entries) {\n\tconst existing = dynamicCatalogs.get(market) ?? [];\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const e of existing) map.set(e.symbol.toUpperCase(), e);\n\tfor (const e of entries) {\n\t\tif (!e.symbol || !e.name) continue;\n\t\tconst sym = e.symbol.toUpperCase();\n\t\tif (e.name === e.symbol || /\\(A股\\)|\\(港股\\)/.test(e.name)) continue;\n\t\tconst old = map.get(sym);\n\t\tmap.set(sym, {\n\t\t\tsymbol: e.symbol,\n\t\t\tname: e.name,\n\t\t\tpinyin: e.pinyin ?? old?.pinyin\n\t\t});\n\t}\n\tdynamicCatalogs.set(market, Array.from(map.values()));\n}\n/** 获取静态快照 ∪ 动态全集融合后的标的列表(静态优先保留中文名,动态补充新标的)。 */\nfunction getMergedCatalog(market) {\n\tconst staticList = SYMBOL_CATALOG[market] ?? [];\n\tconst dynamicList = dynamicCatalogs.get(market) ?? [];\n\tif (dynamicList.length === 0) return staticList;\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst merged = [];\n\tfor (const entry of staticList) {\n\t\tseen.add(entry.symbol.toUpperCase());\n\t\tmerged.push(entry);\n\t}\n\tfor (const entry of dynamicList) {\n\t\tconst sym = entry.symbol.toUpperCase();\n\t\tif (!seen.has(sym)) {\n\t\t\tseen.add(sym);\n\t\t\tmerged.push(entry);\n\t\t}\n\t}\n\treturn merged;\n}\n/**\n* 联想搜索:静态 ∪ 动态全集融合,symbol 前缀/包含(大小写不敏感)或中文名包含,返回前 limit 条。\n* 空查询返回空(不打扰)。\n*/\nfunction searchSymbols(market, query, limit = 8) {\n\tconst q = query.trim().toUpperCase();\n\tif (q === \"\") return [];\n\tconst catalog = getMergedCatalog(market);\n\tconst scored = [];\n\tfor (const entry of catalog) {\n\t\tconst symbol = entry.symbol.toUpperCase();\n\t\tconst name = entry.name ? entry.name.toUpperCase() : \"\";\n\t\tconst pinyinList = entry.pinyin ? entry.pinyin.toUpperCase().split(\",\") : [];\n\t\tlet score = -1;\n\t\tif (symbol === q || pinyinList.includes(q)) score = 0;\n\t\telse if (symbol.startsWith(q) || pinyinList.some((p) => p.startsWith(q))) score = 1;\n\t\telse if (name && name.includes(q)) score = 2;\n\t\telse if (symbol.includes(q) || pinyinList.some((p) => p.includes(q))) score = 3;\n\t\tif (score >= 0) scored.push({\n\t\t\tentry,\n\t\t\tscore\n\t\t});\n\t}\n\treturn scored.sort((a, b) => a.score - b.score).slice(0, limit).map((s) => s.entry);\n}\nfunction searchAllMarkets(query, limit = 8) {\n\tconst q = query.trim().toUpperCase();\n\tif (q === \"\") return [];\n\tconst markets = [\n\t\t\"crypto\",\n\t\t\"us\",\n\t\t\"cn\",\n\t\t\"hk\"\n\t];\n\tconst all = [];\n\tfor (const market of markets) {\n\t\tconst catalog = getMergedCatalog(market);\n\t\tfor (const entry of catalog) {\n\t\t\tconst symbol = entry.symbol.toUpperCase();\n\t\t\tconst name = entry.name ? entry.name.toUpperCase() : \"\";\n\t\t\tconst pinyinList = entry.pinyin ? entry.pinyin.toUpperCase().split(\",\") : [];\n\t\t\tlet score = -1;\n\t\t\tif (symbol === q || pinyinList.includes(q)) score = 0;\n\t\t\telse if (symbol.startsWith(q) || pinyinList.some((p) => p.startsWith(q))) score = 1;\n\t\t\telse if (name && name.includes(q)) score = 2;\n\t\t\telse if (symbol.includes(q) || pinyinList.some((p) => p.includes(q))) score = 3;\n\t\t\tif (score >= 0) all.push({\n\t\t\t\tentry: {\n\t\t\t\t\t...entry,\n\t\t\t\t\tmarket\n\t\t\t\t},\n\t\t\t\tscore\n\t\t\t});\n\t\t}\n\t}\n\treturn all.sort((a, b) => a.score - b.score).slice(0, limit).map((s) => s.entry);\n}\n//#endregion\nexport { SYMBOL_CATALOG, getMergedCatalog, searchAllMarkets, searchSymbols, setDynamicCatalog, updateDynamicCatalog };\n","/**\n * 全局涨跌配色管理:\n * - red-up: 红涨绿跌(国内 A 股 / 港股 / 华语习惯,默认)\n * - green-up: 绿涨红跌 / 红跌绿涨(国际美股 / 加密通用习惯)\n */\nimport { createObservable, readJson, writeJson, type WritableObservable } from './store.ts'\n\nexport type ColorMode = 'red-up' | 'green-up'\n\nexport const COLOR_MODE_KEY = 'dshtrading.color_mode.v1'\n\nexport interface ColorPalette {\n readonly mode: ColorMode\n readonly upColor: string\n readonly downColor: string\n readonly flatColor: string\n readonly upBg: string\n readonly downBg: string\n upAlpha(opacity?: number): string\n downAlpha(opacity?: number): string\n}\n\nexport const PALETTES: Record<ColorMode, ColorPalette> = {\n 'red-up': {\n mode: 'red-up',\n upColor: '#e64545',\n downColor: '#2ba471',\n flatColor: '#8a8f99',\n upBg: 'rgba(230, 69, 69, 0.12)',\n downBg: 'rgba(43, 164, 113, 0.12)',\n upAlpha: (opacity = 0.55) => `rgba(230, 69, 69, ${opacity})`,\n downAlpha: (opacity = 0.55) => `rgba(43, 164, 113, ${opacity})`,\n },\n 'green-up': {\n mode: 'green-up',\n upColor: '#2ba471',\n downColor: '#e64545',\n flatColor: '#8a8f99',\n upBg: 'rgba(43, 164, 113, 0.12)',\n downBg: 'rgba(230, 69, 69, 0.12)',\n upAlpha: (opacity = 0.55) => `rgba(43, 164, 113, ${opacity})`,\n downAlpha: (opacity = 0.55) => `rgba(230, 69, 69, ${opacity})`,\n },\n}\n\nexport function getColorPalette(mode: ColorMode = 'red-up'): ColorPalette {\n return PALETTES[mode] ?? PALETTES['red-up']\n}\n\nexport function applyColorModeToRoot(mode: ColorMode): void {\n if (typeof document === 'undefined') return\n const palette = getColorPalette(mode)\n document.documentElement.style.setProperty('--dsw-futu-up', palette.upColor)\n document.documentElement.style.setProperty('--dsw-futu-down', palette.downColor)\n document.body?.setAttribute('data-dshtrading-color-mode', mode)\n}\n\nexport interface ColorModeStore extends WritableObservable<ColorMode> {\n setColorMode(mode: ColorMode): void\n}\n\nexport function createColorModeStore(): ColorModeStore {\n const initialMode = readJson<ColorMode>(COLOR_MODE_KEY, 'red-up')\n const validInitial: ColorMode = initialMode === 'green-up' ? 'green-up' : 'red-up'\n const store = createObservable<ColorMode>(validInitial)\n\n applyColorModeToRoot(validInitial)\n\n function applyExternalChange(mode: ColorMode): void {\n if (mode !== 'red-up' && mode !== 'green-up') return\n store.set(mode)\n applyColorModeToRoot(mode)\n }\n\n if (typeof window !== 'undefined') {\n // 跨窗口/Tab 存储同步\n window.addEventListener('storage', (event) => {\n if (event.key === COLOR_MODE_KEY && event.newValue) {\n try {\n applyExternalChange(JSON.parse(event.newValue) as ColorMode)\n } catch {\n // ignore\n }\n }\n })\n // 同窗口跨包同步:settings 包写 localStorage 后 dispatch 此事件。\n window.addEventListener('dshtrading-color-mode-changed', () => {\n const current = readJson<ColorMode>(COLOR_MODE_KEY, 'red-up')\n applyExternalChange(current)\n })\n }\n\n return {\n ...store,\n setColorMode(mode: ColorMode) {\n store.set(mode)\n writeJson(COLOR_MODE_KEY, mode)\n applyColorModeToRoot(mode)\n },\n }\n}\n\n/** 全局单例配色 store */\nexport const colorModeStore: ColorModeStore = createColorModeStore()\n","import { getColorPalette, type ColorMode } from './color-mode.ts'\n\n/** Default red-up constants for backward compatibility. */\nexport const UP_COLOR = '#e64545'\nexport const DOWN_COLOR = '#2ba471'\nexport const FLAT_COLOR = '#8a8f99'\n\nexport function directionColor(value: number, mode: ColorMode = 'red-up'): string {\n const palette = getColorPalette(mode)\n if (value > 0) return palette.upColor\n if (value < 0) return palette.downColor\n return palette.flatColor\n}\n\n/** Price decimals by magnitude (crypto sub-dollar pairs need more precision). */\nexport function priceDigits(value: number | undefined): number {\n if (value === undefined || !Number.isFinite(value)) return 2\n const abs = Math.abs(value)\n if (abs >= 1000) return 2\n if (abs >= 1) return 2\n if (abs >= 0.01) return 4\n return 6\n}\n\nexport function fmtPrice(value: number | undefined): string {\n if (value === undefined || !Number.isFinite(value)) return '—'\n return value.toFixed(priceDigits(value))\n}\n\n/** Signed percent string: +1.74% / -0.83% / 0.00%. */\nexport function fmtPercent(value: number | undefined): string {\n if (value === undefined || !Number.isFinite(value)) return '—'\n const sign = value > 0 ? '+' : ''\n return `${sign}${value.toFixed(2)}%`\n}\n\n/** Signed absolute change string. */\nexport function fmtChange(value: number | undefined): string {\n if (value === undefined || !Number.isFinite(value)) return '—'\n const sign = value > 0 ? '+' : '-'\n return `${sign}${fmtPrice(Math.abs(value))}`\n}\n\n/** Compact volume locale: zh = 万/亿 (Chinese convention), en = K/M/B. */\nexport type CompactLocale = 'zh' | 'en'\n\n/** Active locale id → compact-unit locale(未知 id 回落 zh,与现网中文口径一致)。 */\nexport function compactLocaleOf(localeId: string): CompactLocale {\n return localeId.toLowerCase().startsWith('zh') ? 'zh' : 'en'\n}\n\n/**\n * 词典哨兵键(dshtrading.market 'fundamentals.scale')→ 数值单位 locale。\n * t 不携带 active locale 元数据,UI 层从词典值判定(zh 值固定 '万',en 固定 'B');\n * 该键只作哨兵,不在 UI 渲染。两个哨兵值都识别(评审 L2:只认 '万' 时,词典\n * 改词/键位 miss 返回 key 本身会把 zh 静默翻成 en 单位);未知值告警并回落 en\n * (B/M/K 是国际默认,对 zh 用户是可读降级)。\n */\nexport function scaleLocaleOf(t: (key: 'fundamentals.scale', params?: Record<string, unknown>) => string): CompactLocale {\n const value = t('fundamentals.scale')\n if (value === '万') return 'zh' // i18n-allow: 哨兵值与 zh 词典字面量比对\n if (value === 'B') return 'en'\n console.warn(`[dsh-trading] unexpected fundamentals.scale sentinel: ${JSON.stringify(value)}; falling back to en units`)\n return 'en'\n}\n\n/** Compact volume (locale-aware units, matching the reference UI). */\nexport function fmtCompact(value: number | undefined, locale: CompactLocale = 'zh'): string {\n if (value === undefined || !Number.isFinite(value)) return '—'\n const abs = Math.abs(value)\n if (locale === 'zh') {\n if (abs >= 1e8) return `${trimZeros((value / 1e8).toFixed(2))}亿` // i18n-allow: zh 数值单位常量(locale 数据)\n if (abs >= 1e4) return `${trimZeros((value / 1e4).toFixed(2))}万` // i18n-allow: zh 数值单位常量(locale 数据)\n if (abs >= 1000) return `${trimZeros((value / 1000).toFixed(2))}K`\n return trimZeros(value.toFixed(2))\n }\n if (abs >= 1e9) return `${trimZeros((value / 1e9).toFixed(2))}B`\n if (abs >= 1e6) return `${trimZeros((value / 1e6).toFixed(2))}M`\n if (abs >= 1e3) return `${trimZeros((value / 1e3).toFixed(2))}K`\n return trimZeros(value.toFixed(2))\n}\n\nfunction trimZeros(text: string): string {\n return text.includes('.') ? text.replace(/\\.?0+$/, '') : text\n}\n\n/** HH:mm:ss for quote timestamps. */\nexport function fmtClock(ms: number): string {\n const date = new Date(ms)\n const pad = (n: number): string => String(n).padStart(2, '0')\n return `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`\n}\n\n/** MM-DD for daily chart axis; HH:mm for intraday. */\nexport function fmtAxis(ms: number, intraday: boolean): string {\n const date = new Date(ms)\n const pad = (n: number): string => String(n).padStart(2, '0')\n if (intraday) return `${pad(date.getHours())}:${pad(date.getMinutes())}`\n return `${pad(date.getMonth() + 1)}-${pad(date.getDate())}`\n}\n\nexport const INTRADAY_INTERVALS: ReadonlySet<string> = new Set(['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h'])\n\n/** 资金费率结算倒计时(issue #54):>1h 显示 \"7h 32m\",<1h 显示 \"32m 10s\";过期返回 undefined。 */\nexport function fmtCountdown(targetMs: number | undefined, nowMs: number): string | undefined {\n if (targetMs === undefined || !Number.isFinite(targetMs)) return undefined\n const remain = targetMs - nowMs\n if (remain <= 0) return undefined\n const totalSec = Math.floor(remain / 1000)\n const h = Math.floor(totalSec / 3600)\n const m = Math.floor((totalSec % 3600) / 60)\n const s = totalSec % 60\n const pad = (n: number): string => String(n).padStart(2, '0')\n return h > 0 ? `${h}h ${pad(m)}m` : `${pad(m)}m ${pad(s)}s`\n}\n\n/** 资金费率百分比(小数 → 4 位百分比字符串,如 0.0001 → \"0.0100%\")。 */\nexport function fmtFundingRate(rate: number | undefined): string {\n if (rate === undefined || !Number.isFinite(rate)) return '—'\n return `${(rate * 100).toFixed(4)}%`\n}\n\n/**\n * Change percent vs a reference close: (price - ref) / ref * 100.\n * Undefined when the reference is unusable (missing/non-positive).\n */\nexport function changePercent(price: number | undefined, reference: number | undefined): number | undefined {\n if (price === undefined || reference === undefined) return undefined\n if (!Number.isFinite(price) || !Number.isFinite(reference) || reference === 0) return undefined\n return (price - reference) / reference * 100\n}\n","/**\n * Watchlist mini sparkline: normalized polyline + gradient area fill,\n * Futu-style. Pure SVG, no interaction surface (the row is the hit target).\n */\nimport { useId } from 'react'\nimport { getColorPalette, type ColorMode } from './color-mode.ts'\n\nexport function Sparkline(props: {\n values: readonly number[]\n width: number\n height: number\n up: boolean\n colorMode?: ColorMode\n}): React.JSX.Element {\n const { values, width, height, up, colorMode } = props\n const gradientId = useId()\n\n if (values.length < 2) {\n return <svg width={width} height={height} aria-hidden=\"true\" />\n }\n\n let min = values[0] as number\n let max = values[0] as number\n for (const value of values) {\n if (value < min) min = value\n if (value > max) max = value\n }\n\n const span = max - min\n const step = width / (values.length - 1)\n const pts = values.map((value, index) => {\n const x = index * step\n const y = span === 0 ? height / 2 : (1 - (value - min) / span) * (height - 4) + 2\n return [x, y] as const\n })\n\n const strokePoints = pts.map(([x, y]) => `${x.toFixed(2)},${y.toFixed(2)}`).join(' ')\n const areaPath = `M 0,${height} L ${pts.map(([x, y]) => `${x.toFixed(2)},${y.toFixed(2)}`).join(' L ')} L ${width},${height} Z`\n\n const palette = getColorPalette(colorMode)\n const strokeColor = span === 0 ? palette.flatColor : up ? palette.upColor : palette.downColor\n const gradColor = span === 0 ? 'rgba(138, 143, 153, 0.2)' : up ? palette.upAlpha(0.25) : palette.downAlpha(0.25)\n\n return (\n <svg width={width} height={height} aria-hidden=\"true\" style={{ overflow: 'visible', display: 'block' }}>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={gradColor} stopOpacity=\"1\" />\n <stop offset=\"100%\" stopColor={gradColor} stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n <path d={areaPath} fill={`url(#${gradientId})`} />\n <polyline points={strokePoints} fill=\"none\" stroke={strokeColor} strokeWidth={1.3} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )\n}\n","/**\n * 内联矢量图标:与宿主 outline 风格及富途牛牛紧凑图标保持一致。\n */\nimport type { ReactElement } from 'react'\n\nexport function IconNewSession({ size = 16 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"8\" cy=\"8\" r=\"6.25\" />\n <path d=\"M8 5.4v5.2M5.4 8h5.2\" />\n </svg>\n )\n}\n\nexport function IconSettings({ size = 16 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 24 24\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.7\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )\n}\n\n/** 面板折叠/展开(左栏 panel 图标)。 */\nexport function IconFoldPanel({ size = 16 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"2\" y=\"2.75\" width=\"12\" height=\"10.5\" rx=\"2\" />\n <path d=\"M6.25 2.75v10.5\" />\n <path d=\"M10.75 6.25 9 8l1.75 1.75\" />\n </svg>\n )\n}\n\n/** 技术指标入口(坐标轴 + 折线)。 */\nexport function IconIndicators({ size = 16 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M2.75 2.75v10.5h10.5\" />\n <path d=\"M5.25 9.5 7.5 6.75l2.25 1.75 2.75-3.5\" />\n </svg>\n )\n}\n\n/** 发给 Agent(纸飞机)。 */\nexport function IconSend({ size = 16 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M13.75 2.25 7 9M13.75 2.25 9.5 13.75 7 9 2.25 6.5z\" />\n </svg>\n )\n}\n\n/** 自选列表图标(富途左栏图标)。 */\nexport function IconWatchlist({ size = 16 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M3 4h10M3 8h10M3 12h10\" />\n <circle cx=\"1.5\" cy=\"4\" r=\"0.75\" fill=\"currentColor\" />\n <circle cx=\"1.5\" cy=\"8\" r=\"0.75\" fill=\"currentColor\" />\n <circle cx=\"1.5\" cy=\"12\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n )\n}\n\n/** 行情柱/图表图标。 */\nexport function IconQuotes({ size = 16 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M3 13V7M7 13V3M11 13V9M15 13V5\" />\n </svg>\n )\n}\n\n/** 放大镜搜索图标。 */\nexport function IconSearch({ size = 14 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"6.5\" cy=\"6.5\" r=\"4.5\" />\n <path d=\"M10 10l3.5 3.5\" />\n </svg>\n )\n}\n\n/** 下拉小箭头图标。 */\nexport function IconChevronDown({ size = 12 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n )\n}\n\n/** 策略回测图表/仪表盘图标。 */\nexport function IconStrategy({ size = 32 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 24 24\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"3\" />\n <path d=\"M7 16l3.5-4.5 3 3L17 9\" />\n <circle cx=\"17\" cy=\"9\" r=\"1.2\" fill=\"currentColor\" />\n </svg>\n )\n}\n\n/** 行尾「更多操作」按钮(三个点)。 */\nexport function IconMore({ size = 14 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"currentColor\">\n <circle cx=\"3.5\" cy=\"8\" r=\"1.3\" />\n <circle cx=\"8\" cy=\"8\" r=\"1.3\" />\n <circle cx=\"12.5\" cy=\"8\" r=\"1.3\" />\n </svg>\n )\n}\n\n/** 重命名(铅笔)。 */\nexport function IconRename({ size = 14 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M11.5 2.8a1.6 1.6 0 0 1 2.26 2.26l-8.3 8.3-3.1.84.84-3.1z\" />\n <path d=\"M10.3 4.2l2.1 2.1\" />\n </svg>\n )\n}\n\n/** 分叉会话(分支)。 */\nexport function IconFork({ size = 14 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"4\" cy=\"3.5\" r=\"1.75\" />\n <circle cx=\"4\" cy=\"12.5\" r=\"1.75\" />\n <circle cx=\"12\" cy=\"5.5\" r=\"1.75\" />\n <path d=\"M4 5.25v5.5\" />\n <path d=\"M12 7.25c0 2.5-3 2.5-5.5 3.9\" />\n </svg>\n )\n}\n\n/** 归档会话(盒子+下移箭头)。 */\nexport function IconArchive({ size = 14 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"2.5\" y=\"2.75\" width=\"11\" height=\"3\" rx=\"0.75\" />\n <path d=\"M3.5 5.75v6a1.25 1.25 0 0 0 1.25 1.25h6.5a1.25 1.25 0 0 0 1.25-1.25v-6\" />\n <path d=\"M6.75 8.5h2.5\" />\n </svg>\n )\n}\n\n/** 知识图谱网络图标。 */\nexport function IconKnowledge({ size = 16 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"4\" cy=\"5\" r=\"2\" />\n <circle cx=\"12\" cy=\"5\" r=\"2\" />\n <circle cx=\"8\" cy=\"12\" r=\"2\" />\n <path d=\"M5.5 6l4.5 4.5M10.5 6l-4.5 4.5M6 5h4\" />\n </svg>\n )\n}\n","/**\n * Polling hook with tab-visibility pause: interval timers run only while the\n * document is visible (public endpoints stay gentle when the tab is parked).\n */\nimport { useEffect, useRef } from 'react'\n\nexport function usePoll(poll: (() => Promise<void> | void) | null | undefined, intervalMs: number, deps: readonly unknown[]): void {\n const pollRef = useRef(poll)\n pollRef.current = poll\n\n useEffect(() => {\n let timer: ReturnType<typeof setInterval> | undefined\n const tick = (): void => {\n if (document.visibilityState === 'visible' && typeof pollRef.current === 'function') {\n void pollRef.current()\n }\n }\n tick()\n timer = setInterval(tick, intervalMs)\n const onVisibility = (): void => {\n if (document.visibilityState === 'visible') tick()\n }\n document.addEventListener('visibilitychange', onVisibility)\n return () => {\n if (timer !== undefined) clearInterval(timer)\n document.removeEventListener('visibilitychange', onVisibility)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n}\n","/**\n * 富途式市场/自选面板(内容组件,由 MarketDock 停靠在左缘):\n * 顶部自选分组与折叠按钮 + 胶囊市场页签 + 表头 + 三段式自选标的列表。\n * 点击行 = 选中标的并切到行情模式(QuotePane 消费);\n * 行内嵌迷你面积走势 + 最新价 + 涨跌幅(红涨绿跌)。行情批量轮询、页面隐藏时暂停。\n */\nimport { useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react'\nimport type { InjectFace, PropsLocale } from '@deepseek-ai/dsh-client-ui-slots'\nimport { fetchKlines, fetchMarkets, fetchSymbols, fetchTickers } from './api.ts'\nimport { searchAllMarkets, searchSymbols, setDynamicCatalog, updateDynamicCatalog } from './symbol-catalog.ts'\nimport type { MarketLocaleKey } from './contract.ts'\nimport { changePercent, directionColor, fmtPercent, fmtPrice } from './format.ts'\nimport { colorModeStore } from './color-mode.ts'\nimport { Sparkline } from './Sparkline.tsx'\nimport { IconChevronDown, IconFoldPanel } from './icons.tsx'\nimport { rowsFor, type Observable, type SelectionState, type Watchlists } from './store.ts'\nimport type { Instrument, MarketId, MarketInfo, ReferenceSeries, Ticker } from './types.ts'\nimport { usePoll } from './usePoll.ts'\nimport css from './market-sidebar.module.css'\n\nexport type MarketTab = MarketId | 'watch'\n\n/** Registration-side business face. */\nexport interface MarketSidebarInjected {\n hooks: {\n selection: Observable<SelectionState>\n watchlists: Observable<Watchlists>\n }\n /** 写路径:加入某市场自选。 */\n addInstrument(market: MarketId, instrument: Instrument): void\n /** 写路径:移除。 */\n removeInstrument(market: MarketId, symbol: string): void\n /** 写路径:选中标的(中栏 QuotePane 消费)。 */\n selectInstrument(instrument: Instrument): void\n}\n\nexport type MarketSidebarProps =\n PropsLocale<'dshtrading.market'>\n & InjectFace<MarketSidebarInjected>\n & { onFold?: () => void }\n\nconst SERIES_TTL_MS = 10 * 60 * 1000\nconst PRICE_POLL_MS = 8000\nconst SPARK_INTERVAL = '1d'\nconst SPARK_LIMIT = 32\n\nconst TAB_KEY: Record<MarketId, MarketLocaleKey> = {\n crypto: 'tab.crypto',\n us: 'tab.us',\n cn: 'tab.cn',\n hk: 'tab.hk',\n}\n\n/** 标的行键(market:symbol)。 */\nexport function rowKey(market: string, symbol: string): string {\n return `${market}:${symbol}`\n}\n\nexport function MarketSidebar({\n t, useSelection, useWatchlists, addInstrument, removeInstrument, selectInstrument, onFold,\n}: MarketSidebarProps) {\n const selection = useSelection(value => value.instrument)\n const watchlists = useWatchlists(value => value)\n const [tab, setTab] = useState<MarketTab>('watch')\n const [markets, setMarkets] = useState<MarketInfo[] | null>(null)\n const [loadError, setLoadError] = useState(false)\n const [prices, setPrices] = useState<Record<string, Ticker>>({})\n const [series, setSeries] = useState<Record<string, ReferenceSeries>>({})\n const [draft, setDraft] = useState('')\n const [addMarket, setAddMarket] = useState<MarketId>('crypto')\n const [catalogVersion, setCatalogVersion] = useState(0)\n const colorMode = useSyncExternalStore(colorModeStore.subscribe, colorModeStore.getSnapshot)\n\n const reloadMarkets = useRef((): void => {})\n reloadMarkets.current = () => {\n fetchMarkets()\n .then((infos) => { setMarkets(infos); setLoadError(false) })\n .catch(() => { setLoadError(true) })\n }\n useEffect(() => { reloadMarkets.current() }, [])\n\n // 动态标的全集预取(Issue #15):切页签或挂载时触发,成功后注入 catalog 并刷新联想\n useEffect(() => {\n const targetMarkets: MarketId[] = tab === 'watch' ? ['crypto', 'us', 'cn', 'hk'] : [tab]\n let cancelled = false\n for (const m of targetMarkets) {\n fetchSymbols(m)\n .then((symbols) => {\n if (cancelled || symbols.length === 0) return\n setDynamicCatalog(m, symbols)\n setCatalogVersion((v) => v + 1)\n })\n .catch(() => { /* 桥不可用/无全集静默回退纯静态 */ })\n }\n return () => { cancelled = true }\n }, [tab])\n\n const availableMarkets = markets ?? []\n const rows = useMemo(() => {\n if (tab === 'watch') {\n const all: Instrument[] = []\n for (const info of availableMarkets) all.push(...rowsFor(watchlists, info.id))\n return all\n }\n return rowsFor(watchlists, tab)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tab, markets, watchlists])\n\n const rowsKey = rows.map(row => rowKey(row.market, row.symbol)).join('|')\n\n // 联想候选:自选页签跨市场全局搜索(候选自带市场);市场页签只搜本市场字典(显式注入当前市场)。\n const suggestions = useMemo(\n () => (tab === 'watch' ? searchAllMarkets(draft) : searchSymbols(tab, draft).map(entry => ({ ...entry, market: tab }))),\n [tab, draft, catalogVersion],\n )\n\n // 真实在线联想:当用户输入关键词时,防抖向上游真实检索标的\n // 只有上游确认真实存在的股票才会被注入动态字典,彻底杜绝本地盲目推造虚假代码\n useEffect(() => {\n const raw = draft.trim()\n if (raw.length < 2) return\n\n let cancelled = false\n const timer = setTimeout(() => {\n const targetMarkets: MarketId[] = tab === 'watch' ? ['cn', 'hk', 'us', 'crypto'] : [tab]\n for (const m of targetMarkets) {\n fetchSymbols(m, raw)\n .then((items) => {\n if (cancelled || items.length === 0) return\n const valid = items.filter(it => it.symbol && it.name && !/\\(A股\\)|\\(港股\\)/.test(it.name)) // i18n-allow: 数据源占位名匹配谓词,非 UI 文案\n if (valid.length > 0) {\n updateDynamicCatalog(m, valid)\n setCatalogVersion(v => v + 1)\n }\n })\n .catch(() => {})\n }\n }, 200)\n\n return () => {\n cancelled = true\n clearTimeout(timer)\n }\n }, [draft, tab])\n\n // 参考序列(日K收盘 → 迷你走势 + 昨收):逐标的惰性拉一次,TTL 内复用。\n useEffect(() => {\n if (rows.length === 0) return\n let cancelled = false\n const now = Date.now()\n for (const row of rows) {\n const key = rowKey(row.market, row.symbol)\n const cached = series[key]\n if (cached !== undefined && now - cached.fetchedAt < SERIES_TTL_MS) continue\n fetchKlines(row.market, row.symbol, SPARK_INTERVAL, SPARK_LIMIT)\n .then((klines) => {\n if (cancelled) return\n setSeries((current) => ({\n ...current,\n [key]: {\n closes: klines.map(candle => candle.close),\n prevClose: klines.length >= 2 ? klines[klines.length - 2]?.close : undefined,\n fetchedAt: Date.now(),\n },\n }))\n })\n .catch(() => { /* 序列失败不影响报价行 */ })\n }\n return () => { cancelled = true }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rowsKey])\n\n // 最新价批量轮询:按市场分组,每市场每拍一次请求,并自动回填标的真实中文名称。\n usePoll(async () => {\n if (rows.length === 0) return\n const byMarket = new Map<MarketId, string[]>()\n for (const row of rows) {\n const list = byMarket.get(row.market) ?? []\n list.push(row.symbol)\n byMarket.set(row.market, list)\n }\n const next: Record<string, Ticker> = {}\n const dynamicUpdates: Map<MarketId, Array<{ symbol: string; name: string }>> = new Map()\n\n await Promise.all([...byMarket.entries()].map(async ([market, symbols]) => {\n try {\n const outcome = await fetchTickers(market, symbols)\n for (const [symbol, result] of Object.entries(outcome)) {\n if (result.ok) {\n next[rowKey(market, symbol)] = result.ticker\n if (result.ticker.name && result.ticker.name !== symbol && !/\\(A股\\)|\\(港股\\)/.test(result.ticker.name)) { // i18n-allow: 数据源占位名匹配谓词(\"xx (A股)\"),非 UI 文案\n const list = dynamicUpdates.get(market) ?? []\n list.push({ symbol, name: result.ticker.name })\n dynamicUpdates.set(market, list)\n\n // 若自选列表中此标的名字为空或为占位符,自动更新自选名称\n const existingRow = rows.find((r) => r.market === market && r.symbol === symbol)\n if (existingRow && (!existingRow.name || existingRow.name === symbol || /\\(A股\\)|\\(港股\\)/.test(existingRow.name))) { // i18n-allow: 数据源占位名匹配谓词(\"xx (A股)\"),非 UI 文案\n addInstrument(market, { market, symbol, name: result.ticker.name })\n }\n }\n }\n }\n } catch { /* 桥暂不可用,下轮再试 */ }\n }))\n\n if (Object.keys(next).length > 0) setPrices(current => ({ ...current, ...next }))\n\n if (dynamicUpdates.size > 0) {\n for (const [m, entries] of dynamicUpdates.entries()) {\n updateDynamicCatalog(m, entries)\n }\n setCatalogVersion((v) => v + 1)\n }\n }, PRICE_POLL_MS, [rowsKey])\n\n const tabs: { id: MarketTab; label: string }[] = [\n { id: 'watch', label: t('tab.watch') },\n ...availableMarkets.map(info => ({ id: info.id as MarketTab, label: t(TAB_KEY[info.id]) })),\n ]\n\n return (\n <div className={css.root} data-dshtrading-market-sidebar=\"\">\n {/* 顶部标题区:自选下拉组 + 折叠按钮 */}\n <div className={css.topBar}>\n <div className={css.titleGroup} title={t('tab.watch')}>\n <span>{t('tab.watch')}</span>\n <IconChevronDown size={12} />\n </div>\n {onFold !== undefined && (\n <button\n type=\"button\"\n className={css.foldBtn}\n aria-label={t('sidebar.fold')}\n title={t('sidebar.fold')}\n onClick={onFold}\n >\n <IconFoldPanel size={15} />\n </button>\n )}\n </div>\n\n {/* 市场胶囊 Tab 条 */}\n <div className={css.tabs} role=\"tablist\" aria-label={t('sidebar.markets')}>\n {tabs.map(entry => (\n <button\n key={entry.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={entry.id === tab}\n className={css.tab}\n data-active={entry.id === tab ? 'true' : undefined}\n onClick={() => { setTab(entry.id); setDraft('') }}\n >\n {entry.label}\n </button>\n ))}\n </div>\n\n {loadError && (\n <div className={css.error}>\n <div>{t('sidebar.loadFailed')}</div>\n <button type=\"button\" onClick={() => { reloadMarkets.current() }}>{t('sidebar.retry')}</button>\n </div>\n )}\n\n {/* 添加标的表单 */}\n {(() => {\n const target: MarketId | null = tab === 'watch' ? addMarket : tab\n if (target === null) return null\n return (\n <form className={css.addRow} onSubmit={(event) => {\n event.preventDefault()\n const raw = draft.trim().toUpperCase()\n if (raw === '') return\n const match = suggestions.find(s => s.symbol.toUpperCase() === raw || s.symbol.toUpperCase().startsWith(raw))\n const symbol = match ? match.symbol : (\n target === 'cn' && /^\\d{6}$/.test(raw)\n ? `${raw}.${raw.startsWith('6') || raw.startsWith('9') ? 'SH' : 'SZ'}`\n : (target === 'hk' && /^\\d{1,5}$/.test(raw) ? `${raw.padStart(5, '0')}.HK` : raw)\n )\n const name = match?.name\n const market = match?.market ?? target\n const item: Instrument = { market, symbol, ...(name ? { name } : {}) }\n addInstrument(market, item)\n selectInstrument(item)\n if (tab !== 'watch' && tab !== market) {\n setTab(market)\n }\n setDraft('')\n }}>\n {tab === 'watch' && (\n <button\n type=\"button\"\n className={css.addMarketToggle}\n title={t('sidebar.addMarketHint')}\n onClick={() => {\n const order: MarketId[] = ['crypto', 'us', 'cn', 'hk']\n const index = order.indexOf(addMarket)\n setAddMarket(order[(index + 1) % order.length] ?? 'crypto')\n }}\n >\n {t(TAB_KEY[addMarket])}\n </button>\n )}\n <input\n className={css.addInput}\n value={draft}\n placeholder={t('sidebar.addPlaceholder')}\n onChange={event => { setDraft(event.target.value) }}\n />\n <button className={css.addButton} type=\"submit\" disabled={draft.trim() === ''}>{t('sidebar.add')}</button>\n {suggestions.length > 0 && (\n <div className={css.suggestions} role=\"listbox\" aria-label={t('sidebar.addPlaceholder')}>\n {suggestions.map(entry => (\n <button\n key={entry.market + ':' + entry.symbol}\n type=\"button\"\n role=\"option\"\n aria-selected=\"true\"\n className={css.suggestion}\n onMouseDown={(e) => { e.preventDefault() }}\n onClick={() => {\n const item: Instrument = { market: entry.market, symbol: entry.symbol, name: entry.name }\n addInstrument(entry.market, item)\n selectInstrument(item)\n if (tab !== 'watch' && tab !== entry.market) {\n setTab(entry.market)\n }\n setDraft('')\n }}\n >\n <span className={css.suggestionSymbol}>{entry.symbol}</span>\n <span className={css.suggestionName}>{entry.name}</span>\n <span className={css.suggestionMarket}>{t(TAB_KEY[entry.market])}</span>\n </button>\n ))}\n </div>\n )}\n </form>\n )\n })()}\n\n {/* 列表表头 */}\n <div className={css.listHeader}>\n <span>{t('header.symbol')}</span>\n <span className={css.listHeaderColCenter}>{t('header.trend')}</span>\n <span className={css.listHeaderColRight}>{t('header.priceChange')}</span>\n </div>\n\n {/* 三段式标的列表 */}\n {rows.length === 0 && !loadError\n ? (\n <div className={css.empty}>\n {tab === 'watch' ? t('sidebar.emptyHint') : t('sidebar.empty')}\n </div>\n )\n : (\n <div className={css.list} role=\"listbox\" aria-label={t('sidebar.markets')}>\n {rows.map((row) => {\n const key = rowKey(row.market, row.symbol)\n const ticker = prices[key]\n const ref = series[key]\n const price = ticker?.price\n // 涨跌幅昨收优先用快照官方锚点;日 K 推算仅作快照缺 prevClose 时的兜底\n // (日 K 序列可能缺最新收盘 bar,倒数第二根会错位一个交易日)。\n const pct = changePercent(price, ticker?.prevClose ?? ref?.prevClose)\n const up = (pct ?? 0) >= 0\n const selected = selection !== null && selection.market === row.market && selection.symbol === row.symbol\n return (\n <button\n key={key}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n className={css.row}\n data-selected={selected ? 'true' : undefined}\n title={t('row.select')}\n onClick={() => { selectInstrument(row) }}\n >\n <span className={css.idents}>\n <span className={css.name}>\n {(() => {\n const rowRaw = row.name\n const isPlaceholder = !rowRaw || rowRaw === row.symbol || /\\(A股\\)|\\(港股\\)/.test(rowRaw) // i18n-allow: 数据源占位名匹配谓词(\"xx (A股)\"),非 UI 文案\n const tickName = (ticker as { name?: string })?.name\n return !isPlaceholder ? rowRaw : (tickName || rowRaw || row.symbol)\n })()}\n </span>\n <span className={css.codeRow}>\n <span className={css.code}>{row.symbol}</span>\n {tab === 'watch' && <span className={css.marketTag}>{t(TAB_KEY[row.market])}</span>}\n </span>\n </span>\n <span className={css.spark}>\n <Sparkline values={ref?.closes ?? []} width={56} height={22} up={up} colorMode={colorMode} />\n </span>\n <span className={css.quote}>\n <span className={css.price} style={{ color: directionColor(pct ?? 0, colorMode) }}>{fmtPrice(price)}</span>\n <span className={css.pct} style={{ color: directionColor(pct ?? 0, colorMode) }}>{fmtPercent(pct)}</span>\n </span>\n <span\n role=\"button\"\n aria-label={t('row.remove')}\n className={css.remove}\n onClick={(event) => {\n event.stopPropagation()\n removeInstrument(row.market, row.symbol)\n }}\n >\n ✕\n </span>\n </button>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n","/**\n * 左侧自选停靠面板(shell.overlay 条目):固定停靠在视口左缘,承载 MarketSidebar。\n *\n * 富途式双栏折叠:支持展开(272px 完整面板)与折叠(44px 超窄图标竖条)。\n * 工具详情列打开时测量其矩形自动右移避让。\n */\nimport { useEffect, useState } from 'react'\nimport type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport { MarketSidebar } from './MarketSidebar.tsx'\nimport type { FoldStore } from './fold-store.ts'\nimport { IconFoldPanel, IconQuotes, IconWatchlist } from './icons.tsx'\nimport type { Observable, SelectionState, Watchlists } from './store.ts'\nimport type { Instrument, MarketId } from './types.ts'\nimport css from './market-dock.module.css'\n\nexport interface MarketDockInjected {\n hooks: {\n selection: Observable<SelectionState>\n watchlists: Observable<Watchlists>\n marketFolded: FoldStore\n }\n addInstrument(market: MarketId, instrument: Instrument): void\n removeInstrument(market: MarketId, symbol: string): void\n selectInstrument(instrument: Instrument): void\n toggleFold(): void\n}\n\nexport type MarketDockProps =\n PropsRuntime<'shell.overlay'>\n & PropsLocale<'dshtrading.market'>\n & InjectFace<MarketDockInjected>\n\nexport function MarketDock(props: MarketDockProps) {\n const { t, useMarketFolded, toggleFold } = props\n const folded = useMarketFolded(value => value)\n const [left, setLeft] = useState(0)\n\n useEffect(() => {\n document.body.dataset.dshtradingMarketFolded = folded ? 'on' : 'off'\n return () => { delete document.body.dataset.dshtradingMarketFolded }\n }, [folded])\n\n // 工具详情列(rtl 后落在左侧轨道,frame 第 3 个子元素)打开时避让。\n useEffect(() => {\n let raf = 0\n const measure = (): void => {\n const frame = document.querySelector('div:has(> [data-shell-overlay])')\n const details = frame?.children[2]\n if (details !== undefined && details !== null) {\n const rect = details.getBoundingClientRect()\n setLeft(Math.max(0, rect.right))\n } else {\n setLeft(0)\n }\n }\n measure()\n const observer = new ResizeObserver(() => {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(measure)\n })\n const frame = document.querySelector('div:has(> [data-shell-overlay])')\n if (frame !== null) {\n for (const child of Array.from(frame.children)) observer.observe(child)\n observer.observe(frame)\n }\n window.addEventListener('resize', measure)\n return () => {\n observer.disconnect()\n window.removeEventListener('resize', measure)\n cancelAnimationFrame(raf)\n }\n }, [])\n\n return (\n <div\n className={css.dock}\n data-dshtrading-market-dock=\"\"\n data-folded={folded ? 'true' : undefined}\n style={{ left }}\n >\n {folded ? (\n <div className={css.rail} role=\"toolbar\" aria-orientation=\"vertical\">\n <button\n type=\"button\"\n className={css.railButton}\n aria-label={t('sidebar.expand')}\n title={t('sidebar.expand')}\n onClick={toggleFold}\n >\n <IconFoldPanel size={16} />\n </button>\n <button\n type=\"button\"\n className={css.railButton}\n aria-label={t('tab.watch')}\n title={t('tab.watch')}\n data-active=\"true\"\n onClick={toggleFold}\n >\n <IconWatchlist size={16} />\n </button>\n <div className={css.railDivider} aria-hidden=\"true\" />\n <button\n type=\"button\"\n className={css.railButton}\n aria-label={t('stage.quote')}\n title={t('stage.quote')}\n onClick={toggleFold}\n >\n <IconQuotes size={16} />\n </button>\n </div>\n ) : (\n <MarketSidebar\n {...(props as unknown as import('./MarketSidebar.tsx').MarketSidebarProps)}\n onFold={toggleFold}\n />\n )}\n </div>\n )\n}\n","export function size(_a) {\n var width = _a.width, height = _a.height;\n if (width < 0) {\n throw new Error('Negative width is not allowed for Size');\n }\n if (height < 0) {\n throw new Error('Negative height is not allowed for Size');\n }\n return {\n width: width,\n height: height,\n };\n}\nexport function equalSizes(first, second) {\n return (first.width === second.width) &&\n (first.height === second.height);\n}\n","var Observable = /** @class */ (function () {\n function Observable(win) {\n var _this = this;\n this._resolutionListener = function () { return _this._onResolutionChanged(); };\n this._resolutionMediaQueryList = null;\n this._observers = [];\n this._window = win;\n this._installResolutionListener();\n }\n Observable.prototype.dispose = function () {\n this._uninstallResolutionListener();\n this._window = null;\n };\n Object.defineProperty(Observable.prototype, \"value\", {\n get: function () {\n return this._window.devicePixelRatio;\n },\n enumerable: false,\n configurable: true\n });\n Observable.prototype.subscribe = function (next) {\n var _this = this;\n var observer = { next: next };\n this._observers.push(observer);\n return {\n unsubscribe: function () {\n _this._observers = _this._observers.filter(function (o) { return o !== observer; });\n },\n };\n };\n Observable.prototype._installResolutionListener = function () {\n if (this._resolutionMediaQueryList !== null) {\n throw new Error('Resolution listener is already installed');\n }\n var dppx = this._window.devicePixelRatio;\n this._resolutionMediaQueryList = this._window.matchMedia(\"all and (resolution: \".concat(dppx, \"dppx)\"));\n // IE and some versions of Edge do not support addEventListener/removeEventListener, and we are going to use the deprecated addListener/removeListener\n this._resolutionMediaQueryList.addListener(this._resolutionListener);\n };\n Observable.prototype._uninstallResolutionListener = function () {\n if (this._resolutionMediaQueryList !== null) {\n // IE and some versions of Edge do not support addEventListener/removeEventListener, and we are going to use the deprecated addListener/removeListener\n this._resolutionMediaQueryList.removeListener(this._resolutionListener);\n this._resolutionMediaQueryList = null;\n }\n };\n Observable.prototype._reinstallResolutionListener = function () {\n this._uninstallResolutionListener();\n this._installResolutionListener();\n };\n Observable.prototype._onResolutionChanged = function () {\n var _this = this;\n this._observers.forEach(function (observer) { return observer.next(_this._window.devicePixelRatio); });\n this._reinstallResolutionListener();\n };\n return Observable;\n}());\nexport function createObservable(win) {\n return new Observable(win);\n}\n","import { equalSizes, size } from \"./size.mjs\";\nimport { createObservable as createDevicePixelRatioObservable } from \"./device-pixel-ratio.mjs\";\nvar DevicePixelContentBoxBinding = /** @class */ (function () {\n function DevicePixelContentBoxBinding(canvasElement, transformBitmapSize, options) {\n var _a;\n this._canvasElement = null;\n this._bitmapSizeChangedListeners = [];\n this._suggestedBitmapSize = null;\n this._suggestedBitmapSizeChangedListeners = [];\n // devicePixelRatio approach\n this._devicePixelRatioObservable = null;\n // ResizeObserver approach\n this._canvasElementResizeObserver = null;\n this._canvasElement = canvasElement;\n this._canvasElementClientSize = size({\n width: this._canvasElement.clientWidth,\n height: this._canvasElement.clientHeight,\n });\n this._transformBitmapSize = transformBitmapSize !== null && transformBitmapSize !== void 0 ? transformBitmapSize : (function (size) { return size; });\n this._allowResizeObserver = (_a = options === null || options === void 0 ? void 0 : options.allowResizeObserver) !== null && _a !== void 0 ? _a : true;\n this._chooseAndInitObserver();\n // we MAY leave the constuctor without any bitmap size observation mechanics initialized\n }\n DevicePixelContentBoxBinding.prototype.dispose = function () {\n var _a, _b;\n if (this._canvasElement === null) {\n throw new Error('Object is disposed');\n }\n (_a = this._canvasElementResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n this._canvasElementResizeObserver = null;\n (_b = this._devicePixelRatioObservable) === null || _b === void 0 ? void 0 : _b.dispose();\n this._devicePixelRatioObservable = null;\n this._suggestedBitmapSizeChangedListeners.length = 0;\n this._bitmapSizeChangedListeners.length = 0;\n this._canvasElement = null;\n };\n Object.defineProperty(DevicePixelContentBoxBinding.prototype, \"canvasElement\", {\n get: function () {\n if (this._canvasElement === null) {\n throw new Error('Object is disposed');\n }\n return this._canvasElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DevicePixelContentBoxBinding.prototype, \"canvasElementClientSize\", {\n get: function () {\n return this._canvasElementClientSize;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DevicePixelContentBoxBinding.prototype, \"bitmapSize\", {\n get: function () {\n return size({\n width: this.canvasElement.width,\n height: this.canvasElement.height,\n });\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Use this function to change canvas element client size until binding is disposed\n * @param clientSize New client size for bound HTMLCanvasElement\n */\n DevicePixelContentBoxBinding.prototype.resizeCanvasElement = function (clientSize) {\n this._canvasElementClientSize = size(clientSize);\n this.canvasElement.style.width = \"\".concat(this._canvasElementClientSize.width, \"px\");\n this.canvasElement.style.height = \"\".concat(this._canvasElementClientSize.height, \"px\");\n this._invalidateBitmapSize();\n };\n DevicePixelContentBoxBinding.prototype.subscribeBitmapSizeChanged = function (listener) {\n this._bitmapSizeChangedListeners.push(listener);\n };\n DevicePixelContentBoxBinding.prototype.unsubscribeBitmapSizeChanged = function (listener) {\n this._bitmapSizeChangedListeners = this._bitmapSizeChangedListeners.filter(function (l) { return l !== listener; });\n };\n Object.defineProperty(DevicePixelContentBoxBinding.prototype, \"suggestedBitmapSize\", {\n get: function () {\n return this._suggestedBitmapSize;\n },\n enumerable: false,\n configurable: true\n });\n DevicePixelContentBoxBinding.prototype.subscribeSuggestedBitmapSizeChanged = function (listener) {\n this._suggestedBitmapSizeChangedListeners.push(listener);\n };\n DevicePixelContentBoxBinding.prototype.unsubscribeSuggestedBitmapSizeChanged = function (listener) {\n this._suggestedBitmapSizeChangedListeners = this._suggestedBitmapSizeChangedListeners.filter(function (l) { return l !== listener; });\n };\n DevicePixelContentBoxBinding.prototype.applySuggestedBitmapSize = function () {\n if (this._suggestedBitmapSize === null) {\n // nothing to apply\n return;\n }\n var oldSuggestedSize = this._suggestedBitmapSize;\n this._suggestedBitmapSize = null;\n this._resizeBitmap(oldSuggestedSize);\n this._emitSuggestedBitmapSizeChanged(oldSuggestedSize, this._suggestedBitmapSize);\n };\n DevicePixelContentBoxBinding.prototype._resizeBitmap = function (newSize) {\n var oldSize = this.bitmapSize;\n if (equalSizes(oldSize, newSize)) {\n return;\n }\n this.canvasElement.width = newSize.width;\n this.canvasElement.height = newSize.height;\n this._emitBitmapSizeChanged(oldSize, newSize);\n };\n DevicePixelContentBoxBinding.prototype._emitBitmapSizeChanged = function (oldSize, newSize) {\n var _this = this;\n this._bitmapSizeChangedListeners.forEach(function (listener) { return listener.call(_this, oldSize, newSize); });\n };\n DevicePixelContentBoxBinding.prototype._suggestNewBitmapSize = function (newSize) {\n var oldSuggestedSize = this._suggestedBitmapSize;\n var finalNewSize = size(this._transformBitmapSize(newSize, this._canvasElementClientSize));\n var newSuggestedSize = equalSizes(this.bitmapSize, finalNewSize) ? null : finalNewSize;\n if (oldSuggestedSize === null && newSuggestedSize === null) {\n return;\n }\n if (oldSuggestedSize !== null && newSuggestedSize !== null\n && equalSizes(oldSuggestedSize, newSuggestedSize)) {\n return;\n }\n this._suggestedBitmapSize = newSuggestedSize;\n this._emitSuggestedBitmapSizeChanged(oldSuggestedSize, newSuggestedSize);\n };\n DevicePixelContentBoxBinding.prototype._emitSuggestedBitmapSizeChanged = function (oldSize, newSize) {\n var _this = this;\n this._suggestedBitmapSizeChangedListeners.forEach(function (listener) { return listener.call(_this, oldSize, newSize); });\n };\n DevicePixelContentBoxBinding.prototype._chooseAndInitObserver = function () {\n var _this = this;\n if (!this._allowResizeObserver) {\n this._initDevicePixelRatioObservable();\n return;\n }\n isDevicePixelContentBoxSupported()\n .then(function (isSupported) {\n return isSupported ?\n _this._initResizeObserver() :\n _this._initDevicePixelRatioObservable();\n });\n };\n // devicePixelRatio approach\n DevicePixelContentBoxBinding.prototype._initDevicePixelRatioObservable = function () {\n var _this = this;\n if (this._canvasElement === null) {\n // it looks like we are already dead\n return;\n }\n var win = canvasElementWindow(this._canvasElement);\n if (win === null) {\n throw new Error('No window is associated with the canvas');\n }\n this._devicePixelRatioObservable = createDevicePixelRatioObservable(win);\n this._devicePixelRatioObservable.subscribe(function () { return _this._invalidateBitmapSize(); });\n this._invalidateBitmapSize();\n };\n DevicePixelContentBoxBinding.prototype._invalidateBitmapSize = function () {\n var _a, _b;\n if (this._canvasElement === null) {\n // it looks like we are already dead\n return;\n }\n var win = canvasElementWindow(this._canvasElement);\n if (win === null) {\n return;\n }\n var ratio = (_b = (_a = this._devicePixelRatioObservable) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : win.devicePixelRatio;\n var canvasRects = this._canvasElement.getClientRects();\n var newSize = \n // eslint-disable-next-line no-negated-condition\n canvasRects[0] !== undefined ?\n predictedBitmapSize(canvasRects[0], ratio) :\n size({\n width: this._canvasElementClientSize.width * ratio,\n height: this._canvasElementClientSize.height * ratio,\n });\n this._suggestNewBitmapSize(newSize);\n };\n // ResizeObserver approach\n DevicePixelContentBoxBinding.prototype._initResizeObserver = function () {\n var _this = this;\n if (this._canvasElement === null) {\n // it looks like we are already dead\n return;\n }\n this._canvasElementResizeObserver = new ResizeObserver(function (entries) {\n var entry = entries.find(function (entry) { return entry.target === _this._canvasElement; });\n if (!entry || !entry.devicePixelContentBoxSize || !entry.devicePixelContentBoxSize[0]) {\n return;\n }\n var entrySize = entry.devicePixelContentBoxSize[0];\n var newSize = size({\n width: entrySize.inlineSize,\n height: entrySize.blockSize,\n });\n _this._suggestNewBitmapSize(newSize);\n });\n this._canvasElementResizeObserver.observe(this._canvasElement, { box: 'device-pixel-content-box' });\n };\n return DevicePixelContentBoxBinding;\n}());\nexport function bindTo(canvasElement, target) {\n if (target.type === 'device-pixel-content-box') {\n return new DevicePixelContentBoxBinding(canvasElement, target.transform, target.options);\n }\n throw new Error('Unsupported binding target');\n}\nfunction canvasElementWindow(canvasElement) {\n // According to DOM Level 2 Core specification, ownerDocument should never be null for HTMLCanvasElement\n // see https://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#node-ownerDoc\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return canvasElement.ownerDocument.defaultView;\n}\nfunction isDevicePixelContentBoxSupported() {\n return new Promise(function (resolve) {\n var ro = new ResizeObserver(function (entries) {\n resolve(entries.every(function (entry) { return 'devicePixelContentBoxSize' in entry; }));\n ro.disconnect();\n });\n ro.observe(document.body, { box: 'device-pixel-content-box' });\n })\n .catch(function () { return false; });\n}\nfunction predictedBitmapSize(canvasRect, ratio) {\n return size({\n width: Math.round(canvasRect.left * ratio + canvasRect.width * ratio) -\n Math.round(canvasRect.left * ratio),\n height: Math.round(canvasRect.top * ratio + canvasRect.height * ratio) -\n Math.round(canvasRect.top * ratio),\n });\n}\n","/**\n * @experimental\n */\nvar CanvasRenderingTarget2D = /** @class */ (function () {\n function CanvasRenderingTarget2D(context, mediaSize, bitmapSize) {\n if (mediaSize.width === 0 || mediaSize.height === 0) {\n throw new TypeError('Rendering target could only be created on a media with positive width and height');\n }\n this._mediaSize = mediaSize;\n // !Number.isInteger(bitmapSize.width) || !Number.isInteger(bitmapSize.height)\n if (bitmapSize.width === 0 || bitmapSize.height === 0) {\n throw new TypeError('Rendering target could only be created using a bitmap with positive integer width and height');\n }\n this._bitmapSize = bitmapSize;\n this._context = context;\n }\n CanvasRenderingTarget2D.prototype.useMediaCoordinateSpace = function (f) {\n try {\n this._context.save();\n // do not use resetTransform to support old versions of Edge\n this._context.setTransform(1, 0, 0, 1, 0, 0);\n this._context.scale(this._horizontalPixelRatio, this._verticalPixelRatio);\n return f({\n context: this._context,\n mediaSize: this._mediaSize,\n });\n }\n finally {\n this._context.restore();\n }\n };\n CanvasRenderingTarget2D.prototype.useBitmapCoordinateSpace = function (f) {\n try {\n this._context.save();\n // do not use resetTransform to support old versions of Edge\n this._context.setTransform(1, 0, 0, 1, 0, 0);\n return f({\n context: this._context,\n mediaSize: this._mediaSize,\n bitmapSize: this._bitmapSize,\n horizontalPixelRatio: this._horizontalPixelRatio,\n verticalPixelRatio: this._verticalPixelRatio,\n });\n }\n finally {\n this._context.restore();\n }\n };\n Object.defineProperty(CanvasRenderingTarget2D.prototype, \"_horizontalPixelRatio\", {\n get: function () {\n return this._bitmapSize.width / this._mediaSize.width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CanvasRenderingTarget2D.prototype, \"_verticalPixelRatio\", {\n get: function () {\n return this._bitmapSize.height / this._mediaSize.height;\n },\n enumerable: false,\n configurable: true\n });\n return CanvasRenderingTarget2D;\n}());\nexport { CanvasRenderingTarget2D };\n/**\n * @experimental\n */\nexport function createCanvasRenderingTarget2D(binding, contextOptions) {\n var mediaSize = binding.canvasElementClientSize;\n var bitmapSize = binding.bitmapSize;\n var context = binding.canvasElement.getContext('2d', contextOptions);\n if (context === null) {\n throw new Error('Could not get 2d drawing context from bound canvas element. Has the canvas already been set to a different context mode?');\n }\n return new CanvasRenderingTarget2D(context, mediaSize, bitmapSize);\n}\n/**\n * @experimental\n */\nexport function tryCreateCanvasRenderingTarget2D(binding, contextOptions) {\n var mediaSize = binding.canvasElementClientSize;\n if (mediaSize.width === 0 || mediaSize.height === 0) {\n return null;\n }\n var bitmapSize = binding.bitmapSize;\n if (bitmapSize.width === 0 || bitmapSize.height === 0) {\n return null;\n }\n var context = binding.canvasElement.getContext('2d', contextOptions);\n if (context === null) {\n return null;\n }\n return new CanvasRenderingTarget2D(context, mediaSize, bitmapSize);\n}\n","/*!\n * @license\n * TradingView Lightweight Charts™ v5.2.1\n * Copyright (c) 2026 TradingView, Inc.\n * Licensed under Apache License 2.0 https://www.apache.org/licenses/LICENSE-2.0\n */\nimport{size as t,bindCanvasElementBitmapSizeTo as i,equalSizes as n,tryCreateCanvasRenderingTarget2D as s}from\"fancy-canvas\";const e={title:\"\",visible:!0,hitTestTolerance:3,lastValueVisible:!0,priceLineVisible:!0,priceLineSource:0,priceLineWidth:1,priceLineColor:\"\",priceLineStyle:2,baseLineVisible:!0,baseLineWidth:1,baseLineColor:\"#B2B5BE\",baseLineStyle:0,priceFormat:{type:\"price\",precision:2,minMove:.01}};var r,h;function a(t,i){const n=function(t,i){switch(t){case 0:default:return[];case 1:return[i,i];case 2:return[2*i,2*i];case 3:return[6*i,6*i];case 4:return[i,4*i]}}(i,t.lineWidth);return t.setLineDash(n),n}function l(t,i,n,s){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(n,i+e),t.lineTo(s,i+e),t.stroke()}function o(t,i){if(!t)throw new Error(\"Assertion failed\"+(i?\": \"+i:\"\"))}function _(t){if(void 0===t)throw new Error(\"Value is undefined\");return t}function u(t){if(null===t)throw new Error(\"Value is null\");return t}function c(t){return u(_(t))}!function(t){t[t.Simple=0]=\"Simple\",t[t.WithSteps=1]=\"WithSteps\",t[t.Curved=2]=\"Curved\"}(r||(r={})),function(t){t[t.Solid=0]=\"Solid\",t[t.Dotted=1]=\"Dotted\",t[t.Dashed=2]=\"Dashed\",t[t.LargeDashed=3]=\"LargeDashed\",t[t.SparseDotted=4]=\"SparseDotted\"}(h||(h={}));class d{constructor(){this.t=[]}i(t,i,n){const s={h:t,l:i,o:!0===n};this.t.push(s)}_(t){const i=this.t.findIndex((i=>t===i.h));i>-1&&this.t.splice(i,1)}u(t){this.t=this.t.filter((i=>i.l!==t))}p(t,i,n){const s=[...this.t];this.t=this.t.filter((t=>!t.o)),s.forEach((s=>s.h(t,i,n)))}v(){return this.t.length>0}m(){this.t=[]}}function f(t,...i){for(const n of i)for(const i in n)void 0!==n[i]&&Object.prototype.hasOwnProperty.call(n,i)&&![\"__proto__\",\"constructor\",\"prototype\"].includes(i)&&(\"object\"!=typeof n[i]||void 0===t[i]||Array.isArray(n[i])?t[i]=n[i]:f(t[i],n[i]));return t}function p(t){return\"number\"==typeof t&&isFinite(t)}function v(t){return\"number\"==typeof t&&t%1==0}function m(t){return\"string\"==typeof t}function w(t){return\"boolean\"==typeof t}function M(t){const i=t;if(!i||\"object\"!=typeof i)return i;let n,s,e;for(s in n=Array.isArray(i)?[]:{},i)i.hasOwnProperty(s)&&(e=i[s],n[s]=e&&\"object\"==typeof e?M(e):e);return n}function g(t){return null!==t}function b(t){return null===t?void 0:t}const S=\"-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif\";function x(t,i,n){return void 0===i&&(i=S),`${n=void 0!==n?`${n} `:\"\"}${t}px ${i}`}class C{constructor(t){this.M={S:1,C:5,P:NaN,k:\"\",T:\"\",R:\"\",D:\"\",I:0,V:0,B:0,A:0,L:0},this.O=t}N(){const t=this.M,i=this.F(),n=this.W();return t.P===i&&t.T===n||(t.P=i,t.T=n,t.k=x(i,n),t.A=2.5/12*i,t.I=t.A,t.V=i/12*t.C,t.B=i/12*t.C,t.L=0),t.R=this.H(),t.D=this.U(),this.M}H(){return this.O.N().layout.textColor}U(){return this.O.$()}F(){return this.O.N().layout.fontSize}W(){return this.O.N().layout.fontFamily}}function y(t){return t<0?0:t>255?255:Math.round(t)||0}function P(t){return.199*t[0]+.687*t[1]+.114*t[2]}class k{constructor(t,i){this.j=new Map,this.q=t,i&&(this.j=i)}Y(t,i){if(\"transparent\"===t)return t;const n=this.K(t),s=n[3];return`rgba(${n[0]}, ${n[1]}, ${n[2]}, ${i*s})`}G(t){const i=this.K(t);return{Z:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,X:P(i)>160?\"black\":\"white\"}}J(t){return P(this.K(t))}tt(t,i,n){const[s,e,r,h]=this.K(t),[a,l,o,_]=this.K(i),u=[y(s+n*(a-s)),y(e+n*(l-e)),y(r+n*(o-r)),(c=h+n*(_-h),c<=0||c>1?Math.min(Math.max(c,0),1):Math.round(1e4*c)/1e4)];var c;return`rgba(${u[0]}, ${u[1]}, ${u[2]}, ${u[3]})`}K(t){const i=this.j.get(t);if(i)return i;const n=function(t){const i=document.createElement(\"div\");i.style.display=\"none\",document.body.appendChild(i),i.style.color=t;const n=window.getComputedStyle(i).color;return document.body.removeChild(i),n}(t),s=n.match(/^rgba?\\s*\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d*\\.?\\d+))?\\)$/);if(!s){if(this.q.length)for(const i of this.q){const n=i(t);if(n)return this.j.set(t,n),n}throw new Error(`Failed to parse color: ${t}`)}const e=[parseInt(s[1],10),parseInt(s[2],10),parseInt(s[3],10),s[4]?parseFloat(s[4]):1];return this.j.set(t,e),e}}class T{constructor(){this.it=[]}nt(t){this.it=t}st(t,i,n){this.it.forEach((s=>{s.st(t,i,n)}))}}class R{st(t,i,n){t.useBitmapCoordinateSpace((t=>this.et(t,i,n)))}}class D extends R{constructor(){super(...arguments),this.rt=null}ht(t){this.rt=t}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:n}){if(null===this.rt||null===this.rt.lt)return;const s=this.rt.lt,e=this.rt,r=Math.max(1,Math.floor(i))%2/2,h=h=>{t.beginPath();for(let a=s.to-1;a>=s.from;--a){const s=e.ot[a],l=Math.round(s._t*i)+r,o=s.ut*n,_=h*n+r;t.moveTo(l,o),t.arc(l,o,_,0,2*Math.PI)}t.fill()};e.ct>0&&(t.fillStyle=e.dt,h(e.ft+e.ct)),t.fillStyle=e.vt,h(e.ft)}}function I(){return{ot:[{_t:0,ut:0,wt:0,Mt:0}],vt:\"\",dt:\"\",ft:0,ct:0,lt:null}}const V={from:0,to:1};class B{constructor(t,i,n){this.gt=new T,this.bt=[],this.St=[],this.xt=!0,this.O=t,this.Ct=i,this.yt=n,this.gt.nt(this.bt)}Pt(t){this.kt(),this.xt=!0}Tt(){return this.xt&&(this.Rt(),this.xt=!1),this.gt}kt(){const t=this.yt.Dt();t.length!==this.bt.length&&(this.St=t.map(I),this.bt=this.St.map((t=>{const i=new D;return i.ht(t),i})),this.gt.nt(this.bt))}Rt(){const t=2===this.Ct.N().mode||!this.Ct.It(),i=this.yt.Vt(),n=this.Ct.Bt(),s=this.O.Et();this.kt(),i.forEach(((i,e)=>{const r=this.St[e],h=i.At(n),a=i.Lt();!t&&null!==h&&i.It()&&null!==a?(r.vt=h.zt,r.ft=h.ft,r.ct=h.Ot,r.ot[0].Mt=h.Mt,r.ot[0].ut=i.Ft().Nt(h.Mt,a.Wt),r.dt=h.Ht??this.O.Ut(r.ot[0].ut/i.Ft().$t()),r.ot[0].wt=n,r.ot[0]._t=s.jt(n),r.lt=V):r.lt=null}))}}class E extends R{constructor(t){super(),this.qt=t}et({context:t,bitmapSize:i,horizontalPixelRatio:n,verticalPixelRatio:s}){if(null===this.qt)return;const e=this.qt.Yt.It,r=this.qt.Kt.It;if(!e&&!r)return;const h=Math.round(this.qt._t*n),o=Math.round(this.qt.ut*s);t.lineCap=\"butt\",e&&h>=0&&(t.lineWidth=Math.floor(this.qt.Yt.ct*n),t.strokeStyle=this.qt.Yt.R,t.fillStyle=this.qt.Yt.R,a(t,this.qt.Yt.Gt),function(t,i,n,s){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(i+e,n),t.lineTo(i+e,s),t.stroke()}(t,h,0,i.height)),r&&o>=0&&(t.lineWidth=Math.floor(this.qt.Kt.ct*s),t.strokeStyle=this.qt.Kt.R,t.fillStyle=this.qt.Kt.R,a(t,this.qt.Kt.Gt),l(t,o,0,i.width))}}class A{constructor(t,i){this.xt=!0,this.Zt={Yt:{ct:1,Gt:0,R:\"\",It:!1},Kt:{ct:1,Gt:0,R:\"\",It:!1},_t:0,ut:0},this.Xt=new E(this.Zt),this.Jt=t,this.yt=i}Pt(){this.xt=!0}Tt(t){return this.xt&&(this.Rt(),this.xt=!1),this.Xt}Rt(){const t=this.Jt.It(),i=this.yt.Qt().N().crosshair,n=this.Zt;if(2===i.mode)return n.Kt.It=!1,void(n.Yt.It=!1);n.Kt.It=t&&this.Jt.ti(this.yt),n.Yt.It=t&&this.Jt.ii(),n.Kt.ct=i.horzLine.width,n.Kt.Gt=i.horzLine.style,n.Kt.R=i.horzLine.color,n.Yt.ct=i.vertLine.width,n.Yt.Gt=i.vertLine.style,n.Yt.R=i.vertLine.color,n._t=this.Jt.ni(),n.ut=this.Jt.si()}}function L(t,i,n,s,e,r){t.fillRect(i+r,n,s-2*r,r),t.fillRect(i+r,n+e-r,s-2*r,r),t.fillRect(i,n,r,e),t.fillRect(i+s-r,n,r,e)}function z(t,i,n,s,e,r){t.save(),t.globalCompositeOperation=\"copy\",t.fillStyle=r,t.fillRect(i,n,s,e),t.restore()}function O(t,i,n,s,e,r){t.beginPath(),t.roundRect?t.roundRect(i,n,s,e,r):(t.lineTo(i+s-r[1],n),0!==r[1]&&t.arcTo(i+s,n,i+s,n+r[1],r[1]),t.lineTo(i+s,n+e-r[2]),0!==r[2]&&t.arcTo(i+s,n+e,i+s-r[2],n+e,r[2]),t.lineTo(i+r[3],n+e),0!==r[3]&&t.arcTo(i,n+e,i,n+e-r[3],r[3]),t.lineTo(i,n+r[0]),0!==r[0]&&t.arcTo(i,n,i+r[0],n,r[0]))}function N(t,i,n,s,e,r,h=0,a=[0,0,0,0],l=\"\"){if(t.save(),!h||!l||l===r)return O(t,i,n,s,e,a),t.fillStyle=r,t.fill(),void t.restore();const o=h/2;var _;O(t,i+o,n+o,s-h,e-h,(_=-o,a.map((t=>0===t?t:t+_)))),\"transparent\"!==r&&(t.fillStyle=r,t.fill()),\"transparent\"!==l&&(t.lineWidth=h,t.strokeStyle=l,t.closePath(),t.stroke()),t.restore()}function F(t,i,n,s,e,r,h){t.save(),t.globalCompositeOperation=\"copy\";const a=t.createLinearGradient(0,0,0,e);a.addColorStop(0,r),a.addColorStop(1,h),t.fillStyle=a,t.fillRect(i,n,s,e),t.restore()}class W{constructor(t,i){this.ht(t,i)}ht(t,i){this.qt=t,this.ei=i}$t(t,i){return this.qt.It?t.P+t.A+t.I:0}st(t,i,n,s){if(!this.qt.It||0===this.qt.ri.length)return;const e=this.qt.R,r=this.ei.Z,h=t.useBitmapCoordinateSpace((t=>{const h=t.context;h.font=i.k;const a=this.hi(t,i,n,s),l=a.ai;return a.li?N(h,l.oi,l._i,l.ui,l.ci,r,l.di,[l.ft,0,0,l.ft],r):N(h,l.fi,l._i,l.ui,l.ci,r,l.di,[0,l.ft,l.ft,0],r),this.qt.pi&&(h.fillStyle=e,h.fillRect(l.fi,l.mi,l.wi-l.fi,l.Mi)),this.qt.gi&&(h.fillStyle=i.D,h.fillRect(a.li?l.bi-l.di:0,l._i,l.di,l.Si-l._i)),a}));t.useMediaCoordinateSpace((({context:t})=>{const n=h.xi;t.font=i.k,t.textAlign=h.li?\"right\":\"left\",t.textBaseline=\"middle\",t.fillStyle=e,t.fillText(this.qt.ri,n.Ci,(n._i+n.Si)/2+n.yi)}))}hi(t,i,n,s){const{context:e,bitmapSize:r,mediaSize:h,horizontalPixelRatio:a,verticalPixelRatio:l}=t,o=this.qt.pi||!this.qt.Pi?i.C:0,_=this.qt.ki?i.S:0,u=i.A+this.ei.Ti,c=i.I+this.ei.Ri,d=i.V,f=i.B,p=this.qt.ri,v=i.P,m=n.Di(e,p),w=Math.ceil(n.Ii(e,p)),M=v+u+c,g=i.S+d+f+w+o,b=Math.max(1,Math.floor(l));let S=Math.round(M*l);S%2!=b%2&&(S+=1);const x=_>0?Math.max(1,Math.floor(_*a)):0,C=Math.round(g*a),y=Math.round(o*a),P=this.ei.Vi??this.ei.Bi??this.ei.Ei,k=Math.round(P*l)-Math.floor(.5*l),T=Math.floor(k+b/2-S/2),R=T+S,D=\"right\"===s,I=D?h.width-_:_,V=D?r.width-x:x;let B,E,A;return D?(B=V-C,E=V-y,A=I-o-d-_):(B=V+C,E=V+y,A=I+o+d),{li:D,ai:{_i:T,mi:k,Si:R,ui:C,ci:S,ft:2*a,di:x,oi:B,fi:V,wi:E,Mi:b,bi:r.width},xi:{_i:T/l,Si:R/l,Ci:A,yi:m}}}}class H{constructor(t){this.Ai={Ei:0,Z:\"#000\",Ri:0,Ti:0},this.Li={ri:\"\",It:!1,pi:!0,Pi:!1,Ht:\"\",R:\"#FFF\",gi:!1,ki:!1},this.zi={ri:\"\",It:!1,pi:!1,Pi:!0,Ht:\"\",R:\"#FFF\",gi:!0,ki:!0},this.xt=!0,this.Oi=new(t||W)(this.Li,this.Ai),this.Ni=new(t||W)(this.zi,this.Ai)}ri(){return this.Fi(),this.Li.ri}Ei(){return this.Fi(),this.Ai.Ei}Pt(){this.xt=!0}$t(t,i=!1){return Math.max(this.Oi.$t(t,i),this.Ni.$t(t,i))}Wi(){return this.Ai.Vi??null}Hi(){return this.Ai.Vi??this.Ai.Bi??this.Ei()}Ui(t){this.Ai.Bi=t??void 0}$i(){return this.Fi(),this.Li.It||this.zi.It}ji(){return this.Fi(),this.Li.It}Tt(t){return this.Fi(),this.Li.pi=this.Li.pi&&t.N().ticksVisible,this.zi.pi=this.zi.pi&&t.N().ticksVisible,this.Oi.ht(this.Li,this.Ai),this.Ni.ht(this.zi,this.Ai),this.Oi}qi(){return this.Fi(),this.Oi.ht(this.Li,this.Ai),this.Ni.ht(this.zi,this.Ai),this.Ni}Fi(){this.xt&&(this.Li.pi=!0,this.zi.pi=!1,this.Yi(this.Li,this.zi,this.Ai))}}class U extends H{constructor(t,i,n){super(),this.Jt=t,this.Ki=i,this.Gi=n}Yi(t,i,n){if(t.It=!1,2===this.Jt.N().mode)return;const s=this.Jt.N().horzLine;if(!s.labelVisible)return;const e=this.Ki.Lt();if(!this.Jt.It()||this.Ki.Zi()||null===e)return;const r=this.Ki.Xi().G(s.labelBackgroundColor);n.Z=r.Z,t.R=r.X;const h=2/12*this.Ki.P();n.Ti=h,n.Ri=h;const a=this.Gi(this.Ki);n.Ei=a.Ei,t.ri=this.Ki.Ji(a.Mt,e),t.It=!0}}const $=/[1-9]/g;class j{constructor(){this.qt=null}ht(t){this.qt=t}st(t,i){if(null===this.qt||!1===this.qt.It||0===this.qt.ri.length)return;const n=t.useMediaCoordinateSpace((({context:t})=>(t.font=i.k,Math.round(i.Qi.Ii(t,u(this.qt).ri,$)))));if(n<=0)return;const s=i.tn,e=n+2*s,r=e/2,h=this.qt.nn;let a=this.qt.Ei,l=Math.floor(a-r)+.5;l<0?(a+=Math.abs(0-l),l=Math.floor(a-r)+.5):l+e>h&&(a-=Math.abs(h-(l+e)),l=Math.floor(a-r)+.5);const o=l+e,_=Math.ceil(0+i.S+i.C+i.A+i.P+i.I);t.useBitmapCoordinateSpace((({context:t,horizontalPixelRatio:n,verticalPixelRatio:s})=>{const e=u(this.qt);t.fillStyle=e.Z;const r=Math.round(l*n),h=Math.round(0*s),a=Math.round(o*n),c=Math.round(_*s),d=Math.round(2*n);if(t.beginPath(),t.moveTo(r,h),t.lineTo(r,c-d),t.arcTo(r,c,r+d,c,d),t.lineTo(a-d,c),t.arcTo(a,c,a,c-d,d),t.lineTo(a,h),t.fill(),e.pi){const r=Math.round(e.Ei*n),a=h,l=Math.round((a+i.C)*s);t.fillStyle=e.R;const o=Math.max(1,Math.floor(n)),_=Math.floor(.5*n);t.fillRect(r-_,a,o,l-a)}})),t.useMediaCoordinateSpace((({context:t})=>{const n=u(this.qt),e=0+i.S+i.C+i.A+i.P/2;t.font=i.k,t.textAlign=\"left\",t.textBaseline=\"middle\",t.fillStyle=n.R;const r=i.Qi.Di(t,\"Apr0\");t.translate(l+s,e+r),t.fillText(n.ri,0,0)}))}}class q{constructor(t,i,n){this.xt=!0,this.Xt=new j,this.Zt={It:!1,Z:\"#4c525e\",R:\"white\",ri:\"\",nn:0,Ei:NaN,pi:!0},this.Ct=t,this.sn=i,this.Gi=n}Pt(){this.xt=!0}Tt(){return this.xt&&(this.Rt(),this.xt=!1),this.Xt.ht(this.Zt),this.Xt}Rt(){const t=this.Zt;if(t.It=!1,2===this.Ct.N().mode)return;const i=this.Ct.N().vertLine;if(!i.labelVisible)return;const n=this.sn.Et();if(n.Zi())return;t.nn=n.nn();const s=this.Gi();if(null===s)return;t.Ei=s.Ei;const e=n.en(this.Ct.Bt());t.ri=n.rn(u(e)),t.It=!0;const r=this.sn.Xi().G(i.labelBackgroundColor);t.Z=r.Z,t.R=r.X,t.pi=n.N().ticksVisible}}class Y{constructor(){this.hn=null,this.an=0}ln(){return this.an}_n(t){this.an=t}Ft(){return this.hn}un(t){this.hn=t}cn(t){return[]}dn(){return[]}It(){return!0}}var K;!function(t){t[t.Normal=0]=\"Normal\",t[t.Magnet=1]=\"Magnet\",t[t.Hidden=2]=\"Hidden\",t[t.MagnetOHLC=3]=\"MagnetOHLC\"}(K||(K={}));class G extends Y{constructor(t,i){super(),this.yt=null,this.fn=NaN,this.pn=0,this.vn=!1,this.mn=new Map,this.wn=!1,this.Mn=new WeakMap,this.gn=new WeakMap,this.bn=NaN,this.Sn=NaN,this.xn=NaN,this.Cn=NaN,this.sn=t,this.yn=i;this.Pn=((t,i)=>n=>{const s=i(),e=t();if(n===u(this.yt).kn())return{Mt:e,Ei:s};{const t=u(n.Lt());return{Mt:n.Tn(s,t),Ei:s}}})((()=>this.fn),(()=>this.Sn));const n=((t,i)=>()=>{const n=this.sn.Et().Rn(t()),s=i();return n&&Number.isFinite(s)?{wt:n,Ei:s}:null})((()=>this.pn),(()=>this.ni()));this.Dn=new q(this,t,n)}N(){return this.yn}In(t,i){this.xn=t,this.Cn=i}Vn(){this.xn=NaN,this.Cn=NaN}Bn(){return this.xn}En(){return this.Cn}An(t,i,n){this.wn||(this.wn=!0),this.vn=!0,this.Ln(t,i,n)}Bt(){return this.pn}ni(){return this.bn}si(){return this.Sn}It(){return this.vn}zn(){this.vn=!1,this.On(),this.fn=NaN,this.bn=NaN,this.Sn=NaN,this.yt=null,this.Vn(),this.Nn()}Fn(t){if(!this.yn.doNotSnapToHiddenSeriesIndices)return t;const i=this.sn,n=i.Et();let s=null,e=null;for(const n of i.Wn()){const i=n.Un().Hn(t,-1);if(i){if(i.$n===t)return t;(null===s||i.$n>s)&&(s=i.$n)}const r=n.Un().Hn(t,1);if(r){if(r.$n===t)return t;(null===e||r.$n<e)&&(e=r.$n)}}const r=[s,e].filter(g);if(0===r.length)return t;const h=n.jt(t),a=r.map((t=>Math.abs(h-n.jt(t))));return r[a.indexOf(Math.min(...a))]}jn(t){let i=this.Mn.get(t);i||(i=new A(this,t),this.Mn.set(t,i));let n=this.gn.get(t);return n||(n=new B(this.sn,this,t),this.gn.set(t,n)),[i,n]}ti(t){return t===this.yt&&this.yn.horzLine.visible}ii(){return this.yn.vertLine.visible}qn(t,i){this.vn&&this.yt===t||this.mn.clear();const n=[];return this.yt===t&&n.push(this.Yn(this.mn,i,this.Pn)),n}dn(){return this.vn?[this.Dn]:[]}Kn(){return this.yt}Nn(){this.sn.Gn().forEach((t=>{this.Mn.get(t)?.Pt(),this.gn.get(t)?.Pt()})),this.mn.forEach((t=>t.Pt())),this.Dn.Pt()}Zn(t){return t&&!t.kn().Zi()?t.kn():null}Ln(t,i,n){this.Xn(t,i,n)&&this.Nn()}Xn(t,i,n){const s=this.bn,e=this.Sn,r=this.fn,h=this.pn,a=this.yt,l=this.Zn(n);this.pn=t,this.bn=isNaN(t)?NaN:this.sn.Et().jt(t),this.yt=n;const o=null!==l?l.Lt():null;return null!==l&&null!==o?(this.fn=i,this.Sn=l.Nt(i,o)):(this.fn=NaN,this.Sn=NaN),s!==this.bn||e!==this.Sn||h!==this.pn||r!==this.fn||a!==this.yt}On(){const t=this.sn.Jn().map((t=>t.Un().Qn())).filter(g),i=0===t.length?null:Math.max(...t);this.pn=null!==i?i:NaN}Yn(t,i,n){let s=t.get(i);return void 0===s&&(s=new U(this,i,n),t.set(i,s)),s}}function Z(t){return\"left\"===t||\"right\"===t}class X{constructor(t){this.ts=new Map,this.ns=[],this.ss=t}es(t,i){const n=function(t,i){return void 0===t?i:{rs:Math.max(t.rs,i.rs),hs:t.hs||i.hs}}(this.ts.get(t),i);this.ts.set(t,n)}ls(){return this.ss}_s(t){const i=this.ts.get(t);return void 0===i?{rs:this.ss}:{rs:Math.max(this.ss,i.rs),hs:i.hs}}us(){this.cs(),this.ns=[{ds:0}]}fs(t){this.cs(),this.ns=[{ds:1,Wt:t}]}ps(t){this.vs(),this.ns.push({ds:5,Wt:t})}cs(){this.vs(),this.ns.push({ds:6})}ws(){this.cs(),this.ns=[{ds:4}]}Ms(t){this.cs(),this.ns.push({ds:2,Wt:t})}gs(t){this.cs(),this.ns.push({ds:3,Wt:t})}bs(){return this.ns}Ss(t){for(const i of t.ns)this.xs(i);this.ss=Math.max(this.ss,t.ss),t.ts.forEach(((t,i)=>{this.es(i,t)}))}static Cs(){return new X(2)}static ys(){return new X(3)}xs(t){switch(t.ds){case 0:this.us();break;case 1:this.fs(t.Wt);break;case 2:this.Ms(t.Wt);break;case 3:this.gs(t.Wt);break;case 4:this.ws();break;case 5:this.ps(t.Wt);break;case 6:this.vs()}}vs(){const t=this.ns.findIndex((t=>5===t.ds));-1!==t&&this.ns.splice(t,1)}}class J{formatTickmarks(t){return t.map((t=>this.format(t)))}}const Q=\".\";function tt(t,i){if(!p(t))return\"n/a\";if(!v(i))throw new TypeError(\"invalid length\");if(i<0||i>16)throw new TypeError(\"invalid length\");if(0===i)return t.toString();return(\"0000000000000000\"+t.toString()).slice(-i)}class it extends J{constructor(t,i){if(super(),i||(i=1),p(t)&&v(t)||(t=100),t<0)throw new TypeError(\"invalid base\");this.Ki=t,this.Ps=i,this.ks()}format(t){const i=t<0?\"−\":\"\";return t=Math.abs(t),i+this.Ts(t)}ks(){if(this.Rs=0,this.Ki>0&&this.Ps>0){let t=this.Ki;for(;t>1;)t/=10,this.Rs++}}Ts(t){const i=this.Ki/this.Ps;let n=Math.floor(t),s=\"\";const e=void 0!==this.Rs?this.Rs:NaN;if(i>1){let r=+(Math.round(t*i)-n*i).toFixed(this.Rs);r>=i&&(r-=i,n+=1),s=Q+tt(+r.toFixed(this.Rs)*this.Ps,e)}else n=Math.round(n*i)/i,e>0&&(s=Q+tt(0,e));return n.toFixed(0)+s}}class nt extends it{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class st extends J{constructor(t){super(),this.Ds=t}format(t){let i=\"\";return t<0&&(i=\"-\",t=-t),t<995?i+this.Is(t):t<999995?i+this.Is(t/1e3)+\"K\":t<999999995?(t=1e3*Math.round(t/1e3),i+this.Is(t/1e6)+\"M\"):(t=1e6*Math.round(t/1e6),i+this.Is(t/1e9)+\"B\")}Is(t){let i;const n=Math.pow(10,this.Ds);return i=(t=Math.round(t*n)/n)>=1e-15&&t<1?t.toFixed(this.Ds).replace(/\\.?0+$/,\"\"):String(t),i.replace(/(\\.[1-9]*)0+$/,((t,i)=>i))}}const et=/[2-9]/g;class rt{constructor(t=50){this.Vs=0,this.Bs=1,this.Es=1,this.As={},this.Ls=new Map,this.zs=t}Os(){this.Vs=0,this.Ls.clear(),this.Bs=1,this.Es=1,this.As={}}Ii(t,i,n){return this.Ns(t,i,n).width}Di(t,i,n){const s=this.Ns(t,i,n);return((s.actualBoundingBoxAscent||0)-(s.actualBoundingBoxDescent||0))/2}Ns(t,i,n){const s=n||et,e=String(i).replace(s,\"0\");if(this.Ls.has(e))return _(this.Ls.get(e)).Fs;if(this.Vs===this.zs){const t=this.As[this.Es];delete this.As[this.Es],this.Ls.delete(t),this.Es++,this.Vs--}t.save(),t.textBaseline=\"middle\";const r=t.measureText(e);return t.restore(),0===r.width&&i.length||(this.Ls.set(e,{Fs:r,Ws:this.Bs}),this.As[this.Bs]=e,this.Vs++,this.Bs++),r}}class ht{constructor(t){this.Hs=null,this.M=null,this.Us=\"right\",this.$s=t}js(t,i,n){this.Hs=t,this.M=i,this.Us=n}st(t){null!==this.M&&null!==this.Hs&&this.Hs.st(t,this.M,this.$s,this.Us)}}class at{constructor(t,i,n){this.qs=t,this.$s=new rt(50),this.Ys=i,this.O=n,this.F=-1,this.Xt=new ht(this.$s)}Tt(){const t=this.O.Ks(this.Ys);if(null===t)return null;const i=t.Gs(this.Ys)?t.Zs():this.Ys.Ft();if(null===i)return null;const n=t.Xs(i);if(\"overlay\"===n)return null;const s=this.O.Js();return s.P!==this.F&&(this.F=s.P,this.$s.Os()),this.Xt.js(this.qs.qi(),s,n),this.Xt}}class lt extends R{constructor(){super(...arguments),this.qt=null}ht(t){this.qt=t}Qs(t,i){if(!this.qt?.It)return null;const{ut:n,ct:s,te:e}=this.qt;return i>=n-s-7&&i<=n+s+7?{ie:this.qt,ne:Math.abs(i-n),se:2,ee:\"price-line\",te:e}:null}et({context:t,bitmapSize:i,horizontalPixelRatio:n,verticalPixelRatio:s}){if(null===this.qt)return;if(!1===this.qt.It)return;const e=Math.round(this.qt.ut*s);e<0||e>i.height||(t.lineCap=\"butt\",t.strokeStyle=this.qt.R,t.lineWidth=Math.floor(this.qt.ct*n),a(t,this.qt.Gt),l(t,e,0,i.width))}}class ot{constructor(t){this.re={ut:0,R:\"rgba(0, 0, 0, 0)\",ct:1,Gt:0,It:!1},this.he=new lt,this.xt=!0,this.ae=t,this.le=t.Qt(),this.he.ht(this.re)}Pt(){this.xt=!0}Tt(){return this.ae.It()?(this.xt&&(this.oe(),this.xt=!1),this.he):null}}class _t extends ot{constructor(t){super(t)}oe(){this.re.It=!1;const t=this.ae.Ft(),i=t._e()._e;if(2!==i&&3!==i)return;const n=this.ae.N();if(!n.baseLineVisible||!this.ae.It())return;const s=this.ae.Lt();null!==s&&(this.re.It=!0,this.re.ut=t.Nt(s.Wt,s.Wt),this.re.R=n.baseLineColor,this.re.ct=n.baseLineWidth,this.re.Gt=n.baseLineStyle)}}class ut extends R{constructor(){super(...arguments),this.qt=null}ht(t){this.qt=t}ue(){return this.qt}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:n}){const s=this.qt;if(null===s)return;const e=Math.max(1,Math.floor(i)),r=e%2/2,h=Math.round(s.ce.x*i)+r,a=s.ce.y*n;t.fillStyle=s.de,t.beginPath();const l=Math.max(2,1.5*s.fe)*i;t.arc(h,a,l,0,2*Math.PI,!1),t.fill(),t.fillStyle=s.pe,t.beginPath(),t.arc(h,a,s.ft*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=e,t.strokeStyle=s.ve,t.beginPath(),t.arc(h,a,s.ft*i+e/2,0,2*Math.PI,!1),t.stroke()}}const ct=[{me:0,we:.25,Me:4,ge:10,be:.25,Se:0,xe:.4,Ce:.8},{me:.25,we:.525,Me:10,ge:14,be:0,Se:0,xe:.8,Ce:0},{me:.525,we:1,Me:14,ge:14,be:0,Se:0,xe:0,Ce:0}];class dt{constructor(t){this.Xt=new ut,this.xt=!0,this.ye=!0,this.Pe=performance.now(),this.ke=this.Pe-1,this.Te=t}Re(){this.ke=this.Pe-1,this.Pt()}De(){if(this.Pt(),2===this.Te.N().lastPriceAnimation){const t=performance.now(),i=this.ke-t;if(i>0)return void(i<650&&(this.ke+=2600));this.Pe=t,this.ke=t+2600}}Pt(){this.xt=!0}Ie(){this.ye=!0}It(){return 0!==this.Te.N().lastPriceAnimation}Ve(){switch(this.Te.N().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.ke}}Tt(){return this.xt?(this.Rt(),this.xt=!1,this.ye=!1):this.ye&&(this.Be(),this.ye=!1),this.Xt}Rt(){this.Xt.ht(null);const t=this.Te.Qt().Et(),i=t.Ee(),n=this.Te.Lt();if(null===i||null===n)return;const s=this.Te.Ae(!0);if(s.Le||!i.ze(s.$n))return;const e={x:t.jt(s.$n),y:this.Te.Ft().Nt(s.Mt,n.Wt)},r=s.R,h=this.Te.N().lineWidth,a=this.Oe(this.Ne(),r);this.Xt.ht({de:r,fe:h,pe:a.pe,ve:a.ve,ft:a.ft,ce:e})}Be(){const t=this.Xt.ue();if(null!==t){const i=this.Oe(this.Ne(),t.de);t.pe=i.pe,t.ve=i.ve,t.ft=i.ft}}Ne(){return this.Ve()?performance.now()-this.Pe:2599}Fe(t,i,n,s){const e=n+(s-n)*i;return this.Te.Qt().Xi().Y(t,e)}Oe(t,i){const n=t%2600/2600;let s;for(const t of ct)if(n>=t.me&&n<=t.we){s=t;break}o(void 0!==s,\"Last price animation internal logic error\");const e=(n-s.me)/(s.we-s.me);return{pe:this.Fe(i,e,s.be,s.Se),ve:this.Fe(i,e,s.xe,s.Ce),ft:(r=e,h=s.Me,a=s.ge,h+(a-h)*r)};var r,h,a}}class ft extends ot{constructor(t){super(t)}oe(){const t=this.re;t.It=!1;const i=this.ae.N();if(!i.priceLineVisible||!this.ae.It())return;const n=this.ae.Ae(0===i.priceLineSource);n.Le||(t.It=!0,t.ut=n.Ei,t.R=this.ae.We(n.R),t.ct=i.priceLineWidth,t.Gt=i.priceLineStyle)}}class pt extends H{constructor(t){super(),this.Jt=t}Yi(t,i,n){t.It=!1,i.It=!1;const s=this.Jt;if(!s.It())return;const e=s.N(),r=e.lastValueVisible,h=\"\"!==s.He(),a=0===e.seriesLastValueMode,l=s.Ae(!1);if(l.Le)return;r&&(t.ri=this.Ue(l,r,a),t.It=0!==t.ri.length),(h||a)&&(i.ri=this.$e(l,r,h,a),i.It=i.ri.length>0);const o=s.We(l.R),_=this.Jt.Qt().Xi().G(o);n.Z=_.Z,n.Ei=l.Ei,i.Ht=s.Qt().Ut(l.Ei/s.Ft().$t()),t.Ht=o,t.R=_.X,i.R=_.X}$e(t,i,n,s){let e=\"\";const r=this.Jt.He();return n&&0!==r.length&&(e+=`${r} `),i&&s&&(e+=this.Jt.Ft().je()?t.qe:t.Ye),e.trim()}Ue(t,i,n){return i?n?this.Jt.Ft().je()?t.Ye:t.qe:t.ri:\"\"}}function vt(t,i,n,s){const e=Number.isFinite(i),r=Number.isFinite(n);return e&&r?t(i,n):e||r?e?i:n:s}class mt{constructor(t,i){this.Ke=t,this.Ge=i}Ze(t){return null!==t&&(this.Ke===t.Ke&&this.Ge===t.Ge)}Xe(){return new mt(this.Ke,this.Ge)}Je(){return this.Ke}Qe(){return this.Ge}tr(){return this.Ge-this.Ke}Zi(){return this.Ge===this.Ke||Number.isNaN(this.Ge)||Number.isNaN(this.Ke)}Ss(t){return null===t?this:new mt(vt(Math.min,this.Je(),t.Je(),-1/0),vt(Math.max,this.Qe(),t.Qe(),1/0))}ir(t){if(!p(t))return;if(0===this.Ge-this.Ke)return;const i=.5*(this.Ge+this.Ke);let n=this.Ge-i,s=this.Ke-i;n*=t,s*=t,this.Ge=i+n,this.Ke=i+s}nr(t){p(t)&&(this.Ge+=t,this.Ke+=t)}sr(){return{minValue:this.Ke,maxValue:this.Ge}}static er(t){return null===t?null:new mt(t.minValue,t.maxValue)}}class wt{constructor(t,i){this.rr=t,this.hr=i||null}ar(){return this.rr}lr(){return this.hr}sr(){return{priceRange:null===this.rr?null:this.rr.sr(),margins:this.hr||void 0}}static er(t){return null===t?null:new wt(mt.er(t.priceRange),t.margins)}}const Mt=[2,4,8,16,32,64,128,256,512],gt=\"Custom series with conflation reducer must have a priceValueBuilder method\";class bt extends ot{constructor(t,i){super(t),this._r=i}oe(){const t=this.re;t.It=!1;const i=this._r.N();if(!this.ae.It()||!i.lineVisible)return;const n=this._r.ur();null!==n&&(t.It=!0,t.ut=n,t.R=i.color,t.ct=i.lineWidth,t.Gt=i.lineStyle,t.te=this._r.N().id)}}class St extends H{constructor(t,i){super(),this.Te=t,this._r=i}Yi(t,i,n){t.It=!1,i.It=!1;const s=this._r.N(),e=s.axisLabelVisible,r=\"\"!==s.title,h=this.Te;if(!e||!h.It())return;const a=this._r.ur();if(null===a)return;r&&(i.ri=s.title,i.It=!0),i.Ht=h.Qt().Ut(a/h.Ft().$t()),t.ri=this.cr(s.price),t.It=!0;const l=this.Te.Qt().Xi().G(s.axisLabelColor||s.color);n.Z=l.Z;const o=s.axisLabelTextColor||l.X;t.R=o,i.R=o,n.Ei=a}cr(t){const i=this.Te.Lt();return null===i?\"\":this.Te.Ft().Ji(t,i.Wt)}}class xt{constructor(t,i){this.Te=t,this.yn=i,this.dr=new bt(t,this),this.qs=new St(t,this),this.pr=new at(this.qs,t,t.Qt())}vr(t){f(this.yn,t),this.Pt(),this.Te.Qt().mr()}N(){return this.yn}wr(){return this.dr}Mr(){return this.pr}gr(){return this.qs}Pt(){this.dr.Pt(),this.qs.Pt()}ur(){const t=this.Te,i=t.Ft();if(t.Qt().Et().Zi()||i.Zi())return null;const n=t.Lt();return null===n?null:i.Nt(this.yn.price,n.Wt)}}class Ct{constructor(){this.br=new WeakMap}Sr(t,i,n){const s=1/i*n;if(t>=s)return 1;const e=s/t,r=Math.pow(2,Math.floor(Math.log2(e)));return Math.min(r,512)}Cr(t,i,n,s=!1,e){if(0===t.length||i<=1)return t;const r=this.yr(i);if(r<=1)return t;const h=this.Pr(t);let a=h.kr.get(r);return void 0!==a||(a=this.Tr(t,r,n,s,e,h.kr),h.kr.set(r,a)),a}Rr(t,i,n,s,e=!1,r){if(n<1||0===t.length)return t;const h=this.Pr(t),a=h.kr.get(n);if(!a)return this.Cr(t,n,s,e,r);const l=this.Dr(t,i,n,a,e,s,r);return h.kr.set(n,l),l}yr(t){if(t<=2)return 2;for(const i of Mt)if(t<=i)return i;return 512}Ir(t){if(0===t.length)return 0;const i=t[0],n=t[t.length-1];return 31*t.length+17*i.$n+13*n.$n}Tr(t,i,n,s=!1,e,r=new Map){if(2===i)return this.Vr(t,2,n,s,e);const h=i/2;let a=r.get(h);return a||(a=this.Tr(t,h,n,s,e,r),r.set(h,a)),this.Br(a,n,s,e)}Vr(t,i,n,s=!1,e){const r=this.Er(t,i,n,s,e);return this.Ar(r,s)}Br(t,i,n=!1,s){const e=this.Er(t,2,i,n,s);return this.Ar(e,n)}Er(t,i,n,s=!1,e){const r=[];for(let h=0;h<t.length;h+=i){if(t.length-h>=i){const i=this.Lr(t[h],t[h+1],n,s,e);i.zr=!1,r.push(i)}else if(0===r.length)r.push(this.Or(t[h],!0));else{const i=r[r.length-1];r[r.length-1]=this.Nr(i,t[h],n,s,e)}}return r}Fr(t,i){return(t??1)+(i??1)}Lr(t,i,n,s=!1,e){if(!s||!n||!e){const n=t.Wt[1]>i.Wt[1]?t.Wt[1]:i.Wt[1],s=t.Wt[2]<i.Wt[2]?t.Wt[2]:i.Wt[2];return{Wr:t.$n,Hr:i.$n,Ur:t.wt,$r:i.wt,jr:t.Wt[0],qr:n,Yr:s,Kr:i.Wt[3],Gr:this.Fr(t.Gr,i.Gr),Zr:void 0,zr:!1}}const r=n(this.Xr(t,e),this.Xr(i,e)),h=e(r),a=h.length?h[h.length-1]:0;return{Wr:t.$n,Hr:i.$n,Ur:t.wt,$r:i.wt,jr:t.Wt[0],qr:Math.max(t.Wt[1],a),Yr:Math.min(t.Wt[2],a),Kr:a,Gr:this.Fr(t.Gr,i.Gr),Zr:r,zr:!1}}Nr(t,i,n,s=!1,e){if(!s||!n||!e)return{Wr:t.Wr,Hr:i.$n,Ur:t.Ur,$r:i.wt,jr:t.jr,qr:t.qr>i.Wt[1]?t.qr:i.Wt[1],Yr:t.Yr<i.Wt[2]?t.Yr:i.Wt[2],Kr:i.Wt[3],Gr:t.Gr+(i.Gr??1),Zr:t.Zr,zr:!1};const r=t.Zr,h=this.Xr(i,e),a=r?{data:r,index:t.Wr,originalTime:t.Ur,time:t.Ur,priceValues:e(r)}:null,l=a?n(a,h):h.data,o=a?e(l):h.priceValues,_=o.length?o[o.length-1]:0;return{Wr:t.Wr,Hr:i.$n,Ur:t.Ur,$r:i.wt,jr:t.jr,qr:Math.max(t.qr,_),Yr:Math.min(t.Yr,_),Kr:_,Gr:t.Gr+(i.Gr??1),Zr:l,zr:!1}}Jr(t,i,n,s,e,r,h=!1,a){const l=i===s?e:t[i];if(n-i==1)return this.Or(l,!0);const o=i+1===s?e:t[i+1];let _=this.Lr(l,o,r,h,a);for(let l=i+2;l<n;l++){const i=l===s?e:t[l];_=this.Nr(_,i,r,h,a)}return _}Xr(t,i){const n=t.ue??{};return{data:t.ue,index:t.$n,originalTime:t.Qr,time:t.wt,priceValues:i(n)}}th(t,i=!1){const n=!0===i,s=!!t.Zr;return{...{$n:t.Wr,wt:t.Ur,Qr:t.Ur,Wt:[n?t.Kr:t.jr,t.qr,t.Yr,t.Kr],Gr:t.Gr},ue:n?s?t.Zr:{wt:t.Ur}:void 0}}Ar(t,i=!1){return t.map((t=>this.th(t,i)))}Dr(t,i,n,s,e=!1,r,h){if(0===s.length)return s;const a=t.length-1,l=Math.floor(a/n)*n;if(Math.min(l+n,t.length)-l<n&&t.length>n){const s=t.slice();return s[s.length-1]=i,this.Cr(s,n,r,e,h)}if(Math.floor((a-1)/n)===Math.floor(a/n)||1===s.length){const o=Math.min(l+n,t.length),_=o-l;if(_<=0)return s;const u=1===_?this.Or(l===a?i:t[l],!0):this.Jr(t,l,o,a,i,r,e,h);return s[s.length-1]=this.th(u,e),s}{const s=t.slice();return s[s.length-1]=i,this.Cr(s,n,r,e,h)}}Or(t,i=!1){return{Wr:t.$n,Hr:t.$n,Ur:t.wt,$r:t.wt,jr:t.Wt[0],qr:t.Wt[1],Yr:t.Wt[2],Kr:t.Wt[3],Gr:t.Gr??1,Zr:t.ue,zr:i}}Pr(t){const i=this.ih(t),n=this.Ir(t);return i.nh!==n&&(i.kr.clear(),i.nh=n),i}ih(t){let i=this.br.get(t);return void 0===i&&(i={nh:this.Ir(t),kr:new Map},this.br.set(t,i)),i}}class yt extends Y{constructor(t){super(),this.sn=t}Qt(){return this.sn}}const Pt={Bar:(t,i,n,s)=>{const e=i.upColor,r=i.downColor,h=u(t(n,s)),a=c(h.Wt[0])<=c(h.Wt[3]);return{sh:h.R??(a?e:r)}},Candlestick:(t,i,n,s)=>{const e=i.upColor,r=i.downColor,h=i.borderUpColor,a=i.borderDownColor,l=i.wickUpColor,o=i.wickDownColor,_=u(t(n,s)),d=c(_.Wt[0])<=c(_.Wt[3]);return{sh:_.R??(d?e:r),eh:_.Ht??(d?h:a),rh:_.hh??(d?l:o)}},Custom:(t,i,n,s)=>({sh:u(t(n,s)).R??i.color}),Area:(t,i,n,s)=>{const e=u(t(n,s));return{sh:e.vt??i.lineColor,vt:e.vt??i.lineColor,ah:e.ah??i.topColor,oh:e.oh??i.bottomColor}},Baseline:(t,i,n,s)=>{const e=u(t(n,s));return{sh:e.Wt[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,_h:e._h??i.topLineColor,uh:e.uh??i.bottomLineColor,dh:e.dh??i.topFillColor1,fh:e.fh??i.topFillColor2,ph:e.ph??i.bottomFillColor1,mh:e.mh??i.bottomFillColor2}},Line:(t,i,n,s)=>{const e=u(t(n,s));return{sh:e.R??i.color,vt:e.R??i.color}},Histogram:(t,i,n,s)=>({sh:u(t(n,s)).R??i.color})};class kt{constructor(t){this.wh=(t,i)=>void 0!==i?i.Wt:this.Te.Un().Mh(t),this.Te=t,this.gh=Pt[t.bh()]}Sh(t,i){return this.gh(this.wh,this.Te.N(),t,i)}}function Tt(t,i,n,s,e=0,r=i.length){let h=r-e;for(;0<h;){const r=h>>1,a=e+r;s(i[a],n)===t?(e=a+1,h-=r+1):h=r}return e}const Rt=Tt.bind(null,!0),Dt=Tt.bind(null,!1);var It;!function(t){t[t.NearestLeft=-1]=\"NearestLeft\",t[t.None=0]=\"None\",t[t.NearestRight=1]=\"NearestRight\"}(It||(It={}));const Vt=30;class Bt{constructor(){this.xh=[],this.Ch=new Map,this.yh=new Map,this.Ph=[]}kh(){return this.Th()>0?this.xh[this.xh.length-1]:null}Rh(){return this.Th()>0?this.Dh(0):null}Qn(){return this.Th()>0?this.Dh(this.xh.length-1):null}Th(){return this.xh.length}Zi(){return 0===this.Th()}ze(t){return null!==this.Ih(t,0)}Mh(t){return this.Hn(t)}Hn(t,i=0){const n=this.Ih(t,i);return null===n?null:{...this.Vh(n),$n:this.Dh(n)}}Bh(){return this.xh}Eh(t,i,n){if(this.Zi())return null;let s=null;for(const e of n){s=Et(s,this.Ah(t,i,e))}return s}ht(t){this.yh.clear(),this.Ch.clear(),this.xh=t,this.Ph=t.map((t=>t.$n))}Lh(){return this.Ph}Dh(t){return this.xh[t].$n}Vh(t){return this.xh[t]}Ih(t,i){const n=this.zh(t);if(null===n&&0!==i)switch(i){case-1:return this.Oh(t);case 1:return this.Nh(t);default:throw new TypeError(\"Unknown search mode\")}return n}Oh(t){let i=this.Fh(t);return i>0&&(i-=1),i!==this.xh.length&&this.Dh(i)<t?i:null}Nh(t){const i=this.Wh(t);return i!==this.xh.length&&t<this.Dh(i)?i:null}zh(t){const i=this.Fh(t);return i===this.xh.length||t<this.xh[i].$n?null:i}Fh(t){return Rt(this.xh,t,((t,i)=>t.$n<i))}Wh(t){return Dt(this.xh,t,((t,i)=>t.$n>i))}Hh(t,i,n){let s=null;for(let e=t;e<i;e++){const t=this.xh[e].Wt[n];Number.isNaN(t)||(null===s?s={Uh:t,$h:t}:(t<s.Uh&&(s.Uh=t),t>s.$h&&(s.$h=t)))}return s}Ah(t,i,n){if(this.Zi())return null;let s=null;const e=u(this.Rh()),r=u(this.Qn()),h=Math.max(t,e),a=Math.min(i,r),l=Math.ceil(h/Vt)*Vt,o=Math.max(l,Math.floor(a/Vt)*Vt);{const t=this.Fh(h),e=this.Wh(Math.min(a,l,i));s=Et(s,this.Hh(t,e,n))}let _=this.Ch.get(n);void 0===_&&(_=new Map,this.Ch.set(n,_));for(let t=Math.max(l+1,h);t<o;t+=Vt){const i=Math.floor(t/Vt);let e=_.get(i);if(void 0===e){const t=this.Fh(i*Vt),s=this.Wh((i+1)*Vt-1);e=this.Hh(t,s,n),_.set(i,e)}s=Et(s,e)}{const t=this.Fh(o),i=this.Wh(a);s=Et(s,this.Hh(t,i,n))}return s}}function Et(t,i){if(null===t)return i;if(null===i)return t;return{Uh:Math.min(t.Uh,i.Uh),$h:Math.max(t.$h,i.$h)}}function At(){return new Bt}const Lt={setLineStyle:a};class zt{constructor(t){this.jh=t}st(t,i,n){this.jh.draw(t,Lt)}qh(t,i,n){this.jh.drawBackground?.(t,Lt)}}class Ot{constructor(t){this.Ls=null,this.Yh=t}Tt(){const t=this.Yh.renderer();if(null===t)return null;if(this.Ls?.Kh===t)return this.Ls.Gh;const i=new zt(t);return this.Ls={Kh:t,Gh:i},i}Zh(){return this.Yh.zOrder?.()??\"normal\"}}class Nt{constructor(t){this.Xh=null,this.Jh=t}Qh(){return this.Jh}Nn(){this.Jh.updateAllViews?.()}jn(){const t=this.Jh.paneViews?.()??[];if(this.Xh?.Kh===t)return this.Xh.Gh;const i=t.map((t=>new Ot(t)));return this.Xh={Kh:t,Gh:i},i}Qs(t,i){return this.Jh.hitTest?.(t,i)??null}}let Ft=class extends Nt{cn(){return[]}};class Wt{constructor(t){this.jh=t}st(t,i,n){this.jh.draw(t,Lt)}qh(t,i,n){this.jh.drawBackground?.(t,Lt)}}class Ht{constructor(t){this.Ls=null,this.Yh=t}Tt(){const t=this.Yh.renderer();if(null===t)return null;if(this.Ls?.Kh===t)return this.Ls.Gh;const i=new Wt(t);return this.Ls={Kh:t,Gh:i},i}Zh(){return this.Yh.zOrder?.()??\"normal\"}}function Ut(t){return{ri:t.text(),Ei:t.coordinate(),Vi:t.fixedCoordinate?.(),R:t.textColor(),Z:t.backColor(),It:t.visible?.()??!0,pi:t.tickVisible?.()??!0}}class $t{constructor(t,i){this.Xt=new j,this.ta=t,this.ia=i}Tt(){return this.Xt.ht({nn:this.ia.nn(),...Ut(this.ta)}),this.Xt}}class jt extends H{constructor(t,i){super(),this.ta=t,this.Ki=i}Yi(t,i,n){const s=Ut(this.ta);n.Z=s.Z,t.R=s.R;const e=2/12*this.Ki.P();n.Ti=e,n.Ri=e,n.Ei=s.Ei,n.Vi=s.Vi,t.ri=s.ri,t.It=s.It,t.pi=s.pi}}class qt extends Nt{constructor(t,i){super(t),this.na=null,this.sa=null,this.ea=null,this.ra=null,this.Te=i}dn(){const t=this.Jh.timeAxisViews?.()??[];if(this.na?.Kh===t)return this.na.Gh;const i=this.Te.Qt().Et(),n=t.map((t=>new $t(t,i)));return this.na={Kh:t,Gh:n},n}qn(){const t=this.Jh.priceAxisViews?.()??[];if(this.sa?.Kh===t)return this.sa.Gh;const i=this.Te.Ft(),n=t.map((t=>new jt(t,i)));return this.sa={Kh:t,Gh:n},n}ha(){const t=this.Jh.priceAxisPaneViews?.()??[];if(this.ea?.Kh===t)return this.ea.Gh;const i=t.map((t=>new Ht(t)));return this.ea={Kh:t,Gh:i},i}aa(){const t=this.Jh.timeAxisPaneViews?.()??[];if(this.ra?.Kh===t)return this.ra.Gh;const i=t.map((t=>new Ht(t)));return this.ra={Kh:t,Gh:i},i}la(t,i){return this.Jh.autoscaleInfo?.(t,i)??null}}function Yt(t,i,n,s){t.forEach((t=>{i(t).forEach((t=>{t.Zh()===n&&s.push(t)}))}))}function Kt(t){return t.jn()}function Gt(t){return t.ha()}function Zt(t){return t.aa()}const Xt=[\"Area\",\"Line\",\"Baseline\"];class Jt extends yt{constructor(t,i,n,s,e){super(t),this.qt=At(),this.dr=new ft(this),this.oa=[],this._a=new _t(this),this.ua=null,this.ca=null,this.da=null,this.fa=[],this.pa=new Ct,this.va=new Map,this.ma=null,this.yn=n,this.wa=i;const r=new pt(this);if(this.mn=[r],this.pr=new at(r,this,t),Xt.includes(this.wa)&&(this.ua=new dt(this)),this.Ma(),this.Yh=s(this,this.Qt(),e),\"Custom\"===this.wa){const t=this.Yh;t.ga&&this.ba(t.ga)}}m(){null!==this.da&&clearTimeout(this.da)}We(t){return this.yn.priceLineColor||t}Ae(t){const i={Le:!0},n=this.Ft();if(this.Qt().Et().Zi()||n.Zi()||this.qt.Zi())return i;const s=this.Qt().Et().Ee(),e=this.Lt();if(null===s||null===e)return i;let r,h;if(t){const t=this.qt.kh();if(null===t)return i;r=t,h=t.$n}else{const t=this.qt.Hn(s.bi(),-1);if(null===t)return i;if(r=this.qt.Mh(t.$n),null===r)return i;h=t.$n}const a=r.Wt[3],l=this.Sa().Sh(h,{Wt:r}),o=n.Nt(a,e.Wt);return{Le:!1,Mt:a,ri:n.Ji(a,e.Wt),qe:n.xa(a),Ye:n.Ca(a,e.Wt),R:l.sh,Ei:o,$n:h}}Sa(){return null!==this.ca||(this.ca=new kt(this)),this.ca}N(){return this.yn}vr(t){const i=this.Qt(),{priceScaleId:n,visible:s,priceFormat:e}=t;void 0!==n&&n!==this.yn.priceScaleId&&i.ya(this,n),void 0!==s&&s!==this.yn.visible&&i.Pa();const r=void 0!==t.conflationThresholdFactor;f(this.yn,t),Object.prototype.hasOwnProperty.call(t,\"autoscaleInfoProvider\")&&void 0===t.autoscaleInfoProvider&&(this.yn.autoscaleInfoProvider=void 0),r&&(this.va.clear(),this.Qt().mr()),void 0!==e&&(this.Ma(),i.ka()),i.Ta(this),i.Ra(),this.Yh.Pt(\"options\")}ht(t,i){this.qt.ht(t),this.va.clear();const n=this.Qt().Et().N();n.enableConflation&&n.precomputeConflationOnInit&&this.Da(n.precomputeConflationPriority),this.Ia(),null!==this.ua&&(i&&i.Va?this.ua.De():0===t.length&&this.ua.Re());const s=this.Qt().Ks(this);this.Qt().Ba(s),this.Qt().Ta(this),this.Qt().Ra(),this.Qt().mr()}Ia(){this.Yh.Pt(\"data\")}Ea(t){const i=new xt(this,t);return this.oa.push(i),this.Qt().Ta(this),i}Aa(t){const i=this.oa.indexOf(t);-1!==i&&this.oa.splice(i,1),this.Qt().Ta(this)}La(){return this.oa}bh(){return this.wa}Lt(){const t=this.za();return null===t?null:{Wt:t.Wt[3],Oa:t.wt}}za(){const t=this.Qt().Et().Ee();if(null===t)return null;const i=t.Na();return this.qt.Hn(i,1)}Un(){return this.qt}ba(t){this.ma=t,this.va.clear()}Fa(){return!!this.Qt().Et().N().enableConflation&&this.Wa()>1}Rr(t){if(!this.Fa())return;const i=this.Wa();if(!this.va.has(i))return;const n=\"Custom\"===this.wa,s=n&&this.ma||void 0,e=n&&this.Yh.Ha?t=>{const i=t,n=this.Yh.Ha(i);return Array.isArray(n)?n:[\"number\"==typeof n?n:0]}:void 0,r=this.pa.Rr(this.qt.Bh(),t,i,s,n,e),h=At();h.ht(r),this.va.set(i,h)}Ua(){const t=this.Qt().Et().N().enableConflation;if(\"Custom\"===this.wa&&null===this.ma)return this.qt;if(!t)return this.qt;const i=this.Wa(),n=this.va.get(i);if(n)return n;this.$a(i);return this.va.get(i)??this.qt}ja(t){const i=this.qt.Mh(t);return null===i?null:\"Bar\"===this.wa||\"Candlestick\"===this.wa||\"Custom\"===this.wa?{jr:i.Wt[0],qr:i.Wt[1],Yr:i.Wt[2],Kr:i.Wt[3]}:i.Wt[3]}qa(t){const i=[];Yt(this.fa,Kt,\"top\",i);const n=this.ua;return null!==n&&n.It()?(null===this.da&&n.Ve()&&(this.da=setTimeout((()=>{this.da=null,this.Qt().Ya()}),0)),n.Ie(),i.unshift(n),i):i}jn(){const t=[];this.Ka()||t.push(this._a),t.push(this.Yh,this.dr);const i=this.oa.map((t=>t.wr()));return t.push(...i),Yt(this.fa,Kt,\"normal\",t),t}Ga(){const t=this.Yh.Ga?.()??null;if(null===t)return null;const i=[];this.Ka()||i.push(this._a),i.push(...t.Za),Yt(this.fa,Kt,\"normal\",i);const n=[];n.push(...t.qa,this.dr);const s=this.oa.map((t=>t.wr()));return n.push(...s),{Za:i,qa:n}}Xa(){return this.Ja(Kt,\"bottom\")}Qa(t){return this.Ja(Gt,t)}tl(t){return this.Ja(Zt,t)}il(t,i){return this.fa.map((n=>n.Qs(t,i))).filter((t=>null!==t))}cn(){return[this.pr,...this.oa.map((t=>t.Mr()))]}qn(t,i){if(i!==this.hn&&!this.Ka())return[];const n=[...this.mn];for(const t of this.oa)n.push(t.gr());return this.fa.forEach((t=>{n.push(...t.qn())})),n}dn(){const t=[];return this.fa.forEach((i=>{t.push(...i.dn())})),t}la(t,i){if(void 0!==this.yn.autoscaleInfoProvider){const n=this.yn.autoscaleInfoProvider((()=>{const n=this.nl(t,i);return null===n?null:n.sr()}));return wt.er(n)}return this.nl(t,i)}Kh(){const t=this.yn.priceFormat;return t.base??1/t.minMove}sl(){return this.el}Nn(){this.Yh.Pt();for(const t of this.mn)t.Pt();for(const t of this.oa)t.Pt();this.dr.Pt(),this._a.Pt(),this.ua?.Pt(),this.fa.forEach((t=>t.Nn()))}Ft(){return u(super.Ft())}At(t){if(!((\"Line\"===this.wa||\"Area\"===this.wa||\"Baseline\"===this.wa)&&this.yn.crosshairMarkerVisible))return null;const i=this.qt.Mh(t);if(null===i)return null;return{Mt:i.Wt[3],ft:this.rl(),Ht:this.hl(),Ot:this.al(),zt:this.ll(t)}}He(){return this.yn.title}It(){return this.yn.visible}ol(t){this.fa.push(new qt(t,this))}_l(t){this.fa=this.fa.filter((i=>i.Qh()!==t))}ul(){if(\"Custom\"===this.wa)return t=>this.Yh.Ha(t)}cl(){if(\"Custom\"===this.wa)return t=>this.Yh.dl(t)}fl(){return this.qt.Lh()}Ka(){return!Z(this.Ft().pl())}nl(t,i){if(!v(t)||!v(i)||this.qt.Zi())return null;const n=\"Line\"===this.wa||\"Area\"===this.wa||\"Baseline\"===this.wa||\"Histogram\"===this.wa?[3]:[2,1],s=this.qt.Eh(t,i,n);let e=null!==s?new mt(s.Uh,s.$h):null,r=null;if(\"Histogram\"===this.bh()){const t=this.yn.base,i=new mt(t,t);e=null!==e?e.Ss(i):i}return this.fa.forEach((n=>{const s=n.la(t,i);if(s?.priceRange){const t=new mt(s.priceRange.minValue,s.priceRange.maxValue);e=null!==e?e.Ss(t):t}s?.margins&&(r=s.margins)})),new wt(e,r)}rl(){switch(this.wa){case\"Line\":case\"Area\":case\"Baseline\":return this.yn.crosshairMarkerRadius}return 0}hl(){switch(this.wa){case\"Line\":case\"Area\":case\"Baseline\":{const t=this.yn.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}al(){switch(this.wa){case\"Line\":case\"Area\":case\"Baseline\":return this.yn.crosshairMarkerBorderWidth}return 0}ll(t){switch(this.wa){case\"Line\":case\"Area\":case\"Baseline\":{const t=this.yn.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Sa().Sh(t).sh}Ma(){switch(this.yn.priceFormat.type){case\"custom\":{const t=this.yn.priceFormat.formatter;this.el={format:t,formatTickmarks:this.yn.priceFormat.tickmarksFormatter??(i=>i.map(t))};break}case\"volume\":this.el=new st(this.yn.priceFormat.precision);break;case\"percent\":this.el=new nt(this.yn.priceFormat.precision);break;default:{const t=Math.pow(10,this.yn.priceFormat.precision);this.el=new it(t,this.yn.priceFormat.minMove*t)}}null!==this.hn&&this.hn.vl()}Ja(t,i){const n=[];return Yt(this.fa,t,i,n),n}Wa(){const{ml:t,wl:i,Ml:n}=this.gl();return this.pa.Sr(t,i,n)}gl(){const t=this.Qt().Et(),i=t.ml(),n=window.devicePixelRatio||1,s=t.N().conflationThresholdFactor;return{ml:i,wl:n,Ml:this.yn.conflationThresholdFactor??s??1}}bl(t){const i=this.qt.Bh();let n;if(\"Custom\"===this.wa&&null!==this.ma){const s=this.ul();if(!s)throw new Error(gt);n=this.pa.Cr(i,t,this.ma,!0,(t=>s(t)))}else n=this.pa.Cr(i,t);const s=At();return s.ht(n),s}$a(t){const i=this.bl(t);this.va.set(t,i)}Da(t){if(\"Custom\"===this.wa&&(null===this.ma||!this.ul()))return;this.va.clear();const i=this.Qt().Et().Sl();for(const n of i){const i=()=>{this.xl(n)},s=\"object\"==typeof window&&window||\"object\"==typeof self&&self;s?.yl?.Cl?s.yl.Cl((()=>{i()}),{se:t}):Promise.resolve().then((()=>i()))}}xl(t){if(this.va.has(t))return;if(0===this.qt.Bh().length)return;const i=this.bl(t);this.va.set(t,i)}}const Qt=[3],ti=[0,1,2,3];class ii{constructor(t){this.yn=t}Pl(t,i,n){let s=t;if(0===this.yn.mode)return s;const e=n.kn(),r=e.Lt();if(null===r)return s;const h=e.Nt(t,r),a=n.kl().filter((t=>t instanceof Jt)).reduce(((t,s)=>{if(n.Gs(s)||!s.It())return t;const e=s.Ft(),r=s.Un();if(e.Zi()||!r.ze(i))return t;const h=r.Mh(i);if(null===h)return t;const a=c(s.Lt()),l=3===this.yn.mode?ti:Qt;return t.concat(l.map((t=>e.Nt(h.Wt[t],a.Wt))))}),[]);if(0===a.length)return s;a.sort(((t,i)=>Math.abs(t-h)-Math.abs(i-h)));const l=a[0];return s=e.Tn(l,r),s}}function ni(t,i,n){return Math.min(Math.max(t,i),n)}function si(t,i,n){return i-t<=n}function ei(t){const i=Math.ceil(t);return i%2==0?i-1:i}class ri extends R{constructor(){super(...arguments),this.qt=null}ht(t){this.qt=t}et({context:t,bitmapSize:i,horizontalPixelRatio:n,verticalPixelRatio:s}){if(null===this.qt)return;const e=Math.max(1,Math.floor(n));t.lineWidth=e,function(t,i){t.save(),t.lineWidth%2&&t.translate(.5,.5),i(),t.restore()}(t,(()=>{const r=u(this.qt);if(r.Tl){t.strokeStyle=r.Rl,a(t,r.Dl),t.beginPath();for(const s of r.Il){const r=Math.round(s.Vl*n);t.moveTo(r,-e),t.lineTo(r,i.height+e)}t.stroke()}if(r.Bl){t.strokeStyle=r.El,a(t,r.Al),t.beginPath();for(const n of r.Ll){const r=Math.round(n.Vl*s);t.moveTo(-e,r),t.lineTo(i.width+e,r)}t.stroke()}}))}}class hi{constructor(t){this.Xt=new ri,this.xt=!0,this.yt=t}Pt(){this.xt=!0}Tt(){if(this.xt){const t=this.yt.Qt().N().grid,i={Bl:t.horzLines.visible,Tl:t.vertLines.visible,El:t.horzLines.color,Rl:t.vertLines.color,Al:t.horzLines.style,Dl:t.vertLines.style,Ll:this.yt.kn().zl(),Il:(this.yt.Qt().Et().zl()||[]).map((t=>({Vl:t.coord})))};this.Xt.ht(i),this.xt=!1}return this.Xt}}class ai{constructor(t){this.Yh=new hi(t)}wr(){return this.Yh}}const li={Ol:4,Nl:1e-4};function oi(t,i){const n=100*(t-i)/i;return i<0?-n:n}function _i(t,i){const n=oi(t.Je(),i),s=oi(t.Qe(),i);return new mt(n,s)}function ui(t,i){const n=100*(t-i)/i+100;return i<0?-n:n}function ci(t,i){const n=ui(t.Je(),i),s=ui(t.Qe(),i);return new mt(n,s)}function di(t,i){const n=Math.abs(t);if(n<1e-15)return 0;const s=Math.log10(n+i.Nl)+i.Ol;return t<0?-s:s}function fi(t,i){const n=Math.abs(t);if(n<1e-15)return 0;const s=Math.pow(10,n-i.Ol)-i.Nl;return t<0?-s:s}function pi(t,i){if(null===t)return null;const n=di(t.Je(),i),s=di(t.Qe(),i);return new mt(n,s)}function vi(t,i){if(null===t)return null;const n=fi(t.Je(),i),s=fi(t.Qe(),i);return new mt(n,s)}function mi(t){if(null===t)return li;const i=Math.abs(t.Qe()-t.Je());if(i>=1||i<1e-15)return li;const n=Math.ceil(Math.abs(Math.log10(i))),s=li.Ol+n;return{Ol:s,Nl:1/Math.pow(10,s)}}class wi{constructor(t,i){if(this.Fl=t,this.Wl=i,function(t){if(t<0)return!1;if(t>1e18)return!0;for(let i=t;i>1;i/=10)if(i%10!=0)return!1;return!0}(this.Fl))this.Hl=[2,2.5,2];else{this.Hl=[];for(let t=this.Fl;1!==t;){if(t%2==0)this.Hl.push(2),t/=2;else{if(t%5!=0)throw new Error(\"unexpected base\");this.Hl.push(2,2.5),t/=5}if(this.Hl.length>100)throw new Error(\"something wrong with base\")}}}Ul(t,i,n){const s=0===this.Fl?0:1/this.Fl;let e=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),r=0,h=this.Wl[0];for(;;){const t=si(e,s,1e-14)&&e>s+1e-14,i=si(e,n*h,1e-14),a=si(e,1,1e-14);if(!(t&&i&&a))break;e/=h,h=this.Wl[++r%this.Wl.length]}if(e<=s+1e-14&&(e=s),e=Math.max(1,e),this.Hl.length>0&&(a=e,l=1,o=1e-14,Math.abs(a-l)<o))for(r=0,h=this.Hl[0];si(e,n*h,1e-14)&&e>s+1e-14;)e/=h,h=this.Hl[++r%this.Hl.length];var a,l,o;return e}}class Mi{constructor(t,i,n,s){this.$l=[],this.Ki=t,this.Fl=i,this.jl=n,this.ql=s}Ul(t,i){if(t<i)throw new Error(\"high < low\");const n=this.Ki.$t(),s=(t-i)*this.Yl()/n,e=new wi(this.Fl,[2,2.5,2]),r=new wi(this.Fl,[2,2,2.5]),h=new wi(this.Fl,[2.5,2,2]),a=[];return a.push(e.Ul(t,i,s),r.Ul(t,i,s),h.Ul(t,i,s)),function(t){if(t.length<1)throw Error(\"array is empty\");let i=t[0];for(let n=1;n<t.length;++n)t[n]<i&&(i=t[n]);return i}(a)}Kl(){const t=this.Ki,i=t.Lt();if(null===i)return void(this.$l=[]);const n=t.$t(),s=this.jl(n-1,i),e=this.jl(0,i),r=this.Ki.N().entireTextOnly?this.Gl()/2:0,h=r,a=n-1-r,l=Math.max(s,e),o=Math.min(s,e);if(l===o)return void(this.$l=[]);const _=this.Ul(l,o);if(this.Zl(i,_,l,o,h,a),t.Xl()&&this.Jl(_,o,l)){const t=this.Ki.Ql();this.io(i,_,h,a,t,2*t)}const u=this.$l.map((t=>t.no)),c=this.Ki.so(u);for(let t=0;t<this.$l.length;t++)this.$l[t].eo=c[t]}zl(){return this.$l}Gl(){return this.Ki.P()}Yl(){return Math.ceil(this.Gl()*this.Ki.N().tickMarkDensity)}Zl(t,i,n,s,e,r){const h=this.$l,a=this.Ki;let l=n%i;l+=l<0?i:0;const o=n>=s?1:-1;let _=null,u=0;for(let c=n-l;c>s;c-=i){const n=this.ql(c,t,!0);null!==_&&Math.abs(n-_)<this.Yl()||(n<e||n>r||(u<h.length?(h[u].Vl=n,h[u].eo=a.ro(c),h[u].no=c):h.push({Vl:n,eo:a.ro(c),no:c}),u++,_=n,a.ho()&&(i=this.Ul(c*o,s))))}h.length=u}io(t,i,n,s,e,r){const h=this.$l,a=this.ao(t,n,e,r),l=this.ao(t,s,-r,-e),o=this.ql(0,t,!0)-this.ql(i,t,!0);h.length>0&&h[0].Vl-a.Vl<o/2&&h.shift(),h.length>0&&l.Vl-h[h.length-1].Vl<o/2&&h.pop(),h.unshift(a),h.push(l)}ao(t,i,n,s){const e=(n+s)/2,r=this.jl(i+n,t),h=this.jl(i+s,t),a=Math.min(r,h),l=Math.max(r,h),o=Math.max(.1,this.Ul(l,a)),_=this.jl(i+e,t),u=_-_%o,c=this.ql(u,t,!0);return{eo:this.Ki.ro(u),Vl:c,no:u}}Jl(t,i,n){let s=c(this.Ki.ar());return this.Ki.ho()&&(s=vi(s,this.Ki.lo())),s.Je()-i<t&&n-s.Qe()<t}}function gi(t){return t.slice().sort(((t,i)=>u(t.ln())-u(i.ln())))}var bi;!function(t){t[t.Normal=0]=\"Normal\",t[t.Logarithmic=1]=\"Logarithmic\",t[t.Percentage=2]=\"Percentage\",t[t.IndexedTo100=3]=\"IndexedTo100\"}(bi||(bi={}));const Si=new nt,xi=new it(100,1);class Ci{constructor(t,i,n,s,e){this.oo=0,this._o=null,this.rr=null,this.uo=null,this.co={do:!1,fo:null},this.po=!1,this.vo=0,this.mo=0,this.wo=new d,this.Mo=new d,this.bo=[],this.So=null,this.xo=null,this.Co=null,this.yo=null,this.Po=null,this.el=xi,this.ko=mi(null),this.To=t,this.yn=i,this.Ro=n,this.Do=s,this.Io=e,this.Vo=new Mi(this,100,this.Bo.bind(this),this.Eo.bind(this))}pl(){return this.To}N(){return this.yn}vr(t){if(f(this.yn,t),this.vl(),void 0!==t.mode&&this.Ao({_e:t.mode}),void 0!==t.scaleMargins){const i=_(t.scaleMargins.top),n=_(t.scaleMargins.bottom);if(i<0||i>1)throw new Error(`Invalid top margin - expect value between 0 and 1, given=${i}`);if(n<0||n>1)throw new Error(`Invalid bottom margin - expect value between 0 and 1, given=${n}`);if(i+n>1)throw new Error(`Invalid margins - sum of margins must be less than 1, given=${i+n}`);this.Lo(),this.Co=null}}zo(){return this.yn.autoScale}Oo(){return this.po}ho(){return 1===this.yn.mode}je(){return 2===this.yn.mode}No(){return 3===this.yn.mode}lo(){return this.ko}_e(){return{hs:this.yn.autoScale,Fo:this.yn.invertScale,_e:this.yn.mode}}Ao(t){const i=this._e();let n=null;void 0!==t.hs&&(this.yn.autoScale=t.hs),void 0!==t._e&&(this.yn.mode=t._e,2!==t._e&&3!==t._e||(this.yn.autoScale=!0),this.co.do=!1),1===i._e&&t._e!==i._e&&(!function(t,i){if(null===t)return!1;const n=fi(t.Je(),i),s=fi(t.Qe(),i);return isFinite(n)&&isFinite(s)}(this.rr,this.ko)?this.yn.autoScale=!0:(n=vi(this.rr,this.ko),null!==n&&this.Wo(n))),1===t._e&&t._e!==i._e&&(n=pi(this.rr,this.ko),null!==n&&this.Wo(n));const s=i._e!==this.yn.mode;s&&(2===i._e||this.je())&&this.vl(),s&&(3===i._e||this.No())&&this.vl(),void 0!==t.Fo&&i.Fo!==t.Fo&&(this.yn.invertScale=t.Fo,this.Ho()),this.Mo.p(i,this._e())}Uo(){return this.Mo}P(){return this.Ro.fontSize}$t(){return this.oo}$o(t){this.oo!==t&&(this.oo=t,this.Lo(),this.Co=null)}jo(){if(this._o)return this._o;const t=this.$t()-this.qo()-this.Yo();return this._o=t,t}ar(){return this.Ko(),this.rr}Wo(t,i){const n=this.rr;(i||null===n&&null!==t||null!==n&&!n.Ze(t))&&(this.Co=null,this.rr=t)}Go(t){this.Wo(t),this.Zo(null!==t)}Zi(){return this.Ko(),0===this.oo||!this.rr||this.rr.Zi()}Xo(t){return this.Fo()?t:this.$t()-1-t}Nt(t,i){return this.je()?t=oi(t,i):this.No()&&(t=ui(t,i)),this.Eo(t,i)}Jo(t,i,n){this.Ko();const s=this.Yo(),e=u(this.ar()),r=e.Je(),h=e.Qe(),a=this.jo()-1,l=this.Fo(),o=a/(h-r),_=void 0===n?0:n.from,c=void 0===n?t.length:n.to,d=this.Qo();for(let n=_;n<c;n++){const e=t[n],h=e.Mt;if(isNaN(h))continue;let a=h;null!==d&&(a=d(e.Mt,i));const _=s+o*(a-r),u=l?_:this.oo-1-_;e.ut=u}}t_(t,i,n){this.Ko();const s=this.Yo(),e=u(this.ar()),r=e.Je(),h=e.Qe(),a=this.jo()-1,l=this.Fo(),o=a/(h-r),_=void 0===n?0:n.from,c=void 0===n?t.length:n.to,d=this.Qo();for(let n=_;n<c;n++){const e=t[n];let h=e.jr,a=e.qr,_=e.Yr,u=e.Kr;null!==d&&(h=d(e.jr,i),a=d(e.qr,i),_=d(e.Yr,i),u=d(e.Kr,i));let c=s+o*(h-r),f=l?c:this.oo-1-c;e.i_=f,c=s+o*(a-r),f=l?c:this.oo-1-c,e.n_=f,c=s+o*(_-r),f=l?c:this.oo-1-c,e.s_=f,c=s+o*(u-r),f=l?c:this.oo-1-c,e.e_=f}}Tn(t,i){const n=this.Bo(t,i);return this.r_(n,i)}r_(t,i){let n=t;return this.je()?n=function(t,i){return i<0&&(t=-t),t/100*i+i}(n,i):this.No()&&(n=function(t,i){return t-=100,i<0&&(t=-t),t/100*i+i}(n,i)),n}kl(){return this.bo}Dt(){return this.xo||(this.xo=gi(this.bo)),this.xo}h_(t){-1===this.bo.indexOf(t)&&(this.bo.push(t),this.vl(),this.a_())}l_(t){const i=this.bo.indexOf(t);if(-1===i)throw new Error(\"source is not attached to scale\");this.bo.splice(i,1),0===this.bo.length&&(this.Ao({hs:!0}),this.Wo(null)),this.vl(),this.a_()}Lt(){let t=null;for(const i of this.bo){const n=i.Lt();null!==n&&((null===t||n.Oa<t.Oa)&&(t=n))}return null===t?null:t.Wt}Fo(){return this.yn.invertScale}zl(){const t=null===this.Lt();if(null!==this.Co&&(t||this.Co.o_===t))return this.Co.zl;this.Vo.Kl();const i=this.Vo.zl();return this.Co={zl:i,o_:t},this.wo.p(),i}__(){return this.wo}u_(t){this.je()||this.No()||null===this.yo&&null===this.uo&&(this.Zi()||(this.yo=this.oo-t,this.uo=u(this.ar()).Xe()))}c_(t){if(this.je()||this.No())return;if(null===this.yo)return;this.Ao({hs:!1}),(t=this.oo-t)<0&&(t=0);let i=(this.yo+.2*(this.oo-1))/(t+.2*(this.oo-1));const n=u(this.uo).Xe();i=Math.max(i,.1),n.ir(i),this.Wo(n)}d_(){this.je()||this.No()||(this.yo=null,this.uo=null)}f_(t){this.zo()||null===this.Po&&null===this.uo&&(this.Zi()||(this.Po=t,this.uo=u(this.ar()).Xe()))}p_(t){if(this.zo())return;if(null===this.Po)return;const i=u(this.ar()).tr()/(this.jo()-1);let n=t-this.Po;this.Fo()&&(n*=-1);const s=n*i,e=u(this.uo).Xe();e.nr(s),this.Wo(e,!0),this.Co=null}v_(){this.zo()||null!==this.Po&&(this.Po=null,this.uo=null)}sl(){return this.el||this.vl(),this.el}Ji(t,i){switch(this.yn.mode){case 2:return this.m_(oi(t,i));case 3:return this.sl().format(ui(t,i));default:return this.cr(t)}}ro(t){switch(this.yn.mode){case 2:return this.m_(t);case 3:return this.sl().format(t);default:return this.cr(t)}}so(t){switch(this.yn.mode){case 2:return this.w_(t);case 3:return this.sl().formatTickmarks(t);default:return this.M_(t)}}xa(t){return this.cr(t,u(this.So).sl())}Ca(t,i){return t=oi(t,i),this.m_(t,Si)}g_(){return this.bo}b_(t){this.co={fo:t,do:!1}}Nn(){this.bo.forEach((t=>t.Nn()))}Xl(){return this.yn.ensureEdgeTickMarksVisible&&this.zo()}Ql(){return this.P()/2}vl(){this.Co=null;let t=1/0;this.So=null;for(const i of this.bo)i.ln()<t&&(t=i.ln(),this.So=i);let i=100;null!==this.So&&(i=Math.round(this.So.Kh())),this.el=xi,this.je()?(this.el=Si,i=100):this.No()?(this.el=new it(100,1),i=100):null!==this.So&&(this.el=this.So.sl()),this.Vo=new Mi(this,i,this.Bo.bind(this),this.Eo.bind(this)),this.Vo.Kl()}a_(){this.xo=null}S_(){return null===this.So||this.je()||this.No()?1:1/this.So.Kh()}Xi(){return this.Io}Zo(t){this.po=t}qo(){return this.Fo()?this.yn.scaleMargins.bottom*this.$t()+this.mo:this.yn.scaleMargins.top*this.$t()+this.vo}Yo(){return this.Fo()?this.yn.scaleMargins.top*this.$t()+this.vo:this.yn.scaleMargins.bottom*this.$t()+this.mo}Ko(){this.co.do||(this.co.do=!0,this.x_())}Lo(){this._o=null}Eo(t,i){if(this.Ko(),this.Zi())return 0;t=this.ho()&&t?di(t,this.ko):t;const n=u(this.ar()),s=this.Yo()+(this.jo()-1)*(t-n.Je())/n.tr();return this.Xo(s)}Bo(t,i){if(this.Ko(),this.Zi())return 0;const n=this.Xo(t),s=u(this.ar()),e=s.Je()+s.tr()*((n-this.Yo())/(this.jo()-1));return this.ho()?fi(e,this.ko):e}Ho(){this.Co=null,this.Vo.Kl()}x_(){if(this.Oo()&&!this.zo())return;const t=this.co.fo;if(null===t)return;let i=null;const n=this.g_();let s=0,e=0;for(const r of n){if(!r.It())continue;const n=r.Lt();if(null===n)continue;const h=r.la(t.Na(),t.bi());let a=h&&h.ar();if(null!==a){switch(this.yn.mode){case 1:a=pi(a,this.ko);break;case 2:a=_i(a,n.Wt);break;case 3:a=ci(a,n.Wt)}if(i=null===i?a:i.Ss(u(a)),null!==h){const t=h.lr();null!==t&&(s=Math.max(s,t.above),e=Math.max(e,t.below))}}}if(this.Xl()&&(s=Math.max(s,this.Ql()),e=Math.max(e,this.Ql())),s===this.vo&&e===this.mo||(this.vo=s,this.mo=e,this.Co=null,this.Lo()),null!==i){if(i.Je()===i.Qe()){const t=5*this.S_();this.ho()&&(i=vi(i,this.ko)),i=new mt(i.Je()-t,i.Qe()+t),this.ho()&&(i=pi(i,this.ko))}if(this.ho()){const t=vi(i,this.ko),n=mi(t);if(r=n,h=this.ko,r.Ol!==h.Ol||r.Nl!==h.Nl){const s=null!==this.uo?vi(this.uo,this.ko):null;this.ko=n,i=pi(t,n),null!==s&&(this.uo=pi(s,n))}}this.Wo(i)}else null===this.rr&&(this.Wo(new mt(-.5,.5)),this.ko=mi(null));var r,h}Qo(){return this.je()?oi:this.No()?ui:this.ho()?t=>di(t,this.ko):null}C_(t,i,n){return void 0===i?(void 0===n&&(n=this.sl()),n.format(t)):i(t)}y_(t,i,n){return void 0===i?(void 0===n&&(n=this.sl()),n.formatTickmarks(t)):i(t)}cr(t,i){return this.C_(t,this.Do.priceFormatter,i)}M_(t,i){const n=this.Do.priceFormatter;return this.y_(t,this.Do.tickmarksPriceFormatter??(n?t=>t.map(n):void 0),i)}m_(t,i){return this.C_(t,this.Do.percentageFormatter,i)}w_(t,i){const n=this.Do.percentageFormatter;return this.y_(t,this.Do.tickmarksPercentageFormatter??(n?t=>t.map(n):void 0),i)}}function yi(t){return t instanceof Jt}class Pi{constructor(t,i){this.bo=[],this.P_=new Map,this.oo=0,this.k_=0,this.T_=1,this.xo=null,this.R_=null,this.D_=!1,this.I_=new d,this.fa=[],this.ia=t,this.sn=i,this.V_=new ai(this);const n=i.N();this.B_=this.E_(\"left\",n.leftPriceScale),this.A_=this.E_(\"right\",n.rightPriceScale),this.B_.Uo().i(this.L_.bind(this,this.B_),this),this.A_.Uo().i(this.L_.bind(this,this.A_),this),this.z_(n)}z_(t){if(t.leftPriceScale&&this.B_.vr(t.leftPriceScale),t.rightPriceScale&&this.A_.vr(t.rightPriceScale),t.localization&&(this.B_.vl(),this.A_.vl()),t.overlayPriceScales){const i=Array.from(this.P_.values());for(const n of i){const i=u(n[0].Ft());i.vr(t.overlayPriceScales),t.localization&&i.vl()}}}O_(t){switch(t){case\"left\":return this.B_;case\"right\":return this.A_}return this.P_.has(t)?_(this.P_.get(t))[0].Ft():null}m(){this.Qt().N_().u(this),this.B_.Uo().u(this),this.A_.Uo().u(this),this.bo.forEach((t=>{t.m&&t.m()})),this.fa=this.fa.filter((t=>{const i=t.Qh();return i.detached&&i.detached(),!1})),this.I_.p()}F_(){return this.T_}W_(t){this.T_=t}Qt(){return this.sn}nn(){return this.k_}$t(){return this.oo}H_(t){this.k_=t,this.U_()}$o(t){this.oo=t,this.B_.$o(t),this.A_.$o(t),this.bo.forEach((i=>{if(this.Gs(i)){const n=i.Ft();null!==n&&n.$o(t)}})),this.U_()}j_(t){this.D_=t}q_(){return this.D_}Y_(){return this.bo.filter(yi)}kl(){return this.bo}Gs(t){const i=t.Ft();return null===i||this.B_!==i&&this.A_!==i}h_(t,i,n){this.K_(t,i,n?t.ln():this.bo.length)}l_(t,i){const n=this.bo.indexOf(t);o(-1!==n,\"removeDataSource: invalid data source\"),this.bo.splice(n,1),i||this.bo.forEach(((t,i)=>t._n(i)));const s=u(t.Ft()).pl();if(this.P_.has(s)){const i=_(this.P_.get(s)),n=i.indexOf(t);-1!==n&&(i.splice(n,1),0===i.length&&this.P_.delete(s))}const e=t.Ft();e&&e.kl().indexOf(t)>=0&&(e.l_(t),this.G_(e)),this.Z_()}Xs(t){return t===this.B_?\"left\":t===this.A_?\"right\":\"overlay\"}X_(){return this.B_}J_(){return this.A_}Q_(t,i){t.u_(i)}tu(t,i){t.c_(i),this.U_()}iu(t){t.d_()}nu(t,i){t.f_(i)}su(t,i){t.p_(i),this.U_()}eu(t){t.v_()}U_(){this.bo.forEach((t=>{t.Nn()}))}kn(){const[t,i]=this.ru();let n=null;return t.N().visible&&0!==t.kl().length?n=t:i.N().visible&&0!==i.kl().length?n=i:0!==this.bo.length&&(n=this.bo[0].Ft()),null===n&&(n=this.Zs()??t),n}Zs(){const[t,i]=this.ru();return t.N().visible?t:i.N().visible?i:null}G_(t){null!==t&&t.zo()&&this.hu(t)}au(t){const i=this.ia.Ee();t.Ao({hs:!0}),null!==i&&t.b_(i),this.U_()}lu(){this.hu(this.B_),this.hu(this.A_)}ou(){this.G_(this.B_),this.G_(this.A_),this.bo.forEach((t=>{this.Gs(t)&&this.G_(t.Ft())})),this.U_(),this.sn.mr()}Dt(){return null===this.xo&&(this.xo=gi(this.bo)),this.xo}_u(){const t=this.Dt(),i=this.sn.cu()?.uu,n=this.sn.N().hoveredSeriesOnTop,s=this.R_;if(null!==s&&s.Kh===t&&s.du===i&&s.fu===n)return s.pu;const e=function(t,i,n){if(!n)return t;const s=t.indexOf(i);if(-1===s||s===t.length-1)return t;const e=[];for(let i=0;i<t.length;i++)i!==s&&e.push(t[i]);return e.push(t[s]),e}(t,i,n);return this.R_={Kh:t,du:i,fu:n,pu:e},e}vu(t,i){i=ni(i,0,this.bo.length-1);const n=this.bo.indexOf(t);o(-1!==n,\"setSeriesOrder: invalid data source\"),this.bo.splice(n,1),this.bo.splice(i,0,t),this.bo.forEach(((t,i)=>t._n(i))),this.Z_();for(const t of[this.B_,this.A_])t.a_(),t.vl();this.sn.mr()}Vt(){return this.Dt().filter(yi)}mu(){return this.I_}wu(){return this.V_}ol(t){this.fa.push(new Ft(t))}_l(t){this.fa=this.fa.filter((i=>i.Qh()!==t)),t.detached&&t.detached(),this.sn.mr()}Mu(){return this.fa}il(t,i){return this.fa.map((n=>n.Qs(t,i))).filter((t=>null!==t))}hu(t){const i=t.g_();if(i&&i.length>0&&!this.ia.Zi()){const i=this.ia.Ee();null!==i&&t.b_(i)}t.Nn()}K_(t,i,n){let s=this.O_(i);if(null===s&&(s=this.E_(i,this.sn.N().overlayPriceScales)),this.bo.splice(n,0,t),!Z(i)){const n=this.P_.get(i)||[];n.push(t),this.P_.set(i,n)}t._n(n),s.h_(t),t.un(s),this.G_(s),this.Z_()}Z_(){this.xo=null,this.R_=null}ru(){return\"left\"===this.sn.N().defaultVisiblePriceScaleId?[this.B_,this.A_]:[this.A_,this.B_]}L_(t,i,n){i._e!==n._e&&this.hu(t)}E_(t,i){const n={visible:!0,autoScale:!0,...M(i)},s=new Ci(t,n,this.sn.N().layout,this.sn.N().localization,this.sn.Xi());return s.$o(this.$t()),s}}function ki(t,i){return null===i||(2===t.se&&2!==i.se||(2!==i.se||2===t.se)&&(t.ne!==i.ne&&t.ne<i.ne))}function Ti(t){return{te:t.te,ie:t.ie}}function Ri(t){return{ne:t.distance??0,se:t.hitTestPriority??(\"marker\"===t.itemType?2:0),ee:t.itemType??\"primitive\",gu:t.cursorStyle,te:t.externalId}}function Di(t){return{uu:t.uu,bu:Ti(t.Su),gu:t.Su.gu,ee:t.Su.ee??\"primitive\"}}function Ii(t,i,n,s){let e=null;for(const r of t){let t=r.Qs?.(i,n,s)??null;if(null===t){const e=r.Tt(s);t=null!==e&&e.Qs?e.Qs(i,n):null}if(null!==t){const i={xu:r,Su:t};(null===e||ki(i.Su,e.Su))&&(e=i)}}return e}function Vi(t){return void 0!==t.jn}function Bi(t,i,n){const s=[t,...t.Dt()].reverse(),e=function(t,i,n){let s,e,r;for(const l of t){const t=l.il?.(i,n)??[];for(const i of t){const t=Ri(i);h=i.zOrder,a=s?.zOrder,(!a||\"top\"===h&&\"top\"!==a||\"normal\"===h&&\"bottom\"===a||i.zOrder===s?.zOrder&&void 0!==e&&ki(t,e)||i.zOrder===s?.zOrder&&void 0===e)&&(s=i,e=t,r=l)}}var h,a;return s&&r&&e?{Su:e,Cu:s,uu:r}:null}(s,i,n);if(\"top\"===e?.Cu.zOrder)return Di(e);let r=null,h=null;for(const a of s){if(e&&e.uu===a&&\"bottom\"!==e.Cu.zOrder&&!e.Cu.isBackground)return r??Di(e);if(Vi(a)){const s=Ii(a.jn(t),i,n,t);if(null!==s){const t={uu:a,xu:s.xu,bu:Ti(s.Su),gu:s.Su.gu,ee:s.Su.ee??\"primitive\"};(null===r||ki(s.Su,h))&&(r=t,h=s.Su)}}if(e&&e.uu===a&&\"bottom\"!==e.Cu.zOrder&&e.Cu.isBackground)return r??Di(e)}return null!==r?r:e?.Cu?Di(e):null}class Ei{constructor(t,i,n=50){this.Vs=0,this.Bs=1,this.Es=1,this.Ls=new Map,this.As=new Map,this.yu=t,this.Pu=i,this.zs=n}ku(t){const i=t.time,n=this.Pu.cacheKey(i),s=this.Ls.get(n);if(void 0!==s)return s.Tu;if(this.Vs===this.zs){const t=this.As.get(this.Es);this.As.delete(this.Es),this.Ls.delete(_(t)),this.Es++,this.Vs--}const e=this.yu(t);return this.Ls.set(n,{Tu:e,Ws:this.Bs}),this.As.set(this.Bs,n),this.Vs++,this.Bs++,e}}class Ai{constructor(t,i){o(t<=i,\"right should be >= left\"),this.Ru=t,this.Du=i}Na(){return this.Ru}bi(){return this.Du}Iu(){return this.Du-this.Ru+1}ze(t){return this.Ru<=t&&t<=this.Du}Ze(t){return this.Ru===t.Na()&&this.Du===t.bi()}}function Li(t,i){return null===t||null===i?t===i:t.Ze(i)}class zi{constructor(){this.Vu=new Map,this.Ls=null,this.Bu=!1}Eu(t){this.Bu=t,this.Ls=null}Au(t,i){this.Lu(i),this.Ls=null;for(let n=i;n<t.length;++n){const i=t[n];let s=this.Vu.get(i.timeWeight);void 0===s&&(s=[],this.Vu.set(i.timeWeight,s)),s.push({index:n,time:i.time,weight:i.timeWeight,originalTime:i.originalTime})}}zu(t,i,n,s,e){const r=Math.ceil(i/t);return null!==this.Ls&&this.Ls.Ou===r&&e===this.Ls.Nu&&n===this.Ls.Fu||(this.Ls={Nu:e,Fu:n,zl:this.Wu(r,n,s),Ou:r}),this.Ls.zl}Lu(t){if(0===t)return void this.Vu.clear();const i=[];this.Vu.forEach(((n,s)=>{t<=n[0].index?i.push(s):n.splice(Rt(n,t,(i=>i.index<t)),1/0)}));for(const t of i)this.Vu.delete(t)}Wu(t,i,n){let s=[];const e=t=>!i||n.has(t.index);for(const i of Array.from(this.Vu.keys()).sort(((t,i)=>i-t))){if(!this.Vu.get(i))continue;const n=s;s=[];const r=n.length;let h=0;const a=_(this.Vu.get(i)),l=a.length;let o=1/0,u=-1/0;for(let i=0;i<l;i++){const l=a[i],_=l.index;for(;h<r;){const t=n[h],i=t.index;if(!(i<_&&e(t))){o=i;break}h++,s.push(t),u=i,o=1/0}if(o-_>=t&&_-u>=t&&e(l))s.push(l),u=_;else if(this.Bu)return n}for(;h<r;h++)e(n[h])&&s.push(n[h])}return s}}class Oi{constructor(t){this.Hu=t}Uu(){return null===this.Hu?null:new Ai(Math.floor(this.Hu.Na()),Math.ceil(this.Hu.bi()))}$u(){return this.Hu}static ju(){return new Oi(null)}}function Ni(t,i){return t.weight>i.weight?t:i}class Fi{constructor(t,i,n,s){this.k_=0,this.qu=null,this.Yu=[],this.Po=null,this.yo=null,this.Ku=new zi,this.Gu=new Map,this.Zu=Oi.ju(),this.Xu=!0,this.Ju=new d,this.Qu=new d,this.tc=new d,this.nc=null,this.sc=null,this.ec=new Map,this.rc=-1,this.hc=[],this.ac=1,this.yn=i,this.Do=n,this.lc=i.rightOffset,this.oc=i.barSpacing,this.sn=t,this._c(i),this.Pu=s,this.uc(),this.Ku.Eu(i.uniformDistribution),this.cc(),this.dc()}N(){return this.yn}fc(t){f(this.Do,t),this.vc(),this.uc()}vr(t,i){f(this.yn,t),this.yn.fixLeftEdge&&this.mc(),this.yn.fixRightEdge&&this.wc(),void 0!==t.barSpacing&&this.sn.Ms(t.barSpacing),void 0!==t.rightOffset&&this.sn.gs(t.rightOffset),this._c(t),void 0===t.minBarSpacing&&void 0===t.maxBarSpacing||this.sn.Ms(t.barSpacing??this.oc),void 0!==t.ignoreWhitespaceIndices&&t.ignoreWhitespaceIndices!==this.yn.ignoreWhitespaceIndices&&this.dc(),this.vc(),this.uc(),void 0===t.enableConflation&&void 0===t.conflationThresholdFactor||this.cc(),this.tc.p()}Rn(t){return this.Yu[t]?.time??null}en(t){return this.Yu[t]??null}Mc(t,i){if(this.Yu.length<1)return null;if(this.Pu.key(t)>this.Pu.key(this.Yu[this.Yu.length-1].time))return i?this.Yu.length-1:null;const n=Rt(this.Yu,this.Pu.key(t),((t,i)=>this.Pu.key(t.time)<i));return this.Pu.key(t)<this.Pu.key(this.Yu[n].time)?i?n:null:n}Zi(){return 0===this.k_||0===this.Yu.length||null===this.qu}gc(){return this.Yu.length>0}Ee(){return this.bc(),this.Zu.Uu()}Sc(){return this.bc(),this.Zu.$u()}xc(){const t=this.Ee();if(null===t)return null;const i={from:t.Na(),to:t.bi()};return this.Cc(i)}Cc(t){const i=Math.round(t.from),n=Math.round(t.to),s=u(this.yc()),e=u(this.Pc());return{from:u(this.en(Math.max(s,i))),to:u(this.en(Math.min(e,n)))}}kc(t){return{from:u(this.Mc(t.from,!0)),to:u(this.Mc(t.to,!0))}}nn(){return this.k_}H_(t){if(!isFinite(t)||t<=0)return;if(this.k_===t)return;const i=this.Sc(),n=this.k_;if(this.k_=t,this.Xu=!0,this.yn.lockVisibleTimeRangeOnResize&&0!==n){const i=this.oc*t/n;this.oc=i}if(this.yn.fixLeftEdge&&null!==i&&i.Na()<=0){const i=n-t;this.lc-=Math.round(i/this.oc)+1,this.Xu=!0}this.Tc(),this.Rc()}jt(t){if(this.Zi()||!v(t))return 0;const i=this.Dc()+this.lc-t;return this.k_-(i+.5)*this.oc-1}Ic(t,i){const n=this.Dc(),s=void 0===i?0:i.from,e=void 0===i?t.length:i.to;for(let i=s;i<e;i++){const s=t[i].wt,e=n+this.lc-s,r=this.k_-(e+.5)*this.oc-1;t[i]._t=r}}Vc(t,i){const n=Math.ceil(this.Bc(t));return i&&this.yn.ignoreWhitespaceIndices&&!this.Ec(n)?this.Ac(n):n}gs(t){this.Xu=!0,this.lc=t,this.Rc(),this.sn.Lc(),this.sn.mr()}ml(){return this.oc}Ms(t){const i=this.oc;if(this.zc(t),void 0!==this.yn.rightOffsetPixels&&0!==i){const t=this.lc*i/this.oc;this.lc=t}this.Rc(),this.sn.Lc(),this.sn.mr()}Oc(){return this.lc}zl(){if(this.Zi())return null;if(null!==this.sc)return this.sc;const t=this.oc,i=5*(this.sn.N().layout.fontSize+4)/8*(this.yn.tickMarkMaxCharacterLength||8),n=Math.round(i/t),s=u(this.Ee()),e=Math.max(s.Na(),s.Na()-n),r=Math.max(s.bi(),s.bi()-n),h=this.Ku.zu(t,i,this.yn.ignoreWhitespaceIndices,this.ec,this.rc),a=this.yc()+n,l=this.Pc()-n,o=this.Nc(),_=this.yn.fixLeftEdge||o,c=this.yn.fixRightEdge||o;let d=0;for(const t of h){if(!(e<=t.index&&t.index<=r))continue;let n;d<this.hc.length?(n=this.hc[d],n.coord=this.jt(t.index),n.label=this.Fc(t),n.weight=t.weight):(n={needAlignCoordinate:!1,coord:this.jt(t.index),label:this.Fc(t),weight:t.weight},this.hc.push(n)),this.oc>i/2&&!o?n.needAlignCoordinate=!1:n.needAlignCoordinate=_&&t.index<=a||c&&t.index>=l,d++}return this.hc.length=d,this.sc=this.hc,this.hc}Wc(){let t;this.Xu=!0,this.Ms(this.yn.barSpacing),t=void 0!==this.yn.rightOffsetPixels?this.yn.rightOffsetPixels/this.ml():this.yn.rightOffset,this.gs(t)}Hc(t){this.Xu=!0,this.qu=t,this.Rc(),this.mc()}Uc(t,i){const n=this.Bc(t),s=this.ml(),e=s+i*(s/10);this.Ms(e),this.yn.rightBarStaysOnScroll||this.gs(this.Oc()+(n-this.Bc(t)))}u_(t){this.Po&&this.v_(),null===this.yo&&null===this.nc&&(this.Zi()||(this.yo=t,this.$c()))}c_(t){if(null===this.nc)return;const i=ni(this.k_-t,0,this.k_),n=ni(this.k_-u(this.yo),0,this.k_);0!==i&&0!==n&&this.Ms(this.nc.ml*i/n)}d_(){null!==this.yo&&(this.yo=null,this.jc())}f_(t){null===this.Po&&null===this.nc&&(this.Zi()||(this.Po=t,this.$c()))}p_(t){if(null===this.Po)return;const i=(this.Po-t)/this.ml();this.lc=u(this.nc).Oc+i,this.Xu=!0,this.Rc()}v_(){null!==this.Po&&(this.Po=null,this.jc())}qc(){this.Yc(this.yn.rightOffset)}Yc(t,i=400){if(!isFinite(t))throw new RangeError(\"offset is required and must be finite number\");if(!isFinite(i)||i<=0)throw new RangeError(\"animationDuration (optional) must be finite positive number\");const n=this.lc,s=performance.now();this.sn.ps({Kc:t=>(t-s)/i>=1,Gc:e=>{const r=(e-s)/i;return r>=1?t:n+(t-n)*r}})}Pt(t,i){this.Xu=!0,this.Yu=t,this.Ku.Au(t,i),this.Rc()}Zc(){return this.Ju}Xc(){return this.Qu}Jc(){return this.tc}Dc(){return this.qu||0}Qc(t,i){const n=t.Iu(),s=i&&this.yn.rightOffsetPixels||0;this.zc((this.k_-s)/n),this.lc=t.bi()-this.Dc(),i&&(this.lc=s?s/this.ml():this.yn.rightOffset),this.Rc(),this.Xu=!0,this.sn.Lc(),this.sn.mr()}td(){const t=this.yc(),i=this.Pc();if(null===t||null===i)return;const n=!this.yn.rightOffsetPixels&&this.yn.rightOffset||0;this.Qc(new Ai(t,i+n),!0)}nd(t){const i=new Ai(t.from,t.to);this.Qc(i)}rn(t){return void 0!==this.Do.timeFormatter?this.Do.timeFormatter(t.originalTime):this.Pu.formatHorzItem(t.time)}dc(){if(!this.yn.ignoreWhitespaceIndices)return;this.ec.clear();const t=this.sn.Jn();for(const i of t)for(const t of i.fl())this.ec.set(t,!0);this.rc++}sd(){return this.ac}Sl(){const t=1/(window.devicePixelRatio||1),i=this.yn.minBarSpacing;if(i>=t)return[1];const n=[1];let s=2;for(;s<=512;){i<t/s&&n.push(s),s*=2}return n}Nc(){const t=this.sn.N().handleScroll,i=this.sn.N().handleScale;return!(t.horzTouchDrag||t.mouseWheel||t.pressedMouseMove||t.vertTouchDrag||i.axisDoubleClickReset.time||i.axisPressedMouseMove.time||i.mouseWheel||i.pinch)}yc(){return 0===this.Yu.length?null:0}Pc(){return 0===this.Yu.length?null:this.Yu.length-1}ed(t){return(this.k_-1-t)/this.oc}Bc(t){const i=this.ed(t),n=this.Dc()+this.lc-i;return Math.round(1e6*n)/1e6}zc(t){const i=this.oc;this.oc=t,this.Tc(),i!==this.oc&&(this.Xu=!0,this.rd(),this.cc())}bc(){if(!this.Xu)return;if(this.Xu=!1,this.Zi())return void this.hd(Oi.ju());const t=this.Dc(),i=this.k_/this.oc,n=this.lc+t,s=new Ai(n-i+1,n);this.hd(new Oi(s))}Tc(){const t=ni(this.oc,this.ad(),this.ld());this.oc!==t&&(this.oc=t,this.Xu=!0)}ld(){return this.yn.maxBarSpacing>0?this.yn.maxBarSpacing:.5*this.k_}ad(){return this.yn.fixLeftEdge&&this.yn.fixRightEdge&&0!==this.Yu.length?this.k_/this.Yu.length:this.yn.minBarSpacing}cc(){if(!this.yn.enableConflation)return void(this.ac=1);const t=1/(window.devicePixelRatio||1)*(this.yn.conflationThresholdFactor??1);if(this.oc>=t)return void(this.ac=1);const i=t/this.oc,n=Math.pow(2,Math.floor(Math.log2(i)));this.ac=Math.min(n,512)}Rc(){const t=this.od();null!==t&&this.lc<t&&(this.lc=t,this.Xu=!0);const i=this._d();this.lc>i&&(this.lc=i,this.Xu=!0)}od(){const t=this.yc(),i=this.qu;if(null===t||null===i)return null;return t-i-1+(this.yn.fixLeftEdge?this.k_/this.oc:Math.min(2,this.Yu.length))}_d(){return this.yn.fixRightEdge?0:this.k_/this.oc-Math.min(2,this.Yu.length)}$c(){this.nc={ml:this.ml(),Oc:this.Oc()}}jc(){this.nc=null}Fc(t){let i=this.Gu.get(t.weight);return void 0===i&&(i=new Ei((t=>this.ud(t)),this.Pu),this.Gu.set(t.weight,i)),i.ku(t)}ud(t){return this.Pu.formatTickmark(t,this.Do)}hd(t){const i=this.Zu;this.Zu=t,Li(i.Uu(),this.Zu.Uu())||this.Ju.p(),Li(i.$u(),this.Zu.$u())||this.Qu.p(),this.rd()}rd(){this.sc=null}vc(){this.rd(),this.Gu.clear()}uc(){this.Pu.updateFormatter(this.Do)}mc(){if(!this.yn.fixLeftEdge)return;const t=this.yc();if(null===t)return;const i=this.Ee();if(null===i)return;const n=i.Na()-t;if(n<0){const t=this.lc-n-1;this.gs(t)}this.Tc()}wc(){this.Rc(),this.Tc()}Ec(t){return!this.yn.ignoreWhitespaceIndices||(this.ec.get(t)||!1)}Ac(t){const i=function*(t){const i=Math.round(t),n=i<t;let s=1;for(;;)n?(yield i+s,yield i-s):(yield i-s,yield i+s),s++}(t),n=this.Pc();for(;n;){const t=i.next().value;if(this.ec.get(t))return t;if(t<0||t>n)break}return t}_c(t){if(void 0!==t.rightOffsetPixels){const i=t.rightOffsetPixels/(t.barSpacing||this.oc);this.sn.gs(i)}}}var Wi,Hi,Ui,$i,ji;!function(t){t[t.OnTouchEnd=0]=\"OnTouchEnd\",t[t.OnNextTap=1]=\"OnNextTap\"}(Wi||(Wi={}));class qi{constructor(t,i,n){this.dd=[],this.fd=[],this.pd=null,this.k_=0,this.vd=null,this.md=new d,this.wd=new d,this.Md=null,this.gd=t,this.yn=i,this.Pu=n,this.Io=new k(this.yn.layout.colorParsers),this.bd=new C(this),this.ia=new Fi(this,i.timeScale,this.yn.localization,n),this.Ct=new G(this,i.crosshair),this.Sd=new ii(i.crosshair),i.addDefaultPane&&(this.xd(0),this.dd[0].W_(2)),this.Cd=this.yd(0),this.Pd=this.yd(1)}ka(){this.kd(X.ys())}mr(){this.kd(X.Cs())}Ya(){this.kd(new X(1))}Ta(t){const i=this.Td(t);this.kd(i)}cu(){return this.vd}Rd(t){if(this.vd?.uu===t?.uu&&this.vd?.bu?.te===t?.bu?.te&&this.vd?.bu?.ie===t?.bu?.ie&&this.vd?.gu===t?.gu&&this.vd?.ee===t?.ee)return;const i=this.vd;this.vd=t,null!==i&&this.Ta(i.uu),null!==t&&t.uu!==i?.uu&&this.Ta(t.uu)}N(){return this.yn}vr(t){f(this.yn,t),this.dd.forEach((i=>i.z_(t))),void 0!==t.timeScale&&this.ia.vr(t.timeScale),void 0!==t.localization&&this.ia.fc(t.localization),(t.leftPriceScale||t.rightPriceScale)&&this.md.p(),this.Cd=this.yd(0),this.Pd=this.yd(1),this.ka()}Dd(t,i,n=0){const s=this.dd[n];if(void 0===s)return;if(\"left\"===t)return f(this.yn,{leftPriceScale:i}),s.z_({leftPriceScale:i}),this.md.p(),void this.ka();if(\"right\"===t)return f(this.yn,{rightPriceScale:i}),s.z_({rightPriceScale:i}),this.md.p(),void this.ka();const e=this.Id(t,n);null!==e&&(e.Ft.vr(i),this.md.p())}Id(t,i){const n=this.dd[i];if(void 0===n)return null;const s=n.O_(t);return null!==s?{Kn:n,Ft:s}:null}Et(){return this.ia}Gn(){return this.dd}Vd(){return this.Ct}Bd(){return this.wd}Ed(t,i){t.$o(i),this.Lc()}H_(t){this.k_=t,this.ia.H_(this.k_),this.dd.forEach((i=>i.H_(t))),this.Lc()}Ad(t){1!==this.dd.length&&(o(t>=0&&t<this.dd.length,\"Invalid pane index\"),this.dd.splice(t,1),this.ka())}Ld(t,i){if(this.dd.length<2)return;o(t>=0&&t<this.dd.length,\"Invalid pane index\");const n=this.dd[t],s=this.dd.reduce(((t,i)=>t+i.F_()),0),e=this.dd.reduce(((t,i)=>t+i.$t()),0),r=e-30*(this.dd.length-1);i=Math.min(r,Math.max(30,i));const h=s/e,a=n.$t();n.W_(i*h);let l=i-a,_=this.dd.length-1;for(const t of this.dd)if(t!==n){const i=Math.min(r,Math.max(30,t.$t()-l/_));l-=t.$t()-i,_-=1;const n=i*h;t.W_(n)}this.ka()}zd(t,i){o(t>=0&&t<this.dd.length&&i>=0&&i<this.dd.length,\"Invalid pane index\");const n=this.dd[t],s=this.dd[i];this.dd[t]=s,this.dd[i]=n,this.ka()}Od(t,i){if(o(t>=0&&t<this.dd.length&&i>=0&&i<this.dd.length,\"Invalid pane index\"),t===i)return;const[n]=this.dd.splice(t,1);this.dd.splice(i,0,n),this.ka()}Q_(t,i,n){t.Q_(i,n)}tu(t,i,n){t.tu(i,n),this.Ra(),this.kd(this.Nd(t,2))}iu(t,i){t.iu(i),this.kd(this.Nd(t,2))}nu(t,i,n){i.zo()||t.nu(i,n)}su(t,i,n){i.zo()||(t.su(i,n),this.Ra(),this.kd(this.Nd(t,2)))}eu(t,i){i.zo()||(t.eu(i),this.kd(this.Nd(t,2)))}au(t,i){t.au(i),this.kd(this.Nd(t,2))}Fd(t){this.ia.u_(t)}Wd(t,i){const n=this.Et();if(n.Zi()||0===i)return;const s=n.nn();t=Math.max(1,Math.min(t,s)),n.Uc(t,i),this.Lc()}Hd(t){this.Ud(0),this.$d(t),this.jd()}qd(t){this.ia.c_(t),this.Lc()}Yd(){this.ia.d_(),this.mr()}Ud(t){this.ia.f_(t)}$d(t){this.ia.p_(t),this.Lc()}jd(){this.ia.v_(),this.mr()}Jn(){return this.fd}Wn(){return null===this.pd&&(this.pd=this.fd.filter((t=>t.It()))),this.pd}Pa(){this.pd=null}Kd(t,i,n,s,e){this.Ct.In(t,i);let r=NaN,h=this.ia.Vc(t,!0);const a=this.ia.Ee();null!==a&&(h=Math.min(Math.max(a.Na(),h),a.bi())),h=this.Ct.Fn(h);const l=s.kn(),o=l.Lt();if(null!==o&&(r=l.Tn(i,o)),r=this.Sd.Pl(r,h,s),this.Ct.An(h,r,s),this.Ya(),!e){const e=Bi(s,t,i);this.Rd(e&&{uu:e.uu,bu:e.bu,gu:e.gu||null,ee:e.ee}),this.wd.p(this.Ct.Bt(),{x:t,y:i},n)}}Gd(t,i,n){const s=n.kn(),e=s.Lt(),r=s.Nt(t,u(e)),h=this.ia.Mc(i,!0),a=this.ia.jt(u(h));this.Kd(a,r,null,n,!0)}Zd(t){this.Vd().zn(),this.Ya(),t||this.wd.p(null,null,null)}Ra(){const t=this.Ct.Kn();if(null!==t){const i=this.Ct.Bn(),n=this.Ct.En();this.Kd(i,n,null,t)}this.Ct.Nn()}Xd(t,i,n){const s=this.ia.Rn(0);void 0!==i&&void 0!==n&&this.ia.Pt(i,n);const e=this.ia.Rn(0),r=this.ia.Dc(),h=this.ia.Ee();if(null!==h&&null!==s&&null!==e){const i=h.ze(r),a=this.Pu.key(s)>this.Pu.key(e),l=null!==t&&t>r&&!a,o=this.ia.N().allowShiftVisibleRangeOnWhitespaceReplacement,_=i&&(!(void 0===n)||o)&&this.ia.N().shiftVisibleRangeOnNewBar;if(l&&!_){const i=t-r;this.ia.gs(this.ia.Oc()-i)}}this.ia.Hc(t)}Ba(t){null!==t&&t.ou()}Ks(t){if(function(t){return t instanceof Pi}(t))return t;const i=this.dd.find((i=>i.Dt().includes(t)));return void 0===i?null:i}Lc(){this.dd.forEach((t=>t.ou())),this.Ra()}m(){this.dd.forEach((t=>t.m())),this.dd.length=0,this.yn.localization.priceFormatter=void 0,this.yn.localization.percentageFormatter=void 0,this.yn.localization.timeFormatter=void 0}Jd(){return this.bd}Js(){return this.bd.N()}N_(){return this.md}Qd(t,i){const n=this.xd(i);this.tf(t,n),this.fd.push(t),this.Pa(),1===this.fd.length?this.ka():this.mr()}if(t){const i=this.Ks(t),n=this.fd.indexOf(t);o(-1!==n,\"Series not found\");const s=u(i);this.fd.splice(n,1),s.l_(t),t.m&&t.m(),this.Pa(),this.ia.dc(),this.nf(s)}ya(t,i){const n=u(this.Ks(t));n.l_(t,!0),n.h_(t,i,!0)}td(){const t=X.Cs();t.us(),this.kd(t)}sf(t){const i=X.Cs();i.fs(t),this.kd(i)}ws(){const t=X.Cs();t.ws(),this.kd(t)}Ms(t){const i=X.Cs();i.Ms(t),this.kd(i)}gs(t){const i=X.Cs();i.gs(t),this.kd(i)}ps(t){const i=X.Cs();i.ps(t),this.kd(i)}cs(){const t=X.Cs();t.cs(),this.kd(t)}ef(){const t=this.yn.defaultVisiblePriceScaleId,i=this.yn.leftPriceScale.visible;return i!==this.yn.rightPriceScale.visible?i?\"left\":\"right\":t}rf(t,i){o(i>=0,\"Index should be greater or equal to 0\");if(i===this.hf(t))return;const n=u(this.Ks(t));n.l_(t);const s=this.xd(i);this.tf(t,s);let e=!1;0===n.kl().length&&(e=this.nf(n)),e||this.ka()}af(){return this.Pd}$(){return this.Cd}Ut(t){const i=this.Pd,n=this.Cd;if(i===n)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Md||this.Md.ah!==n||this.Md.oh!==i)this.Md={ah:n,oh:i,lf:new Map};else{const i=this.Md.lf.get(t);if(void 0!==i)return i}const s=this.Io.tt(n,i,t/100);return this.Md.lf.set(t,s),s}_f(t){return this.dd.indexOf(t)}Xi(){return this.Io}uf(){return this.cf()}cf(t){const i=new Pi(this.ia,this);this.dd.push(i);const n=t??this.dd.length-1,s=X.ys();return s.es(n,{rs:0,hs:!0}),this.kd(s),i}xd(t){return o(t>=0,\"Index should be greater or equal to 0\"),(t=Math.min(this.dd.length,t))<this.dd.length?this.dd[t]:this.cf(t)}hf(t){return this.dd.findIndex((i=>i.Y_().includes(t)))}Nd(t,i){const n=new X(i);if(null!==t){const s=this.dd.indexOf(t);n.es(s,{rs:i})}return n}Td(t,i){return void 0===i&&(i=2),this.Nd(this.Ks(t),i)}kd(t){this.gd&&this.gd(t),this.dd.forEach((t=>t.wu().wr().Pt()))}tf(t,i){const n=t.N().priceScaleId,s=void 0!==n?n:this.ef();i.h_(t,s),Z(s)||t.vr(t.N())}yd(t){const i=this.yn.layout;return\"gradient\"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color}nf(t){return!t.q_()&&0===t.kl().length&&this.dd.length>1&&(this.dd.splice(this._f(t),1),this.ka(),!0)}}function Yi(t){if(t>=1)return 0;let i=0;for(;i<8;i++){const n=Math.round(t);if(Math.abs(n-t)<1e-8)return i;t*=10}return i}function Ki(t){return!p(t)&&!m(t)}function Gi(t){return p(t)}!function(t){t[t.Disabled=0]=\"Disabled\",t[t.Continuous=1]=\"Continuous\",t[t.OnDataUpdate=2]=\"OnDataUpdate\"}(Hi||(Hi={})),function(t){t[t.LastBar=0]=\"LastBar\",t[t.LastVisible=1]=\"LastVisible\"}(Ui||(Ui={})),function(t){t.Solid=\"solid\",t.VerticalGradient=\"gradient\"}($i||($i={})),function(t){t[t.Year=0]=\"Year\",t[t.Month=1]=\"Month\",t[t.DayOfMonth=2]=\"DayOfMonth\",t[t.Time=3]=\"Time\",t[t.TimeWithSeconds=4]=\"TimeWithSeconds\"}(ji||(ji={}));const Zi=t=>t.getUTCFullYear();function Xi(t,i,n){return i.replace(/yyyy/g,(t=>tt(Zi(t),4))(t)).replace(/yy/g,(t=>tt(Zi(t)%100,2))(t)).replace(/MMMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:\"long\"}))(t,n)).replace(/MMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:\"short\"}))(t,n)).replace(/MM/g,(t=>tt((t=>t.getUTCMonth()+1)(t),2))(t)).replace(/dd/g,(t=>tt((t=>t.getUTCDate())(t),2))(t))}class Ji{constructor(t=\"yyyy-MM-dd\",i=\"default\"){this.df=t,this.ff=i}ku(t){return Xi(t,this.df,this.ff)}}class Qi{constructor(t){this.pf=t||\"%h:%m:%s\"}ku(t){return this.pf.replace(\"%h\",tt(t.getUTCHours(),2)).replace(\"%m\",tt(t.getUTCMinutes(),2)).replace(\"%s\",tt(t.getUTCSeconds(),2))}}const tn={vf:\"yyyy-MM-dd\",mf:\"%h:%m:%s\",wf:\" \",Mf:\"default\"};class nn{constructor(t={}){const i={...tn,...t};this.gf=new Ji(i.vf,i.Mf),this.bf=new Qi(i.mf),this.Sf=i.wf}ku(t){return`${this.gf.ku(t)}${this.Sf}${this.bf.ku(t)}`}}function sn(t){return 60*t*60*1e3}function en(t){return 60*t*1e3}const rn=[{xf:(hn=1,1e3*hn),Cf:10},{xf:en(1),Cf:20},{xf:en(5),Cf:21},{xf:en(30),Cf:22},{xf:sn(1),Cf:30},{xf:sn(3),Cf:31},{xf:sn(6),Cf:32},{xf:sn(12),Cf:33}];var hn;function an(t,i){if(t.getUTCFullYear()!==i.getUTCFullYear())return 70;if(t.getUTCMonth()!==i.getUTCMonth())return 60;if(t.getUTCDate()!==i.getUTCDate())return 50;for(let n=rn.length-1;n>=0;--n)if(Math.floor(i.getTime()/rn[n].xf)!==Math.floor(t.getTime()/rn[n].xf))return rn[n].Cf;return 0}function ln(t){let i=t;if(m(t)&&(i=_n(t)),!Ki(i))throw new Error(\"time must be of type BusinessDay\");const n=new Date(Date.UTC(i.year,i.month-1,i.day,0,0,0,0));return{yf:Math.round(n.getTime()/1e3),Pf:i}}function on(t){if(!Gi(t))throw new Error(\"time must be of type isUTCTimestamp\");return{yf:t}}function _n(t){const i=new Date(t);if(isNaN(i.getTime()))throw new Error(`Invalid date string=${t}, expected format=yyyy-mm-dd`);return{day:i.getUTCDate(),month:i.getUTCMonth()+1,year:i.getUTCFullYear()}}function un(t){m(t.time)&&(t.time=_n(t.time))}class cn{options(){return this.yn}setOptions(t){this.yn=t,this.updateFormatter(t.localization)}preprocessData(t){Array.isArray(t)?function(t){t.forEach(un)}(t):un(t)}createConverterToInternalObj(t){return u(function(t){return 0===t.length?null:Ki(t[0].time)||m(t[0].time)?ln:on}(t))}key(t){return\"object\"==typeof t&&\"yf\"in t?t.yf:this.key(this.convertHorzItemToInternal(t))}cacheKey(t){const i=t;return void 0===i.Pf?new Date(1e3*i.yf).getTime():new Date(Date.UTC(i.Pf.year,i.Pf.month-1,i.Pf.day)).getTime()}convertHorzItemToInternal(t){return Gi(i=t)?on(i):Ki(i)?ln(i):ln(_n(i));var i}updateFormatter(t){if(!this.yn)return;const i=t.dateFormat;this.yn.timeScale.timeVisible?this.kf=new nn({vf:i,mf:this.yn.timeScale.secondsVisible?\"%h:%m:%s\":\"%h:%m\",wf:\" \",Mf:t.locale}):this.kf=new Ji(i,t.locale)}formatHorzItem(t){const i=t;return this.kf.ku(new Date(1e3*i.yf))}formatTickmark(t,i){const n=function(t,i,n){switch(t){case 0:case 10:return i?n?4:3:2;case 20:case 21:case 22:case 30:case 31:case 32:case 33:return i?3:2;case 50:return 2;case 60:return 1;case 70:return 0}}(t.weight,this.yn.timeScale.timeVisible,this.yn.timeScale.secondsVisible),s=this.yn.timeScale;if(void 0!==s.tickMarkFormatter){const e=s.tickMarkFormatter(t.originalTime,n,i.locale);if(null!==e)return e}return function(t,i,n){const s={};switch(i){case 0:s.year=\"numeric\";break;case 1:s.month=\"short\";break;case 2:s.day=\"numeric\";break;case 3:s.hour12=!1,s.hour=\"2-digit\",s.minute=\"2-digit\";break;case 4:s.hour12=!1,s.hour=\"2-digit\",s.minute=\"2-digit\",s.second=\"2-digit\"}const e=void 0===t.Pf?new Date(1e3*t.yf):new Date(Date.UTC(t.Pf.year,t.Pf.month-1,t.Pf.day));return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()).toLocaleString(n,s)}(t.time,n,i.locale)}maxTickMarkWeight(t){let i=t.reduce(Ni,t[0]).weight;return i>30&&i<50&&(i=30),i}fillWeightsForPoints(t,i){!function(t,i=0){if(0===t.length)return;let n=0===i?null:t[i-1].time.yf,s=null!==n?new Date(1e3*n):null,e=0;for(let r=i;r<t.length;++r){const i=t[r],h=new Date(1e3*i.time.yf);null!==s&&(i.timeWeight=an(h,s)),e+=i.time.yf-(n||i.time.yf),n=i.time.yf,s=h}if(0===i&&t.length>1){const i=Math.ceil(e/(t.length-1)),n=new Date(1e3*(t[0].time.yf-i));t[0].timeWeight=an(new Date(1e3*t[0].time.yf),n)}}(t,i)}static Tf(t){return f({localization:{dateFormat:\"dd MMM 'yy\"}},t??{})}}const dn=\"undefined\"!=typeof window;function fn(){return!!dn&&window.navigator.userAgent.toLowerCase().indexOf(\"firefox\")>-1}function pn(){return!!dn&&/iPhone|iPad|iPod/.test(window.navigator.platform)}function vn(t,i){switch(t){case\"custom\":return void 0!==i?\"custom-object\":\"series\";case\"price-line\":return\"custom-price-line\";case\"marker\":return\"series-marker\";case\"primitive\":return\"primitive\";default:return\"series\"}}function mn(t){return t+t%2}function wn(t){dn&&void 0!==window.chrome&&t.addEventListener(\"mousedown\",(t=>{if(1===t.button)return t.preventDefault(),!1}))}class Mn{constructor(t,i,n){this.Rf=0,this.Df=null,this.If={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY},this.Vf=0,this.Bf=null,this.Ef={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY},this.Af=null,this.Lf=!1,this.zf=null,this.Of=null,this.Nf=!1,this.Ff=!1,this.Wf=!1,this.Hf=null,this.Uf=null,this.$f=null,this.jf=null,this.qf=null,this.Yf=null,this.Kf=null,this.Gf=0,this.Zf=!1,this.Xf=!1,this.Jf=!1,this.Qf=0,this.tp=null,this.ip=!pn(),this.np=t=>{this.sp(t)},this.ep=t=>{if(this.rp(t)){const i=this.hp(t);if(++this.Vf,this.Bf&&this.Vf>1){const{ap:n}=this.lp(Sn(t),this.Ef);n<30&&!this.Wf&&this.op(i,this.up._p),this.cp()}}else{const i=this.hp(t);if(++this.Rf,this.Df&&this.Rf>1){const{ap:n}=this.lp(Sn(t),this.If);n<5&&!this.Ff&&this.dp(i,this.up.fp),this.pp()}}},this.vp=t,this.up=i,this.yn=n,this.mp()}m(){null!==this.Hf&&(this.Hf(),this.Hf=null),null!==this.Uf&&(this.Uf(),this.Uf=null),null!==this.jf&&(this.jf(),this.jf=null),null!==this.qf&&(this.qf(),this.qf=null),null!==this.Yf&&(this.Yf(),this.Yf=null),null!==this.$f&&(this.$f(),this.$f=null),this.wp(),this.pp()}Mp(t){this.jf&&this.jf();const i=this.gp.bind(this);if(this.jf=()=>{this.vp.removeEventListener(\"mousemove\",i)},this.vp.addEventListener(\"mousemove\",i),this.rp(t))return;const n=this.hp(t);this.dp(n,this.up.bp),this.ip=!0}pp(){null!==this.Df&&clearTimeout(this.Df),this.Rf=0,this.Df=null,this.If={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY}}cp(){null!==this.Bf&&clearTimeout(this.Bf),this.Vf=0,this.Bf=null,this.Ef={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY}}gp(t){if(this.Jf||null!==this.Of)return;if(this.rp(t))return;const i=this.hp(t);this.dp(i,this.up.Sp),this.ip=!0}xp(t){const i=Cn(t.changedTouches,u(this.tp));if(null===i)return;if(this.Qf=xn(t),null!==this.Kf)return;if(this.Xf)return;this.Zf=!0;const n=this.lp(Sn(i),u(this.Of)),{Cp:s,yp:e,ap:r}=n;if(this.Nf||!(r<5)){if(!this.Nf){const t=.5*s,i=e>=t&&!this.yn.Pp(),n=t>e&&!this.yn.kp();i||n||(this.Xf=!0),this.Nf=!0,this.Wf=!0,this.wp(),this.cp()}if(!this.Xf){const n=this.hp(t,i);this.op(n,this.up.Tp),bn(t)}}}Rp(t){if(0!==t.button)return;const i=this.lp(Sn(t),u(this.zf)),{ap:n}=i;if(n>=5&&(this.Ff=!0,this.pp()),this.Ff){const i=this.hp(t);this.dp(i,this.up.Dp)}}lp(t,i){const n=Math.abs(i._t-t._t),s=Math.abs(i.ut-t.ut);return{Cp:n,yp:s,ap:n+s}}Ip(t){let i=Cn(t.changedTouches,u(this.tp));if(null===i&&0===t.touches.length&&(i=t.changedTouches[0]),null===i)return;this.tp=null,this.Qf=xn(t),this.wp(),this.Of=null,this.Yf&&(this.Yf(),this.Yf=null);const n=this.hp(t,i);if(this.op(n,this.up.Vp),++this.Vf,this.Bf&&this.Vf>1){const{ap:t}=this.lp(Sn(i),this.Ef);t<30&&!this.Wf&&this.op(n,this.up._p),this.cp()}else this.Wf||(this.op(n,this.up.Bp),this.up.Bp&&bn(t));0===this.Vf&&bn(t),0===t.touches.length&&this.Lf&&(this.Lf=!1,bn(t))}sp(t){if(0!==t.button)return;const i=this.hp(t);if(this.zf=null,this.Jf=!1,this.qf&&(this.qf(),this.qf=null),fn()){this.vp.ownerDocument.documentElement.removeEventListener(\"mouseleave\",this.np)}if(!this.rp(t))if(this.dp(i,this.up.Ep),++this.Rf,this.Df&&this.Rf>1){const{ap:n}=this.lp(Sn(t),this.If);n<5&&!this.Ff&&this.dp(i,this.up.fp),this.pp()}else this.Ff||this.dp(i,this.up.Ap)}wp(){null!==this.Af&&(clearTimeout(this.Af),this.Af=null)}Lp(t){if(null!==this.tp)return;const i=t.changedTouches[0];this.tp=i.identifier,this.Qf=xn(t);const n=this.vp.ownerDocument.documentElement;this.Wf=!1,this.Nf=!1,this.Xf=!1,this.Of=Sn(i),this.Yf&&(this.Yf(),this.Yf=null);{const i=this.xp.bind(this),s=this.Ip.bind(this);this.Yf=()=>{n.removeEventListener(\"touchmove\",i),n.removeEventListener(\"touchend\",s)},n.addEventListener(\"touchmove\",i,{passive:!1}),n.addEventListener(\"touchend\",s,{passive:!1}),this.wp(),this.Af=setTimeout(this.zp.bind(this,t),240)}const s=this.hp(t,i);this.op(s,this.up.Op),this.Bf||(this.Vf=0,this.Bf=setTimeout(this.cp.bind(this),500),this.Ef=Sn(i))}Np(t){if(0!==t.button)return;const i=this.vp.ownerDocument.documentElement;fn()&&i.addEventListener(\"mouseleave\",this.np),this.Ff=!1,this.zf=Sn(t),this.qf&&(this.qf(),this.qf=null);{const t=this.Rp.bind(this),n=this.sp.bind(this);this.qf=()=>{i.removeEventListener(\"mousemove\",t),i.removeEventListener(\"mouseup\",n)},i.addEventListener(\"mousemove\",t),i.addEventListener(\"mouseup\",n)}if(this.Jf=!0,this.rp(t))return;const n=this.hp(t);this.dp(n,this.up.Fp),this.Df||(this.Rf=0,this.Df=setTimeout(this.pp.bind(this),500),this.If=Sn(t))}mp(){this.vp.addEventListener(\"mouseenter\",this.Mp.bind(this)),this.vp.addEventListener(\"touchcancel\",this.wp.bind(this));{const t=this.vp.ownerDocument,i=t=>{this.up.Wp&&(t.composed&&this.vp.contains(t.composedPath()[0])||t.target&&this.vp.contains(t.target)||this.up.Wp())};this.Uf=()=>{t.removeEventListener(\"touchstart\",i)},this.Hf=()=>{t.removeEventListener(\"mousedown\",i)},t.addEventListener(\"mousedown\",i),t.addEventListener(\"touchstart\",i,{passive:!0})}pn()&&(this.$f=()=>{this.vp.removeEventListener(\"dblclick\",this.ep)},this.vp.addEventListener(\"dblclick\",this.ep)),this.vp.addEventListener(\"mouseleave\",this.Hp.bind(this)),this.vp.addEventListener(\"touchstart\",this.Lp.bind(this),{passive:!0}),wn(this.vp),this.vp.addEventListener(\"mousedown\",this.Np.bind(this)),this.Up(),this.vp.addEventListener(\"touchmove\",(()=>{}),{passive:!1})}Up(){void 0===this.up.$p&&void 0===this.up.jp&&void 0===this.up.qp||(this.vp.addEventListener(\"touchstart\",(t=>this.Yp(t.touches)),{passive:!0}),this.vp.addEventListener(\"touchmove\",(t=>{if(2===t.touches.length&&null!==this.Kf&&void 0!==this.up.jp){const i=gn(t.touches[0],t.touches[1])/this.Gf;this.up.jp(this.Kf,i),bn(t)}}),{passive:!1}),this.vp.addEventListener(\"touchend\",(t=>{this.Yp(t.touches)})))}Yp(t){1===t.length&&(this.Zf=!1),2!==t.length||this.Zf||this.Lf?this.Kp():this.Gp(t)}Gp(t){const i=this.vp.getBoundingClientRect()||{left:0,top:0};this.Kf={_t:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,ut:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.Gf=gn(t[0],t[1]),void 0!==this.up.$p&&this.up.$p(),this.wp()}Kp(){null!==this.Kf&&(this.Kf=null,void 0!==this.up.qp&&this.up.qp())}Hp(t){if(this.jf&&this.jf(),this.rp(t))return;if(!this.ip)return;const i=this.hp(t);this.dp(i,this.up.Zp),this.ip=!pn()}zp(t){const i=Cn(t.touches,u(this.tp));if(null===i)return;const n=this.hp(t,i);this.op(n,this.up.Xp),this.Wf=!0,this.Lf=!0}rp(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:xn(t)<this.Qf+500}op(t,i){i&&i.call(this.up,t)}dp(t,i){i&&i.call(this.up,t)}hp(t,i){const n=i||t,s=this.vp.getBoundingClientRect()||{left:0,top:0};return{clientX:n.clientX,clientY:n.clientY,pageX:n.pageX,pageY:n.pageY,screenX:n.screenX,screenY:n.screenY,localX:n.clientX-s.left,localY:n.clientY-s.top,ctrlKey:t.ctrlKey,altKey:t.altKey,shiftKey:t.shiftKey,metaKey:t.metaKey,Jp:!t.type.startsWith(\"mouse\")&&\"contextmenu\"!==t.type&&\"click\"!==t.type,Qp:t.type,tv:n.target,xu:t.view,iv:()=>{\"touchstart\"!==t.type&&bn(t)}}}}function gn(t,i){const n=t.clientX-i.clientX,s=t.clientY-i.clientY;return Math.sqrt(n*n+s*s)}function bn(t){t.cancelable&&t.preventDefault()}function Sn(t){return{_t:t.pageX,ut:t.pageY}}function xn(t){return t.timeStamp||performance.now()}function Cn(t,i){for(let n=0;n<t.length;++n)if(t[n].identifier===i)return t[n];return null}class yn{constructor(t,i,n){this.nv=null,this.sv=null,this.ev=!0,this.rv=null,this.hv=t,this.av=t.lv()[i],this.ov=t.lv()[n],this._v=document.createElement(\"tr\"),this._v.style.height=\"1px\",this.uv=document.createElement(\"td\"),this.uv.style.position=\"relative\",this.uv.style.padding=\"0\",this.uv.style.margin=\"0\",this.uv.setAttribute(\"colspan\",\"3\"),this.cv(),this._v.appendChild(this.uv),this.ev=this.hv.N().layout.panes.enableResize,this.ev?this.dv():(this.nv=null,this.sv=null)}m(){null!==this.sv&&this.sv.m()}fv(){return this._v}pv(){return t({width:this.av.pv().width,height:1})}vv(){return t({width:this.av.vv().width,height:1*window.devicePixelRatio})}mv(t,i,n){const s=this.vv();t.fillStyle=this.hv.N().layout.panes.separatorColor,t.fillRect(i,n,s.width,s.height)}Pt(){this.cv(),this.hv.N().layout.panes.enableResize!==this.ev&&(this.ev=this.hv.N().layout.panes.enableResize,this.ev?this.dv():(null!==this.nv&&(this.uv.removeChild(this.nv.wv),this.uv.removeChild(this.nv.Mv),this.nv=null),null!==this.sv&&(this.sv.m(),this.sv=null)))}dv(){const t=document.createElement(\"div\"),i=t.style;i.position=\"fixed\",i.display=\"none\",i.zIndex=\"49\",i.top=\"0\",i.left=\"0\",i.width=\"100%\",i.height=\"100%\",i.cursor=\"row-resize\",this.uv.appendChild(t);const n=document.createElement(\"div\"),s=n.style;s.position=\"absolute\",s.zIndex=\"50\",s.top=\"-4px\",s.height=\"9px\",s.width=\"100%\",s.backgroundColor=\"\",s.cursor=\"row-resize\",this.uv.appendChild(n);const e={bp:this.gv.bind(this),Zp:this.bv.bind(this),Fp:this.Sv.bind(this),Op:this.Sv.bind(this),Dp:this.xv.bind(this),Tp:this.xv.bind(this),Ep:this.Cv.bind(this),Vp:this.Cv.bind(this)};this.sv=new Mn(n,e,{Pp:()=>!1,kp:()=>!0}),this.nv={Mv:n,wv:t}}cv(){this.uv.style.background=this.hv.N().layout.panes.separatorColor}gv(t){null!==this.nv&&(this.nv.Mv.style.backgroundColor=this.hv.N().layout.panes.separatorHoverColor)}bv(t){null!==this.nv&&null===this.rv&&(this.nv.Mv.style.backgroundColor=\"\")}Sv(t){if(null===this.nv)return;const i=this.av.yv().F_()+this.ov.yv().F_(),n=i/(this.av.pv().height+this.ov.pv().height),s=30*n;i<=2*s||(this.rv={Pv:t.pageY,kv:this.av.yv().F_(),Tv:i-s,Rv:i,Dv:n,Iv:s},this.nv.wv.style.display=\"block\")}xv(t){const i=this.rv;if(null===i)return;const n=(t.pageY-i.Pv)*i.Dv,s=ni(i.kv+n,i.Iv,i.Tv);this.av.yv().W_(s),this.ov.yv().W_(i.Rv-s),this.hv.Qt().ka()}Cv(t){null!==this.rv&&null!==this.nv&&(this.rv=null,this.nv.wv.style.display=\"none\")}}function Pn(t,i){return t.Vv-i.Vv}function kn(t,i,n){const s=(t.Vv-i.Vv)/(t.wt-i.wt);return Math.sign(s)*Math.min(Math.abs(s),n)}class Tn{constructor(t,i,n,s){this.Bv=null,this.Ev=null,this.Av=null,this.Lv=null,this.zv=null,this.Ov=0,this.Nv=0,this.Fv=t,this.Wv=i,this.Hv=n,this.Ps=s}Uv(t,i){if(null!==this.Bv){if(this.Bv.wt===i)return void(this.Bv.Vv=t);if(Math.abs(this.Bv.Vv-t)<this.Ps)return}this.Lv=this.Av,this.Av=this.Ev,this.Ev=this.Bv,this.Bv={wt:i,Vv:t}}me(t,i){if(null===this.Bv||null===this.Ev)return;if(i-this.Bv.wt>50)return;let n=0;const s=kn(this.Bv,this.Ev,this.Wv),e=Pn(this.Bv,this.Ev),r=[s],h=[e];if(n+=e,null!==this.Av){const t=kn(this.Ev,this.Av,this.Wv);if(Math.sign(t)===Math.sign(s)){const i=Pn(this.Ev,this.Av);if(r.push(t),h.push(i),n+=i,null!==this.Lv){const t=kn(this.Av,this.Lv,this.Wv);if(Math.sign(t)===Math.sign(s)){const i=Pn(this.Av,this.Lv);r.push(t),h.push(i),n+=i}}}}let a=0;for(let t=0;t<r.length;++t)a+=h[t]/n*r[t];Math.abs(a)<this.Fv||(this.zv={Vv:t,wt:i},this.Nv=a,this.Ov=function(t,i){const n=Math.log(i);return Math.log(1*n/-t)/n}(Math.abs(a),this.Hv))}Gc(t){const i=u(this.zv),n=t-i.wt;return i.Vv+this.Nv*(Math.pow(this.Hv,n)-1)/Math.log(this.Hv)}Kc(t){return null===this.zv||this.$v(t)===this.Ov}$v(t){const i=t-u(this.zv).wt;return Math.min(i,this.Ov)}}class Rn{constructor(t,i){this.jv=void 0,this.qv=void 0,this.Yv=void 0,this.vn=!1,this.Kv=t,this.Gv=i,this.Zv()}Pt(){this.Zv()}Xv(){this.jv&&this.Kv.removeChild(this.jv),this.qv&&this.Kv.removeChild(this.qv),this.jv=void 0,this.qv=void 0}Jv(){return this.vn!==this.Qv()||this.Yv!==this.tm()}tm(){return this.Gv.Qt().Xi().J(this.Gv.N().layout.textColor)>160?\"dark\":\"light\"}Qv(){return this.Gv.N().layout.attributionLogo}im(){const t=new URL(location.href);return t.hostname?\"&utm_source=\"+t.hostname+t.pathname:\"\"}Zv(){this.Jv()&&(this.Xv(),this.vn=this.Qv(),this.vn&&(this.Yv=this.tm(),this.qv=document.createElement(\"style\"),this.qv.innerText=\"a#tv-attr-logo{--fill:#131722;--stroke:#fff;position:absolute;left:10px;bottom:10px;height:19px;width:35px;margin:0;padding:0;border:0;z-index:3;}a#tv-attr-logo[data-dark]{--fill:#D1D4DC;--stroke:#131722;}\",this.jv=document.createElement(\"a\"),this.jv.href=`https://www.tradingview.com/?utm_medium=lwc-link&utm_campaign=lwc-chart${this.im()}`,this.jv.title=\"Charting by TradingView\",this.jv.id=\"tv-attr-logo\",this.jv.target=\"_blank\",this.jv.innerHTML='<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"19\" fill=\"none\"><g fill-rule=\"evenodd\" clip-path=\"url(#a)\" clip-rule=\"evenodd\"><path fill=\"var(--stroke)\" d=\"M2 0H0v10h6v9h21.4l.5-1.3 6-15 1-2.7H23.7l-.5 1.3-.2.6a5 5 0 0 0-7-.9V0H2Zm20 17h4l5.2-13 .8-2h-7l-1 2.5-.2.5-1.5 3.8-.3.7V17Zm-.8-10a3 3 0 0 0 .7-2.7A3 3 0 1 0 16.8 7h4.4ZM14 7V2H2v6h6v9h4V7h2Z\"/><path fill=\"var(--fill)\" d=\"M14 2H2v6h6v9h6V2Zm12 15h-7l6-15h7l-6 15Zm-7-9a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\"/></g><defs><clipPath id=\"a\"><path fill=\"var(--stroke)\" d=\"M0 0h35v19H0z\"/></clipPath></defs></svg>',this.jv.toggleAttribute(\"data-dark\",\"dark\"===this.Yv),this.Kv.appendChild(this.qv),this.Kv.appendChild(this.jv)))}}function Dn(t,n){const s=u(t.ownerDocument).createElement(\"canvas\");t.appendChild(s);const e=i(s,{type:\"device-pixel-content-box\",options:{allowResizeObserver:!0},transform:(t,i)=>({width:Math.max(t.width,i.width),height:Math.max(t.height,i.height)})});return e.resizeCanvasElement(n),e}function In(t){t.width=1,t.height=1,t.getContext(\"2d\")?.clearRect(0,0,1,1)}function Vn(t,i,n,s){t.qh&&t.qh(i,n,s)}function Bn(t,i,n,s){t.st(i,n,s)}function En(t,i,n,s){An(t(n,s),i,s)}function An(t,i,n){for(const s of t){const t=s.Tt(n);null!==t&&i(t)}}function Ln(t,i){return n=>{if(!function(t){return void 0!==t.Ft}(n))return[];return(n.Ft()?.pl()??\"\")!==i?[]:n.Qa?.(t)??[]}}function zn(t,i,n,s){if(!t.length)return;let e=0;const r=t[0].$t(s,!0);let h=1===i?n/2-(t[0].Hi()-r/2):t[0].Hi()-r/2-n/2;h=Math.max(0,h);for(let r=1;r<t.length;r++){const a=t[r],l=t[r-1],o=l.$t(s,!1),_=a.Hi(),u=l.Hi();if(1===i?_>u-o:_<u+o){const s=u-o*i;a.Ui(s);const r=s-i*o/2;if((1===i?r<0:r>n)&&h>0){const s=1===i?-1-r:r-n,a=Math.min(s,h);for(let n=e;n<t.length;n++)t[n].Ui(t[n].Hi()+i*a);h-=a}}else e=r,h=1===i?u-o-_:_-(u+o)}}class On{constructor(i,n,s,e){this.Ki=null,this.nm=null,this.sm=!1,this.rm=new rt(200),this.hm=null,this.am=0,this.lm=!1,this.om=()=>{this.lm||this.yt._m().Qt().mr()},this.um=()=>{this.lm||this.yt._m().Qt().mr()},this.yt=i,this.yn=n,this.Ro=n.layout,this.bd=s,this.dm=\"left\"===e,this.fm=Ln(\"normal\",e),this.pm=Ln(\"top\",e),this.vm=Ln(\"bottom\",e),this.uv=document.createElement(\"div\"),this.uv.style.height=\"100%\",this.uv.style.overflow=\"hidden\",this.uv.style.width=\"25px\",this.uv.style.left=\"0\",this.uv.style.position=\"relative\",this.wm=Dn(this.uv,t({width:16,height:16})),this.wm.subscribeSuggestedBitmapSizeChanged(this.om);const r=this.wm.canvasElement;r.style.position=\"absolute\",r.style.zIndex=\"1\",r.style.left=\"0\",r.style.top=\"0\",this.Mm=Dn(this.uv,t({width:16,height:16})),this.Mm.subscribeSuggestedBitmapSizeChanged(this.um);const h=this.Mm.canvasElement;h.style.position=\"absolute\",h.style.zIndex=\"2\",h.style.left=\"0\",h.style.top=\"0\";const a={Fp:this.Sv.bind(this),Op:this.Sv.bind(this),Dp:this.xv.bind(this),Tp:this.xv.bind(this),Wp:this.gm.bind(this),Ep:this.Cv.bind(this),Vp:this.Cv.bind(this),fp:this.bm.bind(this),_p:this.bm.bind(this),bp:this.Sm.bind(this),Zp:this.bv.bind(this)};this.sv=new Mn(this.Mm.canvasElement,a,{Pp:()=>!this.yn.handleScroll.vertTouchDrag,kp:()=>!0})}m(){this.sv.m(),this.Mm.unsubscribeSuggestedBitmapSizeChanged(this.um),In(this.Mm.canvasElement),this.Mm.dispose(),this.wm.unsubscribeSuggestedBitmapSizeChanged(this.om),In(this.wm.canvasElement),this.wm.dispose(),null!==this.Ki&&this.Ki.__().u(this),this.Ki=null}fv(){return this.uv}P(){return this.Ro.fontSize}xm(){const t=this.bd.N();return this.hm!==t.k&&(this.rm.Os(),this.hm=t.k),t}Cm(){if(null===this.Ki)return 0;let t=0;const i=this.xm(),n=u(this.wm.canvasElement.getContext(\"2d\",{colorSpace:this.yt._m().N().layout.colorSpace}));n.save();const s=this.Ki.zl();n.font=this.ym(),s.length>0&&(t=Math.max(this.rm.Ii(n,s[0].eo),this.rm.Ii(n,s[s.length-1].eo)));const e=this.Pm();for(let i=e.length;i--;){const s=this.rm.Ii(n,e[i].ri());s>t&&(t=s)}const r=this.Ki.Lt();if(null!==r&&null!==this.nm&&(2!==(h=this.yn.crosshair).mode&&h.horzLine.visible&&h.horzLine.labelVisible)){const i=this.Ki.Tn(1,r),s=this.Ki.Tn(this.nm.height-2,r);t=Math.max(t,this.rm.Ii(n,this.Ki.Ji(Math.floor(Math.min(i,s))+.11111111111111,r)),this.rm.Ii(n,this.Ki.Ji(Math.ceil(Math.max(i,s))-.11111111111111,r)))}var h;n.restore();const a=t||34;return mn(Math.ceil(i.S+i.C+i.V+i.B+5+a))}km(t){null!==this.nm&&n(this.nm,t)||(this.nm=t,this.lm=!0,this.wm.resizeCanvasElement(t),this.Mm.resizeCanvasElement(t),this.lm=!1,this.uv.style.width=`${t.width}px`,this.uv.style.height=`${t.height}px`)}Tm(){return u(this.nm).width}un(t){this.Ki!==t&&(null!==this.Ki&&this.Ki.__().u(this),this.Ki=t,t.__().i(this.wo.bind(this),this))}Ft(){return this.Ki}Os(){const t=this.yt.yv();this.yt._m().Qt().au(t,u(this.Ft()))}Rm(t){if(null===this.nm)return;const i={colorSpace:this.yt._m().N().layout.colorSpace};if(1!==t){this.Dm(),this.wm.applySuggestedBitmapSize();const t=s(this.wm,i);null!==t&&(t.useBitmapCoordinateSpace((t=>{this.Im(t),this.Vm(t)})),this.yt.Bm(t,this.vm),this.Em(t),this.yt.Bm(t,this.fm),this.Am(t))}this.Mm.applySuggestedBitmapSize();const n=s(this.Mm,i);null!==n&&(n.useBitmapCoordinateSpace((({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)})),this.Lm(n),this.yt.Bm(n,this.pm))}vv(){return this.wm.bitmapSize}mv(t,i,n,s){const e=this.vv();if(e.width>0&&e.height>0&&(t.drawImage(this.wm.canvasElement,i,n),s)){const s=this.Mm.canvasElement;t.drawImage(s,i,n)}}Pt(){this.Ki?.zl()}Sv(t){if(null===this.Ki||this.Ki.Zi()||!this.yn.handleScale.axisPressedMouseMove.price)return;const i=this.yt._m().Qt(),n=this.yt.yv();this.sm=!0,i.Q_(n,this.Ki,t.localY)}xv(t){if(null===this.Ki||!this.yn.handleScale.axisPressedMouseMove.price)return;const i=this.yt._m().Qt(),n=this.yt.yv(),s=this.Ki;i.tu(n,s,t.localY)}gm(){if(null===this.Ki||!this.yn.handleScale.axisPressedMouseMove.price)return;const t=this.yt._m().Qt(),i=this.yt.yv(),n=this.Ki;this.sm&&(this.sm=!1,t.iu(i,n))}Cv(t){if(null===this.Ki||!this.yn.handleScale.axisPressedMouseMove.price)return;const i=this.yt._m().Qt(),n=this.yt.yv();this.sm=!1,i.iu(n,this.Ki)}bm(t){this.yn.handleScale.axisDoubleClickReset.price&&this.Os()}Sm(t){if(null===this.Ki)return;!this.yt._m().Qt().N().handleScale.axisPressedMouseMove.price||this.Ki.je()||this.Ki.No()||this.zm(1)}bv(t){this.zm(0)}Pm(){const t=[],i=null===this.Ki?void 0:this.Ki;return(n=>{for(let s=0;s<n.length;++s){const e=n[s].qn(this.yt.yv(),i);for(let i=0;i<e.length;i++)t.push(e[i])}})(this.yt.yv().Dt()),t}Im({context:t,bitmapSize:i}){const{width:n,height:s}=i,e=this.yt.yv().Qt(),r=e.$(),h=e.af();r===h?z(t,0,0,n,s,r):F(t,0,0,n,s,r,h)}Vm({context:t,bitmapSize:i,horizontalPixelRatio:n}){if(null===this.nm||null===this.Ki||!this.Ki.N().borderVisible)return;t.fillStyle=this.Ki.N().borderColor;const s=Math.max(1,Math.floor(this.xm().S*n));let e;e=this.dm?i.width-s:0,t.fillRect(e,0,s,i.height)}Em(t){if(null===this.nm||null===this.Ki)return;const i=this.Ki.zl(),n=this.Ki.N(),s=this.xm(),e=this.dm?this.nm.width-s.C:0;n.borderVisible&&n.ticksVisible&&t.useBitmapCoordinateSpace((({context:t,horizontalPixelRatio:r,verticalPixelRatio:h})=>{t.fillStyle=n.borderColor;const a=Math.max(1,Math.floor(h)),l=Math.floor(.5*h),o=Math.round(s.C*r);t.beginPath();for(const n of i)t.rect(Math.floor(e*r),Math.round(n.Vl*h)-l,o,a);t.fill()})),t.useMediaCoordinateSpace((({context:t})=>{t.font=this.ym(),t.fillStyle=n.textColor??this.Ro.textColor,t.textAlign=this.dm?\"right\":\"left\",t.textBaseline=\"middle\";const r=this.dm?Math.round(e-s.V):Math.round(e+s.C+s.V),h=i.map((i=>this.rm.Di(t,i.eo)));for(let n=i.length;n--;){const s=i[n];t.fillText(s.eo,r,s.Vl+h[n])}}))}Dm(){if(null===this.nm||null===this.Ki)return;let t=this.nm.height/2;const i=[],n=this.Ki.Dt().slice(),s=this.yt.yv(),e=this.xm();this.Ki===s.Zs()&&this.yt.yv().Dt().forEach((t=>{s.Gs(t)&&n.push(t)}));const r=this.Ki.kl()[0],h=this.Ki;n.forEach((n=>{const e=n.qn(s,h);e.forEach((t=>{t.$i()&&null===t.Wi()&&(t.Ui(null),i.push(t))})),r===n&&e.length>0&&(t=e[0].Ei())}));this.Ki.N().alignLabels&&this.Om(i,e,t)}Om(t,i,n){if(null===this.nm)return;const s=t.filter((t=>t.Ei()<=n)),e=t.filter((t=>t.Ei()>n));s.sort(((t,i)=>i.Ei()-t.Ei())),s.length&&e.length&&e.push(s[0]),e.sort(((t,i)=>t.Ei()-i.Ei()));for(const n of t){const t=Math.floor(n.$t(i)/2),s=n.Ei();s>-t&&s<t&&n.Ui(t),s>this.nm.height-t&&s<this.nm.height+t&&n.Ui(this.nm.height-t)}zn(s,1,this.nm.height,i),zn(e,-1,this.nm.height,i)}Am(t){if(null===this.nm)return;const i=this.Pm(),n=this.xm(),s=this.dm?\"right\":\"left\";i.forEach((i=>{if(i.ji()){i.Tt(u(this.Ki)).st(t,n,this.rm,s)}}))}Lm(t){if(null===this.nm||null===this.Ki)return;const i=this.yt._m().Qt(),n=[],s=this.yt.yv(),e=i.Vd().qn(s,this.Ki);e.length&&n.push(e);const r=this.xm(),h=this.dm?\"right\":\"left\";n.forEach((i=>{i.forEach((i=>{i.Tt(u(this.Ki)).st(t,r,this.rm,h)}))}))}zm(t){this.uv.style.cursor=1===t?\"ns-resize\":\"default\"}wo(){const t=this.Cm();this.am<t&&this.yt._m().Qt().ka(),this.am=t}ym(){return x(this.Ro.fontSize,this.Ro.fontFamily)}}function Nn(t,i){return t.Xa?.(i)??[]}function Fn(t,i){return t.jn?.(i)??[]}function Wn(t,i){return t.cn?.(i)??[]}function Hn(t,i){return t.qa?.(i)??[]}class Un{constructor(i,n){this.nm=t({width:0,height:0}),this.Nm=null,this.Fm=null,this.Wm=null,this.Hm=null,this.Um=!1,this.$m=new d,this.jm=new d,this.qm=0,this.Ym=!1,this.Km=null,this.Gm=!1,this.Zm=null,this.Xm=null,this.lm=!1,this.om=()=>{this.lm||null===this.Jm||this.sn().mr()},this.um=()=>{this.lm||null===this.Jm||this.sn().mr()},this.Gv=i,this.Jm=n,this.Jm.mu().i(this.Qm.bind(this),this,!0),this.tw=document.createElement(\"td\"),this.tw.style.padding=\"0\",this.tw.style.position=\"relative\";const s=document.createElement(\"div\");s.style.width=\"100%\",s.style.height=\"100%\",s.style.position=\"relative\",s.style.overflow=\"hidden\",this.iw=document.createElement(\"td\"),this.iw.style.padding=\"0\",this.nw=document.createElement(\"td\"),this.nw.style.padding=\"0\",this.tw.appendChild(s),this.wm=Dn(s,t({width:16,height:16})),this.wm.subscribeSuggestedBitmapSizeChanged(this.om);const e=this.wm.canvasElement;e.style.position=\"absolute\",e.style.zIndex=\"1\",e.style.left=\"0\",e.style.top=\"0\",this.Mm=Dn(s,t({width:16,height:16})),this.Mm.subscribeSuggestedBitmapSizeChanged(this.um);const r=this.Mm.canvasElement;r.style.position=\"absolute\",r.style.zIndex=\"2\",r.style.left=\"0\",r.style.top=\"0\",this._v=document.createElement(\"tr\"),this._v.appendChild(this.iw),this._v.appendChild(this.tw),this._v.appendChild(this.nw),this.sw(),this.sv=new Mn(this.Mm.canvasElement,this,{Pp:()=>null===this.Km&&!this.Gv.N().handleScroll.vertTouchDrag,kp:()=>null===this.Km&&!this.Gv.N().handleScroll.horzTouchDrag})}m(){null!==this.Nm&&this.Nm.m(),null!==this.Fm&&this.Fm.m(),this.Wm=null,this.Mm.unsubscribeSuggestedBitmapSizeChanged(this.um),In(this.Mm.canvasElement),this.Mm.dispose(),this.wm.unsubscribeSuggestedBitmapSizeChanged(this.om),In(this.wm.canvasElement),this.wm.dispose(),null!==this.Jm&&(this.Jm.mu().u(this),this.Jm.m()),this.sv.m()}yv(){return u(this.Jm)}ew(t){null!==this.Jm&&this.Jm.mu().u(this),this.Jm=t,null!==this.Jm&&this.Jm.mu().i(Un.prototype.Qm.bind(this),this,!0),this.sw(),this.Gv.lv().indexOf(this)===this.Gv.lv().length-1?(this.Wm=this.Wm??new Rn(this.tw,this.Gv),this.Wm.Pt()):(this.Wm?.Xv(),this.Wm=null)}_m(){return this.Gv}fv(){return this._v}sw(){if(null!==this.Jm&&(this.rw(),0!==this.sn().Jn().length)){if(null!==this.Nm){const t=this.Jm.X_();this.Nm.un(u(t))}if(null!==this.Fm){const t=this.Jm.J_();this.Fm.un(u(t))}}}hw(){null!==this.Nm&&this.Nm.Pt(),null!==this.Fm&&this.Fm.Pt()}F_(){return null!==this.Jm?this.Jm.F_():0}W_(t){this.Jm&&this.Jm.W_(t)}bp(t){if(!this.Jm)return;this.aw();const i=t.localX,n=t.localY;this.lw(i,n,t)}Fp(t){this.aw(),this.ow(),this.lw(t.localX,t.localY,t)}Sp(t){if(!this.Jm)return;this.aw();const i=t.localX,n=t.localY;this.lw(i,n,t)}Ap(t){null!==this.Jm&&(this.aw(),this.lw(t.localX,t.localY,t),this._w(t))}fp(t){null!==this.Jm&&this.uw(this.jm,t)}_p(t){this.fp(t)}Dp(t){this.aw(),this.cw(t),this.lw(t.localX,t.localY,t)}Ep(t){null!==this.Jm&&(this.aw(),this.Ym=!1,this.dw(t))}Bp(t){null!==this.Jm&&this._w(t)}Xp(t){if(this.Ym=!0,null===this.Km){const i={x:t.localX,y:t.localY};this.fw(i,i,t)}}Zp(t){null!==this.Jm&&(this.aw(),this.Jm.Qt().Rd(null),this.pw())}mw(){return this.$m}ww(){return this.jm}$p(){this.qm=1,this.sn().cs()}jp(t,i){if(!this.Gv.N().handleScale.pinch)return;const n=5*(i-this.qm);this.qm=i,this.sn().Wd(t._t,n)}Op(t){this.Ym=!1,this.Gm=null!==this.Km,this.ow();const i=this.sn().Vd();null!==this.Km&&i.It()&&(this.Zm={x:i.ni(),y:i.si()},this.Km={x:t.localX,y:t.localY})}Tp(t){if(null===this.Jm)return;const i=t.localX,n=t.localY;if(null===this.Km)this.cw(t);else{this.Gm=!1;const s=u(this.Zm),e=s.x+(i-this.Km.x),r=s.y+(n-this.Km.y);this.lw(e,r,t)}}Vp(t){0===this._m().N().trackingMode.exitMode&&(this.Gm=!0),this.Mw(),this.dw(t)}Qs(t,i){const n=this.Jm;return null===n?null:Bi(n,t,i)}gw(i,n){u(\"left\"===n?this.Nm:this.Fm).km(t({width:i,height:this.nm.height}))}pv(){return this.nm}km(t){n(this.nm,t)||(this.nm=t,this.lm=!0,this.wm.resizeCanvasElement(t),this.Mm.resizeCanvasElement(t),this.lm=!1,this.tw.style.width=t.width+\"px\",this.tw.style.height=t.height+\"px\")}bw(){const t=u(this.Jm);t.G_(t.X_()),t.G_(t.J_());for(const i of t.kl())if(t.Gs(i)){const n=i.Ft();null!==n&&t.G_(n),i.Nn()}for(const i of t.Mu())i.Nn()}vv(){return this.wm.bitmapSize}mv(t,i,n,s){const e=this.vv();if(e.width>0&&e.height>0&&(t.drawImage(this.wm.canvasElement,i,n),s)){const s=this.Mm.canvasElement;null!==t&&t.drawImage(s,i,n)}}Rm(t){if(0===t)return;if(null===this.Jm)return;t>1&&this.bw(),null!==this.Nm&&this.Nm.Rm(t),null!==this.Fm&&this.Fm.Rm(t);const i={colorSpace:this.Gv.N().layout.colorSpace};if(1!==t){this.wm.applySuggestedBitmapSize();const t=s(this.wm,i);null!==t&&(t.useBitmapCoordinateSpace((t=>{this.Im(t)})),this.Jm&&(this.Sw(t,Nn),this.xw(t),this.Sw(t,Fn),this.Sw(t,Wn)))}this.Mm.applySuggestedBitmapSize();const n=s(this.Mm,i);null!==n&&(n.useBitmapCoordinateSpace((({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)})),this.Cw(n),this.Sw(n,Hn),this.Sw(n,Wn))}yw(){return this.Nm}Pw(){return this.Fm}Bm(t,i){this.Sw(t,i)}Qm(){null!==this.Jm&&this.Jm.mu().u(this),this.Jm=null}_w(t){this.uw(this.$m,t)}uw(t,i){const n=i.localX,s=i.localY;t.v()&&t.p(this.sn().Et().Vc(n),{x:n,y:s},i)}Im({context:t,bitmapSize:i}){const{width:n,height:s}=i,e=this.sn(),r=e.$(),h=e.af();r===h?z(t,0,0,n,s,h):F(t,0,0,n,s,r,h)}xw(t){const i=u(this.Jm),n=i.wu().wr().Tt(i);null!==n&&n.st(t,!1)}Cw(t){this.kw(t,Fn,Bn,this.sn().Vd())}Sw(t,i){const n=u(this.Jm),s=i===Fn?this.Tw():null,e=null===s?null:this.Rw(s,n),r=n.Mu();if(null===e||null===s){const s=n._u();return this.Dw(t,i,Vn,r,s),void this.Dw(t,i,Bn,r,s)}const h=n.Dt(),a=t=>t===s?e.Za:void 0;this.Dw(t,i,Vn,r,h,a),this.Dw(t,i,Bn,r,h,a),this.kw(t,i,Vn,s,e.qa),this.kw(t,i,Bn,s,e.qa)}Dw(t,i,n,s,e,r){for(const e of s)this.kw(t,i,n,e);if(void 0!==r)for(const s of e)this.kw(t,i,n,s,r(s));else for(const s of e)this.kw(t,i,n,s)}Tw(){const t=u(this.Jm),i=t.Qt().cu()?.uu;if(!t.Qt().N().hoveredSeriesOnTop||void 0===i)return null;for(const n of t.Dt())if(n===i)return n;return null}Rw(t,i){const n=t.Ga?.(i)??null;return null===n||0===n.qa.length?null:n}kw(t,i,n,s,e){const r=u(this.Jm),h=r.Qt().cu(),a=null!==h&&h.uu===s,l=null!==h&&a&&void 0!==h.bu?h.bu.ie:void 0,o=i=>n(i,t,a,l);void 0===e?En(i,o,s,r):An(e,o,r)}rw(){if(null===this.Jm)return;const t=this.Gv,i=this.Jm.X_().N().visible,n=this.Jm.J_().N().visible;i||null===this.Nm||(this.iw.removeChild(this.Nm.fv()),this.Nm.m(),this.Nm=null),n||null===this.Fm||(this.nw.removeChild(this.Fm.fv()),this.Fm.m(),this.Fm=null);const s=t.Qt().Jd();i&&null===this.Nm&&(this.Nm=new On(this,t.N(),s,\"left\"),this.iw.appendChild(this.Nm.fv())),n&&null===this.Fm&&(this.Fm=new On(this,t.N(),s,\"right\"),this.nw.appendChild(this.Fm.fv()))}Iw(t){return t.Jp&&this.Ym||null!==this.Km}lw(t,i,n){t=Math.max(0,Math.min(t,this.nm.width-1)),i=Math.max(0,Math.min(i,this.nm.height-1)),this.sn().Kd(t,i,n,u(this.Jm))}pw(){this.sn().Zd()}Mw(){this.Gm&&(this.Km=null,this.pw())}fw(t,i,n){this.Km=t,this.Gm=!1,this.lw(i.x,i.y,n);const s=this.sn().Vd();this.Zm={x:s.ni(),y:s.si()}}sn(){return this.Gv.Qt()}dw(t){if(!this.Um)return;const i=this.sn(),n=this.yv();if(i.eu(n,n.kn()),this.Hm=null,this.Um=!1,i.jd(),null!==this.Xm){const t=performance.now(),n=i.Et();this.Xm.me(n.Oc(),t),this.Xm.Kc(t)||i.ps(this.Xm)}}aw(){this.Km=null}ow(){if(!this.Jm)return;if(this.sn().cs(),document.activeElement!==document.body&&document.activeElement!==document.documentElement)u(document.activeElement).blur();else{const t=document.getSelection();null!==t&&t.removeAllRanges()}!this.Jm.kn().Zi()&&this.sn().Et().Zi()}cw(t){if(null===this.Jm)return;const i=this.sn(),n=i.Et();if(n.Zi())return;const s=this.Gv.N(),e=s.handleScroll,r=s.kineticScroll;if((!e.pressedMouseMove||t.Jp)&&(!e.horzTouchDrag&&!e.vertTouchDrag||!t.Jp))return;const h=this.Jm.kn(),a=performance.now();if(null!==this.Hm||this.Iw(t)||(this.Hm={x:t.clientX,y:t.clientY,yf:a,Vw:t.localX,Bw:t.localY}),null!==this.Hm&&!this.Um&&(this.Hm.x!==t.clientX||this.Hm.y!==t.clientY)){if(t.Jp&&r.touch||!t.Jp&&r.mouse){const t=n.ml();this.Xm=new Tn(.2/t,7/t,.997,15/t),this.Xm.Uv(n.Oc(),this.Hm.yf)}else this.Xm=null;h.Zi()||i.nu(this.Jm,h,t.localY),i.Ud(t.localX),this.Um=!0}this.Um&&(h.Zi()||i.su(this.Jm,h,t.localY),i.$d(t.localX),null!==this.Xm&&this.Xm.Uv(n.Oc(),a))}}class $n{constructor(i,n,s,e,r){this.xt=!0,this.nm=t({width:0,height:0}),this.om=()=>this.Rm(3),this.dm=\"left\"===i,this.bd=s.Jd,this.yn=n,this.Ew=e,this.Aw=r,this.uv=document.createElement(\"div\"),this.uv.style.width=\"25px\",this.uv.style.height=\"100%\",this.uv.style.overflow=\"hidden\",this.wm=Dn(this.uv,t({width:16,height:16})),this.wm.subscribeSuggestedBitmapSizeChanged(this.om)}m(){this.wm.unsubscribeSuggestedBitmapSizeChanged(this.om),In(this.wm.canvasElement),this.wm.dispose()}fv(){return this.uv}pv(){return this.nm}km(t){n(this.nm,t)||(this.nm=t,this.wm.resizeCanvasElement(t),this.uv.style.width=`${t.width}px`,this.uv.style.height=`${t.height}px`,this.xt=!0)}Rm(t){if(t<3&&!this.xt)return;if(0===this.nm.width||0===this.nm.height)return;this.xt=!1,this.wm.applySuggestedBitmapSize();const i=s(this.wm,{colorSpace:this.yn.layout.colorSpace});null!==i&&i.useBitmapCoordinateSpace((t=>{this.Im(t),this.Vm(t)}))}vv(){return this.wm.bitmapSize}mv(t,i,n){const s=this.vv();s.width>0&&s.height>0&&t.drawImage(this.wm.canvasElement,i,n)}Vm({context:t,bitmapSize:i,horizontalPixelRatio:n,verticalPixelRatio:s}){if(!this.Ew())return;t.fillStyle=this.yn.timeScale.borderColor;const e=Math.floor(this.bd.N().S*n),r=Math.floor(this.bd.N().S*s),h=this.dm?i.width-e:0;t.fillRect(h,0,e,r)}Im({context:t,bitmapSize:i}){z(t,0,0,i.width,i.height,this.Aw())}}function jn(t){return i=>i.tl?.(t)??[]}const qn=jn(\"normal\"),Yn=jn(\"top\"),Kn=jn(\"bottom\");class Gn{constructor(i,n){this.Lw=null,this.zw=null,this.M=null,this.Ow=!1,this.nm=t({width:0,height:0}),this.Nw=new d,this.rm=new rt(5),this.lm=!1,this.om=()=>{this.lm||this.Gv.Qt().mr()},this.um=()=>{this.lm||this.Gv.Qt().mr()},this.Gv=i,this.Pu=n,this.yn=i.N().layout,this.jv=document.createElement(\"tr\"),this.Fw=document.createElement(\"td\"),this.Fw.style.padding=\"0\",this.Ww=document.createElement(\"td\"),this.Ww.style.padding=\"0\",this.uv=document.createElement(\"td\"),this.uv.style.height=\"25px\",this.uv.style.padding=\"0\",this.Hw=document.createElement(\"div\"),this.Hw.style.width=\"100%\",this.Hw.style.height=\"100%\",this.Hw.style.position=\"relative\",this.Hw.style.overflow=\"hidden\",this.uv.appendChild(this.Hw),this.wm=Dn(this.Hw,t({width:16,height:16})),this.wm.subscribeSuggestedBitmapSizeChanged(this.om);const s=this.wm.canvasElement;s.style.position=\"absolute\",s.style.zIndex=\"1\",s.style.left=\"0\",s.style.top=\"0\",this.Mm=Dn(this.Hw,t({width:16,height:16})),this.Mm.subscribeSuggestedBitmapSizeChanged(this.um);const e=this.Mm.canvasElement;e.style.position=\"absolute\",e.style.zIndex=\"2\",e.style.left=\"0\",e.style.top=\"0\",this.jv.appendChild(this.Fw),this.jv.appendChild(this.uv),this.jv.appendChild(this.Ww),this.Uw(),this.Gv.Qt().N_().i(this.Uw.bind(this),this),this.sv=new Mn(this.Mm.canvasElement,this,{Pp:()=>!0,kp:()=>!this.Gv.N().handleScroll.horzTouchDrag})}m(){this.sv.m(),null!==this.Lw&&this.Lw.m(),null!==this.zw&&this.zw.m(),this.Mm.unsubscribeSuggestedBitmapSizeChanged(this.um),In(this.Mm.canvasElement),this.Mm.dispose(),this.wm.unsubscribeSuggestedBitmapSizeChanged(this.om),In(this.wm.canvasElement),this.wm.dispose()}fv(){return this.jv}$w(){return this.Lw}jw(){return this.zw}Fp(t){if(this.Ow)return;this.Ow=!0;const i=this.Gv.Qt();!i.Et().Zi()&&this.Gv.N().handleScale.axisPressedMouseMove.time&&i.Fd(t.localX)}Op(t){this.Fp(t)}Wp(){const t=this.Gv.Qt();!t.Et().Zi()&&this.Ow&&(this.Ow=!1,this.Gv.N().handleScale.axisPressedMouseMove.time&&t.Yd())}Dp(t){const i=this.Gv.Qt();!i.Et().Zi()&&this.Gv.N().handleScale.axisPressedMouseMove.time&&i.qd(t.localX)}Tp(t){this.Dp(t)}Ep(){this.Ow=!1;const t=this.Gv.Qt();t.Et().Zi()&&!this.Gv.N().handleScale.axisPressedMouseMove.time||t.Yd()}Vp(){this.Ep()}fp(){this.Gv.N().handleScale.axisDoubleClickReset.time&&this.Gv.Qt().ws()}_p(){this.fp()}bp(){this.Gv.Qt().N().handleScale.axisPressedMouseMove.time&&this.zm(1)}Zp(){this.zm(0)}pv(){return this.nm}qw(){return this.Nw}Yw(i,s,e){n(this.nm,i)||(this.nm=i,this.lm=!0,this.wm.resizeCanvasElement(i),this.Mm.resizeCanvasElement(i),this.lm=!1,this.uv.style.width=`${i.width}px`,this.uv.style.height=`${i.height}px`,this.Nw.p(i)),null!==this.Lw&&this.Lw.km(t({width:s,height:i.height})),null!==this.zw&&this.zw.km(t({width:e,height:i.height}))}Kw(){const t=this.Gw();return Math.ceil(t.S+t.C+t.P+t.A+t.I+t.Zw)}Pt(){this.Gv.Qt().Et().zl()}vv(){return this.wm.bitmapSize}mv(t,i,n,s){const e=this.vv();if(e.width>0&&e.height>0&&(t.drawImage(this.wm.canvasElement,i,n),s)){const s=this.Mm.canvasElement;t.drawImage(s,i,n)}}Rm(t){if(0===t)return;const i={colorSpace:this.yn.colorSpace};if(1!==t){this.wm.applySuggestedBitmapSize();const n=s(this.wm,i);null!==n&&(n.useBitmapCoordinateSpace((t=>{this.Im(t),this.Vm(t),this.Xw(n,Kn)})),this.Em(n),this.Xw(n,qn)),null!==this.Lw&&this.Lw.Rm(t),null!==this.zw&&this.zw.Rm(t)}this.Mm.applySuggestedBitmapSize();const n=s(this.Mm,i);null!==n&&(n.useBitmapCoordinateSpace((({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)})),this.Jw([...this.Gv.Qt().Jn(),this.Gv.Qt().Vd()],n),this.Xw(n,Yn))}Xw(t,i){const n=this.Gv.Qt().Jn();for(const s of n)En(i,(i=>Vn(i,t,!1,void 0)),s,void 0);for(const s of n)En(i,(i=>Bn(i,t,!1,void 0)),s,void 0)}Im({context:t,bitmapSize:i}){z(t,0,0,i.width,i.height,this.Gv.Qt().af())}Vm({context:t,bitmapSize:i,verticalPixelRatio:n}){if(this.Gv.N().timeScale.borderVisible){t.fillStyle=this.Qw();const s=Math.max(1,Math.floor(this.Gw().S*n));t.fillRect(0,0,i.width,s)}}Em(t){const i=this.Gv.Qt().Et(),n=i.zl();if(!n||0===n.length)return;const s=this.Pu.maxTickMarkWeight(n),e=this.Gw(),r=i.N();r.borderVisible&&r.ticksVisible&&t.useBitmapCoordinateSpace((({context:t,horizontalPixelRatio:i,verticalPixelRatio:s})=>{t.strokeStyle=this.Qw(),t.fillStyle=this.Qw();const r=Math.max(1,Math.floor(i)),h=Math.floor(.5*i);t.beginPath();const a=Math.round(e.C*s);for(let s=n.length;s--;){const e=Math.round(n[s].coord*i);t.rect(e-h,0,r,a)}t.fill()})),t.useMediaCoordinateSpace((({context:t})=>{const i=e.S+e.C+e.A+e.P/2;t.textAlign=\"center\",t.textBaseline=\"middle\",t.fillStyle=this.H(),t.font=this.ym();for(const e of n)if(e.weight<s){const n=e.needAlignCoordinate?this.tM(t,e.coord,e.label):e.coord;t.fillText(e.label,n,i)}this.Gv.N().timeScale.allowBoldLabels&&(t.font=this.iM());for(const e of n)if(e.weight>=s){const n=e.needAlignCoordinate?this.tM(t,e.coord,e.label):e.coord;t.fillText(e.label,n,i)}}))}tM(t,i,n){const s=this.rm.Ii(t,n),e=s/2,r=Math.floor(i-e)+.5;return r<0?i+=Math.abs(0-r):r+s>this.nm.width&&(i-=Math.abs(this.nm.width-(r+s))),i}Jw(t,i){const n=this.Gw();for(const s of t)for(const t of s.dn())t.Tt().st(i,n)}Qw(){return this.Gv.N().timeScale.borderColor}H(){return this.yn.textColor}F(){return this.yn.fontSize}ym(){return x(this.F(),this.yn.fontFamily)}iM(){return x(this.F(),this.yn.fontFamily,\"bold\")}Gw(){null===this.M&&(this.M={S:1,L:NaN,A:NaN,I:NaN,tn:NaN,C:5,P:NaN,k:\"\",Qi:new rt,Zw:0});const t=this.M,i=this.ym();if(t.k!==i){const n=this.F();t.P=n,t.k=i,t.A=3*n/12,t.I=3*n/12,t.tn=9*n/12,t.L=0,t.Zw=4*n/12,t.Qi.Os()}return this.M}zm(t){this.uv.style.cursor=1===t?\"ew-resize\":\"default\"}Uw(){const t=this.Gv.Qt(),i=t.N();i.leftPriceScale.visible||null===this.Lw||(this.Fw.removeChild(this.Lw.fv()),this.Lw.m(),this.Lw=null),i.rightPriceScale.visible||null===this.zw||(this.Ww.removeChild(this.zw.fv()),this.zw.m(),this.zw=null);const n={Jd:this.Gv.Qt().Jd()},s=()=>i.leftPriceScale.borderVisible&&t.Et().N().borderVisible,e=()=>t.af();i.leftPriceScale.visible&&null===this.Lw&&(this.Lw=new $n(\"left\",i,n,s,e),this.Fw.appendChild(this.Lw.fv())),i.rightPriceScale.visible&&null===this.zw&&(this.zw=new $n(\"right\",i,n,s,e),this.Ww.appendChild(this.zw.fv()))}}const Zn=!!dn&&!!navigator.userAgentData&&navigator.userAgentData.brands.some((t=>t.brand.includes(\"Chromium\")))&&!!dn&&(navigator?.userAgentData?.platform?\"Windows\"===navigator.userAgentData.platform:navigator.userAgent.toLowerCase().indexOf(\"win\")>=0);class Xn{constructor(t,i,n){var s;this.nM=[],this.sM=[],this.eM=0,this.oo=0,this.k_=0,this.rM=0,this.hM=0,this.aM=null,this.lM=!1,this.$m=new d,this.jm=new d,this.wd=new d,this.oM=null,this._M=null,this.Kv=t,this.yn=i,this.Pu=n,this.jv=document.createElement(\"div\"),this.jv.classList.add(\"tv-lightweight-charts\"),this.jv.style.overflow=\"hidden\",this.jv.style.direction=\"ltr\",this.jv.style.width=\"100%\",this.jv.style.height=\"100%\",(s=this.jv).style.userSelect=\"none\",s.style.webkitUserSelect=\"none\",s.style.msUserSelect=\"none\",s.style.MozUserSelect=\"none\",s.style.webkitTapHighlightColor=\"transparent\",this.uM=document.createElement(\"table\"),this.uM.setAttribute(\"cellspacing\",\"0\"),this.jv.appendChild(this.uM),this.cM=this.dM.bind(this),Jn(this.yn)&&this.fM(!0),this.sn=new qi(this.gd.bind(this),this.yn,n),this.Qt().Bd().i(this.pM.bind(this),this),this.vM=new Gn(this,this.Pu),this.uM.appendChild(this.vM.fv());const e=i.autoSize&&this.mM();let r=this.yn.width,h=this.yn.height;if(e||0===r||0===h){const i=t.getBoundingClientRect();r=r||i.width,h=h||i.height}this.wM(r,h),this.MM(),t.appendChild(this.jv),this.gM(),this.sn.Et().Jc().i(this.sn.ka.bind(this.sn),this),this.sn.N_().i(this.sn.ka.bind(this.sn),this)}Qt(){return this.sn}N(){return this.yn}lv(){return this.nM}bM(){return this.vM}m(){this.fM(!1),0!==this.eM&&window.cancelAnimationFrame(this.eM),this.sn.Bd().u(this),this.sn.Et().Jc().u(this),this.sn.N_().u(this),this.sn.m();for(const t of this.nM)this.uM.removeChild(t.fv()),t.mw().u(this),t.ww().u(this),t.m();this.nM=[];for(const t of this.sM)this.SM(t);this.sM=[],u(this.vM).m(),null!==this.jv.parentElement&&this.jv.parentElement.removeChild(this.jv),this.wd.m(),this.$m.m(),this.jm.m(),this.xM()}wM(i,n,s=!1){if(this.oo===n&&this.k_===i)return;const e=function(i){const n=Math.floor(i.width),s=Math.floor(i.height);return t({width:n-n%2,height:s-s%2})}(t({width:i,height:n}));this.oo=e.height,this.k_=e.width;const r=this.oo+\"px\",h=this.k_+\"px\";if(this.CM()||(u(this.jv).style.height=r,u(this.jv).style.width=h),this.uM.style.height=r,this.uM.style.width=h,s){0!==this.eM&&(window.cancelAnimationFrame(this.eM),this.eM=0),this.lM=!1;const t=X.ys();null!==this.aM&&(t.Ss(this.aM),this.aM=null),this.yM(t,performance.now())}else this.sn.ka()}Rm(t){void 0===t&&(t=X.ys());for(let i=0;i<this.nM.length;i++)this.nM[i].Rm(t._s(i).rs);this.yn.timeScale.visible&&this.vM.Rm(t.ls())}vr(t){const i=Jn(this.yn);this.sn.vr(t);const n=Jn(this.yn);n!==i&&this.fM(n),t.layout?.panes&&this.PM(),this.gM(),this.kM(t)}mw(){return this.$m}ww(){return this.jm}Bd(){return this.wd}TM(t=!1){null!==this.aM&&(this.yM(this.aM,performance.now()),this.aM=null);const i=this.RM(null),n=document.createElement(\"canvas\");n.width=i.width,n.height=i.height;const s=u(n.getContext(\"2d\"));return this.RM(s,t),n}DM(t){if(\"left\"===t&&!this.IM())return 0;if(\"right\"===t&&!this.VM())return 0;if(0===this.nM.length)return 0;return u(\"left\"===t?this.nM[0].yw():this.nM[0].Pw()).Tm()}CM(){return this.yn.autoSize&&null!==this.oM}Mv(){return this.jv}BM(t){this._M=t,this._M?this.Mv().style.setProperty(\"cursor\",t):this.Mv().style.removeProperty(\"cursor\")}EM(){return this._M}AM(t){return _(this.nM[t]).pv()}PM(){this.sM.forEach((t=>{t.Pt()}))}kM(t){(void 0!==t.autoSize||!this.oM||void 0===t.width&&void 0===t.height)&&(t.autoSize&&!this.oM&&this.mM(),!1===t.autoSize&&null!==this.oM&&this.xM(),t.autoSize||void 0===t.width&&void 0===t.height||this.wM(t.width||this.k_,t.height||this.oo))}RM(i,n){let s=0,e=0;const r=this.nM[0],h=(t,s)=>{let e=0;for(let r=0;r<this.nM.length;r++){const h=this.nM[r],a=u(\"left\"===t?h.yw():h.Pw()),l=a.vv();if(null!==i&&a.mv(i,s,e,n),e+=l.height,r<this.nM.length-1){const t=this.sM[r],n=t.vv();null!==i&&t.mv(i,s,e),e+=n.height}}};if(this.IM()){h(\"left\",0);s+=u(r.yw()).vv().width}for(let t=0;t<this.nM.length;t++){const r=this.nM[t],h=r.vv();if(null!==i&&r.mv(i,s,e,n),e+=h.height,t<this.nM.length-1){const n=this.sM[t],r=n.vv();null!==i&&n.mv(i,s,e),e+=r.height}}if(s+=r.vv().width,this.VM()){h(\"right\",s);s+=u(r.Pw()).vv().width}const a=(t,n,s)=>{u(\"left\"===t?this.vM.$w():this.vM.jw()).mv(u(i),n,s)};if(this.yn.timeScale.visible){const t=this.vM.vv();if(null!==i){let s=0;this.IM()&&(a(\"left\",s,e),s=u(r.yw()).vv().width),this.vM.mv(i,s,e,n),s+=t.width,this.VM()&&a(\"right\",s,e)}e+=t.height}return t({width:s,height:e})}LM(){let i=0,n=0,s=0;for(const t of this.nM)this.IM()&&(n=Math.max(n,u(t.yw()).Cm(),this.yn.leftPriceScale.minimumWidth)),this.VM()&&(s=Math.max(s,u(t.Pw()).Cm(),this.yn.rightPriceScale.minimumWidth)),i+=t.F_();n=mn(n),s=mn(s);const e=this.k_,r=this.oo,h=Math.max(e-n-s,0),a=1*this.sM.length,l=this.yn.timeScale.visible;let o=l?Math.max(this.vM.Kw(),this.yn.timeScale.minimumHeight):0;var _;o=(_=o)+_%2;const c=a+o,d=r<c?0:r-c,f=d/i;let p=0;const v=window.devicePixelRatio||1;for(let i=0;i<this.nM.length;++i){const e=this.nM[i];e.ew(this.sn.Gn()[i]);let r=0,a=0;a=i===this.nM.length-1?Math.ceil((d-p)*v)/v:Math.round(e.F_()*f*v)/v,r=Math.max(a,2),p+=r,e.km(t({width:h,height:r})),this.IM()&&e.gw(n,\"left\"),this.VM()&&e.gw(s,\"right\"),e.yv()&&this.sn.Ed(e.yv(),r)}this.vM.Yw(t({width:l?h:0,height:o}),l?n:0,l?s:0),this.sn.H_(h),this.rM!==n&&(this.rM=n),this.hM!==s&&(this.hM=s)}fM(t){t?this.jv.addEventListener(\"wheel\",this.cM,{passive:!1}):this.jv.removeEventListener(\"wheel\",this.cM)}zM(t){switch(t.deltaMode){case t.DOM_DELTA_PAGE:return 120;case t.DOM_DELTA_LINE:return 32}return Zn?1/window.devicePixelRatio:1}dM(t){if(!(0!==t.deltaX&&this.yn.handleScroll.mouseWheel||0!==t.deltaY&&this.yn.handleScale.mouseWheel))return;const i=this.zM(t),n=i*t.deltaX/100,s=-i*t.deltaY/100;if(t.cancelable&&t.preventDefault(),0!==s&&this.yn.handleScale.mouseWheel){const i=Math.sign(s)*Math.min(1,Math.abs(s)),n=t.clientX-this.jv.getBoundingClientRect().left;this.Qt().Wd(n,i)}0!==n&&this.yn.handleScroll.mouseWheel&&this.Qt().Hd(-80*n)}yM(t,i){const n=t.ls();3===n&&this.OM(),3!==n&&2!==n||(this.NM(t),this.FM(t,i),this.vM.Pt(),this.nM.forEach((t=>{t.hw()})),3===this.aM?.ls()&&(this.aM.Ss(t),this.OM(),this.NM(this.aM),this.FM(this.aM,i),t=this.aM,this.aM=null)),this.Rm(t)}FM(t,i){for(const n of t.bs())this.xs(n,i)}NM(t){const i=this.sn.Gn();for(let n=0;n<i.length;n++)t._s(n).hs&&i[n].lu()}xs(t,i){const n=this.sn.Et();switch(t.ds){case 0:n.td();break;case 1:n.nd(t.Wt);break;case 2:n.Ms(t.Wt);break;case 3:n.gs(t.Wt);break;case 4:n.Wc();break;case 5:t.Wt.Kc(i)||n.gs(t.Wt.Gc(i))}}gd(t){null!==this.aM?this.aM.Ss(t):this.aM=t,this.lM||(this.lM=!0,this.eM=window.requestAnimationFrame((t=>{if(this.lM=!1,this.eM=0,null!==this.aM){const i=this.aM;this.aM=null,this.yM(i,t);for(const n of i.bs())if(5===n.ds&&!n.Wt.Kc(t)){this.Qt().ps(n.Wt);break}}})))}OM(){this.MM()}SM(t){this.uM.removeChild(t.fv()),t.m()}MM(){const t=this.sn.Gn(),i=t.length,n=this.nM.length;for(let t=i;t<n;t++){const t=_(this.nM.pop());this.uM.removeChild(t.fv()),t.mw().u(this),t.ww().u(this),t.m();const i=this.sM.pop();void 0!==i&&this.SM(i)}for(let s=n;s<i;s++){const i=new Un(this,t[s]);if(i.mw().i(this.WM.bind(this,i),this),i.ww().i(this.HM.bind(this,i),this),this.nM.push(i),s>0){const t=new yn(this,s-1,s);this.sM.push(t),this.uM.insertBefore(t.fv(),this.vM.fv())}this.uM.insertBefore(i.fv(),this.vM.fv())}for(let n=0;n<i;n++){const i=t[n],s=this.nM[n];s.yv()!==i?s.ew(i):s.sw()}this.gM(),this.LM()}UM(t,i,n,s){const e=new Map;if(null!==t){this.sn.Jn().forEach((i=>{const n=i.Un().Hn(t);null!==n&&e.set(i,n)}))}let r;if(null!==t){const i=this.sn.Et().en(t)?.originalTime;void 0!==i&&(r=i)}const h=this.Qt().cu(),a=this.$M(s),l=function(t,i){const n=null!==t&&t.uu instanceof Jt?t.uu:void 0,s=t?.bu?.te,e=void 0!==i&&-1!==i?i:void 0;return null===t||void 0===t.ee?{jM:n,qM:s}:{jM:n,qM:s,YM:{ds:t.ee,KM:(r=t.uu,h=t.ee,r instanceof Pi?\"pane-primitive\":\"marker\"===h||\"primitive\"===h?\"series-primitive\":\"series\"),GM:vn(t.ee,s),Y_:n,ZM:s,XM:e}};var r,h}(h,a);return{Qr:r,$n:t??void 0,JM:i??void 0,XM:-1!==a?a:void 0,jM:l.jM,QM:e,qM:l.qM,YM:l.YM,tg:n??void 0}}$M(t){let i=-1;if(t)i=this.nM.indexOf(t);else{const t=this.Qt().Vd().Kn();null!==t&&(i=this.Qt().Gn().indexOf(t))}return i}WM(t,i,n,s){this.$m.p((()=>this.UM(i,n,s,t)))}HM(t,i,n,s){this.jm.p((()=>this.UM(i,n,s,t)))}pM(t,i,n){this.BM(this.Qt().cu()?.gu??null),this.wd.p((()=>this.UM(t,i,n)))}gM(){const t=this.yn.timeScale.visible?\"\":\"none\";this.vM.fv().style.display=t}IM(){return this.nM[0].yv().X_().N().visible}VM(){return this.nM[0].yv().J_().N().visible}mM(){return\"ResizeObserver\"in window&&(this.oM=new ResizeObserver((t=>{const i=t[t.length-1];if(!i)return;const n=i.contentRect.width,s=i.contentRect.height;this.wM(n,s,!0)})),this.oM.observe(this.Kv,{box:\"border-box\"}),!0)}xM(){null!==this.oM&&this.oM.disconnect(),this.oM=null}}function Jn(t){return Boolean(t.handleScroll.mouseWheel||t.handleScale.mouseWheel)}function Qn(t){return void 0===t.open&&void 0===t.value}function ts(t){return function(t){return void 0!==t.open}(t)||function(t){return void 0!==t.value}(t)}function is(t,i,n,s){const e=n.value,r={$n:i,wt:t,Wt:[e,e,e,e],Qr:s};return void 0!==n.color&&(r.R=n.color),r}function ns(t,i,n,s){const e=n.value,r={$n:i,wt:t,Wt:[e,e,e,e],Qr:s};return void 0!==n.lineColor&&(r.vt=n.lineColor),void 0!==n.topColor&&(r.ah=n.topColor),void 0!==n.bottomColor&&(r.oh=n.bottomColor),r}function ss(t,i,n,s){const e=n.value,r={$n:i,wt:t,Wt:[e,e,e,e],Qr:s};return void 0!==n.topLineColor&&(r._h=n.topLineColor),void 0!==n.bottomLineColor&&(r.uh=n.bottomLineColor),void 0!==n.topFillColor1&&(r.dh=n.topFillColor1),void 0!==n.topFillColor2&&(r.fh=n.topFillColor2),void 0!==n.bottomFillColor1&&(r.ph=n.bottomFillColor1),void 0!==n.bottomFillColor2&&(r.mh=n.bottomFillColor2),r}function es(t,i,n,s){const e={$n:i,wt:t,Wt:[n.open,n.high,n.low,n.close],Qr:s};return void 0!==n.color&&(e.R=n.color),e}function rs(t,i,n,s){const e={$n:i,wt:t,Wt:[n.open,n.high,n.low,n.close],Qr:s};return void 0!==n.color&&(e.R=n.color),void 0!==n.borderColor&&(e.Ht=n.borderColor),void 0!==n.wickColor&&(e.hh=n.wickColor),e}function hs(t,i,n,s,e){const r=_(e)(n),h=Math.max(...r),a=Math.min(...r),l=r[r.length-1],o=[l,h,a,l],{time:u,color:c,...d}=n;return{$n:i,wt:t,Wt:o,Qr:s,ue:d,R:c}}function as(t){return void 0!==t.Wt}function ls(t,i){return void 0!==i.customValues&&(t.ig=i.customValues),t}function os(t){return(i,n,s,e,r,h)=>function(t,i){return i?i(t):Qn(t)}(s,h)?ls({wt:i,$n:n,Qr:e},s):ls(t(i,n,s,e,r),s)}function _s(t){return{Candlestick:os(rs),Bar:os(es),Area:os(ns),Baseline:os(ss),Histogram:os(is),Line:os(is),Custom:os(hs)}[t]}function us(t){return{$n:0,ng:new Map,Oa:t}}function cs(t,i){if(void 0!==t&&0!==t.length)return{sg:i.key(t[0].wt),eg:i.key(t[t.length-1].wt)}}function ds(t){let i;return t.forEach((t=>{void 0===i&&(i=t.Qr)})),_(i)}class fs{constructor(t){this.rg=new Map,this.hg=new Map,this.ag=new Map,this.lg=[],this.Pu=t}m(){this.rg.clear(),this.hg.clear(),this.ag.clear(),this.lg=[]}og(t,i){let n=0!==this.rg.size,s=!1;const e=this.hg.get(t);if(void 0!==e)if(1===this.hg.size)n=!1,s=!0,this.rg.clear();else for(const i of this.lg)i.pointData.ng.delete(t)&&(s=!0);let r=[];if(0!==i.length){const n=i.map((t=>t.time)),e=this.Pu.createConverterToInternalObj(i),h=_s(t.bh()),a=t.ul(),l=t.cl();r=i.map(((i,r)=>{const o=e(i.time),_=this.Pu.key(o);let u=this.rg.get(_);void 0===u&&(u=us(o),this.rg.set(_,u),s=!0);const c=h(o,u.$n,i,n[r],a,l);return u.ng.set(t,c),c}))}n&&this._g(),this.ug(t,r);let h=-1;if(s){const t=[];this.rg.forEach((i=>{t.push({timeWeight:0,time:i.Oa,pointData:i,originalTime:ds(i.ng)})})),t.sort(((t,i)=>this.Pu.key(t.time)-this.Pu.key(i.time))),h=this.cg(t)}return this.dg(t,h,function(t,i,n){const s=cs(t,n),e=cs(i,n);if(void 0!==s&&void 0!==e)return{fg:!1,Va:s.eg>=e.eg&&s.sg>=e.sg}}(this.hg.get(t),e,this.Pu))}if(t){return this.og(t,[])}pg(t,i,n){if(n&&t.Fa())throw new Error(\"Historical updates are not supported when conflation is enabled. Conflation requires data to be processed in order.\");const s=i;!function(t){void 0===t.Qr&&(t.Qr=t.time)}(s),this.Pu.preprocessData(i);const e=this.Pu.createConverterToInternalObj([i])(i.time),r=this.ag.get(t);if(!n&&void 0!==r&&this.Pu.key(e)<this.Pu.key(r))throw new Error(`Cannot update oldest data, last time=${r}, new time=${e}`);let h=this.rg.get(this.Pu.key(e));if(n&&void 0===h)throw new Error(\"Cannot update non-existing data point when historicalUpdate is true\");const a=void 0===h;void 0===h&&(h=us(e),this.rg.set(this.Pu.key(e),h));const l=_s(t.bh()),o=t.ul(),_=t.cl(),u=l(e,h.$n,i,s.Qr,o,_),c=!n&&!a&&void 0!==r&&this.Pu.key(e)===this.Pu.key(r);h.ng.set(t,u),n?this.vg(t,u,h.$n):c&&t.Fa()&&as(u)?(t.Rr(u),this.mg(t,u)):this.mg(t,u);const d={Va:as(u),fg:n};if(!a)return this.dg(t,-1,d);const f={timeWeight:0,time:h.Oa,pointData:h,originalTime:ds(h.ng)},p=Rt(this.lg,this.Pu.key(f.time),((t,i)=>this.Pu.key(t.time)<i));this.lg.splice(p,0,f);for(let t=p;t<this.lg.length;++t)ps(this.lg[t].pointData,t);return this.Pu.fillWeightsForPoints(this.lg,p),this.dg(t,p,d)}wg(t,i){const n=this.hg.get(t);if(void 0===n||i<=0)return[[],this.Mg()];i=Math.min(i,n.length);const s=n.splice(-i).reverse();0===n.length?this.ag.delete(t):this.ag.set(t,n[n.length-1].wt);for(const i of s){const n=this.rg.get(this.Pu.key(i.wt));if(n&&(n.ng.delete(t),0===n.ng.size)){this.rg.delete(this.Pu.key(n.Oa)),this.lg.splice(n.$n,1);for(let t=n.$n;t<this.lg.length;++t)ps(this.lg[t].pointData,t)}}return[s,this.dg(t,this.lg.length-1,{fg:!1,Va:!1})]}mg(t,i){let n=this.hg.get(t);void 0===n&&(n=[],this.hg.set(t,n));const s=0!==n.length?n[n.length-1]:null;null===s||this.Pu.key(i.wt)>this.Pu.key(s.wt)?as(i)&&n.push(i):as(i)?n[n.length-1]=i:n.splice(-1,1),this.ag.set(t,i.wt)}vg(t,i,n){const s=this.hg.get(t);if(void 0===s)return;const e=Rt(s,n,((t,i)=>t.$n<i));as(i)?s[e]=i:s.splice(e,1)}ug(t,i){0!==i.length?(this.hg.set(t,i.filter(as)),this.ag.set(t,i[i.length-1].wt)):(this.hg.delete(t),this.ag.delete(t))}_g(){for(const t of this.lg)0===t.pointData.ng.size&&this.rg.delete(this.Pu.key(t.time))}cg(t){let i=-1;for(let n=0;n<this.lg.length&&n<t.length;++n){const s=this.lg[n],e=t[n];if(this.Pu.key(s.time)!==this.Pu.key(e.time)){i=n;break}e.timeWeight=s.timeWeight,ps(e.pointData,n)}if(-1===i&&this.lg.length!==t.length&&(i=Math.min(this.lg.length,t.length)),-1===i)return-1;for(let n=i;n<t.length;++n)ps(t[n].pointData,n);return this.Pu.fillWeightsForPoints(t,i),this.lg=t,i}gg(){if(0===this.hg.size)return null;let t=0;return this.hg.forEach((i=>{0!==i.length&&(t=Math.max(t,i[i.length-1].$n))})),t}dg(t,i,n){const s=this.Mg();if(-1!==i)this.hg.forEach(((i,e)=>{s.Y_.set(e,{ue:i,bg:e===t?n:void 0})})),this.hg.has(t)||s.Y_.set(t,{ue:[],bg:n}),s.Et.Sg=this.lg,s.Et.xg=i;else{const i=this.hg.get(t);s.Y_.set(t,{ue:i||[],bg:n})}return s}Mg(){return{Y_:new Map,Et:{Dc:this.gg()}}}}function ps(t,i){t.$n=i,t.ng.forEach((t=>{t.$n=i}))}function vs(t,i){return t._t<i}function ms(t,i){return i<t._t}function ws(t,i,n,s){return Rt(t,i,vs,n,s)}function Ms(t,i,n,s){return Dt(t,i,ms,n,s)}function gs(t,i,n){return{ne:t,se:i,ee:n}}function bs(t,i,n,s){return t>=i-s&&t<=n+s}function Ss(t,i,n,s,e,r){const h=e-n,a=r-s;if(0===h&&0===a)return Math.hypot(t-n,i-s);const l=((t-n)*h+(i-s)*a)/(h*h+a*a),o=Math.max(0,Math.min(1,l)),_=n+h*o,u=s+a*o;return Math.hypot(t-_,i-u)}const xs=[0,0];function Cs(t,i,n){return void 0===i||i.wt!==t.wt-1?t._t-n/2:(i._t+t._t)/2}function ys(t,i,n){return void 0===i||i.wt!==t.wt+1?t._t+n/2:(t._t+i._t)/2}function Ps(t,i,n,s,e,r,h){if(null===i||i.from>=i.to||0===t.length)return null;const a=e/2+r,l=ws(t,n-a,i.from,i.to),o=Ms(t,n+a,l,i.to);if(l>=o)return null;let _=Number.POSITIVE_INFINITY;for(let a=l;a<o;a++){const l=t[a],o=a>i.from?t[a-1]:void 0,u=a<i.to-1?t[a+1]:void 0,c=Cs(l,o,e)-r,d=ys(l,u,e)+r;if(n<c||n>d)continue;h(l,xs);const f=xs[0],p=xs[1],v=Math.min(f,p),m=Math.max(f,p),w=v-r,M=m+r;if(s>=v&&s<=m)_=Math.min(_,0);else if(s>=w&&s<=M){const t=Math.min(Math.abs(s-v),Math.abs(m-s));_=Math.min(_,t)}}return Number.isFinite(_)?gs(_,0,\"series-range\"):null}function ks(t,i){return t.wt<i}function Ts(t,i){return i<t.wt}function Rs(t,i,n){const s=i.Na(),e=i.bi(),r=Rt(t,s,ks),h=Dt(t,e,Ts);if(!n)return{from:r,to:h};let a=r,l=h;return r>0&&r<t.length&&t[r].wt>=s&&(a=r-1),h>0&&h<t.length&&t[h-1].wt<=e&&(l=h+1),{from:a,to:l}}class Ds{constructor(t,i,n){this.Cg=!0,this.yg=!0,this.Pg=!0,this.kg=[],this.Tg=null,this.Rg=-1,this.ae=t,this.le=i,this.Dg=n}Pt(t){this.Cg=!0,\"data\"===t&&(this.yg=!0),\"options\"===t&&(this.Pg=!0)}Tt(){return this.ae.It()?(this.Ig(),null===this.Tg?null:this.Vg):null}Qs(t,i){return this.ae.It()?(this.Ig(),null===this.Tg?null:this.Bg(t,i)):null}Bg(t,i){return null}Eg(){this.kg=this.kg.map((t=>({...t,...this.ae.Sa().Sh(t.wt)})))}Ag(){this.Tg=null}Ig(){const t=this.le.Et(),i=t.N().enableConflation?t.sd():0;i!==this.Rg&&(this.yg=!0,this.Rg=i),this.yg&&(this.Lg(),this.yg=!1),this.Pg&&(this.Eg(),this.Pg=!1),this.Cg&&(this.zg(),this.Cg=!1)}zg(){const t=this.ae.Ft(),i=this.le.Et();if(this.Ag(),i.Zi()||t.Zi())return;const n=i.Ee();if(null===n)return;if(0===this.ae.Un().Th())return;const s=this.ae.Lt();null!==s&&(this.Tg=Rs(this.kg,n,this.Dg),this.Og(t,i,s.Wt),this.Ng())}}class Is{constructor(t,i){this.Fg=t,this.Ki=i}st(t,i,n){this.Fg.draw(t,this.Ki,i,n)}}function Vs(t){switch(t){case\"point\":return 2;case\"range\":return 0;default:return 1}}class Bs extends Ds{constructor(t,i,n){super(t,i,!1),this.Yh=n,this.Fg=this.Yh.renderer(),this.Vg=new Is(this.Fg,(t=>this.Wg(t)))}get ga(){return this.Yh.conflationReducer}Ha(t){return this.Yh.priceValueBuilder(t)}dl(t){return this.Yh.isWhitespace(t)}Bg(t,i){const n=this.Fg.hitTest?.(t,i,(t=>this.Wg(t)));if(null!=n)return{ne:(s=n).distance,se:Vs(s.type),ee:\"custom\",gu:s.cursorStyle,te:s.objectId,ie:s.hitTestData};var s;const e=Ps(this.kg,this.Tg,t,i,this.le.Et().ml(),this.ae.N().hitTestTolerance,((t,i)=>{const n=t.Hg;let s=NaN,e=NaN;if(void 0!==n&&!this.Yh.isWhitespace(n))for(const t of this.Yh.priceValueBuilder(n)){const i=this.Wg(t);null!==i&&(s=Number.isNaN(s)?i:Math.min(s,i),e=Number.isNaN(e)?i:Math.max(e,i))}i[0]=s,i[1]=e}));return null===e?null:{...e,ee:\"custom\"}}Lg(){const t=this.ae.Sa();this.kg=this.ae.Ua().Bh().map((i=>({wt:i.$n,_t:NaN,...t.Sh(i.$n),Hg:i.ue})))}Og(t,i){i.Ic(this.kg,b(this.Tg))}Ng(){this.Yh.update({bars:this.kg.map(Es),barSpacing:this.le.Et().ml(),visibleRange:this.Tg,conflationFactor:this.le.Et().sd()},this.ae.N())}Wg(t){const i=this.ae.Lt();return null===i?null:this.ae.Ft().Nt(t,i.Wt)}}function Es(t){return{x:t._t,time:t.wt,originalData:t.Hg,barColor:t.sh}}const As={color:\"#2196f3\"},Ls=(t,i,n)=>{const s=c(n);return new Bs(t,i,s)};function zs(t){const i={value:t.Wt[3],time:t.Qr};return void 0!==t.ig&&(i.customValues=t.ig),i}function Os(t){const i=zs(t);return void 0!==t.R&&(i.color=t.R),i}function Ns(t){const i=zs(t);return void 0!==t.vt&&(i.lineColor=t.vt),void 0!==t.ah&&(i.topColor=t.ah),void 0!==t.oh&&(i.bottomColor=t.oh),i}function Fs(t){const i=zs(t);return void 0!==t._h&&(i.topLineColor=t._h),void 0!==t.uh&&(i.bottomLineColor=t.uh),void 0!==t.dh&&(i.topFillColor1=t.dh),void 0!==t.fh&&(i.topFillColor2=t.fh),void 0!==t.ph&&(i.bottomFillColor1=t.ph),void 0!==t.mh&&(i.bottomFillColor2=t.mh),i}function Ws(t){const i={open:t.Wt[0],high:t.Wt[1],low:t.Wt[2],close:t.Wt[3],time:t.Qr};return void 0!==t.ig&&(i.customValues=t.ig),i}function Hs(t){const i=Ws(t);return void 0!==t.R&&(i.color=t.R),i}function Us(t){const i=Ws(t),{R:n,Ht:s,hh:e}=t;return void 0!==n&&(i.color=n),void 0!==s&&(i.borderColor=s),void 0!==e&&(i.wickColor=e),i}function $s(t){return{Area:Ns,Line:Os,Baseline:Fs,Histogram:Os,Bar:Hs,Candlestick:Us,Custom:js}[t]}function js(t){const i=t.Qr;return{...t.ue,time:i}}const qs={vertLine:{color:\"#9598A1\",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:\"#131722\"},horzLine:{color:\"#9598A1\",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:\"#131722\"},mode:1,doNotSnapToHiddenSeriesIndices:!1},Ys={vertLines:{color:\"#D6DCDE\",style:0,visible:!0},horzLines:{color:\"#D6DCDE\",style:0,visible:!0}},Ks={background:{type:\"solid\",color:\"#FFFFFF\"},textColor:\"#191919\",fontSize:12,fontFamily:S,panes:{enableResize:!0,separatorColor:\"#E0E3EB\",separatorHoverColor:\"rgba(178, 181, 189, 0.2)\"},attributionLogo:!0,colorSpace:\"srgb\",colorParsers:[]},Gs={autoScale:!0,mode:0,invertScale:!1,alignLabels:!0,borderVisible:!0,borderColor:\"#2B2B43\",entireTextOnly:!1,visible:!1,ticksVisible:!1,scaleMargins:{bottom:.1,top:.2},minimumWidth:0,ensureEdgeTickMarksVisible:!1,tickMarkDensity:2.5},Zs={rightOffset:0,barSpacing:6,minBarSpacing:.5,maxBarSpacing:0,fixLeftEdge:!1,fixRightEdge:!1,lockVisibleTimeRangeOnResize:!1,rightBarStaysOnScroll:!1,borderVisible:!0,borderColor:\"#2B2B43\",visible:!0,timeVisible:!1,secondsVisible:!0,shiftVisibleRangeOnNewBar:!0,allowShiftVisibleRangeOnWhitespaceReplacement:!1,ticksVisible:!1,uniformDistribution:!1,minimumHeight:0,allowBoldLabels:!0,ignoreWhitespaceIndices:!1,enableConflation:!1,conflationThresholdFactor:1,precomputeConflationOnInit:!1,precomputeConflationPriority:\"background\"};function Xs(){return{addDefaultPane:!0,hoveredSeriesOnTop:!0,width:0,height:0,autoSize:!1,layout:Ks,crosshair:qs,grid:Ys,overlayPriceScales:{...Gs},leftPriceScale:{...Gs,visible:!1},rightPriceScale:{...Gs,visible:!0},defaultVisiblePriceScaleId:\"right\",timeScale:Zs,localization:{locale:dn?navigator.language:\"\",dateFormat:\"dd MMM 'yy\"},handleScroll:{mouseWheel:!0,pressedMouseMove:!0,horzTouchDrag:!0,vertTouchDrag:!0},handleScale:{axisPressedMouseMove:{time:!0,price:!0},axisDoubleClickReset:{time:!0,price:!0},mouseWheel:!0,pinch:!0},kineticScroll:{mouse:!1,touch:!0},trackingMode:{exitMode:1}}}class Js{constructor(t,i,n){this.hv=t,this.Ug=i,this.$g=n??0}applyOptions(t){this.hv.Qt().Dd(this.Ug,t,this.$g)}options(){return this.Ki().N()}width(){return Z(this.Ug)?this.hv.DM(this.Ug):0}setVisibleRange(t){this.setAutoScale(!1),this.Ki().Go(new mt(t.from,t.to))}getVisibleRange(){let t,i,n=this.Ki().ar();if(null===n)return null;if(this.Ki().ho()){const s=this.Ki().S_(),e=Yi(s);n=vi(n,this.Ki().lo()),t=Number((Math.round(n.Je()/s)*s).toFixed(e)),i=Number((Math.round(n.Qe()/s)*s).toFixed(e))}else t=n.Je(),i=n.Qe();return{from:t,to:i}}setAutoScale(t){this.applyOptions({autoScale:t})}Ki(){return u(this.hv.Qt().Id(this.Ug,this.$g)).Ft}}class Qs{constructor(t,i,n,s){this.hv=t,this.yt=n,this.jg=i,this.qg=s}getHeight(){return this.yt.$t()}setHeight(t){const i=this.hv.Qt(),n=i._f(this.yt);i.Ld(n,t)}getStretchFactor(){return this.yt.F_()}setStretchFactor(t){this.yt.W_(t),this.hv.Qt().ka()}paneIndex(){return this.hv.Qt()._f(this.yt)}moveTo(t){const i=this.paneIndex();i!==t&&(o(t>=0&&t<this.hv.lv().length,\"Invalid pane index\"),this.hv.Qt().Od(i,t))}getSeries(){return this.yt.Y_().map((t=>this.jg(t)))??[]}getHTMLElement(){const t=this.hv.lv();return t&&0!==t.length&&t[this.paneIndex()]?t[this.paneIndex()].fv():null}attachPrimitive(t){this.yt.ol(t),t.attached&&t.attached({chart:this.qg,requestUpdate:()=>this.yt.Qt().ka()})}detachPrimitive(t){this.yt._l(t)}priceScale(t){if(null===this.yt.O_(t))throw new Error(`Cannot find price scale with id: ${t}`);return new Js(this.hv,t,this.paneIndex())}setPreserveEmptyPane(t){this.yt.j_(t)}preserveEmptyPane(){return this.yt.q_()}addCustomSeries(t,i={},n=0){return this.qg.addCustomSeries(t,i,n)}addSeries(t,i={}){return this.qg.addSeries(t,i,this.paneIndex())}}const te={color:\"#FF0000\",price:0,lineStyle:2,lineWidth:1,lineVisible:!0,axisLabelVisible:!0,title:\"\",axisLabelColor:\"\",axisLabelTextColor:\"\"};class ie{constructor(t){this._r=t}applyOptions(t){this._r.vr(t)}options(){return this._r.N()}Yg(){return this._r}}class ne{constructor(t,i,n,s,e,r){this.Kg=new d,this.ae=t,this.Gg=i,this.Zg=n,this.Pu=e,this.qg=s,this.Xg=r}m(){this.Kg.m()}priceFormatter(){return this.ae.sl()}priceToCoordinate(t){const i=this.ae.Lt();return null===i?null:this.ae.Ft().Nt(t,i.Wt)}coordinateToPrice(t){const i=this.ae.Lt();return null===i?null:this.ae.Ft().Tn(t,i.Wt)}barsInLogicalRange(t){if(null===t)return null;const i=new Oi(new Ai(t.from,t.to)).Uu(),n=this.ae.Un();if(n.Zi())return null;const s=n.Hn(i.Na(),1),e=n.Hn(i.bi(),-1),r=u(n.Rh()),h=u(n.Qn());if(null!==s&&null!==e&&s.$n>e.$n)return{barsBefore:t.from-r,barsAfter:h-t.to};const a={barsBefore:null===s||s.$n===r?t.from-r:s.$n-r,barsAfter:null===e||e.$n===h?h-t.to:h-e.$n};return null!==s&&null!==e&&(a.from=s.Qr,a.to=e.Qr),a}setData(t){this.Pu,this.ae.bh(),this.Gg.Jg(this.ae,t),this.Qg(\"full\")}update(t,i=!1){this.ae.bh(),this.Gg.tb(this.ae,t,i),this.Qg(\"update\")}pop(t=1){const i=this.Gg.ib(this.ae,t);0!==i.length&&this.Qg(\"update\");const n=$s(this.seriesType());return i.map((t=>n(t)))}dataByIndex(t,i){const n=this.ae.Un().Hn(t,i);if(null===n)return null;return $s(this.seriesType())(n)}data(){const t=$s(this.seriesType());return this.ae.Un().Bh().map((i=>t(i)))}subscribeDataChanged(t){this.Kg.i(t)}unsubscribeDataChanged(t){this.Kg._(t)}applyOptions(t){this.ae.vr(t)}options(){return M(this.ae.N())}priceScale(){return this.Zg.priceScale(this.ae.Ft().pl(),this.getPane().paneIndex())}createPriceLine(t){const i=f(M(te),t),n=this.ae.Ea(i);return new ie(n)}removePriceLine(t){this.ae.Aa(t.Yg())}priceLines(){return this.ae.La().map((t=>new ie(t)))}seriesType(){return this.ae.bh()}lastValueData(t){const i=this.ae.Ae(t);return i.Le?{noData:!0}:{noData:!1,price:i.Mt,color:i.R}}attachPrimitive(t){this.ae.ol(t),t.attached&&t.attached({chart:this.qg,series:this,requestUpdate:()=>this.ae.Qt().ka(),horzScaleBehavior:this.Pu})}detachPrimitive(t){this.ae._l(t),t.detached&&t.detached(),this.ae.Qt().ka()}getPane(){const t=this.ae,i=u(this.ae.Qt().Ks(t));return this.Xg(i)}moveToPane(t){this.ae.Qt().rf(this.ae,t)}seriesOrder(){const t=this.ae.Qt().Ks(this.ae);return null===t?-1:t.Y_().indexOf(this.ae)}setSeriesOrder(t){const i=this.ae.Qt().Ks(this.ae);null!==i&&i.vu(this.ae,t)}Qg(t){this.Kg.v()&&this.Kg.p(t)}}class se{constructor(t,i,n){this.nb=new d,this.Qu=new d,this.Nw=new d,this.sn=t,this.ia=t.Et(),this.vM=i,this.ia.Zc().i(this.sb.bind(this)),this.ia.Xc().i(this.eb.bind(this)),this.vM.qw().i(this.rb.bind(this)),this.Pu=n}m(){this.ia.Zc().u(this),this.ia.Xc().u(this),this.vM.qw().u(this),this.nb.m(),this.Qu.m(),this.Nw.m()}scrollPosition(){return this.ia.Oc()}scrollToPosition(t,i){i?this.ia.Yc(t,1e3):this.sn.gs(t)}scrollToRealTime(){this.ia.qc()}getVisibleRange(){const t=this.ia.xc();return null===t?null:{from:t.from.originalTime,to:t.to.originalTime}}setVisibleRange(t){const i={from:this.Pu.convertHorzItemToInternal(t.from),to:this.Pu.convertHorzItemToInternal(t.to)},n=this.ia.kc(i);this.sn.sf(n)}getVisibleLogicalRange(){const t=this.ia.Sc();return null===t?null:{from:t.Na(),to:t.bi()}}setVisibleLogicalRange(t){o(t.from<=t.to,\"The from index cannot be after the to index.\"),this.sn.sf(t)}resetTimeScale(){this.sn.ws()}fitContent(){this.sn.td()}logicalToCoordinate(t){const i=this.sn.Et();return i.Zi()?null:i.jt(t)}coordinateToLogical(t){return this.ia.Zi()?null:this.ia.Vc(t)}timeToIndex(t,i){const n=this.Pu.convertHorzItemToInternal(t);return this.ia.Mc(n,i)}timeToCoordinate(t){const i=this.timeToIndex(t,!1);return null===i?null:this.ia.jt(i)}coordinateToTime(t){const i=this.sn.Et(),n=i.Vc(t),s=i.en(n);return null===s?null:s.originalTime}width(){return this.vM.pv().width}height(){return this.vM.pv().height}subscribeVisibleTimeRangeChange(t){this.nb.i(t)}unsubscribeVisibleTimeRangeChange(t){this.nb._(t)}subscribeVisibleLogicalRangeChange(t){this.Qu.i(t)}unsubscribeVisibleLogicalRangeChange(t){this.Qu._(t)}subscribeSizeChange(t){this.Nw.i(t)}unsubscribeSizeChange(t){this.Nw._(t)}applyOptions(t){this.ia.vr(t)}options(){return{...M(this.ia.N()),barSpacing:this.ia.ml()}}sb(){this.nb.v()&&this.nb.p(this.getVisibleRange())}eb(){this.Qu.v()&&this.Qu.p(this.getVisibleLogicalRange())}rb(t){this.Nw.p(t.width,t.height)}}function ee(t){return function(t){if(w(t.handleScale)){const i=t.handleScale;t.handleScale={axisDoubleClickReset:{time:i,price:i},axisPressedMouseMove:{time:i,price:i},mouseWheel:i,pinch:i}}else if(void 0!==t.handleScale){const{axisPressedMouseMove:i,axisDoubleClickReset:n}=t.handleScale;w(i)&&(t.handleScale.axisPressedMouseMove={time:i,price:i}),w(n)&&(t.handleScale.axisDoubleClickReset={time:n,price:n})}const i=t.handleScroll;w(i)&&(t.handleScroll={horzTouchDrag:i,vertTouchDrag:i,mouseWheel:i,pressedMouseMove:i})}(t),t}class re{constructor(t,i,n){this.hb=new Map,this.ab=new Map,this.lb=new d,this.ob=new d,this._b=new d,this.dd=new WeakMap,this.ub=new fs(i);const s=void 0===n?M(Xs()):f(M(Xs()),ee(n));this.cb=i,this.hv=new Xn(t,s,i),this.hv.mw().i((t=>{this.lb.v()&&this.lb.p(this.fb(t()))}),this),this.hv.ww().i((t=>{this.ob.v()&&this.ob.p(this.fb(t()))}),this),this.hv.Bd().i((t=>{this._b.v()&&this._b.p(this.fb(t()))}),this);const e=this.hv.Qt();this.pb=new se(e,this.hv.bM(),this.cb)}remove(){this.hv.mw().u(this),this.hv.ww().u(this),this.hv.Bd().u(this),this.pb.m(),this.hv.m(),this.hb.clear(),this.ab.clear(),this.lb.m(),this.ob.m(),this._b.m(),this.ub.m()}resize(t,i,n){this.autoSizeActive()||this.hv.wM(t,i,n)}addCustomSeries(t,i={},n=0){const s=(t=>({type:\"Custom\",isBuiltIn:!1,defaultOptions:{...As,...t.defaultOptions()},mb:Ls,wb:t}))(c(t));return this.Mb(s,i,n)}addSeries(t,i={},n=0){return this.Mb(t,i,n)}removeSeries(t){const i=_(this.hb.get(t)),n=this.ub.if(i);this.hv.Qt().if(i),this.gb(n),this.hb.delete(t),this.ab.delete(i)}Jg(t,i){this.gb(this.ub.og(t,i))}tb(t,i,n){this.gb(this.ub.pg(t,i,n))}ib(t,i){const[n,s]=this.ub.wg(t,i);return 0!==n.length&&this.gb(s),n}subscribeClick(t){this.lb.i(t)}unsubscribeClick(t){this.lb._(t)}subscribeCrosshairMove(t){this._b.i(t)}unsubscribeCrosshairMove(t){this._b._(t)}subscribeDblClick(t){this.ob.i(t)}unsubscribeDblClick(t){this.ob._(t)}priceScale(t,i=0){return new Js(this.hv,t,i)}timeScale(){return this.pb}applyOptions(t){this.hv.vr(ee(t))}options(){return this.hv.N()}takeScreenshot(t=!1,i=!1){let n,s;try{i||(n=this.hv.Qt().N().crosshair.mode,this.hv.vr({crosshair:{mode:2}})),s=this.hv.TM(t)}finally{i||void 0===n||this.hv.Qt().vr({crosshair:{mode:n}})}return s}addPane(t=!1){const i=this.hv.Qt().uf();return i.j_(t),this.bb(i)}removePane(t){this.hv.Qt().Ad(t)}swapPanes(t,i){this.hv.Qt().zd(t,i)}autoSizeActive(){return this.hv.CM()}chartElement(){return this.hv.Mv()}panes(){return this.hv.Qt().Gn().map((t=>this.bb(t)))}paneSize(t=0){const i=this.hv.AM(t);return{height:i.height,width:i.width}}setCrosshairPosition(t,i,n){const s=this.hb.get(n);if(void 0===s)return;const e=this.hv.Qt().Ks(s);null!==e&&this.hv.Qt().Gd(t,i,e)}clearCrosshairPosition(){this.hv.Qt().Zd(!0)}horzBehaviour(){return this.cb}Mb(t,i={},n=0){o(void 0!==t.mb),function(t){if(void 0===t||\"custom\"===t.type)return;const i=t;void 0!==i.minMove&&void 0===i.precision&&(i.precision=Yi(i.minMove))}(i.priceFormat),\"Candlestick\"===t.type&&function(t){void 0!==t.borderColor&&(t.borderUpColor=t.borderColor,t.borderDownColor=t.borderColor),void 0!==t.wickColor&&(t.wickUpColor=t.wickColor,t.wickDownColor=t.wickColor)}(i);const s=f(M(e),M(t.defaultOptions),i),r=t.mb,h=new Jt(this.hv.Qt(),t.type,s,r,t.wb);this.hv.Qt().Qd(h,n);const a=new ne(h,this,this,this,this.cb,(t=>this.bb(t)));return this.hb.set(a,h),this.ab.set(h,a),a}gb(t){const i=this.hv.Qt();for(const i of t.Y_.keys())i.Ia();i.Xd(t.Et.Dc,t.Et.Sg,t.Et.xg),t.Y_.forEach(((t,i)=>i.ht(t.ue,t.bg))),i.Et().dc(),i.Lc()}Sb(t){return _(this.ab.get(t))}xb(t){return void 0!==t&&this.ab.has(t)?this.Sb(t):void 0}fb(t){const i=new Map;t.QM.forEach(((t,n)=>{const s=n.bh(),e=$s(s)(t);if(\"Custom\"!==s)o(ts(e));else{const t=n.cl();o(!t||!1===t(e))}i.set(this.Sb(n),e)}));const n=this.xb(t.jM),s=void 0===t.YM?void 0:{type:t.YM.ds,sourceKind:t.YM.KM,objectKind:t.YM.GM,series:this.xb(t.YM.Y_),objectId:t.YM.ZM,paneIndex:t.YM.XM};return{time:t.Qr,logical:t.$n,point:t.JM,paneIndex:t.XM,hoveredInfo:s,hoveredSeries:n,hoveredObjectId:t.qM,seriesData:i,sourceEvent:t.tg}}bb(t){let i=this.dd.get(t);return i||(i=new Qs(this.hv,(t=>this.Sb(t)),t,this),this.dd.set(t,i)),i}}function he(t){if(m(t)){const i=document.getElementById(t);return o(null!==i,`Cannot find element in DOM with id=${t}`),i}return t}function ae(t,i,n){const s=he(t),e=new re(s,i,n);return i.setOptions(e.options()),e}function le(t,i){return ae(t,new cn,cn.Tf(i))}function oe(){return cn}function _e(t,i,n,s){return Math.hypot(n-t,s-i)}function ue(t,i,n,s,e,r,h,a=0){if(0===i.length||s.from>=i.length||s.to<=0)return;const{context:l,horizontalPixelRatio:o,verticalPixelRatio:_}=t,u=i[s.from];let c=r(t,u),d=u;if(s.to-s.from<2){const i=e/2;l.beginPath();const n={_t:u._t-i,ut:u.ut},s={_t:u._t+i,ut:u.ut};l.moveTo(n._t*o,n.ut*_),l.lineTo(s._t*o,s.ut*_),h(t,c,n,s)}else{const e=a>0;let f=0;const p=(i,n)=>{if(h(t,c,d,n),l.beginPath(),c=i,d=n,e){const t=f%a;l.lineDashOffset=t,f=t}};let v=d;l.beginPath(),l.moveTo(u._t*o,u.ut*_);for(let h=s.from+1;h<s.to;++h){v=i[h];const s=v._t*o,a=v.ut*_,u=r(t,v);switch(n){case 0:if(l.lineTo(s,a),e){const t=i[h-1],n=t._t*o,e=t.ut*_;f+=_e(n,e,s,a)}break;case 1:{const t=i[h-1],n=t.ut*_;l.lineTo(s,n),e&&(f+=Math.abs(v._t-t._t)*o),u!==c&&(p(u,v),l.lineTo(s,n)),l.lineTo(s,a),e&&(f+=Math.abs(v.ut-t.ut)*_);break}case 2:{const[t,n]=pe(i,h-1,h),r=t._t*o,u=t.ut*_,c=n._t*o,d=n.ut*_;if(l.bezierCurveTo(r,u,c,d,s,a),e){const t=i[h-1],n=t._t*o,e=t.ut*_,l=_e(n,e,s,a),p=_e(n,e,r,u)+_e(r,u,c,d)+_e(c,d,s,a);f+=(l+p)/2}break}}1!==n&&u!==c&&(p(u,v),l.moveTo(s,a))}(d!==v||d===v&&1===n)&&h(t,c,d,v),e&&(l.lineDashOffset=0)}}const ce=6;function de(t,i){return{_t:t._t-i._t,ut:t.ut-i.ut}}function fe(t,i){return{_t:t._t/i,ut:t.ut/i}}function pe(t,i,n){const s=Math.max(0,i-1),e=Math.min(t.length-1,n+1);var r,h;return[(r=t[i],h=fe(de(t[n],t[s]),ce),{_t:r._t+h._t,ut:r.ut+h.ut}),de(t[n],fe(de(t[e],t[i]),ce))]}function ve(t,i){const n=t.context;n.strokeStyle=i,n.stroke()}class me extends R{constructor(){super(...arguments),this.rt=null}ht(t){this.rt=t}et(t){if(null===this.rt)return;const{ot:i,lt:n,Cb:s,yb:e,ct:r,Gt:h,Pb:l}=this.rt;if(null===n)return;const o=t.context;o.lineCap=\"butt\",o.lineWidth=r*t.verticalPixelRatio;const _=a(o,h);o.lineJoin=\"round\";const u=this.kb.bind(this),c=function(t){return t.reduce(((t,i)=>t+i),0)}(_);void 0!==e&&ue(t,i,e,n,s,u,ve,c),l&&function(t,i,n,s,e){if(s.to-s.from<=0)return;const{horizontalPixelRatio:r,verticalPixelRatio:h,context:a}=t;let l=null;const o=Math.max(1,Math.floor(r))%2/2,_=n*h+o;for(let n=s.to-1;n>=s.from;--n){const s=i[n];if(s){const i=e(t,s);i!==l&&(null!==l&&a.fill(),a.beginPath(),a.fillStyle=i,l=i);const n=Math.round(s._t*r)+o,u=s.ut*h;a.moveTo(n,u),a.arc(n,u,_,0,2*Math.PI)}}a.fill()}(t,i,l,n,u)}}class we extends me{kb(t,i){return i.vt}}function Me(t,i,n,s,e){const r=1-e;return r*r*r*t+3*r*r*e*i+3*r*e*e*n+e*e*e*s}function ge(t,i,n,s,e){if(2===n){const[n,r]=pe(s,e-1,e);return[Math.min(t._t,i._t,n._t,r._t),Math.max(t._t,i._t,n._t,r._t)]}return[Math.min(t._t,i._t),Math.max(t._t,i._t)]}function be(t,i,n,s,e,r,h,a){switch(e){case 1:{const e=Ss(t,i,n._t,n.ut,s._t,n.ut),r=Ss(t,i,s._t,n.ut,s._t,s.ut),h=Math.min(e,r);return h<=a?h:null}case 2:{const[e,l]=pe(r,h-1,h),o=function(t,i,n){let s=Number.POSITIVE_INFINITY,e=n[0];for(let r=1;r<=12;r++){const h=r/12,a={_t:Me(n[0]._t,n[1]._t,n[2]._t,n[3]._t,h),ut:Me(n[0].ut,n[1].ut,n[2].ut,n[3].ut,h)};s=Math.min(s,Ss(t,i,e._t,e.ut,a._t,a.ut)),e=a}return s}(t,i,[n,e,l,s]);return o<=a?o:null}default:{const e=Ss(t,i,n._t,n.ut,s._t,s.ut);return e<=a?e:null}}}class Se extends Ds{constructor(t,i){super(t,i,!0)}Og(t,i,n){i.Ic(this.kg,b(this.Tg)),t.Jo(this.kg,n,b(this.Tg))}Tb(t,i){return{wt:t,Mt:i,_t:NaN,ut:NaN}}Lg(){const t=this.ae.Sa();this.kg=this.ae.Ua().Bh().map((i=>{let n;if((i.Gr??1)>1){const t=i.Wt[1],s=i.Wt[2],e=i.Wt[3];n=Math.abs(t-e)>Math.abs(s-e)?t:s}else n=i.Wt[3];return this.Rb(i.$n,n,t)}))}}class xe extends Se{Bg(t,i){const n=this.ae.N();return function(t,i,n,s,e,r,h,a=0,l=0){if(null===i||i.from>=i.to||0===t.length)return null;const o=Math.max(r/2,h??0)+l;let _=Number.POSITIVE_INFINITY;if(void 0!==h){const e=h+l,r=ws(t,n-e,i.from,i.to),a=Ms(t,n+e,r,i.to);for(let i=r;i<a;i++){const e=t[i];if(!bs(n,e._t,e._t,h+l))continue;const r=Math.hypot(n-e._t,s-e.ut);r<=h+l&&(_=Math.min(_,r))}}if(i.to-i.from<2){const e=t[i.from],r=Math.max(a/2,o),h=Ss(n,s,e._t-r,e.ut,e._t+r,e.ut);return h<=o&&(_=Math.min(_,h)),Number.isFinite(_)?gs(_,2,\"series-point\"):null}let u=Number.POSITIVE_INFINITY;const c=ws(t,n-o,i.from,i.to),d=Ms(t,n+o,c,i.to),f=Math.max(i.from+1,c),p=Math.min(i.to,d+1);for(let i=f;i<p;i++){const r=t[i-1],h=t[i],[a,l]=ge(r,h,e,t,i);if(!bs(n,a,l,o))continue;const _=be(n,s,r,h,e,t,i,o);null!==_&&(u=Math.min(u,_))}return Number.isFinite(_)?gs(_,2,\"series-point\"):Number.isFinite(u)?gs(u,1,\"series-line\"):null}(this.kg,this.Tg,t,i,n.lineType,n.lineVisible?n.lineWidth:1,n.pointMarkersVisible?n.pointMarkersRadius||n.lineWidth/2+2:void 0,this.le.Et().ml(),n.hitTestTolerance)}}class Ce extends xe{constructor(){super(...arguments),this.Vg=new we}Rb(t,i,n){return{...this.Tb(t,i),...n.Sh(t)}}Ng(){const t=this.ae.N(),i={ot:this.kg,Gt:t.lineStyle,yb:t.lineVisible?t.lineType:void 0,ct:t.lineWidth,Pb:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0,lt:this.Tg,Cb:this.le.Et().ml()};this.Vg.ht(i)}}const ye={type:\"Line\",isBuiltIn:!0,defaultOptions:{color:\"#2196f3\",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:\"\",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:\"\",lastPriceAnimation:0,pointMarkersVisible:!1},mb:(t,i)=>new Ce(t,i)};function Pe(t,i){return t.weight>i.weight?t:i}class ke{constructor(){this.Db=new d,this.Ib=function(t){let i=!1;return function(...n){i||(i=!0,queueMicrotask((()=>{t(...n),i=!1})))}}((()=>this.Db.p(this.Vb))),this.Vb=0}Bb(){return this.Db}m(){this.Db.m()}options(){return this.yn}setOptions(t){this.yn=t}preprocessData(t){}updateFormatter(t){this.yn&&(this.yn.localization=t)}createConverterToInternalObj(t){return this.Ib(),t=>(t>this.Vb&&(this.Vb=t),t)}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return this.Eb(t)}formatTickmark(t){return this.Eb(t.time)}maxTickMarkWeight(t){return t.reduce(Pe,t[0]).weight}fillWeightsForPoints(t,i){for(let s=i;s<t.length;++s)t[s].timeWeight=(n=t[s].time)%120==0?10:n%60==0?9:n%36==0?8:n%12==0?7:n%6==0?6:n%3==0?5:n%1==0?4:0;var n;this.Vb=t[t.length-1].time,this.Ib()}Eb(t){if(this.yn.localization?.timeFormatter)return this.yn.localization.timeFormatter(t);if(t<12)return`${t}M`;const i=Math.floor(t/12),n=t%12;return 0===n?`${i}Y`:`${i}Y${n}M`}}const Te={yieldCurve:{baseResolution:1,minimumTimeRange:120,startTimeRange:0},timeScale:{ignoreWhitespaceIndices:!0},leftPriceScale:{visible:!0},rightPriceScale:{visible:!1},localization:{priceFormatter:t=>t.toFixed(3)+\"%\"}},Re={lastValueVisible:!1,priceLineVisible:!1};class De extends re{constructor(t,i){const n=f(Te,i||{}),s=new ke;super(t,s,n),s.setOptions(this.options()),this._initWhitespaceSeries()}addSeries(t,i={},n=0){if(t.isBuiltIn&&!1===[\"Area\",\"Line\"].includes(t.type))throw new Error(\"Yield curve only support Area and Line series\");const s={...Re,...i};return super.addSeries(t,s,n)}_initWhitespaceSeries(){const t=this.horzBehaviour(),i=this.addSeries(ye);let n;function s(s){const e=function(t,i){return{me:Math.max(0,t.startTimeRange),we:Math.max(0,t.minimumTimeRange,i||0),Ab:Math.max(1,t.baseResolution)}}(t.options().yieldCurve,s),r=(({me:t,we:i,Ab:n})=>`${t}~${i}~${n}`)(e);r!==n&&(n=r,i.setData(function({me:t,we:i,Ab:n}){return Array.from({length:Math.floor((i-t)/n)+1},((i,s)=>({time:t+s*n})))}(e)))}s(0),t.Bb().i(s)}}function Ie(t,i){const n=he(t);return new De(n,i)}function Ve(t,i){return t.weight>i.weight?t:i}class Be{options(){return this.yn}setOptions(t){this.yn=t}preprocessData(t){}updateFormatter(t){this.yn&&(this.yn.localization=t)}createConverterToInternalObj(t){return t=>t}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return t.toFixed(this.Ds())}formatTickmark(t,i){return t.time.toFixed(this.Ds())}maxTickMarkWeight(t){return t.reduce(Ve,t[0]).weight}fillWeightsForPoints(t,i){for(let s=i;s<t.length;++s)t[s].timeWeight=(n=t[s].time)===100*Math.ceil(n/100)?8:n===50*Math.ceil(n/50)?7:n===25*Math.ceil(n/25)?6:n===10*Math.ceil(n/10)?5:n===5*Math.ceil(n/5)?4:n===Math.ceil(n)?3:2*n===Math.ceil(2*n)?1:0;var n}Ds(){return this.yn.localization.precision}}function Ee(t,i){return ae(t,new Be,i)}function Ae(t,i,n,s,e){const{context:r,horizontalPixelRatio:h,verticalPixelRatio:a}=i;r.lineTo(e._t*h,t*a),r.lineTo(s._t*h,t*a),r.closePath(),r.fillStyle=n,r.fill()}class Le extends R{constructor(){super(...arguments),this.rt=null}ht(t){this.rt=t}et(t){if(null===this.rt)return;const{ot:i,lt:n,Cb:s,ct:e,Gt:r,yb:h}=this.rt,l=this.rt.Lb??(this.rt.zb?0:t.mediaSize.height);if(null===n)return;const o=t.context;o.lineCap=\"butt\",o.lineJoin=\"round\",o.lineWidth=e,a(o,r),o.lineWidth=1,ue(t,i,h,n,s,this.Ob.bind(this),Ae.bind(null,l))}}class ze{Nb(t,i){const n=this.Fb,{Wb:s,Hb:e,Ub:r,$b:h,Lb:a,jb:l,qb:o}=i;if(void 0===this.Yb||void 0===n||n.Wb!==s||n.Hb!==e||n.Ub!==r||n.$b!==h||n.Lb!==a||n.jb!==l||n.qb!==o){const{verticalPixelRatio:n}=t,_=a||l>0?n:1,u=l*_,c=o===t.bitmapSize.height?o:o*_,d=(a??0)*_,f=t.context.createLinearGradient(0,u,0,c);if(f.addColorStop(0,s),null!=a){const t=ni((d-u)/(c-u),0,1);f.addColorStop(t,e),f.addColorStop(t,r)}f.addColorStop(1,h),this.Yb=f,this.Fb=i}return this.Yb}}class Oe extends Le{constructor(){super(...arguments),this.Kb=new ze}Ob(t,i){const n=this.rt;return this.Kb.Nb(t,{Wb:i.dh,Hb:i.fh,Ub:i.ph,$b:i.mh,Lb:n.Lb,jb:n.jb??0,qb:n.qb??t.bitmapSize.height})}}class Ne extends me{constructor(){super(...arguments),this.Gb=new ze}kb(t,i){const n=this.rt;return this.Gb.Nb(t,{Wb:i._h,Hb:i._h,Ub:i.uh,$b:i.uh,Lb:n.Lb,jb:n.jb??0,qb:n.qb??t.bitmapSize.height})}}class Fe{constructor(t,i,n,s){this.Zb=t,this.Xb=i,this.Jb=n,this.Qb=s}st(t,i,n){this.Zb.st(t,i,n),!this.Jb()||i&&this.Qb()||this.Xb.st(t,i,n)}}class We{constructor(t,i){this.Xb=t,this.tS=i}Tt(){return this.tS()?this.Xb:null}}class He extends xe{constructor(t,i){super(t,i),this.iS=new Oe,this.nS=new Ne,this.sS=new We(this.nS,(()=>this.Jb())),this.eS=[this],this.rS=[this.sS],this.hS={Za:this.eS,qa:this.rS},this.Vg=new Fe(this.iS,this.nS,(()=>this.Jb()),(()=>this.le.N().hoveredSeriesOnTop))}Ga(){return this.hS}Rb(t,i,n){return{...this.Tb(t,i),...n.Sh(t)}}Ng(){const t=this.ae.Lt();if(null===t)return;const i=this.ae.N(),n=this.ae.Ft().Nt(i.baseValue.price,t.Wt),s=this.le.Et().ml();if(null===this.Tg||0===this.kg.length)return;let e,r;if(i.relativeGradient){e=this.kg[this.Tg.from].ut,r=this.kg[this.Tg.from].ut;for(let t=this.Tg.from;t<this.Tg.to;t++){const i=this.kg[t];i.ut<e&&(e=i.ut),i.ut>r&&(r=i.ut)}}this.iS.ht({ot:this.kg,ct:i.lineWidth,Gt:i.lineStyle,yb:i.lineType,Lb:n,jb:e,qb:r,zb:!1,lt:this.Tg,Cb:s}),this.nS.ht({ot:this.kg,ct:i.lineWidth,Gt:i.lineStyle,yb:i.lineVisible?i.lineType:void 0,Pb:i.pointMarkersVisible?i.pointMarkersRadius||i.lineWidth/2+2:void 0,Lb:n,jb:e,qb:r,lt:this.Tg,Cb:s})}Jb(){return this.ae.It()&&null!==this.Tg&&this.aS()}aS(){const t=this.ae.N();return t.lineVisible||t.pointMarkersVisible}}const Ue={type:\"Baseline\",isBuiltIn:!0,defaultOptions:{baseValue:{type:\"price\",price:0},relativeGradient:!1,topFillColor1:\"rgba(38, 166, 154, 0.28)\",topFillColor2:\"rgba(38, 166, 154, 0.05)\",topLineColor:\"rgba(38, 166, 154, 1)\",bottomFillColor1:\"rgba(239, 83, 80, 0.05)\",bottomFillColor2:\"rgba(239, 83, 80, 0.28)\",bottomLineColor:\"rgba(239, 83, 80, 1)\",lineWidth:3,lineStyle:0,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:\"\",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:\"\",lastPriceAnimation:0,pointMarkersVisible:!1},mb:(t,i)=>new He(t,i)};class $e extends Le{constructor(){super(...arguments),this.Kb=new ze}Ob(t,i){return this.Kb.Nb(t,{Wb:i.ah,Hb:\"\",Ub:\"\",$b:i.oh,jb:this.rt?.jb??0,qb:t.bitmapSize.height})}}class je extends xe{constructor(t,i){super(t,i),this.lS=new $e,this.Xb=new we,this.sS=new We(this.Xb,(()=>this.Jb())),this.eS=[this],this.rS=[this.sS],this.hS={Za:this.eS,qa:this.rS},this.Vg=new Fe(this.lS,this.Xb,(()=>this.Jb()),(()=>this.le.N().hoveredSeriesOnTop))}Ga(){return this.hS}Rb(t,i,n){return{...this.Tb(t,i),...n.Sh(t)}}Ng(){const t=this.ae.N();if(null===this.Tg||0===this.kg.length)return;let i;if(t.relativeGradient){i=this.kg[this.Tg.from].ut;for(let t=this.Tg.from;t<this.Tg.to;t++){const n=this.kg[t];n.ut<i&&(i=n.ut)}}this.lS.ht({yb:t.lineType,ot:this.kg,Gt:t.lineStyle,ct:t.lineWidth,Lb:null,jb:i,zb:t.invertFilledArea,lt:this.Tg,Cb:this.le.Et().ml()}),this.Xb.ht({yb:t.lineVisible?t.lineType:void 0,ot:this.kg,Gt:t.lineStyle,ct:t.lineWidth,lt:this.Tg,Cb:this.le.Et().ml(),Pb:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0})}Jb(){return this.ae.It()&&null!==this.Tg&&this.aS()}aS(){const t=this.ae.N();return t.lineVisible||t.pointMarkersVisible}}const qe={type:\"Area\",isBuiltIn:!0,defaultOptions:{topColor:\"rgba( 46, 220, 135, 0.4)\",bottomColor:\"rgba( 40, 221, 100, 0)\",invertFilledArea:!1,relativeGradient:!1,lineColor:\"#33D778\",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:\"\",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:\"\",lastPriceAnimation:0,pointMarkersVisible:!1},mb:(t,i)=>new je(t,i)};class Ye extends R{constructor(){super(...arguments),this.qt=null,this.oS=0,this._S=0}ht(t){this.qt=t}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:n}){if(null===this.qt||0===this.qt.Un.length||null===this.qt.lt)return;if(this.oS=this.uS(i),this.oS>=2){Math.max(1,Math.floor(i))%2!=this.oS%2&&this.oS--}this._S=this.qt.cS?Math.min(this.oS,Math.floor(i)):this.oS;let s=null;const e=this._S<=this.oS&&this.qt.ml>=Math.floor(1.5*i);for(let r=this.qt.lt.from;r<this.qt.lt.to;++r){const h=this.qt.Un[r];s!==h.sh&&(t.fillStyle=h.sh,s=h.sh);const a=Math.floor(.5*this._S),l=Math.round(h._t*i),o=l-a,_=this._S,u=o+_-1,c=Math.min(h.n_,h.s_),d=Math.max(h.n_,h.s_),f=Math.round(c*n)-a,p=Math.round(d*n)+a,v=Math.max(p-f,this._S);t.fillRect(o,f,_,v);const m=Math.ceil(1.5*this.oS);if(e){if(this.qt.dS){const i=l-m;let s=Math.max(f,Math.round(h.i_*n)-a),e=s+_-1;e>f+v-1&&(e=f+v-1,s=e-_+1),t.fillRect(i,s,o-i,e-s+1)}const i=l+m;let s=Math.max(f,Math.round(h.e_*n)-a),e=s+_-1;e>f+v-1&&(e=f+v-1,s=e-_+1),t.fillRect(u+1,s,i-u,e-s+1)}}}uS(t){const i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(u(this.qt).ml,t)))}}class Ke extends Ds{constructor(t,i){super(t,i,!1)}Bg(t,i){return Ps(this.kg,this.Tg,t,i,this.le.Et().ml(),this.ae.N().hitTestTolerance,((t,i)=>{i[0]=t.n_,i[1]=t.s_}))}Og(t,i,n){i.Ic(this.kg,b(this.Tg)),t.t_(this.kg,n,b(this.Tg))}fS(t,i,n){return{wt:t,jr:i.Wt[0],qr:i.Wt[1],Yr:i.Wt[2],Kr:i.Wt[3],_t:NaN,i_:NaN,n_:NaN,s_:NaN,e_:NaN}}Lg(){const t=this.ae.Sa();this.kg=this.ae.Ua().Bh().map((i=>this.Rb(i.$n,i,t)))}}class Ge extends Ke{constructor(){super(...arguments),this.Vg=new Ye}Rb(t,i,n){return{...this.fS(t,i,n),...n.Sh(t)}}Ng(){const t=this.ae.N();this.Vg.ht({Un:this.kg,ml:this.le.Et().ml(),dS:t.openVisible,cS:t.thinBars,lt:this.Tg})}}const Ze={type:\"Bar\",isBuiltIn:!0,defaultOptions:{upColor:\"#26a69a\",downColor:\"#ef5350\",openVisible:!0,thinBars:!0},mb:(t,i)=>new Ge(t,i)};class Xe extends R{constructor(){super(...arguments),this.qt=null,this.oS=0}ht(t){this.qt=t}et(t){if(null===this.qt||0===this.qt.Un.length||null===this.qt.lt)return;const{horizontalPixelRatio:i}=t;if(this.oS=function(t,i){if(t>=2.5&&t<=4)return Math.floor(3*i);const n=1-.2*Math.atan(Math.max(4,t)-4)/(.5*Math.PI),s=Math.floor(t*n*i),e=Math.floor(t*i),r=Math.min(s,e);return Math.max(Math.floor(i),r)}(this.qt.ml,i),this.oS>=2){Math.floor(i)%2!=this.oS%2&&this.oS--}const n=this.qt.Un;this.qt.pS&&this.vS(t,n,this.qt.lt),this.qt.gi&&this.Vm(t,n,this.qt.lt);const s=this.mS(i);(!this.qt.gi||this.oS>2*s)&&this.wS(t,n,this.qt.lt)}vS(t,i,n){if(null===this.qt)return;const{context:s,horizontalPixelRatio:e,verticalPixelRatio:r}=t;let h=\"\",a=Math.min(Math.floor(e),Math.floor(this.qt.ml*e));a=Math.max(Math.floor(e),Math.min(a,this.oS));const l=Math.floor(.5*a);let o=null;for(let t=n.from;t<n.to;t++){const n=i[t];n.rh!==h&&(s.fillStyle=n.rh,h=n.rh);const _=Math.round(Math.min(n.i_,n.e_)*r),u=Math.round(Math.max(n.i_,n.e_)*r),c=Math.round(n.n_*r),d=Math.round(n.s_*r);let f=Math.round(e*n._t)-l;const p=f+a-1;null!==o&&(f=Math.max(o+1,f),f=Math.min(f,p));const v=p-f+1;s.fillRect(f,c,v,_-c),s.fillRect(f,u+1,v,d-u),o=p}}mS(t){let i=Math.floor(1*t);this.oS<=2*i&&(i=Math.floor(.5*(this.oS-1)));const n=Math.max(Math.floor(t),i);return this.oS<=2*n?Math.max(Math.floor(t),Math.floor(1*t)):n}Vm(t,i,n){if(null===this.qt)return;const{context:s,horizontalPixelRatio:e,verticalPixelRatio:r}=t;let h=\"\";const a=this.mS(e);let l=null;for(let t=n.from;t<n.to;t++){const n=i[t];n.eh!==h&&(s.fillStyle=n.eh,h=n.eh);let o=Math.round(n._t*e)-Math.floor(.5*this.oS);const _=o+this.oS-1,u=Math.round(Math.min(n.i_,n.e_)*r),c=Math.round(Math.max(n.i_,n.e_)*r);if(null!==l&&(o=Math.max(l+1,o),o=Math.min(o,_)),this.qt.ml*e>2*a)L(s,o,u,_-o+1,c-u+1,a);else{const t=_-o+1;s.fillRect(o,u,t,c-u+1)}l=_}}wS(t,i,n){if(null===this.qt)return;const{context:s,horizontalPixelRatio:e,verticalPixelRatio:r}=t;let h=\"\";const a=this.mS(e);for(let t=n.from;t<n.to;t++){const n=i[t];let l=Math.round(Math.min(n.i_,n.e_)*r),o=Math.round(Math.max(n.i_,n.e_)*r),_=Math.round(n._t*e)-Math.floor(.5*this.oS),u=_+this.oS-1;if(n.sh!==h){const t=n.sh;s.fillStyle=t,h=t}this.qt.gi&&(_+=a,l+=a,u-=a,o-=a),l>o||s.fillRect(_,l,u-_+1,o-l+1)}}}class Je extends Ke{constructor(){super(...arguments),this.Vg=new Xe}Rb(t,i,n){return{...this.fS(t,i,n),...n.Sh(t)}}Ng(){const t=this.ae.N();this.Vg.ht({Un:this.kg,ml:this.le.Et().ml(),pS:t.wickVisible,gi:t.borderVisible,lt:this.Tg})}}const Qe={type:\"Candlestick\",isBuiltIn:!0,defaultOptions:{upColor:\"#26a69a\",downColor:\"#ef5350\",wickVisible:!0,borderVisible:!0,borderColor:\"#378658\",borderUpColor:\"#26a69a\",borderDownColor:\"#ef5350\",wickColor:\"#737375\",wickUpColor:\"#26a69a\",wickDownColor:\"#ef5350\"},mb:(t,i)=>new Je(t,i)};class tr extends R{constructor(){super(...arguments),this.qt=null,this.MS=[]}ht(t){this.qt=t,this.MS=[]}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:n}){if(null===this.qt||0===this.qt.ot.length||null===this.qt.lt)return;this.MS.length||this.gS(i);const s=Math.max(1,Math.floor(n)),e=Math.round(this.qt.bS*n)-Math.floor(s/2),r=e+s;for(let i=this.qt.lt.from;i<this.qt.lt.to;i++){const h=this.qt.ot[i],a=this.MS[i-this.qt.lt.from],l=Math.round(h.ut*n);let o,_;t.fillStyle=h.sh,l<=e?(o=l,_=r):(o=e,_=l-Math.floor(s/2)+s),t.fillRect(a.Na,o,a.bi-a.Na+1,_-o)}}gS(t){if(null===this.qt||0===this.qt.ot.length||null===this.qt.lt)return void(this.MS=[]);const i=Math.ceil(this.qt.ml*t)<=1?0:Math.max(1,Math.floor(t)),n=Math.round(this.qt.ml*t)-i;this.MS=new Array(this.qt.lt.to-this.qt.lt.from);for(let i=this.qt.lt.from;i<this.qt.lt.to;i++){const s=this.qt.ot[i],e=Math.round(s._t*t);let r,h;if(n%2){const t=(n-1)/2;r=e-t,h=e+t}else{const t=n/2;r=e-t,h=e+t-1}this.MS[i-this.qt.lt.from]={Na:r,bi:h,SS:e,ce:s._t*t,wt:s.wt}}for(let t=this.qt.lt.from+1;t<this.qt.lt.to;t++){const n=this.MS[t-this.qt.lt.from],s=this.MS[t-this.qt.lt.from-1];n.wt===s.wt+1&&(n.Na-s.bi!==i+1&&(s.SS>s.ce?s.bi=n.Na-i-1:n.Na=s.bi+i+1))}let s=Math.ceil(this.qt.ml*t);for(let t=this.qt.lt.from;t<this.qt.lt.to;t++){const i=this.MS[t-this.qt.lt.from];i.bi<i.Na&&(i.bi=i.Na);const n=i.bi-i.Na+1;s=Math.min(n,s)}if(i>0&&s<4)for(let t=this.qt.lt.from;t<this.qt.lt.to;t++){const i=this.MS[t-this.qt.lt.from];i.bi-i.Na+1>s&&(i.SS>i.ce?i.bi-=1:i.Na+=1)}}}class ir extends Se{constructor(){super(...arguments),this.Vg=new tr}Bg(t,i){const n=this.ae.Ft().Nt(this.ae.N().base,u(this.ae.Lt()).Wt);return null===n?null:Ps(this.kg,this.Tg,t,i,this.le.Et().ml(),this.ae.N().hitTestTolerance,((t,i)=>{i[0]=t.ut,i[1]=n}))}Rb(t,i,n){return{...this.Tb(t,i),...n.Sh(t)}}Ng(){const t={ot:this.kg,ml:this.le.Et().ml(),lt:this.Tg,bS:this.ae.Ft().Nt(this.ae.N().base,u(this.ae.Lt()).Wt)};this.Vg.ht(t)}}const nr={type:\"Histogram\",isBuiltIn:!0,defaultOptions:{color:\"#26a69a\",base:0},mb:(t,i)=>new ir(t,i)};class sr{constructor(t,i){this.yt=t,this.xS=i,this.CS()}detach(){this.yt.detachPrimitive(this.xS)}getPane(){return this.yt}applyOptions(t){this.xS.vr?.(t)}CS(){this.yt.attachPrimitive(this.xS)}}const er={visible:!0,horzAlign:\"center\",vertAlign:\"center\",lines:[]},rr={color:\"rgba(0, 0, 0, 0.5)\",fontSize:48,fontFamily:S,fontStyle:\"\",text:\"\"};class hr{constructor(t){this.yS=new Map,this.qt=t}draw(t){t.useMediaCoordinateSpace((t=>{if(!this.qt.visible)return;const{context:i,mediaSize:n}=t;let s=0;for(const t of this.qt.lines){if(0===t.text.length)continue;i.font=t.k;const e=this.PS(i,t.text);e>n.width?t.Uc=n.width/e:t.Uc=1,s+=t.lineHeight*t.Uc}let e=0;switch(this.qt.vertAlign){case\"top\":e=0;break;case\"center\":e=Math.max((n.height-s)/2,0);break;case\"bottom\":e=Math.max(n.height-s,0)}for(const t of this.qt.lines){i.save(),i.fillStyle=t.color;let s=0;switch(this.qt.horzAlign){case\"left\":i.textAlign=\"left\",s=t.lineHeight/2;break;case\"center\":i.textAlign=\"center\",s=n.width/2;break;case\"right\":i.textAlign=\"right\",s=n.width-1-t.lineHeight/2}i.translate(s,e),i.textBaseline=\"top\",i.font=t.k,i.scale(t.Uc,t.Uc),i.fillText(t.text,0,t.kS),i.restore(),e+=t.lineHeight*t.Uc}}))}PS(t,i){const n=this.TS(t.font);let s=n.get(i);return void 0===s&&(s=t.measureText(i).width,n.set(i,s)),s}TS(t){let i=this.yS.get(t);return void 0===i&&(i=new Map,this.yS.set(t,i)),i}}class ar{constructor(t){this.yn=or(t)}Pt(t){this.yn=or(t)}renderer(){return new hr(this.yn)}}function lr(t){return{...t,k:x(t.fontSize,t.fontFamily,t.fontStyle),lineHeight:t.lineHeight||1.2*t.fontSize,kS:0,Uc:0}}function or(t){return{...t,lines:t.lines.map(lr)}}function _r(t){return{...rr,...t}}function ur(t){return{...er,...t,lines:t.lines?.map(_r)??[]}}class cr{constructor(t){this.yn=ur(t),this.RS=[new ar(this.yn)]}updateAllViews(){this.RS.forEach((t=>t.Pt(this.yn)))}paneViews(){return this.RS}attached({requestUpdate:t}){this.DS=t}detached(){this.DS=void 0}vr(t){this.yn=ur({...this.yn,...t}),this.DS&&this.DS()}}function dr(t,i){return new sr(t,new cr(i))}const fr={alpha:1,padding:0};class pr{constructor(t){this.qt=t}draw(t){t.useMediaCoordinateSpace((t=>{const i=t.context,n=this.IS(this.qt,t.mediaSize);n&&this.qt.VS&&(i.globalAlpha=this.qt.alpha??1,i.drawImage(this.qt.VS,n._t,n.ut,n.nn,n.$t))}))}IS(t,i){const{maxHeight:n,maxWidth:s,BS:e,ES:r,padding:h}=t,a=Math.round(i.width/2),l=Math.round(i.height/2),o=h??0;let _=i.width-2*o,u=i.height-2*o;n&&(u=Math.min(u,n)),s&&(_=Math.min(_,s));const c=_/r,d=u/e,f=Math.min(c,d),p=r*f,v=e*f;return{_t:a-.5*p,ut:l-.5*v,$t:v,nn:p}}}class vr{constructor(t){this.AS=null,this.LS=0,this.zS=0,this.yn=t,this.M=mr(this.yn,this.AS,this.LS,this.zS)}OS(t){void 0!==t.NS&&(this.LS=t.NS),void 0!==t.FS&&(this.zS=t.FS),void 0!==t.WS&&(this.AS=t.WS),this.Pt()}HS(t){this.yn=t,this.Pt()}zOrder(){return\"bottom\"}Pt(){this.M=mr(this.yn,this.AS,this.LS,this.zS)}renderer(){return new pr(this.M)}}function mr(t,i,n,s){return{...t,VS:i,ES:n,BS:s}}function wr(t){return{...fr,...t}}class Mr{constructor(t,i){this.US=null,this.$S=t,this.yn=wr(i),this.RS=[new vr(this.yn)]}updateAllViews(){this.RS.forEach((t=>t.Pt()))}paneViews(){return this.RS}attached(t){const{requestUpdate:i}=t;this.jS=i,this.US=new Image,this.US.onload=()=>{const t=this.US?.naturalHeight??1,i=this.US?.naturalWidth??1;this.RS.forEach((n=>n.OS({FS:t,NS:i,WS:this.US}))),this.jS&&this.jS()},this.US.src=this.$S}detached(){this.jS=void 0,this.US=null}vr(t){this.yn=wr({...this.yn,...t}),this.qS(),this.DS&&this.DS()}DS(){this.jS&&this.jS()}qS(){this.RS.forEach((t=>t.HS(this.yn)))}}function gr(t,i,n){return new sr(t,new Mr(i,n))}class br{constructor(t,i){this.ae=t,this.Jh=i,this.CS()}detach(){this.ae.detachPrimitive(this.Jh)}getSeries(){return this.ae}applyOptions(t){this.Jh&&this.Jh.vr&&this.Jh.vr(t)}CS(){this.ae.attachPrimitive(this.Jh)}}const Sr={autoScale:!0,zOrder:\"normal\"};function xr(t,i){return ei(Math.min(Math.max(t,12),30)*i)}function Cr(t,i){const n=\"circle\"===t?.8:\"square\"===t?.7:1;return ei(Math.max(i,12)*n)}function yr(t){return function(t){const i=Math.ceil(t);return i%2!=0?i-1:i}(xr(t,1))}function Pr(t){return Math.max(xr(t,.1),3)}function kr(t,i,n){return i?t:n?Math.ceil(t/2):0}function Tr(t,i,n,s){const e=(Cr(\"arrowUp\",s)-1)/2*n.YS,r=(ei(s/2)-1)/2*n.YS;i.beginPath(),t?(i.moveTo(n._t-e,n.ut),i.lineTo(n._t,n.ut-e),i.lineTo(n._t+e,n.ut),i.lineTo(n._t+r,n.ut),i.lineTo(n._t+r,n.ut+e),i.lineTo(n._t-r,n.ut+e),i.lineTo(n._t-r,n.ut)):(i.moveTo(n._t-e,n.ut),i.lineTo(n._t,n.ut+e),i.lineTo(n._t+e,n.ut),i.lineTo(n._t+r,n.ut),i.lineTo(n._t+r,n.ut-e),i.lineTo(n._t-r,n.ut-e),i.lineTo(n._t-r,n.ut)),i.fill()}function Rr(t,i,n,s,e,r){const h=(Cr(\"arrowUp\",s)-1)/2,a=(ei(s/2)-1)/2;if(e>=i-a-2&&e<=i+a+2&&r>=(t?n:n-h)-2&&r<=(t?n+h:n)+2)return!0;return(()=>{if(e<i-h-3||e>i+h+3||r<(t?n-h-3:n)||r>(t?n:n+h+3))return!1;const s=Math.abs(e-i);return Math.abs(r-n)+3>=s/2})()}class Dr{constructor(){this.qt=null,this.$s=new rt,this.F=-1,this.W=\"\",this.hm=\"\",this.KS=\"normal\"}ht(t){this.qt=t}js(t,i,n){this.F===t&&this.W===i||(this.F=t,this.W=i,this.hm=x(t,i),this.$s.Os()),this.KS=n}Qs(t,i){if(null===this.qt||null===this.qt.lt)return null;for(let n=this.qt.lt.from;n<this.qt.lt.to;n++){const s=this.qt.ot[n];if(s&&Vr(s,t,i))return{zOrder:\"normal\",externalId:s.te??\"\",itemType:\"marker\"}}return null}draw(t){\"aboveSeries\"!==this.KS&&t.useBitmapCoordinateSpace((t=>{this.et(t)}))}drawBackground(t){\"aboveSeries\"===this.KS&&t.useBitmapCoordinateSpace((t=>{this.et(t)}))}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:n}){if(null!==this.qt&&null!==this.qt.lt){t.textBaseline=\"middle\",t.font=this.hm;for(let s=this.qt.lt.from;s<this.qt.lt.to;s++){const e=this.qt.ot[s];void 0!==e.ri&&(e.ri.nn=this.$s.Ii(t,e.ri.GS),e.ri.$t=this.F,e.ri._t=e._t-e.ri.nn/2),Ir(e,t,i,n)}}}}function Ir(t,i,n,s){i.fillStyle=t.R,void 0!==t.ri&&function(t,i,n,s,e,r){t.save(),t.scale(e,r),t.fillText(i,n,s),t.restore()}(i,t.ri.GS,t.ri._t,t.ri.ut,n,s),function(t,i,n){if(0===t.Th)return;switch(t.ZS){case\"arrowDown\":return void Tr(!1,i,n,t.Th);case\"arrowUp\":return void Tr(!0,i,n,t.Th);case\"circle\":return void function(t,i,n){const s=(Cr(\"circle\",n)-1)/2;t.beginPath(),t.arc(i._t,i.ut,s*i.YS,0,2*Math.PI,!1),t.fill()}(i,n,t.Th);case\"square\":return void function(t,i,n){const s=Cr(\"square\",n),e=(s-1)*i.YS/2,r=i._t-e,h=i.ut-e;t.fillRect(r,h,s*i.YS,s*i.YS)}(i,n,t.Th)}t.ZS}(t,i,function(t,i,n){const s=Math.max(1,Math.floor(i))%2/2;return{_t:Math.round(t._t*i)+s,ut:t.ut*n,YS:i}}(t,n,s))}function Vr(t,i,n){return!(void 0===t.ri||!function(t,i,n,s,e,r){const h=s/2;return e>=t&&e<=t+n&&r>=i-h&&r<=i+h}(t.ri._t,t.ri.ut,t.ri.nn,t.ri.$t,i,n))||function(t,i,n){if(0===t.Th)return!1;switch(t.ZS){case\"arrowDown\":return Rr(!0,t._t,t.ut,t.Th,i,n);case\"arrowUp\":return Rr(!1,t._t,t.ut,t.Th,i,n);case\"circle\":return function(t,i,n,s,e){const r=2+Cr(\"circle\",n)/2,h=t-s,a=i-e;return Math.sqrt(h*h+a*a)<=r}(t._t,t.ut,t.Th,i,n);case\"square\":return function(t,i,n,s,e){const r=Cr(\"square\",n),h=(r-1)/2,a=t-h,l=i-h;return s>=a&&s<=a+r&&e>=l&&e<=l+r}(t._t,t.ut,t.Th,i,n)}}(t,i,n)}function Br(t){return\"atPriceTop\"===t||\"atPriceBottom\"===t||\"atPriceMiddle\"===t}function Er(t,i,n,s,e,r,h,a){const l=function(t,i,n){if(Br(i.position)&&void 0!==i.price)return i.price;if(\"value\"in(s=t)&&\"number\"==typeof s.value)return t.value;var s;if(function(t){return\"open\"in t&&\"high\"in t&&\"low\"in t&&\"close\"in t}(t)){if(\"inBar\"===i.position)return t.close;if(\"aboveBar\"===i.position)return n?t.low:t.high;if(\"belowBar\"===i.position)return n?t.high:t.low}}(n,i,h.priceScale().options().invertScale);if(void 0===l)return;const o=Br(i.position),_=a.timeScale(),c=p(i.size)?Math.max(i.size,0):1,d=yr(_.options().barSpacing)*c,f=d/2;t.Th=d;switch(i.position){case\"inBar\":case\"atPriceMiddle\":return t.ut=u(h.priceToCoordinate(l)),void(void 0!==t.ri&&(t.ri.ut=t.ut+f+r+.6*e));case\"aboveBar\":case\"atPriceTop\":{const i=o?0:s.XS;return t.ut=u(h.priceToCoordinate(l))-f-i,void 0!==t.ri&&(t.ri.ut=t.ut-f-.6*e,s.XS+=1.2*e),void(o||(s.XS+=d+r))}case\"belowBar\":case\"atPriceBottom\":{const i=o?0:s.JS;return t.ut=u(h.priceToCoordinate(l))+f+i,void 0!==t.ri&&(t.ri.ut=t.ut+f+r+.6*e,s.JS+=1.2*e),void(o||(s.JS+=d+r))}}}class Ar{constructor(t,i,n){this.QS=[],this.xt=!0,this.tx=!0,this.Xt=new Dr,this.Te=t,this.Gv=i,this.qt={ot:[],lt:null},this.yn=n}renderer(){if(!this.Te.options().visible)return null;this.xt&&this.Ig();const t=this.Gv.options().layout;return this.Xt.js(t.fontSize,t.fontFamily,this.yn.zOrder),this.Xt.ht(this.qt),this.Xt}ix(t){this.QS=t,this.Pt(\"data\")}Pt(t){this.xt=!0,\"data\"===t&&(this.tx=!0)}nx(t){this.xt=!0,this.yn=t}zOrder(){return\"aboveSeries\"===this.yn.zOrder?\"top\":this.yn.zOrder}Ig(){const t=this.Gv.timeScale(),i=this.QS;this.tx&&(this.qt.ot=i.map((t=>({wt:t.time,_t:0,ut:0,Th:0,ZS:t.shape,R:t.color,te:t.id,sx:t.sx,ri:void 0}))),this.tx=!1);const n=this.Gv.options().layout;this.qt.lt=null;const s=t.getVisibleLogicalRange();if(null===s)return;const e=new Ai(Math.floor(s.from),Math.ceil(s.to));if(null===this.Te.dataByIndex(0,1))return;if(0===this.qt.ot.length)return;let r=NaN;const h=Pr(t.options().barSpacing),a={XS:h,JS:h};this.qt.lt=Rs(this.qt.ot,e,!0);for(let s=this.qt.lt.from;s<this.qt.lt.to;s++){const e=i[s];e.time!==r&&(a.XS=h,a.JS=h,r=e.time);const l=this.qt.ot[s];l._t=u(t.logicalToCoordinate(e.time)),void 0!==e.text&&e.text.length>0&&(l.ri={GS:e.text,_t:0,ut:0,nn:0,$t:0});const o=this.Te.dataByIndex(e.time,0);null!==o&&Er(l,e,o,a,n.fontSize,h,this.Te,this.Gv)}this.xt=!1}}function Lr(t){return{...Sr,...t}}class zr{constructor(t){this.Yh=null,this.QS=[],this.hx=[],this.lx=null,this.Te=null,this.Gv=null,this.ox=!0,this._x=null,this.ux=null,this.vx=null,this.mx=!0,this.yn=Lr(t)}attached(t){this.wx(),this.Gv=t.chart,this.Te=t.series,this.Yh=new Ar(this.Te,u(this.Gv),this.yn),this.jS=t.requestUpdate,this.Te.subscribeDataChanged((t=>this.Qg(t))),this.mx=!0,this.DS()}DS(){this.jS&&this.jS()}detached(){this.Te&&this.lx&&this.Te.unsubscribeDataChanged(this.lx),this.Gv=null,this.Te=null,this.Yh=null,this.lx=null}ix(t){this.mx=!0,this.QS=t,this.wx(),this.ox=!0,this.ux=null,this.DS()}Mx(){return this.QS}paneViews(){return this.Yh?[this.Yh]:[]}updateAllViews(){this.gx()}hitTest(t,i){return this.Yh?this.Yh.renderer()?.Qs(t,i)??null:null}autoscaleInfo(t,i){if(this.yn.autoScale&&this.Yh){const t=this.bx();if(t)return{priceRange:null,margins:t}}return null}vr(t){this.yn=Lr({...this.yn,...t}),this.DS&&this.DS()}bx(){const t=u(this.Gv).timeScale().options().barSpacing;if(this.ox||t!==this.vx){if(this.vx=t,this.QS.length>0){const i=Pr(t),n=1.5*yr(t)+2*i,s=this.Sx();this._x={above:kr(n,s.aboveBar,s.inBar),below:kr(n,s.belowBar,s.inBar)}}else this._x=null;this.ox=!1}return this._x}Sx(){return null===this.ux&&(this.ux=this.QS.reduce(((t,i)=>(t[i.position]||(t[i.position]=!0),t)),{inBar:!1,aboveBar:!1,belowBar:!1,atPriceTop:!1,atPriceBottom:!1,atPriceMiddle:!1})),this.ux}wx(){if(!this.mx||!this.Gv||!this.Te)return;const t=this.Gv.timeScale(),i=this.Te?.data();if(null==t.getVisibleLogicalRange()||!this.Te||0===i.length)return void(this.hx=[]);const n=t.timeToIndex(u(i[0].time),!0);this.hx=this.QS.map(((i,s)=>{const e=t.timeToIndex(i.time,!0),r=e<n?1:-1,h=u(this.Te).dataByIndex(e,r),a={time:t.timeToIndex(u(h).time,!1),position:i.position,shape:i.shape,color:i.color,id:i.id,sx:s,text:i.text,size:i.size,price:i.price,Qr:i.time};if(\"atPriceTop\"===i.position||\"atPriceBottom\"===i.position||\"atPriceMiddle\"===i.position){if(void 0===i.price)throw new Error(`Price is required for position ${i.position}`);return{...a,position:i.position,price:i.price}}return{...a,position:i.position,price:i.price}})),this.mx=!1}gx(t){this.Yh&&(this.wx(),this.Yh.ix(this.hx),this.Yh.nx(this.yn),this.Yh.Pt(t))}Qg(t){this.mx=!0,this.DS()}}class Or extends br{constructor(t,i,n){super(t,i),n&&this.setMarkers(n)}setMarkers(t){this.Jh.ix(t)}markers(){return this.Jh.Mx()}}function Nr(t,i,n){const s=new Or(t,new zr(n??{}));return i&&s.setMarkers(i),s}class Fr{constructor(t){this.QS=new Map,this.xx=t}Cx(t,i,n){if(this.yx(i),void 0!==n){const s=window.setTimeout((()=>{this.QS.delete(i),this.Px()}),n),e={...t,kx:s,Tx:Date.now()+n};this.QS.set(i,e)}else this.QS.set(i,{...t,kx:void 0,Tx:void 0});this.Px()}yx(t){const i=this.QS.get(t);i&&void 0!==i.kx&&window.clearTimeout(i.kx),this.QS.delete(t),this.Px()}Rx(){for(const[t]of this.QS)this.yx(t)}Dx(){const t=Date.now(),i=[];for(const[n,s]of this.QS)!s.Tx||s.Tx>t?i.push({time:s.time,sign:s.sign,value:s.value}):this.yx(n);return i}Ix(t){this.xx=t}Px(){this.xx&&this.xx()}}const Wr={positiveColor:\"#22AB94\",negativeColor:\"#F7525F\",updateVisibilityDuration:5e3};class Hr{constructor(t,i,n,s){this.qt=t,this.Vx=i,this.Bx=n,this.Ex=s}draw(t){t.useBitmapCoordinateSpace((t=>{const i=t.context,n=Math.max(1,Math.floor(t.horizontalPixelRatio))%2/2,s=4*t.verticalPixelRatio+n;this.qt.forEach((e=>{const r=Math.round(e._t*t.horizontalPixelRatio)+n;i.beginPath();const h=this.Ax(e.Lx);i.fillStyle=h,i.arc(r,e.ut*t.verticalPixelRatio,s,0,2*Math.PI,!1),i.fill(),e.Lx&&(i.strokeStyle=h,i.lineWidth=Math.floor(2*t.horizontalPixelRatio),i.beginPath(),i.moveTo((e._t-4.7)*t.horizontalPixelRatio+n,(e.ut-7*e.Lx)*t.verticalPixelRatio),i.lineTo(e._t*t.horizontalPixelRatio+n,(e.ut-7*e.Lx-7*e.Lx*.5)*t.verticalPixelRatio),i.lineTo((e._t+4.7)*t.horizontalPixelRatio+n,(e.ut-7*e.Lx)*t.verticalPixelRatio),i.stroke())}))}))}Ax(t){return 0===t?this.Vx:t>0?this.Ex:this.Bx}}class Ur{constructor(t,i,n){this.qt=[],this.Te=t,this.ia=i,this.yn=n}Pt(t){this.qt=t.map((t=>{const i=this.Te.priceToCoordinate(t.value);if(null===i)return null;return{_t:u(this.ia.timeToCoordinate(t.time)),ut:i,Lx:t.sign}})).filter(g)}renderer(){const t=function(t,i){return function(t,i){return\"Area\"===i}(0,i)?t.lineColor:t.color}(this.Te.options(),this.Te.seriesType());return new Hr(this.qt,t,this.yn.negativeColor,this.yn.positiveColor)}}function $r(t,i){return\"Line\"===i||\"Area\"===i}class jr{constructor(t){this.Gv=void 0,this.Te=void 0,this.RS=[],this.Pu=null,this.zx=new Map,this.Ox=new Fr((()=>this.DS())),this.yn={...Wr,...t}}vr(t){this.yn={...this.yn,...t},this.DS()}ix(t){this.Ox.Rx();const i=this.Pu;i&&t.forEach((t=>{this.Ox.Cx(t,i.key(t.time))}))}Mx(){return this.Ox.Dx()}DS(){this.jS?.()}attached(t){const{chart:i,series:n,requestUpdate:s,horzScaleBehavior:e}=t;this.Gv=i,this.Te=n,this.Pu=e;const r=this.Te.seriesType();if(\"Area\"!==r&&\"Line\"!==r)throw new Error(\"UpDownMarkersPrimitive is only supported for Area and Line series types\");this.RS=[new Ur(this.Te,this.Gv.timeScale(),this.yn)],this.jS=s,this.DS()}detached(){this.Gv=void 0,this.Te=void 0,this.jS=void 0}_m(){return _(this.Gv)}Y_(){return _(this.Te)}updateAllViews(){this.RS.forEach((t=>t.Pt(this.Mx())))}paneViews(){return this.RS}ht(t){if(!this.Te)throw new Error(\"Primitive not attached to series\");const i=this.Te.seriesType();this.zx.clear();const n=this.Pu;n&&t.forEach((t=>{ts(t)&&$r(0,i)&&this.zx.set(n.key(t.time),t.value)})),_(this.Te).setData(t)}Pt(t,i){if(!this.Te||!this.Pu)throw new Error(\"Primitive not attached to series\");const n=this.Te.seriesType(),s=this.Pu.key(t.time);if(Qn(t)&&this.zx.delete(s),ts(t)&&$r(0,n)){const i=this.zx.get(s);i&&this.Ox.Cx({time:t.time,value:t.value,sign:qr(t.value,i)},s,this.yn.updateVisibilityDuration)}_(this.Te).update(t,i)}Nx(){this.Ox.Rx()}}function qr(t,i){return t===i?0:t-i>0?1:-1}class Yr extends br{setData(t){return this.Jh.ht(t)}update(t,i){return this.Jh.Pt(t,i)}markers(){return this.Jh.Mx()}setMarkers(t){return this.Jh.ix(t)}clearMarkers(){return this.Jh.Nx()}}function Kr(t,i={}){return new Yr(t,new jr(i))}const Gr={...e,color:\"#2196f3\"};function Zr(){return\"5.2.1\"}export{qe as AreaSeries,Ze as BarSeries,Ue as BaselineSeries,Qe as CandlestickSeries,$i as ColorType,K as CrosshairMode,nr as HistogramSeries,Hi as LastPriceAnimationMode,ye as LineSeries,h as LineStyle,r as LineType,It as MismatchDirection,Ui as PriceLineSource,bi as PriceScaleMode,ji as TickMarkType,Wi as TrackingModeExitMode,le as createChart,ae as createChartEx,gr as createImageWatermark,Ee as createOptionsChart,Nr as createSeriesMarkers,dr as createTextWatermark,Kr as createUpDownMarkers,Ie as createYieldCurveChart,Gr as customSeriesDefaultOptions,oe as defaultHorzScaleBehavior,Ki as isBusinessDay,Gi as isUTCTimestamp,Zr as version};\n","/**\n * TradingView lightweight-charts v5 封装——中栏行情渲染器(富途牛牛视觉风格)。\n *\n * 结构:pane 0 = 蜡烛 + 主图叠加指标;pane 1 = 成交量;pane 2+ = 每个\n * 副图指标独占一 pane(v5 原生 panes)。渲染层对指标实现零感知,只消费\n * 注册表 compute 的输出(@dshtrading/indicators 注册表)。\n *\n * pane 内 legend:VOL(pane 1)与副图指标(pane 2+)的读数以绝对定位\n * overlay 显示在各自 pane 左上角(悬停跟随 readoutIndex,离场回落最新值);\n * 主图指标读数由 QuoteStage 的读数行承载,不在这里重复。\n *\n * 视觉对齐:\n * - 红涨绿跌(#e64545 / #2ba471)\n * - 当前最新价水平虚线与坐标轴实心价签\n * - 紧凑网格与等宽数字\n */\nimport { useEffect, useRef, useState } from 'react'\nimport {\n AreaSeries, CandlestickSeries, ColorType, CrosshairMode, HistogramSeries, LineSeries, LineStyle, createChart, createSeriesMarkers,\n} from 'lightweight-charts'\nimport type {\n IChartApi, ISeriesApi, ISeriesMarkersPluginApi, Logical, LogicalRange, MouseEventParams, SeriesType, Time, UTCTimestamp,\n} from 'lightweight-charts'\nimport type { BarPrice, PriceFormatCustom } from 'lightweight-charts'\nimport { fmtAxis, fmtCompact, priceDigits } from './format.ts'\nimport { getColorPalette, type ColorMode } from './color-mode.ts'\nimport type { IndicatorOutput } from '@dshtrading/indicators'\nimport type { Kline } from './types.ts'\n\nexport interface TvBar {\n time: UTCTimestamp\n open: number\n high: number\n low: number\n close: number\n}\n\nexport interface TvVolume {\n time: UTCTimestamp\n value: number\n color: string\n}\n\n/** 一个指标实例的渲染输入(key = instanceKey,diff 锚点)。 */\nexport interface TvIndicatorGroup {\n key: string\n outputs: readonly IndicatorOutput[]\n}\n\n/* ── 图表标记输入(Issue #41)──────────────────────────────── */\n\n/** 策略信号标记输入(从 marker-state 传入)。 */\nexport interface ChartSignalMarkerInput {\n readonly time: number\n readonly action: 'entry' | 'exit'\n readonly price: number\n readonly reason: string\n}\n\n/** 知识事件标记输入(从 marker-state 传入)。 */\nexport interface ChartKnowledgeMarkerInput {\n readonly time: number\n readonly title: string\n readonly cardId: string\n readonly credibility: 'high' | 'medium' | 'low'\n}\n\n/** 悬停标记时传递给父级的详情(驱动 MarkerTooltip 渲染)。 */\nexport interface MarkerHoverInfo {\n /** 屏幕坐标 X(TvChart 容器坐标系)。 */\n x: number\n /** 屏幕坐标 Y(TvChart 容器坐标系)。 */\n y: number\n /** 容器尺寸(Tooltip 越界翻转钳位用)。 */\n containerWidth: number\n containerHeight: number\n /** 策略信号数据(与 knowledge 互斥)。 */\n signal?: ChartSignalMarkerInput\n /** 知识事件数据(与 signal 互斥)。 */\n knowledge?: ChartKnowledgeMarkerInput\n}\n\nexport interface TvChartProps {\n bars: readonly TvBar[]\n volumes: readonly TvVolume[]\n /** market:symbol:interval——变化即全量重置并 fitContent。 */\n dataKey: string\n intraday: boolean\n colorMode?: ColorMode\n mainOverlays: readonly TvIndicatorGroup[]\n subIndicators: readonly TvIndicatorGroup[]\n /** 悬停读数下标(null = 回落最新一根);pane legend 与父级读数行同源。 */\n readoutIndex: number | null\n /** 十字线悬停的 K 线下标(离场为 null),父级负责 OHLC 读数。 */\n onHoverIndex: (index: number | null) => void\n /** 区间统计框选模式(2026-09-02):true 时禁用拖拽平移/缩放,指针框选K线区间。 */\n rangeSelectionMode?: boolean | undefined\n /** 框选提交(逻辑下标闭区间;null = 点击清除)。 */\n onRangeSelect?: (range: { start: number; end: number } | null) => void\n /** 已提交的框选区间(父级持有以驱动统计面板;此处只负责高亮回显)。 */\n selection?: { start: number; end: number } | null | undefined\n /** 图表就绪时注册截图回调、卸载时以 null 注销(「发给 Agent」用)。 */\n onCaptureReady?: (capture: (() => TvChartCapture | null) | null) => void\n /** 策略回测信号标记(可选,issue #41)。 */\n signalMarkers?: readonly ChartSignalMarkerInput[] | undefined\n /** 知识事件标记(可选,issue #41)。 */\n knowledgeMarkers?: readonly ChartKnowledgeMarkerInput[] | undefined\n /** 悬停标记时回调(null = 离开标记区域;父级负责渲染 Tooltip)。 */\n onMarkerHover?: (info: MarkerHoverInfo | null) => void\n /** 信号标记图上的短文案(买入/卖出,词典驱动)。 */\n markerTexts?: { entry: string; exit: string } | undefined\n /** 数值紧凑单位 locale(zh = 亿/万,en = K/M/B;缺省 zh 现网口径)。 */\n numLocale?: 'zh' | 'en' | undefined\n}\n\n/** 一次图表截图(PNG data URL + 像素尺寸,回显/命名用)。 */\nexport interface TvChartCapture {\n dataUrl: string\n width: number\n height: number\n}\n\n/** kline → 图表 bar(openTime 毫秒 → UTC 秒)。 */\nexport function toBar(kline: Kline): TvBar {\n return {\n time: Math.floor(kline.openTime / 1000) as UTCTimestamp,\n open: kline.open,\n high: kline.high,\n low: kline.low,\n close: kline.close,\n }\n}\n\n/**\n * 右轴价格格式(2026-09-02 相对涨跌幅轴):镜像序列的数值仍是**价位**,仅\n * 标签经本 formatter 换算为相对参考价的百分比——两轴刻度行逐行对齐的关键。\n * 参考价从 refPriceRef 惰性读取(滚动/缩放时经 applyOptions 换新对象强制重绘)。\n * 负数带负号、正数不带正号(同花顺式)。\n */\nfunction mirrorPercentFormat(refPriceRef: { current: number | null }): PriceFormatCustom {\n return {\n type: 'custom',\n minMove: 0.01,\n formatter: (price: BarPrice): string => {\n const ref = refPriceRef.current\n const value = Number(price)\n if (ref === null || !Number.isFinite(ref) || ref <= 0 || !Number.isFinite(value)) return ''\n const pct = (value - ref) / ref * 100\n return `${pct.toFixed(2)}%`\n },\n }\n}\n\nexport function toVolume(kline: Kline, colorMode: ColorMode = 'red-up'): TvVolume {\n const up = kline.close >= kline.open\n const palette = getColorPalette(colorMode)\n return {\n time: Math.floor(kline.openTime / 1000) as UTCTimestamp,\n value: kline.volume,\n color: up ? palette.upAlpha(0.55) : palette.downAlpha(0.55),\n }\n}\n\nconst pad2 = (n: number): string => String(n).padStart(2, '0')\n\nfunction localDate(ms: number): string {\n const date = new Date(ms)\n return `${date.getFullYear()}-${pad2(date.getMonth() + 1)}-${pad2(date.getDate())}`\n}\n\nfunction localTime(ms: number): string {\n const date = new Date(ms)\n return `${pad2(date.getHours())}:${pad2(date.getMinutes())}`\n}\n\nexport function isDarkTheme(): boolean {\n if (typeof document === 'undefined') return false\n return document.body.hasAttribute('data-ds-dark-theme')\n || document.documentElement.getAttribute('data-theme') === 'dark'\n || document.body.getAttribute('data-theme') === 'dark'\n}\n\nexport function getChartThemeOptions(dark: boolean) {\n if (dark) {\n return {\n autoSize: true,\n layout: {\n background: { type: ColorType.Solid, color: '#131722' },\n textColor: '#787b86',\n fontSize: 10.5,\n fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, sans-serif',\n panes: {\n separatorColor: '#2a2e39',\n separatorHoverColor: '#363a45',\n enableResize: true,\n },\n },\n grid: {\n vertLines: { color: '#1e222d' },\n horzLines: { color: '#1e222d' },\n },\n leftPriceScale: {\n visible: true,\n borderColor: '#2a2e39',\n scaleMargins: { top: 0.08, bottom: 0.08 },\n entireTextOnly: true,\n },\n rightPriceScale: {\n borderColor: '#2a2e39',\n scaleMargins: { top: 0.08, bottom: 0.08 },\n entireTextOnly: true,\n },\n timeScale: {\n borderColor: '#2a2e39',\n rightOffset: 6,\n barSpacing: 9,\n minBarSpacing: 0.5,\n fixLeftEdge: true,\n fixRightEdge: true,\n shiftVisibleRangeOnNewBar: true,\n },\n crosshair: {\n mode: CrosshairMode.Normal,\n vertLine: {\n color: '#787b86',\n width: 1,\n style: LineStyle.Dashed,\n labelBackgroundColor: '#2a2e39',\n },\n horzLine: {\n color: '#787b86',\n width: 1,\n style: LineStyle.Dashed,\n labelBackgroundColor: '#2a2e39',\n },\n },\n } as const\n }\n return {\n autoSize: true,\n layout: {\n background: { type: ColorType.Solid, color: '#ffffff' },\n textColor: '#5f6672',\n fontSize: 10.5,\n fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, sans-serif',\n panes: {\n separatorColor: '#e3e6ea',\n separatorHoverColor: '#c8cdd4',\n enableResize: true,\n },\n },\n grid: {\n vertLines: { color: '#f5f6f8' },\n horzLines: { color: '#f0f2f5' },\n },\n // 双价格轴(2026-09-02):左轴=价格(蜡烛+主图指标),右轴=相对涨跌幅\n // (镜像序列把刻度值钉在与左轴相同的价位上,标签经 formatter 换算成百分比,\n // 两轴刻度行逐行对齐——同花顺式)。scaleMargins 必须两轴一致,包络范围才同映射。\n leftPriceScale: {\n visible: true,\n borderColor: '#e5e7eb',\n scaleMargins: { top: 0.08, bottom: 0.08 },\n entireTextOnly: true,\n },\n rightPriceScale: {\n borderColor: '#e5e7eb',\n scaleMargins: { top: 0.08, bottom: 0.08 },\n entireTextOnly: true,\n },\n timeScale: {\n borderColor: '#e5e7eb',\n rightOffset: 6,\n barSpacing: 9,\n minBarSpacing: 0.5,\n fixLeftEdge: true,\n fixRightEdge: true,\n shiftVisibleRangeOnNewBar: true,\n },\n crosshair: {\n mode: CrosshairMode.Normal,\n vertLine: {\n color: '#8e95a3',\n width: 1,\n style: LineStyle.Dashed,\n labelBackgroundColor: '#1a1e24',\n },\n horzLine: {\n color: '#8e95a3',\n width: 1,\n style: LineStyle.Dashed,\n labelBackgroundColor: '#1a1e24',\n },\n },\n } as const\n}\n\nexport function TvChart(props: TvChartProps): React.JSX.Element {\n const { bars, volumes, dataKey, intraday, mainOverlays, subIndicators, readoutIndex, onHoverIndex } = props\n\n const [dark, setDark] = useState<boolean>(() => isDarkTheme())\n const containerRef = useRef<HTMLDivElement | null>(null)\n const chartRef = useRef<IChartApi | null>(null)\n const candleRef = useRef<ISeriesApi<'Candlestick'> | null>(null)\n const markerPluginRef = useRef<ISeriesMarkersPluginApi<Time> | null>(null)\n /** 当前图上标记的元数据(命中检测用;与 markerPlugin 的 markers 同步重建)。 */\n const markerMetaRef = useRef<MarkerMeta[]>([])\n const volumeRef = useRef<ISeriesApi<'Histogram'> | null>(null)\n /** 右轴镜像序列(透明):top/bottom 钉范围,close 供轴上百分比徽标。 */\n const mirrorTopRef = useRef<ISeriesApi<'Line'> | null>(null)\n const mirrorBottomRef = useRef<ISeriesApi<'Line'> | null>(null)\n const mirrorCloseRef = useRef<ISeriesApi<'Line'> | null>(null)\n /** 右轴百分比参考价(可视区最左一根K线收盘;null = 未定)。 */\n const refPriceRef = useRef<number | null>(null)\n const mirrorFormatRafRef = useRef(0)\n /** 主图/副图各一张序列表:groupKey → outputKey → series(结构 diff 用)。 */\n const mainRefs = useRef(new Map<string, Map<string, ISeriesApi<SeriesType>>>())\n const subRefs = useRef(new Map<string, Map<string, ISeriesApi<SeriesType>>>())\n /** 各 pane 顶缘 y 坐标(legend overlay 定位用);空数组 = 尚未测量。 */\n const [paneTops, setPaneTops] = useState<number[]>([])\n /** 最新 props 快照,供只跑一次的 chart 工厂与事件回调读取。 */\n const propsRef = useRef(props)\n propsRef.current = props\n\n // 监听宿主主题切换(body 属性与 media query)\n useEffect(() => {\n const updateTheme = (): void => {\n setDark(isDarkTheme())\n }\n const mo = new MutationObserver(updateTheme)\n if (typeof document !== 'undefined') {\n mo.observe(document.body, { attributes: true, attributeFilter: ['data-ds-dark-theme', 'data-theme'] })\n mo.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme', 'class'] })\n }\n const mql = typeof matchMedia !== 'undefined' ? matchMedia('(prefers-color-scheme: dark)') : undefined\n mql?.addEventListener('change', updateTheme)\n return () => {\n mo.disconnect()\n mql?.removeEventListener('change', updateTheme)\n }\n }, [])\n\n /** 参考价变化后 rAF 去抖刷新镜像 formatter(新 formatter 对象强制轴重绘)。 */\n const scheduleMirrorFormatRefresh = (): void => {\n cancelAnimationFrame(mirrorFormatRafRef.current)\n mirrorFormatRafRef.current = requestAnimationFrame(() => {\n const format = mirrorPercentFormat(refPriceRef)\n for (const series of [mirrorTopRef.current, mirrorBottomRef.current, mirrorCloseRef.current]) {\n series?.applyOptions({ priceFormat: format })\n }\n })\n }\n\n // ---- 图表生命周期(仅挂载/卸载各一次) ----\n useEffect(() => {\n const container = containerRef.current\n if (container === null) return\n const initialTheme = getChartThemeOptions(isDarkTheme())\n const chart = createChart(container, {\n ...initialTheme,\n localization: {\n timeFormatter: (time: Time): string => {\n const ms = Number(time) * 1000\n return propsRef.current.intraday ? `${localDate(ms)} ${localTime(ms)}` : localDate(ms)\n },\n },\n timeScale: {\n ...initialTheme.timeScale,\n tickMarkFormatter: (time: Time): string => fmtAxis(Number(time) * 1000, propsRef.current.intraday),\n },\n })\n chartRef.current = chart\n\n const initialPalette = getColorPalette(propsRef.current.colorMode)\n const candles = chart.addSeries(CandlestickSeries, {\n // 左轴承载价格(蜡烛 + 主图叠加指标都在 left);右轴留给百分比镜像序列。\n priceScaleId: 'left',\n upColor: initialPalette.upColor,\n downColor: initialPalette.downColor,\n borderUpColor: initialPalette.upColor,\n borderDownColor: initialPalette.downColor,\n wickUpColor: initialPalette.upColor,\n wickDownColor: initialPalette.downColor,\n priceLineVisible: true,\n priceLineWidth: 1,\n priceLineStyle: LineStyle.Dashed,\n lastValueVisible: true,\n })\n candleRef.current = candles\n\n const volume = chart.addSeries(HistogramSeries, {\n priceFormat: { type: 'volume' },\n priceLineVisible: false,\n lastValueVisible: false,\n }, 1)\n volumeRef.current = volume\n\n // 右轴镜像序列(主图 pane):三根透明 LineSeries 把右轴数值范围钉在与左轴\n // 完全相同的价位集合上(最高/最低包络对齐蜡烛+主图指标的 autoscale 范围,\n // 收盘序列负责轴上当前价百分比徽标)。百分比只出现在标签 formatter 里——\n // 两侧刻度行因此逐行对齐(同花顺式右轴)。\n const mirrorBase = () => ({\n color: 'rgba(0,0,0,0)',\n lineWidth: 1 as const,\n priceLineVisible: false,\n lastValueVisible: false,\n crosshairMarkerVisible: false,\n priceFormat: mirrorPercentFormat(refPriceRef),\n })\n mirrorTopRef.current = chart.addSeries(LineSeries, { ...mirrorBase() }, 0)\n mirrorBottomRef.current = chart.addSeries(LineSeries, { ...mirrorBase() }, 0)\n mirrorCloseRef.current = chart.addSeries(LineSeries, {\n ...mirrorBase(),\n lastValueVisible: true,\n }, 0)\n\n // 参考价 = 可视区最左一根K线收盘:滚动/缩放/换数据时经 visibleLogicalRange\n // 事件重算,rAF 去抖后刷新镜像 formatter(新对象强制轴重绘)。\n const syncRefPrice = (): void => {\n const barsNow = propsRef.current.bars\n if (barsNow.length === 0) return\n const range: LogicalRange | null = chart.timeScale().getVisibleLogicalRange()\n if (range === null) return\n const index = Math.min(barsNow.length - 1, Math.max(0, Math.ceil(range.from)))\n const close = barsNow[index]?.close\n if (close === undefined || !Number.isFinite(close) || close <= 0) return\n if (close === refPriceRef.current) return\n refPriceRef.current = close\n scheduleMirrorFormatRefresh()\n }\n chart.timeScale().subscribeVisibleLogicalRangeChange(syncRefPrice)\n\n applyStretch(chart)\n\n const onCrosshair = (param: MouseEventParams): void => {\n if (param.logical === undefined || param.time === undefined) {\n propsRef.current.onHoverIndex(null)\n propsRef.current.onMarkerHover?.(null)\n return\n }\n propsRef.current.onHoverIndex(param.logical)\n propsRef.current.onMarkerHover?.(hitTestMarker(param, propsRef, chart, candles, container, markerMetaRef))\n }\n chart.subscribeCrosshairMove(onCrosshair)\n\n // 截图回调(v5 takeScreenshot 覆盖主图+副图 pane,白底、不含十字线)。\n const capture = (): TvChartCapture | null => {\n try {\n const canvas = chart.takeScreenshot()\n if (canvas === null) return null\n return { dataUrl: canvas.toDataURL('image/png'), width: canvas.width, height: canvas.height }\n } catch {\n return null\n }\n }\n propsRef.current.onCaptureReady?.(capture)\n\n return () => {\n propsRef.current.onCaptureReady?.(null)\n chart.unsubscribeCrosshairMove(onCrosshair)\n mainRefs.current.clear()\n subRefs.current.clear()\n chart.remove()\n chartRef.current = null\n candleRef.current = null\n markerPluginRef.current?.detach()\n markerPluginRef.current = null\n markerMetaRef.current = []\n volumeRef.current = null\n mirrorTopRef.current = null\n mirrorBottomRef.current = null\n mirrorCloseRef.current = null\n refPriceRef.current = null\n cancelAnimationFrame(mirrorFormatRafRef.current)\n }\n }, [])\n\n // 主题热切换(浅色 ↔ 深色动态 applyOptions)\n useEffect(() => {\n const chart = chartRef.current\n if (chart === null) return\n const themeOpts = getChartThemeOptions(dark)\n chart.applyOptions(themeOpts)\n }, [dark])\n\n // 涨跌配色热切换(红涨绿跌 ↔ 绿涨红跌)\n useEffect(() => {\n const palette = getColorPalette(props.colorMode)\n candleRef.current?.applyOptions({\n upColor: palette.upColor,\n downColor: palette.downColor,\n borderUpColor: palette.upColor,\n borderDownColor: palette.downColor,\n wickUpColor: palette.upColor,\n wickDownColor: palette.downColor,\n })\n if (volumeRef.current && props.volumes.length > 0) {\n volumeRef.current.setData(props.volumes)\n }\n }, [props.colorMode, props.volumes])\n\n // ---- 蜡烛/成交量:dataKey 变化全量重置,否则尾部增量 ----\n const prevRef = useRef<{ key: string; bars: readonly TvBar[]; volumes: readonly TvVolume[] } | null>(null)\n useEffect(() => {\n const candles = candleRef.current\n const volume = volumeRef.current\n const chart = chartRef.current\n if (candles === null || volume === null || chart === null) return\n const prev = prevRef.current\n prevRef.current = { key: dataKey, bars, volumes }\n\n const last = bars[bars.length - 1]\n const up = last !== undefined ? last.close >= last.open : true\n const palette = getColorPalette(props.colorMode)\n const priceFormat = { type: 'price' as const, precision: priceDigits(last?.close), minMove: 1 / 10 ** priceDigits(last?.close) }\n candles.applyOptions({\n priceFormat,\n priceLineColor: up ? palette.upColor : palette.downColor,\n })\n\n if (prev === null || prev.key !== dataKey || bars.length < prev.bars.length || firstTimeDiffers(prev.bars, bars)) {\n candles.setData(bars as TvBar[])\n volume.setData(volumes as TvVolume[])\n chart.timeScale().resetTimeScale()\n chart.timeScale().scrollToRealTime()\n return\n }\n for (let index = Math.max(prev.bars.length - 1, 0); index < bars.length; index++) {\n candles.update(bars[index] as TvBar)\n volume.update(volumes[index] as TvVolume)\n }\n }, [bars, volumes, dataKey, props.colorMode])\n\n // ---- 策略信号 & 知识事件标记(Issue #41)────────────────────────────\n useEffect(() => {\n const candles = candleRef.current\n if (candles === null) return\n const markers: Array<{\n time: UTCTimestamp\n position: 'belowBar' | 'aboveBar'\n color: string\n shape: 'arrowUp' | 'arrowDown' | 'circle'\n text: string\n }> = []\n const meta: MarkerMeta[] = []\n /** marker time → 柱下标(命中检测按柱下标匹配;bars 变化时本 effect 重建)。 */\n const indexOfTime = new Map<number, number>()\n for (let index = 0; index < bars.length; index++) {\n const bar = bars[index]\n if (bar !== undefined) indexOfTime.set(bar.time as number, index)\n }\n\n // 策略信号 → 绿色买入箭头 / 红色卖出箭头\n if (props.signalMarkers) {\n for (const s of props.signalMarkers) {\n const t = (s.time > 1e11 ? Math.floor(s.time / 1000) : s.time) as UTCTimestamp\n markers.push({\n time: t,\n position: s.action === 'entry' ? 'belowBar' : 'aboveBar',\n color: s.action === 'entry' ? '#22c55e' : '#ef4444',\n shape: s.action === 'entry' ? 'arrowUp' : 'arrowDown',\n text: s.action === 'entry' ? (props.markerTexts?.entry ?? 'Buy') : (props.markerTexts?.exit ?? 'Sell'),\n })\n meta.push({ index: indexOfTime.get(t as number) ?? -1, signal: s })\n }\n }\n\n // 知识事件 → 蓝色圆形图钉\n if (props.knowledgeMarkers) {\n for (const k of props.knowledgeMarkers) {\n const t = (k.time > 1e11 ? Math.floor(k.time / 1000) : k.time) as UTCTimestamp\n markers.push({\n time: t,\n position: 'aboveBar',\n color: '#3b82f6',\n shape: 'circle',\n text: '📌',\n })\n meta.push({ index: indexOfTime.get(t as number) ?? -1, knowledge: k })\n }\n }\n\n // 按 time 升序排列(与 markers 顺序一致)\n markers.sort((a, b) => (a.time as number) - (b.time as number))\n meta.sort((a, b) => a.index - b.index)\n markerMetaRef.current = meta\n if (markerPluginRef.current === null) {\n markerPluginRef.current = createSeriesMarkers(candles, markers)\n } else {\n markerPluginRef.current.setMarkers(markers)\n }\n // 标记消失(切标的/关开关)后悬停详情立即清场。\n if (meta.length === 0) propsRef.current.onMarkerHover?.(null)\n }, [props.signalMarkers, props.knowledgeMarkers, bars])\n\n // ---- 右轴镜像数据:top/bottom 包络 = 蜡烛高低 ∪ 主图指标输出(与左轴\n // autoscale 范围完全一致,两轴刻度行对齐的前提),close 序列驱动百分比徽标。\n // 全量 setData:160 根 × 3 序列,30s resync / 5s 尾随合并的节奏下成本可忽略。\n useEffect(() => {\n const top = mirrorTopRef.current\n const bottom = mirrorBottomRef.current\n const badge = mirrorCloseRef.current\n if (top === null || bottom === null || badge === null) return\n const topData: Array<{ time: UTCTimestamp; value: number }> = []\n const bottomData: Array<{ time: UTCTimestamp; value: number }> = []\n const closeData: Array<{ time: UTCTimestamp; value: number }> = []\n for (let index = 0; index < bars.length; index++) {\n const bar = bars[index]\n if (bar === undefined) continue\n let high = bar.high\n let low = bar.low\n for (const group of mainOverlays) {\n for (const output of group.outputs) {\n const value = output.values[index]\n if (value === undefined || !Number.isFinite(value)) continue\n if (value > high) high = value\n if (value < low) low = value\n }\n }\n topData.push({ time: bar.time, value: high })\n bottomData.push({ time: bar.time, value: low })\n closeData.push({ time: bar.time, value: bar.close })\n }\n top.setData(topData)\n bottom.setData(bottomData)\n badge.setData(closeData)\n // 徽标底色跟随最新一根K线方向(与左轴价格徽标同款着色逻辑)。\n const last = bars[bars.length - 1]\n const prev = bars[bars.length - 2]\n if (last !== undefined && prev !== undefined) {\n const palette = getColorPalette(propsRef.current.colorMode)\n badge.applyOptions({ priceLineColor: last.close >= prev.close ? palette.upColor : palette.downColor })\n }\n }, [bars, mainOverlays, props.colorMode])\n\n // ---- 指标序列:结构 diff + 数据同步 ----\n useEffect(() => {\n const chart = chartRef.current\n if (chart === null) return\n const timeAxis = bars.map(bar => bar.time)\n syncIndicators(chart, mainRefs.current, mainOverlays, timeAxis, false, 0, props.colorMode)\n syncIndicators(chart, subRefs.current, subIndicators, timeAxis, true, 2, props.colorMode)\n applyStretch(chart)\n }, [mainOverlays, subIndicators, bars, props.colorMode])\n\n // ---- pane 几何测量:legend overlay 定位用 ----\n // pane 高度随指标增删 / 容器 resize / 分隔线拖拽变化。v5 无 pane DOM 入口,\n // 以 getHeight 累加 + 容器高反推分隔条厚度定位。声明在指标同步之后,同一\n // 提交内先建 pane 再测量;rAF 等 layout 落定。\n useEffect(() => {\n const container = containerRef.current\n const chart = chartRef.current\n if (container === null || chart === null) return\n const measure = (): void => {\n const panes = chart.panes()\n if (panes.length === 0) {\n setPaneTops([])\n return\n }\n const heights = panes.map(pane => pane.getHeight())\n const gapsTotal = panes.length > 1\n ? Math.max(0, container.clientHeight - heights.reduce((sum, height) => sum + height, 0))\n : 0\n const separator = panes.length > 1 ? gapsTotal / (panes.length - 1) : 0\n const tops: number[] = []\n let acc = 0\n for (const height of heights) {\n tops.push(acc)\n acc += height + separator\n }\n setPaneTops(tops)\n }\n const raf = requestAnimationFrame(measure)\n const observer = new ResizeObserver(measure)\n observer.observe(container)\n // 分隔线拖拽结束(pointerup)后复测,拖拽过程允许短暂滞后。\n container.addEventListener('pointerup', measure)\n return () => {\n cancelAnimationFrame(raf)\n observer.disconnect()\n container.removeEventListener('pointerup', measure)\n }\n }, [mainOverlays, subIndicators, bars, props.colorMode])\n\n // ---- 区间统计框选模式:禁用图表自身的拖拽平移/缩放,指针事件留给框选 ----\n useEffect(() => {\n const chart = chartRef.current\n if (chart === null) return\n const selecting = props.rangeSelectionMode === true\n chart.applyOptions({ handleScroll: !selecting, handleScale: !selecting })\n }, [props.rangeSelectionMode])\n\n // ---- 框选指针交互:按下记起点,移动更新矩形,抬起换算逻辑下标区间提交 ----\n const dragStartXRef = useRef<number | null>(null)\n const [dragRect, setDragRect] = useState<{ x1: number; x2: number } | null>(null)\n\n const handleRangePointerDown = (event: React.PointerEvent<HTMLDivElement>): void => {\n if (propsRef.current.rangeSelectionMode !== true || event.button !== 0) return\n const box = event.currentTarget.getBoundingClientRect()\n const x = event.clientX - box.left\n dragStartXRef.current = x\n setDragRect({ x1: x, x2: x })\n event.currentTarget.setPointerCapture(event.pointerId)\n }\n\n const handleRangePointerMove = (event: React.PointerEvent<HTMLDivElement>): void => {\n if (dragStartXRef.current === null) return\n const box = event.currentTarget.getBoundingClientRect()\n setDragRect({ x1: dragStartXRef.current, x2: event.clientX - box.left })\n }\n\n const handleRangePointerUp = (event: React.PointerEvent<HTMLDivElement>): void => {\n const startX = dragStartXRef.current\n if (startX === null) return\n dragStartXRef.current = null\n setDragRect(null)\n const chart = chartRef.current\n if (chart === null) return\n const box = event.currentTarget.getBoundingClientRect()\n // 容器坐标 → pane 坐标:时间刻度换算以 pane 左缘为原点,容器含左价格轴,\n // 不减去轴宽会整体右移选区(提交端被 lastIndex 钳位掩盖)。\n const paneOffset = chart.priceScale('left').width()\n const fromLogical = chart.timeScale().coordinateToLogical(startX - paneOffset)\n const toLogical = chart.timeScale().coordinateToLogical(event.clientX - box.left - paneOffset)\n if (fromLogical === null || toLogical === null) {\n propsRef.current.onRangeSelect?.(null)\n return\n }\n let start = Math.round(fromLogical)\n let end = Math.round(toLogical)\n if (start > end) [start, end] = [end, start]\n const lastIndex = Math.max(propsRef.current.bars.length - 1, 0)\n start = Math.min(lastIndex, Math.max(0, start))\n end = Math.min(lastIndex, Math.max(0, end))\n // 单击(无拖拽跨度)= 清除选区。\n if (start === end) {\n propsRef.current.onRangeSelect?.(null)\n return\n }\n propsRef.current.onRangeSelect?.({ start, end })\n }\n\n const handleRangePointerCancel = (): void => {\n dragStartXRef.current = null\n setDragRect(null)\n }\n\n // 高亮矩形:拖拽中用像素坐标;已提交选区由逻辑下标反查坐标(布局变化经\n // paneTops 测量 effect 的 ResizeObserver 触发重渲染重算)。logicalToCoordinate\n // 返回 pane 内坐标,绘制在容器上需加回左价格轴宽度(与 pointerup 换算互逆)。\n const selectionRect = ((): { left: number; width: number } | null => {\n if (dragRect !== null) {\n return { left: Math.min(dragRect.x1, dragRect.x2), width: Math.abs(dragRect.x2 - dragRect.x1) }\n }\n if (props.rangeSelectionMode === true && props.selection != null) {\n const chart = chartRef.current\n if (chart === null) return null\n const timeScale = chart.timeScale()\n const paneOffset = chart.priceScale('left').width()\n const x1 = timeScale.logicalToCoordinate(props.selection.start as Logical)\n const x2 = timeScale.logicalToCoordinate(props.selection.end as Logical)\n if (x1 === null || x2 === null) return null\n return { left: Math.min(Number(x1), Number(x2)) + paneOffset, width: Math.abs(Number(x2) - Number(x1)) }\n }\n return null\n })()\n\n const monoFont = 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, sans-serif'\n const volumeReadout = readoutIndex !== null ? volumes[readoutIndex] : undefined\n\n return (\n <div\n className=\"dshtrading-tv-chart\"\n ref={containerRef}\n style={{\n width: '100%',\n height: '100%',\n position: 'relative',\n cursor: props.rangeSelectionMode === true ? 'crosshair' : undefined,\n }}\n onPointerDown={handleRangePointerDown}\n onPointerMove={handleRangePointerMove}\n onPointerUp={handleRangePointerUp}\n onPointerCancel={handleRangePointerCancel}\n >\n {/* 框选高亮带(拖拽中 / 已提交选区) */}\n {selectionRect !== null && (\n <div\n style={{\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: selectionRect.left,\n width: selectionRect.width,\n background: 'rgba(37, 99, 235, 0.08)',\n borderLeft: '1px solid rgba(37, 99, 235, 0.4)',\n borderRight: '1px solid rgba(37, 99, 235, 0.4)',\n zIndex: 1,\n pointerEvents: 'none',\n }}\n />\n )}\n {/* pane 1 legend:成交量读数(值按富途式蓝色着色) */}\n {paneTops[1] !== undefined && volumeReadout !== undefined && (\n <div style={{ position: 'absolute', left: 8, top: paneTops[1] + 4, zIndex: 2, pointerEvents: 'none', fontSize: 10.5, fontFamily: monoFont, color: 'var(--dsw-futu-text-secondary, #5f6672)', fontWeight: 600 }}>\n VOL: <span style={{ color: '#2563eb' }}>{fmtCompact(volumeReadout.value, props.numLocale ?? 'zh')}</span>\n </div>\n )}\n {/* pane 2+ legend:副图指标读数(分量按输出色着色,组名打头) */}\n {subIndicators.map((group, groupIndex) => {\n const top = paneTops[2 + groupIndex]\n if (top === undefined || readoutIndex === null) return null\n return (\n <div key={group.key} style={{ position: 'absolute', left: 8, top: top + 4, zIndex: 2, pointerEvents: 'none', fontSize: 10.5, fontFamily: monoFont, display: 'flex', gap: 8 }}>\n <span style={{ color: 'var(--dsw-futu-text-secondary, #5f6672)', fontWeight: 600 }}>{group.title}</span>\n {group.outputs.map((output) => {\n const value = output.values[readoutIndex]\n if (value === undefined || !Number.isFinite(value)) return null\n return (\n <span key={output.key} style={{ color: output.color, fontWeight: 500 }}>\n {output.key}: {value.toFixed(2)}\n </span>\n )\n })}\n </div>\n )\n })}\n </div>\n )\n}\n\n/** 一条标记的命中检测元数据(index = 所属柱下标,-1 = 柱不在当前序列)。 */\ntype MarkerMeta = {\n index: number\n signal?: ChartSignalMarkerInput\n knowledge?: ChartKnowledgeMarkerInput\n}\n\n/**\n * 标记命中检测:十字线所在柱有信号/知识标记时回报容器坐标与详情(驱动\n * MarkerTooltip)。x = 时间轴坐标 + 左价格轴宽;y = 标记锚定价位(entry 在\n * 柱 low、exit/知识图钉在柱 high),锚点不可见时回退鼠标 y。\n */\nfunction hitTestMarker(\n param: MouseEventParams,\n propsRef: { current: TvChartProps },\n chart: IChartApi,\n candles: ISeriesApi<'Candlestick'>,\n container: HTMLDivElement,\n metaRef: { current: readonly MarkerMeta[] },\n): MarkerHoverInfo | null {\n const meta = metaRef.current\n if (meta.length === 0 || param.logical === undefined) return null\n const index = Math.round(Number(param.logical))\n // 同柱多标记:signal 优先(交易详情信息量更大),knowledge 兜底。\n const entry = meta.find(m => m.index === index && m.signal !== undefined)\n ?? meta.find(m => m.index === index && m.knowledge !== undefined)\n if (entry === undefined) return null\n\n const paneOffset = chart.priceScale('left').width()\n const xCoord = chart.timeScale().logicalToCoordinate(param.logical)\n if (xCoord === null) return null\n const x = Number(xCoord) + paneOffset\n\n const bar = propsRef.current.bars[index]\n const anchorPrice = entry.signal !== undefined\n ? (entry.signal.action === 'entry' ? bar?.low : bar?.high)\n : bar?.high\n const yCoord = anchorPrice !== undefined ? candles.priceToCoordinate(anchorPrice as BarPrice) : null\n const y = yCoord ?? param.point?.y ?? 0\n\n const info: MarkerHoverInfo = { x, y, containerWidth: container.clientWidth, containerHeight: container.clientHeight }\n if (entry.signal !== undefined) info.signal = entry.signal\n else if (entry.knowledge !== undefined) info.knowledge = entry.knowledge\n return info\n}\n\n/** 主图叠加(pane 0)与副图(pane 2+,重建式)两套 diff 策略。 */\nfunction syncIndicators(\n chart: IChartApi,\n refs: Map<string, Map<string, ISeriesApi<SeriesType>>>,\n groups: readonly TvIndicatorGroup[],\n timeAxis: readonly UTCTimestamp[],\n recreateAll: boolean,\n basePane: number,\n colorMode?: ColorMode,\n): void {\n const nextKeys = new Set(groups.map(group => group.key))\n\n // 卸载不在场的组(重建模式下全部先卸)。\n for (const [groupKey, seriesMap] of refs) {\n const keep = nextKeys.has(groupKey) && !recreateAll\n if (keep) continue\n for (const series of seriesMap.values()) chart.removeSeries(series)\n refs.delete(groupKey)\n }\n\n groups.forEach((group, groupIndex) => {\n let seriesMap = refs.get(group.key)\n if (seriesMap === undefined) {\n seriesMap = new Map()\n refs.set(group.key, seriesMap)\n // 重建模式:pane 随激活顺序对齐(basePane+i),series 需按 pane 归属重建。\n const paneIndex = recreateAll ? basePane + groupIndex : basePane\n for (const output of group.outputs) {\n seriesMap.set(output.key, createSeries(chart, output, paneIndex))\n }\n }\n for (const output of group.outputs) {\n const series = seriesMap.get(output.key)\n if (series === undefined) continue\n if (output.kind === 'histogram') {\n ;(series as ISeriesApi<'Histogram'>).setData(toHistogramData(output, timeAxis, colorMode))\n } else {\n ;(series as ISeriesApi<'Line' | 'Area'>).setData(toLineData(output, timeAxis))\n }\n }\n })\n}\n\nfunction createSeries(chart: IChartApi, output: IndicatorOutput, paneIndex: number): ISeriesApi<SeriesType> {\n // 主图叠加(pane 0)与蜡烛同住左轴价格刻度;副图 pane 保持各自默认右轴。\n const priceScaleId = paneIndex === 0 ? { priceScaleId: 'left' as const } : {}\n if (output.kind === 'histogram') {\n return chart.addSeries(HistogramSeries, {\n ...priceScaleId,\n color: output.color,\n priceLineVisible: false,\n lastValueVisible: false,\n priceFormat: { type: 'price', precision: 2, minMove: 0.01 },\n }, paneIndex)\n }\n if (output.kind === 'area') {\n return chart.addSeries(AreaSeries, {\n ...priceScaleId,\n lineColor: output.color,\n topColor: output.topColor ?? output.color,\n bottomColor: output.bottomColor ?? 'transparent',\n invertFilledArea: output.invertFilledArea ?? false,\n lineWidth: (output.lineWidth ?? 1.5) as 1 | 2 | 3 | 4,\n priceLineVisible: false,\n lastValueVisible: false,\n crosshairMarkerVisible: false,\n }, paneIndex)\n }\n return chart.addSeries(LineSeries, {\n ...priceScaleId,\n color: output.color,\n lineWidth: (output.lineWidth ?? 1.2) as 1 | 2 | 3 | 4,\n priceLineVisible: false,\n lastValueVisible: false,\n crosshairMarkerVisible: false,\n }, paneIndex)\n}\n\nfunction toLineData(output: IndicatorOutput, timeAxis: readonly UTCTimestamp[]): Array<{ time: UTCTimestamp; value: number }> {\n const data: Array<{ time: UTCTimestamp; value: number }> = []\n for (let index = 0; index < output.values.length; index++) {\n const value = output.values[index]\n const time = timeAxis[index]\n if (value === undefined || !Number.isFinite(value) || time === undefined) continue\n data.push({ time, value })\n }\n return data\n}\n\nfunction toHistogramData(output: IndicatorOutput, timeAxis: readonly UTCTimestamp[], colorMode: ColorMode = 'red-up'): Array<{ time: UTCTimestamp; value: number; color: string }> {\n const palette = getColorPalette(colorMode)\n const data: Array<{ time: UTCTimestamp; value: number; color: string }> = []\n for (let index = 0; index < output.values.length; index++) {\n const value = output.values[index]\n const time = timeAxis[index]\n if (value === undefined || !Number.isFinite(value) || time === undefined) continue\n const color = output.histogramBySign === true\n ? (value >= 0 ? 'rgba(230, 69, 69, 0.75)' : 'rgba(43, 164, 113, 0.75)')\n : output.color\n data.push({ time, value, color })\n }\n return data\n}\n\nfunction applyStretch(chart: IChartApi): void {\n const panes = chart.panes()\n if (panes[0] !== undefined) panes[0].setStretchFactor(4)\n for (let index = 1; index < panes.length; index++) {\n panes[index]?.setStretchFactor(1)\n }\n}\n\nfunction firstTimeDiffers(prev: readonly TvBar[], next: readonly TvBar[]): boolean {\n const common = Math.min(prev.length, next.length)\n for (let index = 0; index < common; index++) {\n if (prev[index]?.time !== next[index]?.time) return true\n }\n return false\n}\n","/**\n * 「发给 Agent」消息文案(纯函数,vitest 直测):\n * 把行情头的快照统计 + 当前 K 线读数 + 已开指标压成一段 agent 可直接\n * 读懂的上下文文本。截图是否附上只影响尾注(图是 model 侧视觉输入,\n * 文本始终自足)。\n *\n * i18n-allow: 默认文案常量与 zh 词典同源(copy 面由词典注入,缺省仅向后兼容)。\n */\nimport { fmtChange, fmtCompact, fmtPercent, fmtPrice, type CompactLocale } from './format.ts'\nimport type { Kline } from './types.ts'\n\nexport interface QuoteMessageInput {\n name?: string\n symbol: string\n marketLabel: string\n intervalLabel: string\n price?: number\n change?: number\n pct?: number\n prevClose?: number\n /** 十字线读数 K 线(未悬停 = 最新一根)。 */\n candle?: Kline\n indicatorTitles: readonly string[]\n withScreenshot: boolean\n}\n\n/** composeQuoteMessage 的文案面(由 QuoteStage 用词典值注入,保持纯函数可测)。 */\nexport interface QuoteMessageCopy {\n /** 开场句(已含 {title} 槽)。 */\n opener: string\n /** 昨收后缀(含 {price} 槽;change 缺失时用)。 */\n prevClose: string\n /** 现价行前缀(后接价格 + 变化括注)。 */\n priceLine: string\n /** 当根 K 线行(各槽已按 en 语序排布,值由调用方填)。 */\n candleLine: string\n /** 已开指标前缀({titles} 槽,分隔符由词典决定)。 */\n indicatorsLine: string\n listSeparator: string\n /** 涨跌括注包裹符(zh 全角()/ en 半角 ()),评审 M3:标点随语言走。 */\n deltaWrap: [string, string]\n /** 昨收前连接符(zh 全角逗号 / en 半角逗号+空格)。 */\n prevSep: string\n /** 紧凑数值单位体系(亿/万 ↔ B/M/K),评审 M3:量槽不再硬编码 zh。 */\n volumeLocale: CompactLocale\n withScreenshotTail: string\n withoutScreenshotTail: string\n}\n\nexport function composeQuoteMessage(input: QuoteMessageInput, copy?: QuoteMessageCopy): string {\n const c = copy ?? ZH_COPY\n const title = [input.name ?? input.symbol, input.symbol, input.marketLabel, input.intervalLabel]\n .filter(part => part !== '')\n .filter((part, index, all) => all.indexOf(part) === index)\n .join(' · ')\n const lines: string[] = [c.opener.replace('{title}', title)]\n if (input.price !== undefined) {\n const delta = input.change !== undefined\n ? `${c.deltaWrap[0]}${fmtChange(input.change)}${input.pct !== undefined ? ` / ${fmtPercent(input.pct)}` : ''}${c.deltaWrap[1]}`\n : ''\n const prev = input.prevClose !== undefined ? `${c.prevSep}${c.prevClose.replace('{price}', fmtPrice(input.prevClose))}` : ''\n lines.push(`${c.priceLine} ${fmtPrice(input.price)}${delta}${prev}`)\n }\n if (input.candle !== undefined) {\n lines.push(\n c.candleLine\n .replace('{open}', fmtPrice(input.candle.open))\n .replace('{high}', fmtPrice(input.candle.high))\n .replace('{low}', fmtPrice(input.candle.low))\n .replace('{close}', fmtPrice(input.candle.close))\n .replace('{volume}', fmtCompact(input.candle.volume, c.volumeLocale)),\n )\n }\n if (input.indicatorTitles.length > 0) lines.push(`${c.indicatorsLine.replace('{titles}', input.indicatorTitles.join(c.listSeparator))}`)\n lines.push(input.withScreenshot ? c.withScreenshotTail : c.withoutScreenshotTail)\n return lines.join('\\n')\n}\n\n/** 默认中文文案(向后兼容:不传 copy 时行为与历史版本一致)。 */\nconst ZH_COPY: QuoteMessageCopy = {\n opener: '看一下我正在看的行情:{title}',\n prevClose: '昨收 {price}',\n priceLine: '现价',\n candleLine: '当根K线 开 {open} 高 {high} 低 {low} 收 {close} 量 {volume}',\n indicatorsLine: '已开启指标:{titles}',\n listSeparator: '、',\n deltaWrap: ['(', ')'],\n prevSep: ',',\n volumeLocale: 'zh',\n withScreenshotTail: '随消息附当前图表截图,请结合分析。',\n withoutScreenshotTail: '请结合当前行情继续分析。',\n}\n","import { useEffect, useMemo, useState } from 'react'\nimport type {\n FinancialIndicatorRow,\n FinancialReportGroup,\n FundamentalsPackage,\n StockFundamentals,\n} from '@dshtrading/api'\nimport { fetchFundamentals } from './api.ts'\nimport { readJson, type SelectionState } from './store.ts'\nimport { scaleLocaleOf } from './format.ts'\nimport type { Instrument, MarketId } from './types.ts'\nimport type { MarketLocaleKey } from './contract.ts'\nimport css from './fundamentals-stage.module.css'\n\nexport type UseStoreState<TState> = <TSelected>(selector: (state: TState) => TSelected) => TSelected\n\nexport interface FundamentalsStageProps {\n /** 行情词典翻译函数(dshtrading.market,shell 注入)。 */\n t: (key: MarketLocaleKey, params?: Record<string, unknown>) => string\n useSelection?: UseStoreState<SelectionState>\n}\n\n/** 数值紧凑单位(zh = 亿/万 中文惯例;en = B/M/K)。 */\nexport type NumberScaleLocale = 'zh' | 'en'\n\n/** locale-aware 大数缩写:formatVal/formatCompact 等共用(en 走 B/M/K,与\n * format.ts fmtCompact 的 zh 分支同口径换算基准)。zh 千亿档单列(评审 L3:\n * 1e11 归入万亿会把 5e11 显示成 0.50 万亿,与主流行情软件的千亿档不符);\n * zh/en 对称去尾零。 */\nexport function formatScaled(value: number | undefined, locale: NumberScaleLocale, decimals = 2): string {\n if (value === undefined || Number.isNaN(value)) return '--'\n const abs = Math.abs(value)\n const trim = (text: string): string => text.includes('.') ? text.replace(/\\.?0+$/, '') : text\n if (locale === 'zh') {\n if (abs >= 1e12) return `${trim((value / 1e12).toFixed(decimals))} 万亿` // i18n-allow: zh 数值单位常量(locale 数据)\n if (abs >= 1e11) return `${trim((value / 1e11).toFixed(decimals))} 千亿` // i18n-allow: zh 数值单位常量(locale 数据)\n if (abs >= 1e8) return `${trim((value / 1e8).toFixed(decimals))} 亿` // i18n-allow: zh 数值单位常量(locale 数据)\n if (abs >= 1e4) return `${trim((value / 1e4).toFixed(decimals))} 万` // i18n-allow: zh 数值单位常量(locale 数据)\n return Number.isInteger(value) ? String(value) : value.toFixed(decimals)\n }\n if (abs >= 1e12) return `${trim((value / 1e12).toFixed(decimals))}T`\n if (abs >= 1e9) return `${trim((value / 1e9).toFixed(decimals))}B`\n if (abs >= 1e6) return `${trim((value / 1e6).toFixed(decimals))}M`\n if (abs >= 1e3) return `${trim((value / 1e3).toFixed(decimals))}K`\n return Number.isInteger(value) ? String(value) : value.toFixed(decimals)\n}\n\nfunction formatVal(val: number | undefined, unit?: string, isRatio = false, locale: NumberScaleLocale = 'zh'): string {\n if (val === undefined || Number.isNaN(val)) return '--'\n if (isRatio || unit === '%') return `${val.toFixed(2)}%`\n return formatScaled(val, locale)\n}\n\nexport type NavSubCategory =\n | 'financials_key'\n | 'financials_income'\n | 'financials_balance'\n | 'financials_cashflow'\n | 'forecast'\n | 'reports'\n | 'valuation'\n | 'biz_segments'\n | 'biz_efficiency'\n | 'smart_shareholders'\n | 'smart_insider'\n | 'smart_institutional'\n | 'profile_overview'\n | 'profile_executives'\n | 'action_dividends'\n | 'action_buybacks'\n | 'action_splits'\n\nfunction formatChange(change: number | undefined): { text: string; cls: string } {\n if (change === undefined || Number.isNaN(change)) return { text: '--', cls: css.valNeutral }\n const sign = change > 0 ? '+' : ''\n const text = `${sign}${change.toFixed(2)}%`\n if (change > 0) return { text, cls: css.valUp }\n if (change < 0) return { text, cls: css.valDown }\n return { text, cls: css.valNeutral }\n}\n\nexport function FundamentalsStage({ t, useSelection }: FundamentalsStageProps) {\n // 数值单位 locale 跟随界面语言(词典哨兵键判定):zh → 亿/万,en → B/M/K。\n const numLocale = scaleLocaleOf(t)\n const fv = (val: number | undefined, unit?: string, isRatio = false): string => formatVal(val, unit, isRatio, numLocale)\n /** CNY 大额金额 → locale 模板值:数值侧换算(zh /1e8 亿,en /1e6 M),\n * 词典模板只挂单位后缀(fund.unit.yiCny = '¥{n}亿' / '¥{n}M')——单位换算\n * 不靠模板字符串拼接(评审 M1:'¥{n}00M' 曾把金额错示 100 倍)。 */\n const yiCny = (amount: number): string => t('fund.unit.yiCny', {\n n: (amount / (numLocale === 'zh' ? 1e8 : 1e6)).toFixed(2),\n })\n /** 持股均价:zh /1e4 万,en /1e3 K(fund.unit.wanCny = '¥{n}万' / '¥{n}K')。 */\n const wanCny = (amount: number): string => t('fund.unit.wanCny', {\n n: (amount / (numLocale === 'zh' ? 1e4 : 1e3)).toFixed(2),\n })\n /** 户数:zh /1e4 万户,en /1e3 K accounts(fund.unit.holders)。 */\n const holdersWan = (count: number): string => t('fund.unit.holders', {\n n: (count / (numLocale === 'zh' ? 1e4 : 1e3)).toFixed(2),\n })\n const hookInstrument = useSelection?.(s => s.instrument)\n // localStorage 镜像只在缺失 hook 面时读一次(useEffect 每渲染 JSON.parse 是浪费)。\n const [storedInstrument] = useState(() => readJson<Instrument | null>('dshtrading.selection.v1', null))\n const instrument = hookInstrument ?? storedInstrument\n const market = (instrument?.market || 'cn') as MarketId\n const symbol = instrument?.symbol || ''\n\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<FundamentalsPackage | undefined>(undefined)\n /** 请求代号:竞态守卫 + 错误路径归因(慢响应不得覆盖新标的的空态)。 */\n const [activeNav, setActiveNav] = useState<NavSubCategory>('financials_key')\n const [selectedIndicatorId, setSelectedIndicatorId] = useState<string>('bps')\n const [showYoY, setShowYoY] = useState(true)\n const [collapsedGroups, setCollapsedGroups] = useState<Record<string, boolean>>({})\n const [segmentFilter, setSegmentFilter] = useState<'all' | 'product' | 'industry' | 'region'>('all')\n\n useEffect(() => {\n if (!symbol) return\n let cancelled = false\n // 换标的立即清场:错误路径(桥业务错误/网络失败)绝不能保留上一个\n // 标的的数据——交易语境下「B 的代码显示 A 的财务」是致命误导。\n setData(undefined)\n setSelectedIndicatorId('bps')\n setCollapsedGroups({})\n setSegmentFilter('all')\n setLoading(true)\n\n fetchFundamentals(market, symbol)\n .then((pkg) => {\n if (cancelled) return\n setData(pkg)\n setLoading(false)\n const firstRow = pkg?.matrix?.groups?.[0]?.rows?.[0]\n if (firstRow) setSelectedIndicatorId(firstRow.id)\n })\n .catch(() => {\n // 失败 → 保持空态(setData(undefined) 已在上面执行),只停 spinner。\n if (!cancelled) setLoading(false)\n })\n\n return () => { cancelled = true }\n }, [market, symbol])\n\n const matrix = data?.matrix\n const stock = (data?.stock ?? data) as unknown as StockFundamentals\n const crypto = data?.crypto\n const profile = data?.profile\n const forecast = data?.forecast\n const reports = data?.reports\n const mainOperations = data?.mainOperations\n const shareholders = data?.shareholders\n const dividends = data?.dividends\n const splits = data?.splits\n const buybacks = data?.buybacks\n const holderSummary = data?.holderSummary\n const efficiency = data?.efficiency\n const insiderTrades = data?.insiderTrades\n const institutionalHoldings = data?.institutionalHoldings\n\n // 财务大类下的 4 个报表科目过滤\n const displayGroups = useMemo<FinancialReportGroup[]>(() => {\n if (!matrix?.groups) return []\n if (activeNav === 'financials_key') return matrix.groups\n if (activeNav === 'financials_income') {\n return matrix.groups.filter(g => g.id === 'growth' || g.id === 'profitability')\n }\n if (activeNav === 'financials_balance') {\n return matrix.groups.filter(g => g.id === 'cash_debt' || g.id === 'per_share')\n }\n if (activeNav === 'financials_cashflow') {\n return matrix.groups.filter(g => g.id === 'cash_debt' || g.id === 'per_share')\n .map(g => ({\n ...g,\n rows: g.rows.filter(r => r.id.includes('cash') || r.id.includes('flow')),\n }))\n .filter(g => g.rows.length > 0)\n }\n return matrix.groups\n }, [matrix, activeNav])\n\n const switchNav = (nav: NavSubCategory) => {\n setActiveNav(nav)\n if (!matrix?.groups) return\n let targetRows: FinancialIndicatorRow[] = []\n if (nav === 'financials_income') {\n targetRows = matrix.groups.find(g => g.id === 'growth')?.rows ?? []\n } else if (nav === 'financials_balance') {\n targetRows = matrix.groups.find(g => g.id === 'cash_debt')?.rows ?? []\n } else if (nav === 'financials_cashflow') {\n const perShare = matrix.groups.find(g => g.id === 'per_share')\n targetRows = perShare?.rows.filter(r => r.id.includes('cash')) ?? []\n } else if (nav === 'financials_key') {\n targetRows = matrix.groups[0]?.rows ?? []\n }\n if (targetRows.length > 0 && targetRows[0]) {\n setSelectedIndicatorId(targetRows[0].id)\n }\n }\n\n // 查出当前上方图表正在绘制的指标行\n const activeIndicatorRow = useMemo<FinancialIndicatorRow | undefined>(() => {\n if (!displayGroups || displayGroups.length === 0) return undefined\n for (const group of displayGroups) {\n const found = group.rows.find(r => r.id === selectedIndicatorId)\n if (found) return found\n }\n return displayGroups[0]?.rows[0]\n }, [displayGroups, selectedIndicatorId])\n\n const toggleGroup = (groupId: string) => {\n setCollapsedGroups(prev => ({ ...prev, [groupId]: !prev[groupId] }))\n }\n\n // 主营构成过滤\n const filteredSegments = useMemo(() => {\n if (!mainOperations) return []\n if (segmentFilter === 'all') return mainOperations\n return mainOperations.filter(s => s.classification === segmentFilter)\n }, [mainOperations, segmentFilter])\n\n if (!symbol) {\n return (\n <div className={css.emptyState}>\n <span>{t('fund.page.empty')}</span>\n </div>\n )\n }\n\n if (loading && !data) {\n return (\n <div className={css.loadingState}>\n <div className={css.spinner} />\n <span>{t('fund.page.loading', { symbol })}</span>\n </div>\n )\n }\n\n return (\n <div className={css.root} data-dshtrading-fundamentals=\"\">\n {/* 顶部标的报价与核心估值指标栏 */}\n <div className={css.topBar}>\n <div className={css.symbolInfo}>\n <span className={css.symbolCode}>{symbol}</span>\n <span className={css.symbolName}>{stock?.name ?? profile?.name ?? symbol}</span>\n <span className={css.marketBadge}>{market}</span>\n </div>\n <div className={css.valuationPills}>\n {stock?.peTtm !== undefined && (\n <div className={css.pillItem}>\n <span className={css.pillLabel}>{t('fund.pill.peTtm')}</span>\n <span className={css.pillValue}>{stock.peTtm.toFixed(2)}</span>\n </div>\n )}\n {stock?.peDynamic !== undefined && (\n <div className={css.pillItem}>\n <span className={css.pillLabel}>{t('fund.pill.peDynamic')}</span>\n <span className={css.pillValue}>{stock.peDynamic.toFixed(2)}</span>\n </div>\n )}\n {stock?.pb !== undefined && (\n <div className={css.pillItem}>\n <span className={css.pillLabel}>{t('fund.pill.pb')}</span>\n <span className={css.pillValue}>{stock.pb.toFixed(2)}</span>\n </div>\n )}\n {stock?.marketCap !== undefined && (\n <div className={css.pillItem}>\n <span className={css.pillLabel}>{t('fund.pill.marketCap')}</span>\n <span className={css.pillValue}>{fv(stock.marketCap)}</span>\n </div>\n )}\n {stock?.dividendYield !== undefined && (\n <div className={css.pillItem}>\n <span className={css.pillLabel}>{t('fund.pill.dividendYield')}</span>\n <span className={css.pillValue}>{(stock.dividendYield * (stock.dividendYield < 1 ? 100 : 1)).toFixed(2)}%</span>\n </div>\n )}\n {stock?.turnoverRate !== undefined && (\n <div className={css.pillItem}>\n <span className={css.pillLabel}>{t('fund.pill.turnover')}</span>\n <span className={css.pillValue}>{stock.turnoverRate.toFixed(2)}%</span>\n </div>\n )}\n {crypto?.marketCapUsd !== undefined && (\n <div className={css.pillItem}>\n <span className={css.pillLabel}>{t('fund.pill.floatCap')}</span>\n <span className={css.pillValue}>${fv(crypto.marketCapUsd)}</span>\n </div>\n )}\n {crypto?.rank !== undefined && (\n <div className={css.pillItem}>\n <span className={css.pillLabel}>{t('fund.pill.rank')}</span>\n <span className={css.pillValue}>#{crypto.rank}</span>\n </div>\n )}\n </div>\n </div>\n\n {/* 主工作台:左侧 8 大分类导航树 + 右侧多视图内容区 */}\n <div className={css.mainContainer}>\n {/* 左侧富途原生 8 大分类导航树 */}\n <div className={css.navTree} role=\"tablist\">\n {/* 1. 财务 */}\n <div className={css.navGroupTitle}>\n <span className={css.navGroupDot} />\n <span>{t('fund.nav.financials')}</span>\n </div>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'financials_key'}\n onClick={() => switchNav('financials_key')}\n >\n {activeNav === 'financials_key' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.key')}</span>\n </button>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'financials_income'}\n onClick={() => switchNav('financials_income')}\n >\n {activeNav === 'financials_income' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.income')}</span>\n </button>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'financials_balance'}\n onClick={() => switchNav('financials_balance')}\n >\n {activeNav === 'financials_balance' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.balance')}</span>\n </button>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'financials_cashflow'}\n onClick={() => switchNav('financials_cashflow')}\n >\n {activeNav === 'financials_cashflow' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.cashflow')}</span>\n </button>\n\n {/* 2. 预测 */}\n <div className={css.navGroupTitle} style={{ marginTop: 6 }}>\n <span className={css.navGroupDot} />\n <span>{t('fund.nav.forecast')}</span>\n </div>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'forecast'}\n onClick={() => switchNav('forecast')}\n >\n {activeNav === 'forecast' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.forecastItem')}</span>\n </button>\n\n {/* 3. 晨星研报 */}\n <div className={css.navGroupTitle} style={{ marginTop: 6 }}>\n <span className={css.navGroupDot} />\n <span>{t('fund.nav.reports')}</span>\n </div>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'reports'}\n onClick={() => switchNav('reports')}\n >\n {activeNav === 'reports' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.reportsItem')}</span>\n </button>\n\n {/* 4. 估值 */}\n <div className={css.navGroupTitle} style={{ marginTop: 6 }}>\n <span className={css.navGroupDot} />\n <span>{t('fund.nav.valuation')}</span>\n </div>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'valuation'}\n onClick={() => switchNav('valuation')}\n >\n {activeNav === 'valuation' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.valuationItem')}</span>\n </button>\n\n {/* 5. 经营分析 */}\n <div className={css.navGroupTitle} style={{ marginTop: 6 }}>\n <span className={css.navGroupDot} />\n <span>{t('fund.nav.biz')}</span>\n </div>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'biz_segments'}\n onClick={() => switchNav('biz_segments')}\n >\n {activeNav === 'biz_segments' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.bizSegments')}</span>\n </button>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'biz_efficiency'}\n onClick={() => switchNav('biz_efficiency')}\n >\n {activeNav === 'biz_efficiency' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.bizEfficiency')}</span>\n </button>\n\n {/* 6. 聪明钱 */}\n <div className={css.navGroupTitle} style={{ marginTop: 6 }}>\n <span className={css.navGroupDot} />\n <span>{t('fund.nav.smartMoney')}</span>\n </div>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'smart_shareholders'}\n onClick={() => switchNav('smart_shareholders')}\n >\n {activeNav === 'smart_shareholders' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.shareholders')}</span>\n </button>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'smart_insider'}\n onClick={() => switchNav('smart_insider')}\n >\n {activeNav === 'smart_insider' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.insider')}</span>\n </button>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'smart_institutional'}\n onClick={() => switchNav('smart_institutional')}\n >\n {activeNav === 'smart_institutional' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.institutional')}</span>\n </button>\n\n {/* 7. 简况 */}\n <div className={css.navGroupTitle} style={{ marginTop: 6 }}>\n <span className={css.navGroupDot} />\n <span>{t('fund.nav.profile')}</span>\n </div>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'profile_overview'}\n onClick={() => switchNav('profile_overview')}\n >\n {activeNav === 'profile_overview' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.profileOverview')}</span>\n </button>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'profile_executives'}\n onClick={() => switchNav('profile_executives')}\n >\n {activeNav === 'profile_executives' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.profileExecutives')}</span>\n </button>\n\n {/* 8. 公司行动 */}\n <div className={css.navGroupTitle} style={{ marginTop: 6 }}>\n <span className={css.navGroupDot} />\n <span>{t('fund.nav.actions')}</span>\n </div>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'action_dividends'}\n onClick={() => switchNav('action_dividends')}\n >\n {activeNav === 'action_dividends' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.dividends')}</span>\n </button>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'action_buybacks'}\n onClick={() => switchNav('action_buybacks')}\n >\n {activeNav === 'action_buybacks' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.buybacks')}</span>\n </button>\n <button\n type=\"button\"\n className={css.navItem}\n data-active={activeNav === 'action_splits'}\n onClick={() => switchNav('action_splits')}\n >\n {activeNav === 'action_splits' && <span className={css.navDotActive} />}\n <span>{t('fund.nav.splits')}</span>\n </button>\n </div>\n\n {/* 右侧主工作台内容区 */}\n <div className={css.stageContent}>\n {/* 1. 财务大类视图(关键指标 / 利润表 / 资产负债表 / 现金流量表) */}\n {(activeNav === 'financials_key' || activeNav === 'financials_income' || activeNav === 'financials_balance' || activeNav === 'financials_cashflow') && (\n <>\n {/* 上方交互趋势图卡片 */}\n {matrix && matrix.periods.length > 0 && activeIndicatorRow && (\n <div className={css.chartCard}>\n <div className={css.chartHeader}>\n <div className={css.reportLink}>\n <span className={css.reportIcon}>📄</span>\n <span>{matrix.latestReportTitle ?? t('fund.chart.reportTitle', { period: matrix.periods[matrix.periods.length - 1] ?? '' })} ></span>\n </div>\n <div className={css.chartControls}>\n <div\n className={css.controlBadge}\n onClick={() => setShowYoY(v => !v)}\n role=\"button\"\n tabIndex={0}\n >\n <span>{t('fund.chart.showYoy', { state: showYoY ? t('fund.switch.on') : t('fund.switch.off') })}</span>\n </div>\n </div>\n </div>\n\n <div className={css.chartLegend}>\n <div className={css.legendBar}>\n <span className={css.legendBarBox} />\n <span>{activeIndicatorRow.name} {activeIndicatorRow.unit ? `(${activeIndicatorRow.unit})` : ''}</span>\n </div>\n {showYoY && (\n <div className={css.legendLine}>\n <span className={css.legendLineBox} />\n <span>{t('fund.chart.yoyLegend')}</span>\n </div>\n )}\n </div>\n\n {/* SVG 柱状图 + 同比折线联动 */}\n <FundamentalsSvgChart\n row={activeIndicatorRow}\n periods={matrix.periods}\n showYoY={showYoY}\n />\n </div>\n )}\n\n {/* 下方多期财务指标矩阵表卡片 */}\n {matrix && matrix.periods.length > 0 ? (\n <div className={css.tableCard}>\n <div className={css.tableHeaderBar}>\n <span>{t('fund.matrix.currency', { currency: matrix.currency })}</span>\n <span>{t('fund.matrix.clickHint')}</span>\n </div>\n <div className={css.tableScrollWrap}>\n <table className={css.matrixTable}>\n <thead>\n <tr>\n <th>{t('fund.matrix.indicator')}</th>\n {matrix.periods.map(p => (\n <th key={p}>{p}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {displayGroups.map(group => {\n const isCollapsed = collapsedGroups[group.id] === true\n return (\n <GroupFragment\n key={group.id}\n group={group}\n periods={matrix.periods}\n isCollapsed={isCollapsed}\n selectedIndicatorId={selectedIndicatorId}\n onToggleGroup={() => toggleGroup(group.id)}\n onSelectIndicator={(id) => setSelectedIndicatorId(id)}\n formatValue={fv}\n />\n )\n })}\n </tbody>\n </table>\n </div>\n </div>\n ) : (\n <div className={css.infoCard}>\n <span className={css.cardTitle}>{t('fund.matrix.emptyTitle')}</span>\n <p className={css.descText}>\n {t('fund.matrix.emptyHint')}\n </p>\n </div>\n )}\n </>\n )}\n\n {/* 2. 预测 Tab */}\n {activeNav === 'forecast' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.forecast.title')}</span>\n <span className={css.cardSubNote}>{t('fund.forecast.subtitle')}</span>\n </div>\n\n {forecast?.items && forecast.items.length > 0 ? (\n <>\n <div className={css.forecastGrid}>\n <div className={css.forecastStatBox}>\n <span className={css.gridLabel}>{t('fund.forecast.epsCurrent')}</span>\n <span className={css.pillValue} style={{ fontSize: 18, color: 'var(--futu-accent)' }}>\n {forecast.epsCurrentYear !== undefined ? `¥${forecast.epsCurrentYear.toFixed(2)}` : '--'}\n </span>\n </div>\n <div className={css.forecastStatBox}>\n <span className={css.gridLabel}>{t('fund.forecast.epsNext')}</span>\n <span className={css.pillValue} style={{ fontSize: 18, color: 'var(--futu-orange)' }}>\n {forecast.epsNextYear !== undefined ? `¥${forecast.epsNextYear.toFixed(2)}` : '--'}\n </span>\n </div>\n <div className={css.forecastStatBox}>\n <span className={css.gridLabel}>{t('fund.forecast.targetPrice')}</span>\n <span className={css.pillValue} style={{ fontSize: 18 }}>\n {forecast.targetPriceAvg !== undefined ? `¥${forecast.targetPriceAvg.toFixed(2)}` : '--'}\n </span>\n </div>\n <div className={css.forecastStatBox}>\n <span className={css.gridLabel}>{t('fund.forecast.orgCount')}</span>\n <span className={css.pillValue} style={{ fontSize: 18 }}>\n {forecast.totalOrgs ?? forecast.items.length} {t('fund.unit.orgs')}\n </span>\n </div>\n </div>\n\n <div className={css.tableScrollWrap} style={{ marginTop: 14 }}>\n <table className={css.matrixTable}>\n <thead>\n <tr>\n <th>{t('fund.forecast.col.year')}</th>\n <th>{t('fund.forecast.col.eps')}</th>\n <th>{t('fund.forecast.col.revenue')}</th>\n <th>{t('fund.forecast.col.netProfit')}</th>\n <th>{t('fund.forecast.col.orgs')}</th>\n </tr>\n </thead>\n <tbody>\n {forecast.items.map(item => (\n <tr key={item.year} className={css.indicatorRow}>\n <td><strong>{item.year}</strong></td>\n <td style={{ color: 'var(--futu-accent)', fontWeight: 600 }}>¥{item.eps.toFixed(2)}</td>\n <td>{fv(item.revenue * 100_000_000)}</td>\n <td>{fv(item.netProfit * 100_000_000)}</td>\n <td>{item.orgCount ?? '--'} {t('fund.unit.orgs')}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </>\n ) : (\n <p className={css.descText}>\n {t('fund.forecast.empty')}\n </p>\n )}\n </div>\n )}\n\n {/* 3. 晨星研报 / 研报 Tab */}\n {activeNav === 'reports' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.reports.title')}</span>\n <span className={css.cardSubNote}>{t('fund.reports.subtitle')}</span>\n </div>\n\n {reports && reports.length > 0 ? (\n <div className={css.reportsList}>\n {reports.map(rep => (\n <div key={rep.id} className={css.reportItemCard}>\n <div className={css.reportTopRow}>\n <span className={css.reportOrg}>{rep.orgName}</span>\n {rep.rating && <span className={css.reportRating}>{rep.rating}</span>}\n <span className={css.reportDate}>{rep.publishDate}</span>\n </div>\n <div className={css.reportTitle}>\n {rep.url ? (\n <a href={rep.url} target=\"_blank\" rel=\"noreferrer\" style={{ color: 'inherit', textDecoration: 'none' }}>\n {rep.title} ↗\n </a>\n ) : rep.title}\n </div>\n {rep.summary && <p className={css.reportSummary}>{rep.summary}</p>}\n {rep.author && <div className={css.reportAuthor}>{t('fund.reports.analyst', { author: rep.author })}</div>}\n </div>\n ))}\n </div>\n ) : (\n <p className={css.descText}>\n {t('fund.reports.empty')}\n </p>\n )}\n </div>\n )}\n\n {/* 4. 估值 Tab */}\n {activeNav === 'valuation' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.valuation.title')}</span>\n <span className={css.cardSubNote}>{t('fund.valuation.subtitle')}</span>\n </div>\n\n {/* 52 周区间与 PE 评注:价格未进入本组件(基本面快照无现价字段),\n 不渲染位置指针——不做 PE 分档假水位(2026-09-02 审查整改)。 */}\n {stock?.fiftyTwoWeekLow !== undefined && stock?.fiftyTwoWeekHigh !== undefined && (\n <div className={css.rangeGaugeWrap}>\n <div className={css.rangePointerInfo}>\n <span>{t('fund.valuation.range52w')}</span>\n <span>\n {stock.fiftyTwoWeekLow.toFixed(2)} ~ {stock.fiftyTwoWeekHigh.toFixed(2)}\n </span>\n </div>\n <div className={css.rangeGaugeLabels}>\n <span>{t('fund.valuation.low52w', { price: stock.fiftyTwoWeekLow.toFixed(2) })}</span>\n <span>\n {t('fund.valuation.peNote', { note: stock.peTtm !== undefined ? (stock.peTtm < 15 ? t('fund.valuation.undervalued') : stock.peTtm < 30 ? t('fund.valuation.fair') : t('fund.valuation.overvalued')) : t('fund.valuation.assessing') })}\n </span>\n <span>{t('fund.valuation.high52w', { price: stock.fiftyTwoWeekHigh.toFixed(2) })}</span>\n </div>\n </div>\n )}\n\n <div className={css.gridCols}>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.valuation.peTtm')}</span>\n <span className={css.gridValue}>{stock?.peTtm !== undefined ? stock.peTtm.toFixed(2) : '--'}</span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.valuation.peDynamic')}</span>\n <span className={css.gridValue}>{stock?.peDynamic !== undefined ? stock.peDynamic.toFixed(2) : '--'}</span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.valuation.peStatic')}</span>\n <span className={css.gridValue}>{stock?.peStatic !== undefined ? stock.peStatic.toFixed(2) : '--'}</span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.valuation.pb')}</span>\n <span className={css.gridValue}>{stock?.pb !== undefined ? stock.pb.toFixed(2) : '--'}</span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.valuation.marketCap')}</span>\n <span className={css.gridValue}>{fv(stock?.marketCap)}</span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.valuation.floatCap')}</span>\n <span className={css.gridValue}>{fv(stock?.floatMarketCap)}</span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.valuation.dividendYield')}</span>\n <span className={css.gridValue}>{stock?.dividendYield !== undefined ? `${(stock.dividendYield * (stock.dividendYield < 1 ? 100 : 1)).toFixed(2)}%` : '--'}</span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.valuation.turnover')}</span>\n <span className={css.gridValue}>{stock?.turnoverRate !== undefined ? `${stock.turnoverRate.toFixed(2)}%` : '--'}</span>\n </div>\n </div>\n </div>\n )}\n\n {/* 5. 经营分析 - 主营构成 */}\n {activeNav === 'biz_segments' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.segments.title')}</span>\n <span className={css.cardSubNote}>{t('fund.segments.subtitle')}</span>\n </div>\n\n <div className={css.tabButtonGroup} style={{ marginBottom: 12 }}>\n <button\n type=\"button\"\n className={css.segmentFilterBtn}\n data-active={segmentFilter === 'all'}\n onClick={() => setSegmentFilter('all')}\n >\n {t('fund.segments.all')}\n </button>\n <button\n type=\"button\"\n className={css.segmentFilterBtn}\n data-active={segmentFilter === 'product'}\n onClick={() => setSegmentFilter('product')}\n >\n {t('fund.segments.byProduct')}\n </button>\n <button\n type=\"button\"\n className={css.segmentFilterBtn}\n data-active={segmentFilter === 'industry'}\n onClick={() => setSegmentFilter('industry')}\n >\n {t('fund.segments.byIndustry')}\n </button>\n <button\n type=\"button\"\n className={css.segmentFilterBtn}\n data-active={segmentFilter === 'region'}\n onClick={() => setSegmentFilter('region')}\n >\n {t('fund.segments.byRegion')}\n </button>\n </div>\n\n {filteredSegments.length > 0 ? (\n <div className={css.tableScrollWrap}>\n <table className={css.matrixTable}>\n <thead>\n <tr>\n <th>{t('fund.segments.col.segment')}</th>\n <th>{t('fund.segments.col.revenue')}</th>\n <th>{t('fund.segments.col.revenueRatio')}</th>\n <th>{t('fund.segments.col.profit')}</th>\n <th>{t('fund.segments.col.grossMargin')}</th>\n </tr>\n </thead>\n <tbody>\n {filteredSegments.map(seg => (\n <tr key={seg.segmentName + seg.classification} className={css.indicatorRow}>\n <td><strong>{seg.segmentName}</strong></td>\n <td>{fv(seg.revenue)}</td>\n <td>\n <div className={css.ratioBarWrap}>\n <div className={css.ratioBar} style={{ width: `${Math.min(100, Math.max(2, seg.revenueRatio))}%` }} />\n <span>{seg.revenueRatio.toFixed(2)}%</span>\n </div>\n </td>\n <td>{seg.grossProfit ? fv(seg.grossProfit) : '--'}</td>\n <td style={{ color: seg.grossMargin && seg.grossMargin > 0 ? 'var(--futu-up)' : 'inherit' }}>\n {seg.grossMargin ? `${seg.grossMargin.toFixed(2)}%` : '--'}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n ) : (\n <p className={css.descText}>\n {t('fund.segments.empty')}\n </p>\n )}\n </div>\n )}\n\n {/* 5. 经营分析 - 经营效率 */}\n {activeNav === 'biz_efficiency' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.efficiency.title')}</span>\n <span className={css.cardSubNote}>{t('fund.efficiency.subtitle')}</span>\n </div>\n <div className={css.gridCols}>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.efficiency.inventoryDays')}</span>\n <span className={css.gridValue} style={{ color: 'var(--futu-accent)', fontWeight: 600 }}>\n {efficiency?.inventoryTurnoverDays ? t('fund.unit.days', { n: efficiency.inventoryTurnoverDays.toFixed(1) }) : '--'}\n </span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.efficiency.receivableDays')}</span>\n <span className={css.gridValue} style={{ color: 'var(--futu-accent)', fontWeight: 600 }}>\n {efficiency?.accountsReceivableTurnoverDays ? t('fund.unit.days', { n: efficiency.accountsReceivableTurnoverDays.toFixed(1) }) : '--'}\n </span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.efficiency.operatingCycle')}</span>\n <span className={css.gridValue}>\n {efficiency?.operatingCycleDays ? t('fund.unit.days', { n: efficiency.operatingCycleDays.toFixed(1) }) : '--'}\n </span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.efficiency.assetTurnover')}</span>\n <span className={css.gridValue}>\n {efficiency?.totalAssetTurnover ? t('fund.unit.times', { n: efficiency.totalAssetTurnover.toFixed(2) }) : '--'}\n </span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.efficiency.grossMargin')}</span>\n <span className={css.gridValue}>\n {efficiency?.grossProfitMargin ? `${efficiency.grossProfitMargin.toFixed(2)}%` : '--'}\n </span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.efficiency.netMargin')}</span>\n <span className={css.gridValue}>\n {efficiency?.netProfitMargin ? `${efficiency.netProfitMargin.toFixed(2)}%` : '--'}\n </span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.efficiency.currentRatio')}</span>\n <span className={css.gridValue}>\n {efficiency?.currentRatio ? efficiency.currentRatio.toFixed(2) : '--'}\n </span>\n </div>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.efficiency.quickRatio')}</span>\n <span className={css.gridValue}>\n {efficiency?.quickRatio ? efficiency.quickRatio.toFixed(2) : '--'}\n </span>\n </div>\n </div>\n <p className={css.descText} style={{ marginTop: 14 }}>\n {efficiency?.inventoryTurnoverDays !== undefined && efficiency?.accountsReceivableTurnoverDays !== undefined ? (\n t('fund.efficiency.summary', {\n inventory: efficiency.inventoryTurnoverDays.toFixed(1),\n receivable: efficiency.accountsReceivableTurnoverDays.toFixed(1),\n cycle: efficiency.operatingCycleDays !== undefined ? efficiency.operatingCycleDays.toFixed(1) : '--',\n })\n ) : (\n t('fund.efficiency.empty')\n )}\n </p>\n </div>\n )}\n\n {/* 6. 聪明钱 - 股东持股 */}\n {activeNav === 'smart_shareholders' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.holders.title')}</span>\n <span className={css.cardSubNote}>{t('fund.holders.subtitle')}</span>\n </div>\n\n {holderSummary && (\n <div className={css.forecastGrid} style={{ marginBottom: 14 }}>\n <div className={css.forecastStatBox}>\n <span className={css.gridLabel}>{t('fund.holders.totalHolders')}</span>\n <span className={css.pillValue} style={{ fontSize: 16, color: 'var(--futu-accent)' }}>\n {holderSummary.totalHolders ? holdersWan(holderSummary.totalHolders) : '--'}\n </span>\n </div>\n <div className={css.forecastStatBox}>\n <span className={css.gridLabel}>{t('fund.holders.avgShares')}</span>\n <span className={css.pillValue} style={{ fontSize: 16 }}>\n {holderSummary.avgFreeShares ? t('fund.unit.shares', { n: holderSummary.avgFreeShares.toLocaleString() }) : '--'}\n </span>\n </div>\n <div className={css.forecastStatBox}>\n <span className={css.gridLabel}>{t('fund.holders.avgValue')}</span>\n <span className={css.pillValue} style={{ fontSize: 16 }}>\n {holderSummary.avgHoldAmount ? wanCny(holderSummary.avgHoldAmount) : '--'}\n </span>\n </div>\n <div className={css.forecastStatBox}>\n <span className={css.gridLabel}>{t('fund.holders.concentration')}</span>\n <span className={css.pillValue} style={{ fontSize: 16, color: 'var(--futu-orange)' }}>\n {holderSummary.concentration ?? t('fund.holders.moderate')}\n </span>\n </div>\n </div>\n )}\n {shareholders && shareholders.length > 0 ? (\n <div className={css.tableScrollWrap}>\n <table className={css.matrixTable}>\n <thead>\n <tr>\n <th style={{ width: 40 }}>{t('fund.holders.col.rank')}</th>\n <th>{t('fund.holders.col.name')}</th>\n <th>{t('fund.holders.col.shares')}</th>\n <th>{t('fund.holders.col.ratio')}</th>\n <th>{t('fund.holders.col.change')}</th>\n </tr>\n </thead>\n <tbody>\n {shareholders.map((sh, idx) => {\n const isUp = sh.change?.includes('+') || (Number(sh.change) > 0)\n const isDown = sh.change?.includes('-') || (Number(sh.change) < 0)\n return (\n <tr key={sh.name}>\n <td><span className={css.holderRank}>{idx + 1}</span></td>\n <td className={css.holderName}>{sh.name}</td>\n <td>{sh.shares !== undefined ? fv(sh.shares) : '--'}</td>\n <td>{sh.ratio !== undefined ? `${sh.ratio.toFixed(2)}%` : '--'}</td>\n <td>\n {isUp ? (\n <span className={css.changeTagUp}>{sh.change}</span>\n ) : isDown ? (\n <span className={css.changeTagDown}>{sh.change}</span>\n ) : (\n <span className={css.changeTagFlat}>{sh.change || t('fund.holders.unchanged')}</span>\n )}\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n ) : (\n <p className={css.descText}>\n {t('fund.holders.empty')}\n </p>\n )}\n </div>\n )}\n\n {/* 6. 聪明钱 - 股东增减持 */}\n {activeNav === 'smart_insider' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.insider.title')}</span>\n <span className={css.cardSubNote}>{t('fund.insider.subtitle')}</span>\n </div>\n {insiderTrades && insiderTrades.length > 0 ? (\n <div className={css.tableScrollWrap}>\n <table className={css.matrixTable}>\n <thead>\n <tr>\n <th>{t('fund.insider.col.holder')}</th>\n <th>{t('fund.insider.col.type')}</th>\n <th>{t('fund.insider.col.shares')}</th>\n <th>{t('fund.insider.col.ratio')}</th>\n <th>{t('fund.insider.col.date')}</th>\n </tr>\n </thead>\n <tbody>\n {insiderTrades.map((it, idx) => {\n const isUp = it.changeType.includes('+') || it.changeType === '新进' || it.changeType.includes('增') // i18n-allow: 数据源中文枚举值匹配谓词,非 UI 文案\n const isDown = it.changeType.includes('-') || it.changeType.includes('减') // i18n-allow: 数据源中文枚举值匹配谓词,非 UI 文案\n return (\n <tr key={it.holderName + idx} className={css.indicatorRow}>\n <td className={css.holderName}>{it.holderName}</td>\n <td>\n {isUp ? (\n <span className={css.changeTagUp}>{it.changeType}</span>\n ) : isDown ? (\n <span className={css.changeTagDown}>{it.changeType}</span>\n ) : (\n <span className={css.changeTagFlat}>{it.changeType}</span>\n )}\n </td>\n <td>{it.changeShares ? fv(it.changeShares) : '--'}</td>\n <td>{it.postHoldingRatio !== undefined ? `${it.postHoldingRatio.toFixed(2)}%` : '--'}</td>\n <td>{it.date ?? '--'}</td>\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n ) : (\n <p className={css.descText}>\n {t('fund.insider.empty')}\n </p>\n )}\n </div>\n )}\n\n {/* 6. 聪明钱 - 机构持股 */}\n {activeNav === 'smart_institutional' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.institutional.title')}</span>\n <span className={css.cardSubNote}>{t('fund.institutional.subtitle')}</span>\n </div>\n {institutionalHoldings && institutionalHoldings.length > 0 ? (\n <div className={css.tableScrollWrap}>\n <table className={css.matrixTable}>\n <thead>\n <tr>\n <th>{t('fund.institutional.col.org')}</th>\n <th>{t('fund.institutional.col.type')}</th>\n <th>{t('fund.institutional.col.shares')}</th>\n <th>{t('fund.institutional.col.ratio')}</th>\n <th>{t('fund.institutional.col.value')}</th>\n <th>{t('fund.institutional.col.change')}</th>\n </tr>\n </thead>\n <tbody>\n {institutionalHoldings.map((inst, idx) => {\n const isUp = inst.change?.includes('+') || (Number(inst.change) > 0)\n const isDown = inst.change?.includes('-') || (Number(inst.change) < 0)\n return (\n <tr key={inst.orgName ?? String(idx)} className={css.indicatorRow}>\n <td className={css.holderName}>{inst.orgName}</td>\n <td><span className={css.reportRating}>{inst.orgType}</span></td>\n <td>{inst.holdingShares ? fv(inst.holdingShares) : '--'}</td>\n <td>{inst.holdingRatio ? `${inst.holdingRatio.toFixed(2)}%` : '--'}</td>\n <td>{inst.marketCap ? yiCny(inst.marketCap) : '--'}</td>\n <td>\n {isUp ? (\n <span className={css.changeTagUp}>{inst.change}</span>\n ) : isDown ? (\n <span className={css.changeTagDown}>{inst.change}</span>\n ) : (\n <span className={css.changeTagFlat}>{inst.change || t('fund.holders.unchanged')}</span>\n )}\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n ) : (\n <p className={css.descText}>\n {t('fund.institutional.empty')}\n </p>\n )}\n </div>\n )}\n\n {/* 7. 简况 - 公司概况 */}\n {activeNav === 'profile_overview' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.profile.title')}</span>\n <span className={css.cardSubNote}>{t('fund.profile.subtitle')}</span>\n </div>\n <div className={css.gridCols}>\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.profile.fullName')}</span>\n <span className={css.gridValue}>{profile?.fullName ?? profile?.name ?? stock?.name ?? symbol}</span>\n </div>\n {profile?.nameEn && (\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.profile.nameEn')}</span>\n <span className={css.gridValue}>{profile.nameEn}</span>\n </div>\n )}\n {profile?.industry && (\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.profile.industry')}</span>\n <span className={css.gridValue}>{profile.industry}</span>\n </div>\n )}\n {profile?.registeredCapital && (\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.profile.registeredCapital')}</span>\n <span className={css.gridValue}>{profile.registeredCapital}</span>\n </div>\n )}\n {profile?.employeeCount && (\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.profile.employees')}</span>\n <span className={css.gridValue}>{profile.employeeCount}</span>\n </div>\n )}\n {profile?.address && (\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.profile.address')}</span>\n <span className={css.gridValue} style={{ fontSize: 12 }}>{profile.address}</span>\n </div>\n )}\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.profile.website')}</span>\n <span className={css.gridValue}>\n {profile?.website ? (\n <a href={profile.website} target=\"_blank\" rel=\"noreferrer\" style={{ color: 'var(--futu-accent)', textDecoration: 'none' }}>\n {profile.website} ↗\n </a>\n ) : '--'}\n </span>\n </div>\n </div>\n\n <div>\n <span className={css.gridLabel} style={{ display: 'block', marginBottom: 6 }}>{t('fund.profile.description')}</span>\n <p className={css.descText}>\n {profile?.description ?? t('fund.profile.descriptionFallback', { symbol })}\n </p>\n </div>\n </div>\n )}\n\n {/* 7. 简况 - 公司高管 */}\n {activeNav === 'profile_executives' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.executives.title')}</span>\n <span className={css.cardSubNote}>{t('fund.executives.subtitle')}</span>\n </div>\n <div className={css.gridCols}>\n {profile?.chairman && (\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.executives.chairman')}</span>\n <span className={css.gridValue} style={{ fontWeight: 600 }}>{profile.chairman}</span>\n </div>\n )}\n {profile?.generalManager && (\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.executives.generalManager')}</span>\n <span className={css.gridValue} style={{ fontWeight: 600 }}>{profile.generalManager}</span>\n </div>\n )}\n {profile?.legalRepresentative && (\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.executives.legalRep')}</span>\n <span className={css.gridValue}>{profile.legalRepresentative}</span>\n </div>\n )}\n {profile?.boardSecretary && (\n <div className={css.gridItem}>\n <span className={css.gridLabel}>{t('fund.executives.boardSecretary')}</span>\n <span className={css.gridValue}>{profile.boardSecretary}</span>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* 8. 公司行动 - 分红派息 */}\n {activeNav === 'action_dividends' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.dividends.title')}</span>\n <span className={css.cardSubNote}>{t('fund.dividends.subtitle')}</span>\n </div>\n {dividends && dividends.length > 0 ? (\n <div className={css.tableScrollWrap}>\n <table className={css.matrixTable}>\n <thead>\n <tr>\n <th>{t('fund.dividends.col.year')}</th>\n <th>{t('fund.dividends.col.plan')}</th>\n <th>{t('fund.dividends.col.cash')}</th>\n <th>{t('fund.dividends.col.exDate')}</th>\n <th>{t('fund.dividends.col.recordDate')}</th>\n </tr>\n </thead>\n <tbody>\n {dividends.map((div, i) => (\n <tr key={div.planYear + i} className={css.indicatorRow}>\n <td><strong>{div.planYear}</strong></td>\n <td>{div.dividendPlan}</td>\n <td style={{ color: 'var(--futu-accent)', fontWeight: 600 }}>\n {div.cashDividend !== undefined ? `¥${div.cashDividend.toFixed(3)}` : '--'}\n </td>\n <td>{div.exDividendDate ?? '--'}</td>\n <td>{div.recordDate ?? '--'}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n ) : (\n <p className={css.descText}>\n {t('fund.dividends.empty')}\n </p>\n )}\n </div>\n )}\n\n {/* 8. 公司行动 - 回购 */}\n {activeNav === 'action_buybacks' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.buybacks.title')}</span>\n <span className={css.cardSubNote}>{t('fund.buybacks.subtitle')}</span>\n </div>\n {buybacks && buybacks.length > 0 ? (\n <div className={css.tableScrollWrap}>\n <table className={css.matrixTable}>\n <thead>\n <tr>\n <th>{t('fund.buybacks.col.date')}</th>\n <th>{t('fund.buybacks.col.amount')}</th>\n <th>{t('fund.buybacks.col.shares')}</th>\n <th>{t('fund.buybacks.col.priceRange')}</th>\n <th>{t('fund.buybacks.col.status')}</th>\n </tr>\n </thead>\n <tbody>\n {buybacks.map((bb, idx) => (\n <tr key={bb.date + idx} className={css.indicatorRow}>\n <td><strong>{bb.date}</strong></td>\n <td>{bb.buybackAmount ? yiCny(bb.buybackAmount) : '--'}</td>\n <td>{bb.buybackShares ? fv(bb.buybackShares) : '--'}</td>\n <td>{bb.priceRange ?? '--'}</td>\n <td><span className={css.reportRating}>{bb.status}</span></td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n ) : (\n <p className={css.descText}>\n {t('fund.buybacks.empty')}\n </p>\n )}\n </div>\n )}\n\n {/* 8. 公司行动 - 拆股并股 / 送转 */}\n {activeNav === 'action_splits' && (\n <div className={css.infoCard}>\n <div className={css.cardTitle}>\n <span>{t('fund.splits.title')}</span>\n <span className={css.cardSubNote}>{t('fund.splits.subtitle')}</span>\n </div>\n {splits && splits.length > 0 ? (\n <div className={css.tableScrollWrap}>\n <table className={css.matrixTable}>\n <thead>\n <tr>\n <th>{t('fund.splits.col.date')}</th>\n <th>{t('fund.splits.col.ratio')}</th>\n <th>{t('fund.splits.col.description')}</th>\n </tr>\n </thead>\n <tbody>\n {splits.map((sp, idx) => (\n <tr key={sp.date + idx} className={css.indicatorRow}>\n <td><strong>{sp.date}</strong></td>\n <td style={{ color: 'var(--futu-accent)', fontWeight: 600 }}>{sp.ratio}</td>\n <td>{sp.description}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n ) : (\n <p className={css.descText}>\n {t('fund.splits.empty')}\n </p>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n\n/** 分组展开渲染行 */\nfunction GroupFragment({\n group,\n periods,\n isCollapsed,\n selectedIndicatorId,\n onToggleGroup,\n onSelectIndicator,\n formatValue,\n}: {\n group: FinancialReportGroup\n periods: string[]\n isCollapsed?: boolean\n selectedIndicatorId: string\n onToggleGroup: () => void\n onSelectIndicator: (id: string) => void\n /** 数值单位 locale 贯通(评审 M2):顶层组件的 fv 借道传入。 */\n formatValue: (val: number | undefined, unit?: string, isRatio?: boolean) => string\n}) {\n return (\n <>\n <tr className={css.groupRow} onClick={onToggleGroup}>\n <td colSpan={periods.length + 1}>\n <span>{isCollapsed ? '▶' : '▼'} {group.title}</span>\n </td>\n </tr>\n {!isCollapsed && group.rows.map((row) => {\n const isSelected = row.id === selectedIndicatorId\n return (\n <tr\n key={row.id}\n className={css.indicatorRow}\n data-active={isSelected ? 'true' : undefined}\n onClick={() => onSelectIndicator(row.id)}\n >\n <td>\n <div className={css.indicatorName}>\n <span className={css.indicatorDot} />\n <span>{row.name} {row.unit ? `(${row.unit})` : ''}</span>\n </div>\n </td>\n {periods.map((p) => {\n const cell = row.values[p]\n const changeInfo = formatChange(cell?.changePercent)\n return (\n <td key={p}>\n <div className={css.cellValue}>{formatValue(cell?.value, row.unit)}</div>\n {cell?.changePercent !== undefined && (\n <div className={`${css.cellChange} ${changeInfo.cls}`}>{changeInfo.text}</div>\n )}\n </td>\n )\n })}\n </tr>\n )\n })}\n </>\n )\n}\n\n/** 轻量高性能 SVG 柱状图 + 同比增速折线图组件 */\nfunction FundamentalsSvgChart({\n row,\n periods,\n showYoY,\n}: {\n row: FinancialIndicatorRow\n periods: string[]\n showYoY: boolean\n}) {\n const vals = periods.map(p => row.values[p]?.value ?? 0)\n const yoys = periods.map(p => row.values[p]?.changePercent ?? 0)\n\n const maxVal = Math.max(...vals, 0.001)\n const minVal = Math.min(...vals, 0)\n const valRange = maxVal - minVal || 1\n\n const maxYoy = Math.max(...yoys, 10)\n const minYoy = Math.min(...yoys, -10)\n const yoyRange = maxYoy - minYoy || 1\n\n const width = 600\n const height = 150\n const paddingLeft = 40\n const paddingRight = 40\n const paddingTop = 20\n const paddingBottom = 25\n const chartWidth = width - paddingLeft - paddingRight\n const chartHeight = height - paddingTop - paddingBottom\n\n const step = periods.length > 1 ? chartWidth / (periods.length - 1) : chartWidth / 2\n const barWidth = Math.min(24, Math.max(12, step * 0.45))\n\n // 计算折线点\n const points = periods.map((_, i) => {\n const x = paddingLeft + i * step\n const yoy = yoys[i] ?? 0\n const normalizedYoy = (yoy - minYoy) / yoyRange\n const y = paddingTop + chartHeight - normalizedYoy * chartHeight\n return `${x},${y}`\n }).join(' ')\n\n return (\n <div className={css.svgChartWrap}>\n <svg viewBox={`0 0 ${width} ${height}`} className={css.svgChart} preserveAspectRatio=\"none\">\n {/* 背景轻网格线 */}\n <line x1={paddingLeft} y1={paddingTop + chartHeight} x2={width - paddingRight} y2={paddingTop + chartHeight} stroke=\"var(--futu-border)\" strokeWidth=\"1\" />\n <line x1={paddingLeft} y1={paddingTop + chartHeight / 2} x2={width - paddingRight} y2={paddingTop + chartHeight / 2} stroke=\"var(--futu-border)\" strokeWidth=\"1\" strokeDasharray=\"3,3\" />\n\n {/* 柱状图 */}\n {periods.map((p, i) => {\n const x = paddingLeft + i * step - barWidth / 2\n const val = vals[i] ?? 0\n const barHeight = Math.max(2, (val / valRange) * chartHeight)\n const y = paddingTop + chartHeight - barHeight\n return (\n <g key={`bar-${p}`}>\n <rect\n x={x}\n y={y}\n width={barWidth}\n height={barHeight}\n fill=\"var(--futu-accent)\"\n rx=\"3\"\n opacity=\"0.85\"\n />\n <text\n x={paddingLeft + i * step}\n y={height - 6}\n fontSize=\"10\"\n textAnchor=\"middle\"\n fill=\"var(--futu-text-muted)\"\n >\n {p}\n </text>\n </g>\n )\n })}\n\n {/* 同比折线与圆点 */}\n {showYoY && periods.length > 1 && (\n <>\n <polyline\n points={points}\n fill=\"none\"\n stroke=\"var(--futu-orange)\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n {periods.map((p, i) => {\n const x = paddingLeft + i * step\n const yoy = yoys[i] ?? 0\n const normalizedYoy = (yoy - minYoy) / yoyRange\n const y = paddingTop + chartHeight - normalizedYoy * chartHeight\n return (\n <circle\n key={`dot-${p}`}\n cx={x}\n cy={y}\n r=\"3.5\"\n fill=\"var(--futu-bg-card)\"\n stroke=\"var(--futu-orange)\"\n strokeWidth=\"2\"\n />\n )\n })}\n </>\n )}\n </svg>\n </div>\n )\n}\n","/**\n * 衍生品指标条(issue #38,crypto 图表页签下方;issue #54 入口化):持仓量 /\n * 持仓价值 / 资金费率(含预测与结算倒计时)/ 多空人数比 / 大户多空比 / 主动买卖比\n * 快照卡片,30s 轮询刷新。\n *\n * 数据两层降级:\n * - 连接器未实现 getDerivatives(现货数据源)或取数失败 → QuoteStage 拿到 null,\n * 整条不挂载(不占位、不报错横幅);\n * - 单项字段缺省 → 该格隐藏(不留空位),与 FundamentalsPane 同纪律。\n *\n * 入口语义(issue #54):格子即入口——点击任意格跳到「衍生品」页签看趋势与\n * 决策面;title tooltip 承载新用户语义解释;「分析资金面」按钮把快照上下文\n * 经 fillComposer 发给 Agent(宿主未注入 fillComposer 时按钮不渲染)。\n *\n * 语义注记:fundingRate 为小数(0.0001 = 0.01%),正费率=多头付资金(多头拥挤),\n * 颜色随涨跌语义(directionColor);多空比/主动买卖比 >1 偏多。\n */\nimport { fmtCompact, fmtCountdown, fmtFundingRate, directionColor, scaleLocaleOf } from './format.ts'\nimport type { ColorMode } from './color-mode.ts'\nimport type { DerivativesData } from './types.ts'\nimport type { MarketLocaleKey } from './contract.ts'\nimport css from './derivatives-pane.module.css'\n\nexport type DerivativesTranslate = (key: MarketLocaleKey, params?: Record<string, unknown>) => string\n\nexport interface DerivativesPaneProps {\n t: DerivativesTranslate\n derivatives: DerivativesData\n /** 涨跌配色方向(red-up / green-up 主题偏好)。 */\n colorMode: ColorMode\n /** 格子点击 → 跳转「衍生品」页签(issue #54;缺席时格子退化为纯展示)。 */\n onOpenStage?: () => void\n /** 「分析资金面」→ 快照上下文发给 Agent(issue #54;fillComposer 缺席时不渲染)。 */\n onAnalyze?: () => void\n}\n\ninterface Cell {\n key: string\n label: string\n value: string\n sub?: string\n color?: string\n hint: string\n}\n\nexport function DerivativesPane({ t, derivatives, colorMode, onOpenStage, onAnalyze }: DerivativesPaneProps): React.JSX.Element {\n const numLocale = scaleLocaleOf(t)\n const countdown = fmtCountdown(derivatives.nextFundingTime, Date.now())\n const cells: Array<Cell | null> = [\n // 持仓量:base 币数(okx oiCcy / binance fapi openInterest / bybit linear openInterest 同语义)。\n derivatives.openInterest !== undefined\n ? {\n key: 'oi',\n label: t('derivatives.oi'),\n value: fmtCompact(derivatives.openInterest, numLocale),\n hint: t('derivatives.hint.oi'),\n }\n : null,\n derivatives.openInterestValue !== undefined\n ? {\n key: 'oiValue',\n label: t('derivatives.oiValue'),\n value: `${fmtCompact(derivatives.openInterestValue, numLocale)} USD`,\n hint: t('derivatives.hint.oiValue'),\n }\n : null,\n // 资金费率:小数 → 百分比(4 位小数),正=多头付资金(颜色随涨跌语义);\n // 副行拼「预测费率 + 结算倒计时」(issue #54,数据已在 OKX/Binance/Bybit 响应里)。\n derivatives.fundingRate !== undefined\n ? {\n key: 'funding',\n label: t('derivatives.funding'),\n value: fmtFundingRate(derivatives.fundingRate),\n // exactOptionalPropertyTypes:sub 先归并为 string | undefined,再按需展开——\n // 直写 `sub: a || b || undefined` 会把 undefined 摊进对象字面量类型。\n ...((): { sub?: string } => {\n const parts = [\n derivatives.nextFundingRate !== undefined ? `${t('derivatives.predicted')} ${fmtFundingRate(derivatives.nextFundingRate)}` : undefined,\n countdown !== undefined ? `${t('derivatives.countdown')} ${countdown}` : undefined,\n ].filter((part): part is string => part !== undefined)\n if (parts.length > 0) return { sub: parts.join(' · ') }\n if (derivatives.fundingRate > 0) return { sub: t('derivatives.fundingPositive') }\n if (derivatives.fundingRate < 0) return { sub: t('derivatives.fundingNegative') }\n return {}\n })(),\n color: directionColor(derivatives.fundingRate, colorMode),\n hint: t('derivatives.hint.funding'),\n }\n : null,\n ratioCell('longShort', t('derivatives.longShort'), derivatives.longShortRatio, t('derivatives.hint.longShort'), t, colorMode),\n ratioCell('topLongShort', t('derivatives.topLongShort'), derivatives.topTraderLongShortRatio, t('derivatives.hint.topLongShort'), t, colorMode),\n ratioCell('taker', t('derivatives.taker'), derivatives.takerBuySellRatio, t('derivatives.hint.taker'), t, colorMode),\n ]\n const visible = cells.filter(entry => entry !== null) as Cell[]\n\n return (\n <div className={css.root} data-dshtrading-derivatives=\"\">\n <span className={css.title} title={t('derivatives.perpSource')}>{t('derivatives.title')}</span>\n {visible.map(entry => (\n <button\n key={entry.key}\n type=\"button\"\n className={css.cell}\n title={entry.hint}\n data-clickable={onOpenStage !== undefined ? 'true' : undefined}\n onClick={onOpenStage}\n >\n <span className={css.cellLabel}>{entry.label}</span>\n <span className={css.cellValue} style={entry.color !== undefined ? { color: entry.color } : undefined}>{entry.value}</span>\n {entry.sub !== undefined && <span className={css.cellSub}>{entry.sub}</span>}\n </button>\n ))}\n {onAnalyze !== undefined && (\n <button type=\"button\" className={css.analyze} title={t('derivatives.analyzeHint')} onClick={onAnalyze}>\n {t('derivatives.analyze')}\n </button>\n )}\n <span className={css.footer} title={t('derivatives.perpSource')}>\n {derivatives.symbol} · {derivatives.source} · {new Date(derivatives.timestamp).toLocaleTimeString()}\n </span>\n </div>\n )\n}\n\n/** 比值卡(多空比/主动买卖比):>1 偏多、<1 偏空,颜色随涨跌语义;缺省隐藏。 */\nfunction ratioCell(\n key: string,\n label: string,\n ratio: number | undefined,\n hint: string,\n t: DerivativesTranslate,\n colorMode: ColorMode,\n): Cell | null {\n if (ratio === undefined || !Number.isFinite(ratio)) return null\n return {\n key,\n label,\n value: ratio.toFixed(2),\n ...(ratio !== 1 ? { sub: ratio > 1 ? t('derivatives.ratioLong') : t('derivatives.ratioShort') } : {}),\n color: directionColor(ratio - 1, colorMode),\n hint,\n }\n}\n","/**\n * 衍生品决策页签(issue #54,crypto 专属,QuoteStage 第四页签):\n * 把快照条(DerivativesPane)扩成决策面——四张卡:\n *\n * 1. 资金费率卡:当前费率 / 预测费率 / 结算倒计时(1s 走时)+ 近 30 期历史 sparkline;\n * 2. 持仓量卡:当前 OI / 持仓价值 / 24h 持仓变化(历史序列末点 vs 前一日点)+ 近 30 日趋势;\n * 3. 多空比卡:多空人数比 / 大户多空比 / 主动买卖比(>1 偏多语义沿用快照条);\n * 4. 基差卡:标记价格 / 指数价格 / 基差 %((mark-index)/index,正=永续升水)。\n *\n * 降级纪律(与快照条同族):字段缺省 → 对应行隐藏;历史首个应答落地后仍无该序列\n * (连接器未实现 getDerivativesHistory 或失败)→ 趋势区显示「无历史序列」提示;\n * 首个应答在途(historyLoaded=false)→ 趋势区留白等待,不闪烁提示(评审 L2)。\n */\nimport { useEffect, useState } from 'react'\nimport { Sparkline } from './Sparkline.tsx'\nimport { directionColor, fmtCompact, fmtCountdown, fmtFundingRate, fmtPercent, fmtPrice } from './format.ts'\nimport type { ColorMode } from './color-mode.ts'\nimport type { DerivativesData, DerivativesHistory, DerivativesPoint } from './types.ts'\nimport type { MarketLocaleKey } from './contract.ts'\nimport css from './derivatives-stage.module.css'\n\nexport type DerivativesStageTranslate = (key: MarketLocaleKey) => string\n\nexport interface DerivativesStageProps {\n t: DerivativesStageTranslate\n /** 快照(30s 轮询,QuoteStage 共享衍生品条同一份 state)。 */\n derivatives: DerivativesData | null\n /** 历史序列(页签激活才拉,5min 节奏;null = 未实现/失败)。 */\n history: DerivativesHistory | null\n /** 首个历史应答是否已落地(评审 L2:区分「加载中」与「不可用」)。 */\n historyLoaded: boolean\n colorMode: ColorMode\n}\n\n/** 结算倒计时 1s 走时(仅页签挂载期间计时)。 */\nfunction useNowMs(): number {\n const [now, setNow] = useState(() => Date.now())\n useEffect(() => {\n const timer = setInterval(() => { setNow(Date.now()) }, 1000)\n return () => { clearInterval(timer) }\n }, [])\n return now\n}\n\n/** 24h 持仓变化:历史序列末点 vs 24h 前最近采样点;找不到 ≤cutoff 的采样点\n * (次新永续,历史不足 24h)→ undefined 该行隐藏——不拿「上市以来变化」冒充\n * 24h 标签(issue #54 评审 L4)。 */\nfunction oiChange24h(points: DerivativesPoint[] | undefined): number | undefined {\n if (points === undefined || points.length < 2) return undefined\n const last = points[points.length - 1] as DerivativesPoint\n const cutoff = last.time - 24 * 3600 * 1000\n // 从后往前找第一个 ≤ cutoff 的点。\n let base: DerivativesPoint | undefined\n for (let i = points.length - 2; i >= 0; i -= 1) {\n const p = points[i] as DerivativesPoint\n if (p.time <= cutoff) { base = p; break }\n }\n if (base === undefined || base.value <= 0 || base.time === last.time) return undefined\n return (last.value - base.value) / base.value * 100\n}\n\nexport function DerivativesStage({ t, derivatives, history, historyLoaded, colorMode }: DerivativesStageProps): React.JSX.Element {\n const now = useNowMs()\n\n if (derivatives === null && history === null) {\n return <div className={css.empty} data-dshtrading-derivatives-stage=\"\">{t('quote.noData')}</div>\n }\n\n const fundingHistory = history?.fundingRates\n const oiHistory = history?.openInterest\n const oiChange = oiChange24h(oiHistory)\n const countdown = fmtCountdown(derivatives?.nextFundingTime, now)\n const basis = derivatives?.markPrice !== undefined && derivatives?.indexPrice !== undefined && derivatives.indexPrice > 0\n ? (derivatives.markPrice - derivatives.indexPrice) / derivatives.indexPrice * 100\n : undefined\n\n return (\n <div className={css.root} data-dshtrading-derivatives-stage=\"\">\n {/* 资金费率卡 */}\n <section className={css.card} title={t('derivatives.hint.funding')}>\n <header className={css.cardHead}>{t('derivatives.funding')}</header>\n <div className={css.bigValue} style={derivatives?.fundingRate !== undefined ? { color: directionColor(derivatives.fundingRate, colorMode) } : undefined}>\n {fmtFundingRate(derivatives?.fundingRate)}\n </div>\n {derivatives?.fundingRate !== undefined && (\n <div className={css.semantic}>\n {derivatives.fundingRate > 0 ? t('derivatives.fundingPositive') : derivatives.fundingRate < 0 ? t('derivatives.fundingNegative') : ''}\n </div>\n )}\n <dl className={css.rows}>\n {derivatives?.nextFundingRate !== undefined && (\n <div className={css.row}>\n <dt>{t('derivatives.predicted')}</dt>\n <dd style={{ color: directionColor(derivatives.nextFundingRate, colorMode) }}>{fmtFundingRate(derivatives.nextFundingRate)}</dd>\n </div>\n )}\n {countdown !== undefined && (\n <div className={css.row}>\n <dt>{t('derivatives.countdown')}</dt>\n <dd className={css.countdown}>{countdown}</dd>\n </div>\n )}\n </dl>\n {fundingHistory !== undefined && fundingHistory.length > 1 ? (\n <div className={css.trend}>\n <Sparkline\n values={fundingHistory.map(p => p.value)}\n width={220}\n height={40}\n up={(fundingHistory[fundingHistory.length - 1]?.value ?? 0) >= (fundingHistory[0]?.value ?? 0)}\n colorMode={colorMode}\n />\n <span className={css.trendLabel}>{t('derivatives.fundingHistory')}</span>\n </div>\n ) : (\n historyLoaded && <div className={css.noHistory}>{t('derivatives.historyUnavailable')}</div>\n )}\n </section>\n\n {/* 持仓量卡 */}\n <section className={css.card} title={t('derivatives.hint.oi')}>\n <header className={css.cardHead}>{t('derivatives.oi')}</header>\n <div className={css.bigValue}>{fmtCompact(derivatives?.openInterest)}</div>\n <dl className={css.rows}>\n {derivatives?.openInterestValue !== undefined && (\n <div className={css.row}>\n <dt>{t('derivatives.oiValue')}</dt>\n <dd>{fmtCompact(derivatives.openInterestValue)} USD</dd>\n </div>\n )}\n {oiChange !== undefined && (\n <div className={css.row}>\n <dt>{t('derivatives.oiChange24h')}</dt>\n <dd style={{ color: directionColor(oiChange, colorMode) }}>{fmtPercent(oiChange)}</dd>\n </div>\n )}\n </dl>\n {oiHistory !== undefined && oiHistory.length > 1 ? (\n <div className={css.trend}>\n <Sparkline\n values={oiHistory.map(p => p.value)}\n width={220}\n height={40}\n up={(oiHistory[oiHistory.length - 1]?.value ?? 0) >= (oiHistory[0]?.value ?? 0)}\n colorMode={colorMode}\n />\n <span className={css.trendLabel}>{t('derivatives.oiTrend')}</span>\n </div>\n ) : (\n historyLoaded && <div className={css.noHistory}>{t('derivatives.historyUnavailable')}</div>\n )}\n </section>\n\n {/* 多空比卡 */}\n <section className={css.card}>\n <header className={css.cardHead}>{t('derivatives.longShort')}</header>\n <dl className={css.rows}>\n {([\n ['longShort', derivatives?.longShortRatio, t('derivatives.hint.longShort')],\n ['topLongShort', derivatives?.topLongShortRatio, t('derivatives.hint.topLongShort')],\n ['taker', derivatives?.takerBuySellRatio, t('derivatives.hint.taker')],\n ] as const).filter((row): row is readonly [string, number, string] => row[1] !== undefined).map(([key, ratio, hint]) => (\n <div className={css.row} key={key} title={hint}>\n <dt>{key === 'longShort' ? t('derivatives.longShort') : key === 'topLongShort' ? t('derivatives.topLongShort') : t('derivatives.taker')}</dt>\n <dd style={{ color: directionColor(ratio - 1, colorMode) }}>\n {ratio.toFixed(2)}\n <span className={css.tag}>{ratio > 1 ? t('derivatives.ratioLong') : ratio < 1 ? t('derivatives.ratioShort') : ''}</span>\n </dd>\n </div>\n ))}\n </dl>\n </section>\n\n {/* 基差卡 */}\n <section className={css.card} title={t('derivatives.hint.basis')}>\n <header className={css.cardHead}>{t('derivatives.basis')}</header>\n <div className={css.bigValue} style={basis !== undefined ? { color: directionColor(basis, colorMode) } : undefined}>\n {basis !== undefined ? fmtPercent(basis) : '—'}\n </div>\n <dl className={css.rows}>\n {derivatives?.markPrice !== undefined && (\n <div className={css.row}>\n <dt>{t('derivatives.markPrice')}</dt>\n <dd>{fmtPrice(derivatives.markPrice)}</dd>\n </div>\n )}\n {derivatives?.indexPrice !== undefined && (\n <div className={css.row}>\n <dt>{t('derivatives.indexPrice')}</dt>\n <dd>{fmtPrice(derivatives.indexPrice)}</dd>\n </div>\n )}\n </dl>\n </section>\n\n {derivatives !== null && (\n <footer className={css.foot} title={t('derivatives.perpSource')}>\n {derivatives.symbol} · {derivatives.source} · {new Date(derivatives.timestamp).toLocaleTimeString()}\n </footer>\n )}\n </div>\n )\n}\n","/**\n * 盘口与分笔竖栏(issue #39,QuoteStage 右侧可折叠)。\n *\n * 三段:\n * - 五档/十档深度:asks(上)+ bids(下),背景条按档位量占比;卖一/买一之间夹\n * 价差行;顶部买卖力道比(∑bids / ∑asks 量占比,条形)。\n * - 逐笔成交流水(时间倒序展示,最新在上):时间/价格/量,价格按主动方向着色。\n * - 降级:连接器未实现 getOrderbook(yahoo/stooq/腾讯 r_hk)→ fetchOrderbook 返回\n * null → 显示「未提供盘口」提示;分笔同理(腾讯沪深行情行无逐笔端点)。\n *\n * 纪律:纯展示组件,轮询在 QuoteStage(fetch 失败静默保留上一帧)。\n */\nimport { directionColor, fmtPrice, scaleLocaleOf } from './format.ts'\nimport type { ColorMode } from './color-mode.ts'\nimport type { Orderbook, TradeTick } from './types.ts'\nimport type { MarketLocaleKey } from './contract.ts'\nimport css from './orderbook-pane.module.css'\n\nexport type OrderbookTranslate = (key: MarketLocaleKey, params?: Record<string, unknown>) => string\n\nexport interface OrderbookPaneProps {\n t: OrderbookTranslate\n /** 桥 /orderbook 快照;null = 该市场数据源不提供盘口(降级提示)。 */\n orderbook: Orderbook | null\n /** 桥 /trades 流水(时间升序,组件内倒序展示);null = 数据源不提供。 */\n trades: TradeTick[] | null\n orderbookLoading: boolean\n colorMode: ColorMode\n onClose: () => void\n}\n\nconst MAX_LEVELS = 10\n\nexport function OrderbookPane({ t, orderbook, trades, orderbookLoading, colorMode, onClose }: OrderbookPaneProps): React.JSX.Element {\n // 档位/成交量紧凑单位 locale(亿/万 vs B/M):词典哨兵键判定。\n const numLocale = scaleLocaleOf(t)\n const degraded = orderbook === null && !orderbookLoading\n\n const buyVolume = orderbook?.bids.reduce((sum, level) => sum + level.amount, 0) ?? 0\n const sellVolume = orderbook?.asks.reduce((sum, level) => sum + level.amount, 0) ?? 0\n const total = buyVolume + sellVolume\n const buyRatio = total > 0 ? buyVolume / total : undefined\n\n const bestBid = orderbook?.bids[0]?.price\n const bestAsk = orderbook?.asks[0]?.price\n const spread = bestBid !== undefined && bestAsk !== undefined ? bestAsk - bestBid : undefined\n\n // 档位条宽度基准:买卖两侧取同一最大档位量,深度条才可比。\n const maxLevelAmount = orderbook === null ? 0 : Math.max(\n ...orderbook.bids.slice(0, MAX_LEVELS).map(level => level.amount),\n ...orderbook.asks.slice(0, MAX_LEVELS).map(level => level.amount),\n 1,\n )\n // 展示顺序:asks 倒序(卖五在顶、卖一贴价差行),bids 正序(买一贴价差行)。\n const askLevels = (orderbook?.asks ?? []).slice(0, MAX_LEVELS).slice().reverse()\n const bidLevels = (orderbook?.bids ?? []).slice(0, MAX_LEVELS)\n // 流水:服务端时间升序 → 倒序展示(最新在上)。\n const tradeRows = (trades ?? []).slice().reverse()\n\n return (\n <div className={css.root} data-dshtrading-orderbook=\"\">\n <div className={css.head}>\n <span>{t('orderbook.title')}</span>\n <button type=\"button\" className={css.close} aria-label={t('orderbook.close')} onClick={onClose}>×</button>\n </div>\n <div className={css.body}>\n {degraded && <div className={css.degraded}>{t('orderbook.unavailable')}</div>}\n {orderbook !== null && (\n <>\n {buyRatio !== undefined && (\n <div className={css.depthMeter}>\n <div className={css.meterBar}>\n <span className={css.meterBuy} style={{ width: `${(buyRatio * 100).toFixed(1)}%` }} />\n <span className={css.meterSell} style={{ width: `${((1 - buyRatio) * 100).toFixed(1)}%` }} />\n </div>\n <span>\n {t('orderbook.buyForce')} {(buyRatio * 100).toFixed(1)}% · {t('orderbook.sellForce')} {((1 - buyRatio) * 100).toFixed(1)}%\n </span>\n </div>\n )}\n <div className={css.levels}>\n {askLevels.map((level, index) => (\n <LevelRow key={`a${index}`} kind=\"asks\" level={level} max={maxLevelAmount} numLocale={numLocale} />\n ))}\n {spread !== undefined && (\n <div className={css.spread}>{t('orderbook.spread')} {fmtPrice(spread)}</div>\n )}\n {bidLevels.map((level, index) => (\n <LevelRow key={`b${index}`} kind=\"bids\" level={level} max={maxLevelAmount} numLocale={numLocale} />\n ))}\n </div>\n </>\n )}\n {orderbookLoading && orderbook === null && !degraded && (\n <div className={css.spread}>…</div>\n )}\n {trades !== null && tradeRows.length > 0 && (\n <>\n <div className={css.sectionTitle}>{t('orderbook.trades')}</div>\n <div className={css.trades}>\n {tradeRows.slice(0, 50).map((trade, index) => (\n <div key={`${trade.id}-${index}`} className={css.trade}>\n <span className={css.time}>{new Date(trade.timestamp).toLocaleTimeString()}</span>\n <span\n style={trade.side === 'unknown' ? undefined : { color: directionColor(trade.side === 'buy' ? 1 : -1, colorMode) }}\n >\n {fmtPrice(trade.price)}\n </span>\n <span className={css.amount}>{compactAmount(trade.amount, numLocale)}</span>\n </div>\n ))}\n </div>\n </>\n )}\n </div>\n </div>\n )\n}\n\n/** 单档位:背景条按量占比(bar 宽 = amount/max),价格 + 量。 */\nfunction LevelRow(props: {\n kind: 'bids' | 'asks'\n level: { price: number; amount: number }\n max: number\n numLocale: 'zh' | 'en'\n}): React.JSX.Element {\n const { kind, level, max, numLocale } = props\n const width = `${Math.min(100, (level.amount / (max || 1)) * 100).toFixed(1)}%`\n return (\n <div className={`${css.level} ${css[kind]}`}>\n <span className={css.levelBar} style={{ width }} />\n <span className={css.levelPrice}>{fmtPrice(level.price)}</span>\n <span className={css.levelAmount}>{compactAmount(level.amount, numLocale)}</span>\n </div>\n )\n}\n\n/** 档位/成交量紧凑展示(locale 单位:zh ≥1万/亿缩写;en K/M;股票单位=股、crypto=币)。 */\nfunction compactAmount(value: number, locale: 'zh' | 'en'): string {\n if (!Number.isFinite(value)) return '—'\n const abs = Math.abs(value)\n if (locale === 'zh') {\n if (abs >= 100_000_000) return `${(value / 100_000_000).toFixed(2)}亿` // i18n-allow: zh 数值单位常量(locale 数据)\n if (abs >= 10_000) return `${(value / 10_000).toFixed(2)}万` // i18n-allow: zh 数值单位常量(locale 数据)\n }\n if (locale === 'en') {\n if (abs >= 1_000_000_000) return `${(value / 1_000_000_000).toFixed(2)}B`\n if (abs >= 1_000_000) return `${(value / 1_000_000).toFixed(2)}M`\n if (abs >= 1_000) return `${(value / 1_000).toFixed(2)}K`\n }\n return value % 1 === 0 ? String(value) : value.toFixed(4).replace(/0+$/, '').replace(/\\.$/, '')\n}\n","/**\n * 右侧快速下单面板(对齐 OKX / Binance 旗舰桌面端):\n * 位于右侧盘口下方,用户边盯盘口边直接敲单买卖。\n * 只做真交易:直接执行实盘下单。\n */\nimport { useEffect, useMemo, useState } from 'react'\nimport type { ColorMode } from './color-mode.ts'\nimport type { MarketLocaleKey } from './contract.ts'\nimport type { GuiOrderInput, GuiOrderResult } from './api.ts'\nimport type { MarketId } from './types.ts'\nimport css from './order-panel.module.css'\n\nexport type OrderPanelTranslate = (key: MarketLocaleKey) => string\n\nexport interface OrderPanelProps {\n t: OrderPanelTranslate\n symbol: string\n market?: MarketId | undefined\n suggestedPrice?: number | undefined\n colorMode: ColorMode\n tradeMode?: 'live' | 'paper' | undefined\n paperCash?: number | undefined\n availableCash?: number | undefined\n currentPositionSize?: number | undefined\n onResetPaper?: (() => void) | undefined\n onToggleTradeMode?: ((mode: 'live' | 'paper') => void) | undefined\n onSubmit: (input: GuiOrderInput) => Promise<GuiOrderResult>\n onClose?: (() => void) | undefined\n}\n\n/** 智能推断标的资产单位 */\nfunction resolveAssetUnit(symbol: string, t: (k: MarketLocaleKey) => string, market?: MarketId): string {\n if (market === 'crypto' || /USDT|USDC|BUSD|BTC|ETH/i.test(symbol)) {\n const clean = symbol.toUpperCase().replace(/[-_].*$/, '')\n for (const quote of ['USDT', 'USDC', 'BUSD', 'USD']) {\n if (clean.endsWith(quote) && clean.length > quote.length) {\n return clean.slice(0, -quote.length)\n }\n }\n return t('trade.unit.coin')\n }\n return t('trade.unit.shares')\n}\n\nexport interface RatioCalcParams {\n side: 'buy' | 'sell'\n ratio: number\n availableCash: number\n currentPositionSize: number\n referencePrice: number\n isSharesUnit: boolean\n market?: MarketId | undefined\n symbol: string\n}\n\n/**\n * 快速下单比例数量计算函数:\n * - 买入:基于可用资金计算预算(availableCash * ratio),除以现价/限价;\n * 若为股票(A股等),必须按整手(100 股)向下取整,严禁超出可用资金;若为美股按 1 股整数向下取整;若为加密货币安全截断小数;\n * - 卖出:严格基于当前可用持仓(currentPositionSize * ratio);\n * 100% 卖出全清持仓(包括零股),部分卖出按整手向下取整。\n */\nexport function calculateOrderRatioQuantity({\n side,\n ratio,\n availableCash,\n currentPositionSize,\n referencePrice,\n isSharesUnit,\n market,\n symbol,\n}: RatioCalcParams): string {\n if (ratio <= 0) return '0'\n\n if (side === 'buy') {\n if (availableCash <= 0 || referencePrice <= 0) {\n return '0'\n }\n\n const budget = availableCash * ratio\n const rawQty = budget / referencePrice\n\n if (isSharesUnit) {\n // 股票市场:A股/港股等必须按手买入(一手=100股),美股按1股整数向下取整\n const isCnOrHk = market === 'cn' || market === 'hk' || /\\.(SH|SZ|BJ|HK)$/i.test(symbol)\n const lotSize = isCnOrHk ? 100 : 1\n const shares = Math.floor(rawQty / lotSize) * lotSize\n return String(Math.max(0, shares))\n }\n\n // 加密货币等:向下截断适当小数位数,严禁浮点进位超出预算\n const decimals = referencePrice >= 1000 ? 4 : referencePrice >= 1 ? 3 : 2\n const factor = Math.pow(10, decimals)\n const qty = Math.floor(rawQty * factor) / factor\n return String(Math.max(0, qty))\n }\n\n // 卖出:严格基于当前可用持仓\n if (currentPositionSize <= 0) return '0'\n\n if (ratio >= 1) {\n // 100% 清仓卖出:支持零股一次性全部清仓\n return String(currentPositionSize)\n }\n\n if (isSharesUnit) {\n const isCnOrHk = market === 'cn' || market === 'hk' || /\\.(SH|SZ|BJ|HK)$/i.test(symbol)\n const lotSize = isCnOrHk ? 100 : 1\n const shares = Math.floor((currentPositionSize * ratio) / lotSize) * lotSize\n return String(Math.max(0, shares))\n }\n\n const decimals = referencePrice >= 1000 ? 4 : 2\n const factor = Math.pow(10, decimals)\n const qty = Math.floor(currentPositionSize * ratio * factor) / factor\n return String(Math.max(0, qty))\n}\n\nexport function OrderPanel({\n t,\n symbol,\n market,\n suggestedPrice,\n colorMode,\n tradeMode = 'live',\n paperCash,\n availableCash,\n currentPositionSize = 0,\n onResetPaper,\n onToggleTradeMode,\n onSubmit,\n onClose,\n}: OrderPanelProps): React.JSX.Element {\n const [side, setSide] = useState<'buy' | 'sell'>('buy')\n const [type, setType] = useState<'market' | 'limit'>('market')\n const [quantity, setQuantity] = useState('')\n const [price, setPrice] = useState('')\n const [submitting, setSubmitting] = useState(false)\n const [feedback, setFeedback] = useState<{ text: string; state: 'success' | 'error' } | null>(null)\n\n const unit = useMemo(() => resolveAssetUnit(symbol, t, market), [symbol, t, market])\n\n // 当建议价格变化且当前价格为空时辅助填入\n useEffect(() => {\n if (suggestedPrice !== undefined && suggestedPrice > 0 && price === '') {\n setPrice(String(suggestedPrice))\n }\n }, [suggestedPrice])\n\n const upColor = colorMode === 'red-up' ? 'var(--dsw-futu-up, #e64545)' : 'var(--dsw-futu-down, #2dbd85)'\n const downColor = colorMode === 'red-up' ? 'var(--dsw-futu-down, #2dbd85)' : 'var(--dsw-futu-up, #e64545)'\n const activeColor = side === 'buy' ? upColor : downColor\n\n // 预估成交金额\n const estimatedAmount = useMemo(() => {\n const qty = Number(quantity)\n if (!Number.isFinite(qty) || qty <= 0) return null\n const p = type === 'limit' ? Number(price) : (suggestedPrice ?? 0)\n if (!Number.isFinite(p) || p <= 0) return null\n return (qty * p).toFixed(2)\n }, [quantity, price, type, suggestedPrice])\n\n const submit = (): void => {\n const qty = Number(quantity)\n if (!Number.isFinite(qty) || qty <= 0 || submitting) return\n const limitPrice = type === 'limit' ? Number(price) : undefined\n if (type === 'limit' && (!Number.isFinite(limitPrice) || (limitPrice ?? 0) <= 0)) return\n\n setSubmitting(true)\n setFeedback(null)\n\n const payload: GuiOrderInput = {\n symbol,\n side,\n type,\n quantity: qty,\n ...(limitPrice !== undefined ? { price: limitPrice } : {}),\n }\n\n void onSubmit(payload)\n .then((res) => {\n if (res.order) {\n setFeedback({\n text: `${t('trade.orderSuccess')} · ID: ${res.order.id}`,\n state: 'success',\n })\n setQuantity('')\n } else {\n setFeedback({\n text: res.error ? `${t('trade.submitFailed')}: ${res.error}` : t('trade.submitFailed'),\n state: 'error',\n })\n }\n })\n .catch((err) => {\n setFeedback({\n text: `${t('trade.submitFailed')}: ${err instanceof Error ? err.message : String(err)}`,\n state: 'error',\n })\n })\n .finally(() => {\n setSubmitting(false)\n })\n }\n\n // 快捷比例填单:买入按可用资金计算最大可买,卖出按当前持仓计算最大可卖\n const applyRatio = (ratio: number) => {\n const refPrice = type === 'limit' && Number(price) > 0 ? Number(price) : (suggestedPrice ?? 0)\n const qtyStr = calculateOrderRatioQuantity({\n side,\n ratio,\n availableCash: effectiveCash,\n currentPositionSize,\n referencePrice: refPrice,\n isSharesUnit: unit === t('trade.unit.shares'),\n market,\n symbol,\n })\n setQuantity(qtyStr)\n }\n\n const actionText = side === 'buy' ? t('trade.buy') : t('trade.sell')\n\n const effectiveCash = availableCash ?? (tradeMode === 'paper' ? (paperCash ?? 100000) : 0)\n\n return (\n <div className={css.root} data-dshtrading-order-panel=\"\">\n {/* 标题栏:简洁利落 */}\n <div className={css.titleRow}>\n <span className={css.panelTitle}>{t('trade.sideOrder')}</span>\n <div className={css.headerRight}>\n {tradeMode === 'paper' && onResetPaper !== undefined && (\n <button\n type=\"button\"\n className={css.resetBtn}\n onClick={() => {\n if (typeof window !== 'undefined' && window.confirm(t('trade.paper.resetConfirm'))) {\n onResetPaper()\n }\n }}\n title={t('trade.paper.reset')}\n >\n {t('trade.paper.reset')}\n </button>\n )}\n {onClose !== undefined && (\n <button type=\"button\" className={css.closeBtn} onClick={onClose} title={t('trade.close')}>\n ×\n </button>\n )}\n </div>\n </div>\n\n {/* 切换按钮(放在交易选项上面):[ 实盘交易 | 模拟交易 ] */}\n <div className={css.modeToggle} role=\"tablist\" aria-label=\"trading mode\">\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={tradeMode === 'live'}\n className={css.modeBtn}\n data-active={tradeMode === 'live' ? 'true' : undefined}\n onClick={() => onToggleTradeMode?.('live')}\n >\n {t('trade.mode.live')}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={tradeMode === 'paper'}\n className={css.modeBtn}\n data-paper=\"true\"\n data-active={tradeMode === 'paper' ? 'true' : undefined}\n onClick={() => onToggleTradeMode?.('paper')}\n >\n {t('trade.mode.paper')}\n </button>\n </div>\n\n {/* 资金/持仓动态提示行:买入显示可用资金,卖出显示当前持仓 */}\n <div className={css.availableRow}>\n <span>\n {side === 'buy'\n ? tradeMode === 'paper'\n ? t('trade.paper.available')\n : t('trade.drawer.available')\n : t('trade.positions')}\n </span>\n <span className={side === 'buy' ? css.availableValue : css.positionValue}>\n {side === 'buy'\n ? effectiveCash.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })\n : `${currentPositionSize.toLocaleString('en-US')} ${unit}`}\n </span>\n </div>\n\n <div className={css.sideToggle} role=\"tablist\" aria-label=\"order side\">\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={side === 'buy'}\n className={css.toggleBtn}\n data-active={side === 'buy' ? 'true' : undefined}\n style={side === 'buy' ? { background: upColor } : undefined}\n onClick={() => { setSide('buy'); setFeedback(null) }}\n >\n {t('trade.buy')}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={side === 'sell'}\n className={css.toggleBtn}\n data-active={side === 'sell' ? 'true' : undefined}\n style={side === 'sell' ? { background: downColor } : undefined}\n onClick={() => { setSide('sell'); setFeedback(null) }}\n >\n {t('trade.sell')}\n </button>\n </div>\n\n <div className={css.typeToggle} role=\"tablist\" aria-label=\"order type\">\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={type === 'market'}\n className={css.typeBtn}\n data-active={type === 'market' ? 'true' : undefined}\n onClick={() => { setType('market') }}\n >\n {t('trade.market')}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={type === 'limit'}\n className={css.typeBtn}\n data-active={type === 'limit' ? 'true' : undefined}\n onClick={() => { setType('limit') }}\n >\n {t('trade.limit')}\n </button>\n </div>\n\n {type === 'limit' ? (\n <div className={css.field}>\n <div className={css.labelRow}>\n <label htmlFor=\"order-panel-price\">{t('trade.price')}</label>\n {suggestedPrice !== undefined && suggestedPrice > 0 && (\n <span\n style={{ cursor: 'pointer', color: 'var(--dsw-futu-primary, #2962ff)', fontSize: '10.5px' }}\n onClick={() => setPrice(String(suggestedPrice))}\n >\n {t('trade.fillCurrentPrice')}\n </span>\n )}\n </div>\n <div className={css.inputWrapper}>\n <input\n id=\"order-panel-price\"\n inputMode=\"decimal\"\n placeholder=\"0.00\"\n value={price}\n onChange={(e) => { setPrice(e.target.value) }}\n />\n </div>\n </div>\n ) : (\n <div className={css.marketHint}>\n {t('trade.marketExecuteHint')}\n </div>\n )}\n\n <div className={css.field}>\n <div className={css.labelRow}>\n <label htmlFor=\"order-panel-quantity\">{t('trade.quantity')}</label>\n </div>\n <div className={css.inputWrapper}>\n <input\n id=\"order-panel-quantity\"\n inputMode=\"decimal\"\n placeholder=\"0\"\n value={quantity}\n onChange={(e) => { setQuantity(e.target.value) }}\n />\n <span className={css.unit}>{unit}</span>\n </div>\n </div>\n\n {/* 快捷仓位比例胶囊 */}\n <div className={css.ratioRow} role=\"group\" aria-label=\"Quick quantity ratios\">\n <button type=\"button\" className={css.ratioBtn} onClick={() => applyRatio(0.25)}>25%</button>\n <button type=\"button\" className={css.ratioBtn} onClick={() => applyRatio(0.5)}>50%</button>\n <button type=\"button\" className={css.ratioBtn} onClick={() => applyRatio(0.75)}>75%</button>\n <button type=\"button\" className={css.ratioBtn} onClick={() => applyRatio(1)}>100%</button>\n </div>\n\n {estimatedAmount !== null && (\n <div className={css.estRow}>\n <span>{t('trade.estimatedAmount')}</span>\n <span className={css.estValue}>≈ {estimatedAmount}</span>\n </div>\n )}\n\n <button\n type=\"button\"\n className={css.submitBtn}\n data-paper={tradeMode === 'paper' ? 'true' : undefined}\n disabled={submitting || quantity === '' || (type === 'limit' && price === '')}\n style={{ background: activeColor }}\n onClick={submit}\n >\n {submitting\n ? t('trade.submitting')\n : tradeMode === 'paper'\n ? `${side === 'buy' ? t('trade.paper.buyAction') : t('trade.paper.sellAction')} ${symbol}`\n : `${actionText} ${symbol}`}\n </button>\n\n {feedback && (\n <div className={css.receipt} data-state={feedback.state}>\n {feedback.text}\n </div>\n )}\n </div>\n )\n}\n","/**\n * 底部全宽资产与订单抽屉(TradingView/同花顺风格):\n * 占满屏幕底沿,横向平铺展现持仓、活动委托、成交历史与账户资金。\n * 默认可保持纤细状态条(不挤压 K 线主图),点击即刻展开大表格查看与撤单。\n */\nimport { useState } from 'react'\nimport type { ColorMode } from './color-mode.ts'\nimport type { AccountBalance, Order, Position, TradeFill } from './types.ts'\nimport type { MarketLocaleKey } from './contract.ts'\nimport { directionColor, fmtPrice } from './format.ts'\nimport css from './trade-drawer.module.css'\n\nexport type TradeDrawerTranslate = (key: MarketLocaleKey) => string\n\nexport interface TradeDrawerProps {\n t: TradeDrawerTranslate\n positions: Position[] | null\n balances: AccountBalance[] | null\n orders: Order[] | null\n fills: TradeFill[] | null\n colorMode: ColorMode\n tradeMode?: 'live' | 'paper' | undefined\n onResetPaper?: (() => void) | undefined\n isOpen: boolean\n onToggle: (open: boolean) => void\n onCancelOrder?: (orderId: string, symbol?: string) => Promise<boolean>\n}\n\nexport function TradeDrawer({\n t,\n positions,\n balances,\n orders,\n fills,\n colorMode,\n tradeMode = 'live',\n onResetPaper,\n isOpen,\n onToggle,\n onCancelOrder,\n}: TradeDrawerProps): React.JSX.Element {\n const [activeTab, setActiveTab] = useState<'positions' | 'orders' | 'fills' | 'balances'>('positions')\n const [cancelingId, setCancelingId] = useState<string | null>(null)\n\n const posCount = positions?.length ?? 0\n const orderCount = orders?.length ?? 0\n const fillCount = fills?.length ?? 0\n\n const handleTabClick = (tab: typeof activeTab) => {\n if (!isOpen) {\n onToggle(true)\n }\n setActiveTab(tab)\n }\n\n return (\n <div className={css.root} data-dshtrading-trade-drawer=\"\" style={{ maxHeight: isOpen ? '220px' : '28px' }}>\n <div className={css.bar}>\n <div className={css.tabs} role=\"tablist\">\n {tradeMode === 'paper' && (\n <span className={css.paperBadge}>{t('trade.paper.drawerTag')}</span>\n )}\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === 'positions'}\n data-active={activeTab === 'positions' ? 'true' : undefined}\n className={css.tabBtn}\n onClick={() => handleTabClick('positions')}\n >\n {t('trade.positions')}\n {posCount > 0 && <span className={css.badge}>{posCount}</span>}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === 'orders'}\n data-active={activeTab === 'orders' ? 'true' : undefined}\n className={css.tabBtn}\n onClick={() => handleTabClick('orders')}\n >\n {t('trade.openOrders')}\n {orderCount > 0 && <span className={css.badge}>{orderCount}</span>}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === 'fills'}\n data-active={activeTab === 'fills' ? 'true' : undefined}\n className={css.tabBtn}\n onClick={() => handleTabClick('fills')}\n >\n {t('trade.fills')}\n {fillCount > 0 && <span className={css.badge}>{fillCount}</span>}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === 'balances'}\n data-active={activeTab === 'balances' ? 'true' : undefined}\n className={css.tabBtn}\n onClick={() => handleTabClick('balances')}\n >\n {t('trade.balances')}\n </button>\n </div>\n\n <div className={css.actions}>\n {tradeMode === 'paper' && onResetPaper !== undefined && (\n <button\n type=\"button\"\n className={css.resetBtn}\n onClick={() => {\n if (typeof window !== 'undefined' && window.confirm(t('trade.paper.resetConfirm'))) {\n onResetPaper()\n }\n }}\n title={t('trade.paper.reset')}\n >\n {t('trade.paper.reset')}\n </button>\n )}\n <button\n type=\"button\"\n className={css.toggleBtn}\n onClick={() => onToggle(!isOpen)}\n title={isOpen ? t('trade.drawer.collapse') : t('trade.drawer.expand')}\n >\n <span>{isOpen ? `${t('trade.drawer.collapse')} ▼` : `${t('trade.drawer.expand')} ▲`}</span>\n </button>\n </div>\n </div>\n\n {isOpen && (\n <div className={css.content}>\n {activeTab === 'positions' && (\n positions === null ? (\n <div className={css.empty}>{t('trade.credentialHint')}</div>\n ) : positions.length === 0 ? (\n <div className={css.empty}>{t('trade.empty')}</div>\n ) : (\n <table className={css.table}>\n <thead>\n <tr>\n <th>{t('trade.symbol')}</th>\n <th>{t('trade.side')}</th>\n <th>{t('trade.size')}</th>\n <th>{t('trade.entryPrice')}</th>\n <th>{t('trade.unrealizedPnl')}</th>\n </tr>\n </thead>\n <tbody>\n {positions.map((p, idx) => (\n <tr key={`${p.symbol}-${idx}`}>\n <td>{p.symbol}</td>\n <td style={{ color: directionColor(p.side === 'long' ? 1 : -1, colorMode) }}>\n {t(p.side === 'long' ? 'trade.long' : 'trade.short')}\n </td>\n <td>{p.size}</td>\n <td>{p.entryPrice !== undefined ? fmtPrice(p.entryPrice) : '—'}</td>\n <td style={p.unrealizedPnl !== undefined ? { color: directionColor(p.unrealizedPnl, colorMode) } : undefined}>\n {p.unrealizedPnl !== undefined ? `${p.unrealizedPnl >= 0 ? '+' : ''}${fmtPrice(p.unrealizedPnl)}` : '—'}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n )\n )}\n\n {activeTab === 'orders' && (\n orders === null ? (\n <div className={css.empty}>{t('trade.unavailable')}</div>\n ) : orders.length === 0 ? (\n <div className={css.empty}>{t('trade.empty')}</div>\n ) : (\n <table className={css.table}>\n <thead>\n <tr>\n <th>{t('trade.symbol')}</th>\n <th>{t('trade.side')}</th>\n <th>{t('trade.type')}</th>\n <th>{t('trade.price')}</th>\n <th>{t('trade.size')}</th>\n <th>{t('trade.filled')}</th>\n {onCancelOrder && <th>{t('trade.action')}</th>}\n </tr>\n </thead>\n <tbody>\n {orders.map((order, idx) => (\n <tr key={`${order.id}-${idx}`}>\n <td>{order.symbol}</td>\n <td style={{ color: directionColor(order.side === 'buy' ? 1 : -1, colorMode) }}>\n {t(order.side === 'buy' ? 'trade.buy' : 'trade.sell')}\n </td>\n <td>{t(order.type === 'market' ? 'trade.market' : 'trade.limit')}</td>\n <td>{order.price !== undefined ? fmtPrice(order.price) : '—'}</td>\n <td>{order.quantity}</td>\n <td>{order.filledQuantity ?? 0}</td>\n {onCancelOrder && (\n <td>\n <button\n type=\"button\"\n className={css.cancelBtn}\n disabled={cancelingId === order.id}\n onClick={() => {\n setCancelingId(order.id)\n void onCancelOrder(order.id, order.symbol).finally(() => {\n setCancelingId(null)\n })\n }}\n >\n {cancelingId === order.id ? t('trade.canceling') : t('trade.cancel')}\n </button>\n </td>\n )}\n </tr>\n ))}\n </tbody>\n </table>\n )\n )}\n\n {activeTab === 'fills' && (\n fills === null ? (\n <div className={css.empty}>{t('trade.unavailable')}</div>\n ) : fills.length === 0 ? (\n <div className={css.empty}>{t('trade.empty')}</div>\n ) : (\n <table className={css.table}>\n <thead>\n <tr>\n <th>{t('trade.time')}</th>\n <th>{t('trade.symbol')}</th>\n <th>{t('trade.side')}</th>\n <th>{t('trade.price')}</th>\n <th>{t('trade.size')}</th>\n </tr>\n </thead>\n <tbody>\n {fills.slice().reverse().map((fill, idx) => (\n <tr key={`${fill.id}-${idx}`}>\n <td style={{ color: 'var(--dsw-futu-text-muted, #787b86)' }}>\n {new Date(fill.timestamp).toLocaleString()}\n </td>\n <td>{fill.symbol}</td>\n <td style={{ color: directionColor(fill.side === 'buy' ? 1 : -1, colorMode) }}>\n {t(fill.side === 'buy' ? 'trade.buy' : 'trade.sell')}\n </td>\n <td>{fmtPrice(fill.price)}</td>\n <td>{fill.amount}</td>\n </tr>\n ))}\n </tbody>\n </table>\n )\n )}\n\n {activeTab === 'balances' && (\n balances === null ? (\n <div className={css.empty}>{t('trade.credentialHint')}</div>\n ) : balances.length === 0 ? (\n <div className={css.empty}>{t('trade.empty')}</div>\n ) : (\n <table className={css.table}>\n <thead>\n <tr>\n <th>{t('trade.drawer.asset')}</th>\n <th>{t('trade.drawer.available')}</th>\n <th>{t('trade.drawer.locked')}</th>\n <th>{t('trade.drawer.total')}</th>\n </tr>\n </thead>\n <tbody>\n {balances.map((b, idx) => (\n <tr key={`${b.asset}-${idx}`}>\n <td style={{ fontWeight: 600 }}>{b.asset}</td>\n <td>{fmtPrice(b.free)}</td>\n <td>{fmtPrice(b.locked)}</td>\n <td>{fmtPrice(b.free + b.locked)}</td>\n </tr>\n ))}\n </tbody>\n </table>\n )\n )}\n </div>\n )}\n </div>\n )\n}\n","// i18n-allow: paper trading local engine internal errors and comments\n/**\n * 本地模拟交易账本与撮合引擎(Paper Trading Store)。\n *\n * 核心设计:\n * 1. 纯本地安全隔离:所有模拟资金、模拟持仓、模拟订单与流水均存储在 localStorage,\n * 与真实券商/交易所账户 100% 物理隔离,永不发生真金外溢;\n * 2. 真实行情秒级撮合:根据当前标的最新 Ticker 价格执行撮合计算,支持市价单即刻成交、\n * 可用资金与持仓校验、持仓加权成本价与浮动盈亏(uPnL)动态跟踪;\n * 3. 一键出厂重置:支持随时重置模拟资产为初始 100,000 USDT/USD。\n */\n\nimport type { AccountBalance, Order, Position, TradeFill } from './types.js'\n\nexport interface PaperAccount {\n cash: number\n initialCash: number\n positions: Position[]\n orders: Order[]\n fills: TradeFill[]\n}\n\nconst STORAGE_KEY = 'dshtrading:paper:account:v1'\nconst DEFAULT_INITIAL_CASH = 100_000\n\nfunction loadStoredAccount(): PaperAccount {\n if (typeof window === 'undefined' || typeof window.localStorage?.getItem !== 'function') {\n return {\n cash: DEFAULT_INITIAL_CASH,\n initialCash: DEFAULT_INITIAL_CASH,\n positions: [],\n orders: [],\n fills: [],\n }\n }\n try {\n const raw = window.localStorage.getItem(STORAGE_KEY)\n if (raw) {\n const parsed = JSON.parse(raw) as Partial<PaperAccount>\n if (typeof parsed.cash === 'number' && Array.isArray(parsed.positions)) {\n return {\n cash: parsed.cash,\n initialCash: typeof parsed.initialCash === 'number' ? parsed.initialCash : DEFAULT_INITIAL_CASH,\n positions: parsed.positions,\n orders: Array.isArray(parsed.orders) ? parsed.orders : [],\n fills: Array.isArray(parsed.fills) ? parsed.fills : [],\n }\n }\n }\n } catch {\n /* 坏数据重置 */\n }\n return {\n cash: DEFAULT_INITIAL_CASH,\n initialCash: DEFAULT_INITIAL_CASH,\n positions: [],\n orders: [],\n fills: [],\n }\n}\n\nfunction saveStoredAccount(account: PaperAccount): void {\n if (typeof window === 'undefined' || typeof window.localStorage?.setItem !== 'function') return\n try {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(account))\n } catch {\n /* 忽略存储配额错误 */\n }\n}\n\nexport interface PaperOrderRequest {\n symbol: string\n side: 'buy' | 'sell'\n type: 'market' | 'limit'\n quantity: number\n price?: number\n currentPrice: number\n}\n\nclass PaperTradingStore {\n private account: PaperAccount\n private readonly listeners = new Set<() => void>()\n\n constructor() {\n this.account = loadStoredAccount()\n }\n\n getAccount(): PaperAccount {\n return this.account\n }\n\n getBalances(): AccountBalance[] {\n return [\n {\n asset: 'USDT (Demo)',\n free: this.account.cash,\n locked: 0,\n },\n ]\n }\n\n getPositions(): Position[] {\n return this.account.positions\n }\n\n getOrders(): Order[] {\n return this.account.orders\n }\n\n getFills(): TradeFill[] {\n return this.account.fills\n }\n\n /**\n * 模拟下单撮合。\n */\n placeOrder(req: PaperOrderRequest): Order {\n const { symbol, side, type, quantity, currentPrice } = req\n if (quantity <= 0) {\n throw new Error('委托数量必须大于 0')\n }\n const execPrice = type === 'limit' && req.price !== undefined && req.price > 0 ? req.price : currentPrice\n if (!Number.isFinite(execPrice) || execPrice <= 0) {\n throw new Error('未获取到有效成交价格,请稍后重试')\n }\n\n const orderId = `paper-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`\n const fillId = `fill-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`\n const now = Date.now()\n\n if (side === 'buy') {\n const requiredCash = quantity * execPrice\n if (this.account.cash < requiredCash) {\n throw new Error(`模拟账户可用资金不足(需 ¥${requiredCash.toFixed(2)},当前可用 ¥${this.account.cash.toFixed(2)})`)\n }\n\n this.account.cash -= requiredCash\n\n // 更新或新建持仓\n const existingPos = this.account.positions.find((p) => p.symbol === symbol && p.side === 'long')\n if (existingPos) {\n const totalCost = existingPos.size * (existingPos.entryPrice ?? execPrice) + quantity * execPrice\n const totalSize = existingPos.size + quantity\n const newEntryPrice = totalCost / totalSize\n this.account.positions = this.account.positions.map((p) =>\n p === existingPos\n ? {\n ...p,\n size: totalSize,\n entryPrice: newEntryPrice,\n timestamp: now,\n }\n : p,\n )\n } else {\n this.account.positions = [\n ...this.account.positions,\n {\n symbol,\n side: 'long',\n size: quantity,\n entryPrice: execPrice,\n unrealizedPnl: 0,\n timestamp: now,\n },\n ]\n }\n } else {\n // 卖出平多仓\n const existingPos = this.account.positions.find((p) => p.symbol === symbol && p.side === 'long')\n if (!existingPos || existingPos.size < quantity) {\n const available = existingPos ? existingPos.size : 0\n throw new Error(`模拟账户持仓不足(卖出需 ${quantity},当前持仓 ${available})`)\n }\n\n const receivedCash = quantity * execPrice\n this.account.cash += receivedCash\n\n const remainingSize = existingPos.size - quantity\n if (remainingSize <= 0) {\n this.account.positions = this.account.positions.filter((p) => p !== existingPos)\n } else {\n this.account.positions = this.account.positions.map((p) =>\n p === existingPos\n ? {\n ...p,\n size: remainingSize,\n timestamp: now,\n }\n : p,\n )\n }\n }\n\n const order: Order = {\n id: orderId,\n symbol,\n side,\n type,\n price: execPrice,\n quantity,\n filledQuantity: quantity,\n status: 'filled',\n timestamp: now,\n dryRun: true,\n }\n\n const fill: TradeFill = {\n id: fillId,\n symbol,\n side,\n price: execPrice,\n amount: quantity,\n fee: 0,\n timestamp: now,\n }\n\n this.account.orders = [order, ...this.account.orders]\n this.account.fills = [fill, ...this.account.fills]\n\n saveStoredAccount(this.account)\n this.notify()\n return order\n }\n\n /** 更新持仓浮动盈亏(根据最新行情价格推送) */\n updatePrices(prices: Record<string, number>): void {\n let changed = false\n const newPositions = this.account.positions.map((pos) => {\n const p = prices[pos.symbol]\n if (p !== undefined && p > 0 && pos.entryPrice !== undefined && pos.entryPrice > 0) {\n const pnl = Number(((p - pos.entryPrice) * pos.size).toFixed(2))\n if (pos.unrealizedPnl !== pnl || pos.markPrice !== p) {\n changed = true\n return {\n ...pos,\n markPrice: p,\n unrealizedPnl: pnl,\n }\n }\n }\n return pos\n })\n\n if (changed) {\n this.account.positions = newPositions\n saveStoredAccount(this.account)\n this.notify()\n }\n }\n\n /** 重置模拟账户 */\n resetAccount(initialCash = DEFAULT_INITIAL_CASH): void {\n this.account = {\n cash: initialCash,\n initialCash,\n positions: [],\n orders: [],\n fills: [],\n }\n saveStoredAccount(this.account)\n this.notify()\n }\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n return () => this.listeners.delete(listener)\n }\n\n private notify(): void {\n for (const listener of this.listeners) {\n try {\n listener()\n } catch {\n /* 忽略订阅者内部异常 */\n }\n }\n }\n}\n\nexport const paperTradingStore = new PaperTradingStore()\n","/**\n * 区间统计(2026-09-02):「区间统计」按钮框选一段K线后的纯计算层,\n * 与渲染/图表 API 零耦合(QuoteStage 持有 klines,TvChart 只上报逻辑下标区间)。\n *\n * 口径(对齐同花顺区间统计):\n * - 基准 = 区间首根收盘(首根自身的涨跌不计入区间涨跌幅);\n * - 区间涨跌幅 = (末根收盘 - 基准) / 基准 × 100;\n * - 振幅 = (区间最高 - 区间最低) / 基准 × 100;\n * - 上涨/下跌根数按各根收盘与前一根收盘比较(区间首根以前一根收盘为基准,\n * 区间首根无前根时回退开盘价)。\n */\nimport type { Kline } from './types.ts'\n\nexport interface RangeStats {\n /** 区间K线数(含两端)。 */\n bars: number\n /** 区间首根/末根开盘时间(epoch ms)。 */\n startTime: number\n endTime: number\n /** 区间涨跌幅(%)。 */\n changePercent: number\n /** 区间涨跌(绝对价差,末根收盘 - 基准)。 */\n change: number\n rangeHigh: number\n /** 区间最高所在根的 openTime。 */\n highTime: number\n rangeLow: number\n /** 区间最低所在根的 openTime。 */\n lowTime: number\n /** 区间振幅(%,相对基准)。 */\n amplitudePercent: number\n /** 区间成交量合计(各根 volume 直和)。 */\n volume: number\n /** 收盘高于/低于前一根收盘的根数。 */\n upBars: number\n downBars: number\n}\n\n/**\n * 计算 [start, end] 闭区间的统计。start/end 允许倒序与越界(内部钳位交换);\n * 区间为空(无数据 / 单点在数据集外)返回 null。\n */\nexport function computeRangeStats(klines: readonly Kline[], start: number, end: number): RangeStats | null {\n if (klines.length === 0) return null\n const lo = Math.max(0, Math.min(Math.floor(start), Math.floor(end)))\n const hi = Math.min(klines.length - 1, Math.max(Math.floor(start), Math.floor(end)))\n if (lo > hi) return null\n const first = klines[lo]\n const last = klines[hi]\n if (first === undefined || last === undefined) return null\n const base = first.close\n if (!Number.isFinite(base) || base <= 0) return null\n\n let rangeHigh = -Infinity\n let highTime = first.openTime\n let rangeLow = Infinity\n let lowTime = first.openTime\n let volume = 0\n let upBars = 0\n let downBars = 0\n let prevClose: number | undefined = lo > 0 ? klines[lo - 1]?.close : undefined\n for (let index = lo; index <= hi; index++) {\n const bar = klines[index]\n if (bar === undefined) continue\n if (bar.high > rangeHigh) {\n rangeHigh = bar.high\n highTime = bar.openTime\n }\n if (bar.low < rangeLow) {\n rangeLow = bar.low\n lowTime = bar.openTime\n }\n if (Number.isFinite(bar.volume)) volume += bar.volume\n const reference = prevClose ?? bar.open\n if (bar.close > reference) upBars++\n else if (bar.close < reference) downBars++\n prevClose = bar.close\n }\n\n return {\n bars: hi - lo + 1,\n startTime: first.openTime,\n endTime: last.openTime,\n changePercent: (last.close - base) / base * 100,\n change: last.close - base,\n rangeHigh,\n highTime,\n rangeLow,\n lowTime,\n amplitudePercent: (rangeHigh - rangeLow) / base * 100,\n volume,\n upBars,\n downBars,\n }\n}\n","/**\n * 市场状态与大盘指数名册:\n * 1. 提供各市场主流代表性大盘指数定义(MARKET_INDICES);\n * 2. 根据当地时区与开闭市规则计算交易时段状态(getMarketSessionStatus)。\n */\nimport type { MarketLocaleKey } from './contract.ts'\nimport type { MarketId } from './types.ts'\n\nexport interface MarketIndexDef {\n readonly symbol: string\n /** 指数显示名词典键(dshtrading.market,渲染处 t() 解析)。 */\n readonly nameKey: MarketLocaleKey\n}\n\n/** 各市场默认核心大盘指数 */\nexport const MARKET_INDICES: Record<MarketId, MarketIndexDef[]> = {\n cn: [\n { symbol: 'sh000001', nameKey: 'index.shComposite' },\n { symbol: 'sz399001', nameKey: 'index.szComponent' },\n { symbol: 'sz399006', nameKey: 'index.chinext' },\n ],\n hk: [\n { symbol: 'HSI', nameKey: 'index.hangSeng' },\n { symbol: 'HSTECH', nameKey: 'index.hangSengTech' },\n { symbol: 'HSCEI', nameKey: 'index.hscei' },\n ],\n us: [\n { symbol: '^GSPC', nameKey: 'index.sp500' },\n { symbol: '^IXIC', nameKey: 'index.nasdaq' },\n { symbol: '^DJI', nameKey: 'index.dowJones' },\n ],\n crypto: [\n { symbol: 'BTCUSDT', nameKey: 'index.btc' },\n { symbol: 'ETHUSDT', nameKey: 'index.eth' },\n { symbol: 'SOLUSDT', nameKey: 'index.sol' },\n ],\n}\n\nexport interface MarketSessionInfo {\n readonly statusKey: MarketLocaleKey\n readonly isOpen: boolean\n readonly color: string\n}\n\nfunction getZonedTime(date: Date, timeZone: string): { dayOfWeek: number; minutes: number } {\n try {\n const formatter = new Intl.DateTimeFormat('en-US', {\n timeZone,\n weekday: 'short',\n hour: 'numeric',\n minute: 'numeric',\n hourCycle: 'h23',\n })\n const parts = formatter.formatToParts(date)\n let weekdayStr = ''\n let hour = 0\n let minute = 0\n for (const part of parts) {\n if (part.type === 'weekday') weekdayStr = part.value\n else if (part.type === 'hour') hour = Number(part.value)\n else if (part.type === 'minute') minute = Number(part.value)\n }\n const days: Record<string, number> = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 }\n const dayOfWeek = days[weekdayStr] ?? date.getUTCDay()\n const minutes = hour * 60 + minute\n return { dayOfWeek, minutes }\n } catch {\n // 极端环境降级\n return { dayOfWeek: date.getUTCDay(), minutes: date.getUTCHours() * 60 + date.getUTCMinutes() }\n }\n}\n\n/**\n * 计算指定市场在给定时间的交易时段状态与指示灯颜色。\n * 绿灯: 交易中 (#2ba471)\n * 黄/橙灯: 集合竞价 / 午休 / 盘前 / 盘后 (#e37318)\n * 灰灯: 已收盘 / 周末休市 (#8e95a3)\n */\nexport function getMarketSessionStatus(market: MarketId, dateOrTimestamp: Date | number = Date.now()): MarketSessionInfo {\n if (market === 'crypto') {\n return { statusKey: 'status.trading', isOpen: true, color: '#2ba471' }\n }\n\n const date = typeof dateOrTimestamp === 'number' ? new Date(dateOrTimestamp) : dateOrTimestamp\n\n if (market === 'cn') {\n const { dayOfWeek, minutes } = getZonedTime(date, 'Asia/Shanghai')\n if (dayOfWeek === 0 || dayOfWeek === 6) {\n return { statusKey: 'status.closed', isOpen: false, color: '#8e95a3' }\n }\n // 09:15 - 09:30 集合竞价\n if (minutes >= 555 && minutes < 570) {\n return { statusKey: 'status.auction', isOpen: false, color: '#e37318' }\n }\n // 09:30 - 11:30 早盘交易\n if (minutes >= 570 && minutes < 690) {\n return { statusKey: 'status.trading', isOpen: true, color: '#2ba471' }\n }\n // 11:30 - 13:00 午间休市\n if (minutes >= 690 && minutes < 780) {\n return { statusKey: 'status.midday', isOpen: false, color: '#e37318' }\n }\n // 13:00 - 15:00 午盘交易\n if (minutes >= 780 && minutes < 900) {\n return { statusKey: 'status.trading', isOpen: true, color: '#2ba471' }\n }\n return { statusKey: 'status.closed', isOpen: false, color: '#8e95a3' }\n }\n\n if (market === 'hk') {\n const { dayOfWeek, minutes } = getZonedTime(date, 'Asia/Hong_Kong')\n if (dayOfWeek === 0 || dayOfWeek === 6) {\n return { statusKey: 'status.closed', isOpen: false, color: '#8e95a3' }\n }\n // 09:00 - 09:30 开盘竞价\n if (minutes >= 540 && minutes < 570) {\n return { statusKey: 'status.auction', isOpen: false, color: '#e37318' }\n }\n // 09:30 - 12:00 早市交易\n if (minutes >= 570 && minutes < 720) {\n return { statusKey: 'status.trading', isOpen: true, color: '#2ba471' }\n }\n // 12:00 - 13:00 午间休市\n if (minutes >= 720 && minutes < 780) {\n return { statusKey: 'status.midday', isOpen: false, color: '#e37318' }\n }\n // 13:00 - 16:00 午市交易\n if (minutes >= 780 && minutes < 960) {\n return { statusKey: 'status.trading', isOpen: true, color: '#2ba471' }\n }\n // 16:00 - 16:10 收市竞价\n if (minutes >= 960 && minutes < 970) {\n return { statusKey: 'status.auction', isOpen: false, color: '#e37318' }\n }\n return { statusKey: 'status.closed', isOpen: false, color: '#8e95a3' }\n }\n\n if (market === 'us') {\n const { dayOfWeek, minutes } = getZonedTime(date, 'America/New_York')\n if (dayOfWeek === 0 || dayOfWeek === 6) {\n return { statusKey: 'status.closed', isOpen: false, color: '#8e95a3' }\n }\n // 04:00 - 09:30 盘前\n if (minutes >= 240 && minutes < 570) {\n return { statusKey: 'status.preMarket', isOpen: false, color: '#e37318' }\n }\n // 09:30 - 16:00 正常盘中\n if (minutes >= 570 && minutes < 960) {\n return { statusKey: 'status.trading', isOpen: true, color: '#2ba471' }\n }\n // 16:00 - 20:00 盘后\n if (minutes >= 960 && minutes < 1200) {\n return { statusKey: 'status.afterHours', isOpen: false, color: '#e37318' }\n }\n return { statusKey: 'status.closed', isOpen: false, color: '#8e95a3' }\n }\n\n return { statusKey: 'status.closed', isOpen: false, color: '#8e95a3' }\n}\n","/**\n * 公告类数据源统一判别(2026-09-02 评审 M2):QuoteStage 知识图钉、NewsFeedPane\n * 公告 Tab 过滤、bridge 智能回退判定三处共用,避免谓词漂移——此前 QuoteStage\n * 认不出 sec-edgar/binance/okx,导致 us/crypto 公告进得了 Tab 却永不上图钉。\n *\n * 现役公告源:eastmoney-announcement(cn/hk 官方公告)、sec-edgar(us SEC 披露)、\n * binance / okx(crypto 交易所公报);关键词兜底覆盖未来新增的同类源。\n */\nexport function isAnnouncementSource(source: string): boolean {\n if (source === 'eastmoney-announcement' || source === 'sec-edgar' || source === 'binance' || source === 'okx') return true\n const lower = source.toLowerCase()\n return lower.includes('announcement')\n || lower.includes('exchange')\n || lower.includes('公告') // i18n-allow: 数据源名称关键词匹配谓词,非 UI 文案\n || lower.includes('交易所') // i18n-allow: 数据源中文关键词匹配谓词,非 UI 文案\n}\n","/**\n * 新闻情报流面板:位于 K 线图下方,展示当前品种相关的最新新闻或公告。\n *\n * 带有“发给 Agent 分析”按钮,实现富途风格的紧凑列表布局。\n *\n * 支持多数据源降级。如果在请求部分数据源时发生降级,会把失败源在底部作为 unavailable 提示。\n */\nimport { useEffect, useState } from 'react'\nimport type { MarketLocaleKey } from './contract.ts'\nimport { isAnnouncementSource } from './news-source.ts'\nimport css from './news-feed-pane.module.css'\n\nexport interface ClientNewsItem {\n source: string\n title: string\n url: string\n publishedAt: string\n}\n\nexport interface NewsFeedPaneProps {\n /** 新闻条目列表 */\n items: readonly ClientNewsItem[] | null\n /** 失败的数据源 */\n unavailable?: readonly string[] | undefined\n /** 是否占满高度(用于 Tab 独立页签视图) */\n fullHeight?: boolean | undefined\n /** 过滤类型:仅公告(exchange)、仅媒体快讯(media)或全部资讯(all) */\n filterType?: 'exchange' | 'media' | 'all' | undefined\n /** 国际化翻译函数 */\n t: (key: MarketLocaleKey, params?: Record<string, unknown>) => string\n /** 发给 Agent 分析 */\n fillComposer?: ((text: string) => Promise<void>) | undefined\n}\n\n/** 仅打开 http(s) 外链(纵深防御:url 来自外部 payload,不校验 scheme 直接 open)。 */\nfunction openExternal(url: string): void {\n if (!/^https?:\\/\\//i.test(url)) return\n window.open(url, '_blank', 'noopener')\n}\n\n/** 相对时间(locale 词典驱动:news.time.* 键,n 为数量占位)。 */\nfunction relativeTime(isoString: string, t: (key: MarketLocaleKey, params?: Record<string, unknown>) => string): string {\n const time = new Date(isoString).getTime()\n if (Number.isNaN(time)) return ''\n const diff = Date.now() - time\n const minutes = Math.floor(diff / 60000)\n if (minutes < 1) return t('news.time.justNow')\n if (minutes < 60) return t('news.time.minutesAgo', { n: String(minutes) })\n const hours = Math.floor(minutes / 60)\n if (hours < 24) return t('news.time.hoursAgo', { n: String(hours) })\n const days = Math.floor(hours / 24)\n if (days < 30) return t('news.time.daysAgo', { n: String(days) })\n const months = Math.floor(days / 30)\n if (months < 12) return t('news.time.monthsAgo', { n: String(months) })\n return t('news.time.yearsAgo', { n: String(Math.floor(months / 12)) })\n}\n\nfunction getSourceType(source: string): string {\n if (isAnnouncementSource(source)) return 'exchange'\n if (source.toLowerCase().includes('rss')) return 'rss'\n return 'media'\n}\n\n/** 数据源 → 显示名(词典键驱动;未收录的源 id 原样展示)。 */\nconst SOURCE_LABEL_KEY: Record<string, MarketLocaleKey> = {\n 'eastmoney-announcement': 'news.source.eastmoneyAnnouncement',\n 'eastmoney': 'news.source.eastmoney',\n 'hkex-announcement': 'news.source.hkexAnnouncement',\n 'cninfo-announcement': 'news.source.cninfoAnnouncement',\n 'sec-edgar': 'news.source.secEdgar',\n 'binance': 'news.source.binance',\n 'okx': 'news.source.okx',\n 'coindesk': 'news.source.coindesk',\n 'theblock': 'news.source.theblock',\n 'cointelegraph': 'news.source.cointelegraph',\n 'decrypt': 'news.source.decrypt',\n}\n\nfunction formatSourceLabel(source: string, t: (key: MarketLocaleKey, params?: Record<string, unknown>) => string): string {\n const key = SOURCE_LABEL_KEY[source]\n if (key !== undefined) return t(key)\n const lower = source.toLowerCase()\n if (lower.includes('yahoo')) return t('news.source.yahoo')\n if (lower.includes('google')) return t('news.source.google')\n return source\n}\n\nexport function NewsFeedPane({ items, unavailable, fullHeight = false, filterType = 'all', t, fillComposer }: NewsFeedPaneProps): React.JSX.Element {\n const [, setNow] = useState(Date.now())\n \n // 每分钟更新一次相对时间\n useEffect(() => {\n const timer = setInterval(() => setNow(Date.now()), 60000)\n return () => clearInterval(timer)\n }, [])\n\n const filteredItems = items === null ? null : (\n filterType === 'exchange'\n ? items.filter(it => getSourceType(it.source) === 'exchange')\n : filterType === 'media'\n ? items.filter(it => getSourceType(it.source) !== 'exchange')\n : items\n )\n\n const rootClass = `${css.pane} ${fullHeight ? css.fullHeight : ''}`\n\n if (filteredItems === null) {\n return (\n <div className={rootClass} data-dshtrading-news-feed=\"\">\n <div className={css.empty}>{filterType === 'exchange' ? t('news.empty.exchangeNotReady') : t('news.empty.mediaNotActive')}</div>\n </div>\n )\n }\n\n if (filteredItems.length === 0) {\n return (\n <div className={rootClass} data-dshtrading-news-feed=\"\">\n <div className={css.empty}>{filterType === 'exchange' ? t('news.empty.noAnnouncements') : t('news.empty.noNews')}</div>\n </div>\n )\n }\n\n return (\n <div className={rootClass} data-dshtrading-news-feed=\"\">\n <ul className={css.list}>\n {filteredItems.map((item, index) => (\n <li key={`${item.url}-${index}`} className={css.item} onClick={() => openExternal(item.url)}>\n <span className={css.source} data-type={getSourceType(item.source)}>\n {formatSourceLabel(item.source, t)}\n </span>\n <span className={css.title} title={item.title}>\n {item.title}\n </span>\n <span className={css.time}>\n {relativeTime(item.publishedAt, t)}\n </span>\n {fillComposer !== undefined && (\n <button\n className={css.sendBtn}\n onClick={(e) => {\n e.stopPropagation()\n fillComposer(`📰 ${item.title}\\n${item.url}`).catch(console.error)\n }}\n title={t('news.sendToAgentTitle')}\n >\n ↦ Agent\n </button>\n )}\n </li>\n ))}\n </ul>\n {unavailable !== undefined && unavailable.length > 0 && (\n <div className={css.degraded}>\n {t('news.degraded', { sources: unavailable.join(', ') })}\n </div>\n )}\n </div>\n )\n}\n","import * as React from 'react'\nimport type { MarketLocaleKey } from './contract.ts'\nimport css from './marker-tooltip.module.css'\n\nexport interface SignalTooltipData {\n action: 'entry' | 'exit'\n price: number\n reason: string\n time: number\n /** 匹配的交易记录(可选) */\n trade?: {\n entryPrice: number\n exitPrice: number\n returnPercent: number\n profit: number\n holdingBars: number\n }\n}\n\nexport interface KnowledgeTooltipData {\n title: string\n credibility: 'high' | 'medium' | 'low'\n cardId: string\n}\n\nexport interface MarkerTooltipProps {\n /** 绝对定位 X(TvChart 容器坐标系) */\n x: number\n /** 绝对定位 Y(TvChart 容器坐标系) */\n y: number\n /** 图表容器尺寸(越界翻转钳位基准,与 x/y 同坐标系) */\n containerWidth: number\n containerHeight: number\n /** 策略信号数据(与 knowledge 互斥) */\n signal?: SignalTooltipData | undefined\n /** 知识事件数据(与 signal 互斥) */\n knowledge?: KnowledgeTooltipData | undefined\n /** 行情词典翻译函数(dshtrading.market)。 */\n t: (key: MarketLocaleKey, params?: Record<string, unknown>) => string\n}\n\nexport function MarkerTooltip({ x, y, containerWidth, containerHeight, signal, knowledge, t }: MarkerTooltipProps): React.JSX.Element | null {\n if (!signal && !knowledge) return null\n\n // 智能定位:X/Y 任一轴越界时向另一侧翻转,并钳在容器内。\n const tooltipWidth = 280\n // Tooltip 高度估算(signal 含交易详情取上限),翻转时据此上移。\n const estimatedHeight = signal?.trade !== undefined ? 230 : 150\n const gap = 12\n const flipX = x + gap + tooltipWidth > containerWidth\n const left = Math.max(0, flipX ? x - gap - tooltipWidth : x + gap)\n const flipY = y + gap + estimatedHeight > containerHeight\n const top = Math.max(0, flipY ? y - gap - estimatedHeight : y + gap)\n\n const style: React.CSSProperties = {\n left: `${left}px`,\n top: `${top}px`,\n }\n\n return (\n <div className={css.tooltip} style={style}>\n {signal && <SignalContent signal={signal} t={t} />}\n {knowledge && <KnowledgeContent knowledge={knowledge} t={t} />}\n </div>\n )\n}\n\nfunction SignalContent({ signal, t }: { signal: SignalTooltipData; t: (key: MarketLocaleKey, params?: Record<string, unknown>) => string }): React.JSX.Element {\n const isEntry = signal.action === 'entry'\n const headerClass = isEntry ? css.headerEntry : css.headerExit\n const headerIcon = isEntry ? '🟢' : '🔴'\n const headerText = isEntry ? t('tooltip.signal.entry') : t('tooltip.signal.exit')\n\n return (\n <>\n <div className={`${css.header} ${headerClass}`}>\n {headerIcon} {headerText} · {signal.reason}\n </div>\n <div className={css.row}>\n <span className={css.label}>{t('tooltip.label.price')}</span>\n <span className={css.value}>{signal.price}</span>\n </div>\n <div className={css.row}>\n <span className={css.label}>{t('tooltip.label.time')}</span>\n <span className={css.value}>{new Date(signal.time).toLocaleString()}</span>\n </div>\n\n {signal.trade && (\n <>\n <hr className={css.divider} />\n <div className={css.row}>\n <span className={css.label}>{t('tooltip.label.return')}</span>\n <span className={`${css.value} ${signal.trade.returnPercent >= 0 ? css.profit : css.loss}`}>\n {signal.trade.returnPercent > 0 ? '+' : ''}{signal.trade.returnPercent.toFixed(2)}%\n </span>\n </div>\n <div className={css.row}>\n <span className={css.label}>{t('tooltip.label.profit')}</span>\n <span className={`${css.value} ${signal.trade.profit >= 0 ? css.profit : css.loss}`}>\n {signal.trade.profit > 0 ? '+' : ''}{signal.trade.profit.toFixed(2)}\n </span>\n </div>\n <div className={css.row}>\n <span className={css.label}>{t('tooltip.label.holding')}</span>\n <span className={css.value}>{t('tooltip.unit.bars', { n: String(signal.trade.holdingBars) })}</span>\n </div>\n </>\n )}\n </>\n )\n}\n\nfunction KnowledgeContent({ knowledge, t }: { knowledge: KnowledgeTooltipData; t: (key: MarketLocaleKey, params?: Record<string, unknown>) => string }): React.JSX.Element {\n const badgeClass =\n knowledge.credibility === 'high' ? css.badgeHigh :\n knowledge.credibility === 'medium' ? css.badgeMedium :\n css.badgeLow\n\n const badgeIcon =\n knowledge.credibility === 'high' ? '✅' :\n knowledge.credibility === 'medium' ? '⚠️' :\n '❌'\n\n const badgeText =\n knowledge.credibility === 'high' ? t('tooltip.credibility.high') :\n knowledge.credibility === 'medium' ? t('tooltip.credibility.medium') :\n t('tooltip.credibility.low')\n\n return (\n <>\n <div className={`${css.header} ${css.headerKnowledge}`}>\n 📌 {t('tooltip.knowledge.header')}\n </div>\n <div className={css.row}>\n <span className={css.label}>{knowledge.title}</span>\n </div>\n <div className={css.row}>\n <span className={`${css.badge} ${badgeClass}`}>\n {badgeIcon} {badgeText}\n </span>\n </div>\n </>\n )\n}\n","/**\n * 图表标记状态 store(Issue #41):管理策略回测信号标记与知识事件图钉的显隐\n * 与数据。仿 chart-state.ts 模式:无依赖可观测 + localStorage 持久化(仅布尔\n * 开关持久化;回测结果为内存态——切标的时清空,不持久化巨量序列数据)。\n *\n * @module marker-state\n */\nimport { createObservable, readJson, writeJson } from './store.ts'\nimport type { WritableObservable } from './store.ts'\n\nconst MARKER_KEY = 'dshtrading.markers.v1'\n\n/* ── 策略信号标记数据(从 @dshtrading/strategies 的 BacktestResult 提取) ── */\n\n/** 图表标记用的信号点(轻量子集,不含完整 BacktestResult)。 */\nexport interface ChartSignalMarker {\n /** K 线 openTime(epoch ms)。 */\n readonly time: number\n /** 信号动作:entry=入场(绿色买入箭头)、exit=出场(红色卖出箭头)。 */\n readonly action: 'entry' | 'exit'\n /** 信号确认时收盘价(展示参考)。 */\n readonly price: number\n /** 人类可读的原因解释(Tooltip 直接展示)。 */\n readonly reason: string\n}\n\n/** 图表标记用的交易记录(Tooltip 展示持仓结果)。 */\nexport interface ChartTradeRecord {\n readonly entryTime: number\n readonly entryPrice: number\n readonly exitTime: number\n readonly exitPrice: number\n readonly returnPercent: number\n readonly profit: number\n readonly holdingBars: number\n readonly exitReason: string\n}\n\n/* ── 知识事件标记数据(从 @dshtrading/knowledge 的 KnowledgeCard 提取) ── */\n\n/** 图表标记用的知识事件点。 */\nexport interface ChartKnowledgeMarker {\n /** 事件日期(epoch ms,从 source.publishedAt 或 createdAt 解析)。 */\n readonly time: number\n /** 知识卡片标题。 */\n readonly title: string\n /** 卡片 id(点击时查找完整卡片用)。 */\n readonly cardId: string\n /** 可信度。 */\n readonly credibility: 'high' | 'medium' | 'low'\n}\n\n/* ── 状态定义 ── */\n\nexport interface MarkerState {\n /** 显示策略回测买卖信号标记。 */\n showSignals: boolean\n /** 显示知识研报/事件图钉。 */\n showKnowledgeEvents: boolean\n /** 当前选中的策略 ID(图表内快速回测用)。 */\n activeStrategyId: string | null\n}\n\n/** 持久化到 localStorage 的字段子集。 */\ninterface PersistedMarkerState {\n showSignals: boolean\n showKnowledgeEvents: boolean\n activeStrategyId: string | null\n}\n\nfunction initialState(): MarkerState {\n const persisted = readJson<PersistedMarkerState | null>(MARKER_KEY, null)\n return {\n showSignals: persisted?.showSignals ?? false,\n showKnowledgeEvents: persisted?.showKnowledgeEvents ?? false,\n activeStrategyId: persisted?.activeStrategyId ?? null,\n }\n}\n\nexport interface MarkerStateStore extends WritableObservable<MarkerState> {\n /** 切换策略信号标记显隐。 */\n toggleSignals(): void\n /** 切换知识事件图钉显隐。 */\n toggleKnowledgeEvents(): void\n /** 设置当前选中策略 ID(null = 清除选中)。 */\n setActiveStrategy(id: string | null): void\n}\n\nexport function createMarkerStateStore(): MarkerStateStore {\n const store = createObservable<MarkerState>(initialState())\n\n const persist = (): void => {\n const s = store.getSnapshot()\n writeJson(MARKER_KEY, {\n showSignals: s.showSignals,\n showKnowledgeEvents: s.showKnowledgeEvents,\n activeStrategyId: s.activeStrategyId,\n })\n }\n\n return {\n ...store,\n toggleSignals() {\n store.update(s => ({ ...s, showSignals: !s.showSignals }))\n persist()\n },\n toggleKnowledgeEvents() {\n store.update(s => ({ ...s, showKnowledgeEvents: !s.showKnowledgeEvents }))\n persist()\n },\n setActiveStrategy(id) {\n store.update(s => ({ ...s, activeStrategyId: id }))\n persist()\n },\n }\n}\n","/**\n * 行情面板主体(中栏 quote 视图):富途牛牛视觉风格。\n * 顶部报价头 + K线图 + 周期胶囊条 + 技术指标选择器 +\n * 主图指标读数行(副图指标读数在 TvChart 各自 pane 内)+\n * 底部横向指标快捷词条带 + 底部市场指数状态栏。\n */\nimport { useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react'\nimport {\n fetchKlines, fetchTickers, fetchDerivatives, fetchDerivativesHistory, fetchOrderbook, fetchRecentTrades,\n fetchTradePositions, fetchTradeBalances, fetchTradeOpenOrders, fetchTradeFills, placeGuiOrder,\n cancelGuiOrder,\n} from './api.ts'\nimport { TvChart, toBar, toVolume } from './TvChart.tsx'\nimport type { TvChartCapture, TvIndicatorGroup } from './TvChart.tsx'\nimport { composeQuoteMessage } from './compose-quote.ts'\nimport type { QuoteMessageCopy } from './compose-quote.ts'\nimport type { SendImageInput } from './fill-composer.ts'\nimport { FundamentalsStage } from './FundamentalsStage.tsx'\nimport { DerivativesPane } from './DerivativesPane.tsx'\nimport { DerivativesStage } from './DerivativesStage.tsx'\nimport { OrderbookPane } from './OrderbookPane.tsx'\nimport { OrderPanel } from './OrderPanel.tsx'\nimport { TradeDrawer } from './TradeDrawer.tsx'\nimport { paperTradingStore } from './paper-trading-store.ts'\nimport { computeRangeStats } from './range-stats.ts'\nimport { IconIndicators, IconSend } from './icons.tsx'\nimport type { MarketLocaleKey } from './contract.ts'\nimport {\n INTRADAY_INTERVALS, changePercent, directionColor,\n fmtChange, fmtClock, fmtCompact, fmtFundingRate, fmtPercent, fmtPrice, scaleLocaleOf,\n} from './format.ts'\nimport { indicators, isCustomIndicator } from './indicator-registry.ts'\nimport type { IndicatorDefinition, IndicatorInstance } from '@dshtrading/indicators'\nimport { MARKET_INTERVALS } from './store.ts'\nimport type { SelectionState } from './store.ts'\nimport type { ChartState } from './chart-state.ts'\nimport type { AccountBalance, DerivativesData, DerivativesHistory, Order, Orderbook, Position, TradeFill, TradeTick } from './types.ts'\nimport { colorModeStore } from './color-mode.ts'\nimport { MARKET_INDICES, getMarketSessionStatus } from './market-status.ts'\nimport type { Kline, MarketId, Ticker } from './types.ts'\nimport { usePoll } from './usePoll.ts'\nimport { fetchNews } from './api.ts'\nimport type { ClientNewsItem } from './api.ts'\nimport { NewsFeedPane } from './NewsFeedPane.tsx'\nimport { MarkerTooltip } from './MarkerTooltip.tsx'\nimport type { MarkerHoverInfo } from './TvChart.tsx'\nimport { createMarkerStateStore } from './marker-state.ts'\nimport { isAnnouncementSource } from './news-source.ts'\nimport type { ChartSignalMarkerInput, ChartKnowledgeMarkerInput } from './TvChart.tsx'\nimport css from './quote-stage.module.css'\n\nconst INTERVAL_KEY_PREFIX = 'dshtrading.interval.'\nconst ORDERBOOK_OPEN_KEY = 'dshtrading.orderbook.open'\nconst TRADE_DESK_OPEN_KEY = 'dshtrading.tradeDesk.open'\nconst TICKER_POLL_MS = 5000\nconst KLINE_RESYNC_MS = 30000\n// 衍生品指标快照轮询(issue #38):一次刷新 = 2~5 个上游公共端点调用,取 30s\n// 对齐 K 线 resync 节奏,避免放大限频消耗(funding 8h 才变,OI 30s 粒度够看)。\nconst DERIVATIVES_POLL_MS = 30000\n// 衍生品历史序列(issue #54,页签趋势卡):8h 一期的费率与 1D OI 变化极慢,\n// 5min 节奏足够;仅页签激活时拉取,省上游配额。\nconst DERIVATIVES_HISTORY_POLL_MS = 300000\n// 盘口/分笔轮询(issue #39):竖栏打开才拉;一次刷新 = depth + trades 两请求,\n// 4s 在「盯盘时效」与公共端点限频之间取衡。\nconst ORDERBOOK_POLL_MS = 4000\n// 交易台只读轮询(issue #40):15s 慢节奏(签名端点 + 个人账户面,无盯盘时效要求)。\nconst TRADE_DESK_POLL_MS = 15000\n// 盘中周期 K 线根数按市场区分:crypto 取 300——OKX 单请求上限 300,图表每 30s\n// resync 一次,不触发游标翻页、不放大限频消耗;其余市场取 500。日 K 深度需求由\n// 1d 分支单独走 DAILY_LIMIT。\nconst KLINE_LIMIT_DEFAULT = 500\nconst KLINE_LIMIT_BY_MARKET: Partial<Record<MarketId, number>> = { crypto: 300 }\nconst klineLimit = (market: MarketId): number => KLINE_LIMIT_BY_MARKET[market] ?? KLINE_LIMIT_DEFAULT\n// 日 K(头部参考 + 日线图表):750 根 ≈ 三年交易日;OKX 超出单请求 300 的部分由连接器 after 游标翻页补足。\nconst DAILY_LIMIT = 750\n\nconst INTERVAL_KEY: Record<string, MarketLocaleKey> = {\n '1m': 'interval.1m',\n '3m': 'interval.3m',\n '5m': 'interval.5m',\n '10m': 'interval.10m',\n '15m': 'interval.15m',\n '30m': 'interval.30m',\n '1h': 'interval.1h',\n '4h': 'interval.4h',\n '1d': 'interval.1d',\n '1w': 'interval.1w',\n '1M': 'interval.1M',\n}\n\nexport type Translate = (key: MarketLocaleKey, params?: Record<string, unknown>) => string\n\nexport type UseStoreState<TState> = <TSelected>(selector: (state: TState) => TSelected) => TSelected\n\nexport interface QuoteStageProps {\n t: Translate\n useSelection: UseStoreState<SelectionState>\n useChart: UseStoreState<ChartState>\n toggleIndicator: (id: string) => void\n setIndicatorParams: (id: string, params: Record<string, number>) => void\n /** 删除自定义指标(issue #30 删除入口;仅自定义行渲染按钮)。 */\n deleteIndicator: (id: string) => Promise<boolean>\n /** 行情上下文 → 会话输入框(只填入不发送;shell 注入,缺席时按钮不渲染)。 */\n fillComposer?: (text: string, image?: SendImageInput) => Promise<void>\n}\n\nfunction inferMarketFromSymbol(symbol?: string): MarketId | undefined {\n if (!symbol) return undefined\n const sym = symbol.toUpperCase()\n if (sym.endsWith('.SH') || sym.endsWith('.SZ') || /^\\d{6}$/.test(sym)) return 'cn'\n if (sym.endsWith('.HK') || /^\\d{5}$/.test(sym)) return 'hk'\n if (sym.includes('USDT') || sym.includes('BTC') || sym.includes('ETH')) return 'crypto'\n return 'us'\n}\n\ntype SendState = 'idle' | 'sending' | 'sent' | 'error'\n\n/** 信号 reason 的币种符号(按市场;crypto 以 USD 计价近似)。 */\nconst CURRENCY_SYMBOL: Record<MarketId, string> = { cn: '¥', hk: 'HK$', us: '$', crypto: '$' }\n\nexport function QuoteStage({ t, useSelection, useChart, toggleIndicator, setIndicatorParams, deleteIndicator, fillComposer }: QuoteStageProps) {\n const instrument = useSelection(value => value.instrument)\n const market: MarketId | undefined = (instrument?.market && ['crypto', 'us', 'cn', 'hk'].includes(instrument.market))\n ? (instrument.market as MarketId)\n : inferMarketFromSymbol(instrument?.symbol)\n const symbol = instrument?.symbol\n const activeMarket: MarketId = market ?? 'crypto'\n\n const colorMode = useSyncExternalStore(colorModeStore.subscribe, colorModeStore.getSnapshot)\n // 数值紧凑单位 locale(亿/万 vs K/M/B):词典哨兵键判定,随语言切换响应。\n const numLocale = scaleLocaleOf(t)\n\n const instances = useChart(state => state.instances)\n // 指标名册修订号:插件晚于首帧合并 definition 时触发重渲染。\n const rosterVersion = useSyncExternalStore(indicators.subscribe, indicators.getVersion)\n\n const [chartInterval, setIntervalFor] = useState<string>(() => {\n if (market === undefined) return '1d'\n return readInterval(market)\n })\n const [daily, setDaily] = useState<Kline[] | null>(null)\n const [klines, setKlines] = useState<Kline[] | null>(null)\n const [kError, setKError] = useState<string | null>(null)\n const [ticker, setTicker] = useState<Ticker | null>(null)\n const [hoverIndex, setHoverIndex] = useState<number | null>(null)\n const [pickerOpen, setPickerOpen] = useState(false)\n const [editingIndicator, setEditingIndicator] = useState<string | null>(null)\n const [sendState, setSendState] = useState<SendState>('idle')\n /** 行情板块页签(图表 | 基本面 | 新闻 | 公告):跨标的保持。 */\n const [stageTab, setStageTab] = useState<'chart' | 'derivatives' | 'fundamentals' | 'news' | 'announcements'>('chart')\n // 渲染期页签归一(issue #54 评审 L3):衍生品页签是 crypto 专属,切到非 crypto\n // 市场时渲染直接按图表页签处理——不等 useEffect 纠偏(paint 后才跑会闪一帧公告)。\n const viewTab = stageTab === 'derivatives' && market !== 'crypto' ? 'chart' : stageTab\n /** 衍生品指标快照(issue #38,crypto 专属;null = 未实现/失败 → 面板整体隐藏)。 */\n const [derivatives, setDerivatives] = useState<DerivativesData | null>(null)\n /** 衍生品历史序列(issue #54;页签激活才拉;null = 未实现/失败 → 趋势卡隐藏)。 */\n const [derivativesHistory, setDerivativesHistory] = useState<DerivativesHistory | null>(null)\n /** 历史首个应答是否已落地(区分「加载中」与「不可用」,评审 L2)。 */\n const [derivativesHistoryLoaded, setDerivativesHistoryLoaded] = useState(false)\n /** 盘口竖栏(issue #39):开关跨标的/会话记忆;数据 null = 数据源未提供(降级提示)。 */\n const [orderbookOpen, setOrderbookOpen] = useState<boolean>(() => readOrderbookOpen())\n const [orderbook, setOrderbook] = useState<Orderbook | null>(null)\n const [orderbookLoading, setOrderbookLoading] = useState(false)\n const [trades, setTrades] = useState<TradeTick[] | null>(null)\n /** 交易工作台(issue #40):默认关(安全敏感面);只读数据 null = 服务未挂载/凭证缺失。 */\n const [tradeDeskOpen, setTradeDeskOpen] = useState<boolean>(() => readTradeDeskOpen())\n /** 底部全宽资产与委托抽屉:默认折叠状态栏,支持展开与切换 Tabs。 */\n const [tradeDrawerOpen, setTradeDrawerOpen] = useState<boolean>(false)\n const [tradePositions, setTradePositions] = useState<Position[] | null>(null)\n const [tradeBalances, setTradeBalances] = useState<AccountBalance[] | null>(null)\n const [tradeOrders, setTradeOrders] = useState<Order[] | null>(null)\n const [tradeFills, setTradeFills] = useState<TradeFill[] | null>(null)\n\n /** 全局交易模式:'live' 实盘 vs 'paper' 模拟盘(默认从 localStorage 读取,缺省 live) */\n const [tradeMode, setTradeMode] = useState<'live' | 'paper'>(() => {\n try {\n if (typeof window !== 'undefined' && typeof window.localStorage?.getItem === 'function') {\n const stored = window.localStorage.getItem('dshtrading:trade:mode')\n if (stored === 'paper' || stored === 'live') return stored\n }\n } catch {\n /* 浏览器隐私模式或无头测试环境安全降级 */\n }\n return 'live'\n })\n\n // 监听模拟账本变动\n const [, setPaperTick] = useState(0)\n useEffect(() => {\n return paperTradingStore.subscribe(() => {\n setPaperTick((t) => t + 1)\n })\n }, [])\n\n const handleToggleTradeMode = (mode: 'live' | 'paper') => {\n setTradeMode(mode)\n try {\n if (typeof window !== 'undefined' && typeof window.localStorage?.setItem === 'function') {\n window.localStorage.setItem('dshtrading:trade:mode', mode)\n }\n } catch {\n /* 忽略存储异常 */\n }\n if (mode === 'paper') {\n // 切换到模拟盘时,若交易台未开,自动打开方便体验\n if (!tradeDeskOpen) {\n setTradeDeskOpen(true)\n writeTradeDeskOpen(true)\n }\n }\n }\n\n // 标的行情价格变动时实时更新模拟持仓浮盈\n useEffect(() => {\n if (ticker?.price && symbol) {\n paperTradingStore.updatePrices({ [symbol]: ticker.price })\n }\n }, [ticker?.price, symbol])\n\n const activePositions = tradeMode === 'paper' ? paperTradingStore.getPositions() : tradePositions\n const activeBalances = tradeMode === 'paper' ? paperTradingStore.getBalances() : tradeBalances\n const activeOrders = tradeMode === 'paper' ? paperTradingStore.getOrders() : tradeOrders\n const activeFills = tradeMode === 'paper' ? paperTradingStore.getFills() : tradeFills\n const paperCash = paperTradingStore.getAccount().cash\n\n // 当前标的持仓量与可用现金计算(供下单面板精确计算 25%/50%/75%/100% 比例填单)\n const currentPosition = useMemo(() => {\n if (!symbol) return undefined\n const list = activePositions ?? []\n return list.find((p) => p.symbol.toUpperCase() === symbol.toUpperCase() && p.side === 'long')\n }, [symbol, activePositions])\n\n const currentPositionSize = currentPosition?.size ?? 0\n\n const availableCash = useMemo(() => {\n if (tradeMode === 'paper') {\n return paperCash\n }\n if (!activeBalances || activeBalances.length === 0) return 0\n const targetAsset = activeMarket === 'crypto' ? 'USDT' : activeMarket === 'us' ? 'USD' : activeMarket === 'hk' ? 'HKD' : 'CNY'\n const found = activeBalances.find((b) => b.asset.toUpperCase() === targetAsset.toUpperCase())\n ?? activeBalances.find((b) => /USD|USDT|CNY|HKD|CASH/i.test(b.asset))\n ?? activeBalances[0]\n return found ? found.free : 0\n }, [tradeMode, paperCash, activeBalances, activeMarket])\n /** 区间统计:框选模式开 + 已选逻辑下标区间(TvChart 上报,面板消费)。 */\n const [rangeMode, setRangeMode] = useState(false)\n const [rangeSelection, setRangeSelection] = useState<{ start: number; end: number } | null>(null)\n /** TvChart 注册的截图回调(图表未渲染/已卸载 = null)。 */\n const captureRef = useRef<(() => TvChartCapture | null) | null>(null)\n\n // ── 新闻与公告(issue #37)────────────────────────────────────\n const [newsItems, setNewsItems] = useState<ClientNewsItem[] | null>(null)\n const [newsUnavailable, setNewsUnavailable] = useState<string[]>([])\n\n // ── K 线标记(issue #41)──────────────────────────────────────\n const [markerStore] = useState(() => createMarkerStateStore())\n const markerState = useSyncExternalStore(markerStore.subscribe, markerStore.getSnapshot)\n const [markerHover, setMarkerHover] = useState<MarkerHoverInfo | null>(null)\n\n const [clock, setClock] = useState(() => formatStatusBarClock(Date.now()))\n const [indexTickers, setIndexTickers] = useState<Record<string, Ticker>>({})\n\n // 状态栏秒级时钟\n useEffect(() => {\n const timer = setInterval(() => { setClock(formatStatusBarClock(Date.now())) }, 1000)\n return () => clearInterval(timer)\n }, [])\n\n // 市场时段状态(随秒钟与激活市场自动刷新)\n const sessionStatus = useMemo(() => {\n return getMarketSessionStatus(activeMarket, Date.now())\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeMarket, clock])\n\n const indexDefs = MARKET_INDICES[activeMarket] ?? []\n\n // 底部大盘指数轮询:按当前激活市场拉取对应核心指数\n usePoll(async () => {\n if (indexDefs.length === 0) return\n try {\n const symbols = indexDefs.map(def => def.symbol)\n const outcome = await fetchTickers(activeMarket, symbols)\n const next: Record<string, Ticker> = {}\n for (const sym of symbols) {\n const res = outcome[sym]\n if (res?.ok) next[sym] = res.ticker\n }\n setIndexTickers(next)\n } catch {\n /* 下轮重试 */\n }\n }, TICKER_POLL_MS, [activeMarket])\n\n // 周期记忆(每市场独立);切标的时读该市场的上次周期。\n useEffect(() => {\n if (market !== undefined) setIntervalFor(readInterval(market))\n }, [market])\n\n // K线取数 = poll:挂载/换标的/换周期立即触发,此后 30s resync。\n const requestRef = useRef('')\n usePoll(async () => {\n if (!market || !symbol) return\n const request = `${market}:${symbol}:${chartInterval}`\n requestRef.current = request\n try {\n const rows = await fetchKlines(market, symbol, chartInterval, chartInterval === '1d' ? DAILY_LIMIT : klineLimit(market))\n if (requestRef.current !== request) return\n setKlines(rows)\n setKError(null)\n } catch (error) {\n if (requestRef.current !== request) return\n setKError(String((error as { message?: string })?.message ?? error))\n }\n }, KLINE_RESYNC_MS, [market, symbol, chartInterval])\n\n // 日K参考(头部涨跌/昨收):每标的只拉一次。\n useEffect(() => {\n if (!market || !symbol) return\n let cancelled = false\n fetchKlines(market, symbol, '1d', DAILY_LIMIT)\n .then((rows) => { if (!cancelled) setDaily(rows) })\n .catch(() => { /* 头部统计缺省 */ })\n return () => { cancelled = true }\n }, [market, symbol])\n\n // 衍生品指标轮询(issue #38,仅 crypto;现货输入由连接器升到对应永续)。\n // 竞态守卫(issue #54 评审 M3):换标的后在途响应丢弃,不覆盖新标的 state。\n const derivativesRequestRef = useRef('')\n usePoll(async () => {\n if (market !== 'crypto' || symbol === undefined) return\n const request = `${market}:${symbol}`\n derivativesRequestRef.current = request\n const data = await fetchDerivatives(market, symbol)\n if (derivativesRequestRef.current !== request) return\n setDerivatives(data)\n }, DERIVATIVES_POLL_MS, [market, symbol])\n\n // 衍生品历史序列轮询(issue #54,仅 crypto + 衍生品页签激活)。\n // 竞态守卫同款:5min 周期下旧标的慢响应可挂很久,必须丢弃(评审 M3)。\n const derivativesHistoryRequestRef = useRef('')\n usePoll(async () => {\n if (stageTab !== 'derivatives' || market !== 'crypto' || symbol === undefined) return\n const request = `${market}:${symbol}`\n derivativesHistoryRequestRef.current = request\n const history = await fetchDerivativesHistory(market, symbol)\n if (derivativesHistoryRequestRef.current !== request) return\n setDerivativesHistory(history)\n // L2:首个应答落地(无论成败)即离开「加载中」,null 从此可读作「不可用」。\n setDerivativesHistoryLoaded(true)\n }, DERIVATIVES_HISTORY_POLL_MS, [stageTab, market, symbol])\n\n // 盘口/分笔轮询(issue #39):竖栏打开 + 图表页签时才拉,省上游配额。\n usePoll(async () => {\n if (!orderbookOpen || stageTab !== 'chart' || market === undefined || symbol === undefined) return\n setOrderbookLoading(true)\n try {\n const [book, recentTrades] = await Promise.all([\n fetchOrderbook(market, symbol),\n fetchRecentTrades(market, symbol, 50),\n ])\n setOrderbook(book)\n setTrades(recentTrades)\n } finally {\n setOrderbookLoading(false)\n }\n }, ORDERBOOK_POLL_MS, [orderbookOpen, stageTab, market, symbol])\n\n // 交易台只读轮询(issue #40,面板打开时):positions 为主探针——\n // 服务未注册(400)或凭证缺失(ok:false)都置 null,分区按语义降级。\n const refreshTradeDesk = async (m: MarketId = activeMarket) => {\n const [positionRows, balanceRows, orderRows, fillRows] = await Promise.all([\n fetchTradePositions(m),\n fetchTradeBalances(m),\n fetchTradeOpenOrders(m),\n fetchTradeFills(m),\n ])\n setTradePositions(positionRows)\n setTradeBalances(balanceRows)\n setTradeOrders(orderRows)\n setTradeFills(fillRows)\n }\n\n usePoll(async () => {\n if (stageTab !== 'chart') return\n await refreshTradeDesk(activeMarket)\n }, TRADE_DESK_POLL_MS, [stageTab, activeMarket])\n\n const onSubmitGuiOrder = async (input: Parameters<typeof placeGuiOrder>[1]): Promise<Awaited<ReturnType<typeof placeGuiOrder>>> => {\n if (tradeMode === 'paper') {\n try {\n const curPrice = ticker?.price ?? 0\n const order = paperTradingStore.placeOrder({\n symbol: input.symbol,\n side: input.side,\n type: input.type,\n quantity: input.quantity,\n ...(input.price !== undefined ? { price: input.price } : {}),\n currentPrice: curPrice,\n })\n setTradeDrawerOpen(true)\n return { order }\n } catch (err) {\n return { error: err instanceof Error ? err.message : String(err) }\n }\n }\n return placeGuiOrder(activeMarket, input).then((res) => {\n // 下单成功(真交易)→ 自动展开底栏看最新委托,并立即刷新账户面。\n if (res.order) {\n setTradeDrawerOpen(true)\n void refreshTradeDesk(activeMarket)\n }\n return res\n })\n }\n\n // 衍生品页签是 crypto 专属:切到非 crypto 市场时自动回图表页签(issue #54)。\n useEffect(() => {\n if (stageTab === 'derivatives' && market !== 'crypto') setStageTab('chart')\n }, [stageTab, market])\n\n // 「分析资金面」(issue #54):把衍生品快照上下文填进会话输入框(只填不发)。\n // 骨架走词典(derivatives.analyzeBody + 各行标签键);行值为纯数字/代码,无文案。\n const onAnalyzeDerivatives = (): void => {\n if (fillComposer === undefined || derivatives === null || symbol === undefined) return\n const d = derivatives\n const parts = [\n d.openInterest !== undefined\n ? `- ${t('derivatives.oi')} ${fmtCompact(d.openInterest, numLocale)}${d.openInterestValue !== undefined ? ` (${fmtCompact(d.openInterestValue, numLocale)} USD)` : ''}`\n : undefined,\n d.fundingRate !== undefined\n ? `- ${t('derivatives.funding')} ${fmtFundingRate(d.fundingRate)}${d.nextFundingRate !== undefined ? ` (${t('derivatives.predicted')} ${fmtFundingRate(d.nextFundingRate)})` : ''}`\n : undefined,\n d.longShortRatio !== undefined ? `- ${t('derivatives.longShort')} ${d.longShortRatio.toFixed(2)}` : undefined,\n d.topTraderLongShortRatio !== undefined ? `- ${t('derivatives.topLongShort')} ${d.topTraderLongShortRatio.toFixed(2)}` : undefined,\n d.takerBuySellRatio !== undefined ? `- ${t('derivatives.taker')} ${d.takerBuySellRatio.toFixed(2)}` : undefined,\n d.markPrice !== undefined && d.indexPrice !== undefined && d.indexPrice > 0\n ? `- ${t('derivatives.basis')} ${fmtPercent((d.markPrice - d.indexPrice) / d.indexPrice * 100)} (${t('derivatives.markPrice')} ${fmtPrice(d.markPrice)} / ${t('derivatives.indexPrice')} ${fmtPrice(d.indexPrice)})`\n : undefined,\n ].filter((line): line is string => line !== undefined)\n const body = t('derivatives.analyzeBody', { symbol: d.symbol, source: d.source, lines: parts.join('\\n') })\n void fillComposer(body)\n }\n\n const onCancelGuiOrder = async (orderId: string, sym?: string): Promise<boolean> => {\n const ok = await cancelGuiOrder(activeMarket, orderId, sym)\n if (ok) {\n void refreshTradeDesk(activeMarket)\n }\n return ok\n }\n\n // 换标的:立即清场\n useEffect(() => {\n setKlines(null)\n setDaily(null)\n setTicker(null)\n setHoverIndex(null)\n setKError(null)\n setDerivatives(null)\n setDerivativesHistory(null)\n setDerivativesHistoryLoaded(false)\n setOrderbook(null)\n setTrades(null)\n setNewsItems(null)\n setNewsUnavailable([])\n setMarkerHover(null)\n }, [market, symbol])\n\n // ticker 轮询:头部价格 + 尾随合并最后一根 K 线\n usePoll(async () => {\n if (market === undefined || symbol === undefined) return\n try {\n const outcome = await fetchTickers(market, [symbol])\n const result = outcome[symbol]\n if (result?.ok) {\n setTicker(result.ticker)\n setKlines(prev => prev === null ? prev : withTickerBar(prev, result.ticker))\n }\n } catch { /* 下轮再试 */ }\n }, TICKER_POLL_MS, [market, symbol])\n\n // 新闻情报流轮询(issue #37):处于 news/announcements 或开启事件图钉时 60s 轮询;symbol/market 变化时立即重拉。\n const NEWS_POLL_MS = 60000\n const newsRequestRef = useRef('')\n usePoll(async () => {\n if ((stageTab !== 'news' && stageTab !== 'announcements' && !markerState.showKnowledgeEvents) || market === undefined || symbol === undefined) return\n const request = `${market}:${symbol}`\n newsRequestRef.current = request\n try {\n const result = await fetchNews(market, symbol, 50)\n // 竞态守卫:慢响应回来时已切标的 → 丢弃,旧新闻不得覆盖新标的(对齐 klines poll 的 requestRef 模式)。\n if (newsRequestRef.current !== request) return\n if (result !== null) {\n setNewsItems(result.items)\n setNewsUnavailable(result.unavailable)\n }\n } catch { /* 下轮重试 */ }\n }, NEWS_POLL_MS, [market, symbol, stageTab, markerState.showKnowledgeEvents])\n\n const stats = useMemo(() => {\n const last = daily !== null && daily.length > 0 ? daily[daily.length - 1] : undefined\n const klinePrevClose = daily !== null && daily.length >= 2 ? daily[daily.length - 2]?.close : undefined\n // 昨收/涨跌优先用快照官方锚点(ticker.prevClose/changePercent):\n // 日 K 序列可能缺最新收盘 bar(Yahoo 补齐滞后,见 connector-yahoo),倒数第二根\n // 会错位一个交易日(2026-09-01 AAPL 实证:显示 314.58 而非 319.70)。\n const prevClose = ticker?.prevClose ?? klinePrevClose\n const price = ticker?.price ?? klines?.[klines.length - 1]?.close\n const change = price !== undefined && prevClose !== undefined ? price - prevClose : undefined\n const pct = ticker?.changePercent ?? changePercent(price, prevClose)\n return { last, prevClose, price, change, pct }\n }, [daily, ticker, klines])\n\n // 区间统计:框选模式 ESC 退出(连同清空选区)。\n useEffect(() => {\n if (!rangeMode) return\n const onKey = (event: KeyboardEvent): void => {\n if (event.key !== 'Escape') return\n setRangeMode(false)\n setRangeSelection(null)\n }\n window.addEventListener('keydown', onKey)\n return () => window.removeEventListener('keydown', onKey)\n }, [rangeMode])\n\n const rangeStats = useMemo(\n () => (rangeSelection !== null && klines !== null ? computeRangeStats(klines, rangeSelection.start, rangeSelection.end) : null),\n [rangeSelection, klines],\n )\n\n // 指标调度:klines × 激活实例 → 渲染输入\n const indicatorGroups = useMemo(() => {\n if (klines === null) return []\n const groups: Array<TvIndicatorGroup & { id: string; pane: 'main' | 'sub'; title: string }> = []\n for (const instance of instances) {\n const definition = indicators.get(instance.id)\n if (definition === undefined) continue\n groups.push({\n id: instance.id,\n title: definition.title,\n pane: definition.pane,\n key: indicators.instanceKey(instance),\n outputs: definition.compute(klines, instance.params),\n })\n }\n return groups\n }, [klines, instances, rosterVersion])\n\n const mainOverlays = useMemo(() => indicatorGroups.filter(group => group.pane === 'main'), [indicatorGroups])\n const subIndicators = useMemo(() => indicatorGroups.filter(group => group.pane === 'sub'), [indicatorGroups])\n\n const bars = useMemo(() => klines?.map(toBar) ?? [], [klines])\n const volumes = useMemo(() => klines?.map(k => toVolume(k, colorMode)) ?? [], [klines, colorMode])\n\n const readoutIndex = hoverIndex ?? (klines !== null && klines.length > 0 ? klines.length - 1 : null)\n const readoutCandle = klines !== null && readoutIndex !== null ? klines[readoutIndex] : undefined\n // 读数行昨收跟随十字光标:悬停历史K线取当前周期序列的前一根收盘价(日K下即该日\n // 昨收);未悬停或悬停最新一根沿用官方锚点 ticker.prevClose(日K补齐滞后时序列\n // 倒数第二根会错位一个交易日,见上方 stats 注释);序列首根无前一根则留空。\n const readoutPrevClose = klines === null || readoutIndex === null\n ? stats.prevClose\n : readoutIndex <= 0\n ? undefined\n : readoutIndex >= klines.length - 1\n ? stats.prevClose\n : klines[readoutIndex - 1]?.close\n\n // 所有可用指标(供底部词条栏横向快捷展示)\n const allDefinitions = useMemo(() => indicators.list(), [rosterVersion])\n\n // 策略信号标记数据(issue #41):在当前 K 线序列上实时计算 EMA(12, 26) 交叉信号(过滤预热期与边缘噪音)。\n const signalMarkers = useMemo<readonly ChartSignalMarkerInput[] | undefined>(() => {\n if (!bars || bars.length < 30) return undefined\n const cur = CURRENCY_SYMBOL[activeMarket]\n const k12 = 2 / (12 + 1)\n const k26 = 2 / (26 + 1)\n let ema12 = bars[0]?.close ?? 0\n let ema26 = bars[0]?.close ?? 0\n const signals: ChartSignalMarkerInput[] = []\n let prevDiff: number | null = null\n\n for (let i = 0; i < bars.length; i++) {\n const bar = bars[i]\n if (!bar) continue\n ema12 = bar.close * k12 + ema12 * (1 - k12)\n ema26 = bar.close * k26 + ema26 * (1 - k26)\n const diff = ema12 - ema26\n if (i >= 26 && prevDiff !== null) {\n if (prevDiff <= 0 && diff > 0) {\n signals.push({\n time: bar.time,\n action: 'entry',\n price: bar.close,\n reason: t('marker.signal.entryReason', { cur, price: bar.close.toFixed(2) }),\n })\n } else if (prevDiff >= 0 && diff < 0) {\n signals.push({\n time: bar.time,\n action: 'exit',\n price: bar.close,\n reason: t('marker.signal.exitReason', { cur, price: bar.close.toFixed(2) }),\n })\n }\n }\n prevDiff = diff\n }\n return signals.length > 0 ? signals : undefined\n }, [bars, t])\n\n // 知识事件标记数据(issue #41):从当前标的的官方公告与知识事件中提取,按时间柱精准锚定(同 K 线柱去重聚合,避免边缘挤压)。\n const knowledgeMarkers = useMemo<readonly ChartKnowledgeMarkerInput[] | undefined>(() => {\n if (!newsItems || newsItems.length === 0 || !bars || bars.length === 0) return undefined\n // 仅针对属于该标的的官方公告/交易所公报打图钉,排除泛财经媒体与宏观回退要闻\n const announcements = newsItems.filter(it => isAnnouncementSource(it.source))\n if (announcements.length === 0) return undefined\n\n // 计算当前 K 线的平均周期步长(如日 K=86400s,周 K=604800s,月 K≈2592000s)\n const barStep = bars.length > 1 ? Math.abs((bars[bars.length - 1]?.time ?? 0) - (bars[0]?.time ?? 0)) / (bars.length - 1) : 86400\n const tolerance = Math.max(barStep * 0.8, 43200)\n const barMap = new Map<number, { title: string; count: number; url: string }>()\n\n for (const item of announcements) {\n const ts = Math.floor(new Date(item.publishedAt).getTime() / 1000)\n if (Number.isNaN(ts)) continue\n\n let bestBarTime: number | null = null\n let minDiff = Infinity\n for (const bar of bars) {\n const diff = Math.abs(bar.time - ts)\n if (diff < minDiff && diff <= tolerance) {\n minDiff = diff\n bestBarTime = bar.time\n }\n }\n\n if (bestBarTime !== null) {\n const existing = barMap.get(bestBarTime)\n if (existing) {\n existing.count += 1\n } else {\n barMap.set(bestBarTime, { title: item.title, count: 1, url: item.url })\n }\n }\n }\n\n const markers: ChartKnowledgeMarkerInput[] = []\n for (const [time, info] of barMap.entries()) {\n markers.push({\n time,\n title: info.count > 1 ? t('marker.knowledge.batched', { title: info.title, count: String(info.count) }) : info.title,\n cardId: info.url,\n credibility: 'high',\n })\n }\n return markers.length > 0 ? markers : undefined\n }, [newsItems, bars, t])\n\n // 发给 Agent:先截图(画布只在图表挂载期间可取),再把文本 + PNG 填入\n // 会话输入框(不自动发送——用户大概率还要补自己的 prompt)。\n // market/symbol 在函数体内收窄(闭包对 TS 不透传 narrowing),先落成常量。\n const onSendToAgent = (): void => {\n if (fillComposer === undefined || sendState === 'sending') return\n if (market === undefined || symbol === undefined) return\n const activeMarket: MarketId = market\n const activeSymbol: string = symbol\n const capture = captureRef.current?.() ?? null\n const input = {\n name: instrument?.name,\n symbol: activeSymbol,\n marketLabel: t(TAB_KEY[activeMarket]),\n intervalLabel: t(INTERVAL_KEY[chartInterval] ?? 'interval.1d'),\n price: stats.price,\n change: stats.change,\n pct: stats.pct,\n prevClose: stats.prevClose,\n candle: readoutCandle,\n indicatorTitles: instances.map(instance => indicators.get(instance.id)?.title ?? instance.id),\n withScreenshot: capture !== null,\n }\n // exactOptionalPropertyTypes:undefined 字段直接剔除而非显式传 undefined。\n // deltaWrap 用 '|' 作分隔哨兵拆包裹符对(词典值单字符串无法表达成对括号)。\n const [deltaOpen = '(', deltaClose = ')'] = t('compose.deltaWrap').split('|')\n const copy: QuoteMessageCopy = {\n opener: t('compose.opener'),\n prevClose: t('compose.prevClose'),\n priceLine: t('compose.priceLine'),\n candleLine: t('compose.candleLine'),\n indicatorsLine: t('compose.indicatorsLine'),\n listSeparator: t('compose.listSeparator'),\n deltaWrap: [deltaOpen, deltaClose],\n prevSep: t('compose.prevSep'),\n volumeLocale: numLocale,\n withScreenshotTail: t('compose.withScreenshot'),\n withoutScreenshotTail: t('compose.withoutScreenshot'),\n }\n const text = composeQuoteMessage(Object.fromEntries(Object.entries(input).filter(([, v]) => v !== undefined)) as unknown as Parameters<typeof composeQuoteMessage>[0], copy)\n setSendState('sending')\n void fillComposer(text, capture === null ? undefined : {\n dataUrl: capture.dataUrl,\n name: `${activeSymbol}-${chartInterval}.png`,\n width: capture.width,\n height: capture.height,\n })\n .then(() => {\n setSendState('sent')\n window.setTimeout(() => { setSendState('idle') }, 2000)\n })\n .catch((error: unknown) => {\n console.warn('[dsh-trading] fill composer from quote failed:', error)\n setSendState('error')\n window.setTimeout(() => { setSendState('idle') }, 2600)\n })\n }\n\n // 空态:未选择标的(空态之后的渲染路径依赖 market/symbol 非空,提前收窄)。\n if (market === undefined || symbol === undefined) {\n return (\n <div className={css.root}>\n <div className={css.empty}>\n <div className={css.emptyMain}>{t('quote.empty')}</div>\n <div>{t('quote.emptyHint')}</div>\n </div>\n </div>\n )\n }\n\n const intervals = MARKET_INTERVALS[market] ?? ['1d']\n const color = directionColor(stats.pct ?? 0, colorMode)\n\n const rawName = instrument?.name\n const isPlaceholderName = !rawName || rawName === symbol || /\\(A股\\)|\\(港股\\)/.test(rawName) // i18n-allow: 数据源占位名匹配谓词(\"xx (A股)\"),非 UI 文案\n const tickerName = (ticker as { name?: string })?.name\n const displayName = (!isPlaceholderName ? rawName : (tickerName || rawName || symbol))\n\n return (\n <div className={css.root} data-dshtrading-quote-stage=\"\">\n {/* 顶部报价头与二级 Sub-Tab 导航(图表 | 基本面) */}\n <div className={css.header}>\n <div className={css.ident}>\n <span className={css.name}>{displayName}</span>\n <span className={css.code}>{symbol}</span>\n <span className={css.marketTag}>{t(TAB_KEY[market])}</span>\n </div>\n <span className={css.price} style={{ color }}>{fmtPrice(stats.price)}</span>\n <span className={css.changes} style={{ color }}>\n <span>{fmtChange(stats.change)}</span>\n <span>{fmtPercent(stats.pct)}</span>\n </span>\n {/* 行情板块页签:图表 | 基本面 | 新闻 | 公告(富途牛牛式,页签随报价头同行) */}\n <div className={css.stageTabs} role=\"tablist\" aria-label=\"quote section\">\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={stageTab === 'chart'}\n className={css.stageTab}\n data-active={stageTab === 'chart' ? 'true' : undefined}\n onClick={() => { setStageTab('chart') }}\n >\n {t('quote.tab.chart')}\n </button>\n {market === 'crypto' && (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={stageTab === 'derivatives'}\n className={css.stageTab}\n data-active={stageTab === 'derivatives' ? 'true' : undefined}\n onClick={() => { setStageTab('derivatives') }}\n >\n {t('quote.tab.derivatives')}\n </button>\n )}\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={stageTab === 'fundamentals'}\n className={css.stageTab}\n data-active={stageTab === 'fundamentals' ? 'true' : undefined}\n onClick={() => { setStageTab('fundamentals') }}\n >\n {t('quote.tab.fundamentals')}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={stageTab === 'news'}\n className={css.stageTab}\n data-active={stageTab === 'news' ? 'true' : undefined}\n onClick={() => { setStageTab('news') }}\n >\n {t('quote.tab.news')}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={stageTab === 'announcements'}\n className={css.stageTab}\n data-active={stageTab === 'announcements' ? 'true' : undefined}\n onClick={() => { setStageTab('announcements') }}\n >\n {t('quote.tab.announcements')}\n </button>\n </div>\n <span className={css.meta}>\n {ticker !== null && <span>{t('quote.updated')} {fmtClock(ticker.timestamp)}</span>}\n </span>\n </div>\n\n {/* 统计行情概览(图表页签专属:基本面页签有自己的信息网格) */}\n {viewTab === 'chart' && (\n <div className={css.stats}>\n <span className={css.stat}><label>{t('quote.prevClose')}</label>{fmtPrice(readoutPrevClose)}</span>\n <span className={css.stat}><label>{t('quote.open')}</label>{fmtPrice(readoutCandle?.open)}</span>\n <span className={css.stat}><label>{t('quote.high')}</label>{fmtPrice(readoutCandle?.high)}</span>\n <span className={css.stat}><label>{t('quote.low')}</label>{fmtPrice(readoutCandle?.low)}</span>\n <span className={css.stat}><label>{t('quote.volume')}</label>{fmtCompact(readoutCandle?.volume, numLocale)}</span>\n {market === 'crypto' && derivatives !== null && (\n <DerivativesPane\n t={t}\n derivatives={derivatives}\n colorMode={colorMode}\n onOpenStage={() => { setStageTab('derivatives') }}\n {...(fillComposer !== undefined ? { onAnalyze: onAnalyzeDerivatives } : {})}\n />\n )}\n </div>\n )}\n\n {/* 周期胶囊条 + 指标弹层按钮(图表页签) */}\n {viewTab === 'chart' && (\n <div className={css.toolbar}>\n <div className={css.intervalTabs} role=\"tablist\" aria-label=\"interval\">\n {intervals.map(entry => (\n <button\n key={entry}\n type=\"button\"\n role=\"tab\"\n aria-selected={entry === chartInterval}\n className={css.intervalTab}\n data-active={entry === chartInterval ? 'true' : undefined}\n onClick={() => {\n setIntervalFor(entry)\n writeInterval(market, entry)\n }}\n >\n {t(INTERVAL_KEY[entry] ?? 'interval.1d')}\n </button>\n ))}\n </div>\n\n <div className={css.toolbarActions}>\n {fillComposer !== undefined && (\n <button\n type=\"button\"\n className={css.sendButton}\n data-state={sendState === 'idle' ? undefined : sendState}\n disabled={sendState === 'sending'}\n title={t('quote.sendToAgentHint')}\n onClick={onSendToAgent}\n >\n <IconSend size={13} />\n {sendState === 'sent'\n ? t('quote.sendSent')\n : sendState === 'error'\n ? t('quote.sendFailed')\n : sendState === 'sending'\n ? t('quote.sendSending')\n : t('quote.sendToAgent')}\n </button>\n )}\n\n {/* 交易工作台开关(issue #40;支持接入了交易注册面的各市场) */}\n <button\n type=\"button\"\n className={css.pickerButton}\n data-active={tradeDeskOpen ? 'true' : undefined}\n aria-pressed={tradeDeskOpen}\n onClick={() => {\n setTradeDeskOpen((open) => {\n writeTradeDeskOpen(!open)\n return !open\n })\n }}\n >\n {t('trade.toggle')}\n </button>\n {/* 盘口竖栏开关(issue #39;紧挨区间统计左侧) */}\n <button\n type=\"button\"\n className={css.pickerButton}\n data-active={orderbookOpen ? 'true' : undefined}\n aria-pressed={orderbookOpen}\n onClick={() => {\n setOrderbookOpen((open) => {\n writeOrderbookOpen(!open)\n return !open\n })\n }}\n >\n {t('orderbook.toggle')}\n </button>\n {/* 策略信号标记开关(issue #41) */}\n <button\n type=\"button\"\n className={css.pickerButton}\n data-active={markerState.showSignals ? 'true' : undefined}\n aria-pressed={markerState.showSignals}\n title={t('marker.signal.toggleTitle')}\n onClick={() => markerStore.toggleSignals()}\n >\n {t('marker.signal.toggle')}\n </button>\n {/* 知识事件图钉开关(issue #41) */}\n <button\n type=\"button\"\n className={css.pickerButton}\n data-active={markerState.showKnowledgeEvents ? 'true' : undefined}\n aria-pressed={markerState.showKnowledgeEvents}\n title={t('marker.knowledge.toggleTitle')}\n onClick={() => markerStore.toggleKnowledgeEvents()}\n >\n {t('marker.knowledge.toggle')}\n </button>\n {/* 区间统计(同花顺式框选统计;紧挨「技术指标」按钮左侧) */}\n <button\n type=\"button\"\n className={css.pickerButton}\n data-active={rangeMode ? 'true' : undefined}\n aria-pressed={rangeMode}\n title={t('quote.rangeStatsHint')}\n onClick={() => {\n setRangeMode((open) => {\n if (open) setRangeSelection(null)\n return !open\n })\n }}\n >\n {t('quote.rangeStats')}\n </button>\n <div className={css.indicatorAnchor}>\n <button\n type=\"button\"\n className={css.pickerButton}\n aria-expanded={pickerOpen}\n aria-haspopup=\"dialog\"\n onClick={() => { setPickerOpen(open => !open) }}\n >\n <IconIndicators size={13} />\n {t('indicator.picker')}\n </button>\n {pickerOpen && (\n <IndicatorPicker\n t={t}\n instances={instances}\n editingIndicator={editingIndicator}\n onToggle={(id) => {\n toggleIndicator(id)\n setEditingIndicator(null)\n }}\n onEdit={(id) => { setEditingIndicator(current => current === id ? null : id) }}\n onApply={(id, params) => {\n setIndicatorParams(id, params)\n setEditingIndicator(null)\n }}\n onDelete={(id) => { void deleteIndicator(id) }}\n onClose={() => {\n setPickerOpen(false)\n setEditingIndicator(null)\n }}\n />\n )}\n </div>\n </div>\n </div>\n )}\n\n {/* 主图指标悬停/最新读数分量(各分量独立着色)。VOL/MACD 等副图指标\n 的读数在 TvChart 各自 pane 内渲染,不进主图读数行。 */}\n {viewTab === 'chart' && mainOverlays.length > 0 && (\n <div className={css.indicatorReadout}>\n {mainOverlays.flatMap(group => outputReadouts(group, readoutIndex))}\n </div>\n )}\n\n {viewTab === 'chart' && kError !== null && <div className={css.error}>{t('quote.loadFailedColon', { error: kError })}</div>}\n\n {/* 图表主舞台 / 基本面页签(互斥挂载);crypto 图表下方挂衍生品指标条(issue #38),\n 右侧可折叠盘口竖栏(issue #39) */}\n {viewTab === 'chart' ? (\n <div className={css.chartRow}>\n <div className={css.chartColumn}>\n <div className={css.chartBox}>\n {klines !== null && bars.length > 0 && (\n <TvChart\n bars={bars}\n volumes={volumes}\n dataKey={`${market}:${symbol}:${chartInterval}`}\n intraday={INTRADAY_INTERVALS.has(chartInterval)}\n colorMode={colorMode}\n mainOverlays={mainOverlays}\n subIndicators={subIndicators}\n readoutIndex={readoutIndex}\n onHoverIndex={setHoverIndex}\n onCaptureReady={(capture) => { captureRef.current = capture }}\n rangeSelectionMode={rangeMode}\n selection={rangeSelection}\n onRangeSelect={setRangeSelection}\n signalMarkers={markerState.showSignals ? signalMarkers : undefined}\n knowledgeMarkers={markerState.showKnowledgeEvents ? knowledgeMarkers : undefined}\n onMarkerHover={setMarkerHover}\n markerTexts={{ entry: t('trade.buy'), exit: t('trade.sell') }}\n numLocale={numLocale}\n />\n )}\n {rangeMode && rangeStats !== null && (\n <div className={css.rangePanel} role=\"dialog\" aria-label={t('quote.rangeStats')}>\n <div className={css.rangePanelHead}>\n <span>{t('quote.rangeStats')}</span>\n <button\n type=\"button\"\n className={css.rangePanelClose}\n aria-label={t('range.closePanel')}\n onClick={() => { setRangeSelection(null) }}\n >\n ×\n </button>\n </div>\n <div className={css.rangePanelSpan}>\n {fmtDay(rangeStats.startTime)} ~ {fmtDay(rangeStats.endTime)}\n </div>\n <div className={css.rangePanelRow}>\n <span>{t('range.change')}</span>\n <span style={{ color: directionColor(rangeStats.changePercent, colorMode) }}>\n {fmtPercent(rangeStats.changePercent)}\n </span>\n </div>\n <div className={css.rangePanelRow}>\n <span>{t('range.changeAbs')}</span>\n <span style={{ color: directionColor(rangeStats.change, colorMode) }}>\n {fmtChange(rangeStats.change)}\n </span>\n </div>\n <div className={css.rangePanelRow}>\n <span>{t('range.high')}</span>\n <span>{fmtPrice(rangeStats.rangeHigh)}</span>\n </div>\n <div className={css.rangePanelRow}>\n <span>{t('range.low')}</span>\n <span>{fmtPrice(rangeStats.rangeLow)}</span>\n </div>\n <div className={css.rangePanelRow}>\n <span>{t('range.amplitude')}</span>\n <span>{fmtPercent(rangeStats.amplitudePercent)}</span>\n </div>\n <div className={css.rangePanelRow}>\n <span>{t('range.volume')}</span>\n <span>{fmtCompact(rangeStats.volume, numLocale)}</span>\n </div>\n <div className={css.rangePanelRow}>\n <span>{t('range.bars')}</span>\n <span>{rangeStats.bars}</span>\n </div>\n <div className={css.rangePanelRow}>\n <span>{t('range.upDays')}</span>\n <span>{rangeStats.upBars}</span>\n </div>\n <div className={css.rangePanelRow}>\n <span>{t('range.downDays')}</span>\n <span>{rangeStats.downBars}</span>\n </div>\n </div>\n )}\n {/* 标记悬停 Tooltip:绝对定位在 chartBox(position:relative)内,\n 坐标系与 TvChart 回报的容器坐标一致 */}\n {markerHover !== null && (\n <MarkerTooltip\n x={markerHover.x}\n y={markerHover.y}\n containerWidth={markerHover.containerWidth}\n containerHeight={markerHover.containerHeight}\n t={t}\n signal={markerHover.signal ? {\n action: markerHover.signal.action,\n price: markerHover.signal.price,\n reason: markerHover.signal.reason,\n time: markerHover.signal.time,\n } : undefined}\n knowledge={markerHover.knowledge ? {\n title: markerHover.knowledge.title,\n credibility: markerHover.knowledge.credibility,\n cardId: markerHover.knowledge.cardId,\n } : undefined}\n />\n )}\n </div>\n </div>\n {(orderbookOpen || tradeDeskOpen) && (\n <div className={css.rightSidebar}>\n {orderbookOpen && (\n <OrderbookPane\n t={t}\n orderbook={orderbook}\n trades={trades}\n orderbookLoading={orderbookLoading}\n colorMode={colorMode}\n onClose={() => {\n setOrderbookOpen(false)\n writeOrderbookOpen(false)\n }}\n />\n )}\n {tradeDeskOpen && (\n <OrderPanel\n t={t}\n symbol={symbol ?? ''}\n market={activeMarket}\n suggestedPrice={ticker?.price}\n colorMode={colorMode}\n tradeMode={tradeMode}\n paperCash={paperCash}\n availableCash={availableCash}\n currentPositionSize={currentPositionSize}\n onResetPaper={() => {\n paperTradingStore.resetAccount()\n }}\n onToggleTradeMode={handleToggleTradeMode}\n onSubmit={onSubmitGuiOrder}\n onClose={() => {\n setTradeDeskOpen(false)\n writeTradeDeskOpen(false)\n }}\n />\n )}\n </div>\n )}\n </div>\n ) : viewTab === 'derivatives' ? (\n <div style={{ flex: 1, minHeight: 0, overflow: 'hidden', display: 'flex', flexDirection: 'column' }}>\n <DerivativesStage t={t} derivatives={derivatives} history={derivativesHistory} historyLoaded={derivativesHistoryLoaded} colorMode={colorMode} />\n </div>\n ) : viewTab === 'fundamentals' ? (\n <div style={{ flex: 1, minHeight: 0, overflow: 'hidden', display: 'flex', flexDirection: 'column' }}>\n <FundamentalsStage t={t} useSelection={useSelection} />\n </div>\n ) : viewTab === 'news' ? (\n <div style={{ flex: 1, minHeight: 0, overflow: 'hidden', display: 'flex', flexDirection: 'column' }}>\n <NewsFeedPane\n items={newsItems}\n unavailable={newsUnavailable}\n fullHeight\n filterType=\"media\"\n t={t}\n fillComposer={fillComposer}\n />\n </div>\n ) : (\n <div style={{ flex: 1, minHeight: 0, overflow: 'hidden', display: 'flex', flexDirection: 'column' }}>\n <NewsFeedPane\n items={newsItems}\n unavailable={newsUnavailable}\n fullHeight\n filterType=\"exchange\"\n t={t}\n fillComposer={fillComposer}\n />\n </div>\n )}\n\n {/* 底部全宽资产与委托抽屉(图表页签专属,支持一键折叠展开) */}\n {viewTab === 'chart' && (\n <TradeDrawer\n t={t}\n positions={activePositions}\n balances={activeBalances}\n orders={activeOrders}\n fills={activeFills}\n colorMode={colorMode}\n tradeMode={tradeMode}\n onResetPaper={() => {\n paperTradingStore.resetAccount()\n }}\n isOpen={tradeDrawerOpen}\n onToggle={setTradeDrawerOpen}\n onCancelOrder={onCancelGuiOrder}\n />\n )}\n\n {/* 底部横向指标词条带(图表页签) */}\n {stageTab === 'chart' && (\n <div className={css.quickIndicatorBar} role=\"toolbar\" aria-label=\"Quick indicators\">\n {allDefinitions.map(def => {\n const active = instances.some(inst => inst.id === def.id)\n return (\n <button\n key={def.id}\n type=\"button\"\n className={css.quickIndicatorTag}\n data-active={active ? 'true' : undefined}\n onClick={() => toggleIndicator(def.id)}\n title={`${def.title} (${def.pane === 'main' ? t('indicator.group.main') : t('indicator.group.sub')})`}\n >\n {def.title}\n </button>\n )\n })}\n </div>\n )}\n\n {/* 底部富途式市场状态栏 */}\n <div className={css.statusBar} role=\"status\">\n <span className={css.statusSession}>\n <span className={css.statusDot} style={{ background: sessionStatus.color }} />\n {t(sessionStatus.statusKey)}\n </span>\n {indexDefs.map(def => {\n const indexTicker = indexTickers[def.symbol]\n const price = indexTicker?.price\n const prevClose = (indexTicker as { prevClose?: number })?.prevClose\n const pct = (indexTicker as { changePercent?: number })?.changePercent ?? changePercent(price, prevClose)\n const color = directionColor(pct ?? 0, colorMode)\n return (\n <span key={def.symbol} className={css.indexGroup}>\n <span className={css.indexName}>{t(def.nameKey)}</span>\n {price !== undefined ? (\n <span style={{ color, fontWeight: 600 }}>\n {fmtPrice(price)} {fmtPercent(pct)}\n </span>\n ) : (\n <span style={{ color: 'var(--dsw-futu-text-muted, #8e95a3)' }}>—</span>\n )}\n </span>\n )\n })}\n <span className={css.statusClock}>{clock}</span>\n </div>\n </div>\n )\n}\n\nfunction IndicatorPicker(props: {\n t: Translate\n instances: IndicatorInstance[]\n editingIndicator: string | null\n onToggle: (id: string) => void\n onEdit: (id: string) => void\n onApply: (id: string, params: Record<string, number>) => void\n onDelete: (id: string) => void\n onClose: () => void\n}): React.JSX.Element {\n const { t, instances, editingIndicator, onToggle, onEdit, onApply, onDelete, onClose } = props\n const definitions = indicators.list()\n const empty = definitions.length === 0\n return (\n <>\n <div className={css.pickerBackdrop} onClick={onClose} aria-hidden=\"true\" />\n <div className={css.pickerPanel} role=\"dialog\" aria-label={t('indicator.picker')}>\n <div className={css.pickerTitle}>{t('indicator.picker')}</div>\n {empty ? (\n <div className={css.pickerGroupTitle}>{t('indicator.empty')}</div>\n ) : (\n <>\n <PickerGroup\n title={t('indicator.group.main')}\n definitions={definitions.filter(definition => definition.pane === 'main')}\n instances={instances}\n editingIndicator={editingIndicator}\n t={t}\n onToggle={onToggle}\n onEdit={onEdit}\n onApply={onApply}\n onDelete={onDelete}\n />\n <PickerGroup\n title={t('indicator.group.sub')}\n definitions={definitions.filter(definition => definition.pane === 'sub')}\n instances={instances}\n editingIndicator={editingIndicator}\n t={t}\n onToggle={onToggle}\n onEdit={onEdit}\n onApply={onApply}\n onDelete={onDelete}\n />\n </>\n )}\n </div>\n </>\n )\n}\n\nfunction PickerGroup(props: {\n title: string\n definitions: readonly IndicatorDefinition[]\n instances: readonly IndicatorInstance[]\n editingIndicator: string | null\n t: Translate\n onToggle: (id: string) => void\n onEdit: (id: string) => void\n onApply: (id: string, params: Record<string, number>) => void\n onDelete: (id: string) => void\n}): React.JSX.Element {\n const { title, definitions, instances, editingIndicator, t, onToggle, onEdit, onApply, onDelete } = props\n return (\n <div className={css.pickerGroup}>\n <div className={css.pickerGroupTitle}>{title}</div>\n {definitions.map(definition => {\n const instance = instances.find(candidate => candidate.id === definition.id) ?? null\n const editing = editingIndicator === definition.id\n return (\n <div key={definition.id} className={css.pickerRow}>\n <label className={css.pickerLabel}>\n <input\n type=\"checkbox\"\n checked={instance !== null}\n onChange={() => onToggle(definition.id)}\n />\n <span>{definition.title}</span>\n </label>\n {instance !== null && (\n <button\n type=\"button\"\n className={css.pickerParams}\n data-open={editing ? 'true' : undefined}\n onClick={() => onEdit(definition.id)}\n >\n {t('indicator.params')}\n </button>\n )}\n {isCustomIndicator(definition.id) && (\n <button\n type=\"button\"\n className={css.pickerParams}\n title={t('indicator.delete')}\n aria-label={t('indicator.delete')}\n onClick={() => {\n if (window.confirm(t('indicator.deleteConfirm'))) onDelete(definition.id)\n }}\n >\n {t('indicator.delete')}\n </button>\n )}\n {editing && instance !== null && (\n <IndicatorParamEditor\n definition={definition}\n initial={instance.params}\n t={t}\n onCancel={() => onEdit(definition.id)}\n onApply={(params) => onApply(definition.id, params)}\n />\n )}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction IndicatorParamEditor(props: {\n definition: IndicatorDefinition\n initial: Record<string, number>\n t: Translate\n onCancel: () => void\n onApply: (params: Record<string, number>) => void\n}): React.JSX.Element {\n const { definition, initial, t } = props\n const [draft, setDraft] = useState<Record<string, number>>(() => {\n const out: Record<string, number> = {}\n for (const spec of definition.params) out[spec.key] = initial[spec.key] ?? spec.default\n return out\n })\n\n return (\n <div className={css.paramEditor}>\n {definition.params.map(spec => (\n <label key={spec.key} className={css.paramRow}>\n <span>{spec.label}</span>\n <input\n type=\"number\"\n min={spec.min}\n max={spec.max}\n value={Number.isFinite(draft[spec.key]) ? draft[spec.key] : spec.default}\n onChange={(event) => {\n const next = Number(event.target.value)\n setDraft(prev => ({ ...prev, [spec.key]: Number.isFinite(next) ? next : spec.default }))\n }}\n />\n </label>\n ))}\n <div className={css.paramActions}>\n <button type=\"button\" className={css.paramButton} onClick={props.onCancel}>{t('indicator.cancel')}</button>\n <button type=\"button\" className={`${css.paramButton} ${css.paramApply}`} onClick={() => props.onApply(draft)}>{t('indicator.apply')}</button>\n </div>\n </div>\n )\n}\n\nfunction outputReadouts(\n group: TvIndicatorGroup & { id: string; pane: 'main' | 'sub'; title: string },\n readoutIndex: number | null,\n): Array<React.JSX.Element | null> {\n if (readoutIndex === null) return []\n return group.outputs.map((output) => {\n const value = output.values[readoutIndex]\n if (value === undefined || !Number.isFinite(value)) return null\n return (\n <span key={`${group.key}.${output.key}`} style={{ color: output.color, fontWeight: 500 }}>\n {group.title} {output.key}: {value.toFixed(2)}\n </span>\n )\n })\n}\n\nfunction withTickerBar(prev: Kline[], ticker: Ticker): Kline[] {\n const last = prev[prev.length - 1]\n if (last === undefined) return prev\n const price = ticker.price\n if (!Number.isFinite(price) || price <= 0) return prev\n if (last.close === price && last.high >= price && last.low <= price) return prev\n const merged: Kline = {\n ...last,\n close: price,\n high: Math.max(last.high, price),\n low: Math.min(last.low, price),\n }\n return [...prev.slice(0, -1), merged]\n}\n\nfunction formatStatusBarClock(ms: number): string {\n const date = new Date(ms)\n const pad = (n: number): string => String(n).padStart(2, '0')\n return `${pad(date.getMonth() + 1)}/${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`\n}\n\n/** YYYY-MM-DD(区间统计面板的日期跨度)。 */\nfunction fmtDay(ms: number): string {\n const date = new Date(ms)\n const pad = (n: number): string => String(n).padStart(2, '0')\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`\n}\n\nfunction readInterval(market: MarketId): string {\n try {\n const raw = localStorage.getItem(INTERVAL_KEY_PREFIX + market)\n if (raw !== null && (MARKET_INTERVALS[market] ?? []).includes(raw)) return raw\n } catch { /* 忽略 */ }\n return '1d'\n}\n\nfunction writeInterval(market: MarketId, interval: string): void {\n try {\n localStorage.setItem(INTERVAL_KEY_PREFIX + market, interval)\n } catch { /* 忽略 */ }\n}\n\n/** 盘口竖栏开关记忆(issue #39;跨会话,坏值/隐私模式回退默认开)。 */\nfunction readOrderbookOpen(): boolean {\n try {\n return localStorage.getItem(ORDERBOOK_OPEN_KEY) !== '0'\n } catch { /* 忽略 */ }\n return true\n}\n\nfunction writeOrderbookOpen(open: boolean): void {\n try {\n localStorage.setItem(ORDERBOOK_OPEN_KEY, open ? '1' : '0')\n } catch { /* 忽略 */ }\n}\n\n/** 交易台开关记忆(issue #40;默认关——安全敏感面)。 */\nfunction readTradeDeskOpen(): boolean {\n try {\n return localStorage.getItem(TRADE_DESK_OPEN_KEY) === '1'\n } catch { /* 忽略 */ }\n return false\n}\n\nfunction writeTradeDeskOpen(open: boolean): void {\n try {\n localStorage.setItem(TRADE_DESK_OPEN_KEY, open ? '1' : '0')\n } catch { /* 忽略 */ }\n}\n\nconst TAB_KEY: Record<MarketId, MarketLocaleKey> = {\n crypto: 'tab.crypto',\n us: 'tab.us',\n cn: 'tab.cn',\n hk: 'tab.hk',\n}\n","/**\n * 中栏舞台:中栏 = 视图注册表 + 顶部切换条(行情 | 策略 | 知识库 | …)。\n *\n * 视图注册表是中栏的开放扩展点(issue #34 / P5):quote 视图由 shell 自注册\n * 到 registry;策略/知识视图由 client-ui-strategies / client-ui-knowledge 经\n * tradingStageViews 服务注册。任何 client 插件 inject 该服务 register 即新增\n * 中栏 tab。同一时刻仅挂载活动视图(切换即卸载,图表态由 store/localStorage\n * 承接,后台视图零渲染开销)。\n */\nimport { useState, useSyncExternalStore } from 'react'\nimport type { ComponentType } from 'react'\nimport type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport { readJson, writeJson } from './store.ts'\nimport { stageViews } from './stage-views.ts'\nimport { QuoteStage } from './QuoteStage.tsx'\nimport type { FillComposerFn } from './fill-composer.ts'\nimport type { MarketLocaleKey } from './contract.ts'\nimport type { ChartState } from './chart-state.ts'\nimport type { Observable, SelectionState } from './store.ts'\nimport css from './stage.module.css'\n\n/** 插件视图的注册 definition 形状(quote 由 shell 内建,不走此面)。 */\nexport interface MiddleViewDefinition {\n id: string\n titleKey: MarketLocaleKey\n order?: number\n render: ComponentType<import('./stage-views.ts').StageViewProps>\n}\n\nconst STAGE_KEY = 'dshtrading.stage.v1'\n\nfunction isRegisteredView(raw: unknown): boolean {\n return typeof raw === 'string' && stageViews.get(raw) !== undefined\n}\n\nfunction readStageView(): string {\n const raw = readJson<unknown>(STAGE_KEY, 'quote')\n // 持久化值指向未安装的插件视图(卸载场景)→ 回落 quote。\n return isRegisteredView(raw) ? raw as string : 'quote'\n}\n\nfunction writeStageView(view: string): void {\n writeJson(STAGE_KEY, view)\n}\n\n/** Registration-side business face. */\nexport interface MiddleStageInjected {\n hooks: {\n selection: Observable<SelectionState>\n chart: Observable<ChartState>\n }\n toggleIndicator: (id: string) => void\n setIndicatorParams: (id: string, params: Record<string, number>) => void\n /** 删除自定义指标(issue #30,透传给 QuoteStage 指标选择器)。 */\n deleteIndicator: (id: string) => Promise<boolean>\n /** 行情上下文 → 会话输入框(透传给 QuoteStage「发给 Agent」,只填入不发送)。 */\n fillComposer?: FillComposerFn\n}\n\nexport type MiddleStageProps =\n PropsRuntime<'shell.overlay'>\n & PropsLocale<'dshtrading.market'>\n & InjectFace<MiddleStageInjected>\n\nexport function MiddleStage({ t, useSelection, useChart, toggleIndicator, setIndicatorParams, deleteIndicator, fillComposer }: MiddleStageProps) {\n // 名册响应式:registry 版本号驱动 tab 条重渲染;当前视图是普通 state\n // (readStageView 净化 localStorage 脏值)。\n useSyncExternalStore(stageViews.subscribe, stageViews.getVersion)\n const [view, setView] = useState<string>(readStageView)\n\n const switchView = (next: string): void => {\n setView(next)\n writeStageView(next)\n }\n\n return (\n <div className={css.root} data-dshtrading-middle-stage=\"\">\n <div className={css.tabs} role=\"tablist\" aria-label=\"stage\">\n {stageViews.list().map(definition => (\n <button\n key={definition.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={definition.id === view}\n className={css.tab}\n data-active={definition.id === view ? 'true' : undefined}\n onClick={() => { switchView(definition.id) }}\n >\n {t(definition.titleKey)}\n </button>\n ))}\n </div>\n {/* 视图互斥挂载:切走即卸载(图表重建成本 < 双图常驻的内存/重绘成本)。\n prop 面沿用 QuotePane→QuoteStage 的 inject 传递约定(cast 收敛在边界)。\n quote 视图 = shell 内建(QuoteStage 直引——需要中栏全部指标动作面);\n 插件视图走 definition.render(props)。 */}\n {view === 'quote' ? (\n <QuoteStage {...({ t, useSelection, useChart, toggleIndicator, setIndicatorParams, deleteIndicator, fillComposer } as never)} />\n ) : (\n (() => {\n const definition = stageViews.get(view)\n if (definition === undefined) return null\n const View = definition.render\n return <View t={t} view={view} />\n })()\n )}\n </div>\n )\n}","/**\n * 中栏行情面板(2.4 定稿:中栏恒为行情,对话常驻右侧栏):\n * 几何 = [自选停靠右缘, 对话列左缘/右缘竖条左缘] 之间的整块区域,\n * 内容复用 MiddleStage(3.0 起中栏 = 视图注册表:行情 | 量化)。\n *\n * 对话列显隐由「是否有当前会话」驱动(官方会话 UI 整列移到右侧,\n * 审批卡在 composer 链随列可见,无会话时不存在可审批请求):\n * 本组件把该状态写到 body[data-dshtrading-chat],shell-pad.css 据此\n * 展开/收起栅格第 2 轨道(对话列)。\n *\n * 几何测量:frame(div:has(> [data-shell-overlay]),rtl 后子元素顺序\n * [会话浏览器, 对话列, 工具详情, overlayLayer])+ 自选停靠面板,\n * ResizeObserver + resize 跟随(对话列轨道经宿主 transition 动画,\n * RO 在动画期间连续重测量)。\n */\nimport { useEffect, useState } from 'react'\nimport type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport { MiddleStage } from './MiddleStage.tsx'\nimport type { FillComposerFn } from './fill-composer.ts'\nimport type { Observable, SelectionState } from './store.ts'\nimport type { ChartState } from './chart-state.ts'\nimport css from './quote-pane.module.css'\n\nexport interface QuotePaneInjected {\n hooks: {\n selection: Observable<SelectionState>\n chart: Observable<ChartState>\n }\n toggleIndicator: (id: string) => void\n setIndicatorParams: (id: string, params: Record<string, number>) => void\n /** 删除自定义指标(issue #30):桥 DELETE → 注销注册表 + 移除激活实例。 */\n deleteIndicator: (id: string) => Promise<boolean>\n /** 行情上下文 → 会话输入框(只填入不发送;shell 注入)。 */\n fillComposer?: FillComposerFn\n}\n\nexport type QuotePaneProps =\n PropsRuntime<'shell.overlay'>\n & PropsLocale<'dshtrading.market'>\n & InjectFace<QuotePaneInjected>\n\ninterface Rect {\n left: number\n top: number\n width: number\n height: number\n}\n\nexport function QuotePane({ t, useSelection, useChart, toggleIndicator, setIndicatorParams, deleteIndicator, fillComposer }: QuotePaneProps) {\n const [rect, setRect] = useState<Rect | null>(null)\n\n useEffect(() => {\n let raf = 0\n const measure = (): void => {\n const frame = document.querySelector<HTMLElement>('div:has(> [data-shell-overlay])')\n if (frame === null) return\n if (frame.scrollLeft !== 0) frame.scrollLeft = 0\n const frameBox = frame.getBoundingClientRect()\n const dockBox = document.querySelector('[data-dshtrading-market-dock]')?.getBoundingClientRect()\n const left = dockBox !== undefined && dockBox.width > 0 ? dockBox.right : frameBox.left\n\n const chatFolded = document.body.dataset.dshtradingChatFolded === 'on'\n const rightBox = frame.children[1]?.getBoundingClientRect()\n const railBox = document.querySelector('[data-dshtrading-rail]')?.getBoundingClientRect()\n const fallbackRight = railBox !== undefined && railBox.width > 0 ? railBox.left : frameBox.right\n\n let right = fallbackRight\n if (!chatFolded) {\n if (rightBox !== undefined && rightBox.width > 0) {\n right = rightBox.left\n } else if (railBox !== undefined && railBox.width > 0) {\n // 瞬态保护:未折叠时预留对话列空间(380px),避免瞬态铺满覆盖\n right = Math.max(left, railBox.left - 380)\n }\n }\n\n setRect({ left, top: frameBox.top, width: Math.max(0, right - left), height: frameBox.height })\n }\n measure()\n const observer = new ResizeObserver(() => {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(measure)\n })\n const frame = document.querySelector('div:has(> [data-shell-overlay])')\n for (const child of Array.from(frame?.children ?? [])) observer.observe(child)\n if (frame !== null) observer.observe(frame)\n const dock = document.querySelector('[data-dshtrading-market-dock]')\n if (dock !== null) observer.observe(dock)\n // 竖条首帧晚于本组件挂载时,observe 的初始回调保证补一次重测量。\n const rail = document.querySelector('[data-dshtrading-rail]')\n if (rail !== null) observer.observe(rail)\n\n // 监听主题切换及折叠状态变化,立即触发重新测量\n const mo = new MutationObserver(() => {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(measure)\n })\n if (typeof document !== 'undefined') {\n mo.observe(document.body, {\n attributes: true,\n attributeFilter: ['data-ds-dark-theme', 'data-theme', 'data-dshtrading-chat-folded'],\n })\n }\n\n window.addEventListener('resize', measure)\n return () => {\n observer.disconnect()\n mo.disconnect()\n window.removeEventListener('resize', measure)\n cancelAnimationFrame(raf)\n }\n }, [])\n\n if (rect === null) return null\n\n return (\n <div\n className={css.pane}\n data-dshtrading-quote-pane=\"\"\n style={{ left: rect.left, top: rect.top, width: rect.width, height: rect.height }}\n >\n {/* MiddleStage 的 slot 运行时面(viewRequest 等)在面板场景不需要,\n 只取 t/两个 store hook 与指标动作。 */}\n <MiddleStage {...({ t, useSelection, useChart, toggleIndicator, setIndicatorParams, deleteIndicator, fillComposer } as never)} />\n </div>\n )\n}\n","/**\n * Home 融合容器的历史半区(2.6):历史会话面板与官方 hero(探索未至之境 +\n * composer,[data-composer-seat])拼成同一个容器——面板与 hero composer 卡\n * 同宽、上缘拼进卡底边,卡片底边框即容器内分隔线。\n *\n * 几何拼接:composer 卡的类名是宿主 CSS module 哈希(每次宿主构建都变),\n * 不可依赖——按「seat 内最靠下的可见圆角块」启发式找卡,量取几何后对\n * portal 容器内联写 width/margin,并临时抹平卡片底圆角(卸载时还原)。\n * 拼接色板(边框/底色/圆角)从卡片计算样式采样,随宿主主题走。\n *\n * 挂载面:sidebar.workspaces slot(拥有 useWorkspaces/useSessions 注入面),\n * 但面板 DOM 经 portal 注入 hero 所在的 [data-conversation-scroll],侧栏\n * 折叠成 rail 也不消失;侧栏本体只留 hidden 占位,继续遮蔽官方\n * WorkspaceBrowser(其每组「+ 新会话」/添加工作区在融合布局下是冗余入口)。\n *\n * 可见性 = 当前会话为 blank(hero 态);打开非 blank 会话即整板让位对话列\n * (byId 瞬缺按未命中处理——宁可抖动藏面板,不可拼到对话流 composer 上)。\n * 历史区自身可折叠,展开态持久化 localStorage;列表默认只展示最新 3 条,\n * 其余折叠进「展开其余」页脚(展开态不持久化,回首页即复位)。\n */\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client'\nimport { readJson, writeJson } from './store.ts'\nimport { IconArchive, IconFork, IconMore, IconRename } from './icons.tsx'\nimport css from './home-history.module.css'\n\nconst OPEN_KEY = 'dshtrading.home.history.open.v1'\n\n/** 收起态默认可见的最新会话条数;更早的折叠进「展开其余」页脚(不持久化,\n * 每次进入首页都回到收起态——「默认」语义)。 */\nconst VISIBLE_ROWS = 3\n\nexport interface HomeHistoryInjected {\n /** 打开既有会话。 */\n openSession(sessionId: string): void\n /** 新会话(宿主 startSession:无参取当前/最近工作区);无当前会话时的兜底恢复也走它。 */\n startNewSession(): void\n /** 重命名(官方 session binding 显式标题通路,钉住自动生成);失败 reject 由调用方呈报。 */\n renameSession(sessionId: string, title: string): Promise<void>\n /** 分叉并打开新会话(官方 increaseTitle 语义);失败内吞 console.warn。 */\n forkSession(sessionId: string): void\n /** 归档会话(官方 uiWorkspace 通路,从工作区分组面隐藏);失败内吞 console.warn。 */\n archiveSession(sessionId: string): void\n}\n\nexport type HomeHistoryProps =\n & PropsRuntime<'sidebar.workspaces'>\n & PropsLocale<'dshtrading.market'>\n & InjectFace<HomeHistoryInjected>\n\ninterface WorkspaceRow {\n workspaceId: string\n title: string\n sessionIds: string[]\n}\n\n/** 会话活动最近的工作区 id(全部无活动时 undefined,由调用方兜底)。 */\nfunction mostRecentlyActive(rows: WorkspaceRow[], byId: SessionListState['byId']): string | undefined {\n let picked: string | undefined\n let pickedTime = Number.NEGATIVE_INFINITY\n for (const row of rows) {\n let latest = Number.NEGATIVE_INFINITY\n for (const id of row.sessionIds) {\n latest = Math.max(latest, byId[id]?.updatedAt ?? Number.NEGATIVE_INFINITY)\n }\n if (latest > pickedTime) {\n picked = row.workspaceId\n pickedTime = latest\n }\n }\n return picked\n}\n\n/** 行操作菜单的估算外框(开合时钳位防出屏,非实测驱动布局)。 */\nconst MENU_WIDTH = 152\nconst MENU_HEIGHT = 118\n\ninterface MenuState {\n sessionId: string\n title: string\n x: number\n y: number\n}\n\ninterface RenameState {\n sessionId: string\n value: string\n}\n\nexport function HomeHistory({ t, useSessions, useWorkspaces, openSession, startNewSession, renameSession, forkSession, archiveSession }: HomeHistoryProps) {\n const sessions = useSessions((value: SessionListState) => value)\n const workspaces = useWorkspaces(value => value)\n const [open, setOpen] = useState(() => readJson<boolean>(OPEN_KEY, true))\n const [expanded, setExpanded] = useState(false)\n const [host, setHost] = useState<HTMLElement | null>(null)\n const [menu, setMenu] = useState<MenuState | null>(null)\n const [renaming, setRenaming] = useState<RenameState | null>(null)\n const menuRef = useRef<HTMLDivElement | null>(null)\n\n // 行操作菜单:右键/行尾 ⋯ 触发,fixed 定位(面板 overflow:hidden,菜单\n // 必须脱离文档流)。外点 / Esc / 任意滚动关闭(列表滚动后菜单不再对位)。\n const openMenuAt = (sessionId: string, title: string, x: number, y: number): void => {\n const cx = Math.max(8, Math.min(x, window.innerWidth - MENU_WIDTH - 8))\n const cy = Math.max(8, Math.min(y, window.innerHeight - MENU_HEIGHT - 8))\n setMenu({ sessionId, title, x: cx, y: cy })\n }\n\n useEffect(() => {\n if (menu === null) return\n const onPointerDown = (e: PointerEvent): void => {\n if (menuRef.current !== null && e.target instanceof Node && menuRef.current.contains(e.target)) return\n setMenu(null)\n }\n const onKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape') setMenu(null)\n }\n const onScroll = (): void => { setMenu(null) }\n document.addEventListener('pointerdown', onPointerDown, true)\n document.addEventListener('keydown', onKeyDown)\n window.addEventListener('scroll', onScroll, true)\n return () => {\n document.removeEventListener('pointerdown', onPointerDown, true)\n document.removeEventListener('keydown', onKeyDown)\n window.removeEventListener('scroll', onScroll, true)\n }\n }, [menu])\n\n const commitRename = (): void => {\n if (renaming === null) return\n const next = renaming.value.trim()\n const target = renaming.sessionId\n setRenaming(null)\n if (next === '' || next === sessions.byId[target]?.displayTitle) return\n renameSession(target, next).catch((e: unknown) => { console.warn('[dsh-trading] session rename rejected:', e) })\n }\n\n const blank = sessions.current !== undefined && sessions.byId[sessions.current]?.blank === true\n\n // 右栏退役兜底:无当前会话(启动未命中/归档清空)时执行宿主\n // startSession 的 recentWorkspace 策略重开,保证 hero 融合容器可达。\n useEffect(() => {\n if (sessions.current === undefined && sessions.phase === 'ready') startNewSession()\n }, [sessions.current, sessions.phase, startNewSession])\n\n useEffect(() => { if (readJson<boolean>(OPEN_KEY, true) !== open) writeJson(OPEN_KEY, open) }, [open])\n\n useEffect(() => {\n document.body.dataset.dshtradingHomeHistory = blank ? 'on' : 'off'\n return () => { delete document.body.dataset.dshtradingHomeHistory }\n }, [blank])\n\n // 融合挂载:hero 态才物化 portal 容器并拼接;非 hero 态卸载并还原卡片。\n useEffect(() => {\n if (!blank) {\n setHost(null)\n return\n }\n const seat = document.querySelector<HTMLElement>('[data-composer-seat]')\n const scrollBody = seat?.parentElement\n if (seat === null || scrollBody === undefined) return\n\n let container: HTMLDivElement | null = null\n let card: HTMLElement | null = null\n let saved: { radiusX: string; radiusY: string; observer: ResizeObserver } | null = null\n let raf = 0\n let disposed = false\n\n const updateColors = (): void => {\n if (container === null || card === null) return\n const style = getComputedStyle(card)\n const border = style.borderTopColor\n const bg = style.backgroundColor\n if (border && container.style.getPropertyValue('--dshtrading-fusion-border') !== border) {\n container.style.setProperty('--dshtrading-fusion-border', border)\n }\n if (bg && container.style.getPropertyValue('--dshtrading-fusion-bg') !== bg) {\n container.style.setProperty('--dshtrading-fusion-bg', bg)\n }\n if (saved !== null && saved.radiusX && container.style.getPropertyValue('--dshtrading-fusion-radius') !== saved.radiusX) {\n container.style.setProperty('--dshtrading-fusion-radius', saved.radiusX)\n }\n }\n\n // composer 卡 = seat 内最靠下的可见圆角块(哈希类名不可依赖,按几何取)。\n const findCard = (): HTMLElement | null => {\n if (card !== null && card.isConnected && seat.contains(card)) {\n const style = getComputedStyle(card)\n if (style.display !== 'none') return card\n }\n\n let best: HTMLElement | null = null\n let bestBottom = -1\n for (const el of seat.querySelectorAll<HTMLElement>('*')) {\n const box = el.getBoundingClientRect()\n if (box.width < 120 || box.height < 40) continue\n const style = getComputedStyle(el)\n if (style.display === 'none') continue\n if (el !== card && style.borderTopLeftRadius === '0px' && style.borderBottomLeftRadius === '0px') continue\n if (box.bottom > bestBottom) {\n bestBottom = box.bottom\n best = el\n }\n }\n return best\n }\n\n const fuse = (): void => {\n if (disposed || container === null || card === null) return\n const bodyBox = scrollBody.getBoundingClientRect()\n const cardBox = card.getBoundingClientRect()\n const seatBox = seat.getBoundingClientRect()\n if (cardBox.width === 0 || cardBox.height === 0) return\n\n const nextWidth = `${Math.round(cardBox.width)}px`\n const nextMarginLeft = `${Math.round(cardBox.left - bodyBox.left)}px`\n const nextMarginTop = `${Math.round(cardBox.bottom - seatBox.bottom)}px`\n\n if (container.style.width !== nextWidth) container.style.width = nextWidth\n if (container.style.marginLeft !== nextMarginLeft) container.style.marginLeft = nextMarginLeft\n if (container.style.marginTop !== nextMarginTop) container.style.marginTop = nextMarginTop\n updateColors()\n }\n\n const adopt = (next: HTMLElement | null): void => {\n if (next === card) {\n if (next !== null) fuse()\n return\n }\n if (card !== null && saved !== null) {\n card.style.borderBottomLeftRadius = saved.radiusX\n card.style.borderBottomRightRadius = saved.radiusY\n saved.observer.disconnect()\n saved = null\n }\n card = next\n if (card === null) return\n const style = getComputedStyle(card)\n const observer = new ResizeObserver(() => {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(fuse)\n })\n saved = { radiusX: style.borderBottomLeftRadius || '16px', radiusY: style.borderBottomRightRadius || '16px', observer }\n card.style.borderBottomLeftRadius = '0px'\n card.style.borderBottomRightRadius = '0px'\n observer.observe(card)\n updateColors()\n fuse()\n }\n\n container = document.createElement('div')\n container.dataset.dshtradingHomeHistory = ''\n scrollBody.appendChild(container)\n\n // 只观察输入框 seat 的子树变动,绝不观察 scrollBody 以免被 container 的 portal 渲染反向触发死循环\n const mo = new MutationObserver(() => {\n adopt(findCard())\n })\n mo.observe(seat, { childList: true, subtree: true })\n if (typeof document !== 'undefined') {\n mo.observe(document.body, { attributes: true, attributeFilter: ['data-ds-dark-theme', 'data-theme'] })\n }\n adopt(findCard())\n\n const onResize = (): void => {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => { adopt(findCard()) })\n }\n window.addEventListener('resize', onResize)\n\n setHost(container)\n return () => {\n disposed = true\n cancelAnimationFrame(raf)\n mo.disconnect()\n window.removeEventListener('resize', onResize)\n if (card !== null && saved !== null) {\n card.style.borderBottomLeftRadius = saved.radiusX\n card.style.borderBottomRightRadius = saved.radiusY\n saved.observer.disconnect()\n }\n container?.remove()\n setHost(null)\n }\n }, [blank])\n\n const workspaceRows: WorkspaceRow[] = workspaces.items.map(item => ({\n workspaceId: String(item.workspaceId),\n title: String(item.title ?? item.workspaceId),\n sessionIds: (Array.isArray(item.sessionIds) ? item.sessionIds : []).map(String),\n }))\n const scopeWorkspace = (sessions.current !== undefined\n ? workspaceRows.find(row => row.sessionIds.includes(sessions.current as string))?.workspaceId\n : undefined)\n ?? mostRecentlyActive(workspaceRows, sessions.byId)\n ?? workspaceRows[0]?.workspaceId\n const scopeTitle = workspaceRows.find(row => row.workspaceId === scopeWorkspace)?.title\n // 归档集合来自宿主 workspace 快照(「归档会话」写的就是它)——不归并进来,\n // 归档行会在列表里留尸。\n const archivedIds = new Set<string>(workspaces.archivedSessionIds ?? [])\n const historyRows = (workspaceRows.find(row => row.workspaceId === scopeWorkspace)?.sessionIds ?? [])\n .map(id => sessions.byId[id])\n .filter(row => row !== undefined && !row.blank && row.origin !== 'subagent' && !archivedIds.has(row.id))\n .sort((left, right) => right.updatedAt - left.updatedAt)\n const visibleRows = expanded ? historyRows : historyRows.slice(0, VISIBLE_ROWS)\n const hiddenCount = historyRows.length - visibleRows.length\n\n return (\n <>\n {/* 侧栏本体退场:只留占位标记,维持对官方 WorkspaceBrowser 的遮蔽。 */}\n <div data-dshtrading-session-browser=\"\" hidden=\"\" />\n {host !== null && createPortal(\n <div className={css.panel}>\n <button\n type=\"button\"\n className={css.toggle}\n aria-expanded={open}\n aria-controls=\"dshtrading-home-history\"\n onClick={() => { setOpen(value => !value) }}\n >\n <svg className={css.chevron} viewBox=\"0 0 8 8\" width=\"8\" height=\"8\" aria-hidden=\"true\">\n <path d=\"M2 1l4 3-4 3\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n {t('browser.history')}\n {scopeTitle !== undefined && (\n <span className={css.scope} title={scopeTitle}>{scopeTitle}</span>\n )}\n <span className={css.count}>{historyRows.length}</span>\n </button>\n {open && (\n <div id=\"dshtrading-home-history\" className={css.list}>\n {historyRows.length === 0\n ? <div className={css.empty}>{t('browser.historyEmpty')}</div>\n : visibleRows.map((row) => {\n const renameState = renaming !== null && renaming.sessionId === row.id ? renaming : null\n return (\n <div\n key={row.id}\n className={css.row}\n data-current={row.id === sessions.current ? 'true' : undefined}\n onContextMenu={renameState !== null ? undefined : (e) => {\n e.preventDefault()\n openMenuAt(row.id, row.displayTitle, e.clientX, e.clientY)\n }}\n >\n {renameState !== null ? (\n <>\n <span className={css.dot} data-running={row.running ? 'true' : undefined} />\n <input\n className={css.renameInput}\n value={renameState.value}\n aria-label={t('browser.menu.rename')}\n autoFocus={true}\n onFocus={(e) => { e.target.select() }}\n onChange={(e) => { setRenaming({ sessionId: row.id, value: e.target.value }) }}\n onKeyDown={(e) => {\n if (e.nativeEvent.isComposing) return\n if (e.key === 'Enter') { e.preventDefault(); commitRename() }\n if (e.key === 'Escape') { e.preventDefault(); setRenaming(null) }\n }}\n onBlur={commitRename}\n />\n </>\n ) : (\n <>\n <button\n type=\"button\"\n className={css.rowMain}\n title={row.displayTitle}\n onClick={() => { openSession(row.id) }}\n >\n <span className={css.dot} data-running={row.running ? 'true' : undefined} />\n <span className={css.title}>{row.displayTitle}</span>\n </button>\n <button\n type=\"button\"\n className={css.rowMore}\n aria-label={t('browser.menu.aria')}\n onClick={(e) => {\n const rect = e.currentTarget.getBoundingClientRect()\n openMenuAt(row.id, row.displayTitle, rect.right - MENU_WIDTH, rect.bottom + 4)\n }}\n >\n <IconMore size={13} />\n </button>\n </>\n )}\n </div>\n )\n })}\n </div>\n )}\n {open && historyRows.length > VISIBLE_ROWS && (\n <button\n type=\"button\"\n className={css.more}\n aria-expanded={expanded}\n onClick={() => { setExpanded(value => !value) }}\n >\n <svg className={css.chevron} viewBox=\"0 0 8 8\" width=\"8\" height=\"8\" aria-hidden=\"true\">\n <path d=\"M2 1l4 3-4 3\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n {expanded\n ? t('browser.showLess')\n : t('browser.showMore').replace('{n}', String(historyRows.length - VISIBLE_ROWS))}\n </button>\n )}\n {menu !== null && (\n <div ref={menuRef} className={css.menu} role=\"menu\" style={{ left: menu.x, top: menu.y }}>\n <button\n type=\"button\"\n role=\"menuitem\"\n className={css.menuItem}\n onClick={() => {\n setMenu(null)\n setRenaming({ sessionId: menu.sessionId, value: menu.title })\n }}\n >\n <IconRename size={13} />\n {t('browser.menu.rename')}\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n className={css.menuItem}\n onClick={() => {\n forkSession(menu.sessionId)\n setMenu(null)\n }}\n >\n <IconFork size={13} />\n {t('browser.menu.fork')}\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n className={css.menuItem}\n onClick={() => {\n archiveSession(menu.sessionId)\n setMenu(null)\n }}\n >\n <IconArchive size={13} />\n {t('browser.menu.archive')}\n </button>\n </div>\n )}\n </div>,\n host,\n )}\n </>\n )\n}\n","/**\n * 会话竖条(2.9):右缘常驻功能栏,参考同花顺式右侧竖排工具栏。\n *\n * - 永不隐藏:折叠只收会话列轨道(fold-store → shell-pad.css 规则 9),\n * 竖条始终占住右缘 44px(shell-pad.css 规则 8 预留的侧栏轨道),会话\n * 进行中也在——取代 2.8「右上浮动簇 + 会话头内联按钮」双入口。\n * - 结构自上而下:折叠/展开、新会话、分隔线、设置;后续功能页签在分隔线\n * 下方追加(页签面板向左展开,状态照 fold-store 模式加 store +\n * body[data-dshtrading-*] 联动)。\n * - 设置仍是程序化 click 退役侧栏列内的官方触发器(见 index.ts openSettings)。\n * - 折叠态同步 body[data-dshtrading-chat-folded] 的 effect 从旧 WindowChrome\n * 移入本组件(竖条恒挂载,单一同步点)。\n */\nimport { useEffect } from 'react'\nimport type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { FoldStore } from './fold-store.ts'\nimport { IconFoldPanel, IconNewSession, IconSettings } from './icons.tsx'\nimport css from './session-rail.module.css'\n\nexport interface SessionRailInjected {\n startNewSession(): void\n openSettings(): void\n toggleFold(): void\n hooks: { folded: FoldStore }\n}\n\nexport type SessionRailProps =\n & PropsRuntime<'shell.overlay'>\n & PropsLocale<'dshtrading.market'>\n & InjectFace<SessionRailInjected>\n\nexport function SessionRail({ t, useFolded, startNewSession, openSettings, toggleFold }: SessionRailProps) {\n const folded = useFolded(value => value)\n\n useEffect(() => {\n document.body.dataset.dshtradingChatFolded = folded ? 'on' : 'off'\n return () => { delete document.body.dataset.dshtradingChatFolded }\n }, [folded])\n\n return (\n <div className={css.rail} data-dshtrading-rail=\"\" role=\"toolbar\" aria-orientation=\"vertical\">\n <button\n type=\"button\"\n className={css.button}\n aria-pressed={folded}\n aria-label={folded ? t('chat.expand') : t('chat.fold')}\n title={folded ? t('chat.expand') : t('chat.fold')}\n onClick={toggleFold}\n >\n <IconFoldPanel size={16} />\n </button>\n <button\n type=\"button\"\n className={css.button}\n aria-label={t('entry.new')}\n title={t('entry.new')}\n onClick={startNewSession}\n >\n <IconNewSession size={16} />\n </button>\n {/* 功能页签扩展位:后续新入口(画线工具/资讯/提醒等)加在这条分隔线\n 下方,激活态面板向左展开;复用 .button 样式保持竖条节奏。 */}\n <div className={css.divider} aria-hidden=\"true\" />\n <button\n type=\"button\"\n className={css.button}\n aria-label={t('entry.settings')}\n title={t('entry.settings')}\n onClick={openSettings}\n >\n <IconSettings size={16} />\n </button>\n </div>\n )\n}\n","/**\n * 会话列(右侧栏对话列)宽度持久化 Store:shell-pad.css 规则 3 的\n * --dshtrading-chat-w 引用 body 内联的 --dshtrading-chat-user-w(自定义属性\n * 随继承进栅格 frame);本 store 只管数值夹紧与持久化,把值写到 body 变量\n * 是 ChatResizeHandle 的职责(拖拽路径不进 React 状态,松手才落库)。\n */\nimport { createObservable, readJson, writeJson, type WritableObservable } from './store.ts'\n\nconst WIDTH_KEY = 'dshtrading.chat.width.v1'\n\n/** 会话列宽度夹紧范围与默认值(px):下限保证 composer 可用,上限给中栏行情留有效宽度。 */\nexport const CHAT_WIDTH_MIN = 320\nexport const CHAT_WIDTH_MAX = 720\nexport const CHAT_WIDTH_DEFAULT = 380\n\n/** 夹紧到合法宽度(取整)。 */\nexport function clampChatWidth(width: number): number {\n return Math.min(CHAT_WIDTH_MAX, Math.max(CHAT_WIDTH_MIN, Math.round(width)))\n}\n\nexport type ChatWidthStore = WritableObservable<number>\n\nlet store: ChatWidthStore | undefined\n\n/** 会话列宽度 Store(px,持久化 dshtrading.chat.width.v1)。 */\nexport function chatWidthStore(): ChatWidthStore {\n if (store !== undefined) return store\n const base = createObservable<number>(clampChatWidth(readJson<number>(WIDTH_KEY, CHAT_WIDTH_DEFAULT)))\n store = {\n ...base,\n set(value: number) {\n base.set(clampChatWidth(value))\n writeJson(WIDTH_KEY, base.getSnapshot())\n },\n }\n return store\n}\n","/**\n * 会话列拖拽调宽手柄:贴对话列左缘的常驻竖条(宿主自带的拖拽手柄在 rtl\n * 翻转下物理坐标错位被 shell-pad.css 规则 4 隐藏,列宽因此不可调——本组件\n * 是替代面)。\n *\n * - 位置纯 CSS:right = 44px 竖条宽 + var(--dshtrading-chat-w)。手柄挂在\n * shell.overlay(栅格 frame 的 overlayLayer 子树内),继承 frame 上定义的\n * --dshtrading-chat-w,无需测量。\n * - 拖拽直写 body 内联 --dshtrading-chat-user-w(shell-pad.css 规则 3 引用),\n * 不进 React 状态——指针移动只驱栅格重排,不触发重渲染;松手才落 store\n * 持久化。宽度起点取 store 快照、位移取 clientX 差值,不硬编码竖条宽。\n * - 拖拽期间 body[data-dshtrading-chat-resizing] 关掉宿主轨道 transition\n * (滑入动画会毁掉跟手性)并全局 col-resize + 禁选中。\n * - 双击复位默认宽度;焦点态 ←/→ 微调(role=separator 惯例,← 加宽)。\n * - 无当前会话或会话列折叠时退场(对话列不在场,手柄无锚点)。\n */\nimport { useEffect, useRef } from 'react'\nimport type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport { CHAT_WIDTH_DEFAULT, chatWidthStore, clampChatWidth } from './chat-width-store.ts'\nimport type { FoldStore } from './fold-store.ts'\nimport css from './chat-resize-handle.module.css'\n\nexport interface ChatResizeHandleInjected {\n hooks: { folded: FoldStore }\n}\n\nexport type ChatResizeHandleProps =\n & PropsRuntime<'shell.overlay'>\n & PropsLocale<'dshtrading.market'>\n & InjectFace<ChatResizeHandleInjected>\n\n/** 把宽度写到 body 变量(布局实时消费);persist 时夹紧落 store。 */\nfunction applyWidth(width: number, persist: boolean): void {\n const clamped = clampChatWidth(width)\n document.body.style.setProperty('--dshtrading-chat-user-w', `${clamped}px`)\n if (persist) chatWidthStore().set(clamped)\n}\n\nexport function ChatResizeHandle({ t, useFolded, useSessions }: ChatResizeHandleProps) {\n const folded = useFolded(value => value)\n const chatOn = useSessions(state => state.current) !== undefined\n const ref = useRef<HTMLDivElement | null>(null)\n\n // 挂载即把持久化宽度同步到 body 变量(会话列展开动画的目标值);卸载还原,\n // 折叠/无会话的退场不残留内联变量。\n useEffect(() => {\n document.body.style.setProperty('--dshtrading-chat-user-w', `${chatWidthStore().getSnapshot()}px`)\n return () => { document.body.style.removeProperty('--dshtrading-chat-user-w') }\n }, [])\n\n if (!chatOn || folded) return null\n\n const onPointerDown = (event: React.PointerEvent<HTMLDivElement>): void => {\n if (event.button !== 0) return\n event.preventDefault()\n const handle = ref.current\n if (handle === null) return\n const startX = event.clientX\n const startWidth = chatWidthStore().getSnapshot()\n handle.setPointerCapture(event.pointerId)\n document.body.dataset.dshtradingChatResizing = 'on'\n const onMove = (move: PointerEvent): void => {\n applyWidth(startWidth + (startX - move.clientX), false)\n }\n const onUp = (up: PointerEvent): void => {\n handle.removeEventListener('pointermove', onMove)\n handle.removeEventListener('pointerup', onUp)\n handle.removeEventListener('pointercancel', onCancel)\n delete document.body.dataset.dshtradingChatResizing\n applyWidth(startWidth + (startX - up.clientX), true)\n }\n const onCancel = (): void => {\n handle.removeEventListener('pointermove', onMove)\n handle.removeEventListener('pointerup', onUp)\n handle.removeEventListener('pointercancel', onCancel)\n delete document.body.dataset.dshtradingChatResizing\n applyWidth(startWidth, true)\n }\n // setPointerCapture 后 move/up/cancel 都派发到手柄上,随元素监听最省。\n handle.addEventListener('pointermove', onMove)\n handle.addEventListener('pointerup', onUp)\n handle.addEventListener('pointercancel', onCancel)\n }\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n const step = event.shiftKey ? 60 : 20\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n applyWidth(chatWidthStore().getSnapshot() + step, true)\n } else if (event.key === 'ArrowRight') {\n event.preventDefault()\n applyWidth(chatWidthStore().getSnapshot() - step, true)\n }\n }\n\n return (\n <div\n ref={ref}\n className={css.handle}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={t('chat.resize')}\n tabIndex={0}\n onPointerDown={onPointerDown}\n onDoubleClick={() => { applyWidth(CHAT_WIDTH_DEFAULT, true) }}\n onKeyDown={onKeyDown}\n />\n )\n}\n","/**\n * 双侧栏折叠状态持久化 Store(富途式双栏折叠规范):\n *\n * - 左侧栏(自选 MarketDock):marketFoldStore ↔ dshtrading.market.folded.v1\n * - 右侧栏(会话 SessionRail):foldStore ↔ dshtrading.chat.folded.v1\n * - 左右各自独立持久化,各自支持 toggle(),可观察变化。\n */\nimport { createObservable, readJson, writeJson, type WritableObservable } from './store.ts'\n\nconst RIGHT_FOLD_KEY = 'dshtrading.chat.folded.v1'\nconst LEFT_FOLD_KEY = 'dshtrading.market.folded.v1'\n\nexport type FoldStore = WritableObservable<boolean> & { toggle(): void }\n\nlet rightStore: FoldStore | undefined\nlet leftStore: FoldStore | undefined\n\n/** 会话列(右侧栏)折叠 Store。 */\nexport function foldStore(): FoldStore {\n if (rightStore !== undefined) return rightStore\n const base = createObservable<boolean>(readJson<boolean>(RIGHT_FOLD_KEY, false))\n rightStore = {\n ...base,\n toggle() {\n const next = !base.getSnapshot()\n base.set(next)\n writeJson(RIGHT_FOLD_KEY, next)\n },\n }\n return rightStore\n}\n\n/** 自选侧栏(左侧栏)折叠 Store。 */\nexport function marketFoldStore(): FoldStore {\n if (leftStore !== undefined) return leftStore\n const base = createObservable<boolean>(readJson<boolean>(LEFT_FOLD_KEY, false))\n leftStore = {\n ...base,\n toggle() {\n const next = !base.getSnapshot()\n base.set(next)\n writeJson(LEFT_FOLD_KEY, next)\n },\n }\n return leftStore\n}\n","/**\n * 自选股 host SSOT 同步(issue #32 / P3):\n *\n * - 启动同步:GET /watchlists → 有行则以 host 为准覆盖本地 observable;\n * host 为空且本地 localStorage 有定制行 → 一次性迁移导入(POST /watchlists/import,\n * host 非空时服务端拒绝,幂等)→ 重拉 host。\n * - 选中标的:GET /selection → host 有值则覆盖本地(中栏切图 SSOT)。\n * - 变更 host-first:add/remove/select 先写 host(PUT/POST/DELETE),成功后才更新\n * 本地 observable(localStorage 由原 store 持久化,降级为缓存镜像)。\n * - SSE:'watchlists' / 'selection' 失效信号 → 重拉 host 覆盖本地(左栏实时增删行、\n * watchlist_select 工具驱动中栏切图)。\n *\n * 市场种子列表(DEFAULT_WATCHLISTS)不进 host:host 无行的 market 客户端照旧\n * 回落种子展示(rowsFor),迁移只搬用户定制行。\n */\nimport type { Instrument, MarketId } from './types.ts'\nimport type { SelectionStore, WatchlistStore } from './store.ts'\nimport {\n addHostWatchlistRow,\n fetchHostSelection,\n fetchHostWatchlists,\n importHostWatchlists,\n putHostSelection,\n removeHostWatchlistRow,\n subscribeTradingEvents,\n type HostWatchlists,\n} from './api.ts'\n\nfunction isHostWatchlists(value: HostWatchlists): boolean {\n return Object.values(value).some(rows => (rows?.length ?? 0) > 0)\n}\n\n/** 把 host 行映射回客户端 Watchlists(market 断言到 MarketId 词汇)。 */\nfunction toLocalWatchlists(host: HostWatchlists): Partial<Record<MarketId, Instrument[]>> {\n const out: Partial<Record<MarketId, Instrument[]>> = {}\n for (const [market, rows] of Object.entries(host)) {\n if (!Array.isArray(rows) || rows.length === 0) continue\n out[market as MarketId] = rows.map(row => ({\n market: row.market as MarketId,\n symbol: row.symbol,\n ...(row.name !== undefined ? { name: row.name } : {}),\n }))\n }\n return out\n}\n\nexport interface HostWatchlistSyncOptions {\n watchlists: WatchlistStore\n selection: SelectionStore\n}\n\n/** 启动 host 同步 + 变更接管 + SSE 订阅;返回清理函数(插件卸载语义)。 */\nexport function wireHostWatchlistSync(options: HostWatchlistSyncOptions): () => void {\n const { watchlists, selection } = options\n const disposables: Array<() => void> = []\n\n const syncFromHost = async (): Promise<void> => {\n try {\n const host = await fetchHostWatchlists()\n watchlists.set(toLocalWatchlists(host))\n } catch {\n /* 桥不可用 → 本地镜像维持现状(不劣于升级前) */\n }\n }\n\n const boot = async (): Promise<void> => {\n try {\n const host = await fetchHostWatchlists()\n if (isHostWatchlists(host)) {\n // host 已有定制行 → host 为准(可能来自工具写入或另一标签页)。\n watchlists.set(toLocalWatchlists(host))\n } else {\n // host 为空 → 尝试一次性迁移本地 localStorage 定制行(幂等)。\n const local = watchlists.getSnapshot()\n const customized: HostWatchlists = {}\n for (const [market, rows] of Object.entries(local)) {\n if (Array.isArray(rows) && rows.length > 0) customized[market] = rows\n }\n if (Object.keys(customized).length > 0) {\n const imported = await importHostWatchlists(customized)\n if (imported) {\n const after = await fetchHostWatchlists()\n watchlists.set(toLocalWatchlists(after))\n }\n // 导入被拒(host 非空竞态)→ 下面统一 host 拉取兜底。\n }\n }\n // 选中标的:host 有值则覆盖(SSOT);host 空保持本地。\n const hostSelection = await fetchHostSelection()\n if (hostSelection !== null) {\n selection.set({ instrument: hostSelection as Instrument })\n }\n } catch {\n /* 迁移/同步失败不阻断启动 */\n }\n }\n void boot()\n\n // 变更接管:host-first(成功后才更新本地 observable;localStorage 由原方法持久化为镜像)。\n const originalAdd = watchlists.add.bind(watchlists)\n watchlists.add = (market: MarketId, instrument: Instrument): void => {\n void (async () => {\n const ok = await addHostWatchlistRow(instrument)\n if (ok) originalAdd(market, instrument)\n else console.warn('[dsh-trading] watchlist add failed on host — local state unchanged')\n })()\n }\n const originalRemove = watchlists.remove.bind(watchlists)\n watchlists.remove = (market: MarketId, symbol: string): void => {\n void (async () => {\n const ok = await removeHostWatchlistRow(market, symbol)\n if (ok) originalRemove(market, symbol)\n else console.warn('[dsh-trading] watchlist remove failed on host — local state unchanged')\n })()\n }\n const originalSelect = selection.select.bind(selection)\n selection.select = (instrument: Instrument): void => {\n void (async () => {\n const ok = await putHostSelection(instrument)\n if (ok) originalSelect(instrument)\n else console.warn('[dsh-trading] selection update failed on host — local state unchanged')\n })()\n }\n\n // SSE 失效信号:工具写入(watchlist_add/remove/select)或其它标签页变更 → 重拉覆盖。\n disposables.push(subscribeTradingEvents({\n watchlists: () => { void syncFromHost() },\n selection: () => {\n void (async () => {\n const instrument = await fetchHostSelection()\n if (instrument !== null) selection.set({ instrument: instrument as Instrument })\n })()\n },\n }))\n\n return () => {\n for (const dispose of disposables) dispose()\n }\n}\n","/**\n * client-ui-trading client 词典(纯数据模块:零运行时依赖)。\n *\n * 单一来源:本包 client apply 注册 zh/en(typed register 编译期校验键位);\n * packages/dsh-i18n 语言包构建期 import 本模块注册 zh-CN;scripts/i18n-audit.mjs\n * 静态加载本模块做 zh/en 键对齐与占位符对齐门禁。\n */\nimport type { MarketLocaleKey } from './contract.ts'\n\nexport const zh: Record<MarketLocaleKey, string> = {\n 'tab.watch': '自选',\n 'tab.crypto': '加密货币',\n 'tab.us': '美股',\n 'tab.cn': 'A股',\n 'tab.hk': '港股',\n 'sidebar.addPlaceholder': '输入代码,回车加入自选',\n 'sidebar.add': '添加',\n 'sidebar.addMarketHint': '点击切换目标市场(加密货币→美股→A股→港股)',\n 'sidebar.empty': '暂无标的',\n 'sidebar.emptyHint': '在上方输入代码加入自选(可切换目标市场)',\n 'sidebar.loadFailed': '行情桥不可用(未装市场包?)',\n 'sidebar.retry': '重试',\n 'sidebar.markets': '市场与自选',\n 'sidebar.fold': '收起自选',\n 'sidebar.expand': '展开自选',\n 'header.symbol': '名称代码',\n 'header.trend': '走势',\n 'header.priceChange': '最新价/涨跌幅',\n 'row.remove': '移除',\n 'row.select': '查看行情',\n 'quote.empty': '选择左侧标的查看行情',\n 'quote.emptyHint': '左栏点击任意标的,这里展示 K 线与关键报价',\n 'quote.open': '开',\n 'quote.high': '高',\n 'quote.low': '低',\n 'quote.prevClose': '昨收',\n 'quote.volume': '量',\n 'quote.updated': '更新',\n 'quote.loadFailed': 'K线加载失败',\n 'quote.loadFailedColon': 'K线加载失败:{error}',\n 'quote.noData': '暂无数据',\n 'quote.sendToAgent': '发给 Agent',\n 'quote.sendToAgentHint': '把当前标的行情与图表截图填入会话输入框(可继续编辑,自行发送)',\n 'quote.sendSending': '填入中…',\n 'quote.sendSent': '已填入输入框',\n 'quote.sendFailed': '填入失败',\n 'quote.tab.chart': '图表',\n 'quote.tab.fundamentals': '基本面',\n 'quote.tab.derivatives': '衍生品',\n 'quote.tab.news': '新闻',\n 'quote.tab.announcements': '公告',\n 'fundamentals.peTtm': '市盈率(TTM)',\n 'fundamentals.peDynamic': '动态市盈率',\n 'fundamentals.pb': '市净率',\n 'fundamentals.marketCap': '总市值',\n 'fundamentals.floatMarketCap': '流通市值',\n 'fundamentals.turnoverRate': '换手率',\n 'fundamentals.dividendYield': '股息率',\n 'fundamentals.fiftyTwoWeekHigh': '52周最高',\n 'fundamentals.fiftyTwoWeekLow': '52周最低',\n 'fundamentals.unavailable': '该市场数据源未提供基本面字段,以下为行情派生数据',\n 'fundamentals.source': '数据来源',\n 'fundamentals.unit.cn': '元',\n 'fundamentals.unit.us': '美元',\n 'fundamentals.unit.hk': '港元',\n 'fundamentals.unit.crypto': '美元',\n 'fundamentals.scale': '万',\n 'fund.page.empty': '请在左侧自选栏选择标的以查看基本面与多期财报档案',\n 'fund.page.loading': '正在从官方数据源动态拉取 {symbol} 财务与估值矩阵...',\n 'fund.pill.peTtm': 'PE(TTM):',\n 'fund.pill.peDynamic': '动态PE:',\n 'fund.pill.pb': 'PB:',\n 'fund.pill.marketCap': '总市值:',\n 'fund.pill.dividendYield': '股息率:',\n 'fund.pill.turnover': '换手:',\n 'fund.pill.floatCap': '流通市值:',\n 'fund.pill.rank': '全球排名:',\n 'fund.nav.financials': '财务',\n 'fund.nav.key': '关键指标',\n 'fund.nav.income': '利润表',\n 'fund.nav.balance': '资产负债表',\n 'fund.nav.cashflow': '现金流量表',\n 'fund.nav.forecast': '预测',\n 'fund.nav.forecastItem': '盈利预测',\n 'fund.nav.reports': '晨星研报',\n 'fund.nav.reportsItem': '机构研报',\n 'fund.nav.valuation': '估值',\n 'fund.nav.valuationItem': '估值分析',\n 'fund.nav.biz': '经营分析',\n 'fund.nav.bizSegments': '主营构成',\n 'fund.nav.bizEfficiency': '经营效率',\n 'fund.nav.smartMoney': '聪明钱',\n 'fund.nav.shareholders': '股东持股',\n 'fund.nav.insider': '股东增减持',\n 'fund.nav.institutional': '机构持股',\n 'fund.nav.profile': '简况',\n 'fund.nav.profileOverview': '公司概况',\n 'fund.nav.profileExecutives': '公司高管',\n 'fund.nav.actions': '公司行动',\n 'fund.nav.dividends': '分红派息',\n 'fund.nav.buybacks': '回购',\n 'fund.nav.splits': '拆股并股',\n 'fund.chart.reportTitle': '{period} 财报',\n 'fund.chart.showYoy': '显示同比: {state}',\n 'fund.chart.yoyLegend': '同比增长率 (%)',\n 'fund.switch.on': '开',\n 'fund.switch.off': '关',\n 'fund.matrix.currency': '币种: {currency}',\n 'fund.matrix.clickHint': '点击指标行可在上方图表联动查看趋势',\n 'fund.matrix.indicator': '指标名称',\n 'fund.matrix.emptyTitle': '财务数据提示',\n 'fund.matrix.emptyHint': '当前标的暂未生成多期标准财报矩阵(可能为加密数字资产或该市场未提供公开季报端点),请参考估值与公司简况面板。',\n 'fund.forecast.title': '机构盈利预测与评级一致预期',\n 'fund.forecast.subtitle': '聚合券商研报盈利预测(EPS/营收/净利)与评级统计',\n 'fund.forecast.epsCurrent': '当年预期 EPS',\n 'fund.forecast.epsNext': '次年预期 EPS',\n 'fund.forecast.targetPrice': '一致预期目标价',\n 'fund.forecast.orgCount': '覆盖机构数',\n 'fund.forecast.col.year': '预测年度',\n 'fund.forecast.col.eps': '每股收益 EPS (元)',\n 'fund.forecast.col.revenue': '营业收入 (亿元)',\n 'fund.forecast.col.netProfit': '归母净利润 (亿元)',\n 'fund.forecast.col.orgs': '预测机构数',\n 'fund.forecast.empty': '当前标的暂未公开主流券商一致盈利预测数据,请关注公司定期公告与业绩快报。',\n 'fund.reports.title': '机构研究报告精选',\n 'fund.reports.subtitle': '券商机构最新深度调研、盈利预测与投资评级',\n 'fund.reports.analyst': '分析师: {author}',\n 'fund.reports.empty': '暂未检索到该标的的公开机构研报,您可在对话框向 Agent 提问进行个股深度财务核查。',\n 'fund.valuation.title': '估值核心诊断与历史分位',\n 'fund.valuation.subtitle': '基于多周期市盈率、市净率与价格区间综合诊断',\n 'fund.valuation.range52w': '52 周价格区间',\n 'fund.valuation.low52w': '52周最低: {price}',\n 'fund.valuation.high52w': '52周最高: {price}',\n 'fund.valuation.peNote': '估值评注: {note}',\n 'fund.valuation.undervalued': '🟢 相对低估',\n 'fund.valuation.fair': '🟡 估值合理',\n 'fund.valuation.overvalued': '🔴 相对偏高',\n 'fund.valuation.assessing': '评估中',\n 'fund.valuation.peTtm': '滚动市盈率 PE (TTM)',\n 'fund.valuation.peDynamic': '动态市盈率 PE (动)',\n 'fund.valuation.peStatic': '静态市盈率 PE (静)',\n 'fund.valuation.pb': '市净率 PB',\n 'fund.valuation.marketCap': '总市值',\n 'fund.valuation.floatCap': '流通市值',\n 'fund.valuation.dividendYield': '股息率 (TTM)',\n 'fund.valuation.turnover': '换手率',\n 'fund.segments.title': '主营业务构成分析',\n 'fund.segments.subtitle': '按产品、行业及地区分类拆解业务收入与毛利率结构',\n 'fund.segments.all': '全部',\n 'fund.segments.byProduct': '按产品',\n 'fund.segments.byIndustry': '按行业',\n 'fund.segments.byRegion': '按地区',\n 'fund.segments.col.segment': '主营分类 / 项目',\n 'fund.segments.col.revenue': '主营收入 (元)',\n 'fund.segments.col.revenueRatio': '收入占比',\n 'fund.segments.col.profit': '主营利润 (元)',\n 'fund.segments.col.grossMargin': '毛利率',\n 'fund.segments.empty': '暂未获取到当期详细主营构成拆解明细,请参考利润表营业收入科目。',\n 'fund.efficiency.title': '运营与周转效率',\n 'fund.efficiency.subtitle': '存货周转天数、应收账款周转天数、营业周期与盈利质量',\n 'fund.efficiency.inventoryDays': '存货周转天数',\n 'fund.efficiency.receivableDays': '应收账款周转天数',\n 'fund.efficiency.operatingCycle': '净营业周期',\n 'fund.efficiency.assetTurnover': '总资产周转率',\n 'fund.efficiency.grossMargin': '销售毛利率',\n 'fund.efficiency.netMargin': '销售净利率',\n 'fund.efficiency.currentRatio': '流动比率',\n 'fund.efficiency.quickRatio': '速动比率',\n 'fund.efficiency.summary': '本期存货周转天数约为 {inventory} 天,应收账款周转天数约为 {receivable} 天,净营业周期为 {cycle} 天。',\n 'fund.efficiency.empty': '经营效率明细数据暂未获取到(数据源未覆盖该报告期),不做推断性描述。',\n 'fund.holders.title': '十大流通股东穿透表',\n 'fund.holders.subtitle': '核心机构、战略股东、股东户数与筹码集中度',\n 'fund.holders.totalHolders': '股东总户数',\n 'fund.holders.avgShares': '户均持股数',\n 'fund.holders.avgValue': '户均持股市值',\n 'fund.holders.concentration': '筹码集中度',\n 'fund.holders.moderate': '适中',\n 'fund.holders.col.rank': '排名',\n 'fund.holders.col.name': '股东名称',\n 'fund.holders.col.shares': '持股数 (股)',\n 'fund.holders.col.ratio': '占流通股比',\n 'fund.holders.col.change': '持股变动',\n 'fund.holders.unchanged': '不变',\n 'fund.holders.empty': '当前标的暂未公开当期十大流通股东穿透名录,可参考流通市值与换手率变动。',\n 'fund.insider.title': '重要股东及高管持股变动明细',\n 'fund.insider.subtitle': '主要股东、董监高近期持股变动与交易记录',\n 'fund.insider.col.holder': '股东全称',\n 'fund.insider.col.type': '变动类型',\n 'fund.insider.col.shares': '持股数量 (股)',\n 'fund.insider.col.ratio': '持股比例',\n 'fund.insider.col.date': '披露日期',\n 'fund.insider.empty': '暂无股东增减持明细数据(数据源未覆盖或该报告期无披露记录)。',\n 'fund.institutional.title': '机构投资者持仓分布',\n 'fund.institutional.subtitle': '投资公司、公募基金、外资QFII、保险资管等机构持股汇总',\n 'fund.institutional.col.org': '机构全称',\n 'fund.institutional.col.type': '机构类型',\n 'fund.institutional.col.shares': '持股数 (股)',\n 'fund.institutional.col.ratio': '占流通股比',\n 'fund.institutional.col.value': '持股市值 (元)',\n 'fund.institutional.col.change': '本期变动',\n 'fund.institutional.empty': '机构持股总数与持仓明细已在十大流通股东穿透中体现,涵盖主流公募及指数基金。',\n 'fund.profile.title': '标的档案与公司基本概况',\n 'fund.profile.subtitle': '法定代表、管理团队、注册资本与官方渠道',\n 'fund.profile.fullName': '公司全称',\n 'fund.profile.nameEn': '英文名称',\n 'fund.profile.industry': '所属行业',\n 'fund.profile.registeredCapital': '注册资本',\n 'fund.profile.employees': '员工规模',\n 'fund.profile.address': '办公 / 注册地址',\n 'fund.profile.website': '官方网站',\n 'fund.profile.description': '公司简介与历史沿革:',\n 'fund.profile.descriptionFallback': '{symbol} 公司详细业务介绍与产业历史。',\n 'fund.executives.title': '管理团队与高管名录',\n 'fund.executives.subtitle': '董事长、总经理、财务总监及核心董监高',\n 'fund.executives.chairman': '董事长',\n 'fund.executives.generalManager': '总经理 / CEO',\n 'fund.executives.legalRep': '法定代表人',\n 'fund.executives.boardSecretary': '董事会秘书',\n 'fund.dividends.title': '历年分红派息记录',\n 'fund.dividends.subtitle': '历次利润分配方案、除权除息日与股息分红',\n 'fund.dividends.col.year': '方案年度',\n 'fund.dividends.col.plan': '分配方案',\n 'fund.dividends.col.cash': '每股派现 (元)',\n 'fund.dividends.col.exDate': '除权除息日',\n 'fund.dividends.col.recordDate': '股权登记日',\n 'fund.dividends.empty': '暂未获取到公开历史分红派息方案记录。',\n 'fund.buybacks.title': '股份回购方案与股本管理',\n 'fund.buybacks.subtitle': '公司股份回购方案、回购资金规模、股本结构与实施状态',\n 'fund.buybacks.col.date': '公告日期',\n 'fund.buybacks.col.amount': '回购规模 / 金额',\n 'fund.buybacks.col.shares': '回购股份 (股)',\n 'fund.buybacks.col.priceRange': '价格区间',\n 'fund.buybacks.col.status': '当前状态',\n 'fund.buybacks.empty': '暂无回购记录数据(数据源未覆盖或该标的确实未公告回购),以下字段留空以待数据补齐;不做推测性描述。',\n 'fund.splits.title': '拆股、并股与送转股历史',\n 'fund.splits.subtitle': '历次股本拆分、送股与公积金转增股本记录',\n 'fund.splits.col.date': '除权除息日',\n 'fund.splits.col.ratio': '送转股方案',\n 'fund.splits.col.description': '实施说明与进度',\n 'fund.splits.empty': '暂无拆股并股或送转股记录数据(数据源未覆盖或该标的确实无相关事件)。',\n 'fund.unit.orgs': '家',\n 'fund.unit.days': '{n} 天',\n 'fund.unit.times': '{n} 次',\n 'fund.unit.holders': '{n}万户',\n 'fund.unit.shares': '{n} 股',\n 'fund.unit.wanCny': '¥{n}万',\n 'fund.unit.yiCny': '¥{n}亿',\n 'marker.signal.toggle': '信号',\n 'marker.signal.toggleTitle': '策略信号标记',\n 'marker.signal.entryReason': 'EMA(12/26) 金叉买入价 {cur}{price}',\n 'marker.signal.exitReason': 'EMA(12/26) 死叉卖出价 {cur}{price}',\n 'marker.knowledge.toggle': '事件',\n 'marker.knowledge.toggleTitle': '知识事件图钉',\n 'marker.knowledge.batched': '{title} (等{count}条)',\n 'tooltip.signal.entry': '买入信号',\n 'tooltip.signal.exit': '卖出信号',\n 'tooltip.label.price': '价格',\n 'tooltip.label.time': '时间',\n 'tooltip.label.return': '收益率',\n 'tooltip.label.profit': '盈亏',\n 'tooltip.label.holding': '持仓',\n 'tooltip.unit.bars': '{n} 根',\n 'tooltip.knowledge.header': '知识事件',\n 'tooltip.credibility.high': '高可信度',\n 'tooltip.credibility.medium': '中可信度',\n 'tooltip.credibility.low': '低可信度',\n 'news.time.justNow': '刚刚',\n 'news.time.minutesAgo': '{n}分钟前',\n 'news.time.hoursAgo': '{n}小时前',\n 'news.time.daysAgo': '{n}天前',\n 'news.time.monthsAgo': '{n}个月前',\n 'news.time.yearsAgo': '{n}年前',\n 'news.source.eastmoneyAnnouncement': '公司公告',\n 'news.source.eastmoney': '东方财富',\n 'news.source.hkexAnnouncement': '港交所披露',\n 'news.source.cninfoAnnouncement': '巨潮公告',\n 'news.source.secEdgar': 'SEC 披露',\n 'news.source.binance': '币安公告',\n 'news.source.okx': '欧易公告',\n 'news.source.yahoo': 'Yahoo 财经',\n 'news.source.google': 'Google 新闻',\n 'news.source.coindesk': 'CoinDesk',\n 'news.source.theblock': 'The Block',\n 'news.source.cointelegraph': 'CoinTelegraph',\n 'news.source.decrypt': 'Decrypt',\n 'news.empty.exchangeNotReady': '公告源未就绪',\n 'news.empty.mediaNotActive': '新闻源未激活',\n 'news.empty.noAnnouncements': '暂无相关公告',\n 'news.empty.noNews': '暂无相关新闻',\n 'news.sendToAgentTitle': '发送给 Agent 分析',\n 'news.degraded': '部分数据源不可用: {sources}',\n 'compose.opener': '看一下我正在看的行情:{title}',\n 'compose.prevClose': '昨收 {price}',\n 'compose.priceLine': '现价',\n 'compose.candleLine': '当根K线 开 {open} 高 {high} 低 {low} 收 {close} 量 {volume}',\n 'compose.indicatorsLine': '已开启指标:{titles}',\n 'compose.listSeparator': '、',\n 'compose.deltaWrap': '(|)',\n 'compose.prevSep': ',',\n 'compose.withScreenshot': '随消息附当前图表截图,请结合分析。',\n 'compose.withoutScreenshot': '请结合当前行情继续分析。',\n 'card.order.rejected': '已拒绝',\n 'card.order.dryRun': '模拟单',\n 'card.order.live': '实盘单',\n 'card.order.priceLabel': '价格',\n 'card.order.quantityLabel': '数量',\n 'card.order.refPriceLabel': '参考价',\n 'card.watchlist.selected': '已切换选中',\n 'card.watchlist.added': '已加入自选',\n 'card.watchlist.already': '已在自选中',\n 'derivatives.title': '衍生品',\n 'derivatives.oi': '持仓量',\n 'derivatives.oiValue': '持仓价值',\n 'derivatives.funding': '资金费率',\n 'derivatives.fundingPositive': '多头付资金',\n 'derivatives.fundingNegative': '空头付资金',\n 'derivatives.longShort': '多空人数比',\n 'derivatives.topLongShort': '大户多空比',\n 'derivatives.taker': '主动买卖比',\n 'derivatives.ratioLong': '偏多',\n 'derivatives.ratioShort': '偏空',\n 'derivatives.predicted': '预测费率',\n 'derivatives.countdown': '距结算',\n 'derivatives.markPrice': '标记价格',\n 'derivatives.indexPrice': '指数价格',\n 'derivatives.basis': '基差',\n 'derivatives.oiChange24h': '24h 持仓变化',\n 'derivatives.fundingHistory': '费率历史(近 30 期)',\n 'derivatives.oiTrend': '持仓量趋势(近 30 日)',\n 'derivatives.historyUnavailable': '该数据源未提供历史序列',\n 'derivatives.analyze': '分析资金面',\n 'derivatives.analyzeBody': '请分析 {symbol} 永续合约的资金面与多空拥挤度(数据源 {source}):\\n{lines}\\n请结合费率走向、OI 变化与多空比给出拥挤度判断和风险提示(不构成投资建议)。', 'derivatives.analyzeHint': '把衍生品快照发给 Agent,按资金面流程分析',\n 'derivatives.perpSource': '数据来自对应永续合约(现货标的自动映射)',\n 'derivatives.hint.oi': '未平仓合约总量(币数),反映市场杠杆规模;点击查看趋势',\n 'derivatives.hint.oiValue': '未平仓合约总价值(USD)',\n 'derivatives.hint.funding': '正费率=多头付空头(多头拥挤);点击查看预测与结算倒计时',\n 'derivatives.hint.longShort': '多空持仓人数比,>1 偏多;点击查看详情',\n 'derivatives.hint.topLongShort': '大户持仓多空比,>1 大户偏多',\n 'derivatives.hint.taker': '主动买入/卖出成交量比,>1 买方主动性强',\n 'derivatives.hint.basis': '(标记价-指数价)/指数价;正基差=永续升水',\n 'orderbook.title': '盘口与分笔',\n 'orderbook.close': '关闭盘口',\n 'orderbook.unavailable': '该市场数据源未提供盘口',\n 'orderbook.buyForce': '买盘',\n 'orderbook.sellForce': '卖盘',\n 'orderbook.spread': '价差',\n 'orderbook.trades': '逐笔成交',\n 'orderbook.toggle': '盘口',\n 'trade.toggle': '交易',\n 'trade.title': '交易工作台',\n 'trade.dryRunOnly': 'Dry-Run 模拟(GUI 不提供实盘通道)',\n 'trade.close': '关闭交易台',\n 'trade.buy': '买入',\n 'trade.sell': '卖出',\n 'trade.long': '多',\n 'trade.short': '空',\n 'trade.market': '市价',\n 'trade.limit': '限价',\n 'trade.price': '价格',\n 'trade.quantity': '数量',\n 'trade.dryRunSubmit': '模拟下单',\n 'trade.submitting': '提交中…',\n 'trade.submitFailed': '提交失败:服务未挂载或参数被拒绝',\n 'trade.dryRunFilled': '已模拟成交',\n 'trade.liveHint': '实盘下单唯一通道是 Agent 会话(显式 liveTrading + 统一审批闸门);本面板只做模拟与只读查询。',\n 'trade.positions': '当前持仓',\n 'trade.openOrders': '活动委托',\n 'trade.fills': '成交历史',\n 'trade.balances': '余额',\n 'trade.credentialHint': '凭证未配置或不可用(fail-closed)——配置后可查看',\n 'trade.unavailable': '数据面未提供',\n 'trade.empty': '暂无数据',\n 'trade.symbol': '标的',\n 'trade.side': '方向',\n 'trade.type': '类型',\n 'trade.size': '数量',\n 'trade.entryPrice': '开仓均价',\n 'trade.unrealizedPnl': '未实现盈亏',\n 'trade.filled': '已成交',\n 'trade.time': '时间',\n 'trade.action': '操作',\n 'trade.cancel': '撤单',\n 'trade.canceling': '撤单中…',\n 'trade.cancelSuccess': '撤单成功',\n 'trade.cancelFailed': '撤单失败',\n 'trade.submit': '确认下单',\n 'trade.orderSuccess': '下单已提交',\n 'trade.drawer.collapse': '收起资产抽屉',\n 'trade.drawer.expand': '展开资产抽屉',\n 'trade.sideOrder': '快速下单',\n 'trade.liveChannel': '实盘通道',\n 'trade.fillCurrentPrice': '填入现价',\n 'trade.marketExecuteHint': '以市场最优对手价即刻成交',\n 'trade.estimatedAmount': '预估金额',\n 'trade.unit.shares': '股',\n 'trade.unit.coin': '币',\n 'trade.drawer.available': '可用余额',\n 'trade.drawer.locked': '冻结金额',\n 'trade.drawer.total': '总计',\n 'trade.drawer.asset': '币种/资产',\n 'trade.mode.live': '实盘交易',\n 'trade.mode.paper': '模拟交易',\n 'trade.paper.tag': '模拟盘',\n 'trade.paper.reset': '重置模拟金',\n 'trade.paper.resetConfirm': '确认将模拟账户重置为初始资产 (100,000) 吗?',\n 'trade.paper.available': '可用模拟资金',\n 'trade.paper.buyAction': '模拟买入',\n 'trade.paper.sellAction': '模拟卖出',\n 'trade.paper.drawerTag': '模拟盘账本',\n 'trade.paper.initialBalance': '初始模拟金',\n 'trade.paper.totalPnl': '模拟总盈亏',\n 'quote.rangeStats': '区间统计',\n 'quote.rangeStatsHint': '在图上拖拽框选一段K线,统计区间涨跌',\n 'range.change': '区间涨跌幅',\n 'range.changeAbs': '区间涨跌',\n 'range.high': '区间最高',\n 'range.low': '区间最低',\n 'range.amplitude': '区间振幅',\n 'range.volume': '区间成交量',\n 'range.bars': 'K线数',\n 'range.upDays': '上涨',\n 'range.downDays': '下跌',\n 'range.closePanel': '关闭',\n 'interval.1m': '1分',\n 'interval.3m': '3分',\n 'interval.5m': '5分',\n 'interval.10m': '10分',\n 'interval.15m': '15分',\n 'interval.30m': '30分',\n 'interval.1h': '1小时',\n 'interval.4h': '4小时',\n 'interval.1d': '日K',\n 'interval.1w': '周K',\n 'interval.1M': '月K',\n 'status.trading': '交易中',\n 'status.closed': '已收盘',\n 'status.midday': '午间休市',\n 'status.preMarket': '盘前',\n 'status.afterHours': '盘后',\n 'status.auction': '集合竞价',\n 'index.shComposite': '上证指数',\n 'index.szComponent': '深证成指',\n 'index.chinext': '创业板指',\n 'index.hangSeng': '恒生指数',\n 'index.hangSengTech': '恒生科技',\n 'index.hscei': '国企指数',\n 'index.sp500': '标普500',\n 'index.nasdaq': '纳斯达克',\n 'index.dowJones': '道琼斯',\n 'index.btc': 'BTC',\n 'index.eth': 'ETH',\n 'index.sol': 'SOL',\n 'browser.history': '历史会话',\n 'browser.historyEmpty': '该工作区还没有会话',\n 'browser.showMore': '展开其余 {n} 条',\n 'browser.showLess': '收起',\n 'browser.menu.aria': '会话操作',\n 'browser.menu.rename': '重命名',\n 'browser.menu.fork': '分叉会话',\n 'browser.menu.archive': '归档会话',\n 'entry.new': '新会话',\n 'entry.settings': '设置',\n 'chat.fold': '折叠会话列',\n 'chat.expand': '展开会话列',\n 'chat.resize': '拖拽调整会话列宽度(双击复位,方向键微调)',\n 'stage.quote': '行情',\n 'stage.strategy': '策略',\n 'stage.knowledge': '知识库',\n 'indicator.picker': '技术指标',\n 'indicator.group.main': '主图指标',\n 'indicator.group.sub': '副图指标',\n 'indicator.empty': '暂无可用指标(未安装指标插件?)',\n 'indicator.params': '参数',\n 'indicator.apply': '应用',\n 'indicator.cancel': '取消',\n 'indicator.delete': '删除',\n 'indicator.deleteConfirm': '确定删除该自定义指标?已持久化的定义将从指标库移除。',\n}\n\nexport const en: Record<MarketLocaleKey, string> = {\n 'tab.watch': 'Watchlist',\n 'tab.crypto': 'Crypto',\n 'tab.us': 'US Stocks',\n 'tab.cn': 'China A',\n 'tab.hk': 'Hong Kong',\n 'sidebar.addPlaceholder': 'Symbol, Enter to add',\n 'sidebar.add': 'Add',\n 'sidebar.addMarketHint': 'Click to cycle target market (crypto→us→cn→hk)',\n 'sidebar.empty': 'No instruments',\n 'sidebar.emptyHint': 'Type a symbol above to add (cycle target market)',\n 'sidebar.loadFailed': 'Quote bridge unavailable (market bundle missing?)',\n 'sidebar.retry': 'Retry',\n 'sidebar.markets': 'Markets & watchlist',\n 'sidebar.fold': 'Collapse watchlist',\n 'sidebar.expand': 'Expand watchlist',\n 'header.symbol': 'Symbol',\n 'header.trend': 'Trend',\n 'header.priceChange': 'Price / Change',\n 'row.remove': 'Remove',\n 'row.select': 'View quote',\n 'quote.empty': 'Pick an instrument on the left',\n 'quote.emptyHint': 'Click any row in the sidebar to chart it here',\n 'quote.open': 'Open',\n 'quote.high': 'High',\n 'quote.low': 'Low',\n 'quote.prevClose': 'Prev close',\n 'quote.volume': 'Vol',\n 'quote.updated': 'Updated',\n 'quote.loadFailed': 'Failed to load klines',\n 'quote.loadFailedColon': 'Failed to load klines: {error}',\n 'quote.noData': 'No data',\n 'quote.sendToAgent': 'Send to agent',\n 'quote.sendToAgentHint': 'Fill the quote context and chart screenshot into the composer (edit freely, send yourself)',\n 'quote.sendSending': 'Filling…',\n 'quote.sendSent': 'Filled into composer',\n 'quote.sendFailed': 'Fill failed',\n 'quote.tab.chart': 'Chart',\n 'quote.tab.fundamentals': 'Fundamentals',\n 'quote.tab.derivatives': 'Derivatives',\n 'quote.tab.news': 'News',\n 'quote.tab.announcements': 'Announcements',\n 'fundamentals.peTtm': 'P/E (TTM)',\n 'fundamentals.peDynamic': 'Forward P/E',\n 'fundamentals.pb': 'P/B',\n 'fundamentals.marketCap': 'Market cap',\n 'fundamentals.floatMarketCap': 'Float cap',\n 'fundamentals.turnoverRate': 'Turnover',\n 'fundamentals.dividendYield': 'Dividend yield',\n 'fundamentals.fiftyTwoWeekHigh': '52w high',\n 'fundamentals.fiftyTwoWeekLow': '52w low',\n 'fundamentals.unavailable': 'This market provider carries no fundamentals — showing chart-derived stats',\n 'fundamentals.source': 'Source',\n 'fundamentals.unit.cn': 'CNY',\n 'fundamentals.unit.us': 'USD',\n 'fundamentals.unit.hk': 'HKD',\n 'fundamentals.unit.crypto': 'USD',\n 'fundamentals.scale': 'B',\n 'fund.page.empty': 'Pick an instrument on the left to view fundamentals and multi-period filings',\n 'fund.page.loading': 'Fetching {symbol} financials & valuation matrix from official sources...',\n 'fund.pill.peTtm': 'PE (TTM):',\n 'fund.pill.peDynamic': 'Fwd PE:',\n 'fund.pill.pb': 'PB:',\n 'fund.pill.marketCap': 'Mkt cap:',\n 'fund.pill.dividendYield': 'Div yield:',\n 'fund.pill.turnover': 'Turnover:',\n 'fund.pill.floatCap': 'Float cap:',\n 'fund.pill.rank': 'Global rank:',\n 'fund.nav.financials': 'Financials',\n 'fund.nav.key': 'Key metrics',\n 'fund.nav.income': 'Income',\n 'fund.nav.balance': 'Balance sheet',\n 'fund.nav.cashflow': 'Cash flow',\n 'fund.nav.forecast': 'Forecast',\n 'fund.nav.forecastItem': 'Earnings forecast',\n 'fund.nav.reports': 'Research',\n 'fund.nav.reportsItem': 'Analyst reports',\n 'fund.nav.valuation': 'Valuation',\n 'fund.nav.valuationItem': 'Valuation analysis',\n 'fund.nav.biz': 'Operations',\n 'fund.nav.bizSegments': 'Segments',\n 'fund.nav.bizEfficiency': 'Efficiency',\n 'fund.nav.smartMoney': 'Smart money',\n 'fund.nav.shareholders': 'Shareholders',\n 'fund.nav.insider': 'Insider trades',\n 'fund.nav.institutional': 'Institutions',\n 'fund.nav.profile': 'Profile',\n 'fund.nav.profileOverview': 'Company overview',\n 'fund.nav.profileExecutives': 'Executives',\n 'fund.nav.actions': 'Corp actions',\n 'fund.nav.dividends': 'Dividends',\n 'fund.nav.buybacks': 'Buybacks',\n 'fund.nav.splits': 'Splits',\n 'fund.chart.reportTitle': '{period} report',\n 'fund.chart.showYoy': 'Show YoY: {state}',\n 'fund.chart.yoyLegend': 'YoY growth (%)',\n 'fund.switch.on': 'On',\n 'fund.switch.off': 'Off',\n 'fund.matrix.currency': 'Currency: {currency}',\n 'fund.matrix.clickHint': 'Click a row to chart its trend above',\n 'fund.matrix.indicator': 'Indicator',\n 'fund.matrix.emptyTitle': 'Financials note',\n 'fund.matrix.emptyHint': 'No multi-period standard report matrix for this symbol (crypto asset, or the market exposes no quarterly endpoint). See valuation & profile panels.',\n 'fund.forecast.title': 'Consensus earnings forecast & ratings',\n 'fund.forecast.subtitle': 'Aggregated broker EPS/revenue/net-profit forecasts with rating statistics',\n 'fund.forecast.epsCurrent': 'EPS this year (est.)',\n 'fund.forecast.epsNext': 'EPS next year (est.)',\n 'fund.forecast.targetPrice': 'Consensus target',\n 'fund.forecast.orgCount': 'Covering analysts',\n 'fund.forecast.col.year': 'Year',\n 'fund.forecast.col.eps': 'EPS (CNY)',\n 'fund.forecast.col.revenue': 'Revenue (100M)',\n 'fund.forecast.col.netProfit': 'Net profit (100M)',\n 'fund.forecast.col.orgs': 'Analysts',\n 'fund.forecast.empty': 'No consensus forecasts published for this symbol yet — watch company announcements and earnings flashes.',\n 'fund.reports.title': 'Featured research reports',\n 'fund.reports.subtitle': 'Latest broker deep-dives, earnings forecasts and ratings',\n 'fund.reports.analyst': 'Analyst: {author}',\n 'fund.reports.empty': 'No public research found for this symbol — ask the agent in chat for a deep fundamental review.',\n 'fund.valuation.title': 'Valuation diagnostics & percentiles',\n 'fund.valuation.subtitle': 'Multi-period P/E, P/B and price-range diagnostics',\n 'fund.valuation.range52w': '52-week range',\n 'fund.valuation.low52w': '52w low: {price}',\n 'fund.valuation.high52w': '52w high: {price}',\n 'fund.valuation.peNote': 'PE note: {note}',\n 'fund.valuation.undervalued': '🟢 Relatively cheap',\n 'fund.valuation.fair': '🟡 Fairly valued',\n 'fund.valuation.overvalued': '🔴 Relatively rich',\n 'fund.valuation.assessing': 'Assessing',\n 'fund.valuation.peTtm': 'Trailing P/E (TTM)',\n 'fund.valuation.peDynamic': 'Forward P/E',\n 'fund.valuation.peStatic': 'Static P/E',\n 'fund.valuation.pb': 'P/B',\n 'fund.valuation.marketCap': 'Market cap',\n 'fund.valuation.floatCap': 'Float cap',\n 'fund.valuation.dividendYield': 'Dividend yield (TTM)',\n 'fund.valuation.turnover': 'Turnover rate',\n 'fund.segments.title': 'Revenue breakdown by segment',\n 'fund.segments.subtitle': 'Business revenue & gross-margin structure by product, industry and region',\n 'fund.segments.all': 'All',\n 'fund.segments.byProduct': 'By product',\n 'fund.segments.byIndustry': 'By industry',\n 'fund.segments.byRegion': 'By region',\n 'fund.segments.col.segment': 'Segment / item',\n 'fund.segments.col.revenue': 'Revenue (CNY)',\n 'fund.segments.col.revenueRatio': 'Share',\n 'fund.segments.col.profit': 'Gross profit (CNY)',\n 'fund.segments.col.grossMargin': 'Gross margin',\n 'fund.segments.empty': 'No detailed segment breakdown for the current period — see revenue on the income statement.',\n 'fund.efficiency.title': 'Operating & turnover efficiency',\n 'fund.efficiency.subtitle': 'Inventory/receivable days, operating cycle and profitability quality',\n 'fund.efficiency.inventoryDays': 'Inventory turnover days',\n 'fund.efficiency.receivableDays': 'Receivable turnover days',\n 'fund.efficiency.operatingCycle': 'Net operating cycle',\n 'fund.efficiency.assetTurnover': 'Total asset turnover',\n 'fund.efficiency.grossMargin': 'Gross margin',\n 'fund.efficiency.netMargin': 'Net margin',\n 'fund.efficiency.currentRatio': 'Current ratio',\n 'fund.efficiency.quickRatio': 'Quick ratio',\n 'fund.efficiency.summary': 'Inventory turnover ≈ {inventory} days, receivables turnover ≈ {receivable} days, net operating cycle {cycle} days.',\n 'fund.efficiency.empty': 'Efficiency details unavailable for this reporting period (source not covered); no inference is made.',\n 'fund.holders.title': 'Top-10 float shareholders',\n 'fund.holders.subtitle': 'Core institutions, strategic holders, holder counts and concentration',\n 'fund.holders.totalHolders': 'Total holders',\n 'fund.holders.avgShares': 'Avg shares/holder',\n 'fund.holders.avgValue': 'Avg value/holder',\n 'fund.holders.concentration': 'Concentration',\n 'fund.holders.moderate': 'Moderate',\n 'fund.holders.col.rank': 'Rank',\n 'fund.holders.col.name': 'Holder',\n 'fund.holders.col.shares': 'Shares',\n 'fund.holders.col.ratio': '% of float',\n 'fund.holders.col.change': 'Change',\n 'fund.holders.unchanged': 'Unchanged',\n 'fund.holders.empty': 'Top-10 float holder list not published for this symbol — see float cap and turnover trends.',\n 'fund.insider.title': 'Key shareholder & executive changes',\n 'fund.insider.subtitle': 'Recent holdings changes and trade records of major shareholders and executives',\n 'fund.insider.col.holder': 'Holder',\n 'fund.insider.col.type': 'Change type',\n 'fund.insider.col.shares': 'Shares changed',\n 'fund.insider.col.ratio': 'Holding %',\n 'fund.insider.col.date': 'Disclosed',\n 'fund.insider.empty': 'No insider change records (source not covered or no disclosures this period).',\n 'fund.institutional.title': 'Institutional holdings',\n 'fund.institutional.subtitle': 'Aggregate holdings of investment firms, mutual funds, QFII and insurers',\n 'fund.institutional.col.org': 'Institution',\n 'fund.institutional.col.type': 'Type',\n 'fund.institutional.col.shares': 'Shares',\n 'fund.institutional.col.ratio': '% of float',\n 'fund.institutional.col.value': 'Value (CNY)',\n 'fund.institutional.col.change': 'Change',\n 'fund.institutional.empty': 'Institutional totals are reflected in the top-10 float holders, covering major funds and index ETFs.',\n 'fund.profile.title': 'Company profile',\n 'fund.profile.subtitle': 'Legal representative, management, registered capital and official channels',\n 'fund.profile.fullName': 'Full name',\n 'fund.profile.nameEn': 'English name',\n 'fund.profile.industry': 'Industry',\n 'fund.profile.registeredCapital': 'Registered capital',\n 'fund.profile.employees': 'Employees',\n 'fund.profile.address': 'Office / registered address',\n 'fund.profile.website': 'Website',\n 'fund.profile.description': 'Company description & history:',\n 'fund.profile.descriptionFallback': 'Detailed business introduction and history for {symbol}.',\n 'fund.executives.title': 'Management & executives',\n 'fund.executives.subtitle': 'Chairman, CEO, CFO and core officers',\n 'fund.executives.chairman': 'Chairman',\n 'fund.executives.generalManager': 'CEO / General Manager',\n 'fund.executives.legalRep': 'Legal representative',\n 'fund.executives.boardSecretary': 'Board secretary',\n 'fund.dividends.title': 'Dividend history',\n 'fund.dividends.subtitle': 'Past profit-distribution plans, ex-dividend dates and payouts',\n 'fund.dividends.col.year': 'Plan year',\n 'fund.dividends.col.plan': 'Plan',\n 'fund.dividends.col.cash': 'Cash/share (CNY)',\n 'fund.dividends.col.exDate': 'Ex-date',\n 'fund.dividends.col.recordDate': 'Record date',\n 'fund.dividends.empty': 'No public dividend plans on record.',\n 'fund.buybacks.title': 'Buyback plans & share management',\n 'fund.buybacks.subtitle': 'Buyback programs, capital scale, share structure and progress',\n 'fund.buybacks.col.date': 'Announced',\n 'fund.buybacks.col.amount': 'Amount',\n 'fund.buybacks.col.shares': 'Shares bought',\n 'fund.buybacks.col.priceRange': 'Price range',\n 'fund.buybacks.col.status': 'Status',\n 'fund.buybacks.empty': 'No buyback records (source not covered, or none announced). Fields stay empty until data lands; no speculation.',\n 'fund.splits.title': 'Split & bonus share history',\n 'fund.splits.subtitle': 'Share splits, bonus issues and capital-reserve conversions',\n 'fund.splits.col.date': 'Ex-date',\n 'fund.splits.col.ratio': 'Plan',\n 'fund.splits.col.description': 'Details & progress',\n 'fund.splits.empty': 'No split/bonus records (source not covered, or no such events).',\n 'fund.unit.orgs': ' orgs',\n 'fund.unit.days': '{n} days',\n 'fund.unit.times': '{n}x',\n 'fund.unit.holders': '{n}K accounts',\n 'fund.unit.shares': '{n} shares',\n 'fund.unit.wanCny': '¥{n}K',\n 'fund.unit.yiCny': '¥{n}M',\n 'marker.signal.toggle': 'Signals',\n 'marker.signal.toggleTitle': 'Strategy signal markers',\n 'marker.signal.entryReason': 'EMA(12/26) golden cross, entry at {cur}{price}',\n 'marker.signal.exitReason': 'EMA(12/26) death cross, exit at {cur}{price}',\n 'marker.knowledge.toggle': 'Events',\n 'marker.knowledge.toggleTitle': 'Knowledge event pins',\n 'marker.knowledge.batched': '{title} (+{count})',\n 'tooltip.signal.entry': 'Buy signal',\n 'tooltip.signal.exit': 'Sell signal',\n 'tooltip.label.price': 'Price',\n 'tooltip.label.time': 'Time',\n 'tooltip.label.return': 'Return',\n 'tooltip.label.profit': 'P/L',\n 'tooltip.label.holding': 'Held',\n 'tooltip.unit.bars': '{n} bars',\n 'tooltip.knowledge.header': 'Knowledge event',\n 'tooltip.credibility.high': 'High credibility',\n 'tooltip.credibility.medium': 'Medium credibility',\n 'tooltip.credibility.low': 'Low credibility',\n 'news.time.justNow': 'just now',\n 'news.time.minutesAgo': '{n}m ago',\n 'news.time.hoursAgo': '{n}h ago',\n 'news.time.daysAgo': '{n}d ago',\n 'news.time.monthsAgo': '{n}mo ago',\n 'news.time.yearsAgo': '{n}y ago',\n 'news.source.eastmoneyAnnouncement': 'Company filings',\n 'news.source.eastmoney': 'Eastmoney',\n 'news.source.hkexAnnouncement': 'HKEXnews',\n 'news.source.cninfoAnnouncement': 'CNINFO',\n 'news.source.secEdgar': 'SEC EDGAR',\n 'news.source.binance': 'Binance',\n 'news.source.okx': 'OKX',\n 'news.source.yahoo': 'Yahoo Finance',\n 'news.source.google': 'Google News',\n 'news.source.coindesk': 'CoinDesk',\n 'news.source.theblock': 'The Block',\n 'news.source.cointelegraph': 'CoinTelegraph',\n 'news.source.decrypt': 'Decrypt',\n 'news.empty.exchangeNotReady': 'Announcement source not ready',\n 'news.empty.mediaNotActive': 'News source not active',\n 'news.empty.noAnnouncements': 'No related announcements',\n 'news.empty.noNews': 'No related news',\n 'news.sendToAgentTitle': 'Send to agent for analysis',\n 'news.degraded': 'Some sources unavailable: {sources}',\n 'compose.opener': 'Take a look at what I\\'m watching: {title}',\n 'compose.prevClose': 'prev close {price}',\n 'compose.priceLine': 'Last',\n 'compose.candleLine': 'Current bar O {open} H {high} L {low} C {close} V {volume}',\n 'compose.indicatorsLine': 'Indicators on: {titles}',\n 'compose.listSeparator': ', ',\n 'compose.deltaWrap': ' (|)',\n 'compose.prevSep': ', ',\n 'compose.withScreenshot': 'The current chart screenshot is attached — please factor it in.',\n 'compose.withoutScreenshot': 'Please continue the analysis from the quote context.',\n 'card.order.rejected': 'Rejected',\n 'card.order.dryRun': 'Dry-run',\n 'card.order.live': 'Live',\n 'card.order.priceLabel': 'Price',\n 'card.order.quantityLabel': 'Qty',\n 'card.order.refPriceLabel': 'Ref',\n 'card.watchlist.selected': 'Selection switched',\n 'card.watchlist.added': 'Added to watchlist',\n 'card.watchlist.already': 'Already in watchlist',\n 'derivatives.title': 'Derivatives',\n 'derivatives.oi': 'Open interest',\n 'derivatives.oiValue': 'OI value',\n 'derivatives.funding': 'Funding rate',\n 'derivatives.fundingPositive': 'longs pay',\n 'derivatives.fundingNegative': 'shorts pay',\n 'derivatives.longShort': 'L/S accounts',\n 'derivatives.topLongShort': 'Top L/S ratio',\n 'derivatives.taker': 'Taker buy/sell',\n 'derivatives.ratioLong': 'long-heavy',\n 'derivatives.ratioShort': 'short-heavy',\n 'derivatives.predicted': 'Predicted rate',\n 'derivatives.countdown': 'Settlement in',\n 'derivatives.markPrice': 'Mark price',\n 'derivatives.indexPrice': 'Index price',\n 'derivatives.basis': 'Basis',\n 'derivatives.oiChange24h': 'OI 24h change',\n 'derivatives.fundingHistory': 'Funding history (last 30)',\n 'derivatives.oiTrend': 'OI trend (30d)',\n 'derivatives.historyUnavailable': 'No history from this provider',\n 'derivatives.analyze': 'Analyze flows',\n 'derivatives.analyzeBody': 'Analyze the funding landscape and long/short crowding of the {symbol} perpetual (source {source}):\\n{lines}\\nWeigh funding direction, OI shifts and the L/S ratio; assess crowding and risks (not investment advice).', 'derivatives.analyzeHint': 'Send the derivatives snapshot to Agent for flow analysis',\n 'derivatives.perpSource': 'Perpetual swap data (spot symbols auto-mapped)',\n 'derivatives.hint.oi': 'Total open interest in base coins — market leverage size; click for trend',\n 'derivatives.hint.oiValue': 'Total open interest value in USD',\n 'derivatives.hint.funding': 'Positive = longs pay shorts (crowded longs); click for forecast & countdown',\n 'derivatives.hint.longShort': 'Long/short account ratio, >1 long-heavy; click for details',\n 'derivatives.hint.topLongShort': 'Top trader position ratio, >1 top traders long-heavy',\n 'derivatives.hint.taker': 'Taker buy/sell volume ratio, >1 aggressive buying',\n 'derivatives.hint.basis': '(mark - index) / index; positive basis = perp trading at premium',\n 'orderbook.title': 'Orderbook & ticks',\n 'orderbook.close': 'Close orderbook',\n 'orderbook.unavailable': 'This market provider carries no orderbook',\n 'orderbook.buyForce': 'Bids',\n 'orderbook.sellForce': 'Asks',\n 'orderbook.spread': 'Spread',\n 'orderbook.trades': 'Recent trades',\n 'orderbook.toggle': 'Orderbook',\n 'trade.toggle': 'Trade',\n 'trade.title': 'Trade Desk',\n 'trade.dryRunOnly': 'Dry-run only (no live channel from GUI)',\n 'trade.close': 'Close trade desk',\n 'trade.buy': 'Buy',\n 'trade.sell': 'Sell',\n 'trade.long': 'Long',\n 'trade.short': 'Short',\n 'trade.market': 'Market',\n 'trade.limit': 'Limit',\n 'trade.price': 'Price',\n 'trade.quantity': 'Quantity',\n 'trade.dryRunSubmit': 'Simulate order',\n 'trade.submitting': 'Submitting…',\n 'trade.submitFailed': 'Submit failed: service not mounted or rejected',\n 'trade.dryRunFilled': 'Simulated fill',\n 'trade.liveHint': 'Live orders only go through the agent session (explicit liveTrading + unified approval gate); this panel is simulate/read-only.',\n 'trade.positions': 'Positions',\n 'trade.openOrders': 'Open orders',\n 'trade.fills': 'Trade history',\n 'trade.balances': 'Balances',\n 'trade.credentialHint': 'Credentials missing or unusable (fail-closed) — configure to view',\n 'trade.unavailable': 'Not provided',\n 'trade.empty': 'No data',\n 'trade.symbol': 'Symbol',\n 'trade.side': 'Side',\n 'trade.type': 'Type',\n 'trade.size': 'Size',\n 'trade.entryPrice': 'Entry',\n 'trade.unrealizedPnl': 'uPnL',\n 'trade.filled': 'Filled',\n 'trade.time': 'Time',\n 'trade.action': 'Action',\n 'trade.cancel': 'Cancel',\n 'trade.canceling': 'Canceling…',\n 'trade.cancelSuccess': 'Order Canceled',\n 'trade.cancelFailed': 'Cancel Failed',\n 'trade.submit': 'Place Order',\n 'trade.orderSuccess': 'Order Placed',\n 'trade.drawer.collapse': 'Collapse Drawer',\n 'trade.drawer.expand': 'Expand Drawer',\n 'trade.sideOrder': 'Quick Order',\n 'trade.liveChannel': 'Live Channel',\n 'trade.fillCurrentPrice': 'Last Price',\n 'trade.marketExecuteHint': 'Instant fill at best market price',\n 'trade.estimatedAmount': 'Est. Amount',\n 'trade.unit.shares': 'Shares',\n 'trade.unit.coin': 'Coins',\n 'trade.drawer.available': 'Available',\n 'trade.drawer.locked': 'Locked',\n 'trade.drawer.total': 'Total',\n 'trade.drawer.asset': 'Asset / Currency',\n 'trade.mode.live': 'Live Trading',\n 'trade.mode.paper': 'Paper Trading',\n 'trade.paper.tag': 'Paper',\n 'trade.paper.reset': 'Reset Balance',\n 'trade.paper.resetConfirm': 'Reset paper trading account to initial balance (100,000)?',\n 'trade.paper.available': 'Virtual Cash',\n 'trade.paper.buyAction': 'Paper Buy',\n 'trade.paper.sellAction': 'Paper Sell',\n 'trade.paper.drawerTag': 'Paper Ledger',\n 'trade.paper.initialBalance': 'Initial Cash',\n 'trade.paper.totalPnl': 'Total P&L',\n 'quote.rangeStats': 'Range stats',\n 'quote.rangeStatsHint': 'Drag on the chart to select a range and see its stats',\n 'range.change': 'Change',\n 'range.changeAbs': 'Change (abs)',\n 'range.high': 'Range high',\n 'range.low': 'Range low',\n 'range.amplitude': 'Amplitude',\n 'range.volume': 'Volume',\n 'range.bars': 'Bars',\n 'range.upDays': 'Up bars',\n 'range.downDays': 'Down bars',\n 'range.closePanel': 'Close',\n 'interval.1m': '1m',\n 'interval.3m': '3m',\n 'interval.5m': '5m',\n 'interval.10m': '10m',\n 'interval.15m': '15m',\n 'interval.30m': '30m',\n 'interval.1h': '1H',\n 'interval.4h': '4H',\n 'interval.1d': 'D',\n 'interval.1w': 'W',\n 'interval.1M': 'M',\n 'status.trading': 'Trading',\n 'status.closed': 'Closed',\n 'status.midday': 'Midday break',\n 'status.preMarket': 'Pre-market',\n 'status.afterHours': 'After-hours',\n 'status.auction': 'Auction',\n 'index.shComposite': 'SH Composite',\n 'index.szComponent': 'SZ Component',\n 'index.chinext': 'ChiNext',\n 'index.hangSeng': 'Hang Seng',\n 'index.hangSengTech': 'Hang Seng TECH',\n 'index.hscei': 'HSCEI',\n 'index.sp500': 'S&P 500',\n 'index.nasdaq': 'Nasdaq',\n 'index.dowJones': 'Dow Jones',\n 'index.btc': 'BTC',\n 'index.eth': 'ETH',\n 'index.sol': 'SOL',\n 'browser.history': 'History',\n 'browser.historyEmpty': 'No sessions in this workspace',\n 'browser.showMore': 'Show {n} more',\n 'browser.showLess': 'Show less',\n 'browser.menu.aria': 'Session actions',\n 'browser.menu.rename': 'Rename',\n 'browser.menu.fork': 'Fork session',\n 'browser.menu.archive': 'Archive session',\n 'entry.new': 'New session',\n 'entry.settings': 'Settings',\n 'chat.fold': 'Fold conversation panel',\n 'chat.expand': 'Expand conversation panel',\n 'chat.resize': 'Drag to resize conversation panel (double-click to reset, arrow keys to nudge)',\n 'stage.quote': 'Quote',\n 'stage.strategy': 'Strategies',\n 'stage.knowledge': 'Knowledge',\n 'indicator.picker': 'Indicators',\n 'indicator.group.main': 'Main chart',\n 'indicator.group.sub': 'Sub-chart',\n 'indicator.empty': 'No indicators available (indicator plugin missing?)',\n 'indicator.params': 'Params',\n 'indicator.apply': 'Apply',\n 'indicator.cancel': 'Cancel',\n 'indicator.delete': 'Delete',\n 'indicator.deleteConfirm': 'Delete this custom indicator? The persisted definition will be removed from the library.',\n}\n","/**\n * Trading GUI shell, browser half. Slot 布局(不改 DSH 源码,全部走官方 slot 机制):\n *\n * - `shell.overlay`(dshtrading-market-dock)→ 左侧自选停靠面板(支持富途式展开与折叠竖条)\n * - `sidebar.workspaces`(priority -1 遮蔽 WorkspaceBrowser)→ 会话历史的\n * 挂载面:面板 DOM 经 portal 并入官方 hero 容器(HomeHistory——历史与\n * hero composer 拼成同一个容器),侧栏列只留 hidden 占位维持遮蔽\n * - `shell.overlay`(dshtrading-quote-pane)→ 中栏行情面板(恒渲染;\n * 对话列由宿主官方 UI 常驻右侧栏,见 shell-pad.css 2.4 布局)\n * - `shell.overlay`(dshtrading-session-rail)→ 右缘常驻会话竖条(折叠/\n * 新会话/设置,2.9 起取代窗口角标浮动簇 + 会话头内联按钮双入口)\n * - `shell.overlay`(dshtrading-chat-resize-handle)→ 对话列左缘拖拽调宽\n * 手柄(宿主手柄在 rtl 下坐标错位被隐藏,见 shell-pad.css 规则 4)\n *\n * 行情数据走 node 半注册的 /dshtrading/api 桥(同源 fetch,浏览器认证栅栏内)。\n */\nimport type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport type { ISessions } from '@deepseek-ai/dsh-api-session-controller/client'\nimport type { IndicatorRegistry } from '@dshtrading/indicators'\nimport { validateCustomIndicatorAsync } from '@dshtrading/indicators'\nimport { createSelectionStore, createWatchlistStore } from './store.ts'\nimport { createChartStateStore } from './chart-state.ts'\nimport { indicators, markCustomIndicator, unmarkCustomIndicator } from './indicator-registry.ts'\nimport { stageViews } from './stage-views.ts'\nimport { createTradingBridgeService } from './api.ts'\nimport { fillComposerWithQuote, type FillComposerFn, type ConversationDraftFace } from './fill-composer.ts'\nimport { OrderCard, WatchlistChipCard } from './toolview.tsx'\nimport { MarketDock } from './MarketDock.tsx'\nimport { QuotePane } from './QuotePane.tsx'\nimport { HomeHistory } from './HomeHistory.tsx'\nimport { SessionRail } from './SessionRail.tsx'\nimport { ChatResizeHandle } from './ChatResizeHandle.tsx'\nimport { foldStore, marketFoldStore } from './fold-store.ts'\nimport { deleteCustomIndicator, fetchCustomIndicators, subscribeTradingEvents } from './api.ts'\nimport { wireHostWatchlistSync } from './host-watchlist-sync.ts'\nimport './tokens.css'\nimport './shell-pad.css'\nimport { en, zh } from './locales.ts'\n/** 本面板/字符串翻译的 locale namespace。 */\nconst NS = 'dshtrading.market'\n\n/** Required services:会话区读官方 sessions 状态;startSession 是右栏退役后\n * 新会话的唯一通路(无参取当前/最近工作区)。注意 startSession 在\n * uiWorkspace(UiWorkspaceService,官方 sidebar/conversation 同款消费方式),\n * 不在 workspaces(纯 WorkspaceController:create/rename/archive,无导航)。 */\nexport const inject = ['slots', 'locale', 'sessions', 'uiWorkspace']\n\n/** SessionId 是 branded 类型而 dsh-session 非本包依赖(直接 import 解析不到);\n * 从已引入的 ISessions 面派生同一 brand,inject 面字符串 id 在边界断言一次。 */\ntype SessionIdParam = Parameters<ISessions['open']>[0]\n\n/** uiWorkspace 的最小结构面(startSession = 建/复用并打开会话;\n * archiveSession = 官方侧栏「归档会话」同款通路,host 权威归档集随之广播)。 */\ninterface WorkspaceNavigation {\n startSession(workspaceId?: string): void\n archiveSession(sessionId: string): Promise<void>\n}\n\n/** 注册 slot + locale 字典。 */\nexport function apply(ctx: ClientContext): void {\n // bind 的 t 由 slot 的 locale: NS 声明经框架注入组件;本文件不直接消费。\n ctx.locale.bind(NS)\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'dsh-trading-market: dictionaries')\n\n const selection = createSelectionStore()\n const watchlists = createWatchlistStore()\n const chart = createChartStateStore(indicators)\n const sessions = ctx.sessions as unknown as ISessions\n\n // 共享入口动作:右缘竖条(2.9 起唯一会话入口)使用。\n // uiWorkspace 必须在点击时惰性解析:官方 dsh.client.inject 边只是加载/预取\n // 元数据、「never apply sequencing」(ui-workspace 同款注释)——服务由\n // dsh-client-ui-workspace 的 apply 注册,apply 时序不保证,过早捕获会在\n // 服务未就绪时拿到 undefined 并永久失效。官方 dsh-client-ui-sidebar 即\n // ctx.get('uiWorkspace').startSession() 同款。\n const startNewSession = (): void => {\n ;(ctx.get('uiWorkspace') as unknown as WorkspaceNavigation | undefined)?.startSession()\n }\n\n // 行情 → 会话输入框(「发给 Agent」按钮):只把上下文 + 截图**填入 composer\n // 不提交**(owner 裁决:用户还要补自己的 prompt)。conversation 根服务在点击\n // 时惰性解析(同 uiWorkspace 纪律:apply 时序不保证);编排细节见 fill-composer.ts。\n const fillComposer: FillComposerFn = (text, image) =>\n fillComposerWithQuote({\n sessions,\n conversation: ctx.get('conversation', false) as ConversationDraftFace | undefined,\n startSession: startNewSession,\n }, text, image)\n const openSettings = (): void => {\n // 官方设置触发器在退役侧栏列内(整列移出视口保持挂载);触发器是\n // 侧栏里唯一的 [aria-haspopup=dialog],程序化 click 走官方打开逻辑,\n // 弹层 position:fixed 盖满视口不受列位置影响。\n document\n .querySelector<HTMLElement>(\"div:has(> [data-shell-overlay]) > div:nth-child(1) [aria-haspopup='dialog']\")\n ?.click()\n }\n const chatFolded = foldStore()\n const marketFolded = marketFoldStore()\n const toggleFold = (): void => { chatFolded.toggle() }\n const toggleMarketFold = (): void => { marketFolded.toggle() }\n\n // 静态包的 slot 条目崩溃默认无人上报(监督缝只覆盖动态插件)——打到 console 可见化。\n ctx.slots.onEntryError((slot, _entry, error) => {\n console.error(`[dsh-trading] slot entry crashed: ${slot}`, error)\n })\n\n // 中栏视图开放注册面(issue #34 / P5):provide tradingStageViews —— 策略/\n // 知识/第三方视图包经 ctx.inject(['tradingStageViews'], …) register 定义即新增\n // 中栏 tab;插件未安装时名册只有 quote,行情视图独立正常工作(可选依赖语义)。\n // provide 由插件 fiber 持有(tradingIndicators 同款),插件卸载服务随之注销。\n ctx.reflect.provide('tradingStageViews', stageViews)\n\n // 视图包的桥依赖面:provide tradingBridge(K线/策略/知识卡 fetch + SSE 订阅\n // 共享单例)。视图包不 import shell 内部模块,只经服务 inject。\n ctx.reflect.provide('tradingBridge', createTradingBridgeService())\n\n // quote 视图是 registry 的内建种子条目(stage-views.ts 工厂内写入)——tab 条\n // 从名册统一渲染,MiddleStage 对 quote 走 QuoteStage 直引面。\n\n // 对话内富卡片(issue #34 / P5 §5.5):下单三态卡(4 市场 keyed 各一把 +\n // 生成器注册)与自选 chip 卡。策略/知识卡的注册在各自视图包(归属随视图)。\n ctx.slots.inject('tool.call.toolview', function* () {\n for (const market of ['crypto', 'us', 'cn', 'hk'] as const) {\n yield ctx.slots.register({\n name: 'tool.call.toolview',\n key: `${market}_place_order`,\n locale: NS,\n }, OrderCard as never)\n }\n yield ctx.slots.register({ name: 'tool.call.toolview', key: 'watchlist_add', locale: NS }, WatchlistChipCard as never)\n yield ctx.slots.register({ name: 'tool.call.toolview', key: 'watchlist_select', locale: NS }, WatchlistChipCard as never)\n })\n\n // 指标插件桥(可选依赖):client-ui-indicators 在 client 上下文提供\n // tradingIndicators 服务(IndicatorRegistry,含预置);插件未安装时\n // 回调不触发,行情视图零指标正常工作。definition 是纯数据+纯函数,\n // 合并进本地注册表即可用;register 通知订阅者(选择器名册重渲染)。\n ctx.inject(['tradingIndicators'] as never, (scope) => {\n const service = (scope as unknown as { tradingIndicators: IndicatorRegistry }).tradingIndicators\n for (const definition of service.list()) indicators.register(definition)\n })\n\n // Issue #19 + #30:异步拉取并注册已持久化的自定义指标;SSE 'indicators' 失效\n // 信号到达时重拉(register 同名覆盖幂等),indicator_author 入库无需刷新即上榜。\n const loadCustomIndicators = async (): Promise<void> => {\n try {\n const customList = await fetchCustomIndicators()\n for (const item of customList) {\n // issue #31:浏览器端校验走 Worker 超时熔断(validateCustomIndicatorAsync),\n // 补 new Function 裸执行「恶意/死循环源码卡死主线程」的既知缺口。\n const result = await validateCustomIndicatorAsync(item)\n if (result.ok) {\n indicators.register(result.definition)\n markCustomIndicator(result.definition.id)\n }\n }\n } catch (e) {\n console.warn('[dsh-trading] failed to fetch custom indicators:', e)\n }\n }\n void loadCustomIndicators()\n\n // SSE 失效信号订阅(issue #30):EventSource 单例在 api.ts(多视图共享一条\n // 连接);EventSource 不可用或桥 503 → 一次性 fetch 的现状兜底(不劣于现状)。\n subscribeTradingEvents({\n indicators: () => { void loadCustomIndicators() },\n })\n\n // 自选股 host SSOT 同步(issue #32):启动同步 + 一次性迁移 + 变更 host-first\n // 接管(add/remove/select 写 host 成功后才更新本地)+ SSE 双通道刷新。\n wireHostWatchlistSync({ watchlists, selection })\n\n // 左侧停靠:自选面板(官方浮层通道;支持展开与折叠态 MarketRail)。\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'dshtrading-market-dock',\n order: 10,\n locale: NS,\n inject: () => ({\n hooks: { selection, watchlists, marketFolded },\n addInstrument: (market, instrument) => { watchlists.add(market, instrument) },\n removeInstrument: (market, symbol) => { watchlists.remove(market, symbol) },\n selectInstrument: (instrument) => { selection.select(instrument) },\n toggleFold: toggleMarketFold,\n }),\n }, MarketDock))\n\n // 会话历史(sidebar.workspaces):遮蔽官方 WorkspaceBrowser(其每组\n // 「+ 新会话」/添加工作区在融合布局下是冗余入口);HomeHistory 面板\n // 经 portal 并入官方 hero 容器,数据面仍全是官方 sessions/workspaces 服务。\n ctx.slots.inject('sidebar.workspaces', () => ctx.slots.register({\n name: 'sidebar.workspaces',\n id: 'dshtrading-home-history',\n priority: -1,\n locale: NS,\n inject: () => ({\n openSession: (sessionId) => { sessions.open(sessionId) },\n startNewSession,\n // 历史行操作菜单三件套,与官方 WorkspaceBrowser 语义对齐:\n // rename 走 session binding 的显式标题(钉住自动生成);fork 官方同款\n // increaseTitle 后 open 新会话;archive 走 uiWorkspace(同 startSession\n // 惰性解析纪律:apply 时序不保证,点击时 ctx.get)。\n renameSession: async (sessionId: string, title: string) => {\n const face = sessions.binding(sessionId as SessionIdParam)?.session\n if (face === undefined) throw new Error(`unknown session \"${sessionId}\"`)\n const result = await face.rename(title)\n if (!result.ok) throw new Error(result.error.message)\n },\n forkSession: (sessionId: string) => {\n sessions.fork({ sessionId: sessionId as SessionIdParam, increaseTitle: true })\n .then((forkedId) => { sessions.open(forkedId) })\n .catch((e: unknown) => { console.warn('[dsh-trading] session fork rejected:', e) })\n },\n archiveSession: (sessionId: string) => {\n ;(ctx.get('uiWorkspace') as unknown as WorkspaceNavigation | undefined)\n ?.archiveSession(sessionId)\n .catch((e: unknown) => { console.warn('[dsh-trading] session archive rejected:', e) })\n },\n }),\n }, HomeHistory))\n\n // 会话竖条(shell.overlay):右缘 44px 常驻(折叠/新会话/设置竖排),\n // 恒挂载——首页、会话进行中、折叠态都是同一入口,不再按状态切换入口面。\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'dshtrading-session-rail',\n order: 60,\n locale: NS,\n inject: () => ({\n startNewSession,\n openSettings,\n toggleFold,\n hooks: { folded: chatFolded },\n }),\n }, SessionRail))\n\n // 会话列拖拽调宽手柄(shell.overlay):贴对话列左缘常驻;宽度持久化\n // chat-width-store(dshtrading.chat.width.v1),拖拽直写 body 变量\n // --dshtrading-chat-user-w 驱动栅格(shell-pad.css 规则 3/10)。\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'dshtrading-chat-resize-handle',\n order: 61,\n locale: NS,\n inject: () => ({\n hooks: { folded: chatFolded },\n }),\n }, ChatResizeHandle))\n\n // 中栏面板:恒渲染,盖住栅格第 3 轨道(行情区);内含 MiddleStage 视图注册表(行情 | 策略 | 知识库)\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'dshtrading-quote-pane',\n order: 50,\n locale: NS,\n inject: () => ({\n hooks: { selection, chart },\n toggleIndicator: (id) => { chart.togglePreset(id) },\n setIndicatorParams: (id, params) => { chart.setParams(id, params) },\n deleteIndicator: async (id) => {\n const ok = await deleteCustomIndicator(id)\n if (ok) {\n indicators.unregister(id)\n unmarkCustomIndicator(id)\n chart.removeInstance(id)\n }\n return ok\n },\n fillComposer,\n }),\n }, QuotePane))}\n\n"],"x_google_ignoreList":[19,20,21,22,23],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACA,SAAS,0BAA0B;GAClC,MAAM,2BAA2B,IAAI,IAAI;GACzC,MAAM,4BAA4B,IAAI,IAAI;GAC1C,IAAI,UAAU;GACd,MAAM,YAAY,eAAe;IAChC,SAAS,IAAI,WAAW,IAAI,UAAU;IACtC,WAAW;IACX,KAAK,MAAM,YAAY,WAAW,SAAS;GAC5C;GACA,MAAM,oBAAoB,OAAO,SAAS,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC;GAC9D,OAAO;IACN;IACA,WAAW,IAAI;KACd,IAAI,CAAC,SAAS,OAAO,EAAE,GAAG;KAC1B,WAAW;KACX,KAAK,MAAM,YAAY,WAAW,SAAS;IAC5C;IACA,MAAM,OAAO,SAAS,IAAI,EAAE;IAC5B,YAAY,CAAC,GAAG,SAAS,OAAO,CAAC;IACjC,cAAc,YAAY;KACzB,MAAM,SAAS,CAAC;KAChB,KAAK,MAAM,QAAQ,WAAW,QAAQ,OAAO,KAAK,OAAO,KAAK;KAC9D,OAAO;IACR;IACA,gBAAgB,IAAI;KACnB,MAAM,aAAa,SAAS,IAAI,EAAE;KAClC,IAAI,eAAe,KAAK,GAAG,OAAO,KAAK;KACvC,OAAO;MACN;MACA,QAAQ,KAAK,cAAc,UAAU;KACtC;IACD;IACA,YAAY,UAAU;KACrB,MAAM,SAAS,iBAAiB,SAAS,EAAE,CAAC,CAAC,KAAK,SAAS,SAAS,OAAO,KAAK,QAAQ,KAAK,OAAO;KACpG,OAAO,GAAG,SAAS,GAAG,GAAG,OAAO,KAAK,GAAG;IACzC;IACA,YAAY,YAAY,QAAQ;KAC/B,MAAM,MAAM,CAAC;KACb,KAAK,MAAM,QAAQ,WAAW,QAAQ;MACrC,MAAM,MAAM,OAAO,KAAK;MACxB,IAAI,KAAK,OAAO,OAAO,QAAQ,YAAY,OAAO,SAAS,GAAG,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK;KAClI;KACA,OAAO;IACR;IACA,kBAAkB,WAAW;KAC5B,IAAI,CAAC,MAAM,QAAQ,SAAS,GAAG,OAAO,CAAC;KACvC,MAAM,uBAAuB,IAAI,IAAI;KACrC,MAAM,MAAM,CAAC;KACb,KAAK,MAAM,OAAO,WAAW;MAC5B,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;MAC7C,MAAM,EAAE,IAAI,WAAW;MACvB,IAAI,OAAO,OAAO,YAAY,KAAK,IAAI,EAAE,GAAG;MAC5C,MAAM,aAAa,SAAS,IAAI,EAAE;MAClC,IAAI,eAAe,KAAK,GAAG;MAC3B,KAAK,IAAI,EAAE;MACX,IAAI,KAAK;OACR;OACA,QAAQ,KAAK,YAAY,YAAY,OAAO,WAAW,YAAY,WAAW,OAAO,SAAS,CAAC,CAAC;MACjG,CAAC;KACF;KACA,OAAO;IACR;IACA,UAAU,UAAU;KACnB,UAAU,IAAI,QAAQ;KACtB,aAAa;MACZ,UAAU,OAAO,QAAQ;KAC1B;IACD;IACA,kBAAkB;GACnB;EACD;;;ECtEA,MAAM,aAAa;EACnB,MAAM,oBAAoB;EAC1B,MAAM,oBAAoB;EAC1B,MAAM,mBAAmB;EACzB,MAAM,+BAA+B,IAAI,IAAI;GAC5C;GACA;GACA;GACA;GACA;GACA;EACD,CAAC;EACD,MAAM,qBAAqB;;EAE3B,SAAS,mBAAmB;GAC3B,MAAM,WAAW;GACjB,MAAM,SAAS;GACf,OAAO;IACN,SAAS,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM;KAC7C,MAAM,OAAO,MAAM,IAAI;KACvB,MAAM,QAAQ,OAAO;KACrB,OAAO;MACN,UAAU,WAAW,IAAI;MACzB;MACA,MAAM,QAAQ;MACd,KAAK,OAAO;MACZ;MACA,QAAQ,MAAM,IAAI;KACnB;IACD,CAAC;IACD,WAAW,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM;KAC/C,MAAM,OAAO,MAAM,IAAI;KACvB,MAAM,QAAQ,OAAO;KACrB,OAAO;MACN,UAAU,WAAW,IAAI;MACzB;MACA,MAAM,OAAO;MACb,KAAK,QAAQ;MACb;MACA,QAAQ,MAAM,IAAI;KACnB;IACD,CAAC;IACD,MAAM,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM;KAC1C,MAAM,SAAS,IAAI,MAAM,IAAI,IAAI,OAAO,IAAI,MAAM,IAAI,KAAK;KAC3D,MAAM,OAAO;KACb,MAAM,QAAQ,OAAO;KACrB,OAAO;MACN,UAAU,WAAW,IAAI;MACzB;MACA,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI;MAC9B,KAAK,KAAK,IAAI,MAAM,KAAK,IAAI;MAC7B;MACA,QAAQ;KACT;IACD,CAAC;IACD,KAAK,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM;KACzC,MAAM,OAAO,MAAM,IAAI,KAAK;KAC5B,MAAM,OAAO,MAAM,IAAI,IAAI;KAC3B,MAAM,QAAQ,OAAO;KACrB,OAAO;MACN,UAAU,WAAW,IAAI;MACzB;MACA,MAAM,QAAQ;MACd,KAAK,OAAO;MACZ;MACA,QAAQ;KACT;IACD,CAAC;IACD,OAAO;KACN;MACC,UAAU;MACV,MAAM;MACN,MAAM;MACN,KAAK;MACL,OAAO;MACP,QAAQ;KACT;KACA;MACC,UAAU;MACV,MAAM;MACN,MAAM;MACN,KAAK;MACL,OAAO;MACP,QAAQ;KACT;KACA;MACC,UAAU;MACV,MAAM;MACN,MAAM;MACN,KAAK;MACL,OAAO;MACP,QAAQ;KACT;IACD;GACD;EACD;;EAEA,SAAS,qBAAqB,QAAQ;GACrC,MAAM,UAAU,OAAO,KAAK;GAC5B,IAAI,+CAA+C,KAAK,OAAO,KAAK,cAAc,KAAK,OAAO,GAAG,OAAO,IAAI,SAAS,yBAAyB,QAAQ,GAAG,CAAC,CAAC;GAC3J,OAAO,IAAI,SAAS,QAAQ,UAAU,kBAAkB,SAAS;EAClE;;EAMA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;EAsB5B,SAAS,oBAAoB,eAAe,MAAM,QAAQ,YAAY,KAAK;GAC1E,IAAI,OAAO,WAAW,eAAe,OAAO,SAAS,eAAe,OAAO,QAAQ,aAAa,IAAI;IACnG,MAAM,KAAK,qBAAqB,aAAa;IAC7C,OAAO,QAAQ,QAAQ,GAAG,MAAM,MAAM,CAAC;GACxC,SAAS,OAAO;IACf,OAAO,QAAQ,OAAO,KAAK;GAC5B;GACA,OAAO,IAAI,SAAS,SAAS,WAAW;IACvC,MAAM,OAAO,IAAI,KAAK,CAAC,mBAAmB,GAAG,EAAE,MAAM,kBAAkB,CAAC;IACxE,MAAM,MAAM,IAAI,gBAAgB,IAAI;IACpC,MAAM,SAAS,IAAI,OAAO,GAAG;IAC7B,IAAI,UAAU;IACd,MAAM,UAAU,WAAW;KAC1B,IAAI,SAAS;KACb,UAAU;KACV,aAAa,KAAK;KAClB,OAAO,UAAU;KACjB,IAAI,gBAAgB,GAAG;KACvB,OAAO;IACR;IACA,MAAM,QAAQ,iBAAiB;KAC9B,aAAa,uBAAuB,IAAI,MAAM,mBAAmB,UAAU,6BAA6B,CAAC,CAAC;IAC3G,GAAG,SAAS;IACZ,OAAO,aAAa,UAAU;KAC7B,MAAM,OAAO,MAAM;KACnB,aAAa;MACZ,IAAI,KAAK,IAAI,QAAQ,KAAK,MAAM;WAC3B,OAAO,IAAI,MAAM,KAAK,WAAW,cAAc,CAAC;KACtD,CAAC;IACF;IACA,OAAO,WAAW,UAAU;KAC3B,aAAa,OAAO,IAAI,MAAM,OAAO,MAAM,WAAW,aAAa,CAAC,CAAC,CAAC;IACvE;IACA,OAAO,YAAY;KAClB,QAAQ;KACR,MAAM,CAAC,GAAG,IAAI;KACd,QAAQ,EAAE,GAAG,OAAO;IACrB,CAAC;GACF,CAAC;EACF;;;;EAIA,SAAS,8BAA8B,KAAK;GAC3C,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM,OAAO;IACnD,IAAI;IACJ,QAAQ;GACT;GACA,MAAM,QAAQ;GACd,MAAM,KAAK,OAAO,MAAM,OAAO,WAAW,MAAM,GAAG,KAAK,CAAC,CAAC,YAAY,IAAI;GAC1E,IAAI,CAAC,IAAI,OAAO;IACf,IAAI;IACJ,QAAQ;GACT;GACA,IAAI,CAAC,WAAW,KAAK,EAAE,GAAG,OAAO;IAChC,IAAI;IACJ,QAAQ,UAAU,GAAG;GACtB;GACA,IAAI,aAAa,IAAI,EAAE,GAAG,OAAO;IAChC,IAAI;IACJ,QAAQ,UAAU,GAAG,+BAA+B,GAAG;GACxD;GACA,MAAM,QAAQ,OAAO,MAAM,UAAU,WAAW,MAAM,MAAM,KAAK,IAAI;GACrE,IAAI,CAAC,SAAS,MAAM,SAAS,IAAI,OAAO;IACvC,IAAI;IACJ,QAAQ;GACT;GACA,MAAM,OAAO,MAAM;GACnB,IAAI,SAAS,UAAU,SAAS,OAAO,OAAO;IAC7C,IAAI;IACJ,QAAQ,2CAA2C,KAAK,UAAU,MAAM,IAAI;GAC7E;GACA,MAAM,SAAS,CAAC;GAChB,IAAI,MAAM,WAAW,KAAK,GAAG;IAC5B,IAAI,CAAC,MAAM,QAAQ,MAAM,MAAM,GAAG,OAAO;KACxC,IAAI;KACJ,QAAQ;IACT;IACA,IAAI,MAAM,OAAO,SAAS,kBAAkB,OAAO;KAClD,IAAI;KACJ,QAAQ,uBAAuB,iBAAiB;IACjD;IACA,KAAK,IAAI,QAAQ,GAAG,QAAQ,MAAM,OAAO,QAAQ,SAAS;KACzD,MAAM,IAAI,MAAM,OAAO;KACvB,IAAI,OAAO,MAAM,YAAY,MAAM,MAAM,OAAO;MAC/C,IAAI;MACJ,QAAQ,UAAU,MAAM;KACzB;KACA,MAAM,MAAM,OAAO,EAAE,QAAQ,WAAW,EAAE,IAAI,KAAK,IAAI;KACvD,IAAI,CAAC,kBAAkB,KAAK,GAAG,GAAG,OAAO;MACxC,IAAI;MACJ,QAAQ,UAAU,MAAM,SAAS,IAAI;KACtC;KACA,MAAM,QAAQ,OAAO,EAAE,UAAU,WAAW,EAAE,MAAM,KAAK,IAAI;KAC7D,MAAM,SAAS,OAAO,EAAE,OAAO;KAC/B,MAAM,SAAS,OAAO,EAAE,GAAG;KAC3B,MAAM,SAAS,OAAO,EAAE,GAAG;KAC3B,IAAI,CAAC,OAAO,SAAS,MAAM,KAAK,CAAC,OAAO,SAAS,MAAM,KAAK,CAAC,OAAO,SAAS,MAAM,GAAG,OAAO;MAC5F,IAAI;MACJ,QAAQ,UAAU,MAAM,KAAK,IAAI;KAClC;KACA,IAAI,UAAU,QAAQ,OAAO;MAC5B,IAAI;MACJ,QAAQ,UAAU,MAAM,KAAK,IAAI,WAAW,OAAO,gBAAgB,OAAO;KAC3E;KACA,IAAI,SAAS,UAAU,SAAS,QAAQ,OAAO;MAC9C,IAAI;MACJ,QAAQ,UAAU,MAAM,KAAK,IAAI,eAAe,OAAO,oBAAoB,OAAO,IAAI,OAAO;KAC9F;KACA,OAAO,KAAK;MACX;MACA;MACA,SAAS;MACT,KAAK;MACL,KAAK;KACN,CAAC;IACF;GACD;GACA,MAAM,gBAAgB,OAAO,MAAM,kBAAkB,WAAW,MAAM,cAAc,KAAK,IAAI;GAC7F,IAAI,CAAC,eAAe,OAAO;IAC1B,IAAI;IACJ,QAAQ;GACT;GACA,IAAI,cAAc,SAAS,mBAAmB,OAAO;IACpD,IAAI;IACJ,QAAQ,uBAAuB,cAAc,OAAO,YAAY,kBAAkB;GACnF;GACA,IAAI;IACH,qBAAqB,aAAa;GACnC,SAAS,OAAO;IACf,OAAO;KACN,IAAI;KACJ,QAAQ,gBAAgB,OAAO,OAAO,WAAW,KAAK;IACvD;GACD;GACA,MAAM,mBAAmB,CAAC;GAC1B,KAAK,MAAM,KAAK,QAAQ,iBAAiB,EAAE,OAAO,EAAE;GACpD,OAAO;IACN,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD;;EAEA,SAAS,2BAA2B,SAAS,YAAY;GACxD,IAAI,CAAC,MAAM,QAAQ,OAAO,GAAG,OAAO,gDAAgD,OAAO;GAC3F,IAAI,QAAQ,WAAW,GAAG,OAAO;GACjC,IAAI,QAAQ,SAAS,GAAG,OAAO,sBAAsB,QAAQ,OAAO;GACpE,KAAK,IAAI,SAAS,GAAG,SAAS,QAAQ,QAAQ,UAAU;IACvD,MAAM,SAAS,QAAQ;IACvB,IAAI,OAAO,WAAW,YAAY,WAAW,MAAM,OAAO,WAAW,OAAO;IAC5E,IAAI,OAAO,OAAO,QAAQ,YAAY,CAAC,OAAO,IAAI,KAAK,GAAG,OAAO,WAAW,OAAO;IACnF,IAAI,OAAO,SAAS,UAAU,OAAO,SAAS,eAAe,OAAO,SAAS,QAAQ,OAAO,WAAW,OAAO;IAC9G,IAAI,OAAO,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK,GAAG,OAAO,WAAW,OAAO;IACvF,IAAI,CAAC,MAAM,QAAQ,OAAO,MAAM,GAAG,OAAO,WAAW,OAAO;IAC5D,IAAI,OAAO,OAAO,WAAW,YAAY,OAAO,WAAW,OAAO,KAAK,OAAO,IAAI,iBAAiB,OAAO,OAAO,OAAO,kBAAkB,WAAW;IACrJ,KAAK,IAAI,SAAS,GAAG,SAAS,OAAO,OAAO,QAAQ,UAAU;KAC7D,MAAM,IAAI,OAAO,OAAO;KACxB,IAAI,MAAM,KAAK,GAAG;KAClB,IAAI,OAAO,MAAM,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,WAAW,OAAO,KAAK,OAAO,IAAI,QAAQ,OAAO,YAAY,OAAO,CAAC,EAAE;IACjI;GACD;EACD;;;;;;;EAyDA,eAAe,6BAA6B,KAAK,SAAS;GACzD,MAAM,UAAU,8BAA8B,GAAG;GACjD,IAAI,CAAC,QAAQ,IAAI,OAAO;GACxB,MAAM,EAAE,IAAI,OAAO,MAAM,QAAQ,eAAe,kBAAkB,UAAU;GAC5E,MAAM,kBAAkB,iBAAiB;GACzC,MAAM,gBAAgB;IACrB;IACA;IACA;IACA;IACA;GACD;GACA,MAAM,SAAS,SAAS,UAAU;GAClC,KAAK,MAAM,YAAY,eAAe;IACrC,MAAM,OAAO,gBAAgB;IAC7B,IAAI;IACJ,IAAI;KACH,UAAU,MAAM,OAAO,eAAe,MAAM,EAAE,GAAG,iBAAiB,GAAG,kBAAkB;IACxF,SAAS,OAAO;KACf,OAAO;MACN,IAAI;MACJ,QAAQ,KAAK,SAAS,gBAAgB,OAAO,OAAO,WAAW,KAAK;KACrE;IACD;IACA,MAAM,eAAe,2BAA2B,SAAS,KAAK,MAAM;IACpE,IAAI,iBAAiB,KAAK,GAAG,OAAO;KACnC,IAAI;KACJ,QAAQ;IACT;GACD;GACA,OAAO;IACN,IAAI;IACJ,YAAY;KACX;KACA;KACA;KACA;KACA,SAAS,qBAAqB,aAAa;IAC5C;IACA,QAAQ;KACP;KACA;KACA;KACA;KACA;KACA,WAAW,OAAO,MAAM,cAAc,WAAW,MAAM,YAAY,KAAK,IAAI;KAC5E,aAAa,OAAO,MAAM,gBAAgB,WAAW,MAAM,YAAY,KAAK,IAAI,KAAK;IACtF;GACD;EACD;;;;ECjZA,MAAM,kBAAkB;GACvB,QAAQ;IACP;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;IACA;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;IACA;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;IACA;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;GACD;GACA,IAAI;IACH;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;IACA;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;IACA;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;IACA;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;GACD;GACA,IAAI;IACH;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;IACA;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;IACA;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;GACD;GACA,IAAI;IACH;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;IACA;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;IACA;KACC,QAAQ;KACR,QAAQ;KACR,MAAM;IACP;GACD;EACD;;;ECtDA,SAAgBA,mBAAoB,SAAmC;GACrE,IAAI,WAAW;GACf,MAAM,4BAAY,IAAI,IAAgB;GACtC,OAAO;IACL,mBAAmB;IACnB,UAAU,UAAU;KAClB,UAAU,IAAI,QAAQ;KACtB,aAAa;MAAE,UAAU,OAAO,QAAQ;KAAE;IAC5C;IACA,IAAI,MAAM;KACR,WAAW;KACX,KAAK,MAAM,YAAY,CAAC,GAAG,SAAS,GAAG,SAAS;IAClD;IACA,OAAO,SAAS;KACd,KAAK,IAAI,QAAQ,QAAQ,CAAC;IAC5B;GACF;EACF;;EAGA,SAAgB,SAAY,KAAa,UAAgB;GACvD,IAAI;IACF,MAAM,MAAM,aAAa,QAAQ,GAAG;IACpC,IAAI,QAAQ,MAAM,OAAO;IACzB,OAAO,KAAK,MAAM,GAAG;GACvB,QAAQ;IACN,OAAO;GACT;EACF;;EAGA,SAAgB,UAAU,KAAa,OAAsB;GAC3D,IAAI;IACF,aAAa,QAAQ,KAAK,KAAK,UAAU,KAAK,CAAC;GACjD,QAAQ,CAER;EACF;EAMA,MAAM,gBAAgB;EAUtB,SAAgB,YAAY,QAA2B;GACrD,IAAI,CAAC,QAAQ,OAAO;GACpB,MAAM,MAAM,OAAO,YAAY;GAC/B,IAAI,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,UAAU,KAAK,GAAG,GAAG,OAAO;GAC9E,IAAI,IAAI,SAAS,KAAK,KAAK,UAAU,KAAK,GAAG,GAAG,OAAO;GACvD,IAAI,IAAI,SAAS,MAAM,KAAK,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,GAAG,OAAO;GAC/E,OAAO;EACT;EAEA,SAAgB,uBAAuC;GACrD,MAAM,MAAM,SAA4B,eAAe,IAAI;GAQ3D,MAAM,QAAQA,mBAAiC,EAC7C,YAR2C,OAAO,OAAO,IAAI,WAAW,YAAY,IAAI,SACtF;IACE,QAAQ,IAAI,UAAU;KAAC;KAAU;KAAM;KAAM;IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,IAAK,IAAI,SAAsB,YAAY,IAAI,MAAM;IAC3H,QAAQ,IAAI;IACZ,GAAI,IAAI,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;GACvC,IACA,KAGJ,CAAC;GACD,OAAO;IACL,GAAG;IACH,OAAO,YAAY;KACjB,MAAM,YAAwB;MAC5B,QAAQ,WAAW,UAAU;OAAC;OAAU;OAAM;OAAM;MAAI,CAAC,CAAC,SAAS,WAAW,MAAM,IAAI,WAAW,SAAS,YAAY,WAAW,MAAM;MACzI,QAAQ,WAAW;MACnB,GAAI,WAAW,OAAO,EAAE,MAAM,WAAW,KAAK,IAAI,CAAC;KACrD;KACA,MAAM,IAAI,EAAE,YAAY,UAAU,CAAC;KACnC,UAAU,eAAe,SAAS;IACpC;GACF;EACF;EAMA,MAAM,gBAAgB;EAiBtB,SAAS,mBAAmB,KAA6B;GACvD,MAAM,QAAoB,CAAC;GAC3B,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,GAAG,GAAG;IAC7C,IAAI,CAAC;KAAC;KAAU;KAAM;KAAM;IAAI,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,QAAQ,IAAI,GAAG;IACzE,MAAM,SAAS;IACf,MAAM,UAAU,KACb,QAAQ,QAA2B,QAAQ,OAAO,OAAO,IAAI,WAAW,YAAY,IAAI,MAAM,CAAC,CAAC,CAChG,KAAI,SAAQ;KACX,QAAQ,IAAI,UAAU;MAAC;MAAU;MAAM;MAAM;KAAI,CAAC,CAAC,SAAS,IAAI,MAAM,IAAI,IAAI,SAAS;KACvF,QAAQ,IAAI;KACZ,GAAI,IAAI,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACvC,EAAE;GACN;GACA,OAAO;EACT;EAEA,SAAgB,uBAAuC;GACrD,MAAM,QAAQA,mBAA6B,mBAAmB,SAAqB,eAAe,CAAC,CAAC,CAAC,CAAC;GACtG,MAAM,gBAAsB;IAAE,UAAU,eAAe,MAAM,YAAY,CAAC;GAAE;GAC5E,OAAO;IACL,GAAG;IACH,QAAQ,QAAQ;KACd,MAAM,OAAO,MAAM,YAAY,CAAC,CAAC;KACjC,IAAI,SAAS,KAAA,KAAa,KAAK,SAAS,GAAG,OAAO;KAClD,OAAO,mBAAmB,WAAW,CAAC;IACxC;IACA,aAAa,QAAQ;KACnB,MAAM,OAAO,MAAM,YAAY,CAAC,CAAC;KACjC,OAAO,SAAS,KAAA,KAAa,KAAK,SAAS;IAC7C;IACA,IAAI,QAAQ,YAAY;KACtB,MAAM,eAAe;MAAC;MAAU;MAAM;MAAM;KAAI,CAAC,CAAC,SAAS,MAAM,IAAI,SAAS,YAAY,WAAW,MAAM;KAC3G,MAAM,YAAwB;MAC5B,QAAQ;MACR,QAAQ,WAAW;MACnB,GAAI,WAAW,OAAO,EAAE,MAAM,WAAW,KAAK,IAAI,CAAC;KACrD;KACA,MAAM,QAAQ,YAAY;MACxB,MAAM,OAAO,QAAQ,iBAAiB,CAAC;MACvC,IAAI,KAAK,MAAK,QAAO,IAAI,WAAW,UAAU,MAAM,GAAG,OAAO;MAC9D,OAAO;OAAE,GAAG;QAAU,eAAe,CAAC,GAAG,MAAM,SAAS;MAAE;KAC5D,CAAC;KACD,QAAQ;IACV;IACA,OAAO,QAAQ,QAAQ;KACrB,MAAM,eAAe;MAAC;MAAU;MAAM;MAAM;KAAI,CAAC,CAAC,SAAS,MAAM,IAAI,SAAS,YAAY,MAAM;KAChG,MAAM,QAAQ,YAAY;MACxB,MAAM,OAAO,QAAQ,iBAAiB,CAAC;MACvC,OAAO;OAAE,GAAG;QAAU,eAAe,KAAK,QAAO,QAAO,IAAI,WAAW,MAAM;MAAE;KACjF,CAAC;KACD,QAAQ;IACV;GACF;EACF;;;EAIA,MAAa,qBAAqB;;EAGlC,SAAgB,QAAQ,YAAwB,QAAgC;GAC9E,MAAM,OAAO,WAAW;GACxB,IAAI,SAAS,KAAA,KAAa,KAAK,SAAS,GAAG,OAAO;GAClD,OAAO,mBAAmB,WAAW,CAAC;EACxC;;EAGA,MAAa,mBAA+C;GAC1D,QAAQ;IAAC;IAAM;IAAO;IAAO;IAAM;IAAM;IAAM;GAAI;GACnD,IAAI;IAAC;IAAM;IAAO;IAAO;IAAM;IAAM;IAAM;GAAI;GAC/C,IAAI;IAAC;IAAM;IAAO;IAAM;IAAM;GAAI;GAClC,IAAI;IAAC;IAAM;IAAO;IAAO;IAAM;IAAM;IAAM;GAAI;EACjD;;;ECjMA,MAAM,YAAY;;;EAmBlB,SAASC,iBAA2B;GAClC,OAAO,EAAE,WAAW,CAAC;IAAE,IAAI;IAAM,QAAQ;KAAE,IAAI;KAAG,IAAI;KAAI,IAAI;KAAI,IAAI;KAAI,IAAI;KAAI,IAAI;IAAI;GAAE,CAAC,EAAE;EACjG;EAEA,SAAgB,sBAAsB,UAA8C;GAClF,MAAM,QAAQC,mBAA6B,EACzC,WAAW,SAA8B,WAAWD,eAAa,CAAC,CAAC,SAAS,EAC9E,CAAC;GAED,MAAM,gBAAsB;IAAE,UAAU,WAAW,MAAM,YAAY,CAAC,CAAC,SAAS;GAAE;GAElF,OAAO;IACL,GAAG;IACH,aAAa,IAAI;KACf,MAAM,aAAa,SAAS,IAAI,EAAE;KAClC,MAAM,QAAQ,YAAY;MACxB,MAAM,OAAO,QAAQ,UAAU,QAAO,aAAY,SAAS,OAAO,EAAE;MACpE,IAAI,KAAK,WAAW,QAAQ,UAAU,QAAQ,OAAO,EAAE,WAAW,KAAK;MACvE,OAAO,EAAE,WAAW,CAAC,GAAG,QAAQ,WAAW;OAAE;OAAI,QAAQ,eAAe,KAAA,IAAY,SAAS,cAAc,UAAU,IAAI,CAAC;MAAE,CAAC,EAAE;KACjI,CAAC;KACD,QAAQ;IACV;IACA,UAAU,IAAI,QAAQ;KACpB,MAAM,aAAa,SAAS,IAAI,EAAE;KAClC,MAAM,UAAU,eAAe,KAAA,IAAY,SAAS,YAAY,YAAY,MAAM,IAAI;KACtF,MAAM,QAAQ,YAAY;MAExB,OAAO,EAAE,WADM,QAAQ,UAAU,MAAK,aAAY,SAAS,OAAO,EACzC,IACrB,QAAQ,UAAU,KAAI,aAAY,SAAS,OAAO,KAAK;OAAE;OAAI,QAAQ;MAAQ,IAAI,QAAQ,IACzF,CAAC,GAAG,QAAQ,WAAW;OAAE;OAAI,QAAQ;MAAQ,CAAC,EAAE;KACtD,CAAC;KACD,QAAQ;IACV;IACA,eAAe,IAAI;KACjB,MAAM,QAAQ,aAAa,EAAE,WAAW,QAAQ,UAAU,QAAO,aAAY,SAAS,OAAO,EAAE,EAAE,EAAE;KACnG,QAAQ;IACV;IACA,YAAY,IAAI;KACd,OAAO,MAAM,YAAY,CAAC,CAAC,UAAU,MAAK,aAAY,SAAS,OAAO,EAAE;IAC1E;IACA,SAAS,IAAI;KACX,OAAO,MAAM,YAAY,CAAC,CAAC,UAAU,MAAK,aAAY,SAAS,OAAO,EAAE;IAC1E;GACF;EACF;;;;;;;;;ECtEA,MAAa,aAAa,wBAAwB;;;;;EAMlD,MAAM,4BAAY,IAAI,IAAY;EAElC,SAAgB,oBAAoB,IAAkB;GACpD,UAAU,IAAI,EAAE;EAClB;EAEA,SAAgB,sBAAsB,IAAkB;GACtD,UAAU,OAAO,EAAE;EACrB;EAEA,SAAgB,kBAAkB,IAAqB;GACrD,OAAO,UAAU,IAAI,EAAE;EACzB;;;;EC8BA,MAAa,yBAAyB;EAEtC,SAAgB,0BAA6C;;GAE3D,MAAM,0BAAU,IAAI,IAA8D;GAClF,MAAM,4BAAY,IAAI,IAAgB;GACtC,IAAI,UAAU;GACd,IAAI,MAAM;GAKV,QAAQ,IAAI,wBAAwB;IAClC,YAAY;KACV,IAAI;KACJ,UAAU;KACV,OAAO;KACP,cAAc;MAAE,MAAM,IAAI,MAAM,+DAA+D;KAAE;IACnG;IACA,KAAK;GACP,CAAC;GAED,OAAO;IACL,SAAS,YAAY;KACnB,IAAI,WAAW,OAAA,SACb,MAAM,IAAI,MAAM,kBAAkB,uBAAuB,uCAAuC;KAElG,QAAQ,IAAI,WAAW,IAAI;MAAE;MAAY,KAAK;KAAM,CAAC;KACrD,WAAW;KACX,KAAK,MAAM,YAAY,WAAW,SAAS;IAC7C;IACA,WAAW,IAAI;KACb,IAAI,CAAC,QAAQ,OAAO,EAAE,GAAG;KACzB,WAAW;KACX,KAAK,MAAM,YAAY,WAAW,SAAS;IAC7C;IACA,OAAO;KACL,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC,CACzB,MAAM,GAAG,OAAO,EAAE,WAAW,SAAS,OAAO,EAAE,WAAW,SAAS,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CACxF,KAAI,UAAS,MAAM,UAAU;IAClC;IACA,MAAK,OAAM,QAAQ,IAAI,EAAE,CAAC,EAAE;IAC5B,UAAU,UAAU;KAClB,UAAU,IAAI,QAAQ;KACtB,aAAa;MAAE,UAAU,OAAO,QAAQ;KAAE;IAC5C;IACA,kBAAkB;GACpB;EACF;;EAGA,MAAa,aAAa,wBAAwB;;;EChGlD,IAAa,cAAb,cAAiC,MAAM;GAChB;GAArB,YAAY,QAAyB,SAAiB;IACpD,MAAM,OAAO;IADM,KAAA,SAAA;GAErB;EACF;EAEA,eAAe,QAAW,MAA0B;GAClD,MAAM,WAAW,MAAM,MAAM,MAAM,EAAE,SAAS,EAAE,QAAQ,mBAAmB,EAAE,CAAC;GAC9E,IAAI,SAAS,WAAW,KAAK,MAAM,IAAI,YAAY,KAAK,cAAc;GACtE,IAAI,SAAS,WAAW,KAAK,MAAM,IAAI,YAAY,KAAK,WAAW;GACnE,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,YAAY,SAAS,QAAQ,UAAU,KAAK,WAAW,SAAS,QAAQ;GACpG,MAAM,OAAO,MAAM,SAAS,KAAK;GAGjC,IAAI,SAAS,QAAQ,OAAO,SAAS,YAAa,KAA0B,OAAO,OAAO;IACxF,MAAM,WAAW;IACjB,MAAM,IAAI,YAAY,KAAK,GAAG,SAAS,QAAQ,kBAAkB,IAAI,SAAS,WAAW,yBAAyB;GACpH;GACA,OAAO;EACT;;EAGA,eAAsB,eAAsC;GAE1D,QAAO,MADY,QAAmC,yBAAyB,EAAA,CACnE,WAAW,CAAC;EAC1B;;EAGA,eAAsB,aAAa,QAAkB,SAA2D;GAG9G,QAAO,MADY,QAAoD,2BAA2B,IADhF,gBAAgB;IAAE;IAAQ,SAAS,QAAQ,KAAK,GAAG;GAAE,CAC+B,CAAC,CAAC,SAAS,GAAG,EAAA,CACxG,WAAW,CAAC;EAC1B;EAEA,eAAsB,YAAY,QAAkB,QAAgB,UAAkB,OAAiC;GAErH,MAAM,OAAO,MAAM,QAA6B,0BAA0B,IADxD,gBAAgB;IAAE;IAAQ;IAAQ;IAAU,OAAO,OAAO,KAAK;GAAE,CACL,CAAC,CAAC,SAAS,GAAG;GAC5F,OAAO,MAAM,QAAQ,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC;EACrD;;;;;EAMA,eAAsB,iBAAiB,QAAkB,QAAiD;GACxG,IAAI;IAGF,QAAO,MADY,QAAuD,+BAA+B,IADvF,gBAAgB;KAAE;KAAQ;IAAO,CAC0D,CAAC,CAAC,SAAS,GAAG,EAAA,CAC/G,eAAe;GAC7B,QAAQ;IACN,OAAO;GACT;EACF;;;;;EAMA,eAAsB,wBAAwB,QAAkB,QAAoD;GAClH,IAAI;IAGF,QAAO,MADY,QAAsD,uCAAuC,IAD9F,gBAAgB;KAAE;KAAQ;IAAO,CACiE,CAAC,CAAC,SAAS,GAAG,EAAA,CACtH,WAAW;GACzB,QAAQ;IACN,OAAO;GACT;EACF;;;;;EAMA,eAAsB,eAAe,QAAkB,QAA2C;GAChG,IAAI;IAGF,QAAO,MADY,QAA+C,6BAA6B,IAD7E,gBAAgB;KAAE;KAAQ;IAAO,CACgD,CAAC,CAAC,SAAS,GAAG,EAAA,CACrG,aAAa;GAC3B,QAAQ;IACN,OAAO;GACT;EACF;;;;;EAMA,eAAsB,kBAAkB,QAAkB,QAAgB,QAAQ,IAAiC;GACjH,IAAI;IAEF,MAAM,OAAO,MAAM,QAA8C,0BAA0B,IADzE,gBAAgB;KAAE;KAAQ;KAAQ,OAAO,OAAO,KAAK;IAAE,CACsB,CAAC,CAAC,SAAS,GAAG;IAC7G,OAAO,MAAM,QAAQ,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC;GACrD,QAAQ;IACN,OAAO;GACT;EACF;;EAOA,eAAsB,oBAAoB,QAA8C;GACtF,IAAI;IACF,MAAM,OAAO,MAAM,QAAgD,0CAA0C,QAAQ;IACrH,OAAO,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,YAAY,CAAC;GAC3D,QAAQ;IACN,OAAO;GACT;EACF;;EAGA,eAAsB,mBAAmB,QAAoD;GAC3F,IAAI;IACF,MAAM,OAAO,MAAM,QAAqD,yCAAyC,QAAQ;IACzH,OAAO,MAAM,QAAQ,KAAK,QAAQ,IAAI,KAAK,WAAW,CAAC;GACzD,QAAQ;IACN,OAAO;GACT;EACF;;EAGA,eAAsB,qBAAqB,QAA2C;GACpF,IAAI;IACF,MAAM,OAAO,MAAM,QAA0C,uCAAuC,QAAQ;IAC5G,OAAO,MAAM,QAAQ,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC;GACrD,QAAQ;IACN,OAAO;GACT;EACF;;EAGA,eAAsB,gBAAgB,QAA+C;GACnF,IAAI;IACF,MAAM,OAAO,MAAM,QAA6C,sCAAsC,QAAQ;IAC9G,OAAO,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;GACnD,QAAQ;IACN,OAAO;GACT;EACF;;;;EAkBA,eAAsB,cAAc,QAAkB,OAA+C;GACnG,IAAI;IACF,MAAM,WAAW,MAAM,MAAM,sCAAsC,UAAU;KAC3E,QAAQ;KACR,SAAS,EAAE,gBAAgB,mBAAmB;KAC9C,MAAM,KAAK,UAAU;MAAE,GAAG;MAAO,QAAQ;KAAM,CAAC;IAClD,CAAC;IACD,MAAM,OAAO,MAAM,SAAS,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE;IACnD,IAAI,CAAC,SAAS,MAAM,KAAK,OAAO,QAAQ,KAAK,UAAU,KAAA,GAAW;KAChE,MAAM,MAAM,KAAK,WAAW,KAAK,QAAQ;KACzC,QAAQ,KAAK,qCAAqC,KAAK,MAAM,KAAK,OAAO;KACzE,OAAO,EAAE,OAAO,IAAI;IACtB;IACA,OAAO,EAAE,OAAO,KAAK,MAAM;GAC7B,SAAS,KAAK;IACZ,OAAO,EAAE,OAAO,eAAe,QAAQ,IAAI,UAAU,yBAAyB;GAChF;EACF;;EASA,eAAsB,eAAe,QAAkB,SAAiB,QAAmC;GACzG,IAAI;IACF,MAAM,QAAQ,IAAI,gBAAgB;KAAE;KAAQ,IAAI;KAAS,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC;IAAG,CAAC;IACxF,MAAM,WAAW,MAAM,MAAM,+BAA+B,MAAM,SAAS,KAAK;KAC9E,QAAQ;KACR,SAAS,EAAE,QAAQ,mBAAmB;IACxC,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,OAAO;IACzB,MAAM,OAAO,MAAM,SAAS,KAAK;IACjC,OAAO,KAAK,OAAO,QAAQ,KAAK,aAAa;GAC/C,QAAQ;IACN,OAAO;GACT;EACF;;EAGA,eAAsB,aAAa,QAAkB,GAA+D;GAElH,MAAM,OAAO,MAAM,QAA+D,2BAA2B,IAD3F,gBAAgB;IAAE;IAAQ,GAAI,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;GAAG,CAC0C,CAAC,CAAC,SAAS,GAAG;GAC/H,OAAO,MAAM,QAAQ,KAAK,OAAO,IAAI,KAAK,UAAU,CAAC;EACvD;;EAGA,eAAsB,wBAA0D;GAC9E,IAAI;IACF,MAAM,OAAO,MAAM,QAA8D,mCAAmC;IACpH,OAAO,MAAM,QAAQ,KAAK,UAAU,IAAI,KAAK,aAAa,CAAC;GAC7D,QAAQ;IACN,OAAO,CAAC;GACV;EACF;;EAGA,eAAsB,sBAAsB,IAA8B;GACxE,IAAI;IACF,MAAM,QAAQ,IAAI,gBAAgB,EAAE,GAAG,CAAC;IACxC,MAAM,WAAW,MAAM,MAAM,qCAAqC,MAAM,SAAS,KAAK;KACpF,QAAQ;KACR,SAAS,EAAE,QAAQ,mBAAmB;IACxC,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,OAAO;IACzB,MAAM,OAAO,MAAM,SAAS,KAAK;IACjC,OAAO,KAAK,OAAO,QAAQ,KAAK,YAAY;GAC9C,QAAQ;IACN,OAAO;GACT;EACF;;EAGA,eAAsB,sBAAgD;GACpE,IAAI;IACF,MAAM,OAAO,MAAM,QAAiD,iCAAiC;IACrG,OAAO,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;GACnD,SAAS,KAAK;IACZ,QAAQ,KAAK,gEAAgE,GAAG;IAChF,OAAO,CAAC;GACV;EACF;;;;;EAsBA,eAAsB,UAAU,QAAkB,QAAiB,QAAQ,IAAsC;GAC/G,IAAI;IAEF,MAAM,OAAO,MAAM,QACjB,wBAAwB,IAFR,gBAAgB;KAAE;KAAQ,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC;KAAI,OAAO,OAAO,KAAK;IAAE,CAElE,CAAC,CAAC,SAAS,GACzC;IACA,OAAO;KAAE,OAAO,KAAK,SAAS,CAAC;KAAG,aAAa,KAAK,eAAe,CAAC;IAAE;GACxE,QAAQ;IACN,OAAO;GACT;EACF;;EAOA,eAAsB,wBAAyD;GAC7E,IAAI;IACF,MAAM,OAAO,MAAM,QAA6D,mCAAmC;IACnH,OAAO,MAAM,QAAQ,KAAK,UAAU,IAAI,KAAK,aAAa,CAAC;GAC7D,SAAS,KAAK;IACZ,QAAQ,KAAK,kEAAkE,GAAG;IAClF,OAAO,CAAC;GACV;EACF;;EA0BA,eAAsB,sBAA+C;GACnE,IAAI;IAEF,QAAO,MADY,QAAqD,4BAA4B,EAAA,CACxF,cAAc,CAAC;GAC7B,SAAS,KAAK;IACZ,QAAQ,KAAK,uEAAuE,GAAG;IACvF,MAAM,eAAe,cAAc,MAAM,IAAI,YAAY,GAAG,wBAAwB;GACtF;EACF;;EAGA,eAAsB,oBAAoB,YAAiF;GACzH,IAAI;IACF,MAAM,WAAW,MAAM,MAAM,8BAA8B;KACzD,QAAQ;KACR,SAAS,EAAE,gBAAgB,mBAAmB;KAC9C,MAAM,KAAK,UAAU,UAAU;IACjC,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,OAAO;IAEzB,QAAO,MADY,SAAS,KAAK,EAAA,CACrB,OAAO;GACrB,QAAQ;IACN,OAAO;GACT;EACF;;EAGA,eAAsB,uBAAuB,QAAgB,QAAkC;GAC7F,IAAI;IACF,MAAM,QAAQ,IAAI,gBAAgB;KAAE;KAAQ;IAAO,CAAC;IACpD,MAAM,WAAW,MAAM,MAAM,8BAA8B,MAAM,SAAS,KAAK;KAC7E,QAAQ;KACR,SAAS,EAAE,QAAQ,mBAAmB;IACxC,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,OAAO;IAEzB,QAAO,MADY,SAAS,KAAK,EAAA,CACrB,OAAO;GACrB,QAAQ;IACN,OAAO;GACT;EACF;;EAGA,eAAsB,qBAAqB,MAAwC;GACjF,IAAI;IACF,MAAM,WAAW,MAAM,MAAM,qCAAqC;KAChE,QAAQ;KACR,SAAS,EAAE,gBAAgB,mBAAmB;KAC9C,MAAM,KAAK,UAAU,EAAE,YAAY,KAAK,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,OAAO;IAEzB,QAAO,MADY,SAAS,KAAK,EAAA,CACrB,OAAO;GACrB,QAAQ;IACN,OAAO;GACT;EACF;;EAGA,eAAsB,qBAAwF;GAC5G,IAAI;IAEF,QAAO,MADY,QAA+F,2BAA2B,EAAA,CACjI,cAAc;GAC5B,QAAQ;IACN,OAAO;GACT;EACF;;EAGA,eAAsB,iBAAiB,YAAwF;GAC7H,IAAI;IACF,MAAM,WAAW,MAAM,MAAM,6BAA6B;KACxD,QAAQ;KACR,SAAS,EAAE,gBAAgB,mBAAmB;KAC9C,MAAM,KAAK,UAAU,EAAE,WAAW,CAAC;IACrC,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,OAAO;IAEzB,QAAO,MADY,SAAS,KAAK,EAAA,CACrB,OAAO;GACrB,QAAQ;IACN,OAAO;GACT;EACF;;EAkBA,IAAI,qBAAyC;EAC7C,MAAM,wCAAwB,IAAI,IAA4C;EAE9E,SAAS,2BAAiC;GACxC,IAAI,uBAAuB,MAAM;GAEjC,IAAI,OAAO,WAAW,eAAe,OAAO,gBAAgB,aAAa;GACzE,MAAM,SAAS,IAAI,YAAY,wBAAwB;GACvD,OAAO,iBAAiB,kBAAkB,UAAU;IAClD,IAAI;KACF,MAAM,OAAO,KAAK,MAAO,MAAuB,IAAc;KAC9D,IAAI,OAAO,KAAK,UAAU,UAAU;KACpC,KAAK,MAAM,YAAY,CAAC,GAAG,qBAAqB,GAAG,SAAS,KAAK,KAA8B;IACjG,QAAQ,CAER;GACF,CAAC;GACD,OAAO,gBAAgB,CAEvB;GACA,qBAAqB;EACvB;;;;;EAMA,SAAgB,uBAAuB,UAA4C;GACjF,yBAAyB;GACzB,MAAM,YAAY,UAAuC;IAAE,SAAS,MAAM,GAAG;GAAE;GAC/E,sBAAsB,IAAI,QAAQ;GAClC,aAAa;IACX,sBAAsB,OAAO,QAAQ;IACrC,IAAI,sBAAsB,SAAS,KAAK,uBAAuB,MAAM;KACnE,mBAAmB,MAAM;KACzB,qBAAqB;IACvB;GACF;EACF;;EAGA,eAAsB,kBAAkB,QAAkB,QAA0D;GAClH,IAAI;IAGF,QAAO,MADY,QAA6D,gCAAgC,IAD9F,gBAAgB;KAAE;KAAQ;IAAO,CACiE,CAAC,CAAC,SAAS,GAAG,EAAA,CACtH;GACd,SAAS,KAAK;IACZ,QAAQ,KAAK,mCAAmC,OAAO,GAAG,OAAO,WAAW,GAAG;IAC/E;GACF;EACF;;EA6BA,SAAgB,6BAAmD;GACjE,OAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF;;;ECzcA,MAAM,SAAS,OAA8B,IAAI,SAAQ,YAAW;GAAE,WAAW,SAAS,EAAE;EAAE,CAAC;;EAG/F,SAAgB,mBAAmB,SAAyB;GAE1D,MAAM,QAAQ,QAAQ,QAAQ,SAAM;GACpC,OAAO,SAAS,IAAI,QAAQ,MAAM,QAAQ,CAAa,IAAI;EAC7D;;EAGA,SAAgB,cAAc,SAAiB,MAAoB;GACjE,MAAM,QAAQ,WAAW,KAAK,KAAK,mBAAmB,OAAO,CAAC,IAAG,SAAQ,KAAK,WAAW,CAAC,CAAC;GAC3F,OAAO,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,MAAM,YAAY,CAAC;EACtD;EAEA,eAAsB,sBAAsB,MAAwB,MAAc,OAAuC;GACvH,MAAM,EAAE,aAAa;GACrB,IAAI,UAAU,SAAS,KAAK,YAAY,CAAC,CAAC;GAC1C,IAAI,YAAY,KAAA,KAAa,KAAK,iBAAiB,KAAA,GAAW;IAC5D,KAAK,aAAa;IAClB,MAAM,SAAS,KAAK,UAAU;IAC9B,MAAM,UAAU,KAAK,WAAW;IAChC,KAAK,IAAI,QAAQ,GAAG,QAAQ,WAAW,YAAY,KAAA,GAAW,SAAS;KACrE,MAAM,MAAM,MAAM;KAClB,UAAU,SAAS,KAAK,YAAY,CAAC,CAAC;IACxC;GACF;GACA,IAAI,YAAY,KAAA,GACd,MAAM,IAAI,MAAM,mEAAmE;GAErF,MAAM,eAAe,KAAK;GAC1B,IAAI,iBAAiB,KAAA,GAAW,MAAM,IAAI,MAAM,6DAA6D;GAC7G,MAAM,SAAS,aAAa,MAAM,MAAM,OAAO;GAC/C,IAAI,WAAW,KAAA,GAAW,MAAM,IAAI,MAAM,6DAA6D;GAEvG,MAAM,EAAE,OAAO,UAAU,OAAO,MAAM,YAAY;GAClD,IAAI,UAAU,SACZ,MAAM,IAAI,MAAM,iEAAiE;GAGnF,IAAI,UAAU,KAAA,GAAW;IACvB,MAAM,CAAC,cAAc,aAAa,kBAAkB,CAAC,cAAc,MAAM,SAAS,MAAM,QAAQ,WAAW,CAAC,CAAC;IAC7G,IAAI,eAAe,KAAA,KAAa,CAAC,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,GAAG;KAClE,aAAa,oBAAoB,WAAW,EAAE;KAC9C,QAAQ,KAAK,iEAAiE;IAChF;GACF;GAEA,OAAO,SAAS,UAAU,KAAK,OAAO,GAAG,MAAM,MAAM,MAAM;EAC7D;;;EC3EA,SAAS,SAAS,OAAgB,WAAW,IAAY;GACvD,OAAO,OAAO,UAAU,WAAW,QAAQ;EAC7C;EAEA,SAAS,SAAS,OAA+B;GAC/C,OAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,QAAQ;EACvE;EAEA,SAAS,UAAU,SAA0C;GAC3D,IAAI;IACF,MAAM,SAAS,KAAK,MAAM,OAAO;IACjC,OAAO,WAAW,QAAQ,OAAO,WAAW,WAAW,SAAoC,CAAC;GAC9F,QAAQ;IACN,OAAO,CAAC;GACV;EACF;EAEA,SAAS,YAAY,YAAoD;GACvE,IAAI;IACF,MAAM,SAAS,KAAK,MAAM,UAAU;IACpC,OAAO,WAAW,QAAQ,OAAO,WAAW,WAAW,SAAoC;GAC7F,QAAQ;IACN,OAAO;GACT;EACF;EAEA,SAAgB,uBAAuB,SAAiB,YAA4C;GAClG,MAAM,OAAO,YAAY,UAAU;GACnC,IAAI,SAAS,MAAM,OAAO;GAC1B,MAAM,OAAO,UAAU,OAAO;GAE9B,IAAI,KAAK,WAAW,YAClB,OAAO;IACL,OAAO;IACP,QAAQ;IACR,QAAQ,SAAS,KAAK,UAAU,KAAK,UAAU,KAAK,QAAQ,GAAG;IAC/D,MAAM,SAAS,KAAK,MAAM,GAAG;IAC7B,MAAM,SAAS,KAAK,QAAQ,KAAK,WAAW,GAAG;IAC/C,UAAU,KAAK,YAAY;IAC3B,OAAO,SAAS,KAAK,KAAK;IAC1B,gBAAgB;IAChB,SAAS,SAAS,KAAK,OAAO;GAChC;GAIF,MAAM,SAAS,KAAK,WAAW;GAE/B,MAAM,iBAAiB,UADJ,KAAK,aAAa,CAAC,EAAA,CACI,KAAK;GAC/C,MAAM,SAAS,SAAS,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,QAAQ,GAAG;GACnH,MAAM,WAAW,KAAK,YAAY,KAAK,YAAY;GACnD,OAAO;IACL,OAAO;IACP;IACA;IACA,MAAM,SAAS,KAAK,QAAQ,KAAK,MAAM,GAAG;IAC1C,MAAM,SAAS,KAAK,QAAQ,KAAK,aAAa,KAAK,QAAQ,KAAK,WAAW,GAAG;IAC9E,UAAU,OAAO,aAAa,YAAY,OAAO,aAAa,WAAW,WAAW;IACpF,OAAO,SAAS,KAAK,SAAS,KAAK,KAAK;IACxC;IACA,SAAS,SAAS,KAAK,IAAI;GAC7B;EACF;EAWA,SAAgB,sBAAsB,UAAkB,SAAiB,YAAgD;GACvH,MAAM,OAAO,YAAY,UAAU;GACnC,IAAI,SAAS,QAAQ,KAAK,OAAO,MAAM,OAAO;GAC9C,MAAM,OAAO,UAAU,OAAO;GAE9B,MAAM,aAAe,KAAK,YAAY,KAAK,cAAc;GACzD,MAAM,SAAS,SAAS,WAAW,UAAU,KAAK,QAAQ,GAAG;GAC7D,MAAM,SAAS,SAAS,WAAW,UAAU,KAAK,QAAQ,GAAG;GAC7D,IAAI,WAAW,OAAO,WAAW,KAAK,OAAO;GAC7C,IAAI,aAAa,oBACf,OAAO;IAAE,QAAQ;IAAU;IAAQ;IAAQ,MAAM,SAAS,WAAW,QAAQ,KAAK,IAAI;IAAG,OAAO;IAAM,MAAM,SAAS,KAAK,IAAI;GAAE;GAElI,IAAI,aAAa,iBACf,OAAO;IAAE,QAAQ;IAAO;IAAQ;IAAQ,MAAM,SAAS,WAAW,QAAQ,KAAK,IAAI;IAAG,OAAO,KAAK,UAAU;IAAM,MAAM,SAAS,KAAK,IAAI;GAAE;GAE9I,OAAO;EACT;;;;;;;;;;;;;;;;;;;;;;;;;ECjGA,SAAS,SAAS,OAAsG;GACtH,IAAI,MAAM,SAAS,eAAe;IAChC,MAAM,OAAO,MAAM,QAChB,KAAK,SAAmB,OAAO,SAAS,YAAY,SAAS,QAAQ,UAAU,OAAO,OAAQ,KAA4B,QAAQ,EAAE,IAAI,EAAG,CAAC,CAC5I,KAAK,EAAE;IACV,OAAO;KAAE,SAAS,MAAM,MAAM,WAAW;KAAI,YAAY;KAAM,SAAS,MAAM;IAAQ;GACxF;GACA,OAAO;IAAE,SAAS,MAAM,WAAW;IAAI,YAAY;IAAM,SAAS;GAAM;EAC1E;;EAUA,SAAgB,UAAU,OAAkB;GAC1C,MAAM,EAAE,OAAO,MAAM;GACrB,MAAM,OAAO,SAAS,KAAK;GAC3B,IAAI,KAAK,eAAe,MAAM,OAAO;GACrC,MAAM,SAAS,uBAAuB,KAAK,SAAS,KAAK,UAAU;GACnE,IAAI,WAAW,MAAM,OAAO;GAE5B,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAWE,4BAAI;IAAM,4BAAyB;IAAc,cAAY,OAAO;IAApF,UAAA;KACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;MAAK,WAAWA,4BAAI;MAApB,UAAA;OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;QAAM,WAAWA,4BAAI;QAAO,cAAY,OAAO;QAC5C,UAAA,OAAO,UAAU,aACb,IAAI,qBAAqB,KAAK,aAC/B,OAAO,SACJ,IAAI,mBAAmB,KAAK,YAC5B,IAAI,iBAAiB,KAAK;OAC7B,CAAA;OACN,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;QAAM,WAAWA,4BAAI;QAAQ,UAAA,OAAO;OAAa,CAAA;OACjD,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;QAAM,WAAWA,4BAAI;QAAO,UAAA,OAAO,SAAS,QAAS,IAAI,WAAW,KAAK,QAAU,IAAI,YAAY,KAAK;OAAc,CAAA;OACtH,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;QAAM,WAAWA,4BAAI;QAAO,UAAA,OAAO,SAAS,UAAW,IAAI,aAAa,KAAK,UAAY,IAAI,cAAc,KAAK;OAAgB,CAAA;MAC7H;;KACL,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;MAAK,WAAWA,4BAAI;MAApB,UAAA;OACG,OAAO,SAAS,WAAW,OAAO,UAAU,OAAO,GAAG,IAAI,uBAAuB,KAAK,QAAQ,GAAG,OAAO,MAAM,OAAO;OACrH,GAAG,IAAI,0BAA0B,KAAK,MAAM,GAAG,OAAO,YAAY;OAClE,OAAO,mBAAmB,OAAO,MAAM,IAAI,0BAA0B,KAAK,MAAM,GAAG,OAAO,mBAAmB;MAC3G;;KACJ,OAAO,UAAU,cAAc,OAAO,YAAY,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;MAAK,WAAWA,4BAAI;MAAS,UAAA,OAAO;KAAa,CAAA;IACvG;;EAET;;EAGA,SAAgB,kBAAkB,OAAkB;GAClD,MAAM,EAAE,UAAU,OAAO,MAAM;GAC/B,MAAM,OAAO,SAAS,KAAK;GAC3B,IAAI,KAAK,eAAe,MAAM,OAAO;GACrC,MAAM,SAAS,sBAAsB,UAAU,KAAK,SAAS,KAAK,UAAU;GAC5E,IAAI,WAAW,MAAM,OAAO;GAE5B,MAAM,QAAQ,OAAO,WAAW,WAC3B,IAAI,yBAAyB,KAAK,aACnC,OAAO,QACJ,IAAI,sBAAsB,KAAK,uBAC/B,IAAI,wBAAwB,KAAK;GAExC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAWA,4BAAI;IAAM,4BAAyB;IAAnD,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,WAAWA,4BAAI;KAApB,UAAA;MACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAWA,4BAAI;OAAQ,UAAA;MAAY,CAAA;MACzC,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAWA,4BAAI;OAAO,UAAA,OAAO;MAAa,CAAA;MAChD,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAWA,4BAAI;OAAO,UAAA,OAAO;MAAa,CAAA;MAC/C,OAAO,SAAS,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAWA,4BAAI;OAAO,UAAA,OAAO;MAAW,CAAA;KAClE;IACJ,CAAA,GAAA,OAAO,SAAS,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;KAAK,WAAWA,4BAAI;KAAS,UAAA,OAAO;IAAU,CAAA,CAClE;;EAET;;;EC9FA,MAAM,iBAAiB;GACtB,QAAQ;IACP;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;K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ACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;KACR,MAAM;KACN,QAAQ;IACT;IACA;KACC,QAAQ;K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"}
|