{"version":3,"sources":["webpack:///./src/$_gendir async","webpack:///./src/main.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/environments/environment.ts","webpack:///./src/app/app.component.css","webpack:///./src/app/app.component.html"],"names":[],"mappings":"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","file":"main.bundle.js","sourcesContent":["function webpackEmptyContext(req) {\n\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 355;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/$$_gendir async\n// module id = 355\n// module chunks = 1","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { enableProdMode } from '@angular/core';\nimport { environment } from './environments/environment';\nimport { AppModule } from './app/app.module';\n\nif (environment.production) {\n  enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.ts","import { Component, OnDestroy, OnInit } from '@angular/core';\n\ninterface ChartExample {\n  key?: string;\n  title: string;\n  description: string;\n  constructorType?: string;\n  options: any;\n  html: string;\n  tutorialHtml?: string;\n  tutorialTs?: string;\n  tutorialScss?: string;\n}\n\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html',\n  styleUrls: ['./app.component.css']\n})\nexport class AppComponent implements OnInit, OnDestroy {\n  viewMode = 'dynamic';\n  events: string[] = [];\n  dynamicData = [29, 42, 55, 61, 73, 88];\n  binanceSymbol = 'BNBUSDT';\n  binanceInterval = '1s';\n  binanceTheme = 'light';\n  binanceSymbols = ['BNBUSDT', 'BTCUSDT'];\n  binanceIntervals = ['1s', '1m', '15m', '1h', '4h', '1d', '1w'];\n  // Mask API: keep Binance as the data source, but route browser traffic through\n  // api-b.alexandro.net because some networks block requests by Binance domain.\n  maskApiRestBaseUrl = 'https://api-b.alexandro.net';\n  maskApiWsBaseUrl = 'wss://api-b.alexandro.net';\n  binanceRestHosts = [\n    this.maskApiRestBaseUrl + '/api/v3/klines',\n    this.maskApiRestBaseUrl + '/data-api/api/v3/klines'\n  ];\n  binanceWsBaseUrl = this.maskApiWsBaseUrl + '/ws/';\n  binanceWsUrl = '';\n  binanceRestUrl = '';\n  binanceStatus = 'Loading REST candles...';\n  binanceSocketStatus = 'WebSocket disconnected';\n  binanceCandleCount = 0;\n  binanceLastCandle: any = null;\n  binanceOptions: any = this.createBinanceOptions();\n\n  private binanceChart: any = null;\n  private binanceSocket: any = null;\n  private binanceOhlcData: any[] = [];\n  private binanceVolumeData: any[] = [];\n\n  marketSymbols = ['BTCUSDT', 'ETHUSDT', 'BNBUSDT', 'SOLUSDT', 'XRPUSDT', 'ADAUSDT', 'DOGEUSDT', 'TRXUSDT'];\n  marketRestUrl = '';\n  marketWsUrl = '';\n  marketStatus = 'Waiting for market stream';\n  marketTickers: any = {};\n  marketHistory: any = {};\n  cryptoTreemapUrl = 'https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=50&page=1&sparkline=false&price_change_percentage=24h';\n  cryptoTreemapStatus = 'Loading CoinGecko top 50 market cap snapshot...';\n  cryptoTreemapRows: any[] = [];\n  dynamicExamples: ChartExample[] = [];\n\n  private marketSocket: any = null;\n  private marketSnapshotTimer: any = null;\n  private marketSnapshotLoading = false;\n  private cryptoTreemapTimer: any = null;\n  private cryptoTreemapLoading = false;\n  private dynamicRefreshTimer: any = null;\n  private dynamicRefreshQueued = false;\n  private dynamicCharts: any = {};\n\n  examples: ChartExample[] = [\n    this.makeBasic('Line chart', 'Default Highcharts.Chart with a line series.', 'line'),\n    this.makeBasic('Spline chart', 'Smooth line series with regular categories.', 'spline'),\n    this.makeBasic('Area chart', 'Filled area series for trend volume.', 'area'),\n    this.makeBasic('Areaspline chart', 'Smooth filled area series.', 'areaspline'),\n    this.makeBasic('Column chart', 'Vertical columns for category comparison.', 'column'),\n    this.makeBasic('Bar chart', 'Horizontal bars for compact comparisons.', 'bar'),\n    this.makeStackedColumn(),\n    this.makePie(),\n    this.makeDonut(),\n    this.makeScatter(),\n    this.makeBubble(),\n    this.makeCombination(),\n    this.makePolar(),\n    this.makeGauge(),\n    this.makeSolidGauge(),\n    this.makeHeatmap(),\n    this.makeTreemap(),\n    this.makeFunnel(),\n    this.make3dColumn(),\n    this.makeStockChart(),\n    this.makeMapLikeChart(),\n    this.makeNoDataChart()\n  ].map((example: ChartExample) => this.withTutorial(example));\n\n  dynamicOptions: any = this.createDynamicOptions();\n\n  dynamicHtml = `<button (click)=\"randomizeDynamicChart()\">Update data</button>\n<chart [options]=\"dynamicOptions\" (create)=\"onCreate('Dynamic update', $event)\"></chart>`;\n\n  dynamicTutorialHtml = this.wrapTutorialHtml(this.dynamicHtml);\n  dynamicTutorialTs = `import { Component } from '@angular/core';\n\n@Component({\n  selector: 'dynamic-chart-example',\n  templateUrl: './dynamic-chart-example.component.html',\n  styleUrls: ['./dynamic-chart-example.component.css']\n})\nexport class DynamicChartExampleComponent {\n  dynamicData = [29, 42, 55, 61, 73, 88];\n  dynamicOptions: any = this.createDynamicOptions();\n\n  randomizeDynamicChart() {\n    this.dynamicData = this.dynamicData.map(function () {\n      return Math.round(20 + Math.random() * 90);\n    });\n    this.dynamicOptions = this.createDynamicOptions();\n  }\n\n  onCreate(chart: any) {\n    console.log('Dynamic chart created', chart.series.length);\n  }\n\n  private createDynamicOptions() {\n    return {\n      chart: { type: 'line', height: 340 },\n      title: { text: 'Dynamic update' },\n      subtitle: { text: 'Changing the options object re-initializes the wrapper' },\n      xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'] },\n      yAxis: { title: { text: 'Requests' } },\n      series: [{ name: 'Updated data', data: this.dynamicData }]\n    };\n  }\n}`;\n  dynamicTutorialScss = this.defaultTutorialScss(340);\n\n  directiveOptions: any = {\n    chart: { type: 'column', height: 340 },\n    title: { text: 'Directive/event wiring' },\n    subtitle: { text: '<series>, <point>, <xAxis> and <yAxis> outputs' },\n    xAxis: { categories: ['North', 'South', 'East', 'West'] },\n    yAxis: { title: { text: 'Tickets' } },\n    plotOptions: {\n      series: {\n        cursor: 'pointer',\n        point: {\n          events: {}\n        }\n      }\n    },\n    series: [\n      { name: 'Open', data: [12, 18, 9, 15] },\n      { name: 'Closed', data: [9, 13, 7, 11] }\n    ]\n  };\n\n  directiveHtml = `<chart\n  [options]=\"directiveOptions\"\n  (create)=\"onCreate('Directive chart', $event)\"\n  (load)=\"record('chart load')\"\n  (redraw)=\"record('chart redraw')\"\n>\n  <series\n    (click)=\"record('series click')\"\n    (legendItemClick)=\"record('legend click')\"\n  >\n    <point\n      (click)=\"record('point click')\"\n      (mouseOver)=\"record('point hover')\"\n    ></point>\n  </series>\n  <xAxis (setExtremes)=\"record('xAxis extremes')\"></xAxis>\n  <yAxis (setExtremes)=\"record('yAxis extremes')\"></yAxis>\n</chart>`;\n\n  directiveTutorialHtml = this.wrapTutorialHtml(this.directiveHtml);\n  directiveTutorialTs = `import { Component } from '@angular/core';\n\n@Component({\n  selector: 'directive-events-example',\n  templateUrl: './directive-events-example.component.html',\n  styleUrls: ['./directive-events-example.component.css']\n})\nexport class DirectiveEventsExampleComponent {\n  events: string[] = [];\n\n  directiveOptions: any = {\n    chart: { type: 'column', height: 340 },\n    title: { text: 'Directive/event wiring' },\n    subtitle: { text: '<series>, <point>, <xAxis> and <yAxis> outputs' },\n    xAxis: { categories: ['North', 'South', 'East', 'West'] },\n    yAxis: { title: { text: 'Tickets' } },\n    plotOptions: {\n      series: {\n        cursor: 'pointer',\n        point: { events: {} }\n      }\n    },\n    series: [\n      { name: 'Open', data: [12, 18, 9, 15] },\n      { name: 'Closed', data: [9, 13, 7, 11] }\n    ]\n  };\n\n  onCreate(chart: any) {\n    this.record('chart created with ' + chart.series.length + ' series');\n  }\n\n  record(message: string) {\n    this.events.unshift(new Date().toLocaleTimeString() + ' - ' + message);\n    this.events = this.events.slice(0, 8);\n  }\n}`;\n  directiveTutorialScss = this.defaultTutorialScss(340);\n\n  binanceTutorialHtml = `<section\n  class=\"live-market-card\"\n  [class.market-light]=\"binanceTheme === 'light'\"\n  [class.market-dark]=\"binanceTheme === 'dark'\"\n>\n  <div class=\"market-toolbar\">\n    <button type=\"button\" (click)=\"selectBinanceTheme('dark')\">Dark</button>\n    <button type=\"button\" (click)=\"selectBinanceTheme('light')\">Light</button>\n    <button type=\"button\" (click)=\"selectBinanceSymbol('BNBUSDT')\">BNBUSDT</button>\n    <button type=\"button\" (click)=\"selectBinanceSymbol('BTCUSDT')\">BTCUSDT</button>\n    <button type=\"button\" (click)=\"selectBinanceInterval('1s')\">1s</button>\n    <button type=\"button\" (click)=\"selectBinanceInterval('1m')\">1m</button>\n    <button type=\"button\" (click)=\"selectBinanceInterval('1d')\">1d</button>\n  </div>\n\n  <chart\n    [type]=\"'StockChart'\"\n    [options]=\"binanceOptions\"\n    (create)=\"onBinanceChartCreate($event)\"\n  ></chart>\n</section>`;\n\n  binanceTutorialTs = `import { Component, OnDestroy, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'binance-candles-example',\n  templateUrl: './binance-candles-example.component.html',\n  styleUrls: ['./binance-candles-example.component.css']\n})\nexport class BinanceCandlesExampleComponent implements OnInit, OnDestroy {\n  binanceSymbol = 'BNBUSDT';\n  binanceInterval = '1s';\n  binanceTheme = 'light';\n  binanceRestHosts = [\n    'https://api-b.alexandro.net/api/v3/klines',\n    'https://api-b.alexandro.net/data-api/api/v3/klines'\n  ];\n  // Mask API: the example still uses Binance public market data, but browser\n  // requests go through api-b.alexandro.net to avoid firewall/domain blocks.\n  binanceWsBaseUrl = 'wss://api-b.alexandro.net/ws/';\n  binanceOptions: any = this.createBinanceOptions();\n\n  private binanceChart: any = null;\n  private binanceSocket: any = null;\n  private binanceOhlcData: any[] = [];\n  private binanceVolumeData: any[] = [];\n\n  ngOnInit() {\n    this.loadBinanceHistory();\n  }\n\n  ngOnDestroy() {\n    this.disconnectBinanceSocket();\n  }\n\n  onBinanceChartCreate(chart: any) {\n    this.binanceChart = chart;\n    this.applyBinanceSeries();\n  }\n\n  selectBinanceTheme(theme: string) {\n    this.binanceTheme = theme;\n    this.binanceOptions = this.createBinanceOptions();\n    if (this.binanceChart && this.binanceChart.update) {\n      this.binanceChart.update(this.binanceOptions, false);\n      this.applyBinanceSeries();\n    }\n  }\n\n  selectBinanceSymbol(symbol: string) {\n    this.binanceSymbol = symbol;\n    this.loadBinanceHistory();\n  }\n\n  selectBinanceInterval(interval: string) {\n    this.binanceInterval = interval;\n    this.loadBinanceHistory();\n  }\n\n  private loadBinanceHistory() {\n    this.disconnectBinanceSocket();\n    var url = this.binanceRestHosts[0] +\n      '?symbol=' + this.binanceSymbol +\n      '&interval=' + this.binanceInterval +\n      '&limit=300';\n    var xhr = new XMLHttpRequest();\n\n    xhr.onreadystatechange = () => {\n      if (xhr.readyState === 4 && xhr.status >= 200 && xhr.status < 300) {\n        this.receiveBinanceHistory(JSON.parse(xhr.responseText));\n      }\n    };\n\n    xhr.open('GET', url, true);\n    xhr.send();\n  }\n\n  private receiveBinanceHistory(candles: any[]) {\n    this.binanceOhlcData = [];\n    this.binanceVolumeData = [];\n\n    for (var i = 0; i < candles.length; i++) {\n      var candle = candles[i];\n      var point = [\n        parseInt(candle[0], 10),\n        parseFloat(candle[1]),\n        parseFloat(candle[2]),\n        parseFloat(candle[3]),\n        parseFloat(candle[4])\n      ];\n      this.binanceOhlcData.push(point);\n      this.binanceVolumeData.push({\n        x: point[0],\n        y: parseFloat(candle[5]),\n        color: point[4] >= point[1] ? '#02c076' : '#f6465d'\n      });\n    }\n\n    this.applyBinanceSeries();\n    this.connectBinanceSocket();\n  }\n\n  private connectBinanceSocket() {\n    var url = this.binanceWsBaseUrl +\n      this.binanceSymbol.toLowerCase() +\n      '@kline_' +\n      this.binanceInterval;\n    this.binanceSocket = new WebSocket(url);\n\n    this.binanceSocket.onmessage = (message: any) => {\n      var payload = JSON.parse(message.data);\n      if (payload && payload.k) {\n        this.receiveLiveCandle(payload.k);\n      }\n    };\n  }\n\n  private receiveLiveCandle(kline: any) {\n    var point = [\n      kline.t,\n      parseFloat(kline.o),\n      parseFloat(kline.h),\n      parseFloat(kline.l),\n      parseFloat(kline.c)\n    ];\n    this.binanceOhlcData[this.binanceOhlcData.length - 1] = point;\n    this.applyBinanceSeries();\n  }\n\n  private applyBinanceSeries() {\n    if (!this.binanceChart || !this.binanceChart.series) {\n      return;\n    }\n    this.binanceChart.series[0].setData(this.binanceOhlcData.slice(0), false);\n    this.binanceChart.series[1].setData(this.calculateMovingAverage(7), false);\n    this.binanceChart.series[2].setData(this.calculateMovingAverage(25), false);\n    this.binanceChart.series[3].setData(this.calculateMovingAverage(99), false);\n    this.binanceChart.series[4].setData(this.binanceVolumeData.slice(0), false);\n    this.binanceChart.redraw();\n  }\n\n  private calculateMovingAverage(period: number) {\n    var result: any[] = [];\n    var sum = 0;\n    for (var i = 0; i < this.binanceOhlcData.length; i++) {\n      sum += this.binanceOhlcData[i][4];\n      if (i >= period) {\n        sum -= this.binanceOhlcData[i - period][4];\n      }\n      if (i >= period - 1) {\n        result.push([this.binanceOhlcData[i][0], sum / period]);\n      }\n    }\n    return result;\n  }\n\n  private disconnectBinanceSocket() {\n    if (this.binanceSocket) {\n      this.binanceSocket.close();\n      this.binanceSocket = null;\n    }\n  }\n\n  private createBinanceOptions() {\n    return {\n      chart: { height: 560, backgroundColor: '#ffffff', plotBackgroundColor: '#ffffff' },\n      title: { text: this.binanceSymbol + ' live candles' },\n      rangeSelector: { enabled: false },\n      navigator: { enabled: false },\n      scrollbar: { enabled: false },\n      yAxis: [{ height: '68%' }, { top: '73%', height: '22%', offset: 0 }],\n      plotOptions: {\n        candlestick: {\n          color: '#f6465d',\n          upColor: '#02c076',\n          lineColor: '#f6465d',\n          upLineColor: '#02c076'\n        },\n        series: { animation: false, turboThreshold: 0 }\n      },\n      series: [\n        { type: 'candlestick', name: 'Price', data: [] },\n        { type: 'line', name: 'MA(7)', data: [], color: '#f5d300' },\n        { type: 'line', name: 'MA(25)', data: [], color: '#ff4ec9' },\n        { type: 'line', name: 'MA(99)', data: [], color: '#8e44ad' },\n        { type: 'column', name: 'Volume', data: [], yAxis: 1 }\n      ]\n    };\n  }\n}`;\n  binanceTutorialScss = `.live-market-card {\n  padding: 18px;\n  border: 1px solid #d9e5ee;\n  border-radius: 8px;\n  background: #fff;\n}\n\n.market-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n  margin-bottom: 12px;\n}\n\nbutton {\n  min-height: 32px;\n  padding: 0 12px;\n  border: 1px solid #d0d5dd;\n  border-radius: 6px;\n  background: #fff;\n  color: #344054;\n  cursor: pointer;\n}\n\nchart {\n  display: block;\n  width: 100%;\n  min-height: 560px;\n}`;\n\n  ngOnInit() {\n    this.readRoute();\n    this.readInitialBinanceTheme();\n    this.binanceOptions = this.createBinanceOptions();\n    this.dynamicExamples = this.createDynamicMarketExamples();\n\n    if (this.viewMode === 'dynamic') {\n      this.loadBinanceHistory();\n      this.loadMarketTickerSnapshot();\n      this.marketSnapshotTimer = setInterval(() => this.loadMarketTickerSnapshot(false), 20000);\n      this.loadCryptoTreemapSnapshot();\n      this.cryptoTreemapTimer = setInterval(() => this.loadCryptoTreemapSnapshot(false), 60000);\n      this.connectMarketTickerStream();\n    }\n  }\n\n  ngOnDestroy() {\n    this.disconnectBinanceSocket();\n    this.disconnectMarketTickerStream();\n    if (this.dynamicRefreshTimer) {\n      clearTimeout(this.dynamicRefreshTimer);\n      this.dynamicRefreshTimer = null;\n    }\n    if (this.marketSnapshotTimer) {\n      clearInterval(this.marketSnapshotTimer);\n      this.marketSnapshotTimer = null;\n    }\n    if (this.cryptoTreemapTimer) {\n      clearInterval(this.cryptoTreemapTimer);\n      this.cryptoTreemapTimer = null;\n    }\n    this.dynamicCharts = {};\n  }\n\n  private readRoute() {\n    var path = window.location && window.location.pathname ? window.location.pathname : '/';\n    this.viewMode = path.indexOf('/static') >= 0 ? 'static' : 'dynamic';\n  }\n\n  onBinanceChartCreate(chart: any) {\n    this.binanceChart = chart;\n    this.applyBinanceSeries();\n  }\n\n  selectBinanceSymbol(symbol: string) {\n    if (this.binanceSymbol === symbol) {\n      return;\n    }\n\n    this.binanceSymbol = symbol;\n    this.loadBinanceHistory();\n  }\n\n  selectBinanceInterval(interval: string) {\n    if (this.binanceInterval === interval) {\n      return;\n    }\n\n    this.binanceInterval = interval;\n    this.loadBinanceHistory();\n  }\n\n  selectBinanceTheme(theme: string) {\n    if (this.binanceTheme === theme) {\n      return;\n    }\n\n    this.binanceTheme = theme;\n    this.binanceOptions = this.createBinanceOptions();\n\n    if (this.binanceChart && this.binanceChart.update) {\n      this.binanceChart.update(this.binanceOptions, false);\n      this.applyBinanceSeries();\n    }\n  }\n\n  reloadBinanceChart() {\n    this.loadBinanceHistory();\n  }\n\n  private loadBinanceHistory() {\n    this.disconnectBinanceSocket();\n    this.binanceOhlcData = [];\n    this.binanceVolumeData = [];\n    this.binanceCandleCount = 0;\n    this.binanceLastCandle = null;\n    this.binanceStatus = 'Loading REST candles for ' + this.binanceSymbol + ' ' + this.binanceInterval + '...';\n    this.binanceSocketStatus = 'Waiting for REST history';\n    this.applyBinanceSeries();\n    this.loadBinanceHistoryFromHost(0);\n  }\n\n  private readInitialBinanceTheme() {\n    var search = window.location && window.location.search ? window.location.search : '';\n    if (search.indexOf('theme=dark') !== -1) {\n      this.binanceTheme = 'dark';\n    }\n  }\n\n  private loadMarketTickerSnapshot(showLoading?: boolean) {\n    if (this.marketSnapshotLoading) {\n      return;\n    }\n\n    var symbolsParam = encodeURIComponent(JSON.stringify(this.marketSymbols));\n    var url = this.maskApiRestBaseUrl + '/api/v3/ticker/24hr?symbols=' + symbolsParam;\n    var xhr = new XMLHttpRequest();\n\n    this.marketSnapshotLoading = true;\n    this.marketRestUrl = url;\n    if (showLoading !== false) {\n      this.marketStatus = 'Loading tracked 24hr ticker snapshot...';\n    }\n\n    xhr.onreadystatechange = () => {\n      if (xhr.readyState !== 4) {\n        return;\n      }\n\n      this.marketSnapshotLoading = false;\n\n      if (xhr.status >= 200 && xhr.status < 300) {\n        try {\n          var tickers = JSON.parse(xhr.responseText);\n          for (var i = 0; i < tickers.length; i++) {\n            this.receiveMarketTicker(this.normalizeRestTicker(tickers[i]));\n          }\n          this.marketStatus = 'REST ticker snapshot loaded';\n          this.refreshDynamicExamples();\n        } catch (error) {\n          this.marketStatus = 'REST ticker parse failed';\n        }\n      } else {\n        this.marketStatus = 'REST ticker snapshot failed';\n      }\n    };\n\n    xhr.onerror = () => {\n      this.marketSnapshotLoading = false;\n      this.marketStatus = 'REST ticker snapshot failed';\n    };\n    xhr.open('GET', url, true);\n    xhr.send();\n  }\n\n  private loadCryptoTreemapSnapshot(showLoading?: boolean) {\n    if (this.cryptoTreemapLoading) {\n      return;\n    }\n\n    var xhr = new XMLHttpRequest();\n\n    this.cryptoTreemapLoading = true;\n    if (showLoading !== false) {\n      this.cryptoTreemapStatus = 'Loading CoinGecko top 50 market cap snapshot...';\n    }\n\n    xhr.onreadystatechange = () => {\n      if (xhr.readyState !== 4) {\n        return;\n      }\n\n      this.cryptoTreemapLoading = false;\n\n      if (xhr.status >= 200 && xhr.status < 300) {\n        try {\n          var coins = JSON.parse(xhr.responseText);\n          var rows: any[] = [];\n          for (var i = 0; i < coins.length; i++) {\n            rows.push(this.normalizeCoinGeckoCoin(coins[i]));\n          }\n          this.cryptoTreemapRows = rows;\n          this.cryptoTreemapStatus = 'CoinGecko market cap snapshot updated: top ' + rows.length;\n          this.refreshDynamicExamples();\n        } catch (error) {\n          this.cryptoTreemapStatus = 'CoinGecko market cap parse failed';\n        }\n      } else {\n        this.cryptoTreemapStatus = 'CoinGecko market cap snapshot failed';\n      }\n    };\n\n    xhr.onerror = () => {\n      this.cryptoTreemapLoading = false;\n      this.cryptoTreemapStatus = 'CoinGecko market cap snapshot failed';\n    };\n    xhr.open('GET', this.cryptoTreemapUrl, true);\n    xhr.send();\n  }\n\n  private connectMarketTickerStream() {\n    this.disconnectMarketTickerStream();\n    var streams: string[] = [];\n\n    for (var i = 0; i < this.marketSymbols.length; i++) {\n      streams.push(this.marketSymbols[i].toLowerCase() + '@miniTicker');\n    }\n\n    this.marketWsUrl = this.maskApiWsBaseUrl + '/stream?streams=' + streams.join('/');\n    this.marketStatus = 'Connecting tracked market miniTicker stream...';\n\n    try {\n      this.marketSocket = new WebSocket(this.marketWsUrl);\n    } catch (error) {\n      this.marketStatus = 'Market WebSocket failed to start';\n      return;\n    }\n\n    this.marketSocket.onopen = () => {\n      this.marketStatus = 'Live tracked market miniTicker connected';\n    };\n\n    this.marketSocket.onclose = () => {\n      this.marketStatus = 'Market WebSocket disconnected';\n    };\n\n    this.marketSocket.onerror = () => {\n      this.marketStatus = 'Market WebSocket error';\n    };\n\n    this.marketSocket.onmessage = (message: any) => {\n      try {\n        var payload = JSON.parse(message.data);\n        var data = payload && payload.data ? payload.data : payload;\n        if (data && data.length !== undefined) {\n          for (var i = 0; i < data.length; i++) {\n            this.receiveMiniTickerPayload(data[i]);\n          }\n        } else {\n          this.receiveMiniTickerPayload(data);\n        }\n        this.marketStatus = 'Live market miniTicker update: ' + new Date().toLocaleTimeString();\n        this.scheduleDynamicRefresh();\n      } catch (error) {\n        this.marketStatus = 'Market WebSocket parse error';\n      }\n    };\n  }\n\n  private disconnectMarketTickerStream() {\n    if (!this.marketSocket) {\n      return;\n    }\n\n    this.marketSocket.onopen = null;\n    this.marketSocket.onclose = null;\n    this.marketSocket.onerror = null;\n    this.marketSocket.onmessage = null;\n    this.marketSocket.close();\n    this.marketSocket = null;\n  }\n\n  private normalizeRestTicker(ticker: any) {\n    return {\n      symbol: ticker.symbol,\n      price: parseFloat(ticker.lastPrice),\n      open: parseFloat(ticker.openPrice),\n      high: parseFloat(ticker.highPrice),\n      low: parseFloat(ticker.lowPrice),\n      volume: parseFloat(ticker.volume),\n      quoteVolume: parseFloat(ticker.quoteVolume),\n      changePercent: parseFloat(ticker.priceChangePercent)\n    };\n  }\n\n  private normalizeCoinGeckoCoin(coin: any) {\n    return {\n      name: this.safeTreemapText(coin.name || ''),\n      symbol: this.safeTreemapText((coin.symbol || '').toUpperCase()),\n      price: parseFloat(coin.current_price),\n      marketCap: parseFloat(coin.market_cap),\n      changePercent: parseFloat(coin.price_change_percentage_24h)\n    };\n  }\n\n  private safeTreemapText(value: string) {\n    return String(value || '')\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&#39;');\n  }\n\n  private normalizeMiniTicker(ticker: any) {\n    var open = parseFloat(ticker.o);\n    var close = parseFloat(ticker.c);\n    return {\n      symbol: ticker.s,\n      price: close,\n      open: open,\n      high: parseFloat(ticker.h),\n      low: parseFloat(ticker.l),\n      volume: parseFloat(ticker.v),\n      quoteVolume: parseFloat(ticker.q),\n      changePercent: open ? (close - open) / open * 100 : 0\n    };\n  }\n\n  private receiveMiniTickerPayload(data: any) {\n    var ticker = this.normalizeMiniTicker(data);\n\n    if (this.isTrackedMarketSymbol(ticker.symbol)) {\n      this.receiveMarketTicker(ticker);\n    }\n  }\n\n  private receiveMarketTicker(ticker: any) {\n    if (!ticker || !ticker.symbol) {\n      return;\n    }\n\n    this.marketTickers[ticker.symbol] = ticker;\n    if (!this.marketHistory[ticker.symbol]) {\n      this.marketHistory[ticker.symbol] = [];\n    }\n\n    this.marketHistory[ticker.symbol].push([Date.now(), ticker.price]);\n    while (this.marketHistory[ticker.symbol].length > 60) {\n      this.marketHistory[ticker.symbol].shift();\n    }\n  }\n\n  private isTrackedMarketSymbol(symbol: string) {\n    for (var i = 0; i < this.marketSymbols.length; i++) {\n      if (this.marketSymbols[i] === symbol) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  private scheduleDynamicRefresh() {\n    if (this.dynamicRefreshQueued) {\n      return;\n    }\n\n    this.dynamicRefreshQueued = true;\n    this.dynamicRefreshTimer = setTimeout(() => {\n      this.dynamicRefreshQueued = false;\n      this.dynamicRefreshTimer = null;\n      this.refreshDynamicExamples();\n    }, 900);\n  }\n\n  private refreshDynamicExamples() {\n    this.updateAllDynamicCharts();\n  }\n\n  private loadBinanceHistoryFromHost(index: number) {\n    if (index >= this.binanceRestHosts.length) {\n      this.binanceStatus = 'REST history failed on both Binance endpoints.';\n      this.binanceSocketStatus = 'WebSocket not started';\n      return;\n    }\n\n    var url = this.binanceRestHosts[index] +\n      '?symbol=' + encodeURIComponent(this.binanceSymbol) +\n      '&interval=' + encodeURIComponent(this.binanceInterval) +\n      '&limit=300';\n    var xhr = new XMLHttpRequest();\n\n    xhr.onreadystatechange = () => {\n      if (xhr.readyState !== 4) {\n        return;\n      }\n\n      if (xhr.status >= 200 && xhr.status < 300) {\n        try {\n          var candles = JSON.parse(xhr.responseText);\n          this.receiveBinanceHistory(candles, url);\n        } catch (error) {\n          this.loadBinanceHistoryFromHost(index + 1);\n        }\n        return;\n      }\n\n      this.loadBinanceHistoryFromHost(index + 1);\n    };\n\n    xhr.onerror = () => this.loadBinanceHistoryFromHost(index + 1);\n    xhr.open('GET', url, true);\n    xhr.send();\n  }\n\n  private receiveBinanceHistory(candles: any[], url: string) {\n    var ohlc: any[] = [];\n    var volume: any[] = [];\n\n    for (var i = 0; i < candles.length; i++) {\n      var candle = candles[i];\n      var point = this.toOhlcPoint(candle);\n      ohlc.push(point);\n      volume.push({\n        x: point[0],\n        y: parseFloat(candle[5]),\n        color: point[4] >= point[1] ? '#02c076' : '#f6465d'\n      });\n    }\n\n    this.binanceOhlcData = ohlc;\n    this.binanceVolumeData = volume;\n    this.binanceRestUrl = url;\n    this.binanceCandleCount = ohlc.length;\n    this.binanceLastCandle = this.createCandleMeta(ohlc[ohlc.length - 1]);\n    this.binanceStatus = 'REST candles loaded from ' + this.shortUrl(url);\n    this.applyBinanceSeries();\n    this.connectBinanceSocket();\n  }\n\n  private connectBinanceSocket() {\n    this.disconnectBinanceSocket();\n    this.binanceWsUrl = this.binanceWsBaseUrl +\n      this.binanceSymbol.toLowerCase() +\n      '@kline_' +\n      this.binanceInterval;\n    this.binanceSocketStatus = 'Connecting to ' + this.binanceWsUrl;\n\n    try {\n      this.binanceSocket = new WebSocket(this.binanceWsUrl);\n    } catch (error) {\n      this.binanceSocketStatus = 'WebSocket failed to start';\n      return;\n    }\n\n    this.binanceSocket.onopen = () => {\n      this.binanceSocketStatus = 'Live WebSocket connected';\n    };\n\n    this.binanceSocket.onclose = () => {\n      this.binanceSocketStatus = 'WebSocket disconnected';\n    };\n\n    this.binanceSocket.onerror = () => {\n      this.binanceSocketStatus = 'WebSocket error';\n    };\n\n    this.binanceSocket.onmessage = (message: any) => {\n      try {\n        var payload = JSON.parse(message.data);\n        if (payload && payload.k) {\n          this.receiveBinanceLiveCandle(payload.k);\n        }\n      } catch (error) {\n        this.binanceSocketStatus = 'WebSocket parse error';\n      }\n    };\n  }\n\n  private disconnectBinanceSocket() {\n    if (!this.binanceSocket) {\n      return;\n    }\n\n    this.binanceSocket.onopen = null;\n    this.binanceSocket.onclose = null;\n    this.binanceSocket.onerror = null;\n    this.binanceSocket.onmessage = null;\n    this.binanceSocket.close();\n    this.binanceSocket = null;\n  }\n\n  private receiveBinanceLiveCandle(kline: any) {\n    var point = [\n      kline.t,\n      parseFloat(kline.o),\n      parseFloat(kline.h),\n      parseFloat(kline.l),\n      parseFloat(kline.c)\n    ];\n    var volumePoint = {\n      x: point[0],\n      y: parseFloat(kline.v),\n      color: point[4] >= point[1] ? '#02c076' : '#f6465d'\n    };\n\n    this.upsertTimePoint(this.binanceOhlcData, point);\n    this.upsertTimePoint(this.binanceVolumeData, volumePoint);\n    this.trimBinanceData();\n    this.binanceCandleCount = this.binanceOhlcData.length;\n    this.binanceLastCandle = this.createCandleMeta(point);\n    this.binanceSocketStatus = 'Live WebSocket update: ' + new Date().toLocaleTimeString();\n    this.applyBinanceSeries();\n  }\n\n  private upsertTimePoint(target: any[], point: any) {\n    var pointTime = point.x || point[0];\n    var last = target.length ? target[target.length - 1] : null;\n    var lastTime = last ? (last.x || last[0]) : null;\n\n    if (last && lastTime === pointTime) {\n      target[target.length - 1] = point;\n      return;\n    }\n\n    target.push(point);\n  }\n\n  private trimBinanceData() {\n    while (this.binanceOhlcData.length > 300) {\n      this.binanceOhlcData.shift();\n    }\n\n    while (this.binanceVolumeData.length > 300) {\n      this.binanceVolumeData.shift();\n    }\n  }\n\n  private applyBinanceSeries() {\n    if (!this.binanceChart || !this.binanceChart.series || this.binanceChart.series.length < 5) {\n      return;\n    }\n\n    this.binanceChart.setTitle(\n      { text: this.binanceSymbol + ' live candles' },\n      { text: 'REST history + Binance WebSocket updates (' + this.binanceInterval + ')' },\n      false\n    );\n    this.binanceChart.series[0].setData(this.binanceOhlcData.slice(0), false);\n    this.binanceChart.series[1].setData(this.calculateMovingAverage(7), false);\n    this.binanceChart.series[2].setData(this.calculateMovingAverage(25), false);\n    this.binanceChart.series[3].setData(this.calculateMovingAverage(99), false);\n    this.binanceChart.series[4].setData(this.binanceVolumeData.slice(0), false);\n    this.binanceChart.redraw();\n  }\n\n  private toOhlcPoint(candle: any[]) {\n    return [\n      parseInt(candle[0], 10),\n      parseFloat(candle[1]),\n      parseFloat(candle[2]),\n      parseFloat(candle[3]),\n      parseFloat(candle[4])\n    ];\n  }\n\n  private createCandleMeta(point: any[]) {\n    if (!point) {\n      return null;\n    }\n\n    var open = point[1];\n    var close = point[4];\n    var change = close - open;\n    var changePercent = open ? change / open * 100 : 0;\n\n    return {\n      time: point[0],\n      open: open,\n      high: point[2],\n      low: point[3],\n      close: close,\n      change: change,\n      changePercent: changePercent\n    };\n  }\n\n  private calculateMovingAverage(period: number) {\n    var result: any[] = [];\n    var sum = 0;\n\n    for (var i = 0; i < this.binanceOhlcData.length; i++) {\n      sum += this.binanceOhlcData[i][4];\n\n      if (i >= period) {\n        sum -= this.binanceOhlcData[i - period][4];\n      }\n\n      if (i >= period - 1) {\n        result.push([\n          this.binanceOhlcData[i][0],\n          parseFloat((sum / period).toFixed(4))\n        ]);\n      }\n    }\n\n    return result;\n  }\n\n  private shortUrl(url: string) {\n    return url.replace('https://', '').replace('wss://', '');\n  }\n\n  formatPrice(value: number) {\n    if (value === null || typeof value === 'undefined') {\n      return '--';\n    }\n\n    return value.toFixed(value >= 1000 ? 2 : 4);\n  }\n\n  formatPercent(value: number) {\n    if (value === null || typeof value === 'undefined') {\n      return '--';\n    }\n\n    return (value >= 0 ? '+' : '') + value.toFixed(2) + '%';\n  }\n\n  private withTutorial(example: ChartExample): ChartExample {\n    var optionsName = this.extractOptionsName(example.html);\n    var className = this.toComponentClassName(example.title);\n    var wrappedHtml = this.wrapTutorialHtml(example.html);\n\n    example.tutorialHtml = wrappedHtml;\n    example.tutorialTs = `import { Component } from '@angular/core';\n\n@Component({\n  selector: '${this.toSelectorName(example.title)}',\n  templateUrl: './${this.toFileName(example.title)}.component.html',\n  styleUrls: ['./${this.toFileName(example.title)}.component.css']\n})\nexport class ${className} {\n  ${optionsName}: any = ${this.stringifyOptions(example.options)};\n\n  onCreate(chart: any) {\n    console.log('${example.title} created', chart.series.length);\n  }\n}`;\n    example.tutorialScss = this.defaultTutorialScss(example.options && example.options.chart && example.options.chart.height ? example.options.chart.height : 320);\n\n    return example;\n  }\n\n  private wrapTutorialHtml(html: string) {\n    return `<div class=\"chart-shell\">\n  ${html}\n</div>`;\n  }\n\n  private extractOptionsName(html: string) {\n    var match = html.match(/\\[options\\]=\"([^\"]+)\"/);\n    return match && match[1] ? match[1] : 'chartOptions';\n  }\n\n  private stringifyOptions(options: any) {\n    return JSON.stringify(options, null, 2)\n      .replace(/\"([^\"]+)\":/g, '$1:')\n      .replace(/\"/g, '\\'');\n  }\n\n  private toComponentClassName(title: string) {\n    var name = this.toWords(title).join('');\n    if (/^[0-9]/.test(name)) {\n      name = 'Chart' + name;\n    }\n    return name + 'ExampleComponent';\n  }\n\n  private toSelectorName(title: string) {\n    return 'chart-' + this.toFileName(title);\n  }\n\n  private toFileName(title: string) {\n    return this.toWords(title).join('-').toLowerCase();\n  }\n\n  private toWords(value: string) {\n    var words = value.replace(/[^a-zA-Z0-9]+/g, ' ').split(' ');\n    var clean: string[] = [];\n\n    for (var i = 0; i < words.length; i++) {\n      if (words[i]) {\n        clean.push(words[i].charAt(0).toUpperCase() + words[i].slice(1));\n      }\n    }\n\n    return clean.length ? clean : ['Chart'];\n  }\n\n  private defaultTutorialScss(height: number) {\n    return `.chart-shell {\n  width: 100%;\n  padding: 16px;\n  border: 1px solid #d9e5ee;\n  border-radius: 8px;\n  background: #fff;\n  box-sizing: border-box;\n}\n\nchart {\n  display: block;\n  width: 100%;\n  min-height: ${height}px;\n}`;\n  }\n\n  private createDynamicMarketExamples() {\n    var examples: ChartExample[] = [\n      this.makeDynamicExample('Live crypto treemap', 'Top 50 coins sized by market cap and colored by 24h change.', 'liveTreemapOptions', this.createLiveTreemapOptions()),\n      this.makeDynamicExample('Live price move line', 'Normalized live price movement from Binance miniTicker WebSocket.', 'liveLineOptions', this.createLiveLineOptions()),\n      this.makeDynamicExample('Live price heartbeat spline', 'Heartbeat-style normalized pulse from live price and change data.', 'liveSplineOptions', this.createLiveSplineOptions()),\n      this.makeDynamicExample('Live quote volume area', 'Area comparison using live quote volume.', 'liveAreaOptions', this.createLiveAreaOptions()),\n      this.makeDynamicExample('Live quote volume areaspline', 'Smooth area chart from live quote volume.', 'liveAreasplineOptions', this.createLiveAreasplineOptions()),\n      this.makeDynamicExample('Live change column', '24h percentage change updated by WebSocket.', 'liveColumnOptions', this.createLiveColumnOptions()),\n      this.makeDynamicExample('Live volume bar', 'Horizontal bar chart from live quote volume.', 'liveBarOptions', this.createLiveBarOptions()),\n      this.makeDynamicExample('Live stacked volume', 'Stacked columns splitting volume into base and quote-derived views.', 'liveStackedOptions', this.createLiveStackedOptions()),\n      this.makeDynamicExample('Live volume pie', 'Volume share across tracked symbols.', 'livePieOptions', this.createLivePieOptions()),\n      this.makeDynamicExample('Live volume donut', 'Donut variation of the same live volume share.', 'liveDonutOptions', this.createLiveDonutOptions()),\n      this.makeDynamicExample('Live price scatter', 'Price versus quote volume for the tracked symbols.', 'liveScatterOptions', this.createLiveScatterOptions()),\n      this.makeDynamicExample('Live change bubble', 'Change percent, price and volume in a bubble chart.', 'liveBubbleOptions', this.createLiveBubbleOptions()),\n      this.makeDynamicExample('Live combo chart', 'Column volume plus spline change percent.', 'liveComboOptions', this.createLiveComboOptions()),\n      this.makeDynamicExample('Live polar strength', 'Market strength rendered in polar/radar form.', 'livePolarOptions', this.createLivePolarOptions()),\n      this.makeDynamicExample('Live BNB change gauge', 'Gauge driven by BNBUSDT 24h change.', 'liveGaugeOptions', this.createLiveGaugeOptions()),\n      this.makeDynamicExample('Live market score solid gauge', 'Solid gauge score from the tracked symbols.', 'liveSolidGaugeOptions', this.createLiveSolidGaugeOptions()),\n      this.makeDynamicExample('Live market heatmap', 'Heatmap built from change and volatility metrics.', 'liveHeatmapOptions', this.createLiveHeatmapOptions()),\n      this.makeDynamicExample('Live liquidity funnel', 'Funnel sorted from highest to lowest quote volume.', 'liveFunnelOptions', this.createLiveFunnelOptions()),\n      this.makeDynamicExample('Live 3D volume columns', '3D columns from live quote volume.', 'live3dColumnOptions', this.createLive3dColumnOptions())\n    ];\n\n    for (var i = 0; i < examples.length; i++) {\n      examples[i] = this.withTutorial(examples[i]);\n    }\n\n    return examples;\n  }\n\n  private makeDynamicExample(title: string, description: string, optionsName: string, options: any): ChartExample {\n    return {\n      key: optionsName,\n      title: title,\n      description: description,\n      options: options,\n      html: '<chart [options]=\"' + optionsName + '\"></chart>'\n    };\n  }\n\n  private marketRows() {\n    var rows: any[] = [];\n\n    for (var i = 0; i < this.marketSymbols.length; i++) {\n      var symbol = this.marketSymbols[i];\n      rows.push(this.marketTickers[symbol] || this.fallbackTicker(symbol, i));\n    }\n\n    return rows;\n  }\n\n  private fallbackTicker(symbol: string, index: number) {\n    var base = [67000, 3600, 660, 155, 2.2, 0.65, 0.16, 0.11][index] || (10 + index);\n    var change = [1.2, -0.8, 0.4, 2.1, -1.1, 0.7, 1.8, -0.3][index] || 0;\n    return {\n      symbol: symbol,\n      price: base,\n      open: base * (1 - change / 100),\n      high: base * 1.02,\n      low: base * 0.98,\n      volume: 1000000 + index * 120000,\n      quoteVolume: 900000000 - index * 70000000,\n      changePercent: change\n    };\n  }\n\n  private cryptoTreemapRowsForChart() {\n    if (this.cryptoTreemapRows.length) {\n      return this.cryptoTreemapRows;\n    }\n\n    return [\n      { name: 'Bitcoin', symbol: 'BTC', price: 67516, marketCap: 1352661264706, changePercent: -5.67 },\n      { name: 'Ethereum', symbol: 'ETH', price: 1922.75, marketCap: 232156210067, changePercent: -3.27 },\n      { name: 'Tether', symbol: 'USDT', price: 0.998454, marketCap: 187951404193, changePercent: -0.01 },\n      { name: 'BNB', symbol: 'BNB', price: 665.54, marketCap: 89722947955, changePercent: -3.06 },\n      { name: 'XRP', symbol: 'XRP', price: 1.23, marketCap: 76555364639, changePercent: -4.94 },\n      { name: 'USD Coin', symbol: 'USDC', price: 0.999595, marketCap: 75837344337, changePercent: -0.01 },\n      { name: 'Solana', symbol: 'SOL', price: 76.77, marketCap: 44417058835, changePercent: -5.08 },\n      { name: 'TRON', symbol: 'TRX', price: 0.337746, marketCap: 32024356142, changePercent: -2.23 }\n    ];\n  }\n\n  private marketLabels(rows: any[]) {\n    var labels: string[] = [];\n    for (var i = 0; i < rows.length; i++) {\n      labels.push(rows[i].symbol.replace('USDT', ''));\n    }\n    return labels;\n  }\n\n  private marketValues(rows: any[], field: string, divisor: number) {\n    var values: number[] = [];\n    for (var i = 0; i < rows.length; i++) {\n      values.push(parseFloat(((rows[i][field] || 0) / divisor).toFixed(4)));\n    }\n    return values;\n  }\n\n  private marketPieData(rows: any[]) {\n    var data: any[] = [];\n    for (var i = 0; i < rows.length; i++) {\n      data.push([rows[i].symbol.replace('USDT', ''), parseFloat((rows[i].quoteVolume / 1000000).toFixed(2))]);\n    }\n    return data;\n  }\n\n  private marketHistorySeries() {\n    var series: any[] = [];\n    for (var i = 0; i < this.marketSymbols.length; i++) {\n      var symbol = this.marketSymbols[i];\n      var history = this.marketHistory[symbol] && this.marketHistory[symbol].length ? this.marketHistory[symbol] : [[Date.now(), this.fallbackTicker(symbol, i).price]];\n      series.push({\n        name: symbol.replace('USDT', ''),\n        data: history.slice(0),\n        marker: { enabled: false }\n      });\n    }\n    return series;\n  }\n\n  private marketMoveSeries() {\n    var rows = this.marketRows().slice(0, 6);\n    var now = Date.now();\n    var pointCount = 48;\n    var series: any[] = [];\n\n    for (var i = 0; i < rows.length; i++) {\n      var row = rows[i];\n      var symbol = row.symbol.replace('USDT', '');\n      var open = row.open || row.price || 1;\n      var liveMove = open ? ((row.price || open) - open) / open * 100 : 0;\n      var change = row.changePercent || liveMove;\n      var data: any[] = [];\n\n      for (var pointIndex = 0; pointIndex < pointCount; pointIndex++) {\n        var age = pointCount - pointIndex;\n        var progress = pointIndex / (pointCount - 1);\n        var x = now - age * 1000;\n        var drift = change * progress;\n        var wave = Math.sin((pointIndex + i * 4) / 5) * (0.35 + i * 0.04);\n        var microMove = Math.cos((pointIndex + i) / 2.7) * 0.16;\n        var value = drift + wave + microMove;\n\n        data.push([x, parseFloat(value.toFixed(3))]);\n      }\n\n      series.push({\n        name: symbol + ' move',\n        data: data,\n        marker: { enabled: false },\n        lineWidth: i === 0 ? 3 : 2\n      });\n    }\n\n    return series;\n  }\n\n  private marketHeartbeatSeries() {\n    var rows = this.marketRows().slice(0, 4);\n    var now = Date.now();\n    var pointCount = 48;\n    var series: any[] = [];\n\n    for (var i = 0; i < rows.length; i++) {\n      var row = rows[i];\n      var symbol = row.symbol.replace('USDT', '');\n      var baseChange = row.changePercent || 0;\n      var open = row.open || row.price || 1;\n      var priceDrift = open ? ((row.price || open) - open) / open * 100 : 0;\n      var data: any[] = [];\n\n      for (var pointIndex = 0; pointIndex < pointCount; pointIndex++) {\n        var age = pointCount - pointIndex;\n        var x = now - age * 1000;\n        var rhythm = Math.sin((pointIndex + i * 3) / 2.3) * (1.4 + i * 0.22);\n        var breath = Math.sin((pointIndex + i) / 7) * 0.75;\n        var beatPosition = (pointIndex + i * 2) % 12;\n        var pulse = beatPosition === 0 ? 8.5 : (beatPosition === 1 ? 4.8 : (beatPosition === 2 ? -2.4 : 0));\n        var marketLean = baseChange * 0.9 + priceDrift * 0.65;\n        var value = 100 + marketLean + rhythm + breath + pulse;\n\n        data.push([x, parseFloat(value.toFixed(2))]);\n      }\n\n      series.push({\n        name: symbol + ' pulse',\n        data: data,\n        marker: { enabled: false },\n        lineWidth: i === 0 ? 3 : 2\n      });\n    }\n\n    return series;\n  }\n\n  private marketScore(rows: any[]) {\n    var sum = 0;\n    for (var i = 0; i < rows.length; i++) {\n      sum += rows[i].changePercent;\n    }\n    var avg = rows.length ? sum / rows.length : 0;\n    var score = 50 + avg * 5;\n    return Math.max(0, Math.min(100, parseFloat(score.toFixed(2))));\n  }\n\n  private createLiveLineOptions() {\n    return {\n      chart: { type: 'line', height: 320 },\n      title: { text: 'Live price move line' },\n      subtitle: { text: this.marketStatus },\n      xAxis: { type: 'datetime' },\n      yAxis: {\n        title: { text: 'Move from open, %' },\n        plotLines: [{ value: 0, color: '#94a3b8', width: 1, dashStyle: 'ShortDash', zIndex: 1 }]\n      },\n      tooltip: {\n        shared: true,\n        valueSuffix: '%',\n        valueDecimals: 3\n      },\n      plotOptions: {\n        line: {\n          animation: false,\n          marker: { enabled: false }\n        }\n      },\n      series: this.marketMoveSeries()\n    };\n  }\n\n  private createLiveSplineOptions() {\n    return {\n      chart: { type: 'spline', height: 320 },\n      title: { text: 'Live price heartbeat spline' },\n      subtitle: { text: this.marketStatus },\n      xAxis: {\n        type: 'datetime',\n        tickPixelInterval: 90\n      },\n      yAxis: {\n        title: { text: 'Normalized pulse' },\n        plotLines: [{ value: 100, color: '#94a3b8', width: 1, dashStyle: 'ShortDash', zIndex: 1 }]\n      },\n      tooltip: {\n        shared: true,\n        valueSuffix: ' pulse',\n        valueDecimals: 2\n      },\n      plotOptions: {\n        spline: {\n          animation: false,\n          marker: { enabled: false }\n        }\n      },\n      series: this.marketHeartbeatSeries()\n    };\n  }\n\n  private createLiveAreaOptions() {\n    var rows = this.marketRows();\n    return {\n      chart: { type: 'area', height: 320 },\n      title: { text: 'Live quote volume area' },\n      xAxis: { categories: this.marketLabels(rows) },\n      yAxis: { title: { text: 'Quote volume, millions' } },\n      series: [{ name: 'Quote volume', data: this.marketValues(rows, 'quoteVolume', 1000000) }]\n    };\n  }\n\n  private createLiveAreasplineOptions() {\n    var options = this.createLiveAreaOptions();\n    options.chart.type = 'areaspline';\n    options.title.text = 'Live quote volume areaspline';\n    return options;\n  }\n\n  private createLiveColumnOptions() {\n    var rows = this.marketRows();\n    return {\n      chart: { type: 'column', height: 320 },\n      title: { text: 'Live 24h change column' },\n      xAxis: { categories: this.marketLabels(rows) },\n      yAxis: { title: { text: 'Change %' } },\n      series: [{ name: '24h change %', data: this.marketValues(rows, 'changePercent', 1) }]\n    };\n  }\n\n  private createLiveBarOptions() {\n    var rows = this.marketRows();\n    return {\n      chart: { type: 'bar', height: 320 },\n      title: { text: 'Live volume bar' },\n      xAxis: { categories: this.marketLabels(rows) },\n      yAxis: { title: { text: 'Quote volume, millions' } },\n      series: [{ name: 'Quote volume', data: this.marketValues(rows, 'quoteVolume', 1000000) }]\n    };\n  }\n\n  private createLiveStackedOptions() {\n    var rows = this.marketRows();\n    return {\n      chart: { type: 'column', height: 320 },\n      title: { text: 'Live stacked volume' },\n      xAxis: { categories: this.marketLabels(rows) },\n      yAxis: { min: 0, title: { text: 'Volume score' }, stackLabels: { enabled: true } },\n      plotOptions: { column: { stacking: 'normal' } },\n      series: [\n        { name: 'Base volume', data: this.marketValues(rows, 'volume', 1000000) },\n        { name: 'Quote volume', data: this.marketValues(rows, 'quoteVolume', 100000000) }\n      ]\n    };\n  }\n\n  private createLivePieOptions() {\n    return {\n      chart: { type: 'pie', height: 320 },\n      title: { text: 'Live volume pie' },\n      series: [{ name: 'Quote volume', data: this.marketPieData(this.marketRows()) }]\n    };\n  }\n\n  private createLiveDonutOptions() {\n    var options: any = this.createLivePieOptions();\n    options.title.text = 'Live volume donut';\n    options.plotOptions = { pie: { innerSize: '55%' } };\n    return options;\n  }\n\n  private createLiveScatterOptions() {\n    var rows = this.marketRows();\n    var data: any[] = [];\n    for (var i = 0; i < rows.length; i++) {\n      data.push({\n        name: rows[i].symbol.replace('USDT', ''),\n        x: parseFloat(rows[i].changePercent.toFixed(4)),\n        y: parseFloat((rows[i].quoteVolume / 1000000).toFixed(4))\n      });\n    }\n    return {\n      chart: { type: 'scatter', zoomType: 'xy', height: 320 },\n      title: { text: 'Live price scatter' },\n      xAxis: { title: { text: '24h change %' } },\n      yAxis: { title: { text: 'Quote volume, millions' } },\n      series: [{ name: 'Symbols', data: data }]\n    };\n  }\n\n  private createLiveBubbleOptions() {\n    var rows = this.marketRows();\n    var data: any[] = [];\n    for (var i = 0; i < rows.length; i++) {\n      data.push({\n        name: rows[i].symbol.replace('USDT', ''),\n        x: parseFloat(rows[i].changePercent.toFixed(4)),\n        y: parseFloat(rows[i].price.toFixed(4)),\n        z: Math.max(10, parseFloat((rows[i].quoteVolume / 100000000).toFixed(4)))\n      });\n    }\n    return {\n      chart: { type: 'bubble', plotBorderWidth: 1, zoomType: 'xy', height: 320 },\n      title: { text: 'Live change bubble' },\n      xAxis: { title: { text: '24h change %' } },\n      yAxis: { title: { text: 'Price USDT' } },\n      series: [{ name: 'Symbols', data: data }]\n    };\n  }\n\n  private createLiveComboOptions() {\n    var rows = this.marketRows();\n    return {\n      chart: { height: 320 },\n      title: { text: 'Live combo chart' },\n      xAxis: { categories: this.marketLabels(rows) },\n      yAxis: [{ title: { text: 'Quote volume, millions' } }, { title: { text: 'Change %' }, opposite: true }],\n      series: [\n        { type: 'column', name: 'Quote volume', data: this.marketValues(rows, 'quoteVolume', 1000000) },\n        { type: 'spline', name: '24h change %', data: this.marketValues(rows, 'changePercent', 1), yAxis: 1 }\n      ]\n    };\n  }\n\n  private createLivePolarOptions() {\n    var rows = this.marketRows();\n    var data: number[] = [];\n    for (var i = 0; i < rows.length; i++) {\n      data.push(parseFloat((50 + rows[i].changePercent * 5).toFixed(2)));\n    }\n    return {\n      chart: { polar: true, type: 'line', height: 320 },\n      title: { text: 'Live polar strength' },\n      pane: { size: '80%' },\n      xAxis: { categories: this.marketLabels(rows), tickmarkPlacement: 'on', lineWidth: 0 },\n      yAxis: { gridLineInterpolation: 'polygon', lineWidth: 0, min: 0, max: 100 },\n      series: [{ name: 'Strength', data: data, pointPlacement: 'on' }]\n    };\n  }\n\n  private createLiveGaugeOptions() {\n    var ticker = this.marketTickers['BNBUSDT'] || this.fallbackTicker('BNBUSDT', 2);\n    return {\n      chart: { type: 'gauge', height: 320 },\n      title: { text: 'Live BNB change gauge' },\n      pane: { startAngle: -150, endAngle: 150 },\n      yAxis: { min: -10, max: 10, title: { text: '24h %' } },\n      series: [{ name: 'BNB change', data: [parseFloat(ticker.changePercent.toFixed(2))] }]\n    };\n  }\n\n  private createLiveSolidGaugeOptions() {\n    var score = this.marketScore(this.marketRows());\n    return {\n      chart: { type: 'solidgauge', height: 320 },\n      title: { text: 'Live market score solid gauge' },\n      pane: {\n        center: ['50%', '60%'],\n        size: '90%',\n        startAngle: -90,\n        endAngle: 90,\n        background: { backgroundColor: '#eef3f8', innerRadius: '60%', outerRadius: '100%', shape: 'arc' }\n      },\n      yAxis: {\n        min: 0,\n        max: 100,\n        stops: [[0.3, '#f6465d'], [0.55, '#f0b90b'], [0.75, '#02c076']],\n        lineWidth: 0,\n        tickWidth: 0,\n        minorTickInterval: null,\n        tickAmount: 2,\n        title: { text: null }\n      },\n      series: [{ name: 'Market score', data: [score] }]\n    };\n  }\n\n  private createLiveHeatmapOptions() {\n    var rows = this.marketRows();\n    var data: any[] = [];\n    for (var i = 0; i < rows.length; i++) {\n      data.push([i, 0, parseFloat(rows[i].changePercent.toFixed(2))]);\n      data.push([i, 1, parseFloat(((rows[i].high - rows[i].low) / rows[i].price * 100).toFixed(2))]);\n    }\n    return {\n      chart: { type: 'heatmap', height: 320 },\n      title: { text: 'Live market heatmap' },\n      xAxis: { categories: this.marketLabels(rows) },\n      yAxis: { categories: ['Change %', 'Range %'], title: null },\n      colorAxis: { min: -5, max: 5, minColor: '#f6465d', maxColor: '#02c076' },\n      series: [{ name: 'Metric', borderWidth: 1, data: data, dataLabels: { enabled: true, color: '#111' } }]\n    };\n  }\n\n  private createLiveTreemapOptions() {\n    var rows = this.cryptoTreemapRowsForChart();\n    var data: any[] = [];\n    for (var i = 0; i < rows.length; i++) {\n      var change = parseFloat(rows[i].changePercent.toFixed(2));\n      data.push({\n        name: rows[i].symbol,\n        value: rows[i].marketCap,\n        colorValue: change,\n        custom: {\n          name: rows[i].name,\n          symbol: rows[i].symbol,\n          change: change,\n          price: rows[i].price,\n          marketCap: rows[i].marketCap\n        }\n      });\n    }\n    return {\n      chart: {\n        type: 'treemap',\n        className: 'crypto-treemap-chart',\n        height: 620,\n        backgroundColor: '#ffffff',\n        plotBackgroundColor: '#ffffff',\n        spacing: [12, 0, 8, 0],\n        events: {\n          load: function () {\n            var chart: any = this;\n            var hideTooltip = function () {\n              if (chart.tooltip && chart.tooltip.hide) {\n                chart.tooltip.hide(0);\n              }\n            };\n            var hideWhenOutside = function (event: any) {\n              var target = event && event.target ? event.target : null;\n              if (chart.container && target && chart.container.contains && chart.container.contains(target)) {\n                return;\n              }\n              hideTooltip();\n            };\n\n            if (chart.container && chart.container.addEventListener) {\n              chart.container.addEventListener('mouseleave', hideTooltip);\n              chart.container.addEventListener('blur', hideTooltip, true);\n            }\n\n            if (document && document.addEventListener) {\n              document.addEventListener('mousedown', hideWhenOutside, true);\n              document.addEventListener('touchstart', hideWhenOutside, true);\n              document.addEventListener('scroll', hideTooltip, true);\n            }\n\n            if (window && window.addEventListener) {\n              window.addEventListener('blur', hideTooltip);\n            }\n          }\n        }\n      },\n      title: {\n        text: 'Top 50 coins by market cap',\n        style: { color: '#111827', fontSize: '22px', fontWeight: '700' }\n      },\n      subtitle: {\n        text: this.cryptoTreemapStatus + ' | colored by 24h change',\n        style: { color: '#475569', fontSize: '14px' }\n      },\n      colorAxis: {\n        min: -10,\n        max: 10,\n        stops: [[0, '#f33b36'], [0.45, '#fb7b72'], [0.5, '#e5e7eb'], [0.55, '#82e77c'], [1, '#29b916']]\n      },\n      tooltip: {\n        backgroundColor: '#ffffff',\n        borderColor: '#cbd5e1',\n        hideDelay: 0,\n        shadow: true,\n        zIndex: 100000,\n        style: { color: '#111827' },\n        headerFormat: '',\n        pointFormat: '<b>{point.custom.name} ({point.custom.symbol})</b><br/>Market cap: ${point.custom.marketCap:,.0f}<br/>Price: ${point.custom.price}<br/>24h change: {point.custom.change:.2f}%'\n      },\n      plotOptions: {\n        treemap: {\n          animation: false,\n          borderColor: '#ffffff',\n          borderWidth: 2,\n          stickyTracking: false,\n          point: {\n            events: {\n              mouseOver: function () {\n                var point: any = this;\n                var chart = point.series && point.series.chart ? point.series.chart : null;\n                if (chart && chart.tooltip && chart.tooltip.label && chart.tooltip.label.toFront) {\n                  setTimeout(function () {\n                    chart.tooltip.label.toFront();\n                  }, 0);\n                }\n              },\n              mouseOut: function () {\n                var point: any = this;\n                if (point.series && point.series.chart && point.series.chart.tooltip) {\n                  point.series.chart.tooltip.hide(0);\n                }\n              }\n            }\n          },\n          dataLabels: {\n            enabled: true,\n            crop: true,\n            overflow: 'none',\n            align: 'center',\n            verticalAlign: 'middle',\n            style: {\n              color: '#030712',\n              fontSize: '13px',\n              fontWeight: '700',\n              textOutline: 'none'\n            },\n            formatter: function () {\n              var point = (<any>this).point || {};\n              var custom = point.custom || {};\n              var shape = point.shapeArgs || {};\n              var width = shape.width || 0;\n              var height = shape.height || 0;\n              var change = custom.change || 0;\n              var sign = change > 0 ? '+' : '';\n\n              if (width < 42 || height < 28) {\n                return point.name;\n              }\n\n              if (width > 220 && height > 150) {\n                return custom.name + ' (' + point.name + ')<br/>$' + custom.price + '<br/>' + sign + change.toFixed(2) + '%';\n              }\n\n              if (width > 110 && height > 72) {\n                return point.name + '<br/>$' + custom.price + '<br/>' + sign + change.toFixed(2) + '%';\n              }\n\n              return point.name + '<br/>' + sign + change.toFixed(1) + '%';\n            }\n          }\n        }\n      },\n      series: [{\n        type: 'treemap',\n        layoutAlgorithm: 'squarified',\n        alternateStartingDirection: true,\n        turboThreshold: 0,\n        data: data\n      }]\n    };\n  }\n\n  private createLiveFunnelOptions() {\n    var rows = this.marketRows().slice(0);\n    rows.sort(function (a: any, b: any) {\n      return b.quoteVolume - a.quoteVolume;\n    });\n    var data: any[] = [];\n    for (var i = 0; i < rows.length; i++) {\n      data.push([rows[i].symbol.replace('USDT', ''), parseFloat((rows[i].quoteVolume / 1000000).toFixed(2))]);\n    }\n    return {\n      chart: { type: 'funnel', height: 320 },\n      title: { text: 'Live liquidity funnel' },\n      series: [{ name: 'Quote volume', data: data }]\n    };\n  }\n\n  private createLive3dColumnOptions() {\n    var rows = this.marketRows();\n    return {\n      chart: { type: 'column', height: 320, options3d: { enabled: true, alpha: 12, beta: 12, depth: 45 } },\n      title: { text: 'Live 3D volume columns' },\n      xAxis: { categories: this.marketLabels(rows) },\n      yAxis: { title: { text: 'Quote volume, millions' } },\n      series: [{ name: 'Quote volume', data: this.marketValues(rows, 'quoteVolume', 1000000) }]\n    };\n  }\n\n  onDynamicChartCreate(example: ChartExample, chart: any) {\n    if (!example || !example.key) {\n      return;\n    }\n\n    this.dynamicCharts[example.key] = chart;\n    this.updateDynamicChart(example.key);\n  }\n\n  private updateAllDynamicCharts() {\n    for (var i = 0; i < this.dynamicExamples.length; i++) {\n      var example = this.dynamicExamples[i];\n      if (example && example.key) {\n        this.updateDynamicChart(example.key);\n      }\n    }\n  }\n\n  private updateDynamicChart(key: string) {\n    var chart = this.dynamicCharts[key];\n    var options = this.createDynamicOptionsByKey(key);\n\n    if (!chart || !chart.series || !options) {\n      return;\n    }\n\n    if (chart.setTitle) {\n      chart.setTitle(options.title || null, options.subtitle || null, false);\n    }\n\n    this.syncDynamicCategories(chart, options);\n    this.syncDynamicSeries(chart, options.series || []);\n\n    if (chart.redraw) {\n      chart.redraw();\n    }\n  }\n\n  private syncDynamicCategories(chart: any, options: any) {\n    var xAxisOptions = options.xAxis;\n    var yAxisOptions = options.yAxis;\n\n    if (xAxisOptions && xAxisOptions.categories && chart.xAxis && chart.xAxis[0] && chart.xAxis[0].setCategories) {\n      chart.xAxis[0].setCategories(xAxisOptions.categories, false);\n    }\n\n    if (yAxisOptions && yAxisOptions.categories && chart.yAxis && chart.yAxis[0] && chart.yAxis[0].setCategories) {\n      chart.yAxis[0].setCategories(yAxisOptions.categories, false);\n    }\n  }\n\n  private syncDynamicSeries(chart: any, seriesOptions: any[]) {\n    var i: number;\n\n    for (i = chart.series.length - 1; i >= seriesOptions.length; i--) {\n      chart.series[i].remove(false);\n    }\n\n    for (i = 0; i < seriesOptions.length; i++) {\n      var nextSeries = seriesOptions[i] || {};\n      var currentSeries = chart.series[i];\n\n      if (!currentSeries) {\n        chart.addSeries(nextSeries, false, false);\n        continue;\n      }\n\n      if (nextSeries.name && currentSeries.name !== nextSeries.name && currentSeries.update) {\n        currentSeries.update({ name: nextSeries.name }, false);\n      }\n\n      if (currentSeries.setData) {\n        currentSeries.setData(nextSeries.data || [], false, false);\n      }\n    }\n  }\n\n  private createDynamicOptionsByKey(key: string) {\n    switch (key) {\n      case 'liveLineOptions':\n        return this.createLiveLineOptions();\n      case 'liveSplineOptions':\n        return this.createLiveSplineOptions();\n      case 'liveAreaOptions':\n        return this.createLiveAreaOptions();\n      case 'liveAreasplineOptions':\n        return this.createLiveAreasplineOptions();\n      case 'liveColumnOptions':\n        return this.createLiveColumnOptions();\n      case 'liveBarOptions':\n        return this.createLiveBarOptions();\n      case 'liveStackedOptions':\n        return this.createLiveStackedOptions();\n      case 'livePieOptions':\n        return this.createLivePieOptions();\n      case 'liveDonutOptions':\n        return this.createLiveDonutOptions();\n      case 'liveScatterOptions':\n        return this.createLiveScatterOptions();\n      case 'liveBubbleOptions':\n        return this.createLiveBubbleOptions();\n      case 'liveComboOptions':\n        return this.createLiveComboOptions();\n      case 'livePolarOptions':\n        return this.createLivePolarOptions();\n      case 'liveGaugeOptions':\n        return this.createLiveGaugeOptions();\n      case 'liveSolidGaugeOptions':\n        return this.createLiveSolidGaugeOptions();\n      case 'liveHeatmapOptions':\n        return this.createLiveHeatmapOptions();\n      case 'liveTreemapOptions':\n        return this.createLiveTreemapOptions();\n      case 'liveFunnelOptions':\n        return this.createLiveFunnelOptions();\n      case 'live3dColumnOptions':\n        return this.createLive3dColumnOptions();\n      default:\n        return null;\n    }\n  }\n\n  onCreate(name: string, chart: any) {\n    this.record(name + ' created with ' + chart.series.length + ' series');\n  }\n\n  record(message: string) {\n    this.events.unshift(new Date().toLocaleTimeString() + ' - ' + message);\n    this.events = this.events.slice(0, 8);\n  }\n\n  randomizeDynamicChart() {\n    this.dynamicData = this.dynamicData.map(function () {\n      return Math.round(20 + Math.random() * 90);\n    });\n    this.dynamicOptions = this.createDynamicOptions();\n  }\n\n  private makeBasic(title: string, description: string, type: string): ChartExample {\n    return {\n      title: title,\n      description: description,\n      options: {\n        chart: { type: type, height: 320 },\n        title: { text: title },\n        subtitle: { text: '@stackline/angular-highcharts Angular 2 live test' },\n        xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'] },\n        yAxis: { title: { text: 'Requests' } },\n        series: [\n          { name: 'API', data: [29, 42, 55, 61, 73, 88] },\n          { name: 'Dashboard', data: [18, 31, 37, 46, 58, 63] }\n        ]\n      },\n      html: '<chart [options]=\"' + type + 'Options\"></chart>'\n    };\n  }\n\n  private createBinanceOptions() {\n    var theme = this.getBinanceChartTheme();\n\n    return {\n      chart: {\n        height: 560,\n        backgroundColor: theme.background,\n        plotBackgroundColor: theme.plotBackground,\n        spacing: [16, 20, 18, 12],\n        style: {\n          fontFamily: 'Arial, Helvetica, sans-serif'\n        }\n      },\n      credits: { enabled: false },\n      rangeSelector: { enabled: false },\n      navigator: {\n        enabled: false\n      },\n      scrollbar: {\n        enabled: false\n      },\n      title: {\n        text: this.binanceSymbol + ' live candles',\n        align: 'left',\n        style: { color: theme.title, fontSize: '16px', fontWeight: '600' }\n      },\n      subtitle: {\n        text: 'REST history + Binance WebSocket updates (' + this.binanceInterval + ')',\n        align: 'left',\n        style: { color: theme.subtitle }\n      },\n      legend: {\n        enabled: true,\n        align: 'left',\n        verticalAlign: 'top',\n        itemStyle: { color: theme.legend },\n        itemHoverStyle: { color: theme.legendHover }\n      },\n      xAxis: {\n        lineColor: theme.axisLine,\n        tickColor: theme.axisLine,\n        gridLineColor: theme.grid,\n        labels: { style: { color: theme.axisText } },\n        crosshair: {\n          color: theme.crosshair,\n          dashStyle: 'Dash'\n        }\n      },\n      yAxis: [{\n        height: '68%',\n        lineColor: theme.axisLine,\n        gridLineColor: theme.grid,\n        opposite: true,\n        title: { text: null },\n        labels: { style: { color: theme.axisText } }\n      }, {\n        top: '73%',\n        height: '22%',\n        offset: 0,\n        lineColor: theme.axisLine,\n        gridLineColor: theme.grid,\n        opposite: true,\n        title: { text: 'Volume', style: { color: theme.axisText } },\n        labels: { style: { color: theme.axisText } }\n      }],\n      tooltip: {\n        shared: true,\n        backgroundColor: theme.tooltipBackground,\n        borderColor: theme.tooltipBorder,\n        style: { color: theme.tooltipText },\n        valueDecimals: 4\n      },\n      plotOptions: {\n        candlestick: {\n          color: '#f6465d',\n          upColor: '#02c076',\n          lineColor: '#f6465d',\n          upLineColor: '#02c076'\n        },\n        column: {\n          borderWidth: 0,\n          groupPadding: 0.08,\n          pointPadding: 0.02\n        },\n        series: {\n          animation: false,\n          turboThreshold: 0\n        }\n      },\n      series: [{\n        type: 'candlestick',\n        name: 'Price',\n        data: [],\n        tooltip: { valueDecimals: 4 }\n      }, {\n        type: 'line',\n        name: 'MA(7)',\n        data: [],\n        color: '#f5d300',\n        lineWidth: 1,\n        marker: { enabled: false }\n      }, {\n        type: 'line',\n        name: 'MA(25)',\n        data: [],\n        color: '#ff4ec9',\n        lineWidth: 1,\n        marker: { enabled: false }\n      }, {\n        type: 'line',\n        name: 'MA(99)',\n        data: [],\n        color: '#8e44ad',\n        lineWidth: 1,\n        marker: { enabled: false }\n      }, {\n        type: 'column',\n        name: 'Volume',\n        data: [],\n        yAxis: 1\n      }]\n    };\n  }\n\n  private getBinanceChartTheme() {\n    if (this.binanceTheme === 'light') {\n      return {\n        background: '#ffffff',\n        plotBackground: '#ffffff',\n        title: '#101828',\n        subtitle: '#667085',\n        legend: '#475467',\n        legendHover: '#101828',\n        axisText: '#667085',\n        axisLine: '#d0d5dd',\n        grid: '#edf2f7',\n        crosshair: '#98a2b3',\n        tooltipBackground: 'rgba(255, 255, 255, .96)',\n        tooltipBorder: '#d0d5dd',\n        tooltipText: '#101828'\n      };\n    }\n\n    return {\n      background: '#050505',\n      plotBackground: '#050505',\n      title: '#f5f5f5',\n      subtitle: '#8a8f98',\n      legend: '#b7bcc7',\n      legendHover: '#ffffff',\n      axisText: '#aeb4bd',\n      axisLine: '#333842',\n      grid: '#1d2026',\n      crosshair: '#565b66',\n      tooltipBackground: 'rgba(12, 15, 20, .94)',\n      tooltipBorder: '#313640',\n      tooltipText: '#f5f5f5'\n    };\n  }\n\n  private makeStackedColumn(): ChartExample {\n    return {\n      title: 'Stacked column',\n      description: 'Column stacking with normal Highcharts options.',\n      options: {\n        chart: { type: 'column', height: 320 },\n        title: { text: 'Stacked column' },\n        xAxis: { categories: ['Ops', 'Sales', 'Support', 'Finance'] },\n        yAxis: { min: 0, title: { text: 'Total work' }, stackLabels: { enabled: true } },\n        plotOptions: { column: { stacking: 'normal' } },\n        series: [\n          { name: 'Planned', data: [5, 3, 4, 7] },\n          { name: 'Active', data: [2, 2, 3, 2] },\n          { name: 'Closed', data: [3, 4, 4, 2] }\n        ]\n      },\n      html: '<chart [options]=\"stackedColumnOptions\"></chart>'\n    };\n  }\n\n  private makePie(): ChartExample {\n    return {\n      title: 'Pie chart',\n      description: 'Classic proportional distribution.',\n      options: {\n        chart: { type: 'pie', height: 320 },\n        title: { text: 'Traffic sources' },\n        series: [{ name: 'Share', data: [['Direct', 42], ['Search', 33], ['Referral', 15], ['Campaign', 10]] }]\n      },\n      html: '<chart [options]=\"pieOptions\"></chart>'\n    };\n  }\n\n  private makeDonut(): ChartExample {\n    return {\n      title: 'Donut chart',\n      description: 'Pie chart with innerSize.',\n      options: {\n        chart: { type: 'pie', height: 320 },\n        title: { text: 'Device mix' },\n        plotOptions: { pie: { innerSize: '55%' } },\n        series: [{ name: 'Devices', data: [['Desktop', 48], ['Mobile', 44], ['Tablet', 8]] }]\n      },\n      html: '<chart [options]=\"donutOptions\"></chart>'\n    };\n  }\n\n  private makeScatter(): ChartExample {\n    return {\n      title: 'Scatter chart',\n      description: 'XY tuple data.',\n      options: {\n        chart: { type: 'scatter', zoomType: 'xy', height: 320 },\n        title: { text: 'Quality vs speed' },\n        xAxis: { title: { text: 'Speed' } },\n        yAxis: { title: { text: 'Quality' } },\n        series: [{ name: 'Builds', data: [[12, 80], [18, 78], [24, 86], [32, 84], [40, 91], [46, 88]] }]\n      },\n      html: '<chart [options]=\"scatterOptions\"></chart>'\n    };\n  }\n\n  private makeBubble(): ChartExample {\n    return {\n      title: 'Bubble chart',\n      description: 'Uses highcharts-more module.',\n      options: {\n        chart: { type: 'bubble', plotBorderWidth: 1, zoomType: 'xy', height: 320 },\n        title: { text: 'Impact matrix' },\n        xAxis: { title: { text: 'Effort' } },\n        yAxis: { title: { text: 'Value' } },\n        series: [{ name: 'Initiatives', data: [[9, 81, 63], [98, 5, 89], [51, 50, 73], [41, 22, 14], [58, 24, 20]] }]\n      },\n      html: '<chart [options]=\"bubbleOptions\"></chart>'\n    };\n  }\n\n  private makeCombination(): ChartExample {\n    return {\n      title: 'Combination chart',\n      description: 'Column, spline and pie in one options object.',\n      options: {\n        title: { text: 'Mixed metrics' },\n        chart: { height: 320 },\n        xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'] },\n        labels: { items: [{ html: 'Total', style: { left: '50px', top: '18px', color: '#333' } }] },\n        series: [\n          { type: 'column', name: 'Revenue', data: [3, 2, 1, 3, 4] },\n          { type: 'spline', name: 'Trend', data: [2.4, 2.7, 3.1, 3.8, 4.3] },\n          {\n            type: 'pie',\n            name: 'Share',\n            data: [{ name: 'A', y: 13 }, { name: 'B', y: 23 }, { name: 'C', y: 19 }],\n            center: [80, 55],\n            size: 90,\n            showInLegend: false,\n            dataLabels: { enabled: false }\n          }\n        ]\n      },\n      html: '<chart [options]=\"combinationOptions\"></chart>'\n    };\n  }\n\n  private makePolar(): ChartExample {\n    return {\n      title: 'Polar/radar chart',\n      description: 'Uses highcharts-more with polar chart options.',\n      options: {\n        chart: { polar: true, type: 'line', height: 320 },\n        title: { text: 'Team coverage' },\n        pane: { size: '80%' },\n        xAxis: { categories: ['UX', 'API', 'Ops', 'QA', 'Docs'], tickmarkPlacement: 'on', lineWidth: 0 },\n        yAxis: { gridLineInterpolation: 'polygon', lineWidth: 0, min: 0 },\n        series: [{ name: 'Score', data: [5, 4, 3, 5, 4], pointPlacement: 'on' }]\n      },\n      html: '<chart [options]=\"polarOptions\"></chart>'\n    };\n  }\n\n  private makeGauge(): ChartExample {\n    return {\n      title: 'Gauge chart',\n      description: 'Gauge series from highcharts-more.',\n      options: {\n        chart: { type: 'gauge', height: 320 },\n        title: { text: 'Availability' },\n        pane: { startAngle: -150, endAngle: 150 },\n        yAxis: { min: 0, max: 100, title: { text: 'Uptime' } },\n        series: [{ name: 'Uptime', data: [92] }]\n      },\n      html: '<chart [options]=\"gaugeOptions\"></chart>'\n    };\n  }\n\n  private makeSolidGauge(): ChartExample {\n    return {\n      title: 'Solid gauge',\n      description: 'Uses highcharts-more and solid-gauge modules.',\n      options: {\n        chart: { type: 'solidgauge', height: 320 },\n        title: { text: 'Completion' },\n        pane: {\n          center: ['50%', '60%'],\n          size: '90%',\n          startAngle: -90,\n          endAngle: 90,\n          background: { backgroundColor: '#eef3f8', innerRadius: '60%', outerRadius: '100%', shape: 'arc' }\n        },\n        yAxis: {\n          min: 0,\n          max: 100,\n          stops: [[0.3, '#d9534f'], [0.7, '#f0ad4e'], [0.9, '#2f8f68']],\n          lineWidth: 0,\n          tickWidth: 0,\n          minorTickInterval: null,\n          tickAmount: 2,\n          title: { text: null }\n        },\n        series: [{ name: 'Done', data: [76] }]\n      },\n      html: '<chart [options]=\"solidGaugeOptions\"></chart>'\n    };\n  }\n\n  private makeHeatmap(): ChartExample {\n    return {\n      title: 'Heatmap',\n      description: 'Uses the heatmap module.',\n      options: {\n        chart: { type: 'heatmap', height: 320 },\n        title: { text: 'Weekly activity' },\n        xAxis: { categories: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] },\n        yAxis: { categories: ['AM', 'PM'], title: null },\n        colorAxis: { min: 0, minColor: '#ffffff', maxColor: '#1f78b4' },\n        series: [{\n          name: 'Activity',\n          borderWidth: 1,\n          data: [[0, 0, 4], [1, 0, 7], [2, 0, 9], [3, 0, 5], [4, 0, 6], [0, 1, 6], [1, 1, 3], [2, 1, 8], [3, 1, 4], [4, 1, 10]],\n          dataLabels: { enabled: true, color: '#333' }\n        }]\n      },\n      html: '<chart [options]=\"heatmapOptions\"></chart>'\n    };\n  }\n\n  private makeTreemap(): ChartExample {\n    return {\n      title: 'Treemap',\n      description: 'Uses the treemap module.',\n      options: {\n        chart: { type: 'treemap', height: 320 },\n        title: { text: 'Cost centers' },\n        series: [{\n          type: 'treemap',\n          layoutAlgorithm: 'squarified',\n          data: [\n            { name: 'Engineering', value: 6, color: '#2f7ed8' },\n            { name: 'Support', value: 4, color: '#0d9488' },\n            { name: 'Sales', value: 5, color: '#f59e0b' },\n            { name: 'Ops', value: 3, color: '#64748b' }\n          ]\n        }]\n      },\n      html: '<chart [options]=\"treemapOptions\"></chart>'\n    };\n  }\n\n  private makeFunnel(): ChartExample {\n    return {\n      title: 'Funnel chart',\n      description: 'Uses the funnel module.',\n      options: {\n        chart: { type: 'funnel', height: 320 },\n        title: { text: 'Pipeline' },\n        series: [{ name: 'Leads', data: [['New', 156], ['Qualified', 92], ['Proposal', 48], ['Closed', 21]] }]\n      },\n      html: '<chart [options]=\"funnelOptions\"></chart>'\n    };\n  }\n\n  private make3dColumn(): ChartExample {\n    return {\n      title: '3D column',\n      description: 'Uses the highcharts-3d module.',\n      options: {\n        chart: { type: 'column', height: 320, options3d: { enabled: true, alpha: 12, beta: 12, depth: 45 } },\n        title: { text: '3D volume' },\n        xAxis: { categories: ['A', 'B', 'C', 'D'] },\n        yAxis: { title: { text: 'Volume' } },\n        series: [{ name: 'Volume', data: [7, 5, 9, 6] }]\n      },\n      html: '<chart [options]=\"column3dOptions\"></chart>'\n    };\n  }\n\n  private makeStockChart(): ChartExample {\n    return {\n      title: 'StockChart constructor',\n      description: 'Uses [type]=\"StockChart\" after loading the stock module.',\n      constructorType: 'StockChart',\n      options: {\n        chart: { height: 320 },\n        title: { text: 'Stock-style timeline' },\n        rangeSelector: { selected: 1 },\n        series: [{\n          name: 'Price',\n          data: [\n            [Date.UTC(2026, 0, 1), 12],\n            [Date.UTC(2026, 1, 1), 15],\n            [Date.UTC(2026, 2, 1), 14],\n            [Date.UTC(2026, 3, 1), 18],\n            [Date.UTC(2026, 4, 1), 21],\n            [Date.UTC(2026, 5, 1), 20]\n          ]\n        }]\n      },\n      html: '<chart [type]=\"StockChart\" [options]=\"stockOptions\"></chart>'\n    };\n  }\n\n  private makeMapLikeChart(): ChartExample {\n    return {\n      title: 'Map module',\n      description: 'Uses the map module with simple inline mapData.',\n      options: {\n        chart: { type: 'map', height: 320 },\n        title: { text: 'Simple territory map' },\n        colorAxis: { min: 0 },\n        series: [{\n          type: 'map',\n          name: 'Score',\n          mapData: [\n            { path: 'M 0 0 L 120 0 L 120 80 L 0 80 Z', name: 'North', value: 10 },\n            { path: 'M 130 0 L 250 0 L 250 80 L 130 80 Z', name: 'South', value: 7 },\n            { path: 'M 65 90 L 185 90 L 185 170 L 65 170 Z', name: 'Central', value: 13 }\n          ],\n          dataLabels: { enabled: true, format: '{point.name}' }\n        }]\n      },\n      html: '<chart [options]=\"mapOptions\"></chart>'\n    };\n  }\n\n  private makeNoDataChart(): ChartExample {\n    return {\n      title: 'No data state',\n      description: 'Uses no-data-to-display module.',\n      options: {\n        chart: { type: 'line', height: 320 },\n        title: { text: 'Empty state' },\n        lang: { noData: 'No chart data yet' },\n        noData: { style: { fontWeight: '600', fontSize: '15px', color: '#50677d' } },\n        series: []\n      },\n      html: '<chart [options]=\"noDataOptions\"></chart>'\n    };\n  }\n\n  private createDynamicOptions() {\n    return {\n      chart: { type: 'line', height: 340 },\n      title: { text: 'Dynamic update' },\n      subtitle: { text: 'Changing the options object re-initializes the wrapper' },\n      xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'] },\n      yAxis: { title: { text: 'Requests' } },\n      series: [{ name: 'Updated data', data: this.dynamicData }]\n    };\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.component.ts","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HttpModule } from '@angular/http';\nimport { ChartModule, HighchartsStatic } from '@stackline/angular-highcharts';\nimport * as Highcharts from 'highcharts';\nimport * as HighchartsMore from 'highcharts/highcharts-more';\nimport * as Highcharts3d from 'highcharts/highcharts-3d';\nimport * as Heatmap from 'highcharts/modules/heatmap';\nimport * as Treemap from 'highcharts/modules/treemap';\nimport * as Funnel from 'highcharts/modules/funnel';\nimport * as SolidGauge from 'highcharts/modules/solid-gauge';\nimport * as Stock from 'highcharts/modules/stock';\nimport * as MapModule from 'highcharts/modules/map';\nimport * as Drilldown from 'highcharts/modules/drilldown';\nimport * as NoData from 'highcharts/modules/no-data-to-display';\n\nimport { AppComponent } from './app.component';\n\nexport function highchartsFactory() {\n  HighchartsMore(Highcharts);\n  Highcharts3d(Highcharts);\n  Heatmap(Highcharts);\n  Treemap(Highcharts);\n  Funnel(Highcharts);\n  SolidGauge(Highcharts);\n  Stock(Highcharts);\n  MapModule(Highcharts);\n  Drilldown(Highcharts);\n  NoData(Highcharts);\n  return Highcharts;\n}\n\n@NgModule({\n  declarations: [\n    AppComponent\n  ],\n  imports: [\n    BrowserModule,\n    FormsModule,\n    HttpModule,\n    ChartModule\n  ],\n  providers: [\n    { provide: HighchartsStatic, useFactory: highchartsFactory }\n  ],\n  bootstrap: [AppComponent]\n})\nexport class AppModule { }\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.module.ts","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `angular-cli.json`.\n\nexport const environment = {\n  production: false\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/environments/environment.ts","module.exports = \":host {\\n  display: block;\\n}\\n\\nmain {\\n  width: calc(100% - 32px);\\n  max-width: 1360px;\\n  margin: 0 auto;\\n  padding: 32px 0 48px;\\n}\\n\\nheader,\\n.panel,\\n.chart-card {\\n  background: #fff;\\n  border: 1px solid #d9e5ee;\\n  border-radius: 8px;\\n  box-shadow: 0 10px 28px rgba(23, 52, 77, .08);\\n}\\n\\nheader {\\n  display: -ms-flexbox;\\n  display: flex;\\n  -ms-flex-align: center;\\n      align-items: center;\\n  -ms-flex-pack: justify;\\n      justify-content: space-between;\\n  gap: 20px;\\n  padding: 24px;\\n  margin-bottom: 18px;\\n}\\n\\n.header-copy {\\n  min-width: 0;\\n}\\n\\n.route-tabs {\\n  display: -ms-flexbox;\\n  display: flex;\\n  -ms-flex-wrap: wrap;\\n      flex-wrap: wrap;\\n  gap: 8px;\\n  -ms-flex-pack: end;\\n      justify-content: flex-end;\\n  -ms-flex: 0 0 auto;\\n      flex: 0 0 auto;\\n}\\n\\n.route-tabs a {\\n  display: -ms-inline-flexbox;\\n  display: inline-flex;\\n  -ms-flex-align: center;\\n      align-items: center;\\n  min-height: 36px;\\n  padding: 0 14px;\\n  border: 1px solid #d0dbe6;\\n  border-radius: 6px;\\n  color: #254966;\\n  font-size: 13px;\\n  font-weight: 700;\\n  text-decoration: none;\\n}\\n\\n.route-tabs a.active {\\n  border-color: #146c94;\\n  background: #146c94;\\n  color: #fff;\\n}\\n\\nheader span {\\n  display: block;\\n  margin-bottom: 8px;\\n  color: #466179;\\n  font-size: 12px;\\n  font-weight: 700;\\n  letter-spacing: .05em;\\n  text-transform: uppercase;\\n}\\n\\nh1,\\nh2,\\nh3,\\np {\\n  margin-top: 0;\\n}\\n\\nh1 {\\n  margin-bottom: 8px;\\n  font-size: 30px;\\n  line-height: 1.2;\\n}\\n\\np {\\n  color: #50677d;\\n}\\n\\nheader p {\\n  margin-bottom: 0;\\n}\\n\\n.panel {\\n  padding: 24px;\\n  margin-bottom: 18px;\\n}\\n\\n.intro-panel {\\n  display: -ms-flexbox;\\n  display: flex;\\n  -ms-flex-align: center;\\n      align-items: center;\\n  -ms-flex-pack: justify;\\n      justify-content: space-between;\\n  gap: 16px;\\n}\\n\\n.status-pill {\\n  -ms-flex: 0 0 auto;\\n      flex: 0 0 auto;\\n  padding: 8px 12px;\\n  border-radius: 999px;\\n  background: #e7f2ff;\\n  color: #205b8f;\\n  font-size: 13px;\\n  font-weight: 700;\\n}\\n\\n.capability-grid,\\n.examples-grid,\\n.event-grid {\\n  display: -ms-grid;\\n  display: grid;\\n  gap: 16px;\\n}\\n\\n.capability-grid {\\n  -ms-grid-columns: (minmax(220px, 1fr))[auto-fit];\\n      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\\n}\\n\\n.capability-grid div {\\n  padding: 14px;\\n  border: 1px solid #dbe6ef;\\n  border-radius: 6px;\\n  background: #f8fbfd;\\n}\\n\\n.capability-grid strong,\\n.capability-grid span {\\n  display: block;\\n}\\n\\n.capability-grid span {\\n  margin-top: 6px;\\n  color: #536b80;\\n  font-size: 13px;\\n  line-height: 1.45;\\n}\\n\\n.examples-grid {\\n  -ms-grid-columns: 1fr;\\n      grid-template-columns: 1fr;\\n  -ms-flex-align: start;\\n      align-items: start;\\n}\\n\\n.chart-card {\\n  width: 100%;\\n  box-sizing: border-box;\\n  padding: 18px;\\n}\\n\\n.chart-head {\\n  display: -ms-flexbox;\\n  display: flex;\\n  -ms-flex-align: start;\\n      align-items: flex-start;\\n  -ms-flex-pack: justify;\\n      justify-content: space-between;\\n  gap: 12px;\\n  margin-bottom: 14px;\\n}\\n\\n.chart-head h2,\\n.chart-head h3 {\\n  margin-bottom: 6px;\\n}\\n\\n.chart-head h3 {\\n  font-size: 18px;\\n}\\n\\n.chart-head span {\\n  -ms-flex: 0 0 auto;\\n      flex: 0 0 auto;\\n  padding: 6px 9px;\\n  border-radius: 999px;\\n  background: #eef3f8;\\n  color: #41576b;\\n  font-size: 12px;\\n  font-weight: 700;\\n}\\n\\n.feature-panel {\\n  margin-top: 18px;\\n}\\n\\n.market-source-panel {\\n  margin-bottom: 18px;\\n}\\n\\n.live-market-card {\\n  margin-bottom: 18px;\\n  padding: 18px;\\n  background: #0b0d10;\\n  border-color: #242933;\\n  color: #f5f7fb;\\n}\\n\\n.live-market-card.market-light {\\n  background: #fff;\\n  border-color: #d9e5ee;\\n  color: #101828;\\n}\\n\\n.live-market-card p {\\n  color: #a7afbc;\\n}\\n\\n.live-market-card.market-light p {\\n  color: #667085;\\n}\\n\\n.live-market-card .chart-head span {\\n  background: #1d2430;\\n  color: #dfe6ef;\\n}\\n\\n.live-market-card.market-light .chart-head span {\\n  background: #eef4ff;\\n  color: #344054;\\n}\\n\\n.market-head h2 {\\n  margin-bottom: 6px;\\n}\\n\\n.market-toolbar {\\n  display: -ms-flexbox;\\n  display: flex;\\n  -ms-flex-wrap: wrap;\\n      flex-wrap: wrap;\\n  -ms-flex-align: center;\\n      align-items: center;\\n  gap: 12px 18px;\\n  margin-bottom: 12px;\\n  padding: 12px;\\n  border: 1px solid #232a35;\\n  border-radius: 6px;\\n  background: #11161d;\\n}\\n\\n@media (max-width: 760px) {\\n  header {\\n    -ms-flex-align: start;\\n        align-items: flex-start;\\n    -ms-flex-direction: column;\\n        flex-direction: column;\\n  }\\n\\n  .route-tabs {\\n    -ms-flex-pack: start;\\n        justify-content: flex-start;\\n    width: 100%;\\n  }\\n}\\n\\n.market-light .market-toolbar {\\n  border-color: #d0d5dd;\\n  background: #f8fafc;\\n}\\n\\n.market-toolbar div {\\n  display: -ms-inline-flexbox;\\n  display: inline-flex;\\n  -ms-flex-wrap: wrap;\\n      flex-wrap: wrap;\\n  -ms-flex-align: center;\\n      align-items: center;\\n  gap: 8px;\\n}\\n\\n.market-toolbar strong {\\n  color: #c3cad6;\\n  font-size: 12px;\\n  text-transform: uppercase;\\n}\\n\\n.market-light .market-toolbar strong {\\n  color: #475467;\\n}\\n\\n.market-toolbar button {\\n  min-height: 32px;\\n  padding: 0 11px;\\n  border: 1px solid #343b48;\\n  background: #171d26;\\n  color: #dfe6ef;\\n}\\n\\n.market-light .market-toolbar button {\\n  border-color: #d0d5dd;\\n  background: #fff;\\n  color: #344054;\\n}\\n\\n.market-toolbar button.active {\\n  border-color: #f0b90b;\\n  background: #f0b90b;\\n  color: #111;\\n}\\n\\n.market-light .market-toolbar button.active {\\n  border-color: #146c94;\\n  background: #146c94;\\n  color: #fff;\\n}\\n\\n.market-toolbar .reload-button {\\n  margin-left: auto;\\n  background: #146c94;\\n  border-color: #146c94;\\n  color: #fff;\\n}\\n\\n.market-ticker,\\n.market-status {\\n  display: -ms-flexbox;\\n  display: flex;\\n  -ms-flex-wrap: wrap;\\n      flex-wrap: wrap;\\n  -ms-flex-align: center;\\n      align-items: center;\\n  gap: 10px 18px;\\n  margin-bottom: 10px;\\n  color: #9ca5b1;\\n  font-size: 13px;\\n}\\n\\n.market-light .market-ticker,\\n.market-light .market-status {\\n  color: #667085;\\n}\\n\\n.market-ticker strong {\\n  margin-left: 4px;\\n  color: #f5f7fb;\\n}\\n\\n.market-light .market-ticker strong {\\n  color: #101828;\\n}\\n\\n.market-ticker .positive strong,\\n.market-ticker .positive {\\n  color: #02c076;\\n}\\n\\n.market-ticker .negative strong,\\n.market-ticker .negative {\\n  color: #f6465d;\\n}\\n\\n.market-status {\\n  color: #c6ccd5;\\n}\\n\\n.market-frame {\\n  min-height: 560px;\\n  border: 1px solid #242933;\\n  border-radius: 6px;\\n  overflow: hidden;\\n  background: #050505;\\n}\\n\\n.market-light .market-frame {\\n  border-color: #d0d5dd;\\n  background: #fff;\\n}\\n\\n.market-frame chart {\\n  min-height: 560px;\\n}\\n\\n.endpoint-grid {\\n  display: -ms-grid;\\n  display: grid;\\n  -ms-grid-columns: (minmax(260px, 1fr))[auto-fit];\\n      grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\\n  gap: 12px;\\n  margin-top: 12px;\\n  margin-bottom: 14px;\\n}\\n\\n.endpoint-grid div {\\n  padding: 12px;\\n  border: 1px solid #232a35;\\n  border-radius: 6px;\\n  background: #11161d;\\n}\\n\\n.market-light .endpoint-grid div {\\n  border-color: #d0d5dd;\\n  background: #f8fafc;\\n}\\n\\n.endpoint-grid strong,\\n.endpoint-grid code {\\n  display: block;\\n}\\n\\n.endpoint-grid strong {\\n  margin-bottom: 8px;\\n  color: #c3cad6;\\n}\\n\\n.market-light .endpoint-grid strong {\\n  color: #475467;\\n}\\n\\n.endpoint-grid code {\\n  overflow-wrap: anywhere;\\n  color: #8bd3ff;\\n  font-size: 12px;\\n  line-height: 1.5;\\n}\\n\\n.market-light .endpoint-grid code {\\n  color: #0b5cad;\\n}\\n\\n.chart-frame {\\n  width: 100%;\\n  min-height: 340px;\\n}\\n\\n.chart-frame.large {\\n  min-height: 380px;\\n}\\n\\n.chart-frame chart {\\n  display: block;\\n  width: 100%;\\n  min-height: 320px;\\n}\\n\\n.tutorial-collapse {\\n  margin-top: 14px;\\n  border: 1px solid #d9e5ee;\\n  border-radius: 8px;\\n  background: #f8fbfd;\\n  overflow: hidden;\\n}\\n\\n.live-market-card .tutorial-collapse {\\n  border-color: #242933;\\n  background: #11161d;\\n}\\n\\n.live-market-card.market-light .tutorial-collapse {\\n  border-color: #d9e5ee;\\n  background: #f8fbfd;\\n}\\n\\n.tutorial-collapse summary {\\n  display: -ms-flexbox;\\n  display: flex;\\n  -ms-flex-align: center;\\n      align-items: center;\\n  -ms-flex-pack: justify;\\n      justify-content: space-between;\\n  gap: 12px;\\n  min-height: 44px;\\n  padding: 0 14px;\\n  cursor: pointer;\\n  color: #1e3145;\\n  font-weight: 700;\\n}\\n\\n.live-market-card .tutorial-collapse summary {\\n  color: #f5f7fb;\\n}\\n\\n.live-market-card.market-light .tutorial-collapse summary {\\n  color: #1e3145;\\n}\\n\\n.tutorial-collapse summary::-webkit-details-marker {\\n  display: none;\\n}\\n\\n.tutorial-collapse summary:before {\\n  content: '+';\\n  display: -ms-inline-flexbox;\\n  display: inline-flex;\\n  -ms-flex-align: center;\\n      align-items: center;\\n  -ms-flex-pack: center;\\n      justify-content: center;\\n  width: 22px;\\n  height: 22px;\\n  margin-right: 8px;\\n  border-radius: 50%;\\n  background: #e7f2ff;\\n  color: #205b8f;\\n  font-weight: 800;\\n}\\n\\n.tutorial-collapse[open] summary:before {\\n  content: '-';\\n}\\n\\n.tutorial-collapse summary span {\\n  display: -ms-inline-flexbox;\\n  display: inline-flex;\\n  -ms-flex-align: center;\\n      align-items: center;\\n  margin-right: auto;\\n}\\n\\n.tutorial-collapse summary small {\\n  color: #667085;\\n  font-size: 12px;\\n  font-weight: 700;\\n  text-transform: uppercase;\\n}\\n\\n.live-market-card .tutorial-collapse summary small {\\n  color: #a7afbc;\\n}\\n\\n.live-market-card.market-light .tutorial-collapse summary small {\\n  color: #667085;\\n}\\n\\n.code-layer-grid {\\n  display: -ms-grid;\\n  display: grid;\\n  -ms-grid-columns: (minmax(0, 1fr))[3];\\n      grid-template-columns: repeat(3, minmax(0, 1fr));\\n  gap: 12px;\\n  padding: 14px;\\n  border-top: 1px solid #d9e5ee;\\n}\\n\\n.live-market-card .code-layer-grid {\\n  border-top-color: #242933;\\n}\\n\\n.live-market-card.market-light .code-layer-grid {\\n  border-top-color: #d9e5ee;\\n}\\n\\n.code-layer-grid h4 {\\n  margin: 0 0 8px;\\n  color: #344054;\\n  font-size: 12px;\\n  text-transform: uppercase;\\n}\\n\\n.live-market-card .code-layer-grid h4 {\\n  color: #dfe6ef;\\n}\\n\\n.live-market-card.market-light .code-layer-grid h4 {\\n  color: #344054;\\n}\\n\\n.code-layer-grid pre {\\n  max-height: 420px;\\n  margin: 0;\\n}\\n\\npre {\\n  overflow: auto;\\n  padding: 16px;\\n  border-radius: 6px;\\n  background: #112236;\\n  color: #f3f8ff;\\n  font-size: 12px;\\n  line-height: 1.5;\\n}\\n\\nbutton {\\n  -ms-flex: 0 0 auto;\\n      flex: 0 0 auto;\\n  min-height: 38px;\\n  padding: 0 16px;\\n  border: 0;\\n  border-radius: 6px;\\n  background: #146c94;\\n  color: #fff;\\n  font-weight: 700;\\n  cursor: pointer;\\n}\\n\\n.event-grid {\\n  -ms-grid-columns: minmax(0, 1.2fr) minmax(260px, .8fr);\\n      grid-template-columns: minmax(0, 1.2fr) minmax(260px, .8fr);\\n}\\n\\n.event-log {\\n  padding: 16px;\\n  border: 1px solid #d9e5ee;\\n  border-radius: 6px;\\n  background: #f8fbfd;\\n}\\n\\n.event-log ul {\\n  margin: 12px 0 0;\\n  padding-left: 18px;\\n}\\n\\n.event-log li {\\n  margin-bottom: 6px;\\n  color: #40586d;\\n}\\n\\n@media (max-width: 760px) {\\n  .intro-panel,\\n  .chart-head {\\n    display: block;\\n  }\\n\\n  .status-pill,\\n  .chart-head span,\\n  button {\\n    display: -ms-inline-flexbox;\\n    display: inline-flex;\\n    -ms-flex-align: center;\\n        align-items: center;\\n    margin-top: 12px;\\n  }\\n\\n  .examples-grid,\\n  .event-grid,\\n  .endpoint-grid,\\n  .code-layer-grid {\\n    -ms-grid-columns: 1fr;\\n        grid-template-columns: 1fr;\\n  }\\n\\n  .market-toolbar .reload-button {\\n    margin-left: 0;\\n  }\\n}\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/app.component.css\n// module id = 641\n// module chunks = 1","module.exports = \"<main>\\n  <header>\\n    <div class=\\\"header-copy\\\">\\n      <span>Angular CLI 1.0.0-beta.28.3 / Angular 2.4.10 runtime</span>\\n      <h1>@stackline/angular-highcharts 2.0.0</h1>\\n      <p>Project generated with the Angular 2 CLI blueprint and running the published Angular 2 package line.</p>\\n    </div>\\n    <nav class=\\\"route-tabs\\\">\\n      <a href=\\\"./\\\" [class.active]=\\\"viewMode === 'dynamic'\\\">Live dynamic examples</a>\\n      <a href=\\\"static\\\" [class.active]=\\\"viewMode === 'static'\\\">Static examples</a>\\n    </nav>\\n  </header>\\n\\n  <div *ngIf=\\\"viewMode === 'dynamic'\\\">\\n    <section\\n      class=\\\"chart-card live-market-card\\\"\\n      [class.market-light]=\\\"binanceTheme === 'light'\\\"\\n      [class.market-dark]=\\\"binanceTheme === 'dark'\\\"\\n    >\\n      <div class=\\\"chart-head market-head\\\">\\n        <div>\\n          <h2>Live crypto candles</h2>\\n          <p>REST candle history from Binance through the Mask API with realtime WebSocket candle updates.</p>\\n        </div>\\n        <span>StockChart</span>\\n      </div>\\n\\n      <div class=\\\"market-toolbar\\\">\\n        <div>\\n          <strong>Theme</strong>\\n          <button type=\\\"button\\\" [class.active]=\\\"binanceTheme === 'dark'\\\" (click)=\\\"selectBinanceTheme('dark')\\\">Dark</button>\\n          <button type=\\\"button\\\" [class.active]=\\\"binanceTheme === 'light'\\\" (click)=\\\"selectBinanceTheme('light')\\\">Light</button>\\n        </div>\\n        <div>\\n          <strong>Symbol</strong>\\n          <button type=\\\"button\\\" *ngFor=\\\"let symbol of binanceSymbols\\\" [class.active]=\\\"symbol === binanceSymbol\\\" (click)=\\\"selectBinanceSymbol(symbol)\\\">{{ symbol }}</button>\\n        </div>\\n        <div>\\n          <strong>Interval</strong>\\n          <button type=\\\"button\\\" *ngFor=\\\"let interval of binanceIntervals\\\" [class.active]=\\\"interval === binanceInterval\\\" (click)=\\\"selectBinanceInterval(interval)\\\">{{ interval }}</button>\\n        </div>\\n        <button type=\\\"button\\\" class=\\\"reload-button\\\" (click)=\\\"reloadBinanceChart()\\\">Reload</button>\\n      </div>\\n\\n      <div class=\\\"market-ticker\\\" *ngIf=\\\"binanceLastCandle\\\">\\n        <span>Open <strong>{{ formatPrice(binanceLastCandle.open) }}</strong></span>\\n        <span>High <strong>{{ formatPrice(binanceLastCandle.high) }}</strong></span>\\n        <span>Low <strong>{{ formatPrice(binanceLastCandle.low) }}</strong></span>\\n        <span>Close <strong>{{ formatPrice(binanceLastCandle.close) }}</strong></span>\\n        <span [class.positive]=\\\"binanceLastCandle.changePercent >= 0\\\" [class.negative]=\\\"binanceLastCandle.changePercent < 0\\\">Change <strong>{{ formatPercent(binanceLastCandle.changePercent) }}</strong></span>\\n      </div>\\n\\n      <div class=\\\"market-status\\\">\\n        <span>{{ binanceStatus }}</span>\\n        <span>{{ binanceSocketStatus }}</span>\\n        <span>{{ binanceCandleCount }} candles</span>\\n      </div>\\n\\n      <div class=\\\"chart-frame market-frame\\\">\\n        <chart [type]=\\\"'StockChart'\\\" [options]=\\\"binanceOptions\\\" (create)=\\\"onBinanceChartCreate($event)\\\"></chart>\\n      </div>\\n\\n      <div class=\\\"endpoint-grid\\\">\\n        <div>\\n          <strong>REST history</strong>\\n          <code>{{ binanceRestUrl || 'Waiting for REST endpoint...' }}</code>\\n        </div>\\n        <div>\\n          <strong>Realtime WebSocket</strong>\\n          <code>{{ binanceWsUrl || 'Waiting for WebSocket endpoint...' }}</code>\\n        </div>\\n      </div>\\n\\n      <details class=\\\"tutorial-collapse\\\">\\n        <summary>\\n          <span>Open tutorial</span>\\n          <small>HTML / TS / SCSS</small>\\n        </summary>\\n        <div class=\\\"code-layer-grid\\\">\\n          <div>\\n            <h4>HTML</h4>\\n            <pre>{{ binanceTutorialHtml }}</pre>\\n          </div>\\n          <div>\\n            <h4>TS</h4>\\n            <pre>{{ binanceTutorialTs }}</pre>\\n          </div>\\n          <div>\\n            <h4>SCSS</h4>\\n            <pre>{{ binanceTutorialScss }}</pre>\\n          </div>\\n        </div>\\n      </details>\\n    </section>\\n\\n    <section class=\\\"examples-grid\\\">\\n      <article class=\\\"chart-card\\\" *ngFor=\\\"let example of dynamicExamples\\\">\\n        <div class=\\\"chart-head\\\">\\n          <div>\\n            <h3>{{ example.title }}</h3>\\n            <p>{{ example.description }}</p>\\n          </div>\\n          <span>Live</span>\\n        </div>\\n\\n        <div class=\\\"chart-frame\\\">\\n          <chart [options]=\\\"example.options\\\" (create)=\\\"onDynamicChartCreate(example, $event)\\\"></chart>\\n        </div>\\n\\n        <details class=\\\"tutorial-collapse\\\">\\n          <summary>\\n            <span>Open tutorial</span>\\n            <small>HTML / TS / SCSS</small>\\n          </summary>\\n          <div class=\\\"code-layer-grid\\\">\\n            <div>\\n              <h4>HTML</h4>\\n              <pre>{{ example.tutorialHtml }}</pre>\\n            </div>\\n            <div>\\n              <h4>TS</h4>\\n              <pre>{{ example.tutorialTs }}</pre>\\n            </div>\\n            <div>\\n              <h4>SCSS</h4>\\n              <pre>{{ example.tutorialScss }}</pre>\\n            </div>\\n          </div>\\n        </details>\\n      </article>\\n    </section>\\n  </div>\\n\\n  <div *ngIf=\\\"viewMode === 'static'\\\">\\n    <section class=\\\"panel intro-panel\\\">\\n      <div>\\n        <h2>Static examples</h2>\\n        <p>Original one-row examples with fixed local option objects.</p>\\n      </div>\\n      <div class=\\\"status-pill\\\">Secondary URL</div>\\n    </section>\\n\\n    <section class=\\\"examples-grid\\\">\\n      <article class=\\\"chart-card\\\" *ngFor=\\\"let example of examples\\\">\\n        <div class=\\\"chart-head\\\">\\n          <div>\\n            <h3>{{ example.title }}</h3>\\n            <p>{{ example.description }}</p>\\n          </div>\\n          <span>{{ example.constructorType || 'Chart' }}</span>\\n        </div>\\n\\n        <div class=\\\"chart-frame\\\">\\n          <chart [type]=\\\"example.constructorType || 'Chart'\\\" [options]=\\\"example.options\\\" (create)=\\\"onCreate(example.title, $event)\\\"></chart>\\n        </div>\\n\\n        <details class=\\\"tutorial-collapse\\\">\\n          <summary>\\n            <span>Open tutorial</span>\\n            <small>HTML / TS / SCSS</small>\\n          </summary>\\n          <div class=\\\"code-layer-grid\\\">\\n            <div>\\n              <h4>HTML</h4>\\n              <pre>{{ example.tutorialHtml }}</pre>\\n            </div>\\n            <div>\\n              <h4>TS</h4>\\n              <pre>{{ example.tutorialTs }}</pre>\\n            </div>\\n            <div>\\n              <h4>SCSS</h4>\\n              <pre>{{ example.tutorialScss }}</pre>\\n            </div>\\n          </div>\\n        </details>\\n      </article>\\n    </section>\\n\\n    <section class=\\\"panel feature-panel\\\">\\n      <div class=\\\"chart-head\\\">\\n        <div>\\n          <h2>Dynamic update</h2>\\n          <p>Replaces the options object to validate the Angular 2 input setter.</p>\\n        </div>\\n        <button type=\\\"button\\\" (click)=\\\"randomizeDynamicChart()\\\">Update data</button>\\n      </div>\\n\\n      <div class=\\\"chart-frame large\\\">\\n        <chart [options]=\\\"dynamicOptions\\\" (create)=\\\"onCreate('Dynamic update', $event)\\\"></chart>\\n      </div>\\n\\n      <details class=\\\"tutorial-collapse\\\">\\n        <summary>\\n          <span>Open tutorial</span>\\n          <small>HTML / TS / SCSS</small>\\n        </summary>\\n        <div class=\\\"code-layer-grid\\\">\\n          <div>\\n            <h4>HTML</h4>\\n            <pre>{{ dynamicTutorialHtml }}</pre>\\n          </div>\\n          <div>\\n            <h4>TS</h4>\\n            <pre>{{ dynamicTutorialTs }}</pre>\\n          </div>\\n          <div>\\n            <h4>SCSS</h4>\\n            <pre>{{ dynamicTutorialScss }}</pre>\\n          </div>\\n        </div>\\n      </details>\\n    </section>\\n\\n    <section class=\\\"panel feature-panel\\\">\\n      <div class=\\\"chart-head\\\">\\n        <div>\\n          <h2>Directive and event outputs</h2>\\n          <p>Projected wrapper directives wire chart, series, point and axis events.</p>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"chart-frame large\\\">\\n        <chart [options]=\\\"directiveOptions\\\" (create)=\\\"onCreate('Directive chart', $event)\\\" (load)=\\\"record('chart load')\\\" (redraw)=\\\"record('chart redraw')\\\">\\n          <series (click)=\\\"record('series click')\\\" (legendItemClick)=\\\"record('legend click')\\\">\\n            <point (click)=\\\"record('point click')\\\" (mouseOver)=\\\"record('point hover')\\\"></point>\\n          </series>\\n          <xAxis (setExtremes)=\\\"record('xAxis extremes')\\\"></xAxis>\\n          <yAxis (setExtremes)=\\\"record('yAxis extremes')\\\"></yAxis>\\n        </chart>\\n      </div>\\n\\n      <details class=\\\"tutorial-collapse\\\">\\n        <summary>\\n          <span>Open tutorial</span>\\n          <small>HTML / TS / SCSS</small>\\n        </summary>\\n        <div class=\\\"code-layer-grid\\\">\\n          <div>\\n            <h4>HTML</h4>\\n            <pre>{{ directiveTutorialHtml }}</pre>\\n          </div>\\n          <div>\\n            <h4>TS</h4>\\n            <pre>{{ directiveTutorialTs }}</pre>\\n          </div>\\n          <div>\\n            <h4>SCSS</h4>\\n            <pre>{{ directiveTutorialScss }}</pre>\\n          </div>\\n        </div>\\n      </details>\\n\\n      <div class=\\\"event-log\\\">\\n        <strong>Event log</strong>\\n        <p *ngIf=\\\"!events.length\\\">Interact with the chart to collect events.</p>\\n        <ul>\\n          <li *ngFor=\\\"let event of events\\\">{{ event }}</li>\\n        </ul>\\n      </div>\\n    </section>\\n  </div>\\n\\n  <footer class=\\\"panel capabilities-footer\\\">\\n    <h2>Wrapper capabilities</h2>\\n    <div class=\\\"capability-grid\\\">\\n      <div>\\n        <strong>Options API</strong>\\n        <span><code>&lt;chart [options]=\\\"options\\\"&gt;</code></span>\\n      </div>\\n      <div>\\n        <strong>Constructor switch</strong>\\n        <span><code>[type]=\\\"'StockChart'\\\"</code></span>\\n      </div>\\n      <div>\\n        <strong>Directive events</strong>\\n        <span><code>&lt;series&gt;</code>, <code>&lt;point&gt;</code>, <code>&lt;xAxis&gt;</code>, <code>&lt;yAxis&gt;</code></span>\\n      </div>\\n      <div>\\n        <strong>Highcharts modules</strong>\\n        <span>more, 3d, heatmap, treemap, funnel, solid-gauge, stock, map, drilldown</span>\\n      </div>\\n    </div>\\n  </footer>\\n</main>\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/app.component.html\n// module id = 642\n// module chunks = 1"],"sourceRoot":""}